From b32a3505acf9eb80ca8b5d48bcac4dfbf62d4210 Mon Sep 17 00:00:00 2001 From: laxmanhalaki Date: Thu, 12 Feb 2026 20:57:41 +0530 Subject: [PATCH] sanitized code removed url and mails --- .cursor/project_setup.md | 4 +- Business_Days_Calculation_Recommendations.md | 4 +- GENERATE_VAPID_KEYS.md | 12 +- QUICK_START.md | 4 +- README.md | 2 +- ...eld_API_Collection.postman_collection.json | 1075 +++++++++++++---- ...-BJO_6JLT.js => conclusionApi-DoX_H3Tk.js} | 4 +- ...T.js.map => conclusionApi-DoX_H3Tk.js.map} | 2 +- .../{index-7F7W4LDI.js => index-y_ojbF9T.js} | 22 +- ...-7F7W4LDI.js.map => index-y_ojbF9T.js.map} | 2 +- build/index.html | 2 +- docs/CLAIM_MANAGEMENT_APPROVER_MAPPING.md | 6 +- docs/DEALERS_CSV_IMPORT_GUIDE.md | 4 +- docs/DEALER_USER_ARCHITECTURE.md | 4 +- docs/DMS_WEBHOOK_API.md | 12 +- docs/FRESH_DATABASE_SETUP.md | 32 +- docs/GCP_PRODUCTION_SETUP.md | 6 +- docs/GCP_STORAGE_SETUP.md | 6 +- docs/OKTA_USERS_API_INTEGRATION.md | 6 +- docs/RBAC_IMPLEMENTATION.md | 14 +- docs/RBAC_QUICK_START.md | 8 +- docs/SSO_IMPLEMENTATION.md | 10 +- docs/STEP3_APPROVER_ANALYSIS.md | 2 +- docs/USERNAME_PASSWORD_AUTH.md | 2 +- env.example | 20 +- scripts/assign-admin-user.sql | 2 +- scripts/assign-user-roles.sql | 12 +- setup-env.sh | 4 +- src/app.ts | 12 +- src/config/email.ts | 8 +- src/config/sso.ts | 8 +- .../DEALER_CLAIM_EMAIL_TEMPLATES.md | 8 +- src/emailtemplates/IMPLEMENTATION_PLAN.md | 10 +- src/emailtemplates/README.md | 6 +- src/emailtemplates/TEMPLATE_MAPPING.md | 2 +- src/emailtemplates/USAGE.md | 24 +- src/emailtemplates/branding.config.ts | 10 +- src/emailtemplates/quick-preview.ts | 4 +- src/emailtemplates/test-email.ts | 18 +- src/emailtemplates/test-real-scenario.ts | 16 +- src/routes/index.ts | 4 +- src/scripts/auto-setup.ts | 2 +- src/scripts/seed-dealers-table.ts | 2 +- src/scripts/seed-dealers.ts | 10 +- src/services/approval.service.ts | 190 +-- src/services/dealerClaim.service.ts | 6 +- src/services/dealerClaimApproval.service.ts | 4 +- src/services/email.service.ts | 15 +- src/services/googleSecretManager.service.ts | 8 +- src/services/notification.service.ts | 21 +- src/services/pdf.service.ts | 4 +- src/services/pwcIntegration.service.ts | 5 +- src/services/sapIntegration.service.ts | 17 +- src/utils/logger.ts | 1 - 54 files changed, 1149 insertions(+), 549 deletions(-) rename build/assets/{conclusionApi-BJO_6JLT.js => conclusionApi-DoX_H3Tk.js} (84%) rename build/assets/{conclusionApi-BJO_6JLT.js.map => conclusionApi-DoX_H3Tk.js.map} (95%) rename build/assets/{index-7F7W4LDI.js => index-y_ojbF9T.js} (69%) rename build/assets/{index-7F7W4LDI.js.map => index-y_ojbF9T.js.map} (99%) diff --git a/.cursor/project_setup.md b/.cursor/project_setup.md index c1d0023..f341021 100644 --- a/.cursor/project_setup.md +++ b/.cursor/project_setup.md @@ -1326,9 +1326,9 @@ GCP_KEY_FILE=./config/gcp-key.json SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_SECURE=false -SMTP_USER=notifications@royalenfield.com +SMTP_USER=notifications@{{API_DOMAIN}} SMTP_PASSWORD=your_smtp_password -EMAIL_FROM=RE Workflow System +EMAIL_FROM=RE Workflow System # AI Service (for conclusion generation) AI_API_KEY=your_ai_api_key diff --git a/Business_Days_Calculation_Recommendations.md b/Business_Days_Calculation_Recommendations.md index ecc7501..6184fe4 100644 --- a/Business_Days_Calculation_Recommendations.md +++ b/Business_Days_Calculation_Recommendations.md @@ -155,13 +155,13 @@ export async function calculateBusinessDays( 2. ✅ Imported `calculateElapsedWorkingHours`, `addWorkingHours`, `addWorkingHoursExpress` from `@utils/tatTimeUtils` 3. ✅ Replaced lines 64-65 with proper working hours calculation (now lines 66-77) 4. ✅ Gets priority from workflow -5. ⏳ **TODO:** Test TAT breach alerts +5. Done: Test TAT breach alerts ### Step 2: Add Business Days Function ✅ **DONE** 1. ✅ Opened `Re_Backend/src/utils/tatTimeUtils.ts` 2. ✅ Added `calculateBusinessDays()` function (lines 697-758) 3. ✅ Exported the function -4. ⏳ **TODO:** Test with various date ranges +4. Done: Test with various date ranges ### Step 3: Update Workflow Aging Report ✅ **DONE** 1. ✅ Built report endpoint using `calculateBusinessDays()` diff --git a/GENERATE_VAPID_KEYS.md b/GENERATE_VAPID_KEYS.md index 53afb85..a90ab81 100644 --- a/GENERATE_VAPID_KEYS.md +++ b/GENERATE_VAPID_KEYS.md @@ -19,10 +19,10 @@ This command will output something like: ``` ======================================= Public Key: -BEl62iUYgUivxIkvpY5kXK3t3b9i5X8YzA1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4Y5Z6 +{{VAPID_PUBLIC_KEY}} Private Key: -aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890AbCdEfGhIjKlMnOpQrStUvWxYz +{{VAPID_PRIVATE_KEY}} ======================================= ``` @@ -59,9 +59,9 @@ Add the generated keys to your backend `.env` file: ```env # Notification Service Worker credentials (Web Push / VAPID) -VAPID_PUBLIC_KEY=BEl62iUYgUivxIkvpY5kXK3t3b9i5X8YzA1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4Y5Z6 -VAPID_PRIVATE_KEY=aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890AbCdEfGhIjKlMnOpQrStUvWxYz -VAPID_CONTACT=mailto:admin@royalenfield.com +VAPID_PUBLIC_KEY={{VAPID_PUBLIC_KEY}} +VAPID_PRIVATE_KEY={{VAPID_PRIVATE_KEY}} +VAPID_CONTACT=mailto:{{ADMIN_EMAIL}} ``` **Important Notes:** @@ -75,7 +75,7 @@ Add the **SAME** `VAPID_PUBLIC_KEY` to your frontend `.env` file: ```env # Push Notifications (Web Push / VAPID) -VITE_PUBLIC_VAPID_KEY=BEl62iUYgUivxIkvpY5kXK3t3b9i5X8YzA1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4Y5Z6 +VITE_PUBLIC_VAPID_KEY={{VAPID_PUBLIC_KEY}} ``` **Important:** diff --git a/QUICK_START.md b/QUICK_START.md index d472e57..eeaa5dc 100644 --- a/QUICK_START.md +++ b/QUICK_START.md @@ -98,7 +98,7 @@ npm run dev 1. Server will start automatically 2. Log in via SSO 3. Run this SQL to make yourself admin: - UPDATE users SET role = 'ADMIN' WHERE email = 'your-email@royalenfield.com'; + UPDATE users SET role = 'ADMIN' WHERE email = 'your-email@{{API_DOMAIN}}'; [Config Seed] ✅ Default configurations seeded successfully (30 settings) info: ✅ Server started successfully on port 5000 @@ -112,7 +112,7 @@ psql -d royal_enfield_workflow UPDATE users SET role = 'ADMIN' -WHERE email = 'your-email@royalenfield.com'; +WHERE email = 'your-email@{{API_DOMAIN}}'; \q ``` diff --git a/README.md b/README.md index 413e191..e930f0c 100644 --- a/README.md +++ b/README.md @@ -471,7 +471,7 @@ The backend supports web push notifications via VAPID (Voluntary Application Ser ``` VAPID_PUBLIC_KEY= VAPID_PRIVATE_KEY= - VAPID_CONTACT=mailto:admin@royalenfield.com + VAPID_CONTACT=mailto:admin@{{API_DOMAIN}} ``` 3. **Add to Frontend `.env`:** diff --git a/Royal_Enfield_API_Collection.postman_collection.json b/Royal_Enfield_API_Collection.postman_collection.json index 897627b..ff155d2 100644 --- a/Royal_Enfield_API_Collection.postman_collection.json +++ b/Royal_Enfield_API_Collection.postman_collection.json @@ -39,8 +39,12 @@ "header": [], "url": { "raw": "{{baseUrl}}/health", - "host": ["{{baseUrl}}"], - "path": ["health"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "health" + ] }, "description": "Check if the API service is running and healthy" } @@ -62,12 +66,17 @@ ], "body": { "mode": "raw", - "raw": "{\n // Okta username (email)\n \"username\": \"user@royalenfield.com\",\n \n // Okta password\n \"password\": \"YourOktaPassword123\"\n}" + "raw": "{\n // Okta username (email)\n \"username\": \"user@{{API_DOMAIN}}\",\n \n // Okta password\n \"password\": \"YourOktaPassword123\"\n}" }, "url": { "raw": "{{baseUrl}}/auth/login", - "host": ["{{baseUrl}}"], - "path": ["auth", "login"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "auth", + "login" + ] }, "description": "Authenticate with username (Okta email) and password.\n\nFlow:\n1. Validates credentials against Okta\n2. If user exists in Okta but not in our DB: creates user automatically\n3. Returns JWT access token and refresh token\n\nPerfect for:\n- Postman testing\n- Mobile apps\n- API clients\n- Development/testing\n\nResponse includes:\n- User profile (created if didn't exist)\n- Access token (24hr validity)\n- Refresh token (7 days validity)" }, @@ -107,8 +116,13 @@ }, "url": { "raw": "{{baseUrl}}/auth/token-exchange", - "host": ["{{baseUrl}}"], - "path": ["auth", "token-exchange"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "auth", + "token-exchange" + ] }, "description": "Development endpoint to exchange user credentials for JWT token (localhost only)" } @@ -129,8 +143,13 @@ }, "url": { "raw": "{{baseUrl}}/auth/sso-callback", - "host": ["{{baseUrl}}"], - "path": ["auth", "sso-callback"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "auth", + "sso-callback" + ] }, "description": "Handle SSO callback from Okta and exchange authorization code for tokens" } @@ -151,8 +170,13 @@ }, "url": { "raw": "{{baseUrl}}/auth/refresh", - "host": ["{{baseUrl}}"], - "path": ["auth", "refresh"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "auth", + "refresh" + ] }, "description": "Get a new access token using refresh token" } @@ -164,8 +188,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/auth/me", - "host": ["{{baseUrl}}"], - "path": ["auth", "me"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "auth", + "me" + ] }, "description": "Get current authenticated user details" } @@ -177,8 +206,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/auth/validate", - "host": ["{{baseUrl}}"], - "path": ["auth", "validate"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "auth", + "validate" + ] }, "description": "Validate current access token" } @@ -190,8 +224,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/auth/logout", - "host": ["{{baseUrl}}"], - "path": ["auth", "logout"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "auth", + "logout" + ] }, "description": "Logout current user and clear tokens" } @@ -208,8 +247,12 @@ "header": [], "url": { "raw": "{{baseUrl}}/config", - "host": ["{{baseUrl}}"], - "path": ["config"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "config" + ] }, "description": "Get public system configuration (no auth required)" } @@ -226,8 +269,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/users/search?q=john", - "host": ["{{baseUrl}}"], - "path": ["users", "search"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "users", + "search" + ], "query": [ { "key": "q", @@ -255,8 +303,13 @@ }, "url": { "raw": "{{baseUrl}}/users/ensure", - "host": ["{{baseUrl}}"], - "path": ["users", "ensure"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "users", + "ensure" + ] }, "description": "Ensure user exists in database - creates if not exists" } @@ -268,8 +321,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/users/configurations", - "host": ["{{baseUrl}}"], - "path": ["users", "configurations"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "users", + "configurations" + ] }, "description": "Get public configurations (document policy, workflow sharing, TAT settings)" } @@ -286,8 +344,12 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows", - "host": ["{{baseUrl}}"], - "path": ["workflows"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows" + ] }, "description": "Get list of all workflows accessible to current user" } @@ -299,8 +361,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/my", - "host": ["{{baseUrl}}"], - "path": ["workflows", "my"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "my" + ] }, "description": "DEPRECATED - Use /participant-requests instead. Get workflows where user is participant" } @@ -312,8 +379,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/participant-requests?page=1&limit=10", - "host": ["{{baseUrl}}"], - "path": ["workflows", "participant-requests"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "participant-requests" + ], "query": [ { "key": "page", @@ -349,8 +421,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/my-initiated?page=1&limit=10", - "host": ["{{baseUrl}}"], - "path": ["workflows", "my-initiated"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "my-initiated" + ], "query": [ { "key": "page", @@ -380,8 +457,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/open-for-me", - "host": ["{{baseUrl}}"], - "path": ["workflows", "open-for-me"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "open-for-me" + ] }, "description": "Get workflows that are open and require action from current user" } @@ -393,8 +475,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/closed-by-me", - "host": ["{{baseUrl}}"], - "path": ["workflows", "closed-by-me"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "closed-by-me" + ] }, "description": "Get workflows closed by current user" } @@ -411,12 +498,16 @@ ], "body": { "mode": "raw", - "raw": "{\n \"templateType\": \"CUSTOM\",\n \"title\": \"Purchase Order Approval for Office Equipment\",\n \"description\": \"Approval needed for purchasing new office equipment including laptops, monitors, and office furniture. Total budget: $50,000\",\n \"priority\": \"STANDARD\",\n \"approvalLevels\": [\n {\n \"email\": \"manager@royalenfield.com\",\n \"tatHours\": 24\n },\n {\n \"email\": \"director@royalenfield.com\",\n \"tatHours\": 48\n },\n {\n \"email\": \"cfo@royalenfield.com\",\n \"tatHours\": 72\n }\n ],\n \"spectators\": [\n {\n \"email\": \"hr@royalenfield.com\"\n },\n {\n \"email\": \"finance@royalenfield.com\"\n }\n ]\n}" + "raw": "{\n \"templateType\": \"CUSTOM\",\n \"title\": \"Purchase Order Approval for Office Equipment\",\n \"description\": \"Approval needed for purchasing new office equipment including laptops, monitors, and office furniture. Total budget: $50,000\",\n \"priority\": \"STANDARD\",\n \"approvalLevels\": [\n {\n \"email\": \"manager@{{API_DOMAIN}}\",\n \"tatHours\": 24\n },\n {\n \"email\": \"director@{{API_DOMAIN}}\",\n \"tatHours\": 48\n },\n {\n \"email\": \"cfo@{{API_DOMAIN}}\",\n \"tatHours\": 72\n }\n ],\n \"spectators\": [\n {\n \"email\": \"hr@{{API_DOMAIN}}\"\n },\n {\n \"email\": \"finance@{{API_DOMAIN}}\"\n }\n ]\n}" }, "url": { "raw": "{{baseUrl}}/workflows", - "host": ["{{baseUrl}}"], - "path": ["workflows"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows" + ] }, "description": "Create new workflow request with JSON payload. Backend automatically:\n- Finds/creates users from Okta/AD\n- Generates level names from designation/department\n- Auto-detects final approver (last level)\n- Sets proper permissions\n\nOnly email and tatHours required per approver!" } @@ -431,7 +522,7 @@ "formdata": [ { "key": "payload", - "value": "{\"templateType\":\"CUSTOM\",\"title\":\"Purchase Order Approval with Documents\",\"description\":\"Approval needed for office equipment purchase with supporting documents\",\"priority\":\"STANDARD\",\"approvalLevels\":[{\"email\":\"manager@royalenfield.com\",\"tatHours\":24},{\"email\":\"director@royalenfield.com\",\"tatHours\":48}],\"spectators\":[{\"email\":\"hr@royalenfield.com\"}]}", + "value": "{\"templateType\":\"CUSTOM\",\"title\":\"Purchase Order Approval with Documents\",\"description\":\"Approval needed for office equipment purchase with supporting documents\",\"priority\":\"STANDARD\",\"approvalLevels\":[{\"email\":\"manager@{{API_DOMAIN}}\",\"tatHours\":24},{\"email\":\"director@{{API_DOMAIN}}\",\"tatHours\":48}],\"spectators\":[{\"email\":\"hr@{{API_DOMAIN}}\"}]}", "type": "text", "description": "JSON payload with simplified format (email + tatHours only)" }, @@ -451,8 +542,13 @@ }, "url": { "raw": "{{baseUrl}}/workflows/multipart", - "host": ["{{baseUrl}}"], - "path": ["workflows", "multipart"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "multipart" + ] }, "description": "Create workflow with file uploads. Backend automatically:\n- Finds/creates users from Okta/AD\n- Generates level names\n- Auto-detects final approver\n- Uploads and attaches documents\n\nOnly email and tatHours required per approver!" } @@ -464,8 +560,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id" + ], "variable": [ { "key": "id", @@ -484,8 +585,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id/details", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "details"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "details" + ], "variable": [ { "key": "id", @@ -513,8 +620,13 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id" + ], "variable": [ { "key": "id", @@ -552,8 +664,14 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/multipart", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "multipart"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "multipart" + ], "variable": [ { "key": "id", @@ -571,8 +689,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id/submit", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "submit"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "submit" + ], "variable": [ { "key": "id", @@ -595,12 +719,19 @@ ], "body": { "mode": "raw", - "raw": "{\n \"email\": \"newapprover@royalenfield.com\",\n \"tatHours\": 24,\n \"level\": 2\n}" + "raw": "{\n \"email\": \"newapprover@{{API_DOMAIN}}\",\n \"tatHours\": 24,\n \"level\": 2\n}" }, "url": { "raw": "{{baseUrl}}/workflows/:id/approvers/at-level", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "approvers", "at-level"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "approvers", + "at-level" + ], "variable": [ { "key": "id", @@ -624,12 +755,19 @@ ], "body": { "mode": "raw", - "raw": "{\n \"email\": \"spectator@royalenfield.com\"\n}" + "raw": "{\n \"email\": \"spectator@{{API_DOMAIN}}\"\n}" }, "url": { "raw": "{{baseUrl}}/workflows/:id/participants/spectator", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "participants", "spectator"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "participants", + "spectator" + ], "variable": [ { "key": "id", @@ -648,8 +786,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id/activity", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "activity"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "activity" + ], "variable": [ { "key": "id", @@ -676,8 +820,14 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/pause", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "pause"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "pause" + ], "variable": [ { "key": "id", @@ -704,8 +854,14 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/resume", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "resume"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "resume" + ], "variable": [ { "key": "id", @@ -732,8 +888,15 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/pause/retrigger", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "pause", "retrigger"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "pause", + "retrigger" + ], "variable": [ { "key": "id", @@ -751,8 +914,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id/pause", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "pause"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "pause" + ], "variable": [ { "key": "id", @@ -775,8 +944,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id/approvals", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "approvals"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "approvals" + ], "variable": [ { "key": "id", @@ -794,8 +969,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id/approvals/current", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "approvals", "current"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "approvals", + "current" + ], "variable": [ { "key": "id", @@ -822,8 +1004,16 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/approvals/:levelId/approve", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "approvals", ":levelId", "approve"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "approvals", + ":levelId", + "approve" + ], "variable": [ { "key": "id", @@ -854,8 +1044,16 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/approvals/:levelId/reject", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "approvals", ":levelId", "reject"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "approvals", + ":levelId", + "reject" + ], "variable": [ { "key": "id", @@ -886,8 +1084,16 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/approvals/:levelId/skip", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "approvals", ":levelId", "skip"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "approvals", + ":levelId", + "skip" + ], "variable": [ { "key": "id", @@ -923,8 +1129,15 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/participants/approver", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "participants", "approver"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "participants", + "approver" + ], "variable": [ { "key": "id", @@ -951,8 +1164,15 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/participants/spectator", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "participants", "spectator"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "participants", + "spectator" + ], "variable": [ { "key": "id", @@ -979,8 +1199,15 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/approvers/at-level", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "approvers", "at-level"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "approvers", + "at-level" + ], "variable": [ { "key": "id", @@ -1026,8 +1253,12 @@ }, "url": { "raw": "{{baseUrl}}/documents", - "host": ["{{baseUrl}}"], - "path": ["documents"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "documents" + ] }, "description": "Upload a document/file" } @@ -1039,8 +1270,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/documents/:documentId/preview", - "host": ["{{baseUrl}}"], - "path": ["workflows", "documents", ":documentId", "preview"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "documents", + ":documentId", + "preview" + ], "variable": [ { "key": "documentId", @@ -1058,8 +1296,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/documents/:documentId/download", - "host": ["{{baseUrl}}"], - "path": ["workflows", "documents", ":documentId", "download"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "documents", + ":documentId", + "download" + ], "variable": [ { "key": "documentId", @@ -1082,8 +1327,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/:id/work-notes", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "work-notes"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "work-notes" + ], "variable": [ { "key": "id", @@ -1118,8 +1369,14 @@ }, "url": { "raw": "{{baseUrl}}/workflows/:id/work-notes", - "host": ["{{baseUrl}}"], - "path": ["workflows", ":id", "work-notes"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + ":id", + "work-notes" + ], "variable": [ { "key": "id", @@ -1137,8 +1394,16 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/work-notes/attachments/:attachmentId/preview", - "host": ["{{baseUrl}}"], - "path": ["workflows", "work-notes", "attachments", ":attachmentId", "preview"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "work-notes", + "attachments", + ":attachmentId", + "preview" + ], "variable": [ { "key": "attachmentId", @@ -1156,8 +1421,16 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/work-notes/attachments/:attachmentId/download", - "host": ["{{baseUrl}}"], - "path": ["workflows", "work-notes", "attachments", ":attachmentId", "download"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "work-notes", + "attachments", + ":attachmentId", + "download" + ], "variable": [ { "key": "attachmentId", @@ -1180,8 +1453,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/conclusions/:requestId/generate", - "host": ["{{baseUrl}}"], - "path": ["conclusions", ":requestId", "generate"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "conclusions", + ":requestId", + "generate" + ], "variable": [ { "key": "requestId", @@ -1208,8 +1487,13 @@ }, "url": { "raw": "{{baseUrl}}/conclusions/:requestId", - "host": ["{{baseUrl}}"], - "path": ["conclusions", ":requestId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "conclusions", + ":requestId" + ], "variable": [ { "key": "requestId", @@ -1227,8 +1511,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/conclusions/:requestId/finalize", - "host": ["{{baseUrl}}"], - "path": ["conclusions", ":requestId", "finalize"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "conclusions", + ":requestId", + "finalize" + ], "variable": [ { "key": "requestId", @@ -1246,8 +1536,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/conclusions/:requestId", - "host": ["{{baseUrl}}"], - "path": ["conclusions", ":requestId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "conclusions", + ":requestId" + ], "variable": [ { "key": "requestId", @@ -1270,8 +1565,12 @@ "header": [], "url": { "raw": "{{baseUrl}}/notifications?page=1&limit=20&unreadOnly=false", - "host": ["{{baseUrl}}"], - "path": ["notifications"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "notifications" + ], "query": [ { "key": "page", @@ -1300,8 +1599,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/notifications/unread-count", - "host": ["{{baseUrl}}"], - "path": ["notifications", "unread-count"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "notifications", + "unread-count" + ] }, "description": "Get count of unread notifications" } @@ -1313,8 +1617,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/notifications/:notificationId/read", - "host": ["{{baseUrl}}"], - "path": ["notifications", ":notificationId", "read"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "notifications", + ":notificationId", + "read" + ], "variable": [ { "key": "notificationId", @@ -1332,8 +1642,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/notifications/mark-all-read", - "host": ["{{baseUrl}}"], - "path": ["notifications", "mark-all-read"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "notifications", + "mark-all-read" + ] }, "description": "Mark all user notifications as read" } @@ -1345,8 +1660,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/notifications/:notificationId", - "host": ["{{baseUrl}}"], - "path": ["notifications", ":notificationId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "notifications", + ":notificationId" + ], "variable": [ { "key": "notificationId", @@ -1373,8 +1693,14 @@ }, "url": { "raw": "{{baseUrl}}/workflows/notifications/subscribe", - "host": ["{{baseUrl}}"], - "path": ["workflows", "notifications", "subscribe"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "notifications", + "subscribe" + ] }, "description": "Subscribe to push notifications" } @@ -1386,8 +1712,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/workflows/notifications/test", - "host": ["{{baseUrl}}"], - "path": ["workflows", "notifications", "test"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "workflows", + "notifications", + "test" + ] }, "description": "Test push notification for current user" } @@ -1404,8 +1736,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/kpis", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "kpis"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "kpis" + ] }, "description": "Get KPI summary (all KPI cards)" } @@ -1417,8 +1754,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/requests", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "requests"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "requests" + ] }, "description": "Get detailed request statistics" } @@ -1430,8 +1773,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/tat-efficiency", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "tat-efficiency"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "tat-efficiency" + ] }, "description": "Get TAT (Turn Around Time) efficiency metrics" } @@ -1443,8 +1792,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/approver-load", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "approver-load"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "approver-load" + ] }, "description": "Get approver load/workload statistics" } @@ -1456,8 +1811,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/engagement", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "engagement"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "engagement" + ] }, "description": "Get engagement and quality metrics" } @@ -1469,8 +1830,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/ai-insights", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "ai-insights"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "ai-insights" + ] }, "description": "Get AI and closure insights" } @@ -1482,8 +1849,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/ai-remark-utilization", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "ai-remark-utilization"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "ai-remark-utilization" + ] }, "description": "Get AI remark utilization with monthly trends" } @@ -1495,8 +1868,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/approver-performance", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "approver-performance"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "approver-performance" + ] }, "description": "Get approver performance metrics" } @@ -1508,8 +1887,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/activity/recent", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "activity", "recent"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "activity", + "recent" + ] }, "description": "Get recent activity feed" } @@ -1521,8 +1906,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/requests/critical", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "requests", "critical"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "requests", + "critical" + ] }, "description": "Get high priority/critical requests" } @@ -1534,8 +1925,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/deadlines/upcoming", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "deadlines", "upcoming"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "deadlines", + "upcoming" + ] }, "description": "Get upcoming deadlines" } @@ -1547,8 +1944,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/by-department", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "by-department"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "by-department" + ] }, "description": "Get department-wise summary" } @@ -1560,8 +1963,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/stats/priority-distribution", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "stats", "priority-distribution"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "stats", + "priority-distribution" + ] }, "description": "Get priority distribution statistics" } @@ -1573,8 +1982,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/reports/lifecycle?dateRange=month", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "reports", "lifecycle"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "reports", + "lifecycle" + ], "query": [ { "key": "dateRange", @@ -1605,8 +2020,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/reports/activity-log?page=1&limit=50", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "reports", "activity-log"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "reports", + "activity-log" + ], "query": [ { "key": "page", @@ -1642,8 +2063,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/reports/workflow-aging", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "reports", "workflow-aging"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "reports", + "workflow-aging" + ] }, "description": "Get workflow aging report showing requests by age bucket" } @@ -1655,8 +2082,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/metadata/departments", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "metadata", "departments"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "metadata", + "departments" + ] }, "description": "Get list of all departments (for filtering)" } @@ -1668,8 +2101,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/dashboard/requests/by-approver?approverId=approver-uuid-here&page=1&limit=10", - "host": ["{{baseUrl}}"], - "path": ["dashboard", "requests", "by-approver"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "dashboard", + "requests", + "by-approver" + ], "query": [ { "key": "approverId", @@ -1709,8 +2148,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/tat/alerts/request/:requestId", - "host": ["{{baseUrl}}"], - "path": ["tat", "alerts", "request", ":requestId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "tat", + "alerts", + "request", + ":requestId" + ], "variable": [ { "key": "requestId", @@ -1728,8 +2174,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/tat/alerts/level/:levelId", - "host": ["{{baseUrl}}"], - "path": ["tat", "alerts", "level", ":levelId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "tat", + "alerts", + "level", + ":levelId" + ], "variable": [ { "key": "levelId", @@ -1747,8 +2200,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/tat/compliance/summary?startDate=2024-01-01&endDate=2024-12-31", - "host": ["{{baseUrl}}"], - "path": ["tat", "compliance", "summary"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "tat", + "compliance", + "summary" + ], "query": [ { "key": "startDate", @@ -1772,8 +2231,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/tat/breaches", - "host": ["{{baseUrl}}"], - "path": ["tat", "breaches"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "tat", + "breaches" + ] }, "description": "Get TAT breach report (all breached requests)" } @@ -1785,8 +2249,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/tat/performance/:approverId", - "host": ["{{baseUrl}}"], - "path": ["tat", "performance", ":approverId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "tat", + "performance", + ":approverId" + ], "variable": [ { "key": "approverId", @@ -1812,8 +2282,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/admin/holidays?year=2024", - "host": ["{{baseUrl}}"], - "path": ["admin", "holidays"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "holidays" + ], "query": [ { "key": "year", @@ -1832,8 +2307,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/admin/holidays/calendar/:year", - "host": ["{{baseUrl}}"], - "path": ["admin", "holidays", "calendar", ":year"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "holidays", + "calendar", + ":year" + ], "variable": [ { "key": "year", @@ -1860,8 +2342,13 @@ }, "url": { "raw": "{{baseUrl}}/admin/holidays", - "host": ["{{baseUrl}}"], - "path": ["admin", "holidays"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "holidays" + ] }, "description": "Create a new holiday (Admin only)" } @@ -1882,8 +2369,14 @@ }, "url": { "raw": "{{baseUrl}}/admin/holidays/:holidayId", - "host": ["{{baseUrl}}"], - "path": ["admin", "holidays", ":holidayId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "holidays", + ":holidayId" + ], "variable": [ { "key": "holidayId", @@ -1901,8 +2394,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/admin/holidays/:holidayId", - "host": ["{{baseUrl}}"], - "path": ["admin", "holidays", ":holidayId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "holidays", + ":holidayId" + ], "variable": [ { "key": "holidayId", @@ -1929,8 +2428,14 @@ }, "url": { "raw": "{{baseUrl}}/admin/holidays/bulk-import", - "host": ["{{baseUrl}}"], - "path": ["admin", "holidays", "bulk-import"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "holidays", + "bulk-import" + ] }, "description": "Bulk import holidays from JSON array (Admin only)" } @@ -1947,8 +2452,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/admin/configurations?category=TAT", - "host": ["{{baseUrl}}"], - "path": ["admin", "configurations"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "configurations" + ], "query": [ { "key": "category", @@ -1976,8 +2486,14 @@ }, "url": { "raw": "{{baseUrl}}/admin/configurations/:configKey", - "host": ["{{baseUrl}}"], - "path": ["admin", "configurations", ":configKey"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "configurations", + ":configKey" + ], "variable": [ { "key": "configKey", @@ -1996,8 +2512,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/admin/configurations/:configKey/reset", - "host": ["{{baseUrl}}"], - "path": ["admin", "configurations", ":configKey", "reset"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "configurations", + ":configKey", + "reset" + ], "variable": [ { "key": "configKey", @@ -2029,8 +2552,14 @@ }, "url": { "raw": "{{baseUrl}}/admin/users/assign-role", - "host": ["{{baseUrl}}"], - "path": ["admin", "users", "assign-role"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "users", + "assign-role" + ] }, "description": "Assign role to user by email - creates user from Okta if doesn't exist (Admin only)" } @@ -2051,8 +2580,15 @@ }, "url": { "raw": "{{baseUrl}}/admin/users/:userId/role", - "host": ["{{baseUrl}}"], - "path": ["admin", "users", ":userId", "role"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "users", + ":userId", + "role" + ], "variable": [ { "key": "userId", @@ -2070,8 +2606,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/admin/users/by-role?role=ADMIN", - "host": ["{{baseUrl}}"], - "path": ["admin", "users", "by-role"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "users", + "by-role" + ], "query": [ { "key": "role", @@ -2090,8 +2632,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/admin/users/role-statistics", - "host": ["{{baseUrl}}"], - "path": ["admin", "users", "role-statistics"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "users", + "role-statistics" + ] }, "description": "Get count of users in each role (Admin only)" } @@ -2110,8 +2658,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/ai/status", - "host": ["{{baseUrl}}"], - "path": ["ai", "status"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "ai", + "status" + ] }, "description": "Get AI service status (availability and provider)" } @@ -2123,8 +2676,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/ai/reinitialize", - "host": ["{{baseUrl}}"], - "path": ["ai", "reinitialize"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "ai", + "reinitialize" + ] }, "description": "Reinitialize AI service after configuration change (Admin only)" } @@ -2150,8 +2708,12 @@ }, "url": { "raw": "{{baseUrl}}/summaries", - "host": ["{{baseUrl}}"], - "path": ["summaries"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries" + ] }, "description": "Create a summary for a closed workflow request (initiator only)" } @@ -2163,8 +2725,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/summaries/my?page=1&limit=10", - "host": ["{{baseUrl}}"], - "path": ["summaries", "my"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries", + "my" + ], "query": [ { "key": "page", @@ -2188,8 +2755,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/summaries/shared?page=1&limit=10", - "host": ["{{baseUrl}}"], - "path": ["summaries", "shared"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries", + "shared" + ], "query": [ { "key": "page", @@ -2213,8 +2785,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/summaries/request/:requestId", - "host": ["{{baseUrl}}"], - "path": ["summaries", "request", ":requestId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries", + "request", + ":requestId" + ], "variable": [ { "key": "requestId", @@ -2233,8 +2811,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/summaries/:summaryId", - "host": ["{{baseUrl}}"], - "path": ["summaries", ":summaryId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries", + ":summaryId" + ], "variable": [ { "key": "summaryId", @@ -2262,8 +2845,14 @@ }, "url": { "raw": "{{baseUrl}}/summaries/:summaryId/share", - "host": ["{{baseUrl}}"], - "path": ["summaries", ":summaryId", "share"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries", + ":summaryId", + "share" + ], "variable": [ { "key": "summaryId", @@ -2281,8 +2870,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/summaries/:summaryId/recipients", - "host": ["{{baseUrl}}"], - "path": ["summaries", ":summaryId", "recipients"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries", + ":summaryId", + "recipients" + ], "variable": [ { "key": "summaryId", @@ -2300,8 +2895,15 @@ "header": [], "url": { "raw": "{{baseUrl}}/summaries/shared/:sharedSummaryId/view", - "host": ["{{baseUrl}}"], - "path": ["summaries", "shared", ":sharedSummaryId", "view"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "summaries", + "shared", + ":sharedSummaryId", + "view" + ], "variable": [ { "key": "sharedSummaryId", @@ -2325,8 +2927,14 @@ "header": [], "url": { "raw": "{{baseUrl}}/debug/tat-jobs/:requestId", - "host": ["{{baseUrl}}"], - "path": ["debug", "tat-jobs", ":requestId"], + "host": [ + "{{baseUrl}}" + ], + "path": [ + "debug", + "tat-jobs", + ":requestId" + ], "variable": [ { "key": "requestId", @@ -2344,8 +2952,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/debug/tat-jobs", - "host": ["{{baseUrl}}"], - "path": ["debug", "tat-jobs"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "debug", + "tat-jobs" + ] }, "description": "Debug endpoint to check all queued TAT jobs" } @@ -2366,8 +2979,13 @@ }, "url": { "raw": "{{baseUrl}}/debug/tat-calculate", - "host": ["{{baseUrl}}"], - "path": ["debug", "tat-calculate"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "debug", + "tat-calculate" + ] }, "description": "Debug endpoint to test TAT time calculations" } @@ -2379,8 +2997,13 @@ "header": [], "url": { "raw": "{{baseUrl}}/debug/queue-status", - "host": ["{{baseUrl}}"], - "path": ["debug", "queue-status"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "debug", + "queue-status" + ] }, "description": "Debug endpoint to check queue and worker status" } @@ -2401,8 +3024,13 @@ }, "url": { "raw": "{{baseUrl}}/debug/trigger-test-tat", - "host": ["{{baseUrl}}"], - "path": ["debug", "trigger-test-tat"] + "host": [ + "{{baseUrl}}" + ], + "path": [ + "debug", + "trigger-test-tat" + ] }, "description": "Debug endpoint to manually trigger a test TAT job (fires in 5 seconds)" } @@ -2411,4 +3039,3 @@ } ] } - diff --git a/build/assets/conclusionApi-BJO_6JLT.js b/build/assets/conclusionApi-DoX_H3Tk.js similarity index 84% rename from build/assets/conclusionApi-BJO_6JLT.js rename to build/assets/conclusionApi-DoX_H3Tk.js index 0283a8c..b83d4e6 100644 --- a/build/assets/conclusionApi-BJO_6JLT.js +++ b/build/assets/conclusionApi-DoX_H3Tk.js @@ -1,2 +1,2 @@ -import{a as s}from"./index-7F7W4LDI.js";import"./radix-vendor-CYvDqP9X.js";import"./charts-vendor-BVfwAPj-.js";import"./utils-vendor-DNMmNUQL.js";import"./ui-vendor-DfwWW08H.js";import"./socket-vendor-TjCxX7sJ.js";import"./redux-vendor-tbZCm13o.js";import"./router-vendor-B_rK4TXr.js";async function m(n){return(await s.post(`/conclusions/${n}/generate`)).data.data}async function f(n,t){return(await s.post(`/conclusions/${n}/finalize`,{finalRemark:t})).data.data}async function d(n){var t;try{return(await s.get(`/conclusions/${n}`)).data.data}catch(o){if(((t=o.response)==null?void 0:t.status)===404)return null;throw o}}export{f as finalizeConclusion,m as generateConclusion,d as getConclusion}; -//# sourceMappingURL=conclusionApi-BJO_6JLT.js.map +import{a as s}from"./index-y_ojbF9T.js";import"./radix-vendor-CYvDqP9X.js";import"./charts-vendor-BVfwAPj-.js";import"./utils-vendor-DNMmNUQL.js";import"./ui-vendor-DfwWW08H.js";import"./socket-vendor-TjCxX7sJ.js";import"./redux-vendor-tbZCm13o.js";import"./router-vendor-B_rK4TXr.js";async function m(n){return(await s.post(`/conclusions/${n}/generate`)).data.data}async function f(n,t){return(await s.post(`/conclusions/${n}/finalize`,{finalRemark:t})).data.data}async function d(n){var t;try{return(await s.get(`/conclusions/${n}`)).data.data}catch(o){if(((t=o.response)==null?void 0:t.status)===404)return null;throw o}}export{f as finalizeConclusion,m as generateConclusion,d as getConclusion}; +//# sourceMappingURL=conclusionApi-DoX_H3Tk.js.map diff --git a/build/assets/conclusionApi-BJO_6JLT.js.map b/build/assets/conclusionApi-DoX_H3Tk.js.map similarity index 95% rename from build/assets/conclusionApi-BJO_6JLT.js.map rename to build/assets/conclusionApi-DoX_H3Tk.js.map index dd9f218..9423849 100644 --- a/build/assets/conclusionApi-BJO_6JLT.js.map +++ b/build/assets/conclusionApi-DoX_H3Tk.js.map @@ -1 +1 @@ -{"version":3,"file":"conclusionApi-BJO_6JLT.js","sources":["../../src/services/conclusionApi.ts"],"sourcesContent":["import apiClient from './authApi';\r\n\r\nexport interface ConclusionRemark {\r\n conclusionId: string;\r\n requestId: string;\r\n aiGeneratedRemark: string | null;\r\n aiModelUsed: string | null;\r\n aiConfidenceScore: number | null;\r\n finalRemark: string | null;\r\n editedBy: string | null;\r\n isEdited: boolean;\r\n editCount: number;\r\n approvalSummary: any;\r\n documentSummary: any;\r\n keyDiscussionPoints: string[];\r\n generatedAt: string | null;\r\n finalizedAt: string | null;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\n/**\r\n * Generate AI-powered conclusion remark\r\n */\r\nexport async function generateConclusion(requestId: string): Promise<{\r\n conclusionId: string;\r\n aiGeneratedRemark: string;\r\n keyDiscussionPoints: string[];\r\n confidence: number;\r\n generatedAt: string;\r\n}> {\r\n const response = await apiClient.post(`/conclusions/${requestId}/generate`);\r\n return response.data.data;\r\n}\r\n\r\n/**\r\n * Update conclusion remark (edit by initiator)\r\n */\r\nexport async function updateConclusion(requestId: string, finalRemark: string): Promise {\r\n const response = await apiClient.put(`/conclusions/${requestId}`, { finalRemark });\r\n return response.data.data;\r\n}\r\n\r\n/**\r\n * Finalize conclusion and close request\r\n */\r\nexport async function finalizeConclusion(requestId: string, finalRemark: string): Promise<{\r\n conclusionId: string;\r\n requestNumber: string;\r\n status: string;\r\n finalRemark: string;\r\n finalizedAt: string;\r\n}> {\r\n const response = await apiClient.post(`/conclusions/${requestId}/finalize`, { finalRemark });\r\n return response.data.data;\r\n}\r\n\r\n/**\r\n * Get conclusion for a request\r\n * Returns null if conclusion doesn't exist (404) instead of throwing error\r\n */\r\nexport async function getConclusion(requestId: string): Promise {\r\n try {\r\n const response = await apiClient.get(`/conclusions/${requestId}`);\r\n return response.data.data;\r\n } catch (error: any) {\r\n // Handle 404 gracefully - conclusion doesn't exist yet, which is normal\r\n if (error.response?.status === 404) {\r\n return null;\r\n }\r\n // Re-throw other errors\r\n throw error;\r\n }\r\n}\r\n\r\n"],"names":["generateConclusion","requestId","apiClient","finalizeConclusion","finalRemark","getConclusion","error","_a"],"mappings":"6RAwBA,eAAsBA,EAAmBC,EAMtC,CAED,OADiB,MAAMC,EAAU,KAAK,gBAAgBD,CAAS,WAAW,GAC1D,KAAK,IACvB,CAaA,eAAsBE,EAAmBF,EAAmBG,EAMzD,CAED,OADiB,MAAMF,EAAU,KAAK,gBAAgBD,CAAS,YAAa,CAAE,YAAAG,EAAa,GAC3E,KAAK,IACvB,CAMA,eAAsBC,EAAcJ,EAAqD,OACvF,GAAI,CAEF,OADiB,MAAMC,EAAU,IAAI,gBAAgBD,CAAS,EAAE,GAChD,KAAK,IACvB,OAASK,EAAY,CAEnB,KAAIC,EAAAD,EAAM,WAAN,YAAAC,EAAgB,UAAW,IAC7B,OAAO,KAGT,MAAMD,CACR,CACF"} \ No newline at end of file +{"version":3,"file":"conclusionApi-DoX_H3Tk.js","sources":["../../src/services/conclusionApi.ts"],"sourcesContent":["import apiClient from './authApi';\r\n\r\nexport interface ConclusionRemark {\r\n conclusionId: string;\r\n requestId: string;\r\n aiGeneratedRemark: string | null;\r\n aiModelUsed: string | null;\r\n aiConfidenceScore: number | null;\r\n finalRemark: string | null;\r\n editedBy: string | null;\r\n isEdited: boolean;\r\n editCount: number;\r\n approvalSummary: any;\r\n documentSummary: any;\r\n keyDiscussionPoints: string[];\r\n generatedAt: string | null;\r\n finalizedAt: string | null;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\n/**\r\n * Generate AI-powered conclusion remark\r\n */\r\nexport async function generateConclusion(requestId: string): Promise<{\r\n conclusionId: string;\r\n aiGeneratedRemark: string;\r\n keyDiscussionPoints: string[];\r\n confidence: number;\r\n generatedAt: string;\r\n}> {\r\n const response = await apiClient.post(`/conclusions/${requestId}/generate`);\r\n return response.data.data;\r\n}\r\n\r\n/**\r\n * Update conclusion remark (edit by initiator)\r\n */\r\nexport async function updateConclusion(requestId: string, finalRemark: string): Promise {\r\n const response = await apiClient.put(`/conclusions/${requestId}`, { finalRemark });\r\n return response.data.data;\r\n}\r\n\r\n/**\r\n * Finalize conclusion and close request\r\n */\r\nexport async function finalizeConclusion(requestId: string, finalRemark: string): Promise<{\r\n conclusionId: string;\r\n requestNumber: string;\r\n status: string;\r\n finalRemark: string;\r\n finalizedAt: string;\r\n}> {\r\n const response = await apiClient.post(`/conclusions/${requestId}/finalize`, { finalRemark });\r\n return response.data.data;\r\n}\r\n\r\n/**\r\n * Get conclusion for a request\r\n * Returns null if conclusion doesn't exist (404) instead of throwing error\r\n */\r\nexport async function getConclusion(requestId: string): Promise {\r\n try {\r\n const response = await apiClient.get(`/conclusions/${requestId}`);\r\n return response.data.data;\r\n } catch (error: any) {\r\n // Handle 404 gracefully - conclusion doesn't exist yet, which is normal\r\n if (error.response?.status === 404) {\r\n return null;\r\n }\r\n // Re-throw other errors\r\n throw error;\r\n }\r\n}\r\n\r\n"],"names":["generateConclusion","requestId","apiClient","finalizeConclusion","finalRemark","getConclusion","error","_a"],"mappings":"6RAwBA,eAAsBA,EAAmBC,EAMtC,CAED,OADiB,MAAMC,EAAU,KAAK,gBAAgBD,CAAS,WAAW,GAC1D,KAAK,IACvB,CAaA,eAAsBE,EAAmBF,EAAmBG,EAMzD,CAED,OADiB,MAAMF,EAAU,KAAK,gBAAgBD,CAAS,YAAa,CAAE,YAAAG,EAAa,GAC3E,KAAK,IACvB,CAMA,eAAsBC,EAAcJ,EAAqD,OACvF,GAAI,CAEF,OADiB,MAAMC,EAAU,IAAI,gBAAgBD,CAAS,EAAE,GAChD,KAAK,IACvB,OAASK,EAAY,CAEnB,KAAIC,EAAAD,EAAM,WAAN,YAAAC,EAAgB,UAAW,IAC7B,OAAO,KAGT,MAAMD,CACR,CACF"} \ No newline at end of file diff --git a/build/assets/index-7F7W4LDI.js b/build/assets/index-y_ojbF9T.js similarity index 69% rename from build/assets/index-7F7W4LDI.js rename to build/assets/index-y_ojbF9T.js index 0c0a964..d8bf041 100644 --- a/build/assets/index-7F7W4LDI.js +++ b/build/assets/index-y_ojbF9T.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/conclusionApi-BJO_6JLT.js","assets/radix-vendor-CYvDqP9X.js","assets/charts-vendor-BVfwAPj-.js","assets/utils-vendor-DNMmNUQL.js","assets/ui-vendor-DfwWW08H.js","assets/socket-vendor-TjCxX7sJ.js","assets/redux-vendor-tbZCm13o.js","assets/router-vendor-B_rK4TXr.js"])))=>i.map(i=>d[i]); -var Fg=Object.defineProperty;var Mg=(t,s,a)=>s in t?Fg(t,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[s]=a;var Qi=(t,s,a)=>Mg(t,typeof s!="symbol"?s+"":s,a);import{j as e,S as Wu,R as Gu,I as Ku,F as Yu,a as _g,T as Lg,P as Og,C as $g,b as Ug,O as Zu,c as Xu,d as Bg,e as Vg,f as zg,D as Hg,g as Wg,A as Gg,h as Kg,i as Yg,k as Zg,l as Xg,m as Qg,n as Jg,V as qg,o as e0,p as t0,q as s0,r as a0,s as r0,t as n0,u as i0,v as l0,w as o0,x as c0,y as d0,z as m0,B as u0,E as x0,G as h0,H as p0,J as g0,K as f0,L as y0,M as b0,N as v0,Q as Qu,U as Ju,W as j0,X as qu,Y as ex,Z as N0,_ as w0,$ as C0,a0 as A0,a1 as S0,a2 as T0,a3 as k0,a4 as R0,a5 as D0,a6 as P0,a7 as I0,a8 as E0,a9 as F0,aa as M0,ab as _0}from"./radix-vendor-CYvDqP9X.js";import{a as L0,r as p,c as tx,d as _r,B as $l,C as li,X as oi,Y as ci,T as Lr,L as di,e as va,P as sx,f as ax,g as rx,h as O0,i as $d,j as Ci,k as Ai,b as $0}from"./charts-vendor-BVfwAPj-.js";import{a as fo,f as nx,s as Ks,e as yo,b as Ud,c as U0,d as Ca,g as vn,i as bo,h as ix,j as Us,k as Hs,l as Ji,m as Pa,n as B0,o as Ul,p as V0,q as Ye,r as Bl,t as z0,u as H0,v as W0,w as G0,x as qi,y as Bd,z as K0,A as lx,B as ox,C as vo,D as jo,E as Y0,F as Z0,G as cx,H as Tr,I as el,J as X0,K as Q0,L as J0}from"./utils-vendor-DNMmNUQL.js";import{L as q0,S as rs,C as Ge,a as Rs,b as Ze,X as ft,H as ef,c as dx,U as Lt,F as Pe,d as Ie,e as Wr,P as ps,f as tf,g as sf,B as Ds,h as Ga,i as tl,j as No,k as wo,l as wr,m as mx,n as Si,o as ux,p as ot,q as Qa,R as zt,I as Gr,T as Ht,r as Xe,s as fa,t as af,A as cs,u as is,M as Is,v as Ti,w as Pt,x as Vl,D as Ct,Z as ki,y as Bt,z as rf,E as nf,G as lf,J as of,K as cf,N as df,O as mf,Q as uf,V as xf,W as xx,Y as hf,_ as pf,$ as Ia,a0 as Ri,a1 as Ka,a2 as mi,a3 as Vd,a4 as Vn,a5 as ui,a6 as hx,a7 as wt,a8 as gf,a9 as K,aa as Ys,ab as Ss,ac as Di,ad as Xt,ae as px,af as ht,ag as ff,ah as yf,ai as gx,aj as Pi,ak as fx,al as bf,am as vf,an as Co,ao as Es,ap as Ea,aq as Ii,ar as Ei,as as js,at as jf,au as Nf,av as yx,aw as wf,ax as Jn,ay as jn,az as Ao,aA as Fi,aB as xi,aC as bx,aD as vx,aE as So,aF as Mi,aG as _i,aH as Cf,aI as hn,aJ as jx,aK as hi,aL as Af,aM as Sf,aN as Tf,aO as Li,aP as Oi,aQ as To,aR as kf,aS as zd,aT as _a,aU as Rf,aV as $i,aW as Df,aX as Dr,aY as Nx,aZ as Hd,a_ as Pf,a$ as If,b0 as wx,b1 as Ef,b2 as Ff,b3 as Mf,b4 as _f,b5 as Lf}from"./ui-vendor-DfwWW08H.js";import{l as Of}from"./socket-vendor-TjCxX7sJ.js";import{c as Kr,a as $f}from"./redux-vendor-tbZCm13o.js";import{u as qs,a as La,b as Cx,B as Uf,R as Bf,c as At,O as Wd}from"./router-vendor-B_rK4TXr.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))r(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function a(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(n){if(n.ep)return;n.ep=!0;const i=a(n);fetch(n.href,i)}})();var zl={},Gd=L0;zl.createRoot=Gd.createRoot,zl.hydrateRoot=Gd.hydrateRoot;var Ax={exports:{}},Sx={};var Rn=p;function Vf(t,s){return t===s&&(t!==0||1/t===1/s)||t!==t&&s!==s}var zf=typeof Object.is=="function"?Object.is:Vf,Hf=Rn.useSyncExternalStore,Wf=Rn.useRef,Gf=Rn.useEffect,Kf=Rn.useMemo,Yf=Rn.useDebugValue;Sx.useSyncExternalStoreWithSelector=function(t,s,a,r,n){var i=Wf(null);if(i.current===null){var l={hasValue:!1,value:null};i.current=l}else l=i.current;i=Kf(function(){function d(x){if(!c){if(c=!0,m=x,x=r(x),n!==void 0&&l.hasValue){var g=l.value;if(n(g,x))return u=g}return u=x}if(g=u,zf(m,x))return g;var y=r(x);return n!==void 0&&n(g,y)?(m=x,g):(m=x,u=y)}var c=!1,m,u,h=a===void 0?null:a;return[function(){return d(s())},h===null?void 0:function(){return d(h())}]},[s,a,r,n]);var o=Hf(t,i[0],i[1]);return Gf(function(){l.hasValue=!0,l.value=o},[o]),Yf(o),o};Ax.exports=Sx;var Zf=Ax.exports;function Xf(t){t()}function Qf(){let t=null,s=null;return{clear(){t=null,s=null},notify(){Xf(()=>{let a=t;for(;a;)a.callback(),a=a.next})},get(){const a=[];let r=t;for(;r;)a.push(r),r=r.next;return a},subscribe(a){let r=!0;const n=s={callback:a,next:null,prev:s};return n.prev?n.prev.next=n:t=n,function(){!r||t===null||(r=!1,n.next?n.next.prev=n.prev:s=n.prev,n.prev?n.prev.next=n.next:t=n.next)}}}}var Kd={notify(){},get:()=>[]};function Jf(t,s){let a,r=Kd,n=0,i=!1;function l(y){m();const f=r.subscribe(y);let b=!1;return()=>{b||(b=!0,f(),u())}}function o(){r.notify()}function d(){g.onStateChange&&g.onStateChange()}function c(){return i}function m(){n++,a||(a=t.subscribe(d),r=Qf())}function u(){n--,a&&n===0&&(a(),a=void 0,r.clear(),r=Kd)}function h(){i||(i=!0,m())}function x(){i&&(i=!1,u())}const g={addNestedSub:l,notifyNestedSubs:o,handleChangeWrapper:d,isSubscribed:c,trySubscribe:h,tryUnsubscribe:x,getListeners:()=>r};return g}var qf=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",ey=qf(),ty=()=>typeof navigator<"u"&&navigator.product==="ReactNative",sy=ty(),ay=()=>ey||sy?p.useLayoutEffect:p.useEffect,ry=ay(),sl=Symbol.for("react-redux-context"),al=typeof globalThis<"u"?globalThis:{};function ny(){if(!p.createContext)return{};const t=al[sl]??(al[sl]=new Map);let s=t.get(p.createContext);return s||(s=p.createContext(null),t.set(p.createContext,s)),s}var Ya=ny();function iy(t){const{children:s,context:a,serverState:r,store:n}=t,i=p.useMemo(()=>{const d=Jf(n);return{store:n,subscription:d,getServerState:r?()=>r:void 0}},[n,r]),l=p.useMemo(()=>n.getState(),[n]);ry(()=>{const{subscription:d}=i;return d.onStateChange=d.notifyNestedSubs,d.trySubscribe(),l!==n.getState()&&d.notifyNestedSubs(),()=>{d.tryUnsubscribe(),d.onStateChange=void 0}},[i,l]);const o=a||Ya;return p.createElement(o.Provider,{value:i},s)}var ly=iy;function ko(t=Ya){return function(){return p.useContext(t)}}var Tx=ko();function kx(t=Ya){const s=t===Ya?Tx:ko(t),a=()=>{const{store:r}=s();return r};return Object.assign(a,{withTypes:()=>a}),a}var oy=kx();function cy(t=Ya){const s=t===Ya?oy:kx(t),a=()=>s().dispatch;return Object.assign(a,{withTypes:()=>a}),a}var dy=cy(),my=(t,s)=>t===s;function uy(t=Ya){const s=t===Ya?Tx:ko(t),a=(r,n={})=>{const{equalityFn:i=my}=typeof n=="function"?{equalityFn:n}:n,l=s(),{store:o,subscription:d,getServerState:c}=l;p.useRef(!0);const m=p.useCallback({[r.name](h){return r(h)}}[r.name],[r]),u=Zf.useSyncExternalStoreWithSelector(d.addNestedSub,o.getState,c||o.getState,m,i);return p.useDebugValue(u),u};return Object.assign(a,{withTypes:()=>a}),a}var xy=uy(),Hl=function(t,s){return Hl=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,r){a.__proto__=r}||function(a,r){for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(a[n]=r[n])},Hl(t,s)};function hy(t,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");Hl(t,s);function a(){this.constructor=t}t.prototype=s===null?Object.create(s):(a.prototype=s.prototype,new a)}var pi=function(){return pi=Object.assign||function(s){for(var a,r=1,n=arguments.length;r0&&g[g.length-1])||w[0]!==6&&w[0]!==2)){f=0;continue}if(w[0]===3&&(!g||w[1]>g[0]&&w[1]0?setTimeout(x,C):x(null)}}window.addEventListener("storage",b),m.addToWaiting(b);var v=setTimeout(b,Math.max(0,u-Date.now()))})];case 1:return h.sent(),[2]}})})},m.addToWaiting=function(u){this.removeFromWaiting(u),m.waiters!==void 0&&m.waiters.push(u)},m.removeFromWaiting=function(u){m.waiters!==void 0&&(m.waiters=m.waiters.filter(function(h){return h!==u}))},m.notifyWaiters=function(){m.waiters!==void 0&&m.waiters.slice().forEach(function(u){return u()})},m.prototype.releaseLock=function(u){return a(this,void 0,void 0,function(){return r(this,function(h){switch(h.label){case 0:return[4,this.releaseLock__private__(u)];case 1:return[2,h.sent()]}})})},m.prototype.releaseLock__private__=function(u){return a(this,void 0,void 0,function(){var h,x,g,y;return r(this,function(f){switch(f.label){case 0:return h=this.storageHandler===void 0?l:this.storageHandler,x=i+"-"+u,(g=h.getItemSync(x))===null?[2]:(y=JSON.parse(g)).id!==this.id?[3,2]:[4,dr.default().lock(y.iat)];case 1:f.sent(),this.acquiredIatSet.delete(y.iat),h.removeItemSync(x),dr.default().unlock(y.iat),m.notifyWaiters(),f.label=2;case 2:return[2]}})})},m.lockCorrector=function(u){for(var h=Date.now()-5e3,x=u,g=[],y=0;;){var f=x.keySync(y);if(f===null)break;g.push(f),y++}for(var b=!1,v=0;v.")},fy=pi(pi({},gy),{buildAuthorizeUrl:Os,buildLogoutUrl:Os,getAccessTokenSilently:Os,getAccessTokenWithPopup:Os,getIdTokenClaims:Os,loginWithRedirect:Os,loginWithPopup:Os,connectAccountWithRedirect:Os,logout:Os,handleRedirectCallback:Os,getDpopNonce:Os,setDpopNonce:Os,generateDpopProof:Os,createFetcher:Os}),yy=p.createContext(fy);(function(t){hy(s,t);function s(a,r){var n=t.call(this,r??a)||this;return n.error=a,n.error_description=r,Object.setPrototypeOf(n,s.prototype),n}return s})(Error);var by=function(t){return t===void 0&&(t=yy),p.useContext(t)};const rl="idToken",nl="userData",vy=()=>!0;class at{static setAccessToken(s){}static getAccessToken(){return null}static setRefreshToken(s){}static getRefreshToken(){return null}static setIdToken(s){sessionStorage.setItem(rl,s)}static getIdToken(){return sessionStorage.getItem(rl)}static setUserData(s){localStorage.setItem(nl,JSON.stringify(s))}static getUserData(){const s=localStorage.getItem(nl);if(!s)return null;try{return JSON.parse(s)}catch{return null}}static clearAll(){try{sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true")}catch(s){console.warn("Could not set logout flags:",s)}try{localStorage.removeItem(nl),sessionStorage.removeItem(rl)}catch(s){console.warn("Error clearing user data:",s)}{try{sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true")}catch{}return}}static hasAccessToken(){return!!this.getUserData()}static hasRefreshToken(){return!!this.getUserData()}static isLocalhost(){return window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"||window.location.hostname===""}static isProduction(){return vy()}}function il(t,s=5){if(!t)return!0;try{const a=t.split(".");if(a.length!==3||!a[1])return!0;const n=JSON.parse(atob(a[1])).exp*1e3,i=Date.now(),l=s*60*1e3;return n-it,t=>Promise.reject(t));je.interceptors.response.use(t=>t,async t=>{var a,r;const s=t.config;if(t.code==="ERR_NETWORK"||t.code==="ECONNREFUSED"||(a=t.message)!=null&&a.includes("ERR_CONNECTION_REFUSED"),((r=t.response)==null?void 0:r.status)===401&&!s._retry){s._retry=!0;const n=!0;try{const i=at.getRefreshToken(),l=await fo.post(`${Rx}/auth/refresh`,n?{}:{refreshToken:i},{withCredentials:!0}),d=(l.data.data||l.data).accessToken;return je(s)}catch(i){return at.clearAll(),window.location.href="/",Promise.reject(i)}}return Promise.reject(t)});async function jy(t,s){var a,r;try{const n=await je.post("/auth/token-exchange",{code:t,redirectUri:s},{responseType:"json",headers:{"Content-Type":"application/json",Accept:"application/json"}});if(Array.isArray(n.data))throw console.error("❌ Response is an array (buffer issue):",{arrayLength:n.data.length,firstFew:n.data.slice(0,10),rawResponse:n}),new Error("Invalid response format: received array instead of JSON. Check Content-Type header.");const i=n.data,l=i.data||i;return l.user&&at.setUserData(l.user),l.idToken&&at.setIdToken(l.idToken),l.accessToken&&l.refreshToken&&(at.setAccessToken(l.accessToken),at.setRefreshToken(l.refreshToken)),l}catch(n){throw console.error("❌ Token exchange failed:",{message:n.message,response:(a=n.response)==null?void 0:a.data,status:(r=n.response)==null?void 0:r.status,code:t?`${t.substring(0,10)}...`:"MISSING",redirectUri:s}),n}}async function Ny(){var r;const t={},a=(await je.post("/auth/refresh",t)).data;if((r=a.data)!=null&&r.accessToken||a.accessToken,a.success!==!1)return"cookie-based-auth";throw new Error("Failed to refresh token")}async function dn(){const s=(await je.get("/auth/me")).data;return s.data||s}async function wy(){var t,s;try{await je.post("/auth/logout",{},{withCredentials:!0})}catch(a){console.error("📡 Logout API error:",a),console.error("📡 Error details:",{message:a.message,status:(t=a.response)==null?void 0:t.status,data:(s=a.response)==null?void 0:s.data})}}const Wl="https://ssodev.rebridge.co.in/realms/RE",Dx="REFLOW",Po=`${window.location.origin}/login/callback`;function Cy(){const t=new URLSearchParams(window.location.search),s=t.has("logout")||t.has("tanflow_logged_out");s&&(sessionStorage.removeItem("tanflow_logged_out"),sessionStorage.removeItem("__logout_in_progress__"),sessionStorage.removeItem("__force_logout__"),console.log("🚪 Cleared logout flags before initiating Tanflow login"));const a=Math.random().toString(36).substring(7);sessionStorage.setItem("auth_provider","tanflow"),sessionStorage.setItem("tanflow_auth_state",a);let r=`${Wl}/protocol/openid-connect/auth?client_id=${Dx}&response_type=code&scope=openid&redirect_uri=${encodeURIComponent(Po)}&state=${a}`;s&&(r+="&prompt=login",console.log("🚪 Adding prompt=login to force re-authentication after logout")),console.log("🚪 Initiating Tanflow login",{isAfterLogout:s,hasPrompt:s}),window.location.href=r}async function Ay(t,s){var r,n,i;const a="https://re-workflow-nt-dev.siplsolutions.com/api/v1";try{const l=await fo.post(`${a}/auth/tanflow/token-exchange`,{code:t,redirectUri:Po,state:s},{withCredentials:!0,headers:{"Content-Type":"application/json"}}),o=((r=l.data)==null?void 0:r.data)||l.data;return o.accessToken&&at.setAccessToken(o.accessToken),o.refreshToken&&at.setRefreshToken(o.refreshToken),o.idToken&&at.setIdToken(o.idToken),o.user&&at.setUserData(o.user),o}catch(l){throw console.error("❌ Tanflow token exchange failed:",{message:l.message,response:(n=l.response)==null?void 0:n.data,status:(i=l.response)==null?void 0:i.status}),l}}function Sy(t){if(!t){console.warn("🚪 No id_token available for Tanflow logout, redirecting to home");const n=`${window.location.origin}/?tanflow_logged_out=true&logout=${Date.now()}`;window.location.replace(n);return}const s=Po,a=new URL(`${Wl}/protocol/openid-connect/logout`);a.searchParams.set("client_id",Dx),a.searchParams.set("id_token_hint",t),a.searchParams.set("post_logout_redirect_uri",s);const r=a.toString();console.log("🚪 Tanflow logout initiated",{hasIdToken:!!t,idTokenPrefix:t?t.substring(0,20)+"...":"none",postLogoutRedirectUri:s,logoutUrlBase:`${Wl}/protocol/openid-connect/logout`,finalLogoutUrl:r.replace(t.substring(0,20),"***")}),sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true"),console.log("🚪 Redirecting to Tanflow logout endpoint..."),window.location.href=r}const Px=p.createContext(void 0);function Ty({children:t}){const[s,a]=p.useState(!1),[r,n]=p.useState(!0),[i,l]=p.useState(null),[o,d]=p.useState(null),[c,m]=p.useState(!1);p.useEffect(()=>{const v=sessionStorage.getItem("__logout_in_progress__"),C=sessionStorage.getItem("__force_logout__");if(v==="true"||C==="true"){sessionStorage.removeItem("__logout_in_progress__"),sessionStorage.removeItem("__force_logout__"),at.clearAll();try{localStorage.clear(),sessionStorage.clear()}catch(k){console.error("Error clearing storage:",k)}a(!1),l(null),n(!1),d(null);return}const w=new URLSearchParams(window.location.search);if(w.has("logout")||w.has("okta_logged_out")||w.has("tanflow_logged_out")){console.log("🚪 Logout parameter detected in URL, clearing all tokens"),at.clearAll(),sessionStorage.removeItem("auth_provider"),sessionStorage.removeItem("tanflow_auth_state"),sessionStorage.removeItem("__logout_in_progress__"),sessionStorage.removeItem("__force_logout__"),sessionStorage.removeItem("tanflow_logged_out"),localStorage.clear(),a(!1),l(null),n(!1);const k=new URLSearchParams;w.has("okta_logged_out")&&k.set("okta_logged_out","true"),w.has("tanflow_logged_out")&&k.set("tanflow_logged_out","true");const A=k.toString()?`/?${k.toString()}`:"/";window.history.replaceState({},document.title,A);return}window.location.pathname==="/login/callback"||window.location.pathname==="/login/tanflow/callback"||(at.getUserData(),c?n(!1):h())},[c]),p.useEffect(()=>{if(!s)return;const v=async()=>{try{await f()}catch(k){console.error("Silent refresh failed:",k)}},C=10*60*1e3,w=setInterval(v,C);return()=>clearInterval(w)},[s]);const u=p.useRef(!1);p.useEffect(()=>{if(u.current||window.location.pathname!=="/login/callback")return;(async()=>{const C=new URLSearchParams(window.location.search);if((C.has("logout")||C.has("tanflow_logged_out")||C.has("okta_logged_out"))&&!C.get("code")){console.log("🚪 Logout redirect detected in callback, redirecting to home");const M=new URLSearchParams;C.has("tanflow_logged_out")&&M.set("tanflow_logged_out","true"),C.has("okta_logged_out")&&M.set("okta_logged_out","true"),C.has("logout")&&M.set("logout",C.get("logout")||Date.now().toString());const D=M.toString()?`/?${M.toString()}`:"/?logout="+Date.now();window.location.replace(D);return}u.current=!0;const w=C.get("code"),k=C.get("error");if(window.history.replaceState({},document.title,"/login/callback"),sessionStorage.getItem("auth_provider")==="tanflow"){u.current=!1;return}if(k){d(new Error(`Authentication error: ${k}`)),n(!1),sessionStorage.removeItem("auth_provider");return}if(!w){n(!1),sessionStorage.removeItem("auth_provider");return}try{n(!0),a(!1),d(null);const M=`${window.location.origin}/login/callback`,D=await jy(w,M);l(D.user),a(!0),d(null),sessionStorage.removeItem("auth_provider"),window.history.replaceState({},document.title,"/")}catch(M){console.error("❌ Token exchange error in AuthContext:",M),d(M),a(!1),l(null),sessionStorage.removeItem("auth_provider"),u.current=!1}finally{n(!1)}})()},[]);const h=async()=>{var C;if(c){n(!1);return}const v=!0;try{if(n(!0),v){const A=at.getUserData();try{const M=await dn();l(M),at.setUserData(M),a(!0)}catch(M){if(((C=M==null?void 0:M.response)==null?void 0:C.status)===401)try{await f();const D=await dn();l(D),at.setUserData(D),a(!0)}catch{at.clearAll(),a(!1),l(null)}else M!=null&&M.isConnectionError?A?(l(A),a(!0)):(a(!1),l(null)):(at.clearAll(),a(!1),l(null))}return}const w=at.getAccessToken(),k=at.getUserData();if(!w){a(!1),l(null),n(!1);return}if(il(w))try{await f();const A=at.getAccessToken();if(A&&!il(A)){const M=at.getUserData();if(M)l(M),a(!0);else try{const D=await dn();l(D),at.setUserData(D),a(!0)}catch{at.clearAll(),a(!1),l(null)}}else at.clearAll(),a(!1),l(null)}catch{at.clearAll(),a(!1),l(null)}else if(k)l(k),a(!0);else try{const A=await dn();l(A),at.setUserData(A),a(!0)}catch{at.clearAll(),a(!1),l(null)}}catch(w){console.error("Error checking auth status:",w),d(w),at.clearAll(),a(!1),l(null)}finally{n(!1)}},x=async()=>{try{d(null);const v="https://royalenfield.okta.com",C="0oa18b98aari6I6eo2p8",w=`${window.location.origin}/login/callback`,k="code",A="openid profile email",M=Math.random().toString(36).substring(7);sessionStorage.setItem("auth_provider","okta");const D=new URLSearchParams(window.location.search),S=D.has("logout")||D.has("okta_logged_out")||D.has("tanflow_logged_out");let j=`${v}/oauth2/default/v1/authorize?client_id=${C}&redirect_uri=${encodeURIComponent(w)}&response_type=${k}&scope=${encodeURIComponent(A)}&state=${M}`;S&&(j+="&prompt=login"),window.location.href=j}catch(v){throw d(v),v}},g=async()=>{try{const v=at.getIdToken(),C=sessionStorage.getItem("auth_provider")||(v&&v.includes("tanflow")?"tanflow":null)||"okta";sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true"),m(!0),a(!1),l(null),d(null),n(!0);try{await wy(),console.log("🚪 Backend logout API called successfully")}catch(D){console.error("🚪 Logout API error:",D),console.warn("🚪 Backend logout failed - httpOnly cookies may not be cleared")}const w=sessionStorage.getItem("__logout_in_progress__"),k=sessionStorage.getItem("__force_logout__"),A=sessionStorage.getItem("auth_provider");if(at.clearAll(),w&&sessionStorage.setItem("__logout_in_progress__",w),k&&sessionStorage.setItem("__force_logout__",k),v&&at.setIdToken(v),A&&sessionStorage.setItem("auth_provider",A),await new Promise(D=>setTimeout(D,100)),C==="tanflow"&&v){console.log("🚪 Initiating Tanflow logout...");try{Sy(v);return}catch(D){console.error("🚪 Tanflow logout error:",D)}}console.log("🚪 Using OKTA logout flow or fallback"),sessionStorage.removeItem("auth_provider"),v&&at.clearAll();const M=`${window.location.origin}/?okta_logged_out=true&logout=${Date.now()}`;window.location.replace(M)}catch(v){console.error("🚪 Logout error:",v);try{localStorage.clear(),sessionStorage.clear(),sessionStorage.setItem("__logout_in_progress__","true");const C=`${window.location.origin}/?okta_logged_out=true&logout=${Date.now()}`;window.location.replace(C)}catch{window.location.replace("/?logout="+Date.now())}}},y=async()=>{{if(s)return"cookie-based-auth";try{return await f(),s?"cookie-based-auth":null}catch{return null}}const v=at.getAccessToken();if(v&&!il(v))return v;try{return await f(),at.getAccessToken()}catch{return null}},f=async()=>{try{const C=await Ny();return}catch(C){throw at.clearAll(),a(!1),l(null),C}},b={isAuthenticated:s,isLoading:r,user:i,error:o,login:x,logout:g,getAccessTokenSilently:y,refreshTokenSilently:f};return e.jsx(Px.Provider,{value:b,children:t})}function ky({children:t}){return e.jsx(Ty,{children:t})}function Qt(){const t=p.useContext(Px);if(t===void 0)throw new Error("useAuth must be used within an AuthProvider");return t}function mr(t){return(t==null?void 0:t.role)==="ADMIN"}function an(t){return(t==null?void 0:t.role)==="MANAGEMENT"}function Ui(t){return(t==null?void 0:t.role)==="MANAGEMENT"||(t==null?void 0:t.role)==="ADMIN"}const Xd=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,Qd=tx,Ix=(t,s)=>a=>{var r;if((s==null?void 0:s.variants)==null)return Qd(t,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:n,defaultVariants:i}=s,l=Object.keys(n).map(c=>{const m=a==null?void 0:a[c],u=i==null?void 0:i[c];if(m===null)return null;const h=Xd(m)||Xd(u);return n[c][h]}),o=a&&Object.entries(a).reduce((c,m)=>{let[u,h]=m;return h===void 0||(c[u]=h),c},{}),d=s==null||(r=s.compoundVariants)===null||r===void 0?void 0:r.reduce((c,m)=>{let{class:u,className:h,...x}=m;return Object.entries(x).every(g=>{let[y,f]=g;return Array.isArray(f)?f.includes({...i,...o}[y]):{...i,...o}[y]===f})?[...c,u,h]:c},[]);return Qd(t,l,d,a==null?void 0:a.class,a==null?void 0:a.className)},Io="-",Ry=t=>{const s=Py(t),{conflictingClassGroups:a,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:l=>{const o=l.split(Io);return o[0]===""&&o.length!==1&&o.shift(),Ex(o,s)||Dy(l)},getConflictingClassGroupIds:(l,o)=>{const d=a[l]||[];return o&&r[l]?[...d,...r[l]]:d}}},Ex=(t,s)=>{var l;if(t.length===0)return s.classGroupId;const a=t[0],r=s.nextPart.get(a),n=r?Ex(t.slice(1),r):void 0;if(n)return n;if(s.validators.length===0)return;const i=t.join(Io);return(l=s.validators.find(({validator:o})=>o(i)))==null?void 0:l.classGroupId},Jd=/^\[(.+)\]$/,Dy=t=>{if(Jd.test(t)){const s=Jd.exec(t)[1],a=s==null?void 0:s.substring(0,s.indexOf(":"));if(a)return"arbitrary.."+a}},Py=t=>{const{theme:s,prefix:a}=t,r={nextPart:new Map,validators:[]};return Ey(Object.entries(t.classGroups),a).forEach(([i,l])=>{Gl(l,r,i,s)}),r},Gl=(t,s,a,r)=>{t.forEach(n=>{if(typeof n=="string"){const i=n===""?s:qd(s,n);i.classGroupId=a;return}if(typeof n=="function"){if(Iy(n)){Gl(n(r),s,a,r);return}s.validators.push({validator:n,classGroupId:a});return}Object.entries(n).forEach(([i,l])=>{Gl(l,qd(s,i),a,r)})})},qd=(t,s)=>{let a=t;return s.split(Io).forEach(r=>{a.nextPart.has(r)||a.nextPart.set(r,{nextPart:new Map,validators:[]}),a=a.nextPart.get(r)}),a},Iy=t=>t.isThemeGetter,Ey=(t,s)=>s?t.map(([a,r])=>{const n=r.map(i=>typeof i=="string"?s+i:typeof i=="object"?Object.fromEntries(Object.entries(i).map(([l,o])=>[s+l,o])):i);return[a,n]}):t,Fy=t=>{if(t<1)return{get:()=>{},set:()=>{}};let s=0,a=new Map,r=new Map;const n=(i,l)=>{a.set(i,l),s++,s>t&&(s=0,r=a,a=new Map)};return{get(i){let l=a.get(i);if(l!==void 0)return l;if((l=r.get(i))!==void 0)return n(i,l),l},set(i,l){a.has(i)?a.set(i,l):n(i,l)}}},Fx="!",My=t=>{const{separator:s,experimentalParseClassName:a}=t,r=s.length===1,n=s[0],i=s.length,l=o=>{const d=[];let c=0,m=0,u;for(let f=0;fm?u-m:void 0;return{modifiers:d,hasImportantModifier:x,baseClassName:g,maybePostfixModifierPosition:y}};return a?o=>a({className:o,parseClassName:l}):l},_y=t=>{if(t.length<=1)return t;const s=[];let a=[];return t.forEach(r=>{r[0]==="["?(s.push(...a.sort(),r),a=[]):a.push(r)}),s.push(...a.sort()),s},Ly=t=>({cache:Fy(t.cacheSize),parseClassName:My(t),...Ry(t)}),Oy=/\s+/,$y=(t,s)=>{const{parseClassName:a,getClassGroupId:r,getConflictingClassGroupIds:n}=s,i=[],l=t.trim().split(Oy);let o="";for(let d=l.length-1;d>=0;d-=1){const c=l[d],{modifiers:m,hasImportantModifier:u,baseClassName:h,maybePostfixModifierPosition:x}=a(c);let g=!!x,y=r(g?h.substring(0,x):h);if(!y){if(!g){o=c+(o.length>0?" "+o:o);continue}if(y=r(h),!y){o=c+(o.length>0?" "+o:o);continue}g=!1}const f=_y(m).join(":"),b=u?f+Fx:f,v=b+y;if(i.includes(v))continue;i.push(v);const C=n(y,g);for(let w=0;w0?" "+o:o)}return o};function Uy(){let t=0,s,a,r="";for(;t{if(typeof t=="string")return t;let s,a="";for(let r=0;ru(m),t());return a=Ly(c),r=a.cache.get,n=a.cache.set,i=o,o(d)}function o(d){const c=r(d);if(c)return c;const m=$y(d,a);return n(d,m),m}return function(){return i(Uy.apply(null,arguments))}}const _t=t=>{const s=a=>a[t]||[];return s.isThemeGetter=!0,s},_x=/^\[(?:([a-z-]+):)?(.+)\]$/i,Vy=/^\d+\/\d+$/,zy=new Set(["px","full","screen"]),Hy=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Wy=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Gy=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Ky=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Yy=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ka=t=>Or(t)||zy.has(t)||Vy.test(t),Va=t=>Yr(t,"length",sb),Or=t=>!!t&&!Number.isNaN(Number(t)),ll=t=>Yr(t,"number",Or),rn=t=>!!t&&Number.isInteger(Number(t)),Zy=t=>t.endsWith("%")&&Or(t.slice(0,-1)),lt=t=>_x.test(t),za=t=>Hy.test(t),Xy=new Set(["length","size","percentage"]),Qy=t=>Yr(t,Xy,Lx),Jy=t=>Yr(t,"position",Lx),qy=new Set(["image","url"]),eb=t=>Yr(t,qy,rb),tb=t=>Yr(t,"",ab),nn=()=>!0,Yr=(t,s,a)=>{const r=_x.exec(t);return r?r[1]?typeof s=="string"?r[1]===s:s.has(r[1]):a(r[2]):!1},sb=t=>Wy.test(t)&&!Gy.test(t),Lx=()=>!1,ab=t=>Ky.test(t),rb=t=>Yy.test(t),nb=()=>{const t=_t("colors"),s=_t("spacing"),a=_t("blur"),r=_t("brightness"),n=_t("borderColor"),i=_t("borderRadius"),l=_t("borderSpacing"),o=_t("borderWidth"),d=_t("contrast"),c=_t("grayscale"),m=_t("hueRotate"),u=_t("invert"),h=_t("gap"),x=_t("gradientColorStops"),g=_t("gradientColorStopPositions"),y=_t("inset"),f=_t("margin"),b=_t("opacity"),v=_t("padding"),C=_t("saturate"),w=_t("scale"),k=_t("sepia"),A=_t("skew"),M=_t("space"),D=_t("translate"),S=()=>["auto","contain","none"],j=()=>["auto","hidden","clip","visible","scroll"],P=()=>["auto",lt,s],R=()=>[lt,s],O=()=>["",ka,Va],F=()=>["auto",Or,lt],_=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],B=()=>["solid","dashed","dotted","double","none"],T=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],N=()=>["start","end","center","between","around","evenly","stretch"],U=()=>["","0",lt],$=()=>["auto","avoid","all","avoid-page","page","left","right","column"],L=()=>[Or,lt];return{cacheSize:500,separator:":",theme:{colors:[nn],spacing:[ka,Va],blur:["none","",za,lt],brightness:L(),borderColor:[t],borderRadius:["none","","full",za,lt],borderSpacing:R(),borderWidth:O(),contrast:L(),grayscale:U(),hueRotate:L(),invert:U(),gap:R(),gradientColorStops:[t],gradientColorStopPositions:[Zy,Va],inset:P(),margin:P(),opacity:L(),padding:R(),saturate:L(),scale:L(),sepia:U(),skew:L(),space:R(),translate:R()},classGroups:{aspect:[{aspect:["auto","square","video",lt]}],container:["container"],columns:[{columns:[za]}],"break-after":[{"break-after":$()}],"break-before":[{"break-before":$()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[..._(),lt]}],overflow:[{overflow:j()}],"overflow-x":[{"overflow-x":j()}],"overflow-y":[{"overflow-y":j()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[y]}],"inset-x":[{"inset-x":[y]}],"inset-y":[{"inset-y":[y]}],start:[{start:[y]}],end:[{end:[y]}],top:[{top:[y]}],right:[{right:[y]}],bottom:[{bottom:[y]}],left:[{left:[y]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",rn,lt]}],basis:[{basis:P()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",lt]}],grow:[{grow:U()}],shrink:[{shrink:U()}],order:[{order:["first","last","none",rn,lt]}],"grid-cols":[{"grid-cols":[nn]}],"col-start-end":[{col:["auto",{span:["full",rn,lt]},lt]}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":[nn]}],"row-start-end":[{row:["auto",{span:[rn,lt]},lt]}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",lt]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",lt]}],gap:[{gap:[h]}],"gap-x":[{"gap-x":[h]}],"gap-y":[{"gap-y":[h]}],"justify-content":[{justify:["normal",...N()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...N(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...N(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[f]}],mx:[{mx:[f]}],my:[{my:[f]}],ms:[{ms:[f]}],me:[{me:[f]}],mt:[{mt:[f]}],mr:[{mr:[f]}],mb:[{mb:[f]}],ml:[{ml:[f]}],"space-x":[{"space-x":[M]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[M]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",lt,s]}],"min-w":[{"min-w":[lt,s,"min","max","fit"]}],"max-w":[{"max-w":[lt,s,"none","full","min","max","fit","prose",{screen:[za]},za]}],h:[{h:[lt,s,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[lt,s,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[lt,s,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[lt,s,"auto","min","max","fit"]}],"font-size":[{text:["base",za,Va]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ll]}],"font-family":[{font:[nn]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",lt]}],"line-clamp":[{"line-clamp":["none",Or,ll]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ka,lt]}],"list-image":[{"list-image":["none",lt]}],"list-style-type":[{list:["none","disc","decimal",lt]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[t]}],"placeholder-opacity":[{"placeholder-opacity":[b]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[t]}],"text-opacity":[{"text-opacity":[b]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...B(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ka,Va]}],"underline-offset":[{"underline-offset":["auto",ka,lt]}],"text-decoration-color":[{decoration:[t]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",lt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",lt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[b]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[..._(),Jy]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Qy]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},eb]}],"bg-color":[{bg:[t]}],"gradient-from-pos":[{from:[g]}],"gradient-via-pos":[{via:[g]}],"gradient-to-pos":[{to:[g]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[i]}],"rounded-s":[{"rounded-s":[i]}],"rounded-e":[{"rounded-e":[i]}],"rounded-t":[{"rounded-t":[i]}],"rounded-r":[{"rounded-r":[i]}],"rounded-b":[{"rounded-b":[i]}],"rounded-l":[{"rounded-l":[i]}],"rounded-ss":[{"rounded-ss":[i]}],"rounded-se":[{"rounded-se":[i]}],"rounded-ee":[{"rounded-ee":[i]}],"rounded-es":[{"rounded-es":[i]}],"rounded-tl":[{"rounded-tl":[i]}],"rounded-tr":[{"rounded-tr":[i]}],"rounded-br":[{"rounded-br":[i]}],"rounded-bl":[{"rounded-bl":[i]}],"border-w":[{border:[o]}],"border-w-x":[{"border-x":[o]}],"border-w-y":[{"border-y":[o]}],"border-w-s":[{"border-s":[o]}],"border-w-e":[{"border-e":[o]}],"border-w-t":[{"border-t":[o]}],"border-w-r":[{"border-r":[o]}],"border-w-b":[{"border-b":[o]}],"border-w-l":[{"border-l":[o]}],"border-opacity":[{"border-opacity":[b]}],"border-style":[{border:[...B(),"hidden"]}],"divide-x":[{"divide-x":[o]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[o]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[b]}],"divide-style":[{divide:B()}],"border-color":[{border:[n]}],"border-color-x":[{"border-x":[n]}],"border-color-y":[{"border-y":[n]}],"border-color-s":[{"border-s":[n]}],"border-color-e":[{"border-e":[n]}],"border-color-t":[{"border-t":[n]}],"border-color-r":[{"border-r":[n]}],"border-color-b":[{"border-b":[n]}],"border-color-l":[{"border-l":[n]}],"divide-color":[{divide:[n]}],"outline-style":[{outline:["",...B()]}],"outline-offset":[{"outline-offset":[ka,lt]}],"outline-w":[{outline:[ka,Va]}],"outline-color":[{outline:[t]}],"ring-w":[{ring:O()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[t]}],"ring-opacity":[{"ring-opacity":[b]}],"ring-offset-w":[{"ring-offset":[ka,Va]}],"ring-offset-color":[{"ring-offset":[t]}],shadow:[{shadow:["","inner","none",za,tb]}],"shadow-color":[{shadow:[nn]}],opacity:[{opacity:[b]}],"mix-blend":[{"mix-blend":[...T(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":T()}],filter:[{filter:["","none"]}],blur:[{blur:[a]}],brightness:[{brightness:[r]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",za,lt]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[m]}],invert:[{invert:[u]}],saturate:[{saturate:[C]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[a]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m]}],"backdrop-invert":[{"backdrop-invert":[u]}],"backdrop-opacity":[{"backdrop-opacity":[b]}],"backdrop-saturate":[{"backdrop-saturate":[C]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",lt]}],duration:[{duration:L()}],ease:[{ease:["linear","in","out","in-out",lt]}],delay:[{delay:L()}],animate:[{animate:["none","spin","ping","pulse","bounce",lt]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[w]}],"scale-x":[{"scale-x":[w]}],"scale-y":[{"scale-y":[w]}],rotate:[{rotate:[rn,lt]}],"translate-x":[{"translate-x":[D]}],"translate-y":[{"translate-y":[D]}],"skew-x":[{"skew-x":[A]}],"skew-y":[{"skew-y":[A]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",lt]}],accent:[{accent:["auto",t]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",lt]}],"caret-color":[{caret:[t]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",lt]}],fill:[{fill:[t,"none"]}],"stroke-w":[{stroke:[ka,Va,ll]}],stroke:[{stroke:[t,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},ib=By(nb);function De(...t){return ib(tx(t))}const Nn=Ix("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9 rounded-md"}},defaultVariants:{variant:"default",size:"default"}}),I=p.forwardRef(({className:t,variant:s,size:a,asChild:r=!1,...n},i)=>{const l=r?Wu:"button";return e.jsx(l,{"data-slot":"button",className:De(Nn({variant:s,size:a,className:t})),ref:i,...n})});I.displayName="Button";function q({className:t,...s}){return e.jsx("div",{"data-slot":"card",className:De("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border",t),...s})}function he({className:t,...s}){return e.jsx("div",{"data-slot":"card-header",className:De("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...s})}function pe({className:t,...s}){return e.jsx("h4",{"data-slot":"card-title",className:De("leading-none",t),...s})}function ke({className:t,...s}){return e.jsx("p",{"data-slot":"card-description",className:De("text-muted-foreground",t),...s})}function ee({className:t,...s}){return e.jsx("div",{"data-slot":"card-content",className:De("px-6 [&:last-child]:pb-6",t),...s})}const Bi="/assets/Re_Logo-By51taPS.png",em="/assets/landing_page_image-ClTD-4qZ.jpg";function lb(){const{login:t,isLoading:s,error:a}=Qt(),[r,n]=p.useState(!1),[i,l]=p.useState(!1);p.useEffect(()=>{const c=new Image;c.src=em,c.onload=()=>{l(!0)},c.complete&&l(!0)},[]);const o=async()=>{localStorage.clear(),sessionStorage.clear();try{await t()}catch(c){console.error("========================================"),console.error("OKTA LOGIN ERROR"),console.error("Error details:",c),console.error("Error message:",c==null?void 0:c.message),console.error("Error stack:",c==null?void 0:c.stack),console.error("========================================")}},d=()=>{localStorage.clear(),sessionStorage.clear(),n(!0);try{Cy()}catch(c){console.error("========================================"),console.error("TANFLOW LOGIN ERROR"),console.error("Error details:",c),n(!1)}};return a&&console.error("Auth Error in Auth Component:",{message:a.message,error:a}),e.jsxs("div",{className:"min-h-screen flex items-center justify-center p-4 relative",style:{backgroundImage:i?`url(${em})`:"none",backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",transition:"background-image 0.3s ease-in-out"},children:[!i&&e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-slate-900 to-slate-800"}),e.jsx("div",{className:"absolute inset-0 bg-black/40"}),e.jsxs(q,{className:"w-full max-w-md shadow-xl relative z-10 bg-black backdrop-blur-sm border-gray-800",children:[e.jsx(he,{className:"space-y-1 text-center pb-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center mb-4",children:[e.jsx("img",{src:Bi,alt:"Royal Enfield Logo",className:"h-10 w-auto max-w-[168px] object-contain mb-2"}),e.jsx("p",{className:"text-xs text-gray-300 text-center truncate",children:"Approval Portal"})]})}),e.jsxs(ee,{className:"space-y-4",children:[a&&e.jsxs("div",{className:"bg-red-900/50 border border-red-700 text-red-200 px-4 py-3 rounded-lg",children:[e.jsx("p",{className:"text-sm font-medium",children:"Authentication Error"}),e.jsx("p",{className:"text-sm",children:a.message})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(I,{onClick:o,disabled:s||r,className:"w-full h-12 text-base font-semibold bg-re-red hover:bg-re-red/90 text-white",size:"lg",children:s?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent"}),"Logging in..."]}):e.jsxs(e.Fragment,{children:[e.jsx(q0,{className:"mr-2 h-5 w-5"}),"RE Employee Login"]})}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 flex items-center",children:e.jsx("span",{className:"w-full border-t border-gray-700"})}),e.jsx("div",{className:"relative flex justify-center text-xs uppercase",children:e.jsx("span",{className:"bg-gray-900 px-2 text-gray-400",children:"Or"})})]}),e.jsx(I,{onClick:d,disabled:s||r,className:"w-full h-12 text-base font-semibold bg-indigo-600 hover:bg-indigo-700 text-white",size:"lg",children:r?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent"}),"Redirecting..."]}):e.jsxs(e.Fragment,{children:[e.jsx(rs,{className:"mr-2 h-5 w-5"}),"Dealer Login"]})})]}),e.jsxs("div",{className:"text-center text-sm text-gray-400 mt-4",children:[e.jsx("p",{children:"Secure Single Sign-On"}),e.jsx("p",{className:"text-xs mt-1 text-gray-500",children:"Choose your authentication provider"})]})]})]})]})}function Ox(){const{isAuthenticated:t,isLoading:s,error:a,user:r}=Qt(),[n,i]=p.useState("exchanging");p.useEffect(()=>{if(a){i("error");return}if(s){const d=new URLSearchParams(window.location.search).get("code");i(d&&!r?"exchanging":r&&!t?"fetching":"exchanging")}else r&&t&&i("complete")},[t,s,a,r]);const l=()=>{switch(n){case"exchanging":return"Exchanging authorization code...";case"fetching":return"Fetching your profile...";case"complete":return"Authentication successful!";case"error":return"Authentication failed";default:return"Completing authentication..."}};return e.jsxs("div",{className:"min-h-screen flex items-center justify-center bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900",children:[e.jsx("div",{className:"absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAgMCA2MCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxnIGZpbGw9IiMxZTIxMmQiIGZpbGwtb3BhY2l0eT0iMC4wNSI+PGNpcmNsZSBjeD0iMzAiIGN5PSIzMCIgcj0iMzAiLz48L2c+PC9nPjwvc3ZnPg==')] opacity-20"}),e.jsxs("div",{className:"relative z-10 text-center px-4 max-w-md w-full",children:[e.jsx("div",{className:"mb-8",children:e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx("img",{src:Bi,alt:"Royal Enfield Logo",className:"h-10 w-auto max-w-[168px] object-contain mb-2"}),e.jsx("p",{className:"text-xs text-gray-400 text-center truncate",children:"Approval Portal"})]})}),e.jsxs("div",{className:"bg-white/10 backdrop-blur-xl rounded-2xl p-8 shadow-2xl border border-white/20",children:[e.jsx("div",{className:"mb-6 flex justify-center",children:n==="error"?e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 animate-ping opacity-75",children:e.jsx(Ge,{className:"w-16 h-16 text-red-500"})}),e.jsx(Ge,{className:"w-16 h-16 text-red-500 relative"})]}):n==="complete"?e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 animate-ping opacity-75",children:e.jsx(Rs,{className:"w-16 h-16 text-green-500"})}),e.jsx(Rs,{className:"w-16 h-16 text-green-500 relative"})]}):e.jsxs("div",{className:"relative",children:[e.jsx(Ze,{className:"w-16 h-16 animate-spin text-re-red"}),e.jsx("div",{className:"absolute inset-0 border-4 rounded-full border-re-red/20"}),e.jsx("div",{className:"absolute inset-0 border-4 border-transparent border-t-re-red rounded-full animate-spin"})]})}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"text-xl font-semibold text-white mb-2",children:n==="complete"?"Welcome Back!":n==="error"?"Authentication Error":"Authenticating"}),e.jsx("p",{className:"text-slate-300 text-sm",children:l()})]}),n!=="error"&&e.jsxs("div",{className:"space-y-3 mb-6",children:[e.jsxs("div",{className:`flex items-center gap-3 text-sm transition-all duration-500 ${n==="exchanging"?"text-white":"text-slate-400"}`,children:[e.jsx("div",{className:`w-2 h-2 rounded-full transition-all duration-500 ${n==="exchanging"?"bg-re-red animate-pulse":"bg-slate-600"}`}),e.jsx("span",{children:"Validating credentials"})]}),e.jsxs("div",{className:`flex items-center gap-3 text-sm transition-all duration-500 ${n==="fetching"?"text-white":"text-slate-400"}`,children:[e.jsx("div",{className:`w-2 h-2 rounded-full transition-all duration-500 ${n==="fetching"?"bg-re-red animate-pulse":"bg-slate-600"}`}),e.jsx("span",{children:"Loading your profile"})]}),n==="complete"&&e.jsxs("div",{className:"flex items-center gap-3 text-sm transition-all duration-500 text-white",children:[e.jsx("div",{className:"w-2 h-2 rounded-full transition-all duration-500 bg-green-500"}),e.jsx("span",{children:"Setting up your session"})]})]}),n==="error"&&a&&e.jsxs("div",{className:"mt-6 p-4 bg-red-500/10 border border-red-500/20 rounded-lg",children:[e.jsx("p",{className:"text-red-400 text-sm",children:a.message||"An error occurred during authentication"}),e.jsx("button",{onClick:()=>{window.location.href="/"},className:"mt-4 text-sm text-red-400 hover:text-red-300 underline",children:"Return to login"})]}),n!=="error"&&n!=="complete"&&e.jsxs("div",{className:"mt-6",children:[e.jsx("div",{className:"h-1.5 bg-slate-700/50 rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-re-red rounded-full animate-pulse",style:{animation:"progress 2s ease-in-out infinite"}})}),e.jsx("style",{children:` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/conclusionApi-DoX_H3Tk.js","assets/radix-vendor-CYvDqP9X.js","assets/charts-vendor-BVfwAPj-.js","assets/utils-vendor-DNMmNUQL.js","assets/ui-vendor-DfwWW08H.js","assets/socket-vendor-TjCxX7sJ.js","assets/redux-vendor-tbZCm13o.js","assets/router-vendor-B_rK4TXr.js"])))=>i.map(i=>d[i]); +var Fg=Object.defineProperty;var Mg=(t,s,a)=>s in t?Fg(t,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[s]=a;var Qi=(t,s,a)=>Mg(t,typeof s!="symbol"?s+"":s,a);import{j as e,S as Wu,R as Gu,I as Ku,F as Yu,a as _g,T as Lg,P as Og,C as $g,b as Ug,O as Zu,c as Xu,d as Bg,e as Vg,f as zg,D as Hg,g as Wg,A as Gg,h as Kg,i as Yg,k as Zg,l as Xg,m as Qg,n as Jg,V as qg,o as e0,p as t0,q as s0,r as a0,s as r0,t as n0,u as i0,v as l0,w as o0,x as c0,y as d0,z as m0,B as u0,E as x0,G as h0,H as p0,J as g0,K as f0,L as y0,M as b0,N as v0,Q as Qu,U as Ju,W as j0,X as qu,Y as ex,Z as N0,_ as w0,$ as C0,a0 as A0,a1 as S0,a2 as T0,a3 as k0,a4 as R0,a5 as D0,a6 as P0,a7 as I0,a8 as E0,a9 as F0,aa as M0,ab as _0}from"./radix-vendor-CYvDqP9X.js";import{a as L0,r as p,c as tx,d as _r,B as $l,C as li,X as oi,Y as ci,T as Lr,L as di,e as va,P as sx,f as ax,g as rx,h as O0,i as $d,j as Ci,k as Ai,b as $0}from"./charts-vendor-BVfwAPj-.js";import{a as fo,f as nx,s as Ks,e as yo,b as Ud,c as U0,d as Ca,g as vn,i as bo,h as ix,j as Us,k as Hs,l as Ji,m as Pa,n as B0,o as Ul,p as V0,q as Ye,r as Bl,t as z0,u as H0,v as W0,w as G0,x as qi,y as Bd,z as K0,A as lx,B as ox,C as vo,D as jo,E as Y0,F as Z0,G as cx,H as Tr,I as el,J as X0,K as Q0,L as J0}from"./utils-vendor-DNMmNUQL.js";import{L as q0,S as rs,C as Ge,a as Rs,b as Ze,X as ft,H as ef,c as dx,U as Lt,F as Pe,d as Ie,e as Wr,P as ps,f as tf,g as sf,B as Ds,h as Ga,i as tl,j as No,k as wo,l as wr,m as mx,n as Si,o as ux,p as ot,q as Qa,R as zt,I as Gr,T as Ht,r as Xe,s as fa,t as af,A as cs,u as is,M as Is,v as Ti,w as Pt,x as Vl,D as Ct,Z as ki,y as Bt,z as rf,E as nf,G as lf,J as of,K as cf,N as df,O as mf,Q as uf,V as xf,W as xx,Y as hf,_ as pf,$ as Ia,a0 as Ri,a1 as Ka,a2 as mi,a3 as Vd,a4 as Vn,a5 as ui,a6 as hx,a7 as wt,a8 as gf,a9 as K,aa as Ys,ab as Ss,ac as Di,ad as Xt,ae as px,af as ht,ag as ff,ah as yf,ai as gx,aj as Pi,ak as fx,al as bf,am as vf,an as Co,ao as Es,ap as Ea,aq as Ii,ar as Ei,as as js,at as jf,au as Nf,av as yx,aw as wf,ax as Jn,ay as jn,az as Ao,aA as Fi,aB as xi,aC as bx,aD as vx,aE as So,aF as Mi,aG as _i,aH as Cf,aI as hn,aJ as jx,aK as hi,aL as Af,aM as Sf,aN as Tf,aO as Li,aP as Oi,aQ as To,aR as kf,aS as zd,aT as _a,aU as Rf,aV as $i,aW as Df,aX as Dr,aY as Nx,aZ as Hd,a_ as Pf,a$ as If,b0 as wx,b1 as Ef,b2 as Ff,b3 as Mf,b4 as _f,b5 as Lf}from"./ui-vendor-DfwWW08H.js";import{l as Of}from"./socket-vendor-TjCxX7sJ.js";import{c as Kr,a as $f}from"./redux-vendor-tbZCm13o.js";import{u as qs,a as La,b as Cx,B as Uf,R as Bf,c as At,O as Wd}from"./router-vendor-B_rK4TXr.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))r(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function a(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(n){if(n.ep)return;n.ep=!0;const i=a(n);fetch(n.href,i)}})();var zl={},Gd=L0;zl.createRoot=Gd.createRoot,zl.hydrateRoot=Gd.hydrateRoot;var Ax={exports:{}},Sx={};var Rn=p;function Vf(t,s){return t===s&&(t!==0||1/t===1/s)||t!==t&&s!==s}var zf=typeof Object.is=="function"?Object.is:Vf,Hf=Rn.useSyncExternalStore,Wf=Rn.useRef,Gf=Rn.useEffect,Kf=Rn.useMemo,Yf=Rn.useDebugValue;Sx.useSyncExternalStoreWithSelector=function(t,s,a,r,n){var i=Wf(null);if(i.current===null){var l={hasValue:!1,value:null};i.current=l}else l=i.current;i=Kf(function(){function d(x){if(!c){if(c=!0,m=x,x=r(x),n!==void 0&&l.hasValue){var g=l.value;if(n(g,x))return u=g}return u=x}if(g=u,zf(m,x))return g;var y=r(x);return n!==void 0&&n(g,y)?(m=x,g):(m=x,u=y)}var c=!1,m,u,h=a===void 0?null:a;return[function(){return d(s())},h===null?void 0:function(){return d(h())}]},[s,a,r,n]);var o=Hf(t,i[0],i[1]);return Gf(function(){l.hasValue=!0,l.value=o},[o]),Yf(o),o};Ax.exports=Sx;var Zf=Ax.exports;function Xf(t){t()}function Qf(){let t=null,s=null;return{clear(){t=null,s=null},notify(){Xf(()=>{let a=t;for(;a;)a.callback(),a=a.next})},get(){const a=[];let r=t;for(;r;)a.push(r),r=r.next;return a},subscribe(a){let r=!0;const n=s={callback:a,next:null,prev:s};return n.prev?n.prev.next=n:t=n,function(){!r||t===null||(r=!1,n.next?n.next.prev=n.prev:s=n.prev,n.prev?n.prev.next=n.next:t=n.next)}}}}var Kd={notify(){},get:()=>[]};function Jf(t,s){let a,r=Kd,n=0,i=!1;function l(y){m();const f=r.subscribe(y);let b=!1;return()=>{b||(b=!0,f(),u())}}function o(){r.notify()}function d(){g.onStateChange&&g.onStateChange()}function c(){return i}function m(){n++,a||(a=t.subscribe(d),r=Qf())}function u(){n--,a&&n===0&&(a(),a=void 0,r.clear(),r=Kd)}function h(){i||(i=!0,m())}function x(){i&&(i=!1,u())}const g={addNestedSub:l,notifyNestedSubs:o,handleChangeWrapper:d,isSubscribed:c,trySubscribe:h,tryUnsubscribe:x,getListeners:()=>r};return g}var qf=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",ey=qf(),ty=()=>typeof navigator<"u"&&navigator.product==="ReactNative",sy=ty(),ay=()=>ey||sy?p.useLayoutEffect:p.useEffect,ry=ay(),sl=Symbol.for("react-redux-context"),al=typeof globalThis<"u"?globalThis:{};function ny(){if(!p.createContext)return{};const t=al[sl]??(al[sl]=new Map);let s=t.get(p.createContext);return s||(s=p.createContext(null),t.set(p.createContext,s)),s}var Ya=ny();function iy(t){const{children:s,context:a,serverState:r,store:n}=t,i=p.useMemo(()=>{const d=Jf(n);return{store:n,subscription:d,getServerState:r?()=>r:void 0}},[n,r]),l=p.useMemo(()=>n.getState(),[n]);ry(()=>{const{subscription:d}=i;return d.onStateChange=d.notifyNestedSubs,d.trySubscribe(),l!==n.getState()&&d.notifyNestedSubs(),()=>{d.tryUnsubscribe(),d.onStateChange=void 0}},[i,l]);const o=a||Ya;return p.createElement(o.Provider,{value:i},s)}var ly=iy;function ko(t=Ya){return function(){return p.useContext(t)}}var Tx=ko();function kx(t=Ya){const s=t===Ya?Tx:ko(t),a=()=>{const{store:r}=s();return r};return Object.assign(a,{withTypes:()=>a}),a}var oy=kx();function cy(t=Ya){const s=t===Ya?oy:kx(t),a=()=>s().dispatch;return Object.assign(a,{withTypes:()=>a}),a}var dy=cy(),my=(t,s)=>t===s;function uy(t=Ya){const s=t===Ya?Tx:ko(t),a=(r,n={})=>{const{equalityFn:i=my}=typeof n=="function"?{equalityFn:n}:n,l=s(),{store:o,subscription:d,getServerState:c}=l;p.useRef(!0);const m=p.useCallback({[r.name](h){return r(h)}}[r.name],[r]),u=Zf.useSyncExternalStoreWithSelector(d.addNestedSub,o.getState,c||o.getState,m,i);return p.useDebugValue(u),u};return Object.assign(a,{withTypes:()=>a}),a}var xy=uy(),Hl=function(t,s){return Hl=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,r){a.__proto__=r}||function(a,r){for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(a[n]=r[n])},Hl(t,s)};function hy(t,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");Hl(t,s);function a(){this.constructor=t}t.prototype=s===null?Object.create(s):(a.prototype=s.prototype,new a)}var pi=function(){return pi=Object.assign||function(s){for(var a,r=1,n=arguments.length;r0&&g[g.length-1])||w[0]!==6&&w[0]!==2)){f=0;continue}if(w[0]===3&&(!g||w[1]>g[0]&&w[1]0?setTimeout(x,C):x(null)}}window.addEventListener("storage",b),m.addToWaiting(b);var v=setTimeout(b,Math.max(0,u-Date.now()))})];case 1:return h.sent(),[2]}})})},m.addToWaiting=function(u){this.removeFromWaiting(u),m.waiters!==void 0&&m.waiters.push(u)},m.removeFromWaiting=function(u){m.waiters!==void 0&&(m.waiters=m.waiters.filter(function(h){return h!==u}))},m.notifyWaiters=function(){m.waiters!==void 0&&m.waiters.slice().forEach(function(u){return u()})},m.prototype.releaseLock=function(u){return a(this,void 0,void 0,function(){return r(this,function(h){switch(h.label){case 0:return[4,this.releaseLock__private__(u)];case 1:return[2,h.sent()]}})})},m.prototype.releaseLock__private__=function(u){return a(this,void 0,void 0,function(){var h,x,g,y;return r(this,function(f){switch(f.label){case 0:return h=this.storageHandler===void 0?l:this.storageHandler,x=i+"-"+u,(g=h.getItemSync(x))===null?[2]:(y=JSON.parse(g)).id!==this.id?[3,2]:[4,dr.default().lock(y.iat)];case 1:f.sent(),this.acquiredIatSet.delete(y.iat),h.removeItemSync(x),dr.default().unlock(y.iat),m.notifyWaiters(),f.label=2;case 2:return[2]}})})},m.lockCorrector=function(u){for(var h=Date.now()-5e3,x=u,g=[],y=0;;){var f=x.keySync(y);if(f===null)break;g.push(f),y++}for(var b=!1,v=0;v.")},fy=pi(pi({},gy),{buildAuthorizeUrl:Os,buildLogoutUrl:Os,getAccessTokenSilently:Os,getAccessTokenWithPopup:Os,getIdTokenClaims:Os,loginWithRedirect:Os,loginWithPopup:Os,connectAccountWithRedirect:Os,logout:Os,handleRedirectCallback:Os,getDpopNonce:Os,setDpopNonce:Os,generateDpopProof:Os,createFetcher:Os}),yy=p.createContext(fy);(function(t){hy(s,t);function s(a,r){var n=t.call(this,r??a)||this;return n.error=a,n.error_description=r,Object.setPrototypeOf(n,s.prototype),n}return s})(Error);var by=function(t){return t===void 0&&(t=yy),p.useContext(t)};const rl="idToken",nl="userData",vy=()=>!0;class at{static setAccessToken(s){}static getAccessToken(){return null}static setRefreshToken(s){}static getRefreshToken(){return null}static setIdToken(s){sessionStorage.setItem(rl,s)}static getIdToken(){return sessionStorage.getItem(rl)}static setUserData(s){localStorage.setItem(nl,JSON.stringify(s))}static getUserData(){const s=localStorage.getItem(nl);if(!s)return null;try{return JSON.parse(s)}catch{return null}}static clearAll(){try{sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true")}catch(s){console.warn("Could not set logout flags:",s)}try{localStorage.removeItem(nl),sessionStorage.removeItem(rl)}catch(s){console.warn("Error clearing user data:",s)}{try{sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true")}catch{}return}}static hasAccessToken(){return!!this.getUserData()}static hasRefreshToken(){return!!this.getUserData()}static isLocalhost(){return window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"||window.location.hostname===""}static isProduction(){return vy()}}function il(t,s=5){if(!t)return!0;try{const a=t.split(".");if(a.length!==3||!a[1])return!0;const n=JSON.parse(atob(a[1])).exp*1e3,i=Date.now(),l=s*60*1e3;return n-it,t=>Promise.reject(t));je.interceptors.response.use(t=>t,async t=>{var a,r;const s=t.config;if(t.code==="ERR_NETWORK"||t.code==="ECONNREFUSED"||(a=t.message)!=null&&a.includes("ERR_CONNECTION_REFUSED"),((r=t.response)==null?void 0:r.status)===401&&!s._retry){s._retry=!0;const n=!0;try{const i=at.getRefreshToken(),l=await fo.post(`${Rx}/auth/refresh`,n?{}:{refreshToken:i},{withCredentials:!0}),d=(l.data.data||l.data).accessToken;return je(s)}catch(i){return at.clearAll(),window.location.href="/",Promise.reject(i)}}return Promise.reject(t)});async function jy(t,s){var a,r;try{const n=await je.post("/auth/token-exchange",{code:t,redirectUri:s},{responseType:"json",headers:{"Content-Type":"application/json",Accept:"application/json"}});if(Array.isArray(n.data))throw console.error("❌ Response is an array (buffer issue):",{arrayLength:n.data.length,firstFew:n.data.slice(0,10),rawResponse:n}),new Error("Invalid response format: received array instead of JSON. Check Content-Type header.");const i=n.data,l=i.data||i;return l.user&&at.setUserData(l.user),l.idToken&&at.setIdToken(l.idToken),l.accessToken&&l.refreshToken&&(at.setAccessToken(l.accessToken),at.setRefreshToken(l.refreshToken)),l}catch(n){throw console.error("❌ Token exchange failed:",{message:n.message,response:(a=n.response)==null?void 0:a.data,status:(r=n.response)==null?void 0:r.status,code:t?`${t.substring(0,10)}...`:"MISSING",redirectUri:s}),n}}async function Ny(){var r;const t={},a=(await je.post("/auth/refresh",t)).data;if((r=a.data)!=null&&r.accessToken||a.accessToken,a.success!==!1)return"cookie-based-auth";throw new Error("Failed to refresh token")}async function dn(){const s=(await je.get("/auth/me")).data;return s.data||s}async function wy(){var t,s;try{await je.post("/auth/logout",{},{withCredentials:!0})}catch(a){console.error("📡 Logout API error:",a),console.error("📡 Error details:",{message:a.message,status:(t=a.response)==null?void 0:t.status,data:(s=a.response)==null?void 0:s.data})}}const Wl="https://ssodev.rebridge.co.in/realms/RE",Dx="REFLOW",Po=`${window.location.origin}/login/callback`;function Cy(){const t=new URLSearchParams(window.location.search),s=t.has("logout")||t.has("tanflow_logged_out");s&&(sessionStorage.removeItem("tanflow_logged_out"),sessionStorage.removeItem("__logout_in_progress__"),sessionStorage.removeItem("__force_logout__"),console.log("🚪 Cleared logout flags before initiating Tanflow login"));const a=Math.random().toString(36).substring(7);sessionStorage.setItem("auth_provider","tanflow"),sessionStorage.setItem("tanflow_auth_state",a);let r=`${Wl}/protocol/openid-connect/auth?client_id=${Dx}&response_type=code&scope=openid&redirect_uri=${encodeURIComponent(Po)}&state=${a}`;s&&(r+="&prompt=login",console.log("🚪 Adding prompt=login to force re-authentication after logout")),console.log("🚪 Initiating Tanflow login",{isAfterLogout:s,hasPrompt:s}),window.location.href=r}async function Ay(t,s){var r,n,i;const a="http://localhost:3000/api/v1";try{const l=await fo.post(`${a}/auth/tanflow/token-exchange`,{code:t,redirectUri:Po,state:s},{withCredentials:!0,headers:{"Content-Type":"application/json"}}),o=((r=l.data)==null?void 0:r.data)||l.data;return o.accessToken&&at.setAccessToken(o.accessToken),o.refreshToken&&at.setRefreshToken(o.refreshToken),o.idToken&&at.setIdToken(o.idToken),o.user&&at.setUserData(o.user),o}catch(l){throw console.error("❌ Tanflow token exchange failed:",{message:l.message,response:(n=l.response)==null?void 0:n.data,status:(i=l.response)==null?void 0:i.status}),l}}function Sy(t){if(!t){console.warn("🚪 No id_token available for Tanflow logout, redirecting to home");const n=`${window.location.origin}/?tanflow_logged_out=true&logout=${Date.now()}`;window.location.replace(n);return}const s=Po,a=new URL(`${Wl}/protocol/openid-connect/logout`);a.searchParams.set("client_id",Dx),a.searchParams.set("id_token_hint",t),a.searchParams.set("post_logout_redirect_uri",s);const r=a.toString();console.log("🚪 Tanflow logout initiated",{hasIdToken:!!t,idTokenPrefix:t?t.substring(0,20)+"...":"none",postLogoutRedirectUri:s,logoutUrlBase:`${Wl}/protocol/openid-connect/logout`,finalLogoutUrl:r.replace(t.substring(0,20),"***")}),sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true"),console.log("🚪 Redirecting to Tanflow logout endpoint..."),window.location.href=r}const Px=p.createContext(void 0);function Ty({children:t}){const[s,a]=p.useState(!1),[r,n]=p.useState(!0),[i,l]=p.useState(null),[o,d]=p.useState(null),[c,m]=p.useState(!1);p.useEffect(()=>{const v=sessionStorage.getItem("__logout_in_progress__"),C=sessionStorage.getItem("__force_logout__");if(v==="true"||C==="true"){sessionStorage.removeItem("__logout_in_progress__"),sessionStorage.removeItem("__force_logout__"),at.clearAll();try{localStorage.clear(),sessionStorage.clear()}catch(k){console.error("Error clearing storage:",k)}a(!1),l(null),n(!1),d(null);return}const w=new URLSearchParams(window.location.search);if(w.has("logout")||w.has("okta_logged_out")||w.has("tanflow_logged_out")){console.log("🚪 Logout parameter detected in URL, clearing all tokens"),at.clearAll(),sessionStorage.removeItem("auth_provider"),sessionStorage.removeItem("tanflow_auth_state"),sessionStorage.removeItem("__logout_in_progress__"),sessionStorage.removeItem("__force_logout__"),sessionStorage.removeItem("tanflow_logged_out"),localStorage.clear(),a(!1),l(null),n(!1);const k=new URLSearchParams;w.has("okta_logged_out")&&k.set("okta_logged_out","true"),w.has("tanflow_logged_out")&&k.set("tanflow_logged_out","true");const A=k.toString()?`/?${k.toString()}`:"/";window.history.replaceState({},document.title,A);return}window.location.pathname==="/login/callback"||window.location.pathname==="/login/tanflow/callback"||(at.getUserData(),c?n(!1):h())},[c]),p.useEffect(()=>{if(!s)return;const v=async()=>{try{await f()}catch(k){console.error("Silent refresh failed:",k)}},C=10*60*1e3,w=setInterval(v,C);return()=>clearInterval(w)},[s]);const u=p.useRef(!1);p.useEffect(()=>{if(u.current||window.location.pathname!=="/login/callback")return;(async()=>{const C=new URLSearchParams(window.location.search);if((C.has("logout")||C.has("tanflow_logged_out")||C.has("okta_logged_out"))&&!C.get("code")){console.log("🚪 Logout redirect detected in callback, redirecting to home");const M=new URLSearchParams;C.has("tanflow_logged_out")&&M.set("tanflow_logged_out","true"),C.has("okta_logged_out")&&M.set("okta_logged_out","true"),C.has("logout")&&M.set("logout",C.get("logout")||Date.now().toString());const D=M.toString()?`/?${M.toString()}`:"/?logout="+Date.now();window.location.replace(D);return}u.current=!0;const w=C.get("code"),k=C.get("error");if(window.history.replaceState({},document.title,"/login/callback"),sessionStorage.getItem("auth_provider")==="tanflow"){u.current=!1;return}if(k){d(new Error(`Authentication error: ${k}`)),n(!1),sessionStorage.removeItem("auth_provider");return}if(!w){n(!1),sessionStorage.removeItem("auth_provider");return}try{n(!0),a(!1),d(null);const M=`${window.location.origin}/login/callback`,D=await jy(w,M);l(D.user),a(!0),d(null),sessionStorage.removeItem("auth_provider"),window.history.replaceState({},document.title,"/")}catch(M){console.error("❌ Token exchange error in AuthContext:",M),d(M),a(!1),l(null),sessionStorage.removeItem("auth_provider"),u.current=!1}finally{n(!1)}})()},[]);const h=async()=>{var C;if(c){n(!1);return}const v=!0;try{if(n(!0),v){const A=at.getUserData();try{const M=await dn();l(M),at.setUserData(M),a(!0)}catch(M){if(((C=M==null?void 0:M.response)==null?void 0:C.status)===401)try{await f();const D=await dn();l(D),at.setUserData(D),a(!0)}catch{at.clearAll(),a(!1),l(null)}else M!=null&&M.isConnectionError?A?(l(A),a(!0)):(a(!1),l(null)):(at.clearAll(),a(!1),l(null))}return}const w=at.getAccessToken(),k=at.getUserData();if(!w){a(!1),l(null),n(!1);return}if(il(w))try{await f();const A=at.getAccessToken();if(A&&!il(A)){const M=at.getUserData();if(M)l(M),a(!0);else try{const D=await dn();l(D),at.setUserData(D),a(!0)}catch{at.clearAll(),a(!1),l(null)}}else at.clearAll(),a(!1),l(null)}catch{at.clearAll(),a(!1),l(null)}else if(k)l(k),a(!0);else try{const A=await dn();l(A),at.setUserData(A),a(!0)}catch{at.clearAll(),a(!1),l(null)}}catch(w){console.error("Error checking auth status:",w),d(w),at.clearAll(),a(!1),l(null)}finally{n(!1)}},x=async()=>{try{d(null);const v="https://royalenfield.okta.com",C="0oa18b98aari6I6eo2p8",w=`${window.location.origin}/login/callback`,k="code",A="openid profile email",M=Math.random().toString(36).substring(7);sessionStorage.setItem("auth_provider","okta");const D=new URLSearchParams(window.location.search),S=D.has("logout")||D.has("okta_logged_out")||D.has("tanflow_logged_out");let j=`${v}/oauth2/default/v1/authorize?client_id=${C}&redirect_uri=${encodeURIComponent(w)}&response_type=${k}&scope=${encodeURIComponent(A)}&state=${M}`;S&&(j+="&prompt=login"),window.location.href=j}catch(v){throw d(v),v}},g=async()=>{try{const v=at.getIdToken(),C=sessionStorage.getItem("auth_provider")||(v&&v.includes("tanflow")?"tanflow":null)||"okta";sessionStorage.setItem("__logout_in_progress__","true"),sessionStorage.setItem("__force_logout__","true"),m(!0),a(!1),l(null),d(null),n(!0);try{await wy(),console.log("🚪 Backend logout API called successfully")}catch(D){console.error("🚪 Logout API error:",D),console.warn("🚪 Backend logout failed - httpOnly cookies may not be cleared")}const w=sessionStorage.getItem("__logout_in_progress__"),k=sessionStorage.getItem("__force_logout__"),A=sessionStorage.getItem("auth_provider");if(at.clearAll(),w&&sessionStorage.setItem("__logout_in_progress__",w),k&&sessionStorage.setItem("__force_logout__",k),v&&at.setIdToken(v),A&&sessionStorage.setItem("auth_provider",A),await new Promise(D=>setTimeout(D,100)),C==="tanflow"&&v){console.log("🚪 Initiating Tanflow logout...");try{Sy(v);return}catch(D){console.error("🚪 Tanflow logout error:",D)}}console.log("🚪 Using OKTA logout flow or fallback"),sessionStorage.removeItem("auth_provider"),v&&at.clearAll();const M=`${window.location.origin}/?okta_logged_out=true&logout=${Date.now()}`;window.location.replace(M)}catch(v){console.error("🚪 Logout error:",v);try{localStorage.clear(),sessionStorage.clear(),sessionStorage.setItem("__logout_in_progress__","true");const C=`${window.location.origin}/?okta_logged_out=true&logout=${Date.now()}`;window.location.replace(C)}catch{window.location.replace("/?logout="+Date.now())}}},y=async()=>{{if(s)return"cookie-based-auth";try{return await f(),s?"cookie-based-auth":null}catch{return null}}const v=at.getAccessToken();if(v&&!il(v))return v;try{return await f(),at.getAccessToken()}catch{return null}},f=async()=>{try{const C=await Ny();return}catch(C){throw at.clearAll(),a(!1),l(null),C}},b={isAuthenticated:s,isLoading:r,user:i,error:o,login:x,logout:g,getAccessTokenSilently:y,refreshTokenSilently:f};return e.jsx(Px.Provider,{value:b,children:t})}function ky({children:t}){return e.jsx(Ty,{children:t})}function Qt(){const t=p.useContext(Px);if(t===void 0)throw new Error("useAuth must be used within an AuthProvider");return t}function mr(t){return(t==null?void 0:t.role)==="ADMIN"}function an(t){return(t==null?void 0:t.role)==="MANAGEMENT"}function Ui(t){return(t==null?void 0:t.role)==="MANAGEMENT"||(t==null?void 0:t.role)==="ADMIN"}const Xd=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,Qd=tx,Ix=(t,s)=>a=>{var r;if((s==null?void 0:s.variants)==null)return Qd(t,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:n,defaultVariants:i}=s,l=Object.keys(n).map(c=>{const m=a==null?void 0:a[c],u=i==null?void 0:i[c];if(m===null)return null;const h=Xd(m)||Xd(u);return n[c][h]}),o=a&&Object.entries(a).reduce((c,m)=>{let[u,h]=m;return h===void 0||(c[u]=h),c},{}),d=s==null||(r=s.compoundVariants)===null||r===void 0?void 0:r.reduce((c,m)=>{let{class:u,className:h,...x}=m;return Object.entries(x).every(g=>{let[y,f]=g;return Array.isArray(f)?f.includes({...i,...o}[y]):{...i,...o}[y]===f})?[...c,u,h]:c},[]);return Qd(t,l,d,a==null?void 0:a.class,a==null?void 0:a.className)},Io="-",Ry=t=>{const s=Py(t),{conflictingClassGroups:a,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:l=>{const o=l.split(Io);return o[0]===""&&o.length!==1&&o.shift(),Ex(o,s)||Dy(l)},getConflictingClassGroupIds:(l,o)=>{const d=a[l]||[];return o&&r[l]?[...d,...r[l]]:d}}},Ex=(t,s)=>{var l;if(t.length===0)return s.classGroupId;const a=t[0],r=s.nextPart.get(a),n=r?Ex(t.slice(1),r):void 0;if(n)return n;if(s.validators.length===0)return;const i=t.join(Io);return(l=s.validators.find(({validator:o})=>o(i)))==null?void 0:l.classGroupId},Jd=/^\[(.+)\]$/,Dy=t=>{if(Jd.test(t)){const s=Jd.exec(t)[1],a=s==null?void 0:s.substring(0,s.indexOf(":"));if(a)return"arbitrary.."+a}},Py=t=>{const{theme:s,prefix:a}=t,r={nextPart:new Map,validators:[]};return Ey(Object.entries(t.classGroups),a).forEach(([i,l])=>{Gl(l,r,i,s)}),r},Gl=(t,s,a,r)=>{t.forEach(n=>{if(typeof n=="string"){const i=n===""?s:qd(s,n);i.classGroupId=a;return}if(typeof n=="function"){if(Iy(n)){Gl(n(r),s,a,r);return}s.validators.push({validator:n,classGroupId:a});return}Object.entries(n).forEach(([i,l])=>{Gl(l,qd(s,i),a,r)})})},qd=(t,s)=>{let a=t;return s.split(Io).forEach(r=>{a.nextPart.has(r)||a.nextPart.set(r,{nextPart:new Map,validators:[]}),a=a.nextPart.get(r)}),a},Iy=t=>t.isThemeGetter,Ey=(t,s)=>s?t.map(([a,r])=>{const n=r.map(i=>typeof i=="string"?s+i:typeof i=="object"?Object.fromEntries(Object.entries(i).map(([l,o])=>[s+l,o])):i);return[a,n]}):t,Fy=t=>{if(t<1)return{get:()=>{},set:()=>{}};let s=0,a=new Map,r=new Map;const n=(i,l)=>{a.set(i,l),s++,s>t&&(s=0,r=a,a=new Map)};return{get(i){let l=a.get(i);if(l!==void 0)return l;if((l=r.get(i))!==void 0)return n(i,l),l},set(i,l){a.has(i)?a.set(i,l):n(i,l)}}},Fx="!",My=t=>{const{separator:s,experimentalParseClassName:a}=t,r=s.length===1,n=s[0],i=s.length,l=o=>{const d=[];let c=0,m=0,u;for(let f=0;fm?u-m:void 0;return{modifiers:d,hasImportantModifier:x,baseClassName:g,maybePostfixModifierPosition:y}};return a?o=>a({className:o,parseClassName:l}):l},_y=t=>{if(t.length<=1)return t;const s=[];let a=[];return t.forEach(r=>{r[0]==="["?(s.push(...a.sort(),r),a=[]):a.push(r)}),s.push(...a.sort()),s},Ly=t=>({cache:Fy(t.cacheSize),parseClassName:My(t),...Ry(t)}),Oy=/\s+/,$y=(t,s)=>{const{parseClassName:a,getClassGroupId:r,getConflictingClassGroupIds:n}=s,i=[],l=t.trim().split(Oy);let o="";for(let d=l.length-1;d>=0;d-=1){const c=l[d],{modifiers:m,hasImportantModifier:u,baseClassName:h,maybePostfixModifierPosition:x}=a(c);let g=!!x,y=r(g?h.substring(0,x):h);if(!y){if(!g){o=c+(o.length>0?" "+o:o);continue}if(y=r(h),!y){o=c+(o.length>0?" "+o:o);continue}g=!1}const f=_y(m).join(":"),b=u?f+Fx:f,v=b+y;if(i.includes(v))continue;i.push(v);const C=n(y,g);for(let w=0;w0?" "+o:o)}return o};function Uy(){let t=0,s,a,r="";for(;t{if(typeof t=="string")return t;let s,a="";for(let r=0;ru(m),t());return a=Ly(c),r=a.cache.get,n=a.cache.set,i=o,o(d)}function o(d){const c=r(d);if(c)return c;const m=$y(d,a);return n(d,m),m}return function(){return i(Uy.apply(null,arguments))}}const _t=t=>{const s=a=>a[t]||[];return s.isThemeGetter=!0,s},_x=/^\[(?:([a-z-]+):)?(.+)\]$/i,Vy=/^\d+\/\d+$/,zy=new Set(["px","full","screen"]),Hy=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Wy=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Gy=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Ky=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Yy=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ka=t=>Or(t)||zy.has(t)||Vy.test(t),Va=t=>Yr(t,"length",sb),Or=t=>!!t&&!Number.isNaN(Number(t)),ll=t=>Yr(t,"number",Or),rn=t=>!!t&&Number.isInteger(Number(t)),Zy=t=>t.endsWith("%")&&Or(t.slice(0,-1)),lt=t=>_x.test(t),za=t=>Hy.test(t),Xy=new Set(["length","size","percentage"]),Qy=t=>Yr(t,Xy,Lx),Jy=t=>Yr(t,"position",Lx),qy=new Set(["image","url"]),eb=t=>Yr(t,qy,rb),tb=t=>Yr(t,"",ab),nn=()=>!0,Yr=(t,s,a)=>{const r=_x.exec(t);return r?r[1]?typeof s=="string"?r[1]===s:s.has(r[1]):a(r[2]):!1},sb=t=>Wy.test(t)&&!Gy.test(t),Lx=()=>!1,ab=t=>Ky.test(t),rb=t=>Yy.test(t),nb=()=>{const t=_t("colors"),s=_t("spacing"),a=_t("blur"),r=_t("brightness"),n=_t("borderColor"),i=_t("borderRadius"),l=_t("borderSpacing"),o=_t("borderWidth"),d=_t("contrast"),c=_t("grayscale"),m=_t("hueRotate"),u=_t("invert"),h=_t("gap"),x=_t("gradientColorStops"),g=_t("gradientColorStopPositions"),y=_t("inset"),f=_t("margin"),b=_t("opacity"),v=_t("padding"),C=_t("saturate"),w=_t("scale"),k=_t("sepia"),A=_t("skew"),M=_t("space"),D=_t("translate"),S=()=>["auto","contain","none"],j=()=>["auto","hidden","clip","visible","scroll"],P=()=>["auto",lt,s],R=()=>[lt,s],O=()=>["",ka,Va],F=()=>["auto",Or,lt],_=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],B=()=>["solid","dashed","dotted","double","none"],T=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],N=()=>["start","end","center","between","around","evenly","stretch"],U=()=>["","0",lt],$=()=>["auto","avoid","all","avoid-page","page","left","right","column"],L=()=>[Or,lt];return{cacheSize:500,separator:":",theme:{colors:[nn],spacing:[ka,Va],blur:["none","",za,lt],brightness:L(),borderColor:[t],borderRadius:["none","","full",za,lt],borderSpacing:R(),borderWidth:O(),contrast:L(),grayscale:U(),hueRotate:L(),invert:U(),gap:R(),gradientColorStops:[t],gradientColorStopPositions:[Zy,Va],inset:P(),margin:P(),opacity:L(),padding:R(),saturate:L(),scale:L(),sepia:U(),skew:L(),space:R(),translate:R()},classGroups:{aspect:[{aspect:["auto","square","video",lt]}],container:["container"],columns:[{columns:[za]}],"break-after":[{"break-after":$()}],"break-before":[{"break-before":$()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[..._(),lt]}],overflow:[{overflow:j()}],"overflow-x":[{"overflow-x":j()}],"overflow-y":[{"overflow-y":j()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[y]}],"inset-x":[{"inset-x":[y]}],"inset-y":[{"inset-y":[y]}],start:[{start:[y]}],end:[{end:[y]}],top:[{top:[y]}],right:[{right:[y]}],bottom:[{bottom:[y]}],left:[{left:[y]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",rn,lt]}],basis:[{basis:P()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",lt]}],grow:[{grow:U()}],shrink:[{shrink:U()}],order:[{order:["first","last","none",rn,lt]}],"grid-cols":[{"grid-cols":[nn]}],"col-start-end":[{col:["auto",{span:["full",rn,lt]},lt]}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":[nn]}],"row-start-end":[{row:["auto",{span:[rn,lt]},lt]}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",lt]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",lt]}],gap:[{gap:[h]}],"gap-x":[{"gap-x":[h]}],"gap-y":[{"gap-y":[h]}],"justify-content":[{justify:["normal",...N()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...N(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...N(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[f]}],mx:[{mx:[f]}],my:[{my:[f]}],ms:[{ms:[f]}],me:[{me:[f]}],mt:[{mt:[f]}],mr:[{mr:[f]}],mb:[{mb:[f]}],ml:[{ml:[f]}],"space-x":[{"space-x":[M]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[M]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",lt,s]}],"min-w":[{"min-w":[lt,s,"min","max","fit"]}],"max-w":[{"max-w":[lt,s,"none","full","min","max","fit","prose",{screen:[za]},za]}],h:[{h:[lt,s,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[lt,s,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[lt,s,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[lt,s,"auto","min","max","fit"]}],"font-size":[{text:["base",za,Va]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ll]}],"font-family":[{font:[nn]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",lt]}],"line-clamp":[{"line-clamp":["none",Or,ll]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ka,lt]}],"list-image":[{"list-image":["none",lt]}],"list-style-type":[{list:["none","disc","decimal",lt]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[t]}],"placeholder-opacity":[{"placeholder-opacity":[b]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[t]}],"text-opacity":[{"text-opacity":[b]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...B(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ka,Va]}],"underline-offset":[{"underline-offset":["auto",ka,lt]}],"text-decoration-color":[{decoration:[t]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",lt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",lt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[b]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[..._(),Jy]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Qy]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},eb]}],"bg-color":[{bg:[t]}],"gradient-from-pos":[{from:[g]}],"gradient-via-pos":[{via:[g]}],"gradient-to-pos":[{to:[g]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[i]}],"rounded-s":[{"rounded-s":[i]}],"rounded-e":[{"rounded-e":[i]}],"rounded-t":[{"rounded-t":[i]}],"rounded-r":[{"rounded-r":[i]}],"rounded-b":[{"rounded-b":[i]}],"rounded-l":[{"rounded-l":[i]}],"rounded-ss":[{"rounded-ss":[i]}],"rounded-se":[{"rounded-se":[i]}],"rounded-ee":[{"rounded-ee":[i]}],"rounded-es":[{"rounded-es":[i]}],"rounded-tl":[{"rounded-tl":[i]}],"rounded-tr":[{"rounded-tr":[i]}],"rounded-br":[{"rounded-br":[i]}],"rounded-bl":[{"rounded-bl":[i]}],"border-w":[{border:[o]}],"border-w-x":[{"border-x":[o]}],"border-w-y":[{"border-y":[o]}],"border-w-s":[{"border-s":[o]}],"border-w-e":[{"border-e":[o]}],"border-w-t":[{"border-t":[o]}],"border-w-r":[{"border-r":[o]}],"border-w-b":[{"border-b":[o]}],"border-w-l":[{"border-l":[o]}],"border-opacity":[{"border-opacity":[b]}],"border-style":[{border:[...B(),"hidden"]}],"divide-x":[{"divide-x":[o]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[o]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[b]}],"divide-style":[{divide:B()}],"border-color":[{border:[n]}],"border-color-x":[{"border-x":[n]}],"border-color-y":[{"border-y":[n]}],"border-color-s":[{"border-s":[n]}],"border-color-e":[{"border-e":[n]}],"border-color-t":[{"border-t":[n]}],"border-color-r":[{"border-r":[n]}],"border-color-b":[{"border-b":[n]}],"border-color-l":[{"border-l":[n]}],"divide-color":[{divide:[n]}],"outline-style":[{outline:["",...B()]}],"outline-offset":[{"outline-offset":[ka,lt]}],"outline-w":[{outline:[ka,Va]}],"outline-color":[{outline:[t]}],"ring-w":[{ring:O()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[t]}],"ring-opacity":[{"ring-opacity":[b]}],"ring-offset-w":[{"ring-offset":[ka,Va]}],"ring-offset-color":[{"ring-offset":[t]}],shadow:[{shadow:["","inner","none",za,tb]}],"shadow-color":[{shadow:[nn]}],opacity:[{opacity:[b]}],"mix-blend":[{"mix-blend":[...T(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":T()}],filter:[{filter:["","none"]}],blur:[{blur:[a]}],brightness:[{brightness:[r]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",za,lt]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[m]}],invert:[{invert:[u]}],saturate:[{saturate:[C]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[a]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m]}],"backdrop-invert":[{"backdrop-invert":[u]}],"backdrop-opacity":[{"backdrop-opacity":[b]}],"backdrop-saturate":[{"backdrop-saturate":[C]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",lt]}],duration:[{duration:L()}],ease:[{ease:["linear","in","out","in-out",lt]}],delay:[{delay:L()}],animate:[{animate:["none","spin","ping","pulse","bounce",lt]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[w]}],"scale-x":[{"scale-x":[w]}],"scale-y":[{"scale-y":[w]}],rotate:[{rotate:[rn,lt]}],"translate-x":[{"translate-x":[D]}],"translate-y":[{"translate-y":[D]}],"skew-x":[{"skew-x":[A]}],"skew-y":[{"skew-y":[A]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",lt]}],accent:[{accent:["auto",t]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",lt]}],"caret-color":[{caret:[t]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",lt]}],fill:[{fill:[t,"none"]}],"stroke-w":[{stroke:[ka,Va,ll]}],stroke:[{stroke:[t,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},ib=By(nb);function De(...t){return ib(tx(t))}const Nn=Ix("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9 rounded-md"}},defaultVariants:{variant:"default",size:"default"}}),I=p.forwardRef(({className:t,variant:s,size:a,asChild:r=!1,...n},i)=>{const l=r?Wu:"button";return e.jsx(l,{"data-slot":"button",className:De(Nn({variant:s,size:a,className:t})),ref:i,...n})});I.displayName="Button";function q({className:t,...s}){return e.jsx("div",{"data-slot":"card",className:De("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border",t),...s})}function he({className:t,...s}){return e.jsx("div",{"data-slot":"card-header",className:De("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...s})}function pe({className:t,...s}){return e.jsx("h4",{"data-slot":"card-title",className:De("leading-none",t),...s})}function ke({className:t,...s}){return e.jsx("p",{"data-slot":"card-description",className:De("text-muted-foreground",t),...s})}function ee({className:t,...s}){return e.jsx("div",{"data-slot":"card-content",className:De("px-6 [&:last-child]:pb-6",t),...s})}const Bi="/assets/Re_Logo-By51taPS.png",em="/assets/landing_page_image-ClTD-4qZ.jpg";function lb(){const{login:t,isLoading:s,error:a}=Qt(),[r,n]=p.useState(!1),[i,l]=p.useState(!1);p.useEffect(()=>{const c=new Image;c.src=em,c.onload=()=>{l(!0)},c.complete&&l(!0)},[]);const o=async()=>{localStorage.clear(),sessionStorage.clear();try{await t()}catch(c){console.error("========================================"),console.error("OKTA LOGIN ERROR"),console.error("Error details:",c),console.error("Error message:",c==null?void 0:c.message),console.error("Error stack:",c==null?void 0:c.stack),console.error("========================================")}},d=()=>{localStorage.clear(),sessionStorage.clear(),n(!0);try{Cy()}catch(c){console.error("========================================"),console.error("TANFLOW LOGIN ERROR"),console.error("Error details:",c),n(!1)}};return a&&console.error("Auth Error in Auth Component:",{message:a.message,error:a}),e.jsxs("div",{className:"min-h-screen flex items-center justify-center p-4 relative",style:{backgroundImage:i?`url(${em})`:"none",backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",transition:"background-image 0.3s ease-in-out"},children:[!i&&e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-slate-900 to-slate-800"}),e.jsx("div",{className:"absolute inset-0 bg-black/40"}),e.jsxs(q,{className:"w-full max-w-md shadow-xl relative z-10 bg-black backdrop-blur-sm border-gray-800",children:[e.jsx(he,{className:"space-y-1 text-center pb-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center mb-4",children:[e.jsx("img",{src:Bi,alt:"Royal Enfield Logo",className:"h-10 w-auto max-w-[168px] object-contain mb-2"}),e.jsx("p",{className:"text-xs text-gray-300 text-center truncate",children:"Approval Portal"})]})}),e.jsxs(ee,{className:"space-y-4",children:[a&&e.jsxs("div",{className:"bg-red-900/50 border border-red-700 text-red-200 px-4 py-3 rounded-lg",children:[e.jsx("p",{className:"text-sm font-medium",children:"Authentication Error"}),e.jsx("p",{className:"text-sm",children:a.message})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(I,{onClick:o,disabled:s||r,className:"w-full h-12 text-base font-semibold bg-re-red hover:bg-re-red/90 text-white",size:"lg",children:s?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent"}),"Logging in..."]}):e.jsxs(e.Fragment,{children:[e.jsx(q0,{className:"mr-2 h-5 w-5"}),"RE Employee Login"]})}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 flex items-center",children:e.jsx("span",{className:"w-full border-t border-gray-700"})}),e.jsx("div",{className:"relative flex justify-center text-xs uppercase",children:e.jsx("span",{className:"bg-gray-900 px-2 text-gray-400",children:"Or"})})]}),e.jsx(I,{onClick:d,disabled:s||r,className:"w-full h-12 text-base font-semibold bg-indigo-600 hover:bg-indigo-700 text-white",size:"lg",children:r?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent"}),"Redirecting..."]}):e.jsxs(e.Fragment,{children:[e.jsx(rs,{className:"mr-2 h-5 w-5"}),"Dealer Login"]})})]}),e.jsxs("div",{className:"text-center text-sm text-gray-400 mt-4",children:[e.jsx("p",{children:"Secure Single Sign-On"}),e.jsx("p",{className:"text-xs mt-1 text-gray-500",children:"Choose your authentication provider"})]})]})]})]})}function Ox(){const{isAuthenticated:t,isLoading:s,error:a,user:r}=Qt(),[n,i]=p.useState("exchanging");p.useEffect(()=>{if(a){i("error");return}if(s){const d=new URLSearchParams(window.location.search).get("code");i(d&&!r?"exchanging":r&&!t?"fetching":"exchanging")}else r&&t&&i("complete")},[t,s,a,r]);const l=()=>{switch(n){case"exchanging":return"Exchanging authorization code...";case"fetching":return"Fetching your profile...";case"complete":return"Authentication successful!";case"error":return"Authentication failed";default:return"Completing authentication..."}};return e.jsxs("div",{className:"min-h-screen flex items-center justify-center bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900",children:[e.jsx("div",{className:"absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAgMCA2MCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxnIGZpbGw9IiMxZTIxMmQiIGZpbGwtb3BhY2l0eT0iMC4wNSI+PGNpcmNsZSBjeD0iMzAiIGN5PSIzMCIgcj0iMzAiLz48L2c+PC9nPjwvc3ZnPg==')] opacity-20"}),e.jsxs("div",{className:"relative z-10 text-center px-4 max-w-md w-full",children:[e.jsx("div",{className:"mb-8",children:e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx("img",{src:Bi,alt:"Royal Enfield Logo",className:"h-10 w-auto max-w-[168px] object-contain mb-2"}),e.jsx("p",{className:"text-xs text-gray-400 text-center truncate",children:"Approval Portal"})]})}),e.jsxs("div",{className:"bg-white/10 backdrop-blur-xl rounded-2xl p-8 shadow-2xl border border-white/20",children:[e.jsx("div",{className:"mb-6 flex justify-center",children:n==="error"?e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 animate-ping opacity-75",children:e.jsx(Ge,{className:"w-16 h-16 text-red-500"})}),e.jsx(Ge,{className:"w-16 h-16 text-red-500 relative"})]}):n==="complete"?e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 animate-ping opacity-75",children:e.jsx(Rs,{className:"w-16 h-16 text-green-500"})}),e.jsx(Rs,{className:"w-16 h-16 text-green-500 relative"})]}):e.jsxs("div",{className:"relative",children:[e.jsx(Ze,{className:"w-16 h-16 animate-spin text-re-red"}),e.jsx("div",{className:"absolute inset-0 border-4 rounded-full border-re-red/20"}),e.jsx("div",{className:"absolute inset-0 border-4 border-transparent border-t-re-red rounded-full animate-spin"})]})}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"text-xl font-semibold text-white mb-2",children:n==="complete"?"Welcome Back!":n==="error"?"Authentication Error":"Authenticating"}),e.jsx("p",{className:"text-slate-300 text-sm",children:l()})]}),n!=="error"&&e.jsxs("div",{className:"space-y-3 mb-6",children:[e.jsxs("div",{className:`flex items-center gap-3 text-sm transition-all duration-500 ${n==="exchanging"?"text-white":"text-slate-400"}`,children:[e.jsx("div",{className:`w-2 h-2 rounded-full transition-all duration-500 ${n==="exchanging"?"bg-re-red animate-pulse":"bg-slate-600"}`}),e.jsx("span",{children:"Validating credentials"})]}),e.jsxs("div",{className:`flex items-center gap-3 text-sm transition-all duration-500 ${n==="fetching"?"text-white":"text-slate-400"}`,children:[e.jsx("div",{className:`w-2 h-2 rounded-full transition-all duration-500 ${n==="fetching"?"bg-re-red animate-pulse":"bg-slate-600"}`}),e.jsx("span",{children:"Loading your profile"})]}),n==="complete"&&e.jsxs("div",{className:"flex items-center gap-3 text-sm transition-all duration-500 text-white",children:[e.jsx("div",{className:"w-2 h-2 rounded-full transition-all duration-500 bg-green-500"}),e.jsx("span",{children:"Setting up your session"})]})]}),n==="error"&&a&&e.jsxs("div",{className:"mt-6 p-4 bg-red-500/10 border border-red-500/20 rounded-lg",children:[e.jsx("p",{className:"text-red-400 text-sm",children:a.message||"An error occurred during authentication"}),e.jsx("button",{onClick:()=>{window.location.href="/"},className:"mt-4 text-sm text-red-400 hover:text-red-300 underline",children:"Return to login"})]}),n!=="error"&&n!=="complete"&&e.jsxs("div",{className:"mt-6",children:[e.jsx("div",{className:"h-1.5 bg-slate-700/50 rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-re-red rounded-full animate-pulse",style:{animation:"progress 2s ease-in-out infinite"}})}),e.jsx("style",{children:` @keyframes progress { 0%, 100% { width: 20%; } 50% { width: 80%; } @@ -9,7 +9,7 @@ var Fg=Object.defineProperty;var Mg=(t,s,a)=>s in t?Fg(t,s,{enumerable:!0,config 0%, 100% { width: 20%; } 50% { width: 80%; } } - `})]})]}),e.jsx("p",{className:"mt-6 text-slate-500 text-xs",children:n==="complete"?"Loading dashboard...":"Please wait while we secure your session"})]}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute top-1/4 left-1/4 w-96 h-96 bg-re-red/5 rounded-full blur-3xl animate-pulse"}),e.jsx("div",{className:"absolute bottom-1/4 right-1/4 w-96 h-96 bg-re-red/5 rounded-full blur-3xl animate-pulse delay-1000"})]})]})}const cb=Ix("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function oe({className:t,variant:s,asChild:a=!1,...r}){const n=a?Wu:"span";return e.jsx(n,{"data-slot":"badge",className:De(cb({variant:s}),t),...r})}function db({isOpen:t,onClose:s}){const{user:a,isAuthenticated:r,isLoading:n,error:i}=by();return p.useEffect(()=>{},[a,r,n,i]),t?e.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4",children:e.jsxs(q,{className:"w-full max-w-2xl max-h-[90vh] overflow-auto",children:[e.jsx(he,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(pe,{children:"Authentication Debug Information"}),e.jsx(I,{variant:"ghost",size:"icon",onClick:s,children:e.jsx(ft,{className:"h-4 w-4"})})]})}),e.jsxs(ee,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-semibold",children:"Status:"}),e.jsx(oe,{variant:r?"default":"destructive",children:n?"Loading...":r?"Authenticated":"Not Authenticated"})]}),i&&e.jsxs("div",{className:"bg-red-50 border border-red-200 rounded p-3",children:[e.jsx("p",{className:"text-sm text-red-700 font-semibold",children:"Error:"}),e.jsx("p",{className:"text-sm text-red-600",children:i.message})]}),a&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"User Information:"}),e.jsx("pre",{className:"bg-gray-50 p-3 rounded text-xs overflow-auto",children:JSON.stringify(a,null,2)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"All Auth Claims:"}),e.jsx("pre",{className:"bg-gray-50 p-3 rounded text-xs overflow-auto",children:JSON.stringify({isAuthenticated:r,isLoading:n,error:(i==null?void 0:i.message)||null,hasUser:!!a},null,2)})]})]})]})}):null}const es=p.forwardRef(({className:t,...s},a)=>e.jsx(Gu,{ref:a,"data-slot":"avatar",className:De("relative flex size-10 shrink-0 overflow-hidden rounded-full",t),...s}));es.displayName=Gu.displayName;const Vi=p.forwardRef(({className:t,...s},a)=>e.jsx(Ku,{ref:a,"data-slot":"avatar-image",className:De("aspect-square size-full",t),...s}));Vi.displayName=Ku.displayName;const ts=p.forwardRef(({className:t,...s},a)=>e.jsx(Yu,{ref:a,"data-slot":"avatar-fallback",className:De("bg-muted flex size-full items-center justify-center rounded-full",t),...s}));ts.displayName=Yu.displayName;function tm({...t}){return e.jsx(_g,{"data-slot":"dropdown-menu",...t})}function sm({...t}){return e.jsx(Lg,{"data-slot":"dropdown-menu-trigger",...t})}function am({className:t,sideOffset:s=4,...a}){return e.jsx(Og,{children:e.jsx($g,{"data-slot":"dropdown-menu-content",sideOffset:s,className:De("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",t),...a})})}function ol({className:t,inset:s,variant:a="default",...r}){return e.jsx(Ug,{"data-slot":"dropdown-menu-item","data-inset":s,"data-variant":a,className:De("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r})}function mb({...t}){return e.jsx(Vg,{"data-slot":"alert-dialog",...t})}function ub({...t}){return e.jsx(Bg,{"data-slot":"alert-dialog-portal",...t})}const $x=p.forwardRef(({className:t,...s},a)=>e.jsx(Zu,{"data-slot":"alert-dialog-overlay",className:De("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...s,ref:a}));$x.displayName=Zu.displayName;const Ux=p.forwardRef(({className:t,...s},a)=>e.jsxs(ub,{children:[e.jsx($x,{}),e.jsx(Xu,{"data-slot":"alert-dialog-content",ref:a,className:De("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...s})]}));Ux.displayName=Xu.displayName;function xb({className:t,...s}){return e.jsx("div",{"data-slot":"alert-dialog-header",className:De("flex flex-col gap-2 text-center sm:text-left",t),...s})}function hb({className:t,...s}){return e.jsx("div",{"data-slot":"alert-dialog-footer",className:De("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...s})}function pb({className:t,...s}){return e.jsx(zg,{"data-slot":"alert-dialog-title",className:De("text-lg font-semibold",t),...s})}function gb({className:t,...s}){return e.jsx(Hg,{"data-slot":"alert-dialog-description",className:De("text-muted-foreground text-sm",t),...s})}function fb({className:t,...s}){return e.jsx(Gg,{className:De(Nn(),t),...s})}function yb({className:t,...s}){return e.jsx(Wg,{className:De(Nn({variant:"outline"}),t),...s})}const Wa={async list(t){return(await je.get("/notifications",{params:t})).data},async getUnreadCount(){return(await je.get("/notifications/unread-count")).data},async markAsRead(t){return(await je.patch(`/notifications/${t}/read`)).data},async markAllAsRead(){return(await je.post("/notifications/mark-all-read")).data},async delete(t){return(await je.delete(`/notifications/${t}`)).data}},bb=async()=>(await je.get("/notifications/subscriptions")).data.data.subscriptions;let or=null;function vb(){return"https://re-workflow-nt-dev.siplsolutions.com"}function Br(t){const s=vb();return or||(or=Of(s,{withCredentials:!0,transports:["websocket","polling"],path:"/socket.io",reconnection:!0,reconnectionDelay:1e3,reconnectionAttempts:5}),or.on("connect",()=>{}),or.on("connect_error",a=>{console.error("[Socket] Connection error:",a.message)}),or.on("disconnect",a=>{}),or)}function Kl(t,s,a){a?t.emit("join:request",{requestId:s,userId:a}):t.emit("join:request",s)}function Bx(t,s){t.emit("leave:request",s)}function Vx(t,s){t.emit("join:user",{userId:s})}function ls({children:t,currentPage:s="dashboard",onNavigate:a,onNewRequest:r,onLogout:n}){const[i,l]=p.useState(!1),[o,d]=p.useState(!1),[c,m]=p.useState([]),[u,h]=p.useState(0),[x,g]=p.useState(!1),{user:y}=Qt(),f=p.useMemo(()=>{try{const A=at.getUserData();return(A==null?void 0:A.jobTitle)==="Dealer"}catch(A){return console.error("[PageLayout] Error checking dealer status:",A),!1}},[]),b=()=>{var A,M;try{if(y!=null&&y.displayName&&typeof y.displayName=="string"){const D=y.displayName.split(" ").filter(Boolean);return D.length>=2?`${((A=D[0])==null?void 0:A[0])||""}${((M=D[D.length-1])==null?void 0:M[0])||""}`.toUpperCase():y.displayName.substring(0,2).toUpperCase()}return y!=null&&y.email&&typeof y.email=="string"?y.email.substring(0,2).toUpperCase():"U"}catch(D){return console.error("[PageLayout] Error getting user initials:",D),"U"}},v=p.useMemo(()=>{const A=[{id:"dashboard",label:"Dashboard",icon:ef},{id:"requests",label:"All Requests",icon:dx,adminOnly:!1}];return f||A.push({id:"my-requests",label:"My Requests",icon:Lt}),A.push({id:"open-requests",label:"Open Requests",icon:Pe},{id:"closed-requests",label:"Closed Requests",icon:Ie},{id:"shared-summaries",label:"Shared Summary",icon:Wr}),A},[f]),C=()=>{l(!i)},w=async A=>{var M;try{if(A.isRead||(await Wa.markAsRead(A.notificationId),m(D=>D.map(S=>S.notificationId===A.notificationId?{...S,isRead:!0}:S)),h(D=>Math.max(0,D-1))),A.actionUrl&&a){const D=(M=A.metadata)==null?void 0:M.requestNumber;if(D){let S=`request/${D}`;(A.notificationType==="mention"||A.notificationType==="comment"||A.notificationType==="worknote")&&(S+="?tab=worknotes"),a(S)}}g(!1)}catch(D){console.error("[PageLayout] Error handling notification click:",D)}},k=async()=>{try{await Wa.markAllAsRead(),m(A=>A.map(M=>({...M,isRead:!0}))),h(0)}catch(A){console.error("[PageLayout] Error marking all as read:",A)}};return p.useEffect(()=>{const A=y==null?void 0:y.userId;if(!A)return;let M=!0;(async()=>{var j,P;try{const R=await Wa.list({page:1,limit:4,unreadOnly:!1});if(!M)return;const O=((j=R.data)==null?void 0:j.notifications)||[];m(O),h(((P=R.data)==null?void 0:P.unreadCount)||0)}catch(R){console.error("[PageLayout] Failed to fetch notifications:",R)}})();const S=Br();if(S){Vx(S,A);const j=P=>{M&&(m(R=>[P.notification,...R].slice(0,4)),h(R=>R+1))};return S.on("notification:new",j),()=>{M=!1,S.off("notification:new",j)}}return()=>{M=!1}},[y]),p.useEffect(()=>{const A=()=>{window.innerWidth>=768?l(!0):l(!1)};return A(),window.addEventListener("resize",A),()=>window.removeEventListener("resize",A)},[]),e.jsxs("div",{className:"min-h-screen flex w-full bg-background",children:[i&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-40 md:hidden",onClick:()=>l(!1)}),e.jsx("aside",{className:` + `})]})]}),e.jsx("p",{className:"mt-6 text-slate-500 text-xs",children:n==="complete"?"Loading dashboard...":"Please wait while we secure your session"})]}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute top-1/4 left-1/4 w-96 h-96 bg-re-red/5 rounded-full blur-3xl animate-pulse"}),e.jsx("div",{className:"absolute bottom-1/4 right-1/4 w-96 h-96 bg-re-red/5 rounded-full blur-3xl animate-pulse delay-1000"})]})]})}const cb=Ix("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function oe({className:t,variant:s,asChild:a=!1,...r}){const n=a?Wu:"span";return e.jsx(n,{"data-slot":"badge",className:De(cb({variant:s}),t),...r})}function db({isOpen:t,onClose:s}){const{user:a,isAuthenticated:r,isLoading:n,error:i}=by();return p.useEffect(()=>{},[a,r,n,i]),t?e.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4",children:e.jsxs(q,{className:"w-full max-w-2xl max-h-[90vh] overflow-auto",children:[e.jsx(he,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(pe,{children:"Authentication Debug Information"}),e.jsx(I,{variant:"ghost",size:"icon",onClick:s,children:e.jsx(ft,{className:"h-4 w-4"})})]})}),e.jsxs(ee,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-semibold",children:"Status:"}),e.jsx(oe,{variant:r?"default":"destructive",children:n?"Loading...":r?"Authenticated":"Not Authenticated"})]}),i&&e.jsxs("div",{className:"bg-red-50 border border-red-200 rounded p-3",children:[e.jsx("p",{className:"text-sm text-red-700 font-semibold",children:"Error:"}),e.jsx("p",{className:"text-sm text-red-600",children:i.message})]}),a&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"User Information:"}),e.jsx("pre",{className:"bg-gray-50 p-3 rounded text-xs overflow-auto",children:JSON.stringify(a,null,2)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"All Auth Claims:"}),e.jsx("pre",{className:"bg-gray-50 p-3 rounded text-xs overflow-auto",children:JSON.stringify({isAuthenticated:r,isLoading:n,error:(i==null?void 0:i.message)||null,hasUser:!!a},null,2)})]})]})]})}):null}const es=p.forwardRef(({className:t,...s},a)=>e.jsx(Gu,{ref:a,"data-slot":"avatar",className:De("relative flex size-10 shrink-0 overflow-hidden rounded-full",t),...s}));es.displayName=Gu.displayName;const Vi=p.forwardRef(({className:t,...s},a)=>e.jsx(Ku,{ref:a,"data-slot":"avatar-image",className:De("aspect-square size-full",t),...s}));Vi.displayName=Ku.displayName;const ts=p.forwardRef(({className:t,...s},a)=>e.jsx(Yu,{ref:a,"data-slot":"avatar-fallback",className:De("bg-muted flex size-full items-center justify-center rounded-full",t),...s}));ts.displayName=Yu.displayName;function tm({...t}){return e.jsx(_g,{"data-slot":"dropdown-menu",...t})}function sm({...t}){return e.jsx(Lg,{"data-slot":"dropdown-menu-trigger",...t})}function am({className:t,sideOffset:s=4,...a}){return e.jsx(Og,{children:e.jsx($g,{"data-slot":"dropdown-menu-content",sideOffset:s,className:De("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",t),...a})})}function ol({className:t,inset:s,variant:a="default",...r}){return e.jsx(Ug,{"data-slot":"dropdown-menu-item","data-inset":s,"data-variant":a,className:De("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r})}function mb({...t}){return e.jsx(Vg,{"data-slot":"alert-dialog",...t})}function ub({...t}){return e.jsx(Bg,{"data-slot":"alert-dialog-portal",...t})}const $x=p.forwardRef(({className:t,...s},a)=>e.jsx(Zu,{"data-slot":"alert-dialog-overlay",className:De("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...s,ref:a}));$x.displayName=Zu.displayName;const Ux=p.forwardRef(({className:t,...s},a)=>e.jsxs(ub,{children:[e.jsx($x,{}),e.jsx(Xu,{"data-slot":"alert-dialog-content",ref:a,className:De("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...s})]}));Ux.displayName=Xu.displayName;function xb({className:t,...s}){return e.jsx("div",{"data-slot":"alert-dialog-header",className:De("flex flex-col gap-2 text-center sm:text-left",t),...s})}function hb({className:t,...s}){return e.jsx("div",{"data-slot":"alert-dialog-footer",className:De("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...s})}function pb({className:t,...s}){return e.jsx(zg,{"data-slot":"alert-dialog-title",className:De("text-lg font-semibold",t),...s})}function gb({className:t,...s}){return e.jsx(Hg,{"data-slot":"alert-dialog-description",className:De("text-muted-foreground text-sm",t),...s})}function fb({className:t,...s}){return e.jsx(Gg,{className:De(Nn(),t),...s})}function yb({className:t,...s}){return e.jsx(Wg,{className:De(Nn({variant:"outline"}),t),...s})}const Wa={async list(t){return(await je.get("/notifications",{params:t})).data},async getUnreadCount(){return(await je.get("/notifications/unread-count")).data},async markAsRead(t){return(await je.patch(`/notifications/${t}/read`)).data},async markAllAsRead(){return(await je.post("/notifications/mark-all-read")).data},async delete(t){return(await je.delete(`/notifications/${t}`)).data}},bb=async()=>(await je.get("/notifications/subscriptions")).data.data.subscriptions;let or=null;function vb(){return"http://localhost:3000"}function Br(t){const s=vb();return or||(or=Of(s,{withCredentials:!0,transports:["websocket","polling"],path:"/socket.io",reconnection:!0,reconnectionDelay:1e3,reconnectionAttempts:5}),or.on("connect",()=>{}),or.on("connect_error",a=>{console.error("[Socket] Connection error:",a.message)}),or.on("disconnect",a=>{}),or)}function Kl(t,s,a){a?t.emit("join:request",{requestId:s,userId:a}):t.emit("join:request",s)}function Bx(t,s){t.emit("leave:request",s)}function Vx(t,s){t.emit("join:user",{userId:s})}function ls({children:t,currentPage:s="dashboard",onNavigate:a,onNewRequest:r,onLogout:n}){const[i,l]=p.useState(!1),[o,d]=p.useState(!1),[c,m]=p.useState([]),[u,h]=p.useState(0),[x,g]=p.useState(!1),{user:y}=Qt(),f=p.useMemo(()=>{try{const A=at.getUserData();return(A==null?void 0:A.jobTitle)==="Dealer"}catch(A){return console.error("[PageLayout] Error checking dealer status:",A),!1}},[]),b=()=>{var A,M;try{if(y!=null&&y.displayName&&typeof y.displayName=="string"){const D=y.displayName.split(" ").filter(Boolean);return D.length>=2?`${((A=D[0])==null?void 0:A[0])||""}${((M=D[D.length-1])==null?void 0:M[0])||""}`.toUpperCase():y.displayName.substring(0,2).toUpperCase()}return y!=null&&y.email&&typeof y.email=="string"?y.email.substring(0,2).toUpperCase():"U"}catch(D){return console.error("[PageLayout] Error getting user initials:",D),"U"}},v=p.useMemo(()=>{const A=[{id:"dashboard",label:"Dashboard",icon:ef},{id:"requests",label:"All Requests",icon:dx,adminOnly:!1}];return f||A.push({id:"my-requests",label:"My Requests",icon:Lt}),A.push({id:"open-requests",label:"Open Requests",icon:Pe},{id:"closed-requests",label:"Closed Requests",icon:Ie},{id:"shared-summaries",label:"Shared Summary",icon:Wr}),A},[f]),C=()=>{l(!i)},w=async A=>{var M;try{if(A.isRead||(await Wa.markAsRead(A.notificationId),m(D=>D.map(S=>S.notificationId===A.notificationId?{...S,isRead:!0}:S)),h(D=>Math.max(0,D-1))),A.actionUrl&&a){const D=(M=A.metadata)==null?void 0:M.requestNumber;if(D){let S=`request/${D}`;(A.notificationType==="mention"||A.notificationType==="comment"||A.notificationType==="worknote")&&(S+="?tab=worknotes"),a(S)}}g(!1)}catch(D){console.error("[PageLayout] Error handling notification click:",D)}},k=async()=>{try{await Wa.markAllAsRead(),m(A=>A.map(M=>({...M,isRead:!0}))),h(0)}catch(A){console.error("[PageLayout] Error marking all as read:",A)}};return p.useEffect(()=>{const A=y==null?void 0:y.userId;if(!A)return;let M=!0;(async()=>{var j,P;try{const R=await Wa.list({page:1,limit:4,unreadOnly:!1});if(!M)return;const O=((j=R.data)==null?void 0:j.notifications)||[];m(O),h(((P=R.data)==null?void 0:P.unreadCount)||0)}catch(R){console.error("[PageLayout] Failed to fetch notifications:",R)}})();const S=Br();if(S){Vx(S,A);const j=P=>{M&&(m(R=>[P.notification,...R].slice(0,4)),h(R=>R+1))};return S.on("notification:new",j),()=>{M=!1,S.off("notification:new",j)}}return()=>{M=!1}},[y]),p.useEffect(()=>{const A=()=>{window.innerWidth>=768?l(!0):l(!1)};return A(),window.addEventListener("resize",A),()=>window.removeEventListener("resize",A)},[]),e.jsxs("div",{className:"min-h-screen flex w-full bg-background",children:[i&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-40 md:hidden",onClick:()=>l(!1)}),e.jsx("aside",{className:` fixed md:relative inset-y-0 left-0 w-64 @@ -24,7 +24,7 @@ var Fg=Object.defineProperty;var Mg=(t,s,a)=>s in t?Fg(t,s,{enumerable:!0,config overflow-hidden `,children:e.jsxs("div",{className:`w-64 h-full flex flex-col overflow-hidden ${i?"":"md:hidden"}`,children:[e.jsx("div",{className:"p-4 border-b border-gray-800 flex-shrink-0",children:e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx("img",{src:Bi,alt:"Royal Enfield Logo",className:"h-10 w-auto max-w-[168px] object-contain"}),e.jsx("p",{className:"text-xs text-gray-400 text-center mt-1 truncate",children:"RE Flow"})]})}),e.jsxs("div",{className:"p-3 flex-1 overflow-y-auto",children:[e.jsx("div",{className:"space-y-2",children:v.filter(A=>!A.adminOnly||(y==null?void 0:y.role)==="ADMIN").map(A=>e.jsxs("button",{onClick:()=>{A.id==="admin/templates"?a==null||a("admin/templates"):a==null||a(A.id),window.innerWidth<768&&l(!1)},className:`w-full flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-colors ${s===A.id?"bg-re-green text-white font-medium":"text-gray-300 hover:bg-gray-900 hover:text-white"}`,children:[e.jsx(A.icon,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{className:"truncate",children:A.label})]},A.id))}),!f&&e.jsx("div",{className:"mt-6 pt-6 border-t border-gray-800 px-3",children:e.jsxs(I,{onClick:r,className:"w-full bg-re-green hover:bg-re-green/90 text-white text-sm font-medium",size:"sm",children:[e.jsx(ps,{className:"w-4 h-4 mr-2"}),"Raise New Request"]})})]})]})}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0",children:[e.jsxs("header",{className:"h-16 border-b border-gray-200 bg-white flex items-center justify-between px-6 shrink-0",children:[e.jsx("div",{className:"flex items-center gap-4 min-w-0 flex-1",children:e.jsx(I,{variant:"ghost",size:"icon",onClick:C,className:"shrink-0 h-10 w-10 sidebar-toggle",children:i?e.jsx(tf,{className:"w-5 h-5 text-gray-600"}):e.jsx(sf,{className:"w-5 h-5 text-gray-600"})})}),e.jsxs("div",{className:"flex items-center gap-4 shrink-0",children:[!f&&e.jsxs(I,{onClick:r,className:"bg-re-green hover:bg-re-green/90 text-white gap-2 hidden md:flex text-sm",size:"sm",children:[e.jsx(ps,{className:"w-4 h-4"}),"New Request"]}),e.jsxs(tm,{open:x,onOpenChange:g,children:[e.jsx(sm,{asChild:!0,children:e.jsxs(I,{variant:"ghost",size:"icon",className:"relative shrink-0 h-10 w-10",children:[e.jsx(Ds,{className:"w-5 h-5"}),u>0&&e.jsx(oe,{className:"absolute -top-1 -right-1 w-5 h-5 rounded-full bg-destructive text-destructive-foreground text-xs flex items-center justify-center p-0",children:u>9?"9+":u})]})}),e.jsxs(am,{align:"end",className:"w-96 max-h-[500px]",children:[e.jsxs("div",{className:"p-3 border-b flex items-center justify-between sticky top-0 bg-white z-10",children:[e.jsx("h4",{className:"font-semibold text-base",children:"Notifications"}),u>0&&e.jsx(I,{variant:"ghost",size:"sm",className:"text-xs text-blue-600 hover:text-blue-700 h-auto p-1",onClick:A=>{A.stopPropagation(),k()},children:"Mark all as read"})]}),e.jsx("div",{className:"max-h-[400px] overflow-y-auto",children:c.length===0?e.jsxs("div",{className:"p-6 text-center",children:[e.jsx(Ds,{className:"w-12 h-12 text-gray-300 mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-gray-500",children:"No notifications yet"})]}):e.jsx("div",{className:"divide-y",children:c.map(A=>e.jsx("div",{className:`p-3 hover:bg-gray-50 cursor-pointer transition-colors ${A.isRead?"":"bg-blue-50"}`,onClick:()=>w(A),children:e.jsxs("div",{className:"flex gap-2",children:[!A.isRead&&e.jsx("div",{className:"w-2 h-2 rounded-full bg-blue-600 mt-1.5 shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:`text-sm ${A.isRead?"font-medium":"font-semibold"}`,children:A.title}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:A.message}),e.jsx("p",{className:"text-xs text-gray-400 mt-1",children:nx(new Date(A.createdAt),{addSuffix:!0})})]})]})},A.notificationId))})}),c.length>0&&e.jsx("div",{className:"p-2 border-t",children:e.jsx(I,{variant:"ghost",className:"w-full text-sm text-blue-600 hover:text-blue-700",onClick:()=>{g(!1),a==null||a("notifications")},children:"View all notifications"})})]})]}),e.jsxs(tm,{children:[e.jsx(sm,{asChild:!0,children:e.jsxs(es,{className:"cursor-pointer shrink-0 h-10 w-10",children:[e.jsx(Vi,{src:(y==null?void 0:y.picture)||""}),e.jsx(ts,{className:"bg-re-green text-white text-sm",children:b()})]})}),e.jsxs(am,{align:"end",children:[e.jsxs(ol,{onClick:()=>a==null?void 0:a("profile"),children:[e.jsx(Lt,{className:"w-4 h-4 mr-2"}),"Profile"]}),e.jsxs(ol,{onClick:()=>a==null?void 0:a("settings"),children:[e.jsx(Ga,{className:"w-4 h-4 mr-2"}),"Settings"]}),e.jsxs(ol,{onClick:()=>d(!0),className:"text-red-600 focus:text-red-600",children:[e.jsx(tl,{className:"w-4 h-4 mr-2"}),"Logout"]})]})]})]})]}),e.jsx("main",{className:"flex-1 p-2 sm:p-4 lg:p-6 overflow-auto min-w-0",children:t})]}),e.jsx(mb,{open:o,onOpenChange:d,children:e.jsxs(Ux,{children:[e.jsxs(xb,{children:[e.jsxs(pb,{className:"flex items-center gap-2",children:[e.jsx(tl,{className:"w-5 h-5 text-red-600"}),"Confirm Logout"]}),e.jsx(gb,{className:"pt-2",children:"Are you sure you want to logout? You will need to sign in again to access your account."})]}),e.jsxs(hb,{children:[e.jsx(yb,{onClick:()=>d(!1),children:"Cancel"}),e.jsxs(fb,{onClick:async()=>{if(d(!1),n)try{await n()}catch(A){console.error("🔴 Error calling onLogout:",A)}else console.error("🔴 ERROR: onLogout is undefined!")},className:"bg-red-600 hover:bg-red-700 text-white focus:ring-red-600",children:[e.jsx(tl,{className:"w-4 h-4 mr-2"}),"Logout"]})]})]})})]})}const Dn=()=>dy(),Zr=xy,jb=()=>{try{const t=localStorage.getItem("dashboard_viewAsUser");return t?JSON.parse(t):!1}catch{return!1}},Nb={viewAsUser:jb()},zx=Kr({name:"dashboard",initialState:Nb,reducers:{setViewAsUser:(t,s)=>{t.viewAsUser=s.payload,localStorage.setItem("dashboard_viewAsUser",JSON.stringify(s.payload))}}}),{setViewAsUser:wb}=zx.actions;function Cb(){const[t,s]=p.useState("all"),[a,r]=p.useState(void 0),[n,i]=p.useState(void 0),[l,o]=p.useState(!1),d=p.useCallback(u=>{const h=u;s(h),h!=="custom"?(r(void 0),i(void 0),o(!1)):o(!0)},[]),c=p.useCallback(u=>{if(a&&n){if(a>n){const h=a;r(n),i(h),u(n,h)}else u(a,n);o(!1)}},[a,n]),m=p.useCallback(()=>{r(void 0),i(void 0),o(!1),s("all")},[]);return{dateRange:t,customStartDate:a,customEndDate:n,showCustomDatePicker:l,setDateRange:s,setCustomStartDate:r,setCustomEndDate:i,setShowCustomDatePicker:o,handleDateRangeChange:d,handleApplyCustomDate:c,resetCustomDates:m}}function Ab(){const[t,s]=p.useState({page:1,totalPages:1,totalRecords:0}),[a,r]=p.useState({page:1,totalPages:1,totalRecords:0}),[n,i]=p.useState({page:1,totalPages:1,totalRecords:0}),[l,o]=p.useState({page:1,totalPages:1,totalRecords:0}),d=p.useCallback((f,b,v)=>{s({page:f,totalPages:b,totalRecords:v})},[]),c=p.useCallback((f,b,v)=>{r({page:f,totalPages:b,totalRecords:v})},[]),m=p.useCallback((f,b,v)=>{i({page:f,totalPages:b,totalRecords:v})},[]),u=p.useCallback((f,b,v)=>{o({page:f,totalPages:b,totalRecords:v})},[]),h=p.useCallback((f,b)=>{f>=1&&f<=t.totalPages&&(s(v=>({...v,page:f})),b(f))},[t.totalPages]),x=p.useCallback((f,b)=>{f>=1&&f<=a.totalPages&&(r(v=>({...v,page:f})),b(f))},[a.totalPages]),g=p.useCallback((f,b)=>{f>=1&&f<=n.totalPages&&(i(v=>({...v,page:f})),b(f))},[n.totalPages]),y=p.useCallback((f,b)=>{f>=1&&f<=l.totalPages&&(o(v=>({...v,page:f})),b(f))},[l.totalPages]);return{activity:t,critical:a,deadlines:n,approver:l,updateActivityPagination:d,updateCriticalPagination:c,updateDeadlinesPagination:m,updateApproverPagination:u,handleActivityPageChange:h,handleCriticalPageChange:x,handleDeadlinesPageChange:g,handleApproverPageChange:y}}class Sb{async getKPIs(s,a,r,n){try{const i={dateRange:s};return s==="custom"&&a&&r&&(i.startDate=a.toISOString(),i.endDate=r.toISOString()),n&&(i.viewAsUser="true"),(await je.get("/dashboard/kpis",{params:i})).data.data}catch(i){throw console.error("Failed to fetch KPIs:",i),i}}async getRequestStats(s,a,r,n,i,l,o,d,c,m,u,h,x){try{const g={dateRange:s};return s==="custom"&&a&&r&&(g.startDate=a,g.endDate=r),n&&n!=="all"&&(g.status=n),i&&i!=="all"&&(g.priority=i),l&&l!=="all"&&(g.templateType=l),o&&o!=="all"&&(g.department=o),d&&d!=="all"&&(g.initiator=d),c&&c!=="all"&&(g.approver=c),m&&(g.approverType=m),u&&(g.search=u),h&&h!=="all"&&(g.slaCompliance=h),x&&(g.viewAsUser="true"),(await je.get("/dashboard/stats/requests",{params:g})).data.data}catch(g){throw console.error("Failed to fetch request stats:",g),g}}async getTATEfficiency(s){try{return(await je.get("/dashboard/stats/tat-efficiency",{params:{dateRange:s}})).data.data}catch(a){throw console.error("Failed to fetch TAT efficiency:",a),a}}async getApproverLoad(s){try{return(await je.get("/dashboard/stats/approver-load",{params:{dateRange:s}})).data.data}catch(a){throw console.error("Failed to fetch approver load:",a),a}}async getEngagementStats(s){try{return(await je.get("/dashboard/stats/engagement",{params:{dateRange:s}})).data.data}catch(a){throw console.error("Failed to fetch engagement stats:",a),a}}async getAIInsights(s){try{return(await je.get("/dashboard/stats/ai-insights",{params:{dateRange:s}})).data.data}catch(a){throw console.error("Failed to fetch AI insights:",a),a}}async getRecentActivity(s=1,a=10,r){try{const n={page:s,limit:a};r&&(n.viewAsUser="true");const i=await je.get("/dashboard/activity/recent",{params:n});return{activities:i.data.data,pagination:i.data.pagination}}catch(n){throw console.error("Failed to fetch recent activity:",n),n}}async getCriticalRequests(s=1,a=10,r){try{const n={page:s,limit:a};r&&(n.viewAsUser="true");const i=await je.get("/dashboard/requests/critical",{params:n});return{criticalRequests:i.data.data,pagination:i.data.pagination}}catch(n){throw console.error("Failed to fetch critical requests:",n),n}}async getUpcomingDeadlines(s=1,a=10,r){try{const n={page:s,limit:a};r&&(n.viewAsUser="true");const i=await je.get("/dashboard/deadlines/upcoming",{params:n});return{deadlines:i.data.data,pagination:i.data.pagination}}catch(n){throw console.error("Failed to fetch upcoming deadlines:",n),n}}async getDepartmentStats(s,a,r){try{const n={dateRange:s};return s==="custom"&&a&&r&&(n.startDate=a.toISOString(),n.endDate=r.toISOString()),(await je.get("/dashboard/stats/by-department",{params:n})).data.data}catch(n){throw console.error("Failed to fetch department stats:",n),n}}async getPriorityDistribution(s,a,r){try{const n={dateRange:s};return s==="custom"&&a&&r&&(n.startDate=a.toISOString(),n.endDate=r.toISOString()),(await je.get("/dashboard/stats/priority-distribution",{params:n})).data.data}catch(n){throw console.error("Failed to fetch priority distribution:",n),n}}async getAIRemarkUtilization(s,a,r){try{const n={dateRange:s};return s==="custom"&&a&&r&&(n.startDate=a.toISOString(),n.endDate=r.toISOString()),(await je.get("/dashboard/stats/ai-remark-utilization",{params:n})).data.data}catch(n){throw console.error("Failed to fetch AI remark utilization:",n),n}}async getApproverPerformance(s,a=1,r=10,n,i,l,o){try{const d={dateRange:s,page:a,limit:r||10};s==="custom"&&n&&i&&(d.startDate=n.toISOString(),d.endDate=i.toISOString()),l&&l!=="all"&&(d.priority=l),o&&o!=="all"&&(d.slaCompliance=o),console.log("[Dashboard Service] Fetching approver performance with params:",d);const c=await je.get("/dashboard/stats/approver-performance",{params:d});return{performance:c.data.data,pagination:c.data.pagination}}catch(d){throw console.error("Failed to fetch approver performance:",d),d}}async getLifecycleReport(s=1,a=50,r,n,i){try{const l={page:s,limit:a};r&&(l.dateRange=r),r==="custom"&&n&&i&&(l.startDate=n.toISOString(),l.endDate=i.toISOString());const o=await je.get("/dashboard/reports/lifecycle",{params:l});return{lifecycleData:o.data.data,pagination:o.data.pagination}}catch(l){throw console.error("Failed to fetch lifecycle report:",l),l}}async getActivityLogReport(s=1,a=50,r,n,i,l,o,d,c){try{const m={page:s,limit:a,filterUserId:n,filterType:i,filterCategory:l,filterSeverity:o};r&&(m.dateRange=r),r==="custom"&&d&&c&&(m.startDate=d.toISOString(),m.endDate=c.toISOString());const u=await je.get("/dashboard/reports/activity-log",{params:m});return{activities:u.data.data,pagination:u.data.pagination}}catch(m){throw console.error("Failed to fetch activity log report:",m),m}}async getDepartments(){try{return(await je.get("/dashboard/metadata/departments")).data.data.departments||[]}catch(s){throw console.error("Failed to fetch departments:",s),s}}async getWorkflowAgingReport(s=7,a=1,r=50,n,i,l){try{const o={threshold:s,page:a,limit:r};n&&(o.dateRange=n),n==="custom"&&i&&l&&(o.startDate=i.toISOString(),o.endDate=l.toISOString());const d=await je.get("/dashboard/reports/workflow-aging",{params:o});return{agingData:d.data.data,pagination:d.data.pagination}}catch(o){throw console.error("Failed to fetch workflow aging report:",o),o}}async getSingleApproverStats(s,a,r,n,i,l){try{const o={approverId:s};return a&&(o.dateRange=a),a==="custom"&&r&&n&&(o.startDate=r.toISOString(),o.endDate=n.toISOString()),i&&i!=="all"&&(o.priority=i),l&&l!=="all"&&(o.slaCompliance=l),(await je.get("/dashboard/stats/single-approver",{params:o})).data.data}catch(o){throw console.error("Failed to fetch single approver stats:",o),o}}async getRequestsByApprover(s,a=1,r=50,n,i,l,o,d,c,m){try{const u={approverId:s,page:a,limit:r};n&&(u.dateRange=n),n==="custom"&&i&&l&&(u.startDate=i.toISOString(),u.endDate=l.toISOString()),o&&(u.status=o),d&&(u.priority=d),c&&(u.slaCompliance=c),m&&(u.search=m);const h=await je.get("/dashboard/requests/by-approver",{params:u});return{requests:h.data.data,pagination:h.data.pagination}}catch(u){throw console.error("Failed to fetch requests by approver:",u),u}}}const Tt=new Sb;function Tb({isAdmin:t,viewAsUser:s=!1,userId:a,dateRange:r,customStartDate:n,customEndDate:i,onPaginationUpdate:l}){const[o,d]=p.useState(null),[c,m]=p.useState([]),[u,h]=p.useState([]),[x,g]=p.useState([]),[y,f]=p.useState([]),[b,v]=p.useState([]),[C,w]=p.useState(null),[k,A]=p.useState([]),[M,D]=p.useState(!0),[S,j]=p.useState(!1),P=p.useRef(l);P.current=l;const R=p.useCallback(async(T=!1)=>{try{T?j(!0):D(!0);const N=[Tt.getKPIs(r,n,i,s),Tt.getRecentActivity(1,10,s),Tt.getCriticalRequests(1,10,s),Tt.getUpcomingDeadlines(1,10,s)],U=!t&&a?Tt.getRequestStats(r,n==null?void 0:n.toISOString(),i==null?void 0:i.toISOString(),void 0,void 0,void 0,void 0,a,void 0,void 0,void 0,void 0,s):null,$=t?[Tt.getDepartmentStats(r,n,i),Tt.getPriorityDistribution(r,n,i),Tt.getAIRemarkUtilization(r,n,i),Tt.getApproverPerformance(r,1,10,n,i)]:[],[L,ne,W]=await Promise.all([Promise.all(N),U,Promise.all($)]),de=L[0],Z=L[1],E=L[2],z=L[3];if(!t&&ne&&(de.requestVolume=ne),d(de),m(Z.activities),P.current.activity(Z.pagination.currentPage,Z.pagination.totalPages,Z.pagination.totalRecords),h(E.criticalRequests),P.current.critical(E.pagination.currentPage,E.pagination.totalPages,E.pagination.totalRecords),v(z.deadlines),P.current.deadlines(z.pagination.currentPage,z.pagination.totalPages,z.pagination.totalRecords),t&&W.length>=4){const H=W[0],X=W[1],Y=W[2],ae=W[3];g(H),f(X),w(Y),A(ae.performance),P.current.approver(ae.pagination.currentPage,ae.pagination.totalPages,ae.pagination.totalRecords)}else t||(g([]),f([]),w(null),A([]))}catch(N){console.error("Failed to fetch dashboard data:",N)}finally{D(!1),j(!1)}},[t,s,a,r,n,i]),O=p.useCallback(async(T=1)=>{try{const N=await Tt.getRecentActivity(T,10,s);m(N.activities),P.current.activity(N.pagination.currentPage,N.pagination.totalPages,N.pagination.totalRecords)}catch(N){console.error("Failed to fetch recent activities:",N)}},[s]),F=p.useCallback(async(T=1)=>{try{const N=await Tt.getCriticalRequests(T,10,s);h(N.criticalRequests),P.current.critical(N.pagination.currentPage,N.pagination.totalPages,N.pagination.totalRecords)}catch(N){console.error("Failed to fetch critical requests:",N)}},[s]),_=p.useCallback(async(T=1)=>{try{const N=await Tt.getUpcomingDeadlines(T,10,s);v(N.deadlines),P.current.deadlines(N.pagination.currentPage,N.pagination.totalPages,N.pagination.totalRecords)}catch(N){console.error("Failed to fetch upcoming deadlines:",N)}},[s]),B=p.useCallback(async(T=1)=>{try{const N=await Tt.getApproverPerformance(r,T,10,n,i);A(N.performance),P.current.approver(N.pagination.currentPage,N.pagination.totalPages,N.pagination.totalRecords)}catch(N){console.error("Failed to fetch approver performance:",N)}},[r,n,i]);return{kpis:o,recentActivity:c,criticalRequests:u,departmentStats:x,priorityDistribution:y,upcomingDeadlines:b,aiRemarkUtilization:C,approverPerformance:k,loading:M,refreshing:S,fetchDashboardData:R,fetchRecentActivities:O,fetchCriticalRequests:F,fetchUpcomingDeadlines:_,fetchApproverPerformance:B}}const Ra={appName:"Royal Enfield Workflow Management",appVersion:"1.2.0",workingHours:{START_HOUR:9,END_HOUR:18,START_DAY:1,END_DAY:5,TIMEZONE:"Asia/Kolkata"},tat:{thresholds:{warning:50,critical:75,breach:100},testMode:!1},upload:{maxFileSizeMB:10,allowedFileTypes:["pdf","doc","docx","xls","xlsx","ppt","pptx","jpg","jpeg","png","gif"],maxFilesPerRequest:10},workflow:{maxApprovalLevels:10,maxParticipants:50,maxSpectators:20},workNotes:{maxMessageLength:2e3,maxAttachmentsPerNote:5,enableReactions:!0,enableMentions:!0},features:{ENABLE_AI_CONCLUSION:!0,ENABLE_TEMPLATES:!1,ENABLE_ANALYTICS:!0,ENABLE_EXPORT:!0},ui:{DEFAULT_THEME:"light",DEFAULT_LANGUAGE:"en",DATE_FORMAT:"DD/MM/YYYY",TIME_FORMAT:"12h",CURRENCY:"INR",CURRENCY_SYMBOL:"₹"}};class kb{constructor(){Qi(this,"config",null);Qi(this,"loading",null)}async getConfig(){return this.config?this.config:this.loading?this.loading:(this.loading=this.fetchConfig(),this.config=await this.loading,this.loading=null,this.config)}async fetchConfig(){var s;try{const a=await je.get("/config"),r=((s=a.data)==null?void 0:s.data)||a.data;return{...Ra,...r,workingHours:{...Ra.workingHours,...r.workingHours},tat:{...Ra.tat,...r.tat},upload:{...Ra.upload,...r.upload},workflow:{...Ra.workflow,...r.workflow},workNotes:{...Ra.workNotes,...r.workNotes},features:{...Ra.features,...r.features},ui:{...Ra.ui,...r.ui}}}catch(a){return console.error("[ConfigService] ⚠️ Failed to fetch config from server, using defaults:",a),Ra}}async refreshConfig(){return this.config=null,this.loading=null,this.getConfig()}getCachedConfig(){return this.config}isLoaded(){return this.config!==null}}const Rb=new kb;let Db=9,Pb=18,Ib=1,Eb=5,rm=!1;async function Fb(){if(!rm)try{const t=await Rb.getConfig();Db=t.workingHours.START_HOUR,Pb=t.workingHours.END_HOUR,Ib=t.workingHours.START_DAY,Eb=t.workingHours.END_DAY,rm=!0}catch{console.warn("[SLA Tracker] ⚠️ Using default working hours (9 AM - 6 PM)")}}Fb().catch(()=>{});function Ot(t){if(t==null||t<0||t===0)return"0 hours";const s=8;if(t<1){const o=Math.round(t*60);return o>0?`${o}m`:"0 hours"}const a=Math.floor(t/s),r=Math.floor(t%s),n=Math.round(t%1*60);if(a>0){const o=a===1?"day":"days",d=r===1?"hour":"hours",c=n===1?"min":"m";return n>0?`${a} ${o} ${r} ${d} ${n}${c}`:`${a} ${o} ${r} ${d}`}const i=r===1?"hour":"hours",l=n===1?"min":"m";return n>0?`${r} ${i} ${n}${l}`:`${r} ${i}`}async function Mb(t,s,a){const r=[];let n=1,i=!0;const l=100;for(;i&&n<=l;){const h=await Tt.getApproverPerformance(t,n,100,s,a);h.performance&&h.performance.length>0?(r.push(...h.performance),n++,i=n<=h.pagination.totalPages):i=!1}const o=[["Approver Name","Total Approved","TAT Compliance (%)","Avg Response Time","Pending Count"].join(",")];r.forEach(h=>{const x=[`"${(h.approverName||"Unknown").replace(/"/g,'""')}"`,h.totalApproved||0,h.tatCompliancePercent||0,Ot(h.avgResponseHours),h.pendingCount||0];o.push(x.join(","))});const d=o.join(` `),c=new Blob([d],{type:"text/csv;charset=utf-8;"}),m=document.createElement("a"),u=URL.createObjectURL(c);m.setAttribute("href",u),m.setAttribute("download",`approver-performance-report-${new Date().toISOString().split("T")[0]}.csv`),m.style.visibility="hidden",document.body.appendChild(m),m.click(),document.body.removeChild(m),URL.revokeObjectURL(u)}async function _b(t,s,a){const r=await Tt.getDepartmentStats(t,s,a),n=[["Department","Total Requests","Approved","Rejected","In Progress","Approval Rate (%)"].join(",")];r.forEach(c=>{const m=[`"${(c.department||"Unknown").replace(/"/g,'""')}"`,c.totalRequests||0,c.approved||0,c.rejected||0,c.inProgress||0,c.approvalRate||0];n.push(m.join(","))});const i=n.join(` -`),l=new Blob([i],{type:"text/csv;charset=utf-8;"}),o=document.createElement("a"),d=URL.createObjectURL(l);o.setAttribute("href",d),o.setAttribute("download",`department-workflow-summary-${new Date().toISOString().split("T")[0]}.csv`),o.style.visibility="hidden",document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(d)}function Lb(){const[t,s]=p.useState(!1),[a,r]=p.useState(!1),n=p.useCallback(async(l,o,d)=>{try{s(!0),await _b(l,o,d)}catch(c){console.error("Failed to export department stats:",c),alert("Failed to export department statistics. Please try again.")}finally{s(!1)}},[]),i=p.useCallback(async(l,o,d)=>{try{r(!0),await Mb(l,o,d)}catch(c){console.error("Failed to export approver performance:",c),alert("Failed to export approver performance data. Please try again.")}finally{r(!1)}},[]);return{exportingDeptStats:t,exportingApproverPerformance:a,handleExportDepartmentStats:n,handleExportApproverPerformance:i}}function Fs({className:t,...s}){return e.jsx(Kg,{"data-slot":"switch",className:De("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",t),...s,children:e.jsx(Yg,{"data-slot":"switch-thumb",className:De("bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}function ie({className:t,...s}){return e.jsx(Zg,{"data-slot":"label",className:De("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...s})}function Ob({isAdmin:t,effectiveIsAdmin:s,viewAsUser:a,onToggleView:r,quickActions:n,userDisplayName:i,userEmail:l}){const o=i||(l==null?void 0:l.split("@")[0])||"User";return e.jsxs(q,{className:"relative overflow-hidden shadow-xl border-0","data-testid":"dashboard-hero",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900"}),e.jsxs(ee,{className:"relative z-10 p-4 sm:p-6 lg:p-12",children:[t&&e.jsx("div",{className:"absolute top-4 right-4 sm:top-6 sm:right-6 z-20","data-testid":"view-toggle",children:e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 p-1.5 sm:p-2 bg-white/10 backdrop-blur-sm rounded-lg border border-white/20 shadow-lg",children:[e.jsxs("div",{className:`flex items-center gap-1 sm:gap-1.5 px-1.5 sm:px-2 py-0.5 sm:py-1 rounded transition-all cursor-pointer ${a?"opacity-60 hover:opacity-80":"bg-red-600/20 border border-red-600/50"}`,onClick:()=>r(!1),children:[e.jsx(No,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5 ${a?"text-gray-300":"text-red-600"}`}),e.jsx(ie,{htmlFor:"view-toggle-switch",className:`text-[10px] sm:text-xs font-medium cursor-pointer whitespace-nowrap ${a?"text-gray-300":"text-red-600"}`,children:"Org"})]}),e.jsx(Fs,{id:"view-toggle-switch",checked:a,onCheckedChange:r,className:"data-[state=checked]:bg-red-600 data-[state=unchecked]:bg-gray-600 shrink-0 scale-90 sm:scale-100","data-testid":"view-toggle-switch"}),e.jsxs("div",{className:`flex items-center gap-1 sm:gap-1.5 px-1.5 sm:px-2 py-0.5 sm:py-1 rounded transition-all cursor-pointer ${a?"bg-red-600/20 border border-red-600/50":"opacity-60 hover:opacity-80"}`,onClick:()=>r(!0),children:[e.jsx(Lt,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5 ${a?"text-red-600":"text-gray-300"}`}),e.jsx(ie,{htmlFor:"view-toggle-switch",className:`text-[10px] sm:text-xs font-medium cursor-pointer whitespace-nowrap ${a?"text-red-600":"text-gray-300"}`,children:"Personal"})]})]})}),e.jsx("div",{className:"flex flex-col lg:flex-row items-start lg:items-center justify-between gap-4 sm:gap-6",children:e.jsxs("div",{className:`text-white w-full lg:w-auto ${t?"pt-12 sm:pt-0":""}`,children:[e.jsx("div",{className:"flex items-center gap-3 sm:gap-4 mb-4 sm:mb-6",children:e.jsxs("div",{className:"pr-2 sm:pr-0",children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl lg:text-4xl font-bold mb-1 sm:mb-2 text-white","data-testid":"hero-title",children:["Welcome, ",o,"!"]}),e.jsx("p",{className:"text-sm sm:text-lg lg:text-xl text-gray-200","data-testid":"hero-subtitle",children:s?"Organization-wide analytics and insights":"Track your requests and approvals"})]})}),e.jsx("div",{className:"flex flex-wrap gap-2 sm:gap-4 mt-4 sm:mt-8","data-testid":"quick-actions",children:n.map((d,c)=>e.jsxs(I,{onClick:d.action,className:`${d.color} text-white border-0 shadow-lg hover:shadow-xl transition-all duration-200`,size:window.innerWidth<640?"sm":"lg","data-testid":`quick-action-${d.label.toLowerCase().replace(/\s+/g,"-")}`,children:[e.jsx(d.icon,{className:"w-4 h-4 sm:w-5 sm:h-5 mr-1 sm:mr-2"}),d.label]},c))})]})})]})]})}function Be({...t}){return e.jsx(Xg,{"data-slot":"select",...t})}function Ve({...t}){return e.jsx(qg,{"data-slot":"select-value",...t})}function ze({className:t,size:s="default",children:a,...r}){return e.jsxs(Qg,{"data-slot":"select-trigger","data-size":s,className:De("border-gray-400 data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground bg-white text-gray-900 flex w-full items-center justify-between gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap transition-all outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","hover:border-gray-500","focus-visible:border-re-light-green focus-visible:ring-0 focus-visible:outline-none","aria-invalid:ring-destructive/20 aria-invalid:border-destructive",t),...r,children:[a,e.jsx(Jg,{asChild:!0,children:e.jsx(wo,{className:"size-4 opacity-50"})})]})}function He({className:t,children:s,position:a="popper",...r}){return e.jsx(e0,{children:e.jsxs(t0,{"data-slot":"select-content",className:De("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:a,...r,children:[e.jsx($b,{}),e.jsx(s0,{className:De("p-1",a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:s}),e.jsx(Ub,{})]})})}function G({className:t,children:s,...a}){return e.jsxs(a0,{"data-slot":"select-item",className:De("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...a,children:[e.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:e.jsx(r0,{children:e.jsx(wr,{className:"size-4"})})}),e.jsx(n0,{children:s})]})}function $b({className:t,...s}){return e.jsx(i0,{"data-slot":"select-scroll-up-button",className:De("flex cursor-default items-center justify-center py-1",t),...s,children:e.jsx(mx,{className:"size-4"})})}function Ub({className:t,...s}){return e.jsx(l0,{"data-slot":"select-scroll-down-button",className:De("flex cursor-default items-center justify-center py-1",t),...s,children:e.jsx(wo,{className:"size-4"})})}function $t({className:t,orientation:s="horizontal",decorative:a=!0,...r}){return e.jsx(o0,{"data-slot":"separator-root",decorative:a,orientation:s,className:De("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...r})}function Zs({...t}){return e.jsx(c0,{"data-slot":"popover",...t})}function Xs({...t}){return e.jsx(d0,{"data-slot":"popover-trigger",...t})}function Qs({className:t,align:s="center",sideOffset:a=4,...r}){return e.jsx(m0,{children:e.jsx(u0,{"data-slot":"popover-content",align:s,sideOffset:a,className:De("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",t),...r})})}var et=function(){return et=Object.assign||function(s){for(var a,r=1,n=arguments.length;r1&&(d||!c),u=s>1&&(c||!d),h=function(){r&&i(r)},x=function(){n&&i(n)};return e.jsx(bv,{displayMonth:t.displayMonth,hideNext:m,hidePrevious:u,nextMonth:n,previousMonth:r,onPreviousClick:h,onNextClick:x})}function vv(t){var s,a=It(),r=a.classNames,n=a.disableNavigation,i=a.styles,l=a.captionLayout,o=a.components,d=(s=o==null?void 0:o.CaptionLabel)!==null&&s!==void 0?s:Gx,c;return n?c=e.jsx(d,{id:t.id,displayMonth:t.displayMonth}):l==="dropdown"?c=e.jsx(nm,{displayMonth:t.displayMonth,id:t.id}):l==="dropdown-buttons"?c=e.jsxs(e.Fragment,{children:[e.jsx(nm,{displayMonth:t.displayMonth,displayIndex:t.displayIndex,id:t.id}),e.jsx(im,{displayMonth:t.displayMonth,displayIndex:t.displayIndex,id:t.id})]}):c=e.jsxs(e.Fragment,{children:[e.jsx(d,{id:t.id,displayMonth:t.displayMonth,displayIndex:t.displayIndex}),e.jsx(im,{displayMonth:t.displayMonth,id:t.id})]}),e.jsx("div",{className:r.caption,style:i.caption,children:c})}function jv(t){var s=It(),a=s.footer,r=s.styles,n=s.classNames.tfoot;return a?e.jsx("tfoot",{className:n,style:r.tfoot,children:e.jsx("tr",{children:e.jsx("td",{colSpan:8,children:a})})}):e.jsx(e.Fragment,{})}function Nv(t,s,a){for(var r=a?vo(new Date):jo(new Date,{locale:t,weekStartsOn:s}),n=[],i=0;i<7;i++){var l=Hs(r,i);n.push(l)}return n}function wv(){var t=It(),s=t.classNames,a=t.styles,r=t.showWeekNumber,n=t.locale,i=t.weekStartsOn,l=t.ISOWeek,o=t.formatters.formatWeekdayName,d=t.labels.labelWeekday,c=Nv(n,i,l);return e.jsxs("tr",{style:a.head_row,className:s.head_row,children:[r&&e.jsx("td",{style:a.head_cell,className:s.head_cell}),c.map(function(m,u){return e.jsx("th",{scope:"col",className:s.head_cell,style:a.head_cell,"aria-label":d(m,{locale:n}),children:o(m,{locale:n})},u)})]})}function Cv(){var t,s=It(),a=s.classNames,r=s.styles,n=s.components,i=(t=n==null?void 0:n.HeadRow)!==null&&t!==void 0?t:wv;return e.jsx("thead",{style:r.head,className:a.head,children:e.jsx(i,{})})}function Av(t){var s=It(),a=s.locale,r=s.formatters.formatDay;return e.jsx(e.Fragment,{children:r(t.date,{locale:a})})}var Eo=p.createContext(void 0);function Sv(t){if(!Pn(t.initialProps)){var s={selected:void 0,modifiers:{disabled:[]}};return e.jsx(Eo.Provider,{value:s,children:t.children})}return e.jsx(Tv,{initialProps:t.initialProps,children:t.children})}function Tv(t){var s=t.initialProps,a=t.children,r=s.selected,n=s.min,i=s.max,l=function(c,m,u){var h,x;(h=s.onDayClick)===null||h===void 0||h.call(s,c,m,u);var g=!!(m.selected&&n&&(r==null?void 0:r.length)===n);if(!g){var y=!!(!m.selected&&i&&(r==null?void 0:r.length)===i);if(!y){var f=r?Hx([],r):[];if(m.selected){var b=f.findIndex(function(v){return Us(c,v)});f.splice(b,1)}else f.push(c);(x=s.onSelect)===null||x===void 0||x.call(s,f,c,m,u)}}},o={disabled:[]};r&&o.disabled.push(function(c){var m=i&&r.length>i-1,u=r.some(function(h){return Us(h,c)});return!!(m&&!u)});var d={selected:r,onDayClick:l,modifiers:o};return e.jsx(Eo.Provider,{value:d,children:a})}function Fo(){var t=p.useContext(Eo);if(!t)throw new Error("useSelectMultiple must be used within a SelectMultipleProvider");return t}function kv(t,s){var a=s||{},r=a.from,n=a.to;return r&&n?Us(n,t)&&Us(r,t)?void 0:Us(n,t)?{from:n,to:void 0}:Us(r,t)?void 0:Bl(r,t)?{from:t,to:n}:{from:r,to:t}:n?Bl(t,n)?{from:n,to:t}:{from:t,to:n}:r?ix(t,r)?{from:t,to:r}:{from:r,to:t}:{from:t,to:void 0}}var Mo=p.createContext(void 0);function Rv(t){if(!In(t.initialProps)){var s={selected:void 0,modifiers:{range_start:[],range_end:[],range_middle:[],disabled:[]}};return e.jsx(Mo.Provider,{value:s,children:t.children})}return e.jsx(Dv,{initialProps:t.initialProps,children:t.children})}function Dv(t){var s=t.initialProps,a=t.children,r=s.selected,n=r||{},i=n.from,l=n.to,o=s.min,d=s.max,c=function(x,g,y){var f,b;(f=s.onDayClick)===null||f===void 0||f.call(s,x,g,y);var v=kv(x,r);(b=s.onSelect)===null||b===void 0||b.call(s,v,x,g,y)},m={range_start:[],range_end:[],range_middle:[],disabled:[]};if(i?(m.range_start=[i],l?(m.range_end=[l],Us(i,l)||(m.range_middle=[{after:i,before:l}])):m.range_end=[i]):l&&(m.range_start=[l],m.range_end=[l]),o&&(i&&!l&&m.disabled.push({after:Ji(i,o-1),before:Hs(i,o-1)}),i&&l&&m.disabled.push({after:i,before:Hs(i,o-1)}),!i&&l&&m.disabled.push({after:Ji(l,o-1),before:Hs(l,o-1)})),d){if(i&&!l&&(m.disabled.push({before:Hs(i,-d+1)}),m.disabled.push({after:Hs(i,d-1)})),i&&l){var u=Pa(l,i)+1,h=d-u;m.disabled.push({before:Ji(i,h)}),m.disabled.push({after:Hs(l,h)})}!i&&l&&(m.disabled.push({before:Hs(l,-d+1)}),m.disabled.push({after:Hs(l,d-1)}))}return e.jsx(Mo.Provider,{value:{selected:r,onDayClick:c,modifiers:m},children:a})}function _o(){var t=p.useContext(Mo);if(!t)throw new Error("useSelectRange must be used within a SelectRangeProvider");return t}function qn(t){return Array.isArray(t)?Hx([],t):t!==void 0?[t]:[]}function Pv(t){var s={};return Object.entries(t).forEach(function(a){var r=a[0],n=a[1];s[r]=qn(n)}),s}var pa;(function(t){t.Outside="outside",t.Disabled="disabled",t.Selected="selected",t.Hidden="hidden",t.Today="today",t.RangeStart="range_start",t.RangeEnd="range_end",t.RangeMiddle="range_middle"})(pa||(pa={}));var Iv=pa.Selected,Da=pa.Disabled,Ev=pa.Hidden,Fv=pa.Today,cl=pa.RangeEnd,dl=pa.RangeMiddle,ml=pa.RangeStart,Mv=pa.Outside;function _v(t,s,a){var r,n=(r={},r[Iv]=qn(t.selected),r[Da]=qn(t.disabled),r[Ev]=qn(t.hidden),r[Fv]=[t.today],r[cl]=[],r[dl]=[],r[ml]=[],r[Mv]=[],r);return t.fromDate&&n[Da].push({before:t.fromDate}),t.toDate&&n[Da].push({after:t.toDate}),Pn(t)?n[Da]=n[Da].concat(s.modifiers[Da]):In(t)&&(n[Da]=n[Da].concat(a.modifiers[Da]),n[ml]=a.modifiers[ml],n[dl]=a.modifiers[dl],n[cl]=a.modifiers[cl]),n}var Zx=p.createContext(void 0);function Lv(t){var s=It(),a=Fo(),r=_o(),n=_v(s,a,r),i=Pv(s.modifiers),l=et(et({},n),i);return e.jsx(Zx.Provider,{value:l,children:t.children})}function Xx(){var t=p.useContext(Zx);if(!t)throw new Error("useModifiers must be used within a ModifiersProvider");return t}function Ov(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function $v(t){return!!(t&&typeof t=="object"&&"from"in t)}function Uv(t){return!!(t&&typeof t=="object"&&"after"in t)}function Bv(t){return!!(t&&typeof t=="object"&&"before"in t)}function Vv(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function zv(t,s){var a,r=s.from,n=s.to;if(r&&n){var i=Pa(n,r)<0;i&&(a=[n,r],r=a[0],n=a[1]);var l=Pa(t,r)>=0&&Pa(n,t)>=0;return l}return n?Us(n,t):r?Us(r,t):!1}function Hv(t){return cx(t)}function Wv(t){return Array.isArray(t)&&t.every(cx)}function Gv(t,s){return s.some(function(a){if(typeof a=="boolean")return a;if(Hv(a))return Us(t,a);if(Wv(a))return a.includes(t);if($v(a))return zv(t,a);if(Vv(a))return a.dayOfWeek.includes(t.getDay());if(Ov(a)){var r=Pa(a.before,t),n=Pa(a.after,t),i=r>0,l=n<0,o=Bl(a.before,a.after);return o?l&&i:i||l}return Uv(a)?Pa(t,a.after)>0:Bv(a)?Pa(a.before,t)>0:typeof a=="function"?a(t):!1})}function Lo(t,s,a){var r=Object.keys(s).reduce(function(i,l){var o=s[l];return Gv(t,o)&&i.push(l),i},[]),n={};return r.forEach(function(i){return n[i]=!0}),a&&!bo(t,a)&&(n.outside=!0),n}function Kv(t,s){for(var a=Ks(t[0]),r=yo(t[t.length-1]),n,i,l=a;l<=r;){var o=Lo(l,s),d=!o.disabled&&!o.hidden;if(!d){l=Hs(l,1);continue}if(o.selected)return l;o.today&&!i&&(i=l),n||(n=l),l=Hs(l,1)}return i||n}var Yv=365;function Qx(t,s){var a=s.moveBy,r=s.direction,n=s.context,i=s.modifiers,l=s.retry,o=l===void 0?{count:0,lastFocused:t}:l,d=n.weekStartsOn,c=n.fromDate,m=n.toDate,u=n.locale,h={day:Hs,week:Ul,month:Ca,year:z0,startOfWeek:function(f){return n.ISOWeek?vo(f):jo(f,{locale:u,weekStartsOn:d})},endOfWeek:function(f){return n.ISOWeek?lx(f):ox(f,{locale:u,weekStartsOn:d})}},x=h[a](t,r==="after"?1:-1);r==="before"&&c?x=H0([c,x]):r==="after"&&m&&(x=W0([m,x]));var g=!0;if(i){var y=Lo(x,i);g=!y.disabled&&!y.hidden}return g?x:o.count>Yv?o.lastFocused:Qx(x,{moveBy:a,direction:r,context:n,modifiers:i,retry:et(et({},o),{count:o.count+1})})}var Jx=p.createContext(void 0);function Zv(t){var s=En(),a=Xx(),r=p.useState(),n=r[0],i=r[1],l=p.useState(),o=l[0],d=l[1],c=Kv(s.displayMonths,a),m=n??(o&&s.isDateDisplayed(o))?o:c,u=function(){d(n),i(void 0)},h=function(f){i(f)},x=It(),g=function(f,b){if(n){var v=Qx(n,{moveBy:f,direction:b,context:x,modifiers:a});Us(n,v)||(s.goToDate(v,n),h(v))}},y={focusedDay:n,focusTarget:m,blur:u,focus:h,focusDayAfter:function(){return g("day","after")},focusDayBefore:function(){return g("day","before")},focusWeekAfter:function(){return g("week","after")},focusWeekBefore:function(){return g("week","before")},focusMonthBefore:function(){return g("month","before")},focusMonthAfter:function(){return g("month","after")},focusYearBefore:function(){return g("year","before")},focusYearAfter:function(){return g("year","after")},focusStartOfWeek:function(){return g("startOfWeek","before")},focusEndOfWeek:function(){return g("endOfWeek","after")}};return e.jsx(Jx.Provider,{value:y,children:t.children})}function Oo(){var t=p.useContext(Jx);if(!t)throw new Error("useFocusContext must be used within a FocusProvider");return t}function Xv(t,s){var a=Xx(),r=Lo(t,a,s);return r}var $o=p.createContext(void 0);function Qv(t){if(!zi(t.initialProps)){var s={selected:void 0};return e.jsx($o.Provider,{value:s,children:t.children})}return e.jsx(Jv,{initialProps:t.initialProps,children:t.children})}function Jv(t){var s=t.initialProps,a=t.children,r=function(i,l,o){var d,c,m;if((d=s.onDayClick)===null||d===void 0||d.call(s,i,l,o),l.selected&&!s.required){(c=s.onSelect)===null||c===void 0||c.call(s,void 0,i,l,o);return}(m=s.onSelect)===null||m===void 0||m.call(s,i,i,l,o)},n={selected:s.selected,onDayClick:r};return e.jsx($o.Provider,{value:n,children:a})}function qx(){var t=p.useContext($o);if(!t)throw new Error("useSelectSingle must be used within a SelectSingleProvider");return t}function qv(t,s){var a=It(),r=qx(),n=Fo(),i=_o(),l=Oo(),o=l.focusDayAfter,d=l.focusDayBefore,c=l.focusWeekAfter,m=l.focusWeekBefore,u=l.blur,h=l.focus,x=l.focusMonthBefore,g=l.focusMonthAfter,y=l.focusYearBefore,f=l.focusYearAfter,b=l.focusStartOfWeek,v=l.focusEndOfWeek,C=function(T){var N,U,$,L;zi(a)?(N=r.onDayClick)===null||N===void 0||N.call(r,t,s,T):Pn(a)?(U=n.onDayClick)===null||U===void 0||U.call(n,t,s,T):In(a)?($=i.onDayClick)===null||$===void 0||$.call(i,t,s,T):(L=a.onDayClick)===null||L===void 0||L.call(a,t,s,T)},w=function(T){var N;h(t),(N=a.onDayFocus)===null||N===void 0||N.call(a,t,s,T)},k=function(T){var N;u(),(N=a.onDayBlur)===null||N===void 0||N.call(a,t,s,T)},A=function(T){var N;(N=a.onDayMouseEnter)===null||N===void 0||N.call(a,t,s,T)},M=function(T){var N;(N=a.onDayMouseLeave)===null||N===void 0||N.call(a,t,s,T)},D=function(T){var N;(N=a.onDayPointerEnter)===null||N===void 0||N.call(a,t,s,T)},S=function(T){var N;(N=a.onDayPointerLeave)===null||N===void 0||N.call(a,t,s,T)},j=function(T){var N;(N=a.onDayTouchCancel)===null||N===void 0||N.call(a,t,s,T)},P=function(T){var N;(N=a.onDayTouchEnd)===null||N===void 0||N.call(a,t,s,T)},R=function(T){var N;(N=a.onDayTouchMove)===null||N===void 0||N.call(a,t,s,T)},O=function(T){var N;(N=a.onDayTouchStart)===null||N===void 0||N.call(a,t,s,T)},F=function(T){var N;(N=a.onDayKeyUp)===null||N===void 0||N.call(a,t,s,T)},_=function(T){var N;switch(T.key){case"ArrowLeft":T.preventDefault(),T.stopPropagation(),a.dir==="rtl"?o():d();break;case"ArrowRight":T.preventDefault(),T.stopPropagation(),a.dir==="rtl"?d():o();break;case"ArrowDown":T.preventDefault(),T.stopPropagation(),c();break;case"ArrowUp":T.preventDefault(),T.stopPropagation(),m();break;case"PageUp":T.preventDefault(),T.stopPropagation(),T.shiftKey?y():x();break;case"PageDown":T.preventDefault(),T.stopPropagation(),T.shiftKey?f():g();break;case"Home":T.preventDefault(),T.stopPropagation(),b();break;case"End":T.preventDefault(),T.stopPropagation(),v();break}(N=a.onDayKeyDown)===null||N===void 0||N.call(a,t,s,T)},B={onClick:C,onFocus:w,onBlur:k,onKeyDown:_,onKeyUp:F,onMouseEnter:A,onMouseLeave:M,onPointerEnter:D,onPointerLeave:S,onTouchCancel:j,onTouchEnd:P,onTouchMove:R,onTouchStart:O};return B}function ej(){var t=It(),s=qx(),a=Fo(),r=_o(),n=zi(t)?s.selected:Pn(t)?a.selected:In(t)?r.selected:void 0;return n}function tj(t){return Object.values(pa).includes(t)}function sj(t,s){var a=[t.classNames.day];return Object.keys(s).forEach(function(r){var n=t.modifiersClassNames[r];if(n)a.push(n);else if(tj(r)){var i=t.classNames["day_".concat(r)];i&&a.push(i)}}),a}function aj(t,s){var a=et({},t.styles.day);return Object.keys(s).forEach(function(r){var n;a=et(et({},a),(n=t.modifiersStyles)===null||n===void 0?void 0:n[r])}),a}function rj(t,s,a){var r,n,i,l=It(),o=Oo(),d=Xv(t,s),c=qv(t,d),m=ej(),u=!!(l.onDayClick||l.mode!=="default");p.useEffect(function(){var A;d.outside||o.focusedDay&&u&&Us(o.focusedDay,t)&&((A=a.current)===null||A===void 0||A.focus())},[o.focusedDay,t,a,u,d.outside]);var h=sj(l,d).join(" "),x=aj(l,d),g=!!(d.outside&&!l.showOutsideDays||d.hidden),y=(i=(n=l.components)===null||n===void 0?void 0:n.DayContent)!==null&&i!==void 0?i:Av,f=e.jsx(y,{date:t,displayMonth:s,activeModifiers:d}),b={style:x,className:h,children:f,role:"gridcell"},v=o.focusTarget&&Us(o.focusTarget,t)&&!d.outside,C=o.focusedDay&&Us(o.focusedDay,t),w=et(et(et({},b),(r={disabled:d.disabled,role:"gridcell"},r["aria-selected"]=d.selected,r.tabIndex=C||v?0:-1,r)),c),k={isButton:u,isHidden:g,activeModifiers:d,selectedDays:m,buttonProps:w,divProps:b};return k}function nj(t){var s=p.useRef(null),a=rj(t.date,t.displayMonth,s);return a.isHidden?e.jsx("div",{role:"gridcell"}):a.isButton?e.jsx(gi,et({name:"day",ref:s},a.buttonProps)):e.jsx("div",et({},a.divProps))}function ij(t){var s=t.number,a=t.dates,r=It(),n=r.onWeekNumberClick,i=r.styles,l=r.classNames,o=r.locale,d=r.labels.labelWeekNumber,c=r.formatters.formatWeekNumber,m=c(Number(s),{locale:o});if(!n)return e.jsx("span",{className:l.weeknumber,style:i.weeknumber,children:m});var u=d(Number(s),{locale:o}),h=function(x){n(s,a,x)};return e.jsx(gi,{name:"week-number","aria-label":u,className:l.weeknumber,style:i.weeknumber,onClick:h,children:m})}function lj(t){var s,a,r=It(),n=r.styles,i=r.classNames,l=r.showWeekNumber,o=r.components,d=(s=o==null?void 0:o.Day)!==null&&s!==void 0?s:nj,c=(a=o==null?void 0:o.WeekNumber)!==null&&a!==void 0?a:ij,m;return l&&(m=e.jsx("td",{className:i.cell,style:n.cell,children:e.jsx(c,{number:t.weekNumber,dates:t.dates})})),e.jsxs("tr",{className:i.row,style:n.row,children:[m,t.dates.map(function(u){return e.jsx("td",{className:i.cell,style:n.cell,role:"presentation",children:e.jsx(d,{displayMonth:t.displayMonth,date:u})},V0(u))})]})}function lm(t,s,a){for(var r=a!=null&&a.ISOWeek?lx(s):ox(s,a),n=a!=null&&a.ISOWeek?vo(t):jo(t,a),i=Pa(r,n),l=[],o=0;o<=i;o++)l.push(Hs(n,o));var d=l.reduce(function(c,m){var u=a!=null&&a.ISOWeek?Y0(m):Z0(m,a),h=c.find(function(x){return x.weekNumber===u});return h?(h.dates.push(m),c):(c.push({weekNumber:u,dates:[m]}),c)},[]);return d}function oj(t,s){var a=lm(Ks(t),yo(t),s);if(s!=null&&s.useFixedWeeks){var r=B0(t,s);if(r<6){var n=a[a.length-1],i=n.dates[n.dates.length-1],l=Ul(i,6-r),o=lm(Ul(i,1),l,s);a.push.apply(a,o)}}return a}function cj(t){var s,a,r,n=It(),i=n.locale,l=n.classNames,o=n.styles,d=n.hideHead,c=n.fixedWeeks,m=n.components,u=n.weekStartsOn,h=n.firstWeekContainsDate,x=n.ISOWeek,g=oj(t.displayMonth,{useFixedWeeks:!!c,ISOWeek:x,locale:i,weekStartsOn:u,firstWeekContainsDate:h}),y=(s=m==null?void 0:m.Head)!==null&&s!==void 0?s:Cv,f=(a=m==null?void 0:m.Row)!==null&&a!==void 0?a:lj,b=(r=m==null?void 0:m.Footer)!==null&&r!==void 0?r:jv;return e.jsxs("table",{id:t.id,className:l.table,style:o.table,role:"grid","aria-labelledby":t["aria-labelledby"],children:[!d&&e.jsx(y,{}),e.jsx("tbody",{className:l.tbody,style:o.tbody,children:g.map(function(v){return e.jsx(f,{displayMonth:t.displayMonth,dates:v.dates,weekNumber:v.weekNumber},v.weekNumber)})}),e.jsx(b,{displayMonth:t.displayMonth})]})}function dj(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var mj=dj()?p.useLayoutEffect:p.useEffect,ul=!1,uj=0;function om(){return"react-day-picker-".concat(++uj)}function xj(t){var s,a=t??(ul?om():null),r=p.useState(a),n=r[0],i=r[1];return mj(function(){n===null&&i(om())},[]),p.useEffect(function(){ul===!1&&(ul=!0)},[]),(s=t??n)!==null&&s!==void 0?s:void 0}function hj(t){var s,a,r=It(),n=r.dir,i=r.classNames,l=r.styles,o=r.components,d=En().displayMonths,c=xj(r.id?"".concat(r.id,"-").concat(t.displayIndex):void 0),m=r.id?"".concat(r.id,"-grid-").concat(t.displayIndex):void 0,u=[i.month],h=l.month,x=t.displayIndex===0,g=t.displayIndex===d.length-1,y=!x&&!g;n==="rtl"&&(s=[x,g],g=s[0],x=s[1]),x&&(u.push(i.caption_start),h=et(et({},h),l.caption_start)),g&&(u.push(i.caption_end),h=et(et({},h),l.caption_end)),y&&(u.push(i.caption_between),h=et(et({},h),l.caption_between));var f=(a=o==null?void 0:o.Caption)!==null&&a!==void 0?a:vv;return e.jsxs("div",{className:u.join(" "),style:h,children:[e.jsx(f,{id:c,displayMonth:t.displayMonth,displayIndex:t.displayIndex}),e.jsx(cj,{id:m,"aria-labelledby":c,displayMonth:t.displayMonth})]},t.displayIndex)}function pj(t){var s=It(),a=s.classNames,r=s.styles;return e.jsx("div",{className:a.months,style:r.months,children:t.children})}function gj(t){var s,a,r=t.initialProps,n=It(),i=Oo(),l=En(),o=p.useState(!1),d=o[0],c=o[1];p.useEffect(function(){n.initialFocus&&i.focusTarget&&(d||(i.focus(i.focusTarget),c(!0)))},[n.initialFocus,d,i.focus,i.focusTarget,i]);var m=[n.classNames.root,n.className];n.numberOfMonths>1&&m.push(n.classNames.multiple_months),n.showWeekNumber&&m.push(n.classNames.with_weeknumber);var u=et(et({},n.styles.root),n.style),h=Object.keys(r).filter(function(g){return g.startsWith("data-")}).reduce(function(g,y){var f;return et(et({},g),(f={},f[y]=r[y],f))},{}),x=(a=(s=r.components)===null||s===void 0?void 0:s.Months)!==null&&a!==void 0?a:pj;return e.jsx("div",et({className:m.join(" "),style:u,dir:n.dir,id:n.id,nonce:r.nonce,title:r.title,lang:r.lang},h,{children:e.jsx(x,{children:l.displayMonths.map(function(g,y){return e.jsx(hj,{displayIndex:y,displayMonth:g},y)})})}))}function fj(t){var s=t.children,a=Bb(t,["children"]);return e.jsx(iv,{initialProps:a,children:e.jsx(gv,{children:e.jsx(Qv,{initialProps:a,children:e.jsx(Sv,{initialProps:a,children:e.jsx(Rv,{initialProps:a,children:e.jsx(Lv,{children:e.jsx(Zv,{children:s})})})})})})})}function yj(t){return e.jsx(fj,et({},t,{children:e.jsx(gj,{initialProps:t})}))}function ei({className:t,classNames:s,showOutsideDays:a=!0,...r}){return e.jsx(yj,{showOutsideDays:a,className:De("p-3",t),classNames:{months:"flex flex-col sm:flex-row gap-2",month:"flex flex-col gap-4",caption:"flex justify-center pt-1 relative items-center w-full",caption_label:"text-sm font-medium",nav:"flex items-center gap-1",nav_button:De(Nn({variant:"outline"}),"size-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-x-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:De("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md",r.mode==="range"?"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md":"[&:has([aria-selected])]:rounded-md"),day:De(Nn({variant:"ghost"}),"size-8 p-0 font-normal aria-selected:opacity-100"),day_range_start:"day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground",day_range_end:"day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground aria-selected:text-muted-foreground",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...s},components:{IconLeft:({className:n,...i})=>e.jsx(ux,{className:De("size-4",n),...i}),IconRight:({className:n,...i})=>e.jsx(Si,{className:De("size-4",n),...i})},...r})}function Bs({value:t,onChange:s,minDate:a,maxDate:r,placeholderText:n="dd/mm/yyyy",disabled:i=!1,className:l,wrapperClassName:o,error:d=!1,displayFormat:c="dd/MM/yyyy",id:m}){const[u,h]=p.useState(!1),x=p.useMemo(()=>{if(t){if(t instanceof Date)return Tr(t)?t:void 0;if(typeof t=="string")try{const b=el(t,"yyyy-MM-dd",new Date);return Tr(b)?b:void 0}catch{return}}},[t]),g=p.useMemo(()=>{if(a){if(a instanceof Date)return Tr(a)?a:void 0;if(typeof a=="string"){const b=el(a,"yyyy-MM-dd",new Date);return Tr(b)?b:void 0}}},[a]),y=p.useMemo(()=>{if(r){if(r instanceof Date)return Tr(r)?r:void 0;if(typeof r=="string"){const b=el(r,"yyyy-MM-dd",new Date);return Tr(b)?b:void 0}}},[r]),f=b=>{if(h(!1),!!s){if(!b){s(null);return}s(Ye(b,"yyyy-MM-dd"))}};return e.jsx("div",{className:De("relative",o),children:e.jsxs(Zs,{open:u,onOpenChange:h,children:[e.jsx(Xs,{asChild:!0,children:e.jsxs(I,{id:m,disabled:i,variant:"outline",className:De("w-full justify-start text-left font-normal",!x&&"text-muted-foreground",d&&"border-destructive ring-destructive/20",l),children:[e.jsx(ot,{className:"mr-2 h-4 w-4"}),x?Ye(x,c):e.jsx("span",{children:n})]})}),e.jsx(Qs,{className:"w-auto p-0",align:"start",children:e.jsx(ei,{mode:"single",selected:x,onSelect:f,disabled:b=>!!(g&&by),initialFocus:!0})})]})})}function bj({isAdmin:t,dateRange:s,customStartDate:a,customEndDate:r,showCustomDatePicker:n,refreshing:i,onDateRangeChange:l,onCustomStartDateChange:o,onCustomEndDateChange:d,onShowCustomDatePickerChange:c,onApplyCustomDate:m,onResetCustomDates:u,onRefresh:h}){return e.jsx(q,{className:"shadow-md","data-testid":"dashboard-filters-bar",children:e.jsx(ee,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Qa,{className:"w-5 h-5 text-muted-foreground"}),e.jsx("h3",{className:"font-semibold text-gray-900",children:"Filters"}),t&&e.jsx(oe,{variant:"outline",className:"bg-purple-50 text-purple-700 border-purple-200","data-testid":"management-badge",children:"Management View"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3 w-full sm:w-auto",children:[t?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ot,{className:"w-4 h-4 text-muted-foreground"}),e.jsxs(Be,{value:s,onValueChange:l,"data-testid":"date-range-select",children:[e.jsx(ze,{className:"w-[140px]",children:e.jsx(Ve,{placeholder:"Select period"})}),e.jsxs(He,{children:[e.jsx(G,{value:"all",children:"All Time"}),e.jsx(G,{value:"today",children:"Today"}),e.jsx(G,{value:"week",children:"This Week"}),e.jsx(G,{value:"month",children:"This Month"}),e.jsx(G,{value:"last7days",children:"Last 7 Days"}),e.jsx(G,{value:"last30days",children:"Last 30 Days"}),e.jsx(G,{value:"custom",children:"Custom Range"})]})]}),s==="custom"&&e.jsxs(Zs,{open:n,onOpenChange:c,children:[e.jsx(Xs,{asChild:!0,children:e.jsxs(I,{variant:"outline",size:"sm",className:"gap-2","data-testid":"custom-date-trigger",children:[e.jsx(ot,{className:"w-4 h-4"}),a&&r?`${Ye(a,"MMM d, yyyy")} - ${Ye(r,"MMM d, yyyy")}`:"Select dates"]})}),e.jsx(Qs,{className:"w-auto p-4",align:"start",sideOffset:8,"data-testid":"custom-date-picker",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(ie,{htmlFor:"start-date",className:"text-sm font-medium",children:"Start Date"}),e.jsx(Bs,{value:a||null,onChange:x=>{const g=x?new Date(x):void 0;g?(o(g),r&&g>r&&d(g)):o(void 0)},maxDate:new Date,placeholderText:"dd/mm/yyyy",className:"w-full","data-testid":"start-date-input"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ie,{htmlFor:"end-date",className:"text-sm font-medium",children:"End Date"}),e.jsx(Bs,{value:r||null,onChange:x=>{const g=x?new Date(x):void 0;g?(d(g),a&&gl(x),"data-testid":"date-range-select-user",children:[e.jsx(ze,{className:"w-[140px]",children:e.jsx(Ve,{placeholder:"Select period"})}),e.jsxs(He,{children:[e.jsx(G,{value:"all",children:"All Time"}),e.jsx(G,{value:"today",children:"Today"}),e.jsx(G,{value:"week",children:"This Week"}),e.jsx(G,{value:"month",children:"This Month"}),e.jsx(G,{value:"last7days",children:"Last 7 Days"}),e.jsx(G,{value:"last30days",children:"Last 30 Days"}),e.jsx(G,{value:"custom",children:"Custom Range"})]})]}),s==="custom"&&e.jsxs(Zs,{open:n,onOpenChange:c,children:[e.jsx(Xs,{asChild:!0,children:e.jsxs(I,{variant:"outline",size:"sm",className:"gap-2","data-testid":"custom-date-trigger",children:[e.jsx(ot,{className:"w-4 h-4"}),a&&r?`${Ye(a,"MMM d, yyyy")} - ${Ye(r,"MMM d, yyyy")}`:"Select dates"]})}),e.jsx(Qs,{className:"w-auto p-4",align:"start",sideOffset:8,"data-testid":"custom-date-picker",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(ie,{htmlFor:"start-date-user",className:"text-sm font-medium",children:"Start Date"}),e.jsx(Bs,{value:a||null,onChange:x=>{const g=x?new Date(x):void 0;g?(o(g),r&&g>r&&d(g)):o(void 0)},maxDate:new Date,placeholderText:"dd/mm/yyyy",className:"w-full","data-testid":"start-date-input-user"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ie,{htmlFor:"end-date-user",className:"text-sm font-medium",children:"End Date"}),e.jsx(Bs,{value:r||null,onChange:x=>{const g=x?new Date(x):void 0;g?(d(g),a&&g