diff --git a/.gitignore b/.gitignore
index 6221ec4..6f2bd12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,4 +20,11 @@ backend/uploads/
# Log files
*.log
server.log
-backend/server.log
\ No newline at end of file
+backend/server.log
+
+# Build output
+dist/
+build/
+
+# Webpack output
+public/assets/
\ No newline at end of file
diff --git a/backend/tests/integration/inbox-no-tags.test.js b/backend/tests/integration/inbox-no-tags.test.js
new file mode 100644
index 0000000..f0d0b07
--- /dev/null
+++ b/backend/tests/integration/inbox-no-tags.test.js
@@ -0,0 +1,348 @@
+const request = require('supertest');
+const app = require('../../app');
+const { InboxItem, Tag } = require('../../models');
+const { createTestUser } = require('../helpers/testUtils');
+
+describe('Inbox Routes - No Tags Scenario', () => {
+ let user, agent;
+
+ beforeEach(async () => {
+ user = await createTestUser({
+ email: 'test@example.com'
+ });
+
+ // Create authenticated agent
+ agent = request.agent(app);
+ await agent
+ .post('/api/login')
+ .send({
+ email: 'test@example.com',
+ password: 'password123'
+ });
+
+ // Ensure no tags exist for this user (clean slate)
+ await Tag.destroy({ where: { user_id: user.id } });
+ });
+
+ describe('GET /api/inbox - No Tags Scenario', () => {
+ it('should return empty inbox when no items exist and no tags exist', async () => {
+ const response = await agent.get('/api/inbox');
+
+ expect(response.status).toBe(200);
+ expect(Array.isArray(response.body)).toBe(true);
+ expect(response.body.length).toBe(0);
+ });
+
+ it('should return inbox items even when no tags exist in system', async () => {
+ // Create inbox items without any tags in the system
+ const inboxItem1 = await InboxItem.create({
+ content: 'Test item without tags',
+ status: 'added',
+ user_id: user.id
+ });
+
+ const inboxItem2 = await InboxItem.create({
+ content: 'Another item without tags',
+ status: 'added',
+ user_id: user.id
+ });
+
+ const response = await agent.get('/api/inbox');
+
+ expect(response.status).toBe(200);
+ expect(Array.isArray(response.body)).toBe(true);
+ expect(response.body.length).toBe(2);
+ expect(response.body.map(item => item.id)).toContain(inboxItem1.id);
+ expect(response.body.map(item => item.id)).toContain(inboxItem2.id);
+ expect(response.body[0].content).toBeDefined();
+ expect(response.body[0].status).toBe('added');
+ expect(response.body[0].user_id).toBe(user.id);
+ });
+
+ it('should handle mixed inbox items when no tags exist', async () => {
+ // Create inbox items with different statuses
+ const addedItem = await InboxItem.create({
+ content: 'Added item',
+ status: 'added',
+ user_id: user.id
+ });
+
+ await InboxItem.create({
+ content: 'Processed item',
+ status: 'processed',
+ user_id: user.id
+ });
+
+ await InboxItem.create({
+ content: 'Deleted item',
+ status: 'deleted',
+ user_id: user.id
+ });
+
+ const response = await agent.get('/api/inbox');
+
+ expect(response.status).toBe(200);
+ expect(response.body.length).toBe(1); // Only 'added' items should be returned
+ expect(response.body[0].id).toBe(addedItem.id);
+ expect(response.body[0].status).toBe('added');
+ });
+ });
+
+ describe('GET /api/tags - No Tags Scenario', () => {
+ it('should return empty array when no tags exist', async () => {
+ const response = await agent.get('/api/tags');
+
+ expect(response.status).toBe(200);
+ expect(Array.isArray(response.body)).toBe(true);
+ expect(response.body.length).toBe(0);
+ });
+
+ it('should not affect inbox functionality when tags endpoint returns empty', async () => {
+ // Create inbox item
+ await InboxItem.create({
+ content: 'Test item',
+ status: 'added',
+ user_id: user.id
+ });
+
+ // Verify tags endpoint returns empty
+ const tagsResponse = await agent.get('/api/tags');
+ expect(tagsResponse.status).toBe(200);
+ expect(tagsResponse.body.length).toBe(0);
+
+ // Verify inbox still works
+ const inboxResponse = await agent.get('/api/inbox');
+ expect(inboxResponse.status).toBe(200);
+ expect(inboxResponse.body.length).toBe(1);
+ expect(inboxResponse.body[0].content).toBe('Test item');
+ });
+ });
+
+ describe('POST /api/inbox - No Tags Scenario', () => {
+ it('should create inbox items successfully when no tags exist', async () => {
+ const inboxData = {
+ content: 'New inbox item without tags',
+ source: 'web'
+ };
+
+ const response = await agent
+ .post('/api/inbox')
+ .send(inboxData);
+
+ expect(response.status).toBe(201);
+ expect(response.body.content).toBe(inboxData.content);
+ expect(response.body.source).toBe(inboxData.source);
+ expect(response.body.status).toBe('added');
+ expect(response.body.user_id).toBe(user.id);
+ });
+
+ it('should handle multiple inbox items creation when no tags exist', async () => {
+ const items = [
+ { content: 'First item', source: 'web' },
+ { content: 'Second item', source: 'telegram' },
+ { content: 'Third item', source: 'api' }
+ ];
+
+ for (const item of items) {
+ const response = await agent
+ .post('/api/inbox')
+ .send(item);
+
+ expect(response.status).toBe(201);
+ expect(response.body.content).toBe(item.content);
+ expect(response.body.source).toBe(item.source);
+ }
+
+ // Verify all items are retrievable
+ const getResponse = await agent.get('/api/inbox');
+ expect(getResponse.status).toBe(200);
+ expect(getResponse.body.length).toBe(3);
+ });
+ });
+
+ describe('PATCH /api/inbox/:id - No Tags Scenario', () => {
+ let inboxItem;
+
+ beforeEach(async () => {
+ inboxItem = await InboxItem.create({
+ content: 'Original content',
+ status: 'added',
+ user_id: user.id
+ });
+ });
+
+ it('should update inbox items when no tags exist', async () => {
+ const updateData = {
+ content: 'Updated content without tags',
+ status: 'processed'
+ };
+
+ const response = await agent
+ .patch(`/api/inbox/${inboxItem.id}`)
+ .send(updateData);
+
+ expect(response.status).toBe(200);
+ expect(response.body.content).toBe(updateData.content);
+ expect(response.body.status).toBe(updateData.status);
+ });
+ });
+
+ describe('PATCH /api/inbox/:id/process - No Tags Scenario', () => {
+ let inboxItem;
+
+ beforeEach(async () => {
+ inboxItem = await InboxItem.create({
+ content: 'Item to process',
+ status: 'added',
+ user_id: user.id
+ });
+ });
+
+ it('should process inbox items when no tags exist', async () => {
+ const response = await agent.patch(`/api/inbox/${inboxItem.id}/process`);
+
+ expect(response.status).toBe(200);
+ expect(response.body.status).toBe('processed');
+ });
+ });
+
+ describe('DELETE /api/inbox/:id - No Tags Scenario', () => {
+ let inboxItem;
+
+ beforeEach(async () => {
+ inboxItem = await InboxItem.create({
+ content: 'Item to delete',
+ status: 'added',
+ user_id: user.id
+ });
+ });
+
+ it('should delete inbox items when no tags exist', async () => {
+ const response = await agent.delete(`/api/inbox/${inboxItem.id}`);
+
+ expect(response.status).toBe(200);
+ expect(response.body.message).toBe('Inbox item successfully deleted');
+
+ // Verify item status is updated to deleted
+ const deletedItem = await InboxItem.findByPk(inboxItem.id);
+ expect(deletedItem).not.toBeNull();
+ expect(deletedItem.status).toBe('deleted');
+ });
+ });
+
+ describe('Full Workflow - No Tags Scenario', () => {
+ it('should support complete inbox workflow without any tags in system', async () => {
+ // Step 1: Verify no tags exist
+ const tagsResponse = await agent.get('/api/tags');
+ expect(tagsResponse.status).toBe(200);
+ expect(tagsResponse.body.length).toBe(0);
+
+ // Step 2: Create inbox item
+ const createResponse = await agent
+ .post('/api/inbox')
+ .send({ content: 'Complete workflow test', source: 'web' });
+ expect(createResponse.status).toBe(201);
+ const itemId = createResponse.body.id;
+
+ // Step 3: Retrieve inbox items
+ const getResponse = await agent.get('/api/inbox');
+ expect(getResponse.status).toBe(200);
+ expect(getResponse.body.length).toBe(1);
+ expect(getResponse.body[0].id).toBe(itemId);
+
+ // Step 4: Update inbox item
+ const updateResponse = await agent
+ .patch(`/api/inbox/${itemId}`)
+ .send({ content: 'Updated workflow test' });
+ expect(updateResponse.status).toBe(200);
+ expect(updateResponse.body.content).toBe('Updated workflow test');
+
+ // Step 5: Process inbox item
+ const processResponse = await agent.patch(`/api/inbox/${itemId}/process`);
+ expect(processResponse.status).toBe(200);
+ expect(processResponse.body.status).toBe('processed');
+
+ // Step 6: Verify processed item is not in main inbox list
+ const finalGetResponse = await agent.get('/api/inbox');
+ expect(finalGetResponse.status).toBe(200);
+ expect(finalGetResponse.body.length).toBe(0); // Processed items don't appear in inbox
+ });
+
+ it('should handle concurrent operations when no tags exist', async () => {
+ // Create multiple items concurrently
+ const createPromises = Array.from({ length: 5 }, (_, i) =>
+ agent.post('/api/inbox').send({
+ content: `Concurrent item ${i + 1}`,
+ source: 'test'
+ })
+ );
+
+ const createResponses = await Promise.all(createPromises);
+
+ // All should succeed
+ createResponses.forEach(response => {
+ expect(response.status).toBe(201);
+ });
+
+ // Verify all items are retrievable
+ const getResponse = await agent.get('/api/inbox');
+ expect(getResponse.status).toBe(200);
+ expect(getResponse.body.length).toBe(5);
+
+ // Process all items concurrently
+ const itemIds = createResponses.map(response => response.body.id);
+ const processPromises = itemIds.map(id =>
+ agent.patch(`/api/inbox/${id}/process`)
+ );
+
+ const processResponses = await Promise.all(processPromises);
+
+ // All should succeed
+ processResponses.forEach(response => {
+ expect(response.status).toBe(200);
+ expect(response.body.status).toBe('processed');
+ });
+
+ // Verify no items remain in inbox
+ const finalGetResponse = await agent.get('/api/inbox');
+ expect(finalGetResponse.status).toBe(200);
+ expect(finalGetResponse.body.length).toBe(0);
+ });
+ });
+
+ describe('Error Handling - No Tags Scenario', () => {
+ it('should handle invalid inbox item operations gracefully when no tags exist', async () => {
+ // Try to get non-existent item
+ const getResponse = await agent.get('/api/inbox/999999');
+ expect(getResponse.status).toBe(404);
+ expect(getResponse.body.error).toBe('Inbox item not found.');
+
+ // Try to update non-existent item
+ const updateResponse = await agent
+ .patch('/api/inbox/999999')
+ .send({ content: 'Updated' });
+ expect(updateResponse.status).toBe(404);
+ expect(updateResponse.body.error).toBe('Inbox item not found.');
+
+ // Try to process non-existent item
+ const processResponse = await agent.patch('/api/inbox/999999/process');
+ expect(processResponse.status).toBe(404);
+ expect(processResponse.body.error).toBe('Inbox item not found.');
+
+ // Try to delete non-existent item
+ const deleteResponse = await agent.delete('/api/inbox/999999');
+ expect(deleteResponse.status).toBe(404);
+ expect(deleteResponse.body.error).toBe('Inbox item not found.');
+ });
+
+ it('should validate required fields when creating inbox items (no tags scenario)', async () => {
+ // Try to create item without content
+ const response = await agent
+ .post('/api/inbox')
+ .send({});
+
+ expect(response.status).toBe(400);
+ expect(response.body.error).toBe('Content is required');
+ });
+ });
+});
\ No newline at end of file
diff --git a/dist/frontend_components_Tasks_tsx.5d1f9b2b7404e2433dee.js b/dist/frontend_components_Tasks_tsx.5d1f9b2b7404e2433dee.js
deleted file mode 100644
index 951a07c..0000000
--- a/dist/frontend_components_Tasks_tsx.5d1f9b2b7404e2433dee.js
+++ /dev/null
@@ -1,92 +0,0 @@
-"use strict";
-/*
- * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-(self["webpackChunktududi"] = self["webpackChunktududi"] || []).push([["frontend_components_Tasks_tsx"],{
-
-/***/ "./frontend/components/Task/getDescription.ts":
-/*!****************************************************!*\
- !*** ./frontend/components/Task/getDescription.ts ***!
- \****************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDescription: () => (/* binding */ getDescription)\n/* harmony export */ });\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar getDescription = function getDescription(query, projects, t) {\n try {\n // Default descriptions as fallbacks in case translation function fails\n var defaultDescriptions = {\n project: \"Project tasks\",\n today: \"Tasks due today or scheduled for immediate attention\",\n inbox: \"Uncategorized tasks without project or due date\",\n next: \"Tasks that are actionable in the near future\",\n upcoming: \"Tasks scheduled for the upcoming week\",\n someday: \"Tasks without urgency or specific due date\",\n completed: \"Tasks you've completed\",\n allTasks: \"All tasks from different projects and priorities\"\n };\n\n // Check for project_id first\n var projectId = query.get('project_id');\n if (projectId) {\n try {\n var project = projects.find(function (p) {\n var _p$id;\n return ((_p$id = p.id) === null || _p$id === void 0 ? void 0 : _p$id.toString()) === projectId;\n });\n if (project) {\n return t(\"taskViews.project.withName\", {\n projectName: project.name\n });\n } else {\n return t(\"taskViews.project.noName\");\n }\n } catch (e) {\n console.error(\"Translation error for project description:\", e);\n // Fallback with project name if available\n var _project = projects.find(function (p) {\n var _p$id2;\n return ((_p$id2 = p.id) === null || _p$id2 === void 0 ? void 0 : _p$id2.toString()) === projectId;\n });\n return _project ? \"Tasks for project: \".concat(_project.name) : defaultDescriptions.project;\n }\n }\n\n // Then check for type and status parameters\n try {\n if (query.get('type') === 'today') {\n return t(\"taskViews.today\");\n }\n if (query.get('type') === 'inbox') {\n return t(\"taskViews.inbox\");\n }\n if (query.get('type') === 'next') {\n return t(\"taskViews.next\");\n }\n if (query.get('type') === 'upcoming') {\n return t(\"taskViews.upcoming\");\n }\n if (query.get('type') === 'someday') {\n return t(\"taskViews.someday\");\n }\n if (query.get('status') === 'done') {\n return t(\"taskViews.completed\");\n }\n return t(\"taskViews.allTasks\");\n } catch (e) {\n console.error(\"Translation error for task view description:\", e);\n\n // Return appropriate fallback based on type or status\n if (query.get('type') === 'today') return defaultDescriptions.today;\n if (query.get('type') === 'inbox') return defaultDescriptions.inbox;\n if (query.get('type') === 'next') return defaultDescriptions.next;\n if (query.get('type') === 'upcoming') return defaultDescriptions.upcoming;\n if (query.get('type') === 'someday') return defaultDescriptions.someday;\n if (query.get('status') === 'done') return defaultDescriptions.completed;\n return defaultDescriptions.allTasks;\n }\n } catch (error) {\n console.error(\"Error in getDescription:\", error);\n return \"Tasks overview\";\n }\n};\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/getDescription.ts?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/getTitleAndIcon.ts":
-/*!*****************************************************!*\
- !*** ./frontend/components/Task/getTitleAndIcon.ts ***!
- \*****************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getTitleAndIcon: () => (/* binding */ getTitleAndIcon)\n/* harmony export */ });\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/InboxIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/MoonIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/Bars4Icon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\nvar getTitleAndIcon = function getTitleAndIcon(query, projects, t) {\n try {\n // Default titles as fallbacks in case translation function fails\n var defaultTitles = {\n project: 'Project',\n today: 'Today',\n inbox: 'Inbox',\n next: 'Next Actions',\n upcoming: 'Upcoming',\n someday: 'Someday',\n completed: 'Completed',\n allTasks: 'All Tasks'\n };\n var projectId = query.get('project_id');\n if (projectId) {\n var project = projects.find(function (p) {\n var _p$id;\n return ((_p$id = p.id) === null || _p$id === void 0 ? void 0 : _p$id.toString()) === projectId;\n });\n return {\n title: project ? project.name : t('sidebar.projects'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n };\n }\n try {\n if (query.get('type') === 'today') {\n return {\n title: t('tasks.today'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n };\n }\n if (query.get('type') === 'inbox') {\n return {\n title: t('sidebar.inbox'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n };\n }\n if (query.get('type') === 'next') {\n return {\n title: t('sidebar.nextActions'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n };\n }\n if (query.get('type') === 'upcoming') {\n return {\n title: t('sidebar.upcoming'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n };\n }\n if (query.get('type') === 'someday') {\n return {\n title: t('taskViews.someday') || defaultTitles.someday,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n };\n }\n if (query.get('status') === 'done') {\n return {\n title: t('sidebar.completed'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n };\n }\n return {\n title: t('sidebar.allTasks'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n };\n } catch (e) {\n console.error(\"Translation error for task view title:\", e);\n\n // Return appropriate fallback based on type or status\n if (query.get('type') === 'today') return {\n title: defaultTitles.today,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n };\n if (query.get('type') === 'inbox') return {\n title: defaultTitles.inbox,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n };\n if (query.get('type') === 'next') return {\n title: defaultTitles.next,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n };\n if (query.get('type') === 'upcoming') return {\n title: defaultTitles.upcoming,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n };\n if (query.get('type') === 'someday') return {\n title: defaultTitles.someday,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n };\n if (query.get('status') === 'done') return {\n title: defaultTitles.completed,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n };\n return {\n title: defaultTitles.allTasks,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n };\n }\n } catch (error) {\n console.error(\"Error in getTitleAndIcon:\", error);\n return {\n title: \"Tasks\",\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n };\n }\n};\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/getTitleAndIcon.ts?");
-
-/***/ }),
-
-/***/ "./frontend/components/Tasks.tsx":
-/*!***************************************!*\
- !*** ./frontend/components/Tasks.tsx ***!
- \***************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _Task_TaskList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task/TaskList */ \"./frontend/components/Task/TaskList.tsx\");\n/* harmony import */ var _Task_NewTask__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Task/NewTask */ \"./frontend/components/Task/NewTask.tsx\");\n/* harmony import */ var _Task_getTitleAndIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Task/getTitleAndIcon */ \"./frontend/components/Task/getTitleAndIcon.ts\");\n/* harmony import */ var _Task_getDescription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Task/getDescription */ \"./frontend/components/Task/getDescription.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TagIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/XMarkIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/ChevronDoubleDownIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/ChevronDownIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/MagnifyingGlassIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\nvar capitalize = function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n// Helper function to get search placeholder by language\nvar getSearchPlaceholder = function getSearchPlaceholder(language) {\n var placeholders = {\n en: 'Search tasks...',\n el: 'Αναζήτηση εργασιών...',\n es: 'Buscar tareas...',\n de: 'Aufgaben suchen...',\n jp: 'タスクを検索...',\n ua: 'Пошук завдань...'\n };\n return placeholders[language] || 'Search tasks...';\n};\nvar Tasks = function Tasks() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_7__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState2 = _slicedToArray(_useState, 2),\n tasks = _useState2[0],\n setTasks = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState4 = _slicedToArray(_useState3, 2),\n projects = _useState4[0],\n setProjects = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState6 = _slicedToArray(_useState5, 2),\n loading = _useState6[0],\n setLoading = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState8 = _slicedToArray(_useState7, 2),\n error = _useState8[0],\n setError = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n dropdownOpen = _useState0[0],\n setDropdownOpen = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"due_date:asc\"),\n _useState10 = _slicedToArray(_useState1, 2),\n orderBy = _useState10[0],\n setOrderBy = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState12 = _slicedToArray(_useState11, 2),\n taskSearchQuery = _useState12[0],\n setTaskSearchQuery = _useState12[1];\n var dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var location = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useLocation)();\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useNavigate)();\n var query = new URLSearchParams(location.search);\n var _ref = location.state || {},\n stateTitle = _ref.title,\n stateIcon = _ref.icon;\n var _ref2 = stateTitle && stateIcon ? {\n title: stateTitle,\n icon: stateIcon\n } : (0,_Task_getTitleAndIcon__WEBPACK_IMPORTED_MODULE_4__.getTitleAndIcon)(query, projects, t),\n title = _ref2.title,\n icon = _ref2.icon;\n var IconComponent = typeof icon === \"string\" ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(icon) : icon;\n var tag = query.get(\"tag\");\n var status = query.get(\"status\");\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var savedOrderBy = localStorage.getItem(\"order_by\") || \"due_date:asc\";\n setOrderBy(savedOrderBy);\n var params = new URLSearchParams(location.search);\n if (!params.get(\"order_by\")) {\n params.set(\"order_by\", savedOrderBy);\n navigate({\n pathname: location.pathname,\n search: \"?\".concat(params.toString())\n }, {\n replace: true\n });\n }\n }, [location.pathname]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n setDropdownOpen(false);\n }\n };\n if (dropdownOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return function () {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [dropdownOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchData = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var tagId, _yield$Promise$all, _yield$Promise$all2, tasksResponse, projectsResponse, tasksData, projectsData, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n setLoading(true);\n setError(null);\n _context.p = 1;\n tagId = query.get(\"tag\");\n _context.n = 2;\n return Promise.all([fetch(\"/api/tasks\".concat(location.search).concat(tagId ? \"&tag=\".concat(tagId) : \"\")), fetch(\"/api/projects\")]);\n case 2:\n _yield$Promise$all = _context.v;\n _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);\n tasksResponse = _yield$Promise$all2[0];\n projectsResponse = _yield$Promise$all2[1];\n if (!tasksResponse.ok) {\n _context.n = 4;\n break;\n }\n _context.n = 3;\n return tasksResponse.json();\n case 3:\n tasksData = _context.v;\n setTasks(tasksData.tasks || []);\n _context.n = 5;\n break;\n case 4:\n throw new Error(\"Failed to fetch tasks.\");\n case 5:\n if (!projectsResponse.ok) {\n _context.n = 7;\n break;\n }\n _context.n = 6;\n return projectsResponse.json();\n case 6:\n projectsData = _context.v;\n setProjects((projectsData === null || projectsData === void 0 ? void 0 : projectsData.projects) || []);\n _context.n = 8;\n break;\n case 7:\n throw new Error(\"Failed to fetch projects.\");\n case 8:\n _context.n = 10;\n break;\n case 9:\n _context.p = 9;\n _t = _context.v;\n setError(_t.message);\n case 10:\n _context.p = 10;\n setLoading(false);\n return _context.f(10);\n case 11:\n return _context.a(2);\n }\n }, _callee, null, [[1, 9, 10, 11]]);\n }));\n return function fetchData() {\n return _ref3.apply(this, arguments);\n };\n }();\n fetchData();\n }, [location]);\n var handleRemoveTag = function handleRemoveTag() {\n var params = new URLSearchParams(location.search);\n params[\"delete\"](\"tag\");\n navigate({\n pathname: location.pathname,\n search: \"?\".concat(params.toString())\n });\n };\n var handleTaskCreate = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(taskData) {\n var newTask, taskLink, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_6__.createTask)(taskData);\n case 1:\n newTask = _context2.v;\n // Add the new task optimistically to avoid race conditions\n setTasks(function (prevTasks) {\n return [newTask].concat(_toConsumableArray(prevTasks));\n });\n\n // Show success toast with task link\n taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.created', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/task/\".concat(newTask.uuid),\n className: \"text-green-200 underline hover:text-green-100\"\n }, newTask.name), \" \", t('task.createdSuccessfully', 'created successfully!'));\n showSuccessToast(taskLink);\n _context2.n = 3;\n break;\n case 2:\n _context2.p = 2;\n _t2 = _context2.v;\n console.error(\"Error creating task:\", _t2);\n setError(\"Error creating task.\");\n throw _t2;\n case 3:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 2]]);\n }));\n return function handleTaskCreate(_x) {\n return _ref4.apply(this, arguments);\n };\n }();\n var handleTaskUpdate = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(updatedTask) {\n var response, errorData, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n _context3.n = 1;\n return fetch(\"/api/task/\".concat(updatedTask.id), {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(updatedTask)\n });\n case 1:\n response = _context3.v;\n if (!response.ok) {\n _context3.n = 2;\n break;\n }\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === updatedTask.id ? updatedTask : task;\n });\n });\n _context3.n = 4;\n break;\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n errorData = _context3.v;\n console.error(\"Failed to update task:\", errorData.error);\n setError(\"Failed to update task.\");\n case 4:\n _context3.n = 6;\n break;\n case 5:\n _context3.p = 5;\n _t3 = _context3.v;\n console.error(\"Error updating task:\", _t3);\n setError(\"Error updating task.\");\n case 6:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 5]]);\n }));\n return function handleTaskUpdate(_x2) {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(taskId) {\n var response, errorData, _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.p = 0;\n _context4.n = 1;\n return fetch(\"/api/task/\".concat(taskId), {\n method: \"DELETE\"\n });\n case 1:\n response = _context4.v;\n if (!response.ok) {\n _context4.n = 2;\n break;\n }\n setTasks(function (prevTasks) {\n return prevTasks.filter(function (task) {\n return task.id !== taskId;\n });\n });\n _context4.n = 4;\n break;\n case 2:\n _context4.n = 3;\n return response.json();\n case 3:\n errorData = _context4.v;\n console.error(\"Failed to delete task:\", errorData.error);\n setError(\"Failed to delete task.\");\n case 4:\n _context4.n = 6;\n break;\n case 5:\n _context4.p = 5;\n _t4 = _context4.v;\n console.error(\"Error deleting task:\", _t4);\n setError(\"Error deleting task.\");\n case 6:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 5]]);\n }));\n return function handleTaskDelete(_x3) {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleToggleToday = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(taskId) {\n var updatedTask, _t5;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.p = 0;\n _context5.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_6__.toggleTaskToday)(taskId);\n case 1:\n updatedTask = _context5.v;\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === taskId ? updatedTask : task;\n });\n });\n _context5.n = 3;\n break;\n case 2:\n _context5.p = 2;\n _t5 = _context5.v;\n console.error(\"Error toggling task today status:\", _t5);\n setError(\"Error toggling task today status.\");\n case 3:\n return _context5.a(2);\n }\n }, _callee5, null, [[0, 2]]);\n }));\n return function handleToggleToday(_x4) {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleSortChange = function handleSortChange(order) {\n setOrderBy(order);\n localStorage.setItem(\"order_by\", order);\n var params = new URLSearchParams(location.search);\n params.set(\"order_by\", order);\n navigate({\n pathname: location.pathname,\n search: \"?\".concat(params.toString())\n }, {\n replace: true\n });\n setDropdownOpen(false);\n };\n var description = (0,_Task_getDescription__WEBPACK_IMPORTED_MODULE_5__.getDescription)(query, projects, t);\n var isNewTaskAllowed = function isNewTaskAllowed() {\n return status !== \"done\";\n };\n var filteredTasks = tasks.filter(function (task) {\n return task.name.toLowerCase().includes(taskSearchQuery.toLowerCase());\n });\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col sm:flex-row items-start sm:items-center justify-between mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center mb-2 sm:mb-0\"\n }, IconComponent && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(IconComponent, {\n className: \"h-6 w-6 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light\"\n }, title), tag && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"ml-4 flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n className: \"flex items-center space-x-1 px-2 py-1 bg-gray-100 dark:bg-gray-700 rounded-lg cursor-pointer hover:bg-gray-200 dark:hover:bg-gray-600\",\n onClick: handleRemoveTag\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-300\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-xs text-gray-700 dark:text-gray-300\"\n }, capitalize(tag)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-300 hover:text-red-500\"\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block text-left\",\n ref: dropdownRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n className: \"inline-flex justify-center w-full rounded-md border border-gray-300 dark:border-gray-700 shadow-sm px-4 py-2 bg-white dark:bg-gray-800 text-sm font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none\",\n id: \"menu-button\",\n \"aria-expanded\": dropdownOpen,\n \"aria-haspopup\": \"true\",\n onClick: function onClick() {\n return setDropdownOpen(!dropdownOpen);\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 mr-2\"\n }), \" \", t(\"sort.\".concat(orderBy.split(\":\")[0]), capitalize(orderBy.split(\":\")[0].replace(\"_\", \" \"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"h-5 w-5 ml-2 text-gray-500 dark:text-gray-300\"\n })), dropdownOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"origin-top-right absolute left-0 sm:right-0 sm:left-auto mt-2 w-full sm:w-56 max-w-full rounded-md shadow-lg bg-white dark:bg-gray-800 ring-1 ring-black ring-opacity-5 focus:outline-none z-10\",\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"aria-labelledby\": \"menu-button\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"py-1 max-h-60 overflow-y-auto\",\n role: \"none\"\n }, [\"due_date:asc\", \"name:asc\", \"priority:desc\", \"status:desc\", \"created_at:desc\"].map(function (order) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: order,\n onClick: function onClick() {\n return handleSortChange(order);\n },\n className: \"block px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-600 w-full text-left\",\n role: \"menuitem\"\n }, t(\"sort.\".concat(order.split(\":\")[0]), capitalize(order.split(\":\")[0].replace(\"_\", \" \"))));\n }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"mb-6 text-sm text-gray-500 dark:text-gray-400\"\n }, description), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-sm p-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 dark:text-gray-400 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n placeholder: getSearchPlaceholder(i18n.language),\n value: taskSearchQuery,\n onChange: function onChange(e) {\n return setTaskSearchQuery(e.target.value);\n },\n className: \"w-full bg-transparent border-none focus:ring-0 focus:outline-none dark:text-white\"\n }))), loading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('common.loading', 'Loading...')) : error ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-red-500\"\n }, error) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, isNewTaskAllowed() && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_NewTask__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onTaskCreate: (/*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(taskName) {\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.n = 1;\n return handleTaskCreate({\n name: taskName,\n status: \"not_started\"\n });\n case 1:\n return _context6.a(2, _context6.v);\n }\n }, _callee6);\n }));\n return function (_x5) {\n return _ref8.apply(this, arguments);\n };\n }())\n }), filteredTasks.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_TaskList__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n tasks: filteredTasks,\n onTaskCreate: handleTaskCreate,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: projects,\n onToggleToday: handleToggleToday\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-500 text-center mt-4\"\n }, t('tasks.noTasksAvailable', 'Δεν υπάρχουν διαθέσιμες εργασίες.')))));\n};\n_s(Tasks, \"7cXHhgxV76T78Gi1ssdbN0j9tpU=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_7__.useToast, react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useLocation, react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useNavigate];\n});\n_c = Tasks;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Tasks);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Tasks\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Tasks.tsx?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js":
-/*!************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ArrowRightIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ArrowRightIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/Bars4Icon.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/Bars4Icon.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction Bars4Icon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3.75 5.25h16.5m-16.5 4.5h16.5m-16.5 4.5h16.5m-16.5 4.5h16.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(Bars4Icon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/Bars4Icon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/ChevronDoubleDownIcon.js":
-/*!*****************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/ChevronDoubleDownIcon.js ***!
- \*****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChevronDoubleDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M11.47 13.28a.75.75 0 0 0 1.06 0l7.5-7.5a.75.75 0 0 0-1.06-1.06L12 11.69 5.03 4.72a.75.75 0 0 0-1.06 1.06l7.5 7.5Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M11.47 19.28a.75.75 0 0 0 1.06 0l7.5-7.5a.75.75 0 1 0-1.06-1.06L12 17.69l-6.97-6.97a.75.75 0 0 0-1.06 1.06l7.5 7.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChevronDoubleDownIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/ChevronDoubleDownIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/ChevronDownIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/ChevronDownIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChevronDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChevronDownIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/ChevronDownIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/XMarkIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/XMarkIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction XMarkIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M5.47 5.47a.75.75 0 0 1 1.06 0L12 10.94l5.47-5.47a.75.75 0 1 1 1.06 1.06L13.06 12l5.47 5.47a.75.75 0 1 1-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 0 1-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 0 1 0-1.06Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(XMarkIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/XMarkIcon.js?");
-
-/***/ })
-
-}]);
\ No newline at end of file
diff --git a/dist/index.html b/dist/index.html
deleted file mode 100644
index a23f417..0000000
--- a/dist/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Tududi
-
-
-
-
-
\ No newline at end of file
diff --git a/dist/main.5a7a4e58284ada476ab5.js b/dist/main.5a7a4e58284ada476ab5.js
deleted file mode 100644
index 407a5bf..0000000
--- a/dist/main.5a7a4e58284ada476ab5.js
+++ /dev/null
@@ -1,15761 +0,0 @@
-/*
- * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-/******/ (() => { // webpackBootstrap
-/******/ var __webpack_modules__ = ({
-
-/***/ "./frontend/App.tsx":
-/*!**************************!*\
- !*** ./frontend/App.tsx ***!
- \**************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _components_Login__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Login */ \"./frontend/components/Login.tsx\");\n/* harmony import */ var _components_Shared_NotFound__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/Shared/NotFound */ \"./frontend/components/Shared/NotFound.tsx\");\n/* harmony import */ var _components_Project_ProjectDetails__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Project/ProjectDetails */ \"./frontend/components/Project/ProjectDetails.tsx\");\n/* harmony import */ var _components_Projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/Projects */ \"./frontend/components/Projects.tsx\");\n/* harmony import */ var _components_Area_AreaDetails__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Area/AreaDetails */ \"./frontend/components/Area/AreaDetails.tsx\");\n/* harmony import */ var _components_Areas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Areas */ \"./frontend/components/Areas.tsx\");\n/* harmony import */ var _components_Tag_TagDetails__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/Tag/TagDetails */ \"./frontend/components/Tag/TagDetails.tsx\");\n/* harmony import */ var _components_Tags__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Tags */ \"./frontend/components/Tags.tsx\");\n/* harmony import */ var _components_Notes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/Notes */ \"./frontend/components/Notes.tsx\");\n/* harmony import */ var _components_Note_NoteDetails__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/Note/NoteDetails */ \"./frontend/components/Note/NoteDetails.tsx\");\n/* harmony import */ var _components_Calendar__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/Calendar */ \"./frontend/components/Calendar.tsx\");\n/* harmony import */ var _components_Profile_ProfileSettings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/Profile/ProfileSettings */ \"./frontend/components/Profile/ProfileSettings.tsx\");\n/* harmony import */ var _Layout__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Layout */ \"./frontend/Layout.tsx\");\n/* harmony import */ var _components_Task_TasksToday__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/Task/TasksToday */ \"./frontend/components/Task/TasksToday.tsx\");\n/* harmony import */ var _components_Task_TaskView__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/Task/TaskView */ \"./frontend/components/Task/TaskView.tsx\");\n/* harmony import */ var _components_Shared_LoadingScreen__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/Shared/LoadingScreen */ \"./frontend/components/Shared/LoadingScreen.tsx\");\n/* harmony import */ var _components_Inbox_InboxItems__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/Inbox/InboxItems */ \"./frontend/components/Inbox/InboxItems.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Lazy load Tasks component to prevent issues with tags loading\nvar Tasks = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.lazy)(_c = function _c() {\n return __webpack_require__.e(/*! import() */ \"frontend_components_Tasks_tsx\").then(__webpack_require__.bind(__webpack_require__, /*! ./components/Tasks */ \"./frontend/components/Tasks.tsx\"));\n});\n_c2 = Tasks;\nvar App = function App() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n if (!i18n.isInitialized) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Shared_LoadingScreen__WEBPACK_IMPORTED_MODULE_17__[\"default\"], null);\n }\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState2 = _slicedToArray(_useState, 2),\n currentUser = _useState2[0],\n setCurrentUser = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState4 = _slicedToArray(_useState3, 2),\n loading = _useState4[0],\n setLoading = _useState4[1];\n var fetchCurrentUser = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response, data, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return fetch(\"/api/current_user\", {\n credentials: \"include\",\n headers: {\n Accept: \"application/json\"\n }\n });\n case 1:\n response = _context.v;\n if (response.ok) {\n _context.n = 3;\n break;\n }\n if (!(response.status === 401)) {\n _context.n = 2;\n break;\n }\n setCurrentUser(null);\n return _context.a(2);\n case 2:\n throw new Error(\"Failed to fetch user: \".concat(response.status));\n case 3:\n _context.n = 4;\n return response.json();\n case 4:\n data = _context.v;\n if (data.user) {\n setCurrentUser(data.user);\n } else {\n setCurrentUser(null);\n }\n _context.n = 6;\n break;\n case 5:\n _context.p = 5;\n _t = _context.v;\n setCurrentUser(null);\n case 6:\n _context.p = 6;\n setLoading(false);\n return _context.f(6);\n case 7:\n return _context.a(2);\n }\n }, _callee, null, [[0, 5, 6, 7]]);\n }));\n return function fetchCurrentUser() {\n return _ref.apply(this, arguments);\n };\n }();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n // Fetch user on mount\n fetchCurrentUser();\n }, []);\n\n // Listen for login events to update user state\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleUserLoggedIn = function handleUserLoggedIn(event) {\n var user = event.detail;\n setCurrentUser(user);\n };\n window.addEventListener('userLoggedIn', handleUserLoggedIn);\n return function () {\n return window.removeEventListener('userLoggedIn', handleUserLoggedIn);\n };\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (i18n.isInitialized) {\n fetch(\"/locales/\".concat(i18n.language, \"/translation.json\")).then(function (response) {\n return response.json();\n }).then(function (data) {\n i18n.addResourceBundle(i18n.language, 'translation', data, true, true);\n })[\"catch\"](function (error) {\n console.error(\"Error manually fetching translation file:\", error);\n });\n }\n }, [i18n.isInitialized]);\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n var storedPreference = localStorage.getItem(\"isDarkMode\");\n return storedPreference !== null ? storedPreference === \"true\" : window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n }),\n _useState6 = _slicedToArray(_useState5, 2),\n isDarkMode = _useState6[0],\n setIsDarkMode = _useState6[1];\n var toggleDarkMode = function toggleDarkMode() {\n var newValue = !isDarkMode;\n setIsDarkMode(newValue);\n localStorage.setItem(\"isDarkMode\", JSON.stringify(newValue));\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var updateTheme = function updateTheme() {\n document.documentElement.classList.toggle(\"dark\", isDarkMode);\n };\n updateTheme();\n var mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n var mediaListener = function mediaListener(e) {\n if (!localStorage.getItem(\"isDarkMode\")) {\n setIsDarkMode(e.matches);\n }\n };\n mediaQuery.addEventListener(\"change\", mediaListener);\n return function () {\n return mediaQuery.removeEventListener(\"change\", mediaListener);\n };\n }, [isDarkMode]);\n var LoadingComponent = function LoadingComponent() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, i18n.t('common.loading', 'Loading application... Please wait.')));\n };\n if (loading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LoadingComponent, null);\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LoadingComponent, null)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Routes, null, currentUser ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Layout__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n currentUser: currentUser,\n setCurrentUser: setCurrentUser,\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Outlet, null))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n index: true,\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Navigate, {\n to: \"/today\",\n replace: true\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/today\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Task_TasksToday__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/task/:uuid\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Task_TaskView__WEBPACK_IMPORTED_MODULE_16__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/tasks\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4\"\n }, i18n.t('common.loading', 'Loading...'))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Tasks, null))\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/inbox\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Inbox_InboxItems__WEBPACK_IMPORTED_MODULE_18__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/projects\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Projects__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/project/:id\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Project_ProjectDetails__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/areas\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Areas__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/area/:id\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Area_AreaDetails__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/tags\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Tags__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/tag/:id\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Tag_TagDetails__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/notes\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Notes__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/note/:id\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Note_NoteDetails__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/calendar\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Calendar__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/profile\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Profile_ProfileSettings__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n currentUser: currentUser,\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"*\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Shared_NotFound__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null)\n }))) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/login\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Login__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"/\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Navigate, {\n to: \"/login\",\n replace: true\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Route, {\n path: \"*\",\n element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_19__.Navigate, {\n to: \"/login\",\n replace: true\n })\n }))));\n};\n_s(App, \"7nQiKN5hL2Dy33urFkACBnncSJM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c3 = App;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (App);\nvar _c, _c2, _c3;\n__webpack_require__.$Refresh$.register(_c, \"Tasks$lazy\");\n__webpack_require__.$Refresh$.register(_c2, \"Tasks\");\n__webpack_require__.$Refresh$.register(_c3, \"App\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/App.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/Layout.tsx":
-/*!*****************************!*\
- !*** ./frontend/Layout.tsx ***!
- \*****************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusIcon.js\");\n/* harmony import */ var _components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _components_Navbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/Navbar */ \"./frontend/components/Navbar.tsx\");\n/* harmony import */ var _components_Sidebar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Sidebar */ \"./frontend/components/Sidebar.tsx\");\n/* harmony import */ var _styles_tailwind_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles/tailwind.css */ \"./frontend/styles/tailwind.css\");\n/* harmony import */ var _components_Project_ProjectModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Project/ProjectModal */ \"./frontend/components/Project/ProjectModal.tsx\");\n/* harmony import */ var _components_Note_NoteModal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Note/NoteModal */ \"./frontend/components/Note/NoteModal.tsx\");\n/* harmony import */ var _components_Area_AreaModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/Area/AreaModal */ \"./frontend/components/Area/AreaModal.tsx\");\n/* harmony import */ var _components_Tag_TagModal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/Tag/TagModal */ \"./frontend/components/Tag/TagModal.tsx\");\n/* harmony import */ var _components_Task_SimplifiedTaskModal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/Task/SimplifiedTaskModal */ \"./frontend/components/Task/SimplifiedTaskModal.tsx\");\n/* harmony import */ var _components_Task_TaskModal__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/Task/TaskModal */ \"./frontend/components/Task/TaskModal.tsx\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _utils_notesService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/notesService */ \"./frontend/utils/notesService.ts\");\n/* harmony import */ var _utils_areasService__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/areasService */ \"./frontend/utils/areasService.ts\");\n/* harmony import */ var _utils_tagsService__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils/tagsService */ \"./frontend/utils/tagsService.ts\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_authUtils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Layout = function Layout(_ref) {\n _s();\n var currentUser = _ref.currentUser,\n setCurrentUser = _ref.setCurrentUser,\n isDarkMode = _ref.isDarkMode,\n toggleDarkMode = _ref.toggleDarkMode,\n children = _ref.children;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useToast = (0,_components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(window.innerWidth >= 1024),\n _useState2 = _slicedToArray(_useState, 2),\n isSidebarOpen = _useState2[0],\n setIsSidebarOpen = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),\n _useState4 = _slicedToArray(_useState3, 2),\n globalModalCount = _useState4[0],\n setGlobalModalCount = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isTaskModalOpen = _useState6[0],\n setIsTaskModalOpen = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isProjectModalOpen = _useState8[0],\n setIsProjectModalOpen = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n isNoteModalOpen = _useState0[0],\n setIsNoteModalOpen = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState1, 2),\n isAreaModalOpen = _useState10[0],\n setIsAreaModalOpen = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n isTagModalOpen = _useState12[0],\n setIsTagModalOpen = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('simplified'),\n _useState14 = _slicedToArray(_useState13, 2),\n taskModalType = _useState14[0],\n setTaskModalType = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState16 = _slicedToArray(_useState15, 2),\n selectedNote = _useState16[0],\n setSelectedNote = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState18 = _slicedToArray(_useState17, 2),\n selectedArea = _useState18[0],\n setSelectedArea = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState20 = _slicedToArray(_useState19, 2),\n selectedTag = _useState20[0],\n setSelectedTag = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState22 = _slicedToArray(_useState21, 2),\n newTask = _useState22[0],\n setNewTask = _useState22[1];\n var _useStore = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_12__.useStore)(),\n _useStore$notesStore = _useStore.notesStore,\n notes = _useStore$notesStore.notes,\n setNotes = _useStore$notesStore.setNotes,\n setNotesLoading = _useStore$notesStore.setLoading,\n setNotesError = _useStore$notesStore.setError,\n isNotesLoading = _useStore$notesStore.isLoading,\n isNotesError = _useStore$notesStore.isError,\n _useStore$areasStore = _useStore.areasStore,\n areas = _useStore$areasStore.areas,\n setAreas = _useStore$areasStore.setAreas,\n setAreasLoading = _useStore$areasStore.setLoading,\n setAreasError = _useStore$areasStore.setError,\n isAreasLoading = _useStore$areasStore.isLoading,\n isAreasError = _useStore$areasStore.isError,\n _useStore$tasksStore = _useStore.tasksStore,\n setTasksLoading = _useStore$tasksStore.setLoading,\n setTasksError = _useStore$tasksStore.setError,\n isTasksLoading = _useStore$tasksStore.isLoading,\n isTasksError = _useStore$tasksStore.isError,\n _useStore$projectsSto = _useStore.projectsStore,\n projects = _useStore$projectsSto.projects,\n setProjects = _useStore$projectsSto.setProjects,\n setProjectsLoading = _useStore$projectsSto.setLoading,\n setProjectsError = _useStore$projectsSto.setError,\n isProjectsLoading = _useStore$projectsSto.isLoading,\n isProjectsError = _useStore$projectsSto.isError,\n _useStore$tagsStore = _useStore.tagsStore,\n tags = _useStore$tagsStore.tags,\n setTags = _useStore$tagsStore.setTags,\n setTagsLoading = _useStore$tagsStore.setLoading,\n setTagsError = _useStore$tagsStore.setError,\n isTagsLoading = _useStore$tagsStore.isLoading,\n isTagsError = _useStore$tagsStore.isError;\n var openTaskModal = function openTaskModal() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'simplified';\n setIsTaskModalOpen(true);\n setTaskModalType(type);\n };\n\n // Listen for global modal events from child components\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleModalOpen = function handleModalOpen() {\n setGlobalModalCount(function (prev) {\n return prev + 1;\n });\n };\n var handleModalClose = function handleModalClose() {\n setGlobalModalCount(function (prev) {\n return Math.max(0, prev - 1);\n });\n };\n window.addEventListener('modalOpen', handleModalOpen);\n window.addEventListener('modalClose', handleModalClose);\n return function () {\n window.removeEventListener('modalOpen', handleModalOpen);\n window.removeEventListener('modalClose', handleModalClose);\n };\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleResize = function handleResize() {\n setIsSidebarOpen(window.innerWidth >= 1024);\n };\n window.addEventListener(\"resize\", handleResize);\n return function () {\n return window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n var loadNotes = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var notesData, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n setNotesLoading(true);\n _context.p = 1;\n _context.n = 2;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_13__.fetchNotes)();\n case 2:\n notesData = _context.v;\n setNotes(notesData);\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n console.error(\"Error fetching notes:\", _t);\n setNotesError(true);\n case 4:\n _context.p = 4;\n setNotesLoading(false);\n return _context.f(4);\n case 5:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3, 4, 5]]);\n }));\n return function loadNotes() {\n return _ref2.apply(this, arguments);\n };\n }();\n var loadAreas = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var areasData, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n setAreasLoading(true);\n _context2.p = 1;\n _context2.n = 2;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_14__.fetchAreas)();\n case 2:\n areasData = _context2.v;\n setAreas(areasData);\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error(\"Error fetching areas:\", _t2);\n setAreasError(true);\n case 4:\n _context2.p = 4;\n setAreasLoading(false);\n return _context2.f(4);\n case 5:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 3, 4, 5]]);\n }));\n return function loadAreas() {\n return _ref3.apply(this, arguments);\n };\n }();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n loadNotes();\n loadAreas();\n }, []);\n var openNoteModal = function openNoteModal() {\n var note = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n setSelectedNote(note);\n setIsNoteModalOpen(true);\n };\n var closeNoteModal = function closeNoteModal() {\n setIsNoteModalOpen(false);\n setSelectedNote(null);\n };\n var closeTaskModal = function closeTaskModal() {\n setIsTaskModalOpen(false);\n setNewTask(null);\n };\n var openProjectModal = function openProjectModal() {\n setIsProjectModalOpen(true);\n };\n var closeProjectModal = function closeProjectModal() {\n setIsProjectModalOpen(false);\n };\n var openAreaModal = function openAreaModal() {\n var area = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n setSelectedArea(area);\n setIsAreaModalOpen(true);\n };\n var closeAreaModal = function closeAreaModal() {\n setIsAreaModalOpen(false);\n setSelectedArea(null);\n };\n var openTagModal = function openTagModal() {\n var tag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n setSelectedTag(tag);\n setIsTagModalOpen(true);\n };\n var closeTagModal = function closeTagModal() {\n setIsTagModalOpen(false);\n setSelectedTag(null);\n };\n var handleSaveNote = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(noteData) {\n var _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n if (!noteData.id) {\n _context3.n = 2;\n break;\n }\n _context3.n = 1;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_13__.updateNote)(noteData.id, noteData);\n case 1:\n _context3.n = 3;\n break;\n case 2:\n _context3.n = 3;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_13__.createNote)(noteData);\n case 3:\n loadNotes();\n closeNoteModal();\n _context3.n = 6;\n break;\n case 4:\n _context3.p = 4;\n _t3 = _context3.v;\n console.error(\"Error saving note:\", _t3);\n // Don't close modal if there's an auth error (user will be redirected)\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_18__.isAuthError)(_t3)) {\n _context3.n = 5;\n break;\n }\n return _context3.a(2);\n case 5:\n closeNoteModal();\n case 6:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 4]]);\n }));\n return function handleSaveNote(_x) {\n return _ref4.apply(this, arguments);\n };\n }();\n var handleSaveTask = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(taskData) {\n var taskLink, createdTask, _taskLink, _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.p = 0;\n if (!taskData.id) {\n _context4.n = 2;\n break;\n }\n _context4.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_17__.updateTask)(taskData.id, taskData);\n case 1:\n taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.updated', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/tasks\",\n className: \"text-green-200 underline hover:text-green-100\"\n }, taskData.name), \" \", t('task.updatedSuccessfully', 'updated successfully!'));\n showSuccessToast(taskLink);\n _context4.n = 4;\n break;\n case 2:\n _context4.n = 3;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_17__.createTask)(taskData);\n case 3:\n createdTask = _context4.v;\n _taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.created', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/tasks\",\n className: \"text-green-200 underline hover:text-green-100\"\n }, createdTask.name), \" \", t('task.createdSuccessfully', 'created successfully!'));\n showSuccessToast(_taskLink);\n case 4:\n // Don't refetch all tasks here - let individual components handle their own state\n // This prevents unnecessary re-renders and race conditions\n closeTaskModal();\n _context4.n = 7;\n break;\n case 5:\n _context4.p = 5;\n _t4 = _context4.v;\n console.error(\"Error saving task:\", _t4);\n // Don't close modal if there's an auth error (user will be redirected)\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_18__.isAuthError)(_t4)) {\n _context4.n = 6;\n break;\n }\n return _context4.a(2);\n case 6:\n // For other errors, still close the modal but let the error bubble up\n closeTaskModal();\n throw _t4;\n case 7:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 5]]);\n }));\n return function handleSaveTask(_x2) {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleCreateProject = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(name) {\n var newProject, _t5;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.p = 0;\n _context5.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_16__.createProject)({\n name: name,\n active: true\n });\n case 1:\n newProject = _context5.v;\n return _context5.a(2, newProject);\n case 2:\n _context5.p = 2;\n _t5 = _context5.v;\n console.error(\"Error creating project:\", _t5);\n throw _t5;\n case 3:\n return _context5.a(2);\n }\n }, _callee5, null, [[0, 2]]);\n }));\n return function handleCreateProject(_x3) {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleSaveProject = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(projectData) {\n var projectsData, _t6;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.p = 0;\n if (!projectData.id) {\n _context6.n = 2;\n break;\n }\n _context6.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_16__.updateProject)(projectData.id, projectData);\n case 1:\n _context6.n = 3;\n break;\n case 2:\n _context6.n = 3;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_16__.createProject)(projectData);\n case 3:\n _context6.n = 4;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_16__.fetchProjects)();\n case 4:\n projectsData = _context6.v;\n setProjects(projectsData);\n closeProjectModal();\n _context6.n = 7;\n break;\n case 5:\n _context6.p = 5;\n _t6 = _context6.v;\n console.error(\"Error saving project:\", _t6);\n // Don't close modal if there's an auth error (user will be redirected)\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_18__.isAuthError)(_t6)) {\n _context6.n = 6;\n break;\n }\n return _context6.a(2);\n case 6:\n closeProjectModal();\n case 7:\n return _context6.a(2);\n }\n }, _callee6, null, [[0, 5]]);\n }));\n return function handleSaveProject(_x4) {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleSaveArea = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(areaData) {\n var _t7;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n _context7.p = 0;\n if (!areaData.id) {\n _context7.n = 2;\n break;\n }\n _context7.n = 1;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_14__.updateArea)(areaData.id, areaData);\n case 1:\n _context7.n = 3;\n break;\n case 2:\n _context7.n = 3;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_14__.createArea)(areaData);\n case 3:\n loadAreas();\n closeAreaModal();\n _context7.n = 6;\n break;\n case 4:\n _context7.p = 4;\n _t7 = _context7.v;\n console.error(\"Error saving area:\", _t7);\n // Don't close modal if there's an auth error (user will be redirected)\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_18__.isAuthError)(_t7)) {\n _context7.n = 5;\n break;\n }\n return _context7.a(2);\n case 5:\n closeAreaModal();\n case 6:\n return _context7.a(2);\n }\n }, _callee7, null, [[0, 4]]);\n }));\n return function handleSaveArea(_x5) {\n return _ref8.apply(this, arguments);\n };\n }();\n var handleSaveTag = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(tagData) {\n var tagsData, _t8;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n _context8.p = 0;\n if (!tagData.id) {\n _context8.n = 2;\n break;\n }\n _context8.n = 1;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_15__.updateTag)(tagData.id, tagData);\n case 1:\n _context8.n = 3;\n break;\n case 2:\n _context8.n = 3;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_15__.createTag)(tagData);\n case 3:\n _context8.n = 4;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_15__.fetchTags)();\n case 4:\n tagsData = _context8.v;\n setTags(tagsData);\n closeTagModal();\n _context8.n = 7;\n break;\n case 5:\n _context8.p = 5;\n _t8 = _context8.v;\n console.error(\"Error saving tag:\", _t8);\n // Don't close modal if there's an auth error (user will be redirected)\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_18__.isAuthError)(_t8)) {\n _context8.n = 6;\n break;\n }\n return _context8.a(2);\n case 6:\n closeTagModal();\n case 7:\n return _context8.a(2);\n }\n }, _callee8, null, [[0, 5]]);\n }));\n return function handleSaveTag(_x6) {\n return _ref9.apply(this, arguments);\n };\n }();\n var handleLogout = /*#__PURE__*/function () {\n var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() {\n var response, _t9, _t0, _t1;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n _context9.p = 0;\n _context9.n = 1;\n return fetch('/api/logout', {\n method: 'GET',\n credentials: 'include'\n });\n case 1:\n response = _context9.v;\n if (!response.ok) {\n _context9.n = 2;\n break;\n }\n setCurrentUser(null);\n _context9.n = 4;\n break;\n case 2:\n _t9 = console;\n _context9.n = 3;\n return response.json();\n case 3:\n _t0 = _context9.v;\n _t9.error.call(_t9, 'Logout failed:', _t0);\n case 4:\n _context9.n = 6;\n break;\n case 5:\n _context9.p = 5;\n _t1 = _context9.v;\n console.error('Error during logout:', _t1);\n case 6:\n return _context9.a(2);\n }\n }, _callee9, null, [[0, 5]]);\n }));\n return function handleLogout() {\n return _ref0.apply(this, arguments);\n };\n }();\n var mainContentMarginLeft = isSidebarOpen ? \"ml-72\" : \"ml-0\";\n var isLoading = isNotesLoading || isAreasLoading || isTasksLoading || isProjectsLoading || isTagsLoading;\n var isError = isNotesError || isAreasError || isTasksError || isProjectsError || isTagsError;\n if (isLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"min-h-screen \".concat(isDarkMode ? \"dark\" : \"\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Navbar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode,\n currentUser: currentUser,\n setCurrentUser: setCurrentUser,\n isSidebarOpen: isSidebarOpen,\n setIsSidebarOpen: setIsSidebarOpen\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Sidebar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n isSidebarOpen: isSidebarOpen,\n setIsSidebarOpen: setIsSidebarOpen,\n currentUser: currentUser,\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode,\n openTaskModal: openTaskModal,\n openProjectModal: openProjectModal,\n openNoteModal: openNoteModal,\n openAreaModal: openAreaModal,\n openTagModal: openTagModal,\n notes: notes,\n areas: areas,\n tags: tags\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 flex items-center justify-center bg-gray-100 dark:bg-gray-800 transition-all duration-300 ease-in-out \".concat(mainContentMarginLeft)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl text-gray-700 dark:text-gray-200\"\n }, t('common.loading'))));\n }\n if (isError) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"min-h-screen \".concat(isDarkMode ? \"dark\" : \"\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Navbar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode,\n currentUser: currentUser,\n setCurrentUser: setCurrentUser,\n isSidebarOpen: isSidebarOpen,\n setIsSidebarOpen: setIsSidebarOpen\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Sidebar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n isSidebarOpen: isSidebarOpen,\n setIsSidebarOpen: setIsSidebarOpen,\n currentUser: currentUser,\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode,\n openTaskModal: openTaskModal,\n openProjectModal: openProjectModal,\n openNoteModal: openNoteModal,\n openAreaModal: openAreaModal,\n openTagModal: openTagModal,\n notes: notes,\n areas: areas,\n tags: tags\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 flex flex-col items-center justify-center bg-gray-100 dark:bg-gray-800 transition-all duration-300 ease-in-out \".concat(mainContentMarginLeft)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl text-red-500\"\n }, t('errors.somethingWentWrong'))));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"min-h-screen \".concat(isDarkMode ? \"dark\" : \"\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Navbar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode,\n currentUser: currentUser,\n setCurrentUser: setCurrentUser,\n isSidebarOpen: isSidebarOpen,\n setIsSidebarOpen: setIsSidebarOpen\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Sidebar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n isSidebarOpen: isSidebarOpen,\n setIsSidebarOpen: setIsSidebarOpen,\n currentUser: currentUser,\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode,\n openTaskModal: openTaskModal,\n openProjectModal: openProjectModal,\n openNoteModal: openNoteModal,\n openAreaModal: openAreaModal,\n openTagModal: openTagModal,\n notes: notes,\n areas: areas,\n tags: tags\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"transition-all duration-300 ease-in-out \".concat(mainContentMarginLeft)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100 min-h-screen overflow-y-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-grow py-6 px-2 md:px-6 pt-24\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl mx-auto\"\n }, children)))), !isTaskModalOpen && !isProjectModalOpen && !isNoteModalOpen && !isAreaModalOpen && !isTagModalOpen && globalModalCount === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return openTaskModal('simplified');\n },\n className: \"fixed bottom-6 right-6 bg-blue-500 hover:bg-blue-600 text-white rounded-full p-4 shadow-lg focus:outline-none transform transition-transform duration-200 hover:scale-110 z-50\",\n \"aria-label\": \"Quick Capture\",\n title: t('inbox.captureThought')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"h-6 w-6\"\n })), isTaskModalOpen && (taskModalType === 'simplified' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Task_SimplifiedTaskModal__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n isOpen: isTaskModalOpen,\n onClose: closeTaskModal,\n onSave: handleSaveTask\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Task_TaskModal__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n isOpen: isTaskModalOpen,\n onClose: closeTaskModal,\n task: {\n name: \"\",\n status: \"not_started\"\n },\n onSave: handleSaveTask,\n onDelete: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {\n return _regenerator().w(function (_context0) {\n while (1) switch (_context0.n) {\n case 0:\n return _context0.a(2);\n }\n }, _callee0);\n })),\n projects: projects,\n onCreateProject: handleCreateProject\n })), isProjectModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Project_ProjectModal__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n isOpen: isProjectModalOpen,\n onClose: closeProjectModal,\n onSave: handleSaveProject,\n areas: areas\n }), isNoteModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Note_NoteModal__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n isOpen: isNoteModalOpen,\n onClose: closeNoteModal,\n onSave: handleSaveNote,\n note: selectedNote\n }), isAreaModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Area_AreaModal__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n isOpen: isAreaModalOpen,\n onClose: closeAreaModal,\n onSave: handleSaveArea,\n area: selectedArea\n }), isTagModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Tag_TagModal__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n isOpen: isTagModalOpen,\n onClose: closeTagModal,\n onSave: handleSaveTag,\n tag: selectedTag\n }));\n};\n_s(Layout, \"yXAACjuyTAb4vGCFk/QWBO4MFOk=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast, _store_useStore__WEBPACK_IMPORTED_MODULE_12__.useStore];\n});\n_c = Layout;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Layout);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Layout\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/Layout.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Area/AreaDetails.tsx":
-/*!**************************************************!*\
- !*** ./frontend/components/Area/AreaDetails.tsx ***!
- \**************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\nvar AreaDetails = function AreaDetails() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)(),\n t = _useTranslation.t;\n var _useParams = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useParams)(),\n id = _useParams.id;\n var _useStore = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_1__.useStore)(function (state) {\n return state.areasStore;\n }),\n areas = _useStore.areas;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState2 = _slicedToArray(_useState, 2),\n area = _useState2[0],\n setArea = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState4 = _slicedToArray(_useState3, 2),\n isLoading = _useState4[0],\n setIsLoading = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isError = _useState6[0],\n setIsError = _useState6[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (!areas.length) setIsLoading(true);\n var foundArea = areas.find(function (a) {\n return a.id === Number(id);\n });\n setArea(foundArea || null);\n if (!foundArea) {\n setIsError(true);\n }\n setIsLoading(false);\n }, [id, areas]);\n if (isLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, t('areas.loading')));\n }\n if (isError || !area) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 text-lg\"\n }, isError ? t('areas.error') : t('areas.notFound')));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"min-h-screen bg-gray-100 dark:bg-gray-900 p-4 sm:p-6 lg:p-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"max-w-5xl mx-auto bg-white dark:bg-gray-800 shadow-lg rounded-lg p-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-bold text-gray-900 dark:text-white mb-4\"\n }, t('areas.details'), \": \", area === null || area === void 0 ? void 0 : area.name), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-md text-gray-700 dark:text-gray-300\"\n }, area === null || area === void 0 ? void 0 : area.description), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_4__.Link, {\n to: \"/projects?area_id=\".concat(area === null || area === void 0 ? void 0 : area.id),\n className: \"text-blue-600 dark:text-blue-400 hover:underline mt-4 block\"\n }, t('areas.viewProjects', {\n name: area === null || area === void 0 ? void 0 : area.name\n }))));\n};\n_s(AreaDetails, \"ns/RK7Y4Z/3E1GG2nVAA5DMefnU=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation, react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useParams, _store_useStore__WEBPACK_IMPORTED_MODULE_1__.useStore];\n});\n_c = AreaDetails;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AreaDetails);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"AreaDetails\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Area/AreaDetails.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Area/AreaModal.tsx":
-/*!************************************************!*\
- !*** ./frontend/components/Area/AreaModal.tsx ***!
- \************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\nvar AreaModal = function AreaModal(_ref) {\n _s();\n var isOpen = _ref.isOpen,\n onClose = _ref.onClose,\n area = _ref.area,\n onSave = _ref.onSave;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n id: (area === null || area === void 0 ? void 0 : area.id) || 0,\n name: (area === null || area === void 0 ? void 0 : area.name) || '',\n description: (area === null || area === void 0 ? void 0 : area.description) || ''\n }),\n _useState2 = _slicedToArray(_useState, 2),\n formData = _useState2[0],\n setFormData = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState4 = _slicedToArray(_useState3, 2),\n error = _useState4[0],\n setError = _useState4[1];\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isSubmitting = _useState6[0],\n setIsSubmitting = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isClosing = _useState8[0],\n setIsClosing = _useState8[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (isOpen) {\n setFormData({\n id: (area === null || area === void 0 ? void 0 : area.id) || 0,\n name: (area === null || area === void 0 ? void 0 : area.name) || '',\n description: (area === null || area === void 0 ? void 0 : area.description) || ''\n });\n setError(null);\n }\n }, [isOpen, area]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === 'Escape') {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener('keydown', handleKeyDown);\n }\n return function () {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [isOpen]);\n var handleChange = function handleChange(e) {\n var _e$target = e.target,\n name = _e$target.name,\n value = _e$target.value;\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, value));\n });\n };\n var handleSubmit = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (formData.name.trim()) {\n _context.n = 1;\n break;\n }\n setError(t('errors.areaNameRequired'));\n return _context.a(2);\n case 1:\n setIsSubmitting(true);\n setError(null);\n _context.p = 2;\n _context.n = 3;\n return onSave(formData);\n case 3:\n showSuccessToast(formData.id ? t('success.areaUpdated') : t('success.areaCreated'));\n handleClose();\n _context.n = 5;\n break;\n case 4:\n _context.p = 4;\n _t = _context.v;\n setError(_t.message);\n showErrorToast(t('errors.failedToSaveArea'));\n case 5:\n _context.p = 5;\n setIsSubmitting(false);\n return _context.f(5);\n case 6:\n return _context.a(2);\n }\n }, _callee, null, [[2, 4, 5, 6]]);\n }));\n return function handleSubmit() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleClose = function handleClose() {\n setIsClosing(true);\n setTimeout(function () {\n onClose();\n setIsClosing(false);\n }, 300);\n };\n if (!isOpen) return null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-16 left-0 right-0 bottom-0 flex items-start sm:items-center justify-center bg-gray-900 bg-opacity-80 z-40 transition-opacity duration-300 \".concat(isClosing ? 'opacity-0' : 'opacity-100')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: modalRef,\n className: \"bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-800 sm:rounded-lg sm:shadow-2xl w-full sm:max-w-md overflow-hidden transform transition-transform duration-300 \".concat(isClosing ? 'scale-95' : 'scale-100', \" h-screen sm:h-auto flex flex-col\"),\n style: {\n maxHeight: 'calc(100vh - 4rem)'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", {\n className: \"flex flex-col flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"fieldset\", {\n className: \"flex flex-col flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 space-y-3 flex-1 text-sm overflow-y-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"py-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n id: \"areaName\",\n name: \"name\",\n value: formData.name,\n onChange: handleChange,\n required: true,\n className: \"block w-full text-xl font-semibold dark:bg-gray-800 text-black dark:text-white border-b-2 border-gray-200 dark:border-gray-900 focus:outline-none shadow-sm py-2\",\n placeholder: t('forms.areaNamePlaceholder')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.areaDescription')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textarea\", {\n id: \"areaDescription\",\n name: \"description\",\n value: formData.description,\n onChange: handleChange,\n rows: 4,\n className: \"block w-full rounded-md shadow-sm p-3 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 transition duration-150 ease-in-out\",\n placeholder: t('forms.areaDescriptionPlaceholder')\n })), error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500\"\n }, error)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 flex-shrink-0 border-t border-gray-200 dark:border-gray-700 flex justify-end space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleClose,\n className: \"px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-600 focus:outline-none transition duration-150 ease-in-out\"\n }, t('common.cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleSubmit,\n disabled: isSubmitting,\n className: \"px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600 focus:outline-none transition duration-150 ease-in-out \".concat(isSubmitting ? 'opacity-50 cursor-not-allowed' : '')\n }, isSubmitting ? t('modals.submitting') : formData.id && formData.id !== 0 ? t('modals.updateArea') : t('modals.createArea')))))));\n};\n_s(AreaModal, \"X0/bmm5jR9Z+QZgSgiSTLA/r3WA=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast];\n});\n_c = AreaModal;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AreaModal);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"AreaModal\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Area/AreaModal.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Areas.tsx":
-/*!***************************************!*\
- !*** ./frontend/components/Areas.tsx ***!
- \***************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/Squares2X2Icon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _Area_AreaModal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Area/AreaModal */ \"./frontend/components/Area/AreaModal.tsx\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _utils_areasService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/areasService */ \"./frontend/utils/areasService.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\nvar Areas = function Areas() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useStore = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_4__.useStore)(function (state) {\n return state.areasStore;\n }),\n areas = _useStore.areas,\n setAreas = _useStore.setAreas,\n setLoading = _useStore.setLoading,\n setError = _useStore.setError;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isAreaModalOpen = _useState2[0],\n setIsAreaModalOpen = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedArea = _useState4[0],\n setSelectedArea = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isConfirmDialogOpen = _useState6[0],\n setIsConfirmDialogOpen = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState8 = _slicedToArray(_useState7, 2),\n areaToDelete = _useState8[0],\n setAreaToDelete = _useState8[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadAreas = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var areasData, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_5__.fetchAreas)();\n case 1:\n areasData = _context.v;\n setAreas(areasData);\n _context.n = 3;\n break;\n case 2:\n _context.p = 2;\n _t = _context.v;\n console.error('Error fetching areas:', _t);\n setError(true);\n case 3:\n return _context.a(2);\n }\n }, _callee, null, [[0, 2]]);\n }));\n return function loadAreas() {\n return _ref.apply(this, arguments);\n };\n }();\n loadAreas();\n }, []);\n var handleSaveArea = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(areaData) {\n var updatedAreas, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n setLoading(true);\n _context2.p = 1;\n if (!areaData.id) {\n _context2.n = 3;\n break;\n }\n _context2.n = 2;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_5__.updateArea)(areaData.id, {\n name: areaData.name,\n description: areaData.description\n });\n case 2:\n _context2.n = 4;\n break;\n case 3:\n _context2.n = 4;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_5__.createArea)({\n name: areaData.name,\n description: areaData.description\n });\n case 4:\n _context2.n = 5;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_5__.fetchAreas)();\n case 5:\n updatedAreas = _context2.v;\n setAreas(updatedAreas);\n _context2.n = 7;\n break;\n case 6:\n _context2.p = 6;\n _t2 = _context2.v;\n console.error('Error saving area:', _t2);\n setError(true);\n case 7:\n _context2.p = 7;\n setLoading(false);\n setIsAreaModalOpen(false);\n setSelectedArea(null);\n return _context2.f(7);\n case 8:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 6, 7, 8]]);\n }));\n return function handleSaveArea(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleEditArea = function handleEditArea(area) {\n setSelectedArea(area);\n setIsAreaModalOpen(true);\n };\n var handleCreateArea = function handleCreateArea() {\n setSelectedArea(null);\n setIsAreaModalOpen(true);\n };\n var openConfirmDialog = function openConfirmDialog(area) {\n setAreaToDelete(area);\n setIsConfirmDialogOpen(true);\n };\n var handleDeleteArea = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var updatedAreas, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n if (areaToDelete) {\n _context3.n = 1;\n break;\n }\n return _context3.a(2);\n case 1:\n setLoading(true);\n _context3.p = 2;\n _context3.n = 3;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_5__.deleteArea)(areaToDelete.id);\n case 3:\n _context3.n = 4;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_5__.fetchAreas)();\n case 4:\n updatedAreas = _context3.v;\n setAreas(updatedAreas);\n setIsConfirmDialogOpen(false);\n setAreaToDelete(null);\n _context3.n = 6;\n break;\n case 5:\n _context3.p = 5;\n _t3 = _context3.v;\n console.error('Error deleting area:', _t3);\n setError(true);\n case 6:\n _context3.p = 6;\n setLoading(false);\n return _context3.f(6);\n case 7:\n return _context3.a(2);\n }\n }, _callee3, null, [[2, 5, 6, 7]]);\n }));\n return function handleDeleteArea() {\n return _ref3.apply(this, arguments);\n };\n }();\n var closeConfirmDialog = function closeConfirmDialog() {\n setIsConfirmDialogOpen(false);\n setAreaToDelete(null);\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-6 w-6 mr-2 text-gray-900 dark:text-white\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light text-gray-900 dark:text-white\"\n }, t('areas.title')))), areas.length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-700 dark:text-gray-300\"\n }, t('areas.noAreasFound')) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"space-y-2\"\n }, areas.map(function (area) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n key: area.id,\n className: \"bg-white dark:bg-gray-900 shadow rounded-lg p-4 flex justify-between items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-grow overflow-hidden pr-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_7__.Link, {\n to: \"/projects?area_id=\".concat(area.id),\n className: \"text-md font-semibold text-gray-900 dark:text-gray-100 hover:underline block\"\n }, area.name), area.description && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-600 dark:text-gray-400 mt-1 truncate\"\n }, area.description)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return handleEditArea(area);\n },\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none\",\n \"aria-label\": t('areas.editAreaAriaLabel', {\n name: area.name\n }),\n title: t('areas.editAreaTitle', {\n name: area.name\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return openConfirmDialog(area);\n },\n className: \"text-gray-500 hover:text-red-700 dark:hover:text-red-300 focus:outline-none\",\n \"aria-label\": t('areas.deleteAreaAriaLabel', {\n name: area.name\n }),\n title: t('areas.deleteAreaTitle', {\n name: area.name\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5\"\n }))));\n })), isAreaModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Area_AreaModal__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n isOpen: isAreaModalOpen,\n onClose: function onClose() {\n return setIsAreaModalOpen(false);\n },\n onSave: handleSaveArea,\n area: selectedArea\n }), isConfirmDialogOpen && areaToDelete && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n title: t('modals.deleteArea.title'),\n message: t('modals.deleteArea.message', {\n name: areaToDelete.name\n }),\n onConfirm: handleDeleteArea,\n onCancel: closeConfirmDialog\n })));\n};\n_s(Areas, \"y233SdergRQ16O2WxrcQu2qV2lk=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _store_useStore__WEBPACK_IMPORTED_MODULE_4__.useStore];\n});\n_c = Areas;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Areas);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Areas\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Areas.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Calendar.tsx":
-/*!******************************************!*\
- !*** ./frontend/components/Calendar.tsx ***!
- \******************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _Task_TaskModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task/TaskModal */ \"./frontend/components/Task/TaskModal.tsx\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronLeftIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowTopRightOnSquareIcon.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/addWeeks.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/addDays.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/format.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/el.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/es.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/ja.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/uk.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/de.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/en-US.js\");\n/* harmony import */ var _Calendar_CalendarMonthView__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Calendar/CalendarMonthView */ \"./frontend/components/Calendar/CalendarMonthView.tsx\");\n/* harmony import */ var _Calendar_CalendarWeekView__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Calendar/CalendarWeekView */ \"./frontend/components/Calendar/CalendarWeekView.tsx\");\n/* harmony import */ var _Calendar_CalendarDayView__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Calendar/CalendarDayView */ \"./frontend/components/Calendar/CalendarDayView.tsx\");\n/* harmony import */ var _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/useModalEvents */ \"./frontend/hooks/useModalEvents.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature(),\n _s2 = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\nvar getLocale = function getLocale(language) {\n switch (language) {\n case 'el':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_8__.el;\n case 'es':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_9__.es;\n case 'jp':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_10__.ja;\n case 'ua':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_11__.uk;\n case 'de':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_12__.de;\n default:\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_13__.enUS;\n }\n};\nvar Calendar = function Calendar() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(new Date()),\n _useState2 = _slicedToArray(_useState, 2),\n currentDate = _useState2[0],\n setCurrentDate = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('month'),\n _useState4 = _slicedToArray(_useState3, 2),\n view = _useState4[0],\n setView = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n connected: false\n }),\n _useState6 = _slicedToArray(_useState5, 2),\n googleStatus = _useState6[0],\n setGoogleStatus = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isConnecting = _useState8[0],\n setIsConnecting = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n isDemoMode = _useState0[0],\n setIsDemoMode = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState10 = _slicedToArray(_useState1, 2),\n events = _useState10[0],\n setEvents = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n isLoadingTasks = _useState12[0],\n setIsLoadingTasks = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState14 = _slicedToArray(_useState13, 2),\n selectedTask = _useState14[0],\n setSelectedTask = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState16 = _slicedToArray(_useState15, 2),\n allTasks = _useState16[0],\n setAllTasks = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState18 = _slicedToArray(_useState17, 2),\n projects = _useState18[0],\n setProjects = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState20 = _slicedToArray(_useState19, 2),\n isTaskModalOpen = _useState20[0],\n setIsTaskModalOpen = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState22 = _slicedToArray(_useState21, 2),\n isEventDetailModalOpen = _useState22[0],\n setIsEventDetailModalOpen = _useState22[1];\n\n // Dispatch global modal events\n (0,_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_7__.useModalEvents)(isTaskModalOpen || isEventDetailModalOpen);\n var locale = getLocale(i18n.language);\n\n // Load Google Calendar status and tasks on component mount\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n checkGoogleCalendarStatus();\n loadTasks();\n loadProjects();\n\n // Check URL parameters for demo mode\n var urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get('demo') === 'true' && urlParams.get('connected') === 'true') {\n setGoogleStatus({\n connected: true,\n email: 'demo@example.com'\n });\n setIsDemoMode(true);\n // Clean up URL\n window.history.replaceState({}, document.title, window.location.pathname);\n }\n }, []);\n var checkGoogleCalendarStatus = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response, status, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return fetch('/api/calendar/status', {\n credentials: 'include'\n });\n case 1:\n response = _context.v;\n if (!response.ok) {\n _context.n = 3;\n break;\n }\n _context.n = 2;\n return response.json();\n case 2:\n status = _context.v;\n setGoogleStatus(status);\n setIsDemoMode(status.demo || false);\n case 3:\n _context.n = 5;\n break;\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error('Error checking Google Calendar status:', _t);\n case 5:\n return _context.a(2);\n }\n }, _callee, null, [[0, 4]]);\n }));\n return function checkGoogleCalendarStatus() {\n return _ref.apply(this, arguments);\n };\n }();\n var loadTasks = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var response, data, tasks, taskEvents, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n setIsLoadingTasks(true);\n _context2.p = 1;\n _context2.n = 2;\n return fetch('/api/tasks', {\n credentials: 'include'\n });\n case 2:\n response = _context2.v;\n if (!response.ok) {\n _context2.n = 4;\n break;\n }\n _context2.n = 3;\n return response.json();\n case 3:\n data = _context2.v;\n if (Array.isArray(data)) {\n tasks = data;\n } else if (data && Array.isArray(data.tasks)) {\n tasks = data.tasks;\n } else if (data && data.data && Array.isArray(data.data)) {\n tasks = data.data;\n } else {\n console.error('Unexpected API response format:', data);\n tasks = [];\n }\n\n // Store the original tasks for later reference\n setAllTasks(tasks);\n taskEvents = convertTasksToEvents(tasks);\n setEvents(taskEvents);\n _context2.n = 5;\n break;\n case 4:\n console.error('Failed to load tasks, status:', response.status);\n case 5:\n _context2.n = 7;\n break;\n case 6:\n _context2.p = 6;\n _t2 = _context2.v;\n console.error('Error loading tasks:', _t2);\n case 7:\n _context2.p = 7;\n setIsLoadingTasks(false);\n return _context2.f(7);\n case 8:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 6, 7, 8]]);\n }));\n return function loadTasks() {\n return _ref2.apply(this, arguments);\n };\n }();\n var convertTasksToEvents = function convertTasksToEvents(tasks) {\n var taskEvents = [];\n if (!Array.isArray(tasks)) {\n console.error('convertTasksToEvents received non-array:', tasks);\n return [];\n }\n tasks.forEach(function (task, index) {\n // Add tasks with due dates\n if (task.due_date) {\n var dueDate = new Date(task.due_date);\n var taskEvent = {\n id: \"task-\".concat(task.id),\n title: task.name || task.title || \"Task \".concat(task.id),\n start: dueDate,\n end: new Date(dueDate.getTime() + 60 * 60 * 1000),\n // 1 hour duration\n type: 'task',\n color: task.completed_at ? '#22c55e' : '#ef4444' // Green if completed, red if not\n };\n taskEvents.push(taskEvent);\n }\n\n // Add tasks scheduled for today (if they don't have due_date)\n if (!task.due_date && task.created_at) {\n var createdDate = new Date(task.created_at);\n var today = new Date();\n\n // Show tasks created today on the calendar\n if (createdDate.toDateString() === today.toDateString()) {\n var _taskEvent = {\n id: \"task-created-\".concat(task.id),\n title: \"\\uD83D\\uDCDD \".concat(task.name || task.title || \"Task \".concat(task.id)),\n start: createdDate,\n end: new Date(createdDate.getTime() + 30 * 60 * 1000),\n // 30 min duration\n type: 'task',\n color: task.completed_at ? '#22c55e' : '#3b82f6' // Green if completed, blue if not\n };\n taskEvents.push(_taskEvent);\n }\n }\n\n // Always add tasks to calendar for easier debugging\n if (!task.due_date && !task.created_at) {\n var _taskEvent2 = {\n id: \"task-fallback-\".concat(task.id),\n title: \"\\uD83D\\uDCCC \".concat(task.name || task.title || \"Task \".concat(task.id)),\n start: new Date(),\n // Today\n end: new Date(Date.now() + 30 * 60 * 1000),\n // 30 min duration\n type: 'task',\n color: task.completed_at ? '#22c55e' : '#8b5cf6' // Green if completed, purple if not\n };\n taskEvents.push(_taskEvent2);\n }\n });\n return taskEvents;\n };\n var loadProjects = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var response, projectsData, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n _context3.n = 1;\n return fetch('/api/projects', {\n credentials: 'include'\n });\n case 1:\n response = _context3.v;\n if (!response.ok) {\n _context3.n = 3;\n break;\n }\n _context3.n = 2;\n return response.json();\n case 2:\n projectsData = _context3.v;\n setProjects(Array.isArray(projectsData) ? projectsData : []);\n case 3:\n _context3.n = 5;\n break;\n case 4:\n _context3.p = 4;\n _t3 = _context3.v;\n console.error('Error loading projects:', _t3);\n case 5:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 4]]);\n }));\n return function loadProjects() {\n return _ref3.apply(this, arguments);\n };\n }();\n var connectGoogleCalendar = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {\n var response, result, _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n if (!isConnecting) {\n _context4.n = 1;\n break;\n }\n return _context4.a(2);\n case 1:\n setIsConnecting(true);\n _context4.p = 2;\n _context4.n = 3;\n return fetch('/api/calendar/auth', {\n credentials: 'include'\n });\n case 3:\n response = _context4.v;\n if (!response.ok) {\n _context4.n = 5;\n break;\n }\n _context4.n = 4;\n return response.json();\n case 4:\n result = _context4.v;\n if (result.demo) {\n // Demo mode - simulate connection\n setGoogleStatus({\n connected: true,\n email: 'demo@example.com'\n });\n setIsDemoMode(true);\n } else {\n // Real Google OAuth - redirect to auth URL\n window.location.href = result.authUrl;\n }\n _context4.n = 6;\n break;\n case 5:\n throw new Error('Failed to get authorization URL');\n case 6:\n _context4.n = 8;\n break;\n case 7:\n _context4.p = 7;\n _t4 = _context4.v;\n console.error('Error connecting to Google Calendar:', _t4);\n alert(t('calendar.connectionError'));\n case 8:\n _context4.p = 8;\n setIsConnecting(false);\n return _context4.f(8);\n case 9:\n return _context4.a(2);\n }\n }, _callee4, null, [[2, 7, 8, 9]]);\n }));\n return function connectGoogleCalendar() {\n return _ref4.apply(this, arguments);\n };\n }();\n var disconnectGoogleCalendar = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {\n var response, _t5;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.p = 0;\n if (!isDemoMode) {\n _context5.n = 1;\n break;\n }\n // Demo mode - just update local state\n setGoogleStatus({\n connected: false\n });\n setIsDemoMode(false);\n return _context5.a(2);\n case 1:\n _context5.n = 2;\n return fetch('/api/calendar/disconnect', {\n method: 'POST',\n credentials: 'include'\n });\n case 2:\n response = _context5.v;\n if (!response.ok) {\n _context5.n = 3;\n break;\n }\n setGoogleStatus({\n connected: false\n });\n _context5.n = 4;\n break;\n case 3:\n throw new Error('Failed to disconnect');\n case 4:\n _context5.n = 6;\n break;\n case 5:\n _context5.p = 5;\n _t5 = _context5.v;\n console.error('Error disconnecting Google Calendar:', _t5);\n alert(t('calendar.disconnectionError'));\n case 6:\n return _context5.a(2);\n }\n }, _callee5, null, [[0, 5]]);\n }));\n return function disconnectGoogleCalendar() {\n return _ref5.apply(this, arguments);\n };\n }();\n var navigate = function navigate(direction) {\n setCurrentDate(function (prev) {\n if (view === 'month') {\n var newDate = new Date(prev);\n if (direction === 'prev') {\n newDate.setMonth(prev.getMonth() - 1);\n } else {\n newDate.setMonth(prev.getMonth() + 1);\n }\n return newDate;\n } else if (view === 'week') {\n return direction === 'prev' ? (0,date_fns__WEBPACK_IMPORTED_MODULE_14__.addWeeks)(prev, -1) : (0,date_fns__WEBPACK_IMPORTED_MODULE_14__.addWeeks)(prev, 1);\n } else {\n // day\n return direction === 'prev' ? (0,date_fns__WEBPACK_IMPORTED_MODULE_15__.addDays)(prev, -1) : (0,date_fns__WEBPACK_IMPORTED_MODULE_15__.addDays)(prev, 1);\n }\n });\n };\n var goToToday = function goToToday() {\n setCurrentDate(new Date());\n };\n var handleDateClick = function handleDateClick() {\n // Date click handler - can be used for future functionality\n };\n var handleEventClick = function handleEventClick(event) {\n // Handle task events\n if (event.type === 'task') {\n // Extract task ID from event ID\n var taskId = event.id.replace(/^task(-created|-fallback)?-/, '');\n var task = allTasks.find(function (t) {\n return t.id.toString() === taskId;\n });\n if (task) {\n // Convert task to proper Task entity format for TaskModal\n var taskEntity = _objectSpread(_objectSpread({}, task), {}, {\n name: task.name || task.title || \"Task \".concat(task.id),\n // Ensure all required Task properties are present\n priority: task.priority || 'medium',\n status: task.status || 'not_started',\n tags: task.tags || [],\n note: task.note || task.description || '',\n due_date: task.due_date,\n created_at: task.created_at,\n completed_at: task.completed_at,\n project_id: task.project_id\n });\n setSelectedTask(taskEntity);\n setIsEventDetailModalOpen(true);\n }\n }\n };\n var handleTimeSlotClick = function handleTimeSlotClick() {\n // Time slot click handler - can be used for future functionality\n };\n var handleEditTask = function handleEditTask() {\n setIsEventDetailModalOpen(false);\n setIsTaskModalOpen(true);\n };\n var handleTaskSave = function handleTaskSave(updatedTask) {\n // Update the task in allTasks\n setAllTasks(function (prev) {\n return prev.map(function (t) {\n return t.id === updatedTask.id ? updatedTask : t;\n });\n });\n // Refresh calendar\n loadTasks();\n // Close modal\n setIsTaskModalOpen(false);\n setSelectedTask(null);\n };\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(taskId) {\n var _t6;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.p = 0;\n _context6.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.deleteTask)(taskId);\n case 1:\n // Remove task from allTasks\n setAllTasks(function (prev) {\n return prev.filter(function (t) {\n return t.id !== taskId;\n });\n });\n // Refresh calendar\n loadTasks();\n // Close modal\n setIsTaskModalOpen(false);\n setSelectedTask(null);\n _context6.n = 3;\n break;\n case 2:\n _context6.p = 2;\n _t6 = _context6.v;\n console.error('Failed to delete task:', _t6);\n case 3:\n return _context6.a(2);\n }\n }, _callee6, null, [[0, 2]]);\n }));\n return function handleTaskDelete(_x) {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleCreateProject = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(name) {\n var response, newProject, _t7;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n _context7.p = 0;\n _context7.n = 1;\n return fetch('/api/projects', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n credentials: 'include',\n body: JSON.stringify({\n name: name,\n description: ''\n })\n });\n case 1:\n response = _context7.v;\n if (!response.ok) {\n _context7.n = 3;\n break;\n }\n _context7.n = 2;\n return response.json();\n case 2:\n newProject = _context7.v;\n setProjects(function (prev) {\n return [].concat(_toConsumableArray(prev), [newProject]);\n });\n return _context7.a(2, newProject);\n case 3:\n throw new Error('Failed to create project');\n case 4:\n _context7.n = 6;\n break;\n case 5:\n _context7.p = 5;\n _t7 = _context7.v;\n console.error('Error creating project:', _t7);\n throw _t7;\n case 6:\n return _context7.a(2);\n }\n }, _callee7, null, [[0, 5]]);\n }));\n return function handleCreateProject(_x2) {\n return _ref7.apply(this, arguments);\n };\n }();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-6xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n className: \"h-6 w-6 mr-2\"\n }), t('sidebar.calendar')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-lg text-gray-600 dark:text-gray-400\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_17__.format)(currentDate, 'MMMM yyyy', {\n locale: locale\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex rounded-lg border border-gray-300 dark:border-gray-600\"\n }, ['month', 'week', 'day'].map(function (viewType) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: viewType,\n onClick: function onClick() {\n return setView(viewType);\n },\n className: \"px-3 py-1 text-sm font-medium capitalize \".concat(view === viewType ? 'bg-blue-500 text-white' : 'bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700', \" \").concat(viewType === 'month' ? 'rounded-l-lg' : '', \" \").concat(viewType === 'day' ? 'rounded-r-lg' : '')\n }, t(\"calendar.\".concat(viewType)));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return navigate('prev');\n },\n className: \"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-800\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: goToToday,\n className: \"px-3 py-2 text-sm bg-blue-500 text-white rounded-lg hover:bg-blue-600\"\n }, t('calendar.today')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return navigate('next');\n },\n className: \"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-800\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"h-5 w-5\"\n })))), isLoadingTasks && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-center py-4 text-gray-500\"\n }, t('calendar.loadingTasks')), view === 'month' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Calendar_CalendarMonthView__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n currentDate: currentDate,\n events: events,\n onDateClick: handleDateClick,\n onEventClick: handleEventClick\n }), view === 'week' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Calendar_CalendarWeekView__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n currentDate: currentDate,\n events: events,\n onDateClick: handleDateClick,\n onEventClick: handleEventClick,\n onTimeSlotClick: handleTimeSlotClick\n }), view === 'day' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Calendar_CalendarDayView__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n currentDate: currentDate,\n events: events,\n onEventClick: handleEventClick,\n onTimeSlotClick: handleTimeSlotClick\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-6 bg-white dark:bg-gray-900 rounded-lg shadow p-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-medium mb-4 text-gray-900 dark:text-gray-100\"\n }, t('calendar.googleIntegration')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm text-gray-600 dark:text-gray-400 mb-2\"\n }, isDemoMode ? 'Demo mode: Google Calendar integration simulated for testing purposes.' : t('calendar.googleDescription')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-500\"\n }, t('calendar.googleStatus'), \":\", googleStatus.connected ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-green-500 ml-1\"\n }, t('calendar.connected'), googleStatus.email && \" (\".concat(googleStatus.email, \")\")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-red-500 ml-1\"\n }, t('calendar.notConnected')))), googleStatus.connected ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: disconnectGoogleCalendar,\n className: \"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600\"\n }, t('calendar.disconnectGoogle')) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: connectGoogleCalendar,\n disabled: isConnecting,\n className: \"px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 disabled:opacity-50\"\n }, isConnecting ? t('calendar.connecting') : t('calendar.connectGoogle')))), selectedTask && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(TaskEventModal, {\n isOpen: isEventDetailModalOpen,\n onClose: function onClose() {\n setIsEventDetailModalOpen(false);\n setSelectedTask(null);\n },\n task: selectedTask,\n onEditTask: handleEditTask\n }), selectedTask && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_TaskModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n isOpen: isTaskModalOpen,\n onClose: function onClose() {\n setIsTaskModalOpen(false);\n setSelectedTask(null);\n },\n task: selectedTask,\n onSave: handleTaskSave,\n onDelete: handleTaskDelete,\n projects: projects,\n onCreateProject: handleCreateProject\n })));\n};\n\n// Simple Task Event Details Modal Component\n_s(Calendar, \"ObyA1dSny8rJzYSDH0KS7dmUDOU=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_7__.useModalEvents];\n});\n_c = Calendar;\nvar TaskEventModal = function TaskEventModal(_ref8) {\n _s2();\n var _task$Project;\n var isOpen = _ref8.isOpen,\n task = _ref8.task,\n onClose = _ref8.onClose,\n onEditTask = _ref8.onEditTask;\n var _useTranslation2 = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation2.t,\n i18n = _useTranslation2.i18n;\n var locale = getLocale(i18n.language);\n if (!isOpen) return null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6 max-w-md w-full mx-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-between items-start mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-gray-100\"\n }, \"\\uD83D\\uDCCB \", t('calendar.taskDetails')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onClose,\n className: \"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"w-6 h-6\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('calendar.title')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-900 dark:text-gray-100\"\n }, task.name || \"Task \".concat(task.id))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('calendar.status')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium \".concat(task.completed_at ? 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200' : 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200')\n }, task.completed_at ? \"\\u2705 \".concat(t('calendar.completed')) : \"\\u23F3 \".concat(t('calendar.pending'))))), task.due_date && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('calendar.dueDate')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-900 dark:text-gray-100\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_17__.format)(new Date(task.due_date), 'PPP', {\n locale: locale\n }))), task.priority && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('calendar.priority')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium \".concat(task.priority === 'high' ? 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200' : task.priority === 'medium' ? 'bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200' : 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200')\n }, t(\"calendar.\".concat(task.priority)))), ((_task$Project = task.Project) === null || _task$Project === void 0 ? void 0 : _task$Project.name) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('calendar.project')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-900 dark:text-gray-100\"\n }, task.Project.name)), task.note && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('calendar.description')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-900 dark:text-gray-100 whitespace-pre-wrap\"\n }, task.note)), task.created_at && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('calendar.created')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_17__.format)(new Date(task.created_at), 'PPp', {\n locale: locale\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-6 flex justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/tasks\",\n className: \"inline-flex items-center px-3 py-2 text-sm font-medium text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n className: \"w-4 h-4 mr-1\"\n }), t('calendar.goToTasks')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onClose,\n className: \"px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-gray-100 dark:bg-gray-700 rounded-md hover:bg-gray-200 dark:hover:bg-gray-600\"\n }, t('calendar.close')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onEditTask,\n className: \"px-4 py-2 text-sm font-medium bg-blue-500 text-white rounded-md hover:bg-blue-600\"\n }, t('calendar.editTask'))))));\n};\n_s2(TaskEventModal, \"OZwazanA59tbNDUkc8lMSmTHj9Q=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c2 = TaskEventModal;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Calendar);\nvar _c, _c2;\n__webpack_require__.$Refresh$.register(_c, \"Calendar\");\n__webpack_require__.$Refresh$.register(_c2, \"TaskEventModal\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Calendar.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Calendar/CalendarDayView.tsx":
-/*!**********************************************************!*\
- !*** ./frontend/components/Calendar/CalendarDayView.tsx ***!
- \**********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/format.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/isToday.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/addHours.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar CalendarDayView = function CalendarDayView(_ref) {\n _s();\n var currentDate = _ref.currentDate,\n events = _ref.events,\n onEventClick = _ref.onEventClick,\n onTimeSlotClick = _ref.onTimeSlotClick;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var hours = Array.from({\n length: 24\n }, function (_, i) {\n return i;\n });\n var getEventsForTimeSlot = function getEventsForTimeSlot(hour) {\n return events.filter(function (event) {\n var eventDay = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(event.start, 'yyyy-MM-dd');\n var currentDay = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(currentDate, 'yyyy-MM-dd');\n var eventHour = event.start.getHours();\n return eventDay === currentDay && eventHour === hour;\n });\n };\n var handleTimeSlotClick = function handleTimeSlotClick(hour) {\n if (onTimeSlotClick) {\n onTimeSlotClick(currentDate, hour);\n }\n };\n var handleEventClick = function handleEventClick(event, e) {\n e.stopPropagation();\n if (onEventClick) {\n onEventClick(event);\n }\n };\n var calculateEventHeight = function calculateEventHeight(event) {\n var durationMs = event.end.getTime() - event.start.getTime();\n var durationHours = durationMs / (1000 * 60 * 60);\n return Math.max(durationHours * 48, 24); // Minimum 24px height\n };\n var calculateEventPosition = function calculateEventPosition(event) {\n var minutes = event.start.getMinutes();\n return minutes / 60 * 48; // 48px per hour\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 rounded-lg shadow overflow-hidden\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-lg font-medium \".concat((0,date_fns__WEBPACK_IMPORTED_MODULE_3__.isToday)(currentDate) ? 'text-blue-600 dark:text-blue-400' : 'text-gray-900 dark:text-gray-100')\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(currentDate, 'EEEE')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-2xl font-bold \".concat((0,date_fns__WEBPACK_IMPORTED_MODULE_3__.isToday)(currentDate) ? 'text-blue-600 dark:text-blue-400' : 'text-gray-600 dark:text-gray-400')\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(currentDate, 'd')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-sm text-gray-500 dark:text-gray-400\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(currentDate, 'MMMM yyyy')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-2 border-b border-gray-100 dark:border-gray-800 bg-gray-50 dark:bg-gray-800\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 mb-1\"\n }, \"All day\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-1\"\n }, events.filter(function (event) {\n var eventDay = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(event.start, 'yyyy-MM-dd');\n var currentDay = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(currentDate, 'yyyy-MM-dd');\n // Check if it's an all-day event (spans 24 hours or more)\n var duration = event.end.getTime() - event.start.getTime();\n return eventDay === currentDay && duration >= 24 * 60 * 60 * 1000;\n }).map(function (event) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: event.id,\n onClick: function onClick(e) {\n return handleEventClick(event, e);\n },\n className: \"text-xs p-2 rounded text-white cursor-pointer hover:opacity-80 transition-opacity \".concat(event.type === 'task' ? 'border-l-2 border-l-white/50' : ''),\n style: {\n backgroundColor: event.color || '#3b82f6'\n },\n title: \"\".concat(event.type === 'task' ? '📋 ' : '').concat(event.title)\n }, event.type === 'task' && '📋 ', event.title);\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"max-h-96 overflow-y-auto\"\n }, hours.map(function (hour) {\n var timeSlotEvents = getEventsForTimeSlot(hour);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: hour,\n className: \"relative border-b border-gray-100 dark:border-gray-800\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-16 p-2 text-xs text-gray-500 dark:text-gray-400 text-center border-r border-gray-200 dark:border-gray-700\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)((0,date_fns__WEBPACK_IMPORTED_MODULE_4__.addHours)(new Date().setHours(hour, 0, 0, 0), 0), 'HH:mm')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n onClick: function onClick() {\n return handleTimeSlotClick(hour);\n },\n className: \"flex-1 h-12 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 relative\"\n }, timeSlotEvents.map(function (event) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: event.id,\n onClick: function onClick(e) {\n return handleEventClick(event, e);\n },\n className: \"absolute left-1 right-1 text-xs p-1 rounded text-white cursor-pointer hover:opacity-80 transition-opacity z-10 \".concat(event.type === 'task' ? 'border-l-2 border-l-white/50' : ''),\n style: {\n backgroundColor: event.color || '#3b82f6',\n top: calculateEventPosition(event),\n height: calculateEventHeight(event)\n },\n title: \"\".concat(event.type === 'task' ? '📋 ' : '').concat(event.title, \" - \").concat((0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(event.start, 'HH:mm'), \" to \").concat((0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(event.end, 'HH:mm'))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"font-medium\"\n }, event.type === 'task' && '📋 ', event.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xs opacity-90\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(event.start, 'HH:mm'), \" - \", (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.format)(event.end, 'HH:mm')));\n }))));\n })));\n};\n_s(CalendarDayView, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = CalendarDayView;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CalendarDayView);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"CalendarDayView\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Calendar/CalendarDayView.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Calendar/CalendarMonthView.tsx":
-/*!************************************************************!*\
- !*** ./frontend/components/Calendar/CalendarMonthView.tsx ***!
- \************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/startOfMonth.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/endOfMonth.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/startOfWeek.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/endOfWeek.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/eachDayOfInterval.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/format.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/isSameMonth.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/isToday.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar CalendarMonthView = function CalendarMonthView(_ref) {\n _s();\n var currentDate = _ref.currentDate,\n events = _ref.events,\n onDateClick = _ref.onDateClick,\n onEventClick = _ref.onEventClick;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var monthStart = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.startOfMonth)(currentDate);\n var monthEnd = (0,date_fns__WEBPACK_IMPORTED_MODULE_3__.endOfMonth)(currentDate);\n var calendarStart = (0,date_fns__WEBPACK_IMPORTED_MODULE_4__.startOfWeek)(monthStart, {\n weekStartsOn: 1\n }); // Start on Monday\n var calendarEnd = (0,date_fns__WEBPACK_IMPORTED_MODULE_5__.endOfWeek)(monthEnd, {\n weekStartsOn: 1\n });\n var days = (0,date_fns__WEBPACK_IMPORTED_MODULE_6__.eachDayOfInterval)({\n start: calendarStart,\n end: calendarEnd\n });\n var weekDays = [t('weekdays.monday', 'Mon'), t('weekdays.tuesday', 'Tue'), t('weekdays.wednesday', 'Wed'), t('weekdays.thursday', 'Thu'), t('weekdays.friday', 'Fri'), t('weekdays.saturday', 'Sat'), t('weekdays.sunday', 'Sun')];\n var handleDateClick = function handleDateClick(date) {\n if (onDateClick) {\n onDateClick(date);\n }\n };\n var handleEventClick = function handleEventClick(event, e) {\n e.stopPropagation();\n if (onEventClick) {\n onEventClick(event);\n }\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 rounded-lg shadow overflow-hidden\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-7 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800\"\n }, weekDays.map(function (day) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: day,\n className: \"p-3 text-center text-sm font-medium text-gray-500 dark:text-gray-400\"\n }, day);\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-7\"\n }, days.map(function (day) {\n var dayEvents = events.filter(function (event) {\n return (0,date_fns__WEBPACK_IMPORTED_MODULE_7__.format)(event.start, 'yyyy-MM-dd') === (0,date_fns__WEBPACK_IMPORTED_MODULE_7__.format)(day, 'yyyy-MM-dd');\n });\n var isCurrentMonth = (0,date_fns__WEBPACK_IMPORTED_MODULE_8__.isSameMonth)(day, currentDate);\n var isTodayDate = (0,date_fns__WEBPACK_IMPORTED_MODULE_9__.isToday)(day);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: day.toString(),\n onClick: function onClick() {\n return handleDateClick(day);\n },\n className: \"min-h-32 p-2 border-r border-b border-gray-100 dark:border-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 \".concat(!isCurrentMonth ? 'bg-gray-50 dark:bg-gray-800' : 'bg-white dark:bg-gray-900', \" \").concat(isTodayDate ? 'bg-blue-50 dark:bg-blue-900/20 ring-2 ring-blue-300 dark:ring-blue-600' : '')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-sm mb-2 \".concat(!isCurrentMonth ? 'text-gray-400 dark:text-gray-600' : 'text-gray-900 dark:text-gray-100', \" \").concat(isTodayDate ? 'font-bold text-blue-600 dark:text-blue-400' : '')\n }, isTodayDate && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"inline-flex items-center justify-center w-6 h-6 bg-blue-600 text-white text-xs font-bold rounded-full\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_7__.format)(day, 'd')), !isTodayDate && (0,date_fns__WEBPACK_IMPORTED_MODULE_7__.format)(day, 'd')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-1\"\n }, dayEvents.slice(0, 3).map(function (event) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: event.id,\n onClick: function onClick(e) {\n return handleEventClick(event, e);\n },\n className: \"text-xs p-1 rounded text-white truncate cursor-pointer hover:opacity-80 transition-opacity \".concat(event.type === 'task' ? 'border-l-2 border-l-white/50' : ''),\n style: {\n backgroundColor: event.color || '#3b82f6'\n },\n title: \"\".concat(event.type === 'task' ? '📋 ' : '').concat(event.title)\n }, event.type === 'task' && '📋 ', event.title);\n }), dayEvents.length > 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 px-1\"\n }, \"+\", dayEvents.length - 3, \" more\")));\n })));\n};\n_s(CalendarMonthView, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = CalendarMonthView;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CalendarMonthView);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"CalendarMonthView\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Calendar/CalendarMonthView.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Calendar/CalendarWeekView.tsx":
-/*!***********************************************************!*\
- !*** ./frontend/components/Calendar/CalendarWeekView.tsx ***!
- \***********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/startOfWeek.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/endOfWeek.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/eachDayOfInterval.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/format.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/isToday.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/addHours.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar CalendarWeekView = function CalendarWeekView(_ref) {\n _s();\n var currentDate = _ref.currentDate,\n events = _ref.events,\n onDateClick = _ref.onDateClick,\n onEventClick = _ref.onEventClick,\n onTimeSlotClick = _ref.onTimeSlotClick;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var weekStart = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__.startOfWeek)(currentDate, {\n weekStartsOn: 1\n });\n var weekEnd = (0,date_fns__WEBPACK_IMPORTED_MODULE_3__.endOfWeek)(currentDate, {\n weekStartsOn: 1\n });\n var weekDays = (0,date_fns__WEBPACK_IMPORTED_MODULE_4__.eachDayOfInterval)({\n start: weekStart,\n end: weekEnd\n });\n var hours = Array.from({\n length: 24\n }, function (_, i) {\n return i;\n });\n var getEventsForTimeSlot = function getEventsForTimeSlot(day, hour) {\n return events.filter(function (event) {\n var eventDay = (0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)(event.start, 'yyyy-MM-dd');\n var slotDay = (0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)(day, 'yyyy-MM-dd');\n var eventHour = event.start.getHours();\n return eventDay === slotDay && eventHour === hour;\n });\n };\n var handleTimeSlotClick = function handleTimeSlotClick(day, hour) {\n if (onTimeSlotClick) {\n onTimeSlotClick(day, hour);\n }\n };\n var handleEventClick = function handleEventClick(event, e) {\n e.stopPropagation();\n if (onEventClick) {\n onEventClick(event);\n }\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 rounded-lg shadow overflow-hidden\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-8 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 text-center text-sm font-medium text-gray-500 dark:text-gray-400\"\n }, \"Time\"), weekDays.map(function (day) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: day.toString(),\n className: \"p-3 text-center border-l border-gray-200 dark:border-gray-700 \".concat((0,date_fns__WEBPACK_IMPORTED_MODULE_6__.isToday)(day) ? 'bg-blue-50 dark:bg-blue-900/20' : '')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-sm font-medium \".concat((0,date_fns__WEBPACK_IMPORTED_MODULE_6__.isToday)(day) ? 'text-blue-600 dark:text-blue-400' : 'text-gray-900 dark:text-gray-100')\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)(day, 'EEE')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-lg \".concat((0,date_fns__WEBPACK_IMPORTED_MODULE_6__.isToday)(day) ? 'text-blue-600 dark:text-blue-400 font-bold' : 'text-gray-600 dark:text-gray-400')\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_6__.isToday)(day) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"inline-flex items-center justify-center w-8 h-8 bg-blue-600 text-white text-sm font-bold rounded-full\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)(day, 'd')) : (0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)(day, 'd')));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"max-h-96 overflow-y-auto\"\n }, hours.map(function (hour) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: hour,\n className: \"grid grid-cols-8 border-b border-gray-100 dark:border-gray-800\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-2 text-xs text-gray-500 dark:text-gray-400 text-center border-r border-gray-200 dark:border-gray-700\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)((0,date_fns__WEBPACK_IMPORTED_MODULE_7__.addHours)(new Date().setHours(hour, 0, 0, 0), 0), 'HH:mm')), weekDays.map(function (day) {\n var timeSlotEvents = getEventsForTimeSlot(day, hour);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: \"\".concat(day.toString(), \"-\").concat(hour),\n onClick: function onClick() {\n return handleTimeSlotClick(day, hour);\n },\n className: \"h-12 p-1 border-l border-gray-100 dark:border-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 relative \".concat((0,date_fns__WEBPACK_IMPORTED_MODULE_6__.isToday)(day) ? 'bg-blue-50/30 dark:bg-blue-900/10' : '')\n }, timeSlotEvents.map(function (event) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: event.id,\n onClick: function onClick(e) {\n return handleEventClick(event, e);\n },\n className: \"text-xs p-1 rounded text-white truncate cursor-pointer hover:opacity-80 transition-opacity absolute inset-1 \".concat(event.type === 'task' ? 'border-l-2 border-l-white/50' : ''),\n style: {\n backgroundColor: event.color || '#3b82f6'\n },\n title: \"\".concat(event.type === 'task' ? '📋 ' : '').concat(event.title, \" - \").concat((0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)(event.start, 'HH:mm'), \" to \").concat((0,date_fns__WEBPACK_IMPORTED_MODULE_5__.format)(event.end, 'HH:mm'))\n }, event.type === 'task' && '📋 ', event.title);\n }));\n }));\n })));\n};\n_s(CalendarWeekView, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = CalendarWeekView;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CalendarWeekView);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"CalendarWeekView\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Calendar/CalendarWeekView.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Inbox/InboxItemDetail.tsx":
-/*!*******************************************************!*\
- !*** ./frontend/components/Inbox/InboxItemDetail.tsx ***!
- \*******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PencilIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentListIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/DocumentTextIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/TrashIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TagIcon.js\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\nvar InboxItemDetail = function InboxItemDetail(_ref) {\n _s();\n var item = _ref.item,\n onProcess = _ref.onProcess,\n onDelete = _ref.onDelete,\n onUpdate = _ref.onUpdate,\n openTaskModal = _ref.openTaskModal,\n openProjectModal = _ref.openProjectModal,\n openNoteModal = _ref.openNoteModal;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n showConfirmDialog = _useState2[0],\n setShowConfirmDialog = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n loading = _useState4[0],\n setLoading = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isHovered = _useState6[0],\n setIsHovered = _useState6[1];\n var handleConvertToTask = function handleConvertToTask() {\n var newTask = {\n name: item.content,\n status: 'not_started',\n priority: 'medium'\n };\n if (item.id !== undefined) {\n openTaskModal(newTask, item.id);\n } else {\n openTaskModal(newTask);\n }\n };\n var handleConvertToProject = function handleConvertToProject() {\n var newProject = {\n name: item.content,\n description: '',\n active: true\n };\n if (item.id !== undefined) {\n openProjectModal(newProject, item.id);\n } else {\n openProjectModal(newProject);\n }\n };\n var handleConvertToNote = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var title, content, isBookmark, _yield$import, isUrl, extractUrlTitle, timeoutPromise, result, tagObjects, newNote, _t, _t2;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n title = item.content.split('\\n')[0] || item.content.substring(0, 50);\n content = item.content;\n isBookmark = false;\n _context.p = 1;\n _context.n = 2;\n return Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../utils/urlService */ \"./frontend/utils/urlService.ts\"));\n case 2:\n _yield$import = _context.v;\n isUrl = _yield$import.isUrl;\n extractUrlTitle = _yield$import.extractUrlTitle;\n if (!isUrl(item.content.trim())) {\n _context.n = 7;\n break;\n }\n setLoading(true);\n _context.p = 3;\n // Add a timeout to prevent infinite loading\n timeoutPromise = new Promise(function (_, reject) {\n return setTimeout(function () {\n return reject(new Error('Timeout'));\n }, 10000);\n } // 10 second timeout\n );\n _context.n = 4;\n return Promise.race([extractUrlTitle(item.content.trim()), timeoutPromise]);\n case 4:\n result = _context.v;\n if (result && result.title) {\n title = result.title;\n content = item.content;\n isBookmark = true;\n }\n _context.n = 6;\n break;\n case 5:\n _context.p = 5;\n _t = _context.v;\n console.error(\"Error extracting URL title:\", _t);\n // Continue with default title if URL title extraction fails\n // Still mark as bookmark if it's a URL\n isBookmark = true;\n case 6:\n _context.p = 6;\n setLoading(false);\n return _context.f(6);\n case 7:\n _context.n = 9;\n break;\n case 8:\n _context.p = 8;\n _t2 = _context.v;\n console.error(\"Error checking URL or extracting title:\", _t2);\n setLoading(false);\n case 9:\n // Simple array of tag objects for the note\n tagObjects = isBookmark ? [{\n name: \"bookmark\"\n }] : [];\n newNote = {\n title: title,\n content: content,\n tags: tagObjects\n };\n if (item.id !== undefined) {\n openNoteModal(newNote, item.id);\n } else {\n openNoteModal(newNote);\n }\n case 10:\n return _context.a(2);\n }\n }, _callee, null, [[3, 5, 6, 7], [1, 8]]);\n }));\n return function handleConvertToNote() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleDelete = function handleDelete() {\n setShowConfirmDialog(true);\n };\n var confirmDelete = function confirmDelete() {\n if (item.id !== undefined) {\n onDelete(item.id);\n }\n setShowConfirmDialog(false);\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"rounded-lg shadow-sm bg-white dark:bg-gray-900 mt-1\",\n onMouseEnter: function onMouseEnter() {\n return setIsHovered(true);\n },\n onMouseLeave: function onMouseLeave() {\n return setIsHovered(false);\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col sm:flex-row sm:items-center sm:justify-between px-4 py-2 gap-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-base font-medium text-gray-900 dark:text-gray-300 break-words\"\n }, item.content), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center mt-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-3 w-3 mr-1 text-gray-500 dark:text-gray-400\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, item.source))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-start space-x-1 shrink-0\"\n }, loading && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"spinner\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n if (onUpdate && item.id !== undefined) {\n onUpdate(item.id, item.content);\n }\n },\n className: \"p-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-full transition-opacity opacity-100 sm:\".concat(isHovered ? 'opacity-100' : 'opacity-0'),\n title: t('common.edit')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleConvertToTask,\n className: \"p-2 text-blue-600 dark:text-blue-400 hover:bg-blue-100 dark:hover:bg-blue-900 rounded-full transition-opacity opacity-100 sm:\".concat(isHovered ? 'opacity-100' : 'opacity-0'),\n title: t('inbox.createTask')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleConvertToProject,\n className: \"p-2 text-green-600 dark:text-green-400 hover:bg-green-100 dark:hover:bg-green-900 rounded-full transition-opacity opacity-100 sm:\".concat(isHovered ? 'opacity-100' : 'opacity-0'),\n title: t('inbox.createProject')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleConvertToNote,\n className: \"p-2 text-purple-600 dark:text-purple-400 hover:bg-purple-100 dark:hover:bg-purple-900 rounded-full transition-opacity opacity-100 sm:\".concat(isHovered ? 'opacity-100' : 'opacity-0'),\n title: t('inbox.createNote', 'Create Note')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-4 w-4\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleDelete,\n className: \"p-2 text-red-600 dark:text-red-400 hover:bg-red-100 dark:hover:bg-red-900 rounded-full transition-opacity opacity-100 sm:\".concat(isHovered ? 'opacity-100' : 'opacity-0'),\n title: t('common.delete')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-4 w-4\"\n })))), showConfirmDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: t('inbox.deleteConfirmTitle', 'Delete Item'),\n message: t('inbox.deleteConfirmMessage', 'Are you sure you want to delete this inbox item? This action cannot be undone.'),\n onConfirm: confirmDelete,\n onCancel: function onCancel() {\n return setShowConfirmDialog(false);\n }\n }));\n};\n_s(InboxItemDetail, \"4/d1ksDb5mGTRs2OSm4ZrZa6oNc=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast];\n});\n_c = InboxItemDetail;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InboxItemDetail);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"InboxItemDetail\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Inbox/InboxItemDetail.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Inbox/InboxItems.tsx":
-/*!**************************************************!*\
- !*** ./frontend/components/Inbox/InboxItems.tsx ***!
- \**************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_inboxService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/inboxService */ \"./frontend/utils/inboxService.ts\");\n/* harmony import */ var _InboxItemDetail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./InboxItemDetail */ \"./frontend/components/Inbox/InboxItemDetail.tsx\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/InboxIcon.js\");\n/* harmony import */ var _Shared_LoadingScreen__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Shared/LoadingScreen */ \"./frontend/components/Shared/LoadingScreen.tsx\");\n/* harmony import */ var _Task_TaskModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Task/TaskModal */ \"./frontend/components/Task/TaskModal.tsx\");\n/* harmony import */ var _Project_ProjectModal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Project/ProjectModal */ \"./frontend/components/Project/ProjectModal.tsx\");\n/* harmony import */ var _Note_NoteModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Note/NoteModal */ \"./frontend/components/Note/NoteModal.tsx\");\n/* harmony import */ var _Task_SimplifiedTaskModal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Task/SimplifiedTaskModal */ \"./frontend/components/Task/SimplifiedTaskModal.tsx\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_notesService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/notesService */ \"./frontend/utils/notesService.ts\");\n/* harmony import */ var _utils_urlService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/urlService */ \"./frontend/utils/urlService.ts\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar InboxItems = function InboxItems() {\n _s();\n var _inboxItems$find;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation)(),\n t = _useTranslation.t;\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_3__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n\n // Access store data\n var _useStore = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_14__.useStore)(function (state) {\n return state.inboxStore;\n }),\n inboxItems = _useStore.inboxItems,\n isLoading = _useStore.isLoading;\n\n // Modal states\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isTaskModalOpen = _useState2[0],\n setIsTaskModalOpen = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isProjectModalOpen = _useState4[0],\n setIsProjectModalOpen = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isNoteModalOpen = _useState6[0],\n setIsNoteModalOpen = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isEditModalOpen = _useState8[0],\n setIsEditModalOpen = _useState8[1];\n\n // Data for modals\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState0 = _slicedToArray(_useState9, 2),\n taskToEdit = _useState0[0],\n setTaskToEdit = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState10 = _slicedToArray(_useState1, 2),\n projectToEdit = _useState10[0],\n setProjectToEdit = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState12 = _slicedToArray(_useState11, 2),\n noteToEdit = _useState12[0],\n setNoteToEdit = _useState12[1];\n\n // Track the current inbox item ID being converted (for task/project/note conversion)\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState14 = _slicedToArray(_useState13, 2),\n currentConversionItemId = _useState14[0],\n setCurrentConversionItemId = _useState14[1];\n\n // Track the current inbox item being edited\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState16 = _slicedToArray(_useState15, 2),\n itemToEdit = _useState16[0],\n setItemToEdit = _useState16[1];\n\n // Fetch projects for modals\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState18 = _slicedToArray(_useState17, 2),\n projects = _useState18[0],\n setProjects = _useState18[1];\n\n // Wrapped in useCallback to prevent dependency issues in useEffect\n var refreshInboxItems = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n (0,_utils_inboxService__WEBPACK_IMPORTED_MODULE_1__.loadInboxItemsToStore)();\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n // Initial data loading\n refreshInboxItems();\n\n // Set up an event listener for force reload\n var handleForceReload = function handleForceReload() {\n // Wait a short time to ensure the backend has processed the new item\n setTimeout(function () {\n refreshInboxItems();\n }, 500);\n };\n\n // Handler for the inboxItemsUpdated custom event\n var handleInboxItemsUpdated = function handleInboxItemsUpdated(event) {\n // Show toast notifications for new items\n if (event.detail.count > 0) {\n // Show notification for the first new item\n showSuccessToast(t('inbox.newTelegramItem', 'New item from Telegram: {{content}}', {\n content: event.detail.firstItemContent\n }));\n\n // If multiple new items, show a summary notification as well\n if (event.detail.count > 1) {\n showSuccessToast(t('inbox.multipleNewItems', '{{count}} more new items added', {\n count: event.detail.count - 1\n }));\n }\n }\n };\n\n // Set up polling for new inbox items (especially from Telegram)\n // This ensures real-time updates when items are added externally\n var pollInterval = setInterval(function () {\n refreshInboxItems();\n }, 5000); // Check for new items every 5 seconds\n\n // Add event listeners\n window.addEventListener('forceInboxReload', handleForceReload);\n window.addEventListener('inboxItemsUpdated', handleInboxItemsUpdated);\n return function () {\n clearInterval(pollInterval);\n window.removeEventListener('forceInboxReload', handleForceReload);\n window.removeEventListener('inboxItemsUpdated', handleInboxItemsUpdated);\n };\n }, [refreshInboxItems, showSuccessToast, t]);\n var handleProcessItem = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(id) {\n var _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return (0,_utils_inboxService__WEBPACK_IMPORTED_MODULE_1__.processInboxItemWithStore)(id);\n case 1:\n showSuccessToast(t('inbox.itemProcessed'));\n _context.n = 3;\n break;\n case 2:\n _context.p = 2;\n _t = _context.v;\n console.error('Failed to process inbox item:', _t);\n showErrorToast(t('inbox.processError'));\n case 3:\n return _context.a(2);\n }\n }, _callee, null, [[0, 2]]);\n }));\n return function handleProcessItem(_x) {\n return _ref.apply(this, arguments);\n };\n }();\n var handleUpdateItem = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(id) {\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n // When edit button is clicked, we open the SimplifiedTaskModal instead of doing inline editing\n setItemToEdit(id);\n setIsEditModalOpen(true);\n case 1:\n return _context2.a(2);\n }\n }, _callee2);\n }));\n return function handleUpdateItem(_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleSaveEditedItem = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(text) {\n var _t2;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n if (!(itemToEdit !== null)) {\n _context3.n = 2;\n break;\n }\n _context3.n = 1;\n return (0,_utils_inboxService__WEBPACK_IMPORTED_MODULE_1__.updateInboxItemWithStore)(itemToEdit, text);\n case 1:\n showSuccessToast(t('inbox.itemUpdated'));\n case 2:\n setIsEditModalOpen(false);\n setItemToEdit(null);\n _context3.n = 4;\n break;\n case 3:\n _context3.p = 3;\n _t2 = _context3.v;\n console.error('Failed to update inbox item:', _t2);\n showErrorToast(t('inbox.updateError'));\n case 4:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 3]]);\n }));\n return function handleSaveEditedItem(_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleDeleteItem = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(id) {\n var _t3;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.p = 0;\n _context4.n = 1;\n return (0,_utils_inboxService__WEBPACK_IMPORTED_MODULE_1__.deleteInboxItemWithStore)(id);\n case 1:\n showSuccessToast(t('inbox.itemDeleted'));\n _context4.n = 3;\n break;\n case 2:\n _context4.p = 2;\n _t3 = _context4.v;\n console.error('Failed to delete inbox item:', _t3);\n showErrorToast(t('inbox.deleteError'));\n case 3:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 2]]);\n }));\n return function handleDeleteItem(_x4) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n // Modal handlers\n var handleOpenTaskModal = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(task, inboxItemId) {\n var projectData, _t4;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.p = 0;\n _context5.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_10__.fetchProjects)();\n case 1:\n projectData = _context5.v;\n // Make sure we always set an array\n setProjects(Array.isArray(projectData) ? projectData : []);\n _context5.n = 3;\n break;\n case 2:\n _context5.p = 2;\n _t4 = _context5.v;\n console.error('Failed to load projects:', _t4);\n showErrorToast(t('project.loadError', 'Failed to load projects'));\n setProjects([]); // Ensure we have an empty array even on error\n case 3:\n setTaskToEdit(task);\n if (inboxItemId) {\n setCurrentConversionItemId(inboxItemId);\n }\n setIsTaskModalOpen(true);\n case 4:\n return _context5.a(2);\n }\n }, _callee5, null, [[0, 2]]);\n }));\n return function handleOpenTaskModal(_x5, _x6) {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleOpenProjectModal = function handleOpenProjectModal(project, inboxItemId) {\n setProjectToEdit(project);\n if (inboxItemId) {\n setCurrentConversionItemId(inboxItemId);\n }\n setIsProjectModalOpen(true);\n };\n var handleOpenNoteModal = function handleOpenNoteModal(note, inboxItemId) {\n // If note has content that's a URL, ensure it has a bookmark tag\n if (note && note.content && (0,_utils_urlService__WEBPACK_IMPORTED_MODULE_13__.isUrl)(note.content.trim())) {\n if (!note.tags) {\n note.tags = [{\n name: 'bookmark'\n }];\n } else if (!note.tags.some(function (tag) {\n return tag.name === 'bookmark';\n })) {\n note.tags.push({\n name: 'bookmark'\n });\n }\n }\n setNoteToEdit(note);\n if (inboxItemId) {\n setCurrentConversionItemId(inboxItemId);\n }\n setIsNoteModalOpen(true);\n };\n var handleSaveTask = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(task) {\n var createdTask, taskLink, _t5;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.p = 0;\n _context6.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_11__.createTask)(task);\n case 1:\n createdTask = _context6.v;\n taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.created', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/task/\".concat(createdTask.uuid),\n className: \"text-green-200 underline hover:text-green-100\"\n }, createdTask.name), \" \", t('task.createdSuccessfully', 'created successfully!'));\n showSuccessToast(taskLink);\n\n // Process the inbox item after successful task creation\n if (!(currentConversionItemId !== null)) {\n _context6.n = 3;\n break;\n }\n _context6.n = 2;\n return handleProcessItem(currentConversionItemId);\n case 2:\n setCurrentConversionItemId(null);\n case 3:\n setIsTaskModalOpen(false);\n _context6.n = 5;\n break;\n case 4:\n _context6.p = 4;\n _t5 = _context6.v;\n console.error('Failed to create task:', _t5);\n showErrorToast(t('task.createError'));\n case 5:\n return _context6.a(2);\n }\n }, _callee6, null, [[0, 4]]);\n }));\n return function handleSaveTask(_x7) {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleSaveProject = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(project) {\n var _t6;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n _context7.p = 0;\n _context7.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_10__.createProject)(project);\n case 1:\n showSuccessToast(t('project.createSuccess'));\n\n // Process the inbox item after successful project creation\n if (!(currentConversionItemId !== null)) {\n _context7.n = 3;\n break;\n }\n _context7.n = 2;\n return handleProcessItem(currentConversionItemId);\n case 2:\n setCurrentConversionItemId(null);\n case 3:\n setIsProjectModalOpen(false);\n _context7.n = 5;\n break;\n case 4:\n _context7.p = 4;\n _t6 = _context7.v;\n console.error('Failed to create project:', _t6);\n showErrorToast(t('project.createError'));\n case 5:\n return _context7.a(2);\n }\n }, _callee7, null, [[0, 4]]);\n }));\n return function handleSaveProject(_x8) {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleSaveNote = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(note) {\n var noteContent, isBookmarkContent, _t7;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n _context8.p = 0;\n // Check if the content appears to be a URL and add the bookmark tag\n noteContent = note.content || '';\n isBookmarkContent = (0,_utils_urlService__WEBPACK_IMPORTED_MODULE_13__.isUrl)(noteContent.trim()); // Ensure tags property exists\n if (!note.tags) {\n note.tags = [];\n }\n\n // Add a bookmark tag if content is a URL and doesn't already have the tag\n if (isBookmarkContent && !note.tags.some(function (tag) {\n return tag.name === 'bookmark';\n })) {\n // Use spread operator to create a new array with the bookmark tag added\n note.tags = [].concat(_toConsumableArray(note.tags), [{\n name: 'bookmark'\n }]);\n }\n\n // Create the note with proper tags\n _context8.n = 1;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_12__.createNote)(note);\n case 1:\n showSuccessToast(t('note.createSuccess', 'Note created successfully'));\n\n // Process the inbox item after successful note creation\n if (!(currentConversionItemId !== null)) {\n _context8.n = 3;\n break;\n }\n _context8.n = 2;\n return handleProcessItem(currentConversionItemId);\n case 2:\n setCurrentConversionItemId(null);\n case 3:\n setIsNoteModalOpen(false);\n _context8.n = 5;\n break;\n case 4:\n _context8.p = 4;\n _t7 = _context8.v;\n console.error('Failed to create note:', _t7);\n showErrorToast(t('note.createError', 'Failed to create note'));\n case 5:\n return _context8.a(2);\n }\n }, _callee8, null, [[0, 4]]);\n }));\n return function handleSaveNote(_x9) {\n return _ref8.apply(this, arguments);\n };\n }();\n var handleCreateProject = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9(name) {\n var project, _t8;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n _context9.p = 0;\n _context9.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_10__.createProject)({\n name: name,\n active: true\n });\n case 1:\n project = _context9.v;\n showSuccessToast(t('project.createSuccess'));\n return _context9.a(2, project);\n case 2:\n _context9.p = 2;\n _t8 = _context9.v;\n console.error('Failed to create project:', _t8);\n showErrorToast(t('project.createError'));\n throw _t8;\n case 3:\n return _context9.a(2);\n }\n }, _callee9, null, [[0, 2]]);\n }));\n return function handleCreateProject(_x0) {\n return _ref9.apply(this, arguments);\n };\n }();\n if (isLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_LoadingScreen__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null);\n }\n if (inboxItems.length === 0) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col items-center justify-center p-8 space-y-4 text-center text-gray-600 dark:text-gray-300\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"h-16 w-16\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold\"\n }, t('inbox.empty')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('inbox.emptyDescription')));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"container mx-auto p-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"h-6 w-6 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h1\", {\n className: \"text-2xl font-light\"\n }, t('inbox.title'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"mb-6 text-sm text-gray-500 dark:text-gray-400\"\n }, t('taskViews.inbox', 'Inbox is where all uncategorized tasks are located. Tasks that have not been assigned to a project or don\\'t have a due date will appear here. This is your \\'brain dump\\' area where you can quickly note down tasks and organize them later.')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-2\"\n }, inboxItems.map(function (item) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_InboxItemDetail__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: item.id,\n item: item,\n onProcess: handleProcessItem,\n onDelete: handleDeleteItem,\n onUpdate: handleUpdateItem,\n openTaskModal: handleOpenTaskModal,\n openProjectModal: handleOpenProjectModal,\n openNoteModal: handleOpenNoteModal\n });\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_TaskModal__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n isOpen: isTaskModalOpen,\n onClose: function onClose() {\n setIsTaskModalOpen(false);\n setTaskToEdit(null);\n },\n task: taskToEdit || {\n name: '',\n status: 'not_started',\n priority: 'medium'\n },\n onSave: handleSaveTask,\n onDelete: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {\n return _regenerator().w(function (_context0) {\n while (1) switch (_context0.n) {\n case 0:\n return _context0.a(2);\n }\n }, _callee0);\n })) // No need to delete since it's a new task\n ,\n projects: Array.isArray(projects) ? projects : [],\n onCreateProject: handleCreateProject\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Project_ProjectModal__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n isOpen: isProjectModalOpen,\n onClose: function onClose() {\n setIsProjectModalOpen(false);\n setProjectToEdit(null);\n },\n onSave: handleSaveProject,\n project: projectToEdit || undefined,\n areas: []\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Note_NoteModal__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n isOpen: isNoteModalOpen,\n onClose: function onClose() {\n setIsNoteModalOpen(false);\n setNoteToEdit(null);\n },\n onSave: handleSaveNote,\n note: noteToEdit || {\n title: '',\n content: ''\n }\n }), isEditModalOpen && itemToEdit !== null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_SimplifiedTaskModal__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n isOpen: isEditModalOpen,\n onClose: function onClose() {\n setIsEditModalOpen(false);\n setItemToEdit(null);\n },\n onSave: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1() {\n return _regenerator().w(function (_context1) {\n while (1) switch (_context1.n) {\n case 0:\n return _context1.a(2);\n }\n }, _callee1);\n })) // Not used in edit mode\n ,\n initialText: ((_inboxItems$find = inboxItems.find(function (item) {\n return item.id === itemToEdit;\n })) === null || _inboxItems$find === void 0 ? void 0 : _inboxItems$find.content) || \"\",\n editMode: true,\n onEdit: handleSaveEditedItem\n }));\n};\n_s(InboxItems, \"nq0ODX7Tcz9ugYgcI0G8lAoMtHA=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_3__.useToast, _store_useStore__WEBPACK_IMPORTED_MODULE_14__.useStore];\n});\n_c = InboxItems;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InboxItems);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"InboxItems\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Inbox/InboxItems.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Login.tsx":
-/*!***************************************!*\
- !*** ./frontend/components/Login.tsx ***!
- \***************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! i18next */ \"./node_modules/i18next/dist/esm/i18next.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\nvar Login = function Login() {\n _s();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState2 = _slicedToArray(_useState, 2),\n email = _useState2[0],\n setEmail = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState4 = _slicedToArray(_useState3, 2),\n password = _useState4[0],\n setPassword = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState6 = _slicedToArray(_useState5, 2),\n error = _useState6[0],\n setError = _useState6[1];\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useNavigate)();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)(),\n t = _useTranslation.t;\n var handleSubmit = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {\n var response, data, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n e.preventDefault();\n _context.p = 1;\n _context.n = 2;\n return fetch('/api/login', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n email: email,\n password: password\n }),\n credentials: 'include'\n });\n case 2:\n response = _context.v;\n _context.n = 3;\n return response.json();\n case 3:\n data = _context.v;\n if (!response.ok) {\n _context.n = 5;\n break;\n }\n if (!(data.user && data.user.language)) {\n _context.n = 4;\n break;\n }\n _context.n = 4;\n return i18next__WEBPACK_IMPORTED_MODULE_1__[\"default\"].changeLanguage(data.user.language);\n case 4:\n window.dispatchEvent(new CustomEvent('userLoggedIn', {\n detail: data.user\n }));\n navigate('/today');\n _context.n = 6;\n break;\n case 5:\n setError(data.errors[0] || 'Login failed. Please try again.');\n case 6:\n _context.n = 8;\n break;\n case 7:\n _context.p = 7;\n _t = _context.v;\n setError('An error occurred. Please try again.');\n console.error('Error during login:', _t);\n case 8:\n return _context.a(2);\n }\n }, _callee, null, [[1, 7]]);\n }));\n return function handleSubmit(_x) {\n return _ref.apply(this, arguments);\n };\n }();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-gray-100 flex flex-col items-center justify-center min-h-screen px-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h1\", {\n className: \"text-5xl font-bold text-gray-300 mb-6\"\n }, \"tududi\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white p-8 rounded-lg shadow-md w-full max-w-sm\"\n }, error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-center text-red-500\"\n }, error), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", {\n onSubmit: handleSubmit\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n htmlFor: \"email\",\n className: \"block text-gray-600 mb-1\"\n }, t('auth.email', 'Email')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"email\",\n id: \"email\",\n name: \"email\",\n value: email,\n onChange: function onChange(e) {\n return setEmail(e.target.value);\n },\n className: \"w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500\",\n required: true\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n htmlFor: \"password\",\n className: \"block text-gray-600 mb-1\"\n }, t('auth.password', 'Password')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"password\",\n id: \"password\",\n name: \"password\",\n value: password,\n onChange: function onChange(e) {\n return setPassword(e.target.value);\n },\n className: \"w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500\",\n required: true\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"submit\",\n className: \"w-full bg-blue-500 text-white py-2 rounded-lg hover:bg-blue-600 transition-colors\"\n }, t('auth.login', 'Login')))));\n};\n_s(Login, \"p+CSpJk3UEXSCL3mEICWIDrV9HY=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useNavigate, react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation];\n});\n_c = Login;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Login);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Login\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Login.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Navbar.tsx":
-/*!****************************************!*\
- !*** ./frontend/components/Navbar.tsx ***!
- \****************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/Bars3Icon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/UserIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _Shared_PomodoroTimer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Shared/PomodoroTimer */ \"./frontend/components/Shared/PomodoroTimer.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\nvar Navbar = function Navbar(_ref) {\n _s();\n var isDarkMode = _ref.isDarkMode,\n toggleDarkMode = _ref.toggleDarkMode,\n currentUser = _ref.currentUser,\n setCurrentUser = _ref.setCurrentUser,\n isSidebarOpen = _ref.isSidebarOpen,\n setIsSidebarOpen = _ref.setIsSidebarOpen;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isDropdownOpen = _useState2[0],\n setIsDropdownOpen = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState4 = _slicedToArray(_useState3, 2),\n pomodoroEnabled = _useState4[0],\n setPomodoroEnabled = _useState4[1]; // Default to true\n var dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useNavigate)();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n setIsDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return function () {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n // Fetch user's pomodoro setting\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchProfile = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response, profile, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return fetch('/api/profile', {\n credentials: 'include'\n });\n case 1:\n response = _context.v;\n if (!response.ok) {\n _context.n = 3;\n break;\n }\n _context.n = 2;\n return response.json();\n case 2:\n profile = _context.v;\n setPomodoroEnabled(profile.pomodoro_enabled !== undefined ? profile.pomodoro_enabled : true);\n case 3:\n _context.n = 5;\n break;\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error('Error fetching profile:', _t);\n // Keep default value (true) if fetch fails\n case 5:\n return _context.a(2);\n }\n }, _callee, null, [[0, 4]]);\n }));\n return function fetchProfile() {\n return _ref2.apply(this, arguments);\n };\n }();\n fetchProfile();\n\n // Listen for Pomodoro setting changes from ProfileSettings\n var handlePomodoroSettingChange = function handlePomodoroSettingChange(event) {\n setPomodoroEnabled(event.detail.enabled);\n };\n window.addEventListener('pomodoroSettingChanged', handlePomodoroSettingChange);\n return function () {\n window.removeEventListener('pomodoroSettingChanged', handlePomodoroSettingChange);\n };\n }, []);\n var toggleDropdown = function toggleDropdown() {\n setIsDropdownOpen(!isDropdownOpen);\n };\n var handleLogout = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var response, _t2, _t3, _t4;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return fetch('/api/logout', {\n method: 'GET',\n credentials: 'include'\n });\n case 1:\n response = _context2.v;\n if (!response.ok) {\n _context2.n = 2;\n break;\n }\n setCurrentUser(null);\n navigate('/login');\n _context2.n = 4;\n break;\n case 2:\n _t2 = console;\n _context2.n = 3;\n return response.json();\n case 3:\n _t3 = _context2.v;\n _t2.error.call(_t2, 'Logout failed:', _t3);\n case 4:\n _context2.n = 6;\n break;\n case 5:\n _context2.p = 5;\n _t4 = _context2.v;\n console.error('Error during logout:', _t4);\n case 6:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 5]]);\n }));\n return function handleLogout() {\n return _ref3.apply(this, arguments);\n };\n }();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"nav\", {\n className: \"fixed top-0 left-0 right-0 z-50 bg-white dark:bg-gray-900 text-gray-900 dark:text-white shadow-md h-16\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"px-4 sm:px-6 lg:px-8 h-full flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setIsSidebarOpen(!isSidebarOpen);\n },\n className: \"flex items-center focus:outline-none text-gray-500 dark:text-gray-500\",\n \"aria-label\": isSidebarOpen ? \"Collapse Sidebar\" : \"Expand Sidebar\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-6 mt-1 w-6 mr-2\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_5__.Link, {\n to: \"/\",\n className: \"flex items-center no-underline text-gray-900 dark:text-white\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-2xl font-bold\"\n }, \"tududi\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-4\"\n }, pomodoroEnabled && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_PomodoroTimer__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\",\n ref: dropdownRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: toggleDropdown,\n className: \"flex items-center focus:outline-none\",\n \"aria-label\": \"User Menu\"\n }, currentUser !== null && currentUser !== void 0 && currentUser.avatarUrl ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"img\", {\n src: currentUser.avatarUrl,\n alt: \"User Avatar\",\n className: \"h-8 w-8 rounded-full object-cover border-2 border-green-500\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"h-8 w-8 rounded-full border-2 border-green-500 bg-gray-200 dark:bg-gray-700 flex items-center justify-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-6 w-6 text-gray-500 dark:text-gray-300\"\n }))), isDropdownOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: dropdownRef,\n className: \"absolute right-4 top-16 w-48 bg-white dark:bg-gray-800 rounded-md shadow-lg py-1 border border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_5__.Link, {\n to: \"/profile\",\n className: \"block px-4 py-2 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700\",\n onClick: function onClick() {\n return setIsDropdownOpen(false);\n }\n }, t('navigation.profileSettings', 'Profile Settings')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n setIsDropdownOpen(false);\n handleLogout();\n },\n className: \"w-full text-left px-4 py-2 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700\"\n }, t('navigation.logout', 'Logout')))))));\n};\n_s(Navbar, \"55YWfIkTZU5forJ3Nxwh+9ACWD8=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useNavigate];\n});\n_c = Navbar;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Navbar);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Navbar\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Navbar.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Note/NoteDetails.tsx":
-/*!**************************************************!*\
- !*** ./frontend/components/Note/NoteDetails.tsx ***!
- \**************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/DocumentTextIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TagIcon.js\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _NoteModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NoteModal */ \"./frontend/components/Note/NoteModal.tsx\");\n/* harmony import */ var _Shared_MarkdownRenderer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Shared/MarkdownRenderer */ \"./frontend/components/Shared/MarkdownRenderer.tsx\");\n/* harmony import */ var _utils_notesService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/notesService */ \"./frontend/utils/notesService.ts\");\n/* harmony import */ var _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/useModalEvents */ \"./frontend/hooks/useModalEvents.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\nvar NoteDetails = function NoteDetails() {\n _s();\n var _ref4, _ref5;\n var _useParams = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useParams)(),\n id = _useParams.id;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState2 = _slicedToArray(_useState, 2),\n note = _useState2[0],\n setNote = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isNoteModalOpen = _useState4[0],\n setIsNoteModalOpen = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isConfirmDialogOpen = _useState6[0],\n setIsConfirmDialogOpen = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState8 = _slicedToArray(_useState7, 2),\n noteToDelete = _useState8[0],\n setNoteToDelete = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState0 = _slicedToArray(_useState9, 2),\n isLoading = _useState0[0],\n setIsLoading = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState1, 2),\n isError = _useState10[0],\n setIsError = _useState10[1];\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useNavigate)();\n\n // Dispatch global modal events\n (0,_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents)(isNoteModalOpen);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchNote = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var notes, foundNote, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n setIsLoading(true);\n _context.n = 1;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.fetchNotes)();\n case 1:\n notes = _context.v;\n foundNote = notes.find(function (n) {\n return n.id === Number(id);\n });\n setNote(foundNote || null);\n if (!foundNote) {\n setIsError(true);\n }\n _context.n = 3;\n break;\n case 2:\n _context.p = 2;\n _t = _context.v;\n setIsError(true);\n console.error('Error fetching note:', _t);\n case 3:\n _context.p = 3;\n setIsLoading(false);\n return _context.f(3);\n case 4:\n return _context.a(2);\n }\n }, _callee, null, [[0, 2, 3, 4]]);\n }));\n return function fetchNote() {\n return _ref.apply(this, arguments);\n };\n }();\n fetchNote();\n }, [id]);\n var handleDeleteNote = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (noteToDelete) {\n _context2.n = 1;\n break;\n }\n return _context2.a(2);\n case 1:\n _context2.p = 1;\n _context2.n = 2;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.deleteNote)(noteToDelete.id);\n case 2:\n navigate('/notes');\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Error deleting note:', _t2);\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 3]]);\n }));\n return function handleDeleteNote() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleSaveNote = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(updatedNote) {\n var savedNote, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n if (!(updatedNote.id !== undefined)) {\n _context3.n = 2;\n break;\n }\n _context3.n = 1;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.updateNote)(updatedNote.id, updatedNote);\n case 1:\n savedNote = _context3.v;\n setNote(savedNote);\n _context3.n = 3;\n break;\n case 2:\n console.error(\"Error: Note ID is undefined.\");\n case 3:\n _context3.n = 5;\n break;\n case 4:\n _context3.p = 4;\n _t3 = _context3.v;\n console.error('Error saving note:', _t3);\n case 5:\n setIsNoteModalOpen(false);\n case 6:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 4]]);\n }));\n return function handleSaveNote(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleEditNote = function handleEditNote() {\n setIsNoteModalOpen(true);\n };\n var handleOpenConfirmDialog = function handleOpenConfirmDialog(note) {\n setNoteToDelete(note);\n setIsConfirmDialogOpen(true);\n };\n if (isLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, \"Loading note details...\"));\n }\n if (isError || !note) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 text-lg\"\n }, isError ? 'Error loading note details.' : 'Note not found.'));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-6 w-6 text-xl mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light text-gray-900 dark:text-gray-100\"\n }, note.title)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleEditNote,\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none\",\n \"aria-label\": \"Edit \".concat(note.title),\n title: \"Edit \".concat(note.title)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return handleOpenConfirmDialog(note);\n },\n className: \"text-gray-500 hover:text-red-700 dark:hover:text-red-300 focus:outline-none\",\n \"aria-label\": \"Delete \".concat(note.title),\n title: \"Delete \".concat(note.title)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5\"\n })))), note.tags && note.tags.length > 0 || note.Tags && note.Tags.length > 0 || note.project || note.Project ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 shadow-md rounded-lg p-4 mb-6\"\n }, (note.tags && note.tags.length > 0 || note.Tags && note.Tags.length > 0) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-400 mr-3 mt-0.5\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-medium text-gray-600 dark:text-gray-400 mr-2\"\n }, \"Tags:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-wrap gap-2 mt-1\"\n }, (note.tags || note.Tags || []).map(function (tag) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: tag.id,\n onClick: function onClick() {\n return navigate(\"/tag/\".concat(tag.id));\n },\n className: \"flex items-center space-x-1 px-2 py-1 bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200 rounded-full cursor-pointer hover:bg-blue-200 dark:hover:bg-blue-900/50 transition-colors text-xs\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-3 w-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, tag.name));\n }))))), (note.project || note.Project) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: note.tags && note.tags.length > 0 || note.Tags && note.Tags.length > 0 ? \"mt-4\" : \"\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-white\"\n }, \"Project\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_11__.Link, {\n to: \"/project/\".concat((_ref4 = note.project || note.Project) === null || _ref4 === void 0 ? void 0 : _ref4.id),\n className: \"text-blue-600 dark:text-blue-400 hover:underline\"\n }, (_ref5 = note.project || note.Project) === null || _ref5 === void 0 ? void 0 : _ref5.name))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6 bg-white dark:bg-gray-900 shadow-md rounded-lg p-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_MarkdownRenderer__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n content: note.content\n })), isNoteModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_NoteModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n isOpen: isNoteModalOpen,\n onClose: function onClose() {\n return setIsNoteModalOpen(false);\n },\n onSave: handleSaveNote,\n note: note\n }), isConfirmDialogOpen && noteToDelete && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n title: \"Delete Note\",\n message: \"Are you sure you want to delete the note \\\"\".concat(noteToDelete.title, \"\\\"?\"),\n onConfirm: handleDeleteNote,\n onCancel: function onCancel() {\n setIsConfirmDialogOpen(false);\n setNoteToDelete(null);\n }\n })));\n};\n_s(NoteDetails, \"0MvOqpV4IJ4n2BdA7AcWKgj0/DY=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useParams, react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useNavigate, _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents];\n});\n_c = NoteDetails;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NoteDetails);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"NoteDetails\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Note/NoteDetails.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Note/NoteModal.tsx":
-/*!************************************************!*\
- !*** ./frontend/components/Note/NoteModal.tsx ***!
- \************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _Tag_TagInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Tag/TagInput */ \"./frontend/components/Tag/TagInput.tsx\");\n/* harmony import */ var _Shared_MarkdownRenderer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Shared/MarkdownRenderer */ \"./frontend/components/Shared/MarkdownRenderer.tsx\");\n/* harmony import */ var _utils_tagsService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/tagsService */ \"./frontend/utils/tagsService.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PencilIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\nvar NoteModal = function NoteModal(_ref) {\n _s();\n var _note$tags;\n var isOpen = _ref.isOpen,\n onClose = _ref.onClose,\n note = _ref.note,\n onSave = _ref.onSave;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_5__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n id: (note === null || note === void 0 ? void 0 : note.id) || 0,\n title: (note === null || note === void 0 ? void 0 : note.title) || '',\n content: (note === null || note === void 0 ? void 0 : note.content) || '',\n tags: (note === null || note === void 0 ? void 0 : note.tags) || []\n }),\n _useState2 = _slicedToArray(_useState, 2),\n formData = _useState2[0],\n setFormData = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((note === null || note === void 0 || (_note$tags = note.tags) === null || _note$tags === void 0 ? void 0 : _note$tags.map(function (tag) {\n return tag.name;\n })) || []),\n _useState4 = _slicedToArray(_useState3, 2),\n tags = _useState4[0],\n setTags = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState6 = _slicedToArray(_useState5, 2),\n availableTags = _useState6[0],\n setAvailableTags = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState8 = _slicedToArray(_useState7, 2),\n error = _useState8[0],\n setError = _useState8[1];\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n isSubmitting = _useState0[0],\n setIsSubmitting = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState1, 2),\n isClosing = _useState10[0],\n setIsClosing = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('edit'),\n _useState12 = _slicedToArray(_useState11, 2),\n activeTab = _useState12[0],\n setActiveTab = _useState12[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadTags = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var data, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_4__.fetchTags)();\n case 1:\n data = _context.v;\n setAvailableTags(data);\n _context.n = 3;\n break;\n case 2:\n _context.p = 2;\n _t = _context.v;\n console.error('Failed to fetch tags', _t);\n showErrorToast(t('errors.failedToLoadTags'));\n case 3:\n return _context.a(2);\n }\n }, _callee, null, [[0, 2]]);\n }));\n return function loadTags() {\n return _ref2.apply(this, arguments);\n };\n }();\n if (isOpen) {\n loadTags();\n }\n }, [isOpen, showErrorToast]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (isOpen) {\n var _note$tags2;\n // Extract tag names for display\n var tagNames = (note === null || note === void 0 || (_note$tags2 = note.tags) === null || _note$tags2 === void 0 ? void 0 : _note$tags2.map(function (tag) {\n return tag.name;\n })) || [];\n setFormData({\n id: (note === null || note === void 0 ? void 0 : note.id) || 0,\n title: (note === null || note === void 0 ? void 0 : note.title) || '',\n content: (note === null || note === void 0 ? void 0 : note.content) || '',\n tags: (note === null || note === void 0 ? void 0 : note.tags) || []\n });\n setTags(tagNames);\n setError(null);\n }\n }, [isOpen, note]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === 'Escape') {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener('keydown', handleKeyDown);\n }\n return function () {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [isOpen]);\n var handleChange = function handleChange(e) {\n var _e$target = e.target,\n name = _e$target.name,\n value = _e$target.value;\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, value));\n });\n };\n var handleTagsChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (newTags) {\n setTags(newTags);\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n tags: newTags.map(function (name) {\n return {\n name: name\n };\n })\n });\n });\n }, []);\n var handleSubmit = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var noteTags, finalFormData, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (formData.title.trim()) {\n _context2.n = 1;\n break;\n }\n setError(t('errors.noteTitleRequired'));\n return _context2.a(2);\n case 1:\n setIsSubmitting(true);\n setError(null);\n _context2.p = 2;\n // Convert string tags to tag objects\n noteTags = tags.map(function (tagName) {\n return {\n name: tagName\n };\n }); // Create final form data with the tags\n finalFormData = _objectSpread(_objectSpread({}, formData), {}, {\n tags: noteTags\n });\n _context2.n = 3;\n return onSave(finalFormData);\n case 3:\n showSuccessToast(formData.id && formData.id !== 0 ? t('success.noteUpdated') : t('success.noteCreated'));\n handleClose();\n _context2.n = 5;\n break;\n case 4:\n _context2.p = 4;\n _t2 = _context2.v;\n setError(_t2.message);\n showErrorToast(t('errors.failedToSaveNote'));\n case 5:\n _context2.p = 5;\n setIsSubmitting(false);\n return _context2.f(5);\n case 6:\n return _context2.a(2);\n }\n }, _callee2, null, [[2, 4, 5, 6]]);\n }));\n return function handleSubmit() {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleClose = function handleClose() {\n setIsClosing(true);\n setTimeout(function () {\n onClose();\n setIsClosing(false);\n }, 300);\n };\n if (!isOpen) return null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-16 left-0 right-0 bottom-0 flex items-start sm:items-center justify-center bg-gray-900 bg-opacity-80 z-40 transition-opacity duration-300 \".concat(isClosing ? 'opacity-0' : 'opacity-100')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: modalRef,\n className: \"bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-800 sm:rounded-lg sm:shadow-2xl w-full sm:max-w-2xl overflow-hidden transform transition-transform duration-300 \".concat(isClosing ? 'scale-95' : 'scale-100', \" h-screen sm:h-auto flex flex-col\"),\n style: {\n maxHeight: 'calc(100vh - 4rem)'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", {\n className: \"flex flex-col flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"fieldset\", {\n className: \"flex flex-col flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 space-y-3 flex-1 text-sm overflow-y-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"py-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n id: \"noteTitle\",\n name: \"title\",\n value: formData.title,\n onChange: handleChange,\n required: true,\n className: \"block w-full text-xl font-semibold dark:bg-gray-800 text-black dark:text-white border-b-2 border-gray-200 dark:border-gray-900 focus:outline-none shadow-sm py-2\",\n placeholder: t('forms.noteTitlePlaceholder')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.tags'), \" \", tags.length > 0 ? \"(\".concat(tags.join(', '), \")\") : ''), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Tag_TagInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onTagsChange: handleTagsChange,\n initialTags: tags,\n availableTags: availableTags\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3 flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300\"\n }, t('forms.noteContent'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-gray-500\"\n }, \"(Markdown supported)\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return setActiveTab('edit');\n },\n className: \"px-3 py-1 text-xs rounded-md flex items-center space-x-1 transition-colors \".concat(activeTab === 'edit' ? 'bg-blue-600 text-white' : 'bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-300 dark:hover:bg-gray-600')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-3 w-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, \"Edit\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return setActiveTab('preview');\n },\n className: \"px-3 py-1 text-xs rounded-md flex items-center space-x-1 transition-colors \".concat(activeTab === 'preview' ? 'bg-blue-600 text-white' : 'bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-300 dark:hover:bg-gray-600')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-3 w-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, \"Preview\")))), activeTab === 'edit' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textarea\", {\n id: \"noteContent\",\n name: \"content\",\n value: formData.content,\n onChange: handleChange,\n rows: 20,\n className: \"block w-full h-full rounded-md shadow-sm p-3 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 transition duration-150 ease-in-out\",\n placeholder: \"Write your content using Markdown formatting... Examples:\\n# Heading\\n**Bold text**\\n*Italic text*\\n- List item\\n```code```\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"block w-full h-full rounded-md shadow-sm p-3 text-sm bg-gray-50 dark:bg-gray-800 overflow-y-auto\"\n }, formData.content ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_MarkdownRenderer__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n content: formData.content\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-500 dark:text-gray-400 italic\"\n }, \"No content to preview. Switch to Edit tab to add content.\"))), error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500\"\n }, error)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 flex-shrink-0 border-t border-gray-200 dark:border-gray-700 flex justify-end space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleClose,\n className: \"px-4 py-2 text-md bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-600 focus:outline-none transition duration-150 ease-in-out\"\n }, t('common.cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleSubmit,\n disabled: isSubmitting,\n className: \"px-4 py-2 text-md bg-blue-600 text-white rounded-md hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600 focus:outline-none transition duration-150 ease-in-out \".concat(isSubmitting ? 'opacity-50 cursor-not-allowed' : '')\n }, isSubmitting ? t('modals.submitting') : formData.id && formData.id !== 0 ? t('modals.updateNote') : t('modals.createNote')))))));\n};\n_s(NoteModal, \"9v/kLoEYIFZkQKS9J7IzQZMfYA4=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_5__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast];\n});\n_c = NoteModal;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NoteModal);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"NoteModal\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Note/NoteModal.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Notes.tsx":
-/*!***************************************!*\
- !*** ./frontend/components/Notes.tsx ***!
- \***************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/BookOpenIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/MagnifyingGlassIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TagIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js\");\n/* harmony import */ var _Note_NoteModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Note/NoteModal */ \"./frontend/components/Note/NoteModal.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _utils_notesService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/notesService */ \"./frontend/utils/notesService.ts\");\n/* harmony import */ var _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/useModalEvents */ \"./frontend/hooks/useModalEvents.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\nvar Notes = function Notes() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useNavigate)();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState2 = _slicedToArray(_useState, 2),\n notes = _useState2[0],\n setNotes = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedNote = _useState4[0],\n setSelectedNote = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isNoteModalOpen = _useState6[0],\n setIsNoteModalOpen = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isConfirmDialogOpen = _useState8[0],\n setIsConfirmDialogOpen = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState0 = _slicedToArray(_useState9, 2),\n noteToDelete = _useState0[0],\n setNoteToDelete = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState10 = _slicedToArray(_useState1, 2),\n searchQuery = _useState10[0],\n setSearchQuery = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState12 = _slicedToArray(_useState11, 2),\n isLoading = _useState12[0],\n setIsLoading = _useState12[1];\n\n // Dispatch global modal events\n (0,_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents)(isNoteModalOpen);\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n isError = _useState14[0],\n setIsError = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState16 = _slicedToArray(_useState15, 2),\n hoveredNoteId = _useState16[0],\n setHoveredNoteId = _useState16[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadNotes = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var fetchedNotes, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n setIsLoading(true);\n _context.p = 1;\n _context.n = 2;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.fetchNotes)();\n case 2:\n fetchedNotes = _context.v;\n setNotes(fetchedNotes);\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n console.error('Error loading notes:', _t);\n setIsError(true);\n case 4:\n _context.p = 4;\n setIsLoading(false);\n return _context.f(4);\n case 5:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3, 4, 5]]);\n }));\n return function loadNotes() {\n return _ref.apply(this, arguments);\n };\n }();\n loadNotes();\n }, []);\n var handleDeleteNote = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (noteToDelete) {\n _context2.n = 1;\n break;\n }\n return _context2.a(2);\n case 1:\n _context2.p = 1;\n _context2.n = 2;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.deleteNote)(noteToDelete.id);\n case 2:\n setNotes(function (prev) {\n return prev.filter(function (note) {\n return note.id !== noteToDelete.id;\n });\n });\n setIsConfirmDialogOpen(false);\n setNoteToDelete(null);\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Error deleting note:', _t2);\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 3]]);\n }));\n return function handleDeleteNote() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleEditNote = function handleEditNote(note) {\n setSelectedNote(note);\n setIsNoteModalOpen(true);\n };\n var handleSaveNote = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(noteData) {\n var updatedNotes, savedNote, newNote, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n if (!noteData.id) {\n _context3.n = 2;\n break;\n }\n _context3.n = 1;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.updateNote)(noteData.id, noteData);\n case 1:\n savedNote = _context3.v;\n updatedNotes = notes.map(function (note) {\n return note.id === noteData.id ? savedNote : note;\n });\n _context3.n = 4;\n break;\n case 2:\n _context3.n = 3;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.createNote)(noteData);\n case 3:\n newNote = _context3.v;\n updatedNotes = [].concat(_toConsumableArray(notes), [newNote]);\n case 4:\n setNotes(updatedNotes);\n setIsNoteModalOpen(false);\n setSelectedNote(null);\n _context3.n = 6;\n break;\n case 5:\n _context3.p = 5;\n _t3 = _context3.v;\n console.error('Error saving note:', _t3);\n case 6:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 5]]);\n }));\n return function handleSaveNote(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n var filteredNotes = notes.filter(function (note) {\n return note.title.toLowerCase().includes(searchQuery.toLowerCase()) || note.content.toLowerCase().includes(searchQuery.toLowerCase());\n });\n if (isLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, t('notes.loading')));\n }\n if (isError) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 text-lg\"\n }, t('notes.error')));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-6 w-6 mr-2 text-gray-900 dark:text-white\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light text-gray-900 dark:text-white\"\n }, t('notes.title')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-sm p-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 dark:text-gray-400 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n placeholder: t('notes.searchPlaceholder'),\n value: searchQuery,\n onChange: function onChange(e) {\n return setSearchQuery(e.target.value);\n },\n className: \"w-full bg-transparent border-none focus:ring-0 focus:outline-none dark:text-white\"\n }))), filteredNotes.length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-700 dark:text-gray-300\"\n }, t('notes.noNotesFound')) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"space-y-1\"\n }, filteredNotes.map(function (note) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n key: note.id,\n className: \"bg-white dark:bg-gray-900 shadow rounded-lg px-4 py-3 flex justify-between items-center\",\n onMouseEnter: function onMouseEnter() {\n return setHoveredNoteId(note.id || null);\n },\n onMouseLeave: function onMouseLeave() {\n return setHoveredNoteId(null);\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-grow overflow-hidden pr-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center flex-wrap gap-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_9__.Link, {\n to: \"/note/\".concat(note.id),\n className: \"text-md font-semibold text-gray-900 dark:text-gray-100 hover:underline\"\n }, note.title), (note.tags && note.tags.length > 0 || note.Tags && note.Tags.length > 0) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (note.tags || note.Tags || []).map(function (tag) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: tag.id,\n onClick: function onClick(e) {\n e.preventDefault();\n navigate(\"/tag/\".concat(tag.id));\n },\n className: \"flex items-center space-x-1 px-2 py-0.5 bg-gray-100 dark:bg-gray-700 rounded text-xs cursor-pointer hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-3 w-3 text-gray-500 dark:text-gray-300\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-gray-700 dark:text-gray-300\"\n }, tag.name));\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return handleEditNote(note);\n },\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none transition-opacity \".concat(hoveredNoteId === note.id ? 'opacity-100' : 'opacity-0'),\n \"aria-label\": t('notes.editNoteAriaLabel', {\n noteTitle: note.title\n }),\n title: t('notes.editNoteTitle', {\n noteTitle: note.title\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n setNoteToDelete(note);\n setIsConfirmDialogOpen(true);\n },\n className: \"text-gray-500 hover:text-red-700 dark:hover:text-red-300 focus:outline-none transition-opacity \".concat(hoveredNoteId === note.id ? 'opacity-100' : 'opacity-0'),\n \"aria-label\": t('notes.deleteNoteAriaLabel', {\n noteTitle: note.title\n }),\n title: t('notes.deleteNoteTitle', {\n noteTitle: note.title\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"h-5 w-5\"\n }))));\n })), isNoteModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Note_NoteModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n isOpen: isNoteModalOpen,\n onClose: function onClose() {\n return setIsNoteModalOpen(false);\n },\n onSave: handleSaveNote,\n note: selectedNote\n }), isConfirmDialogOpen && noteToDelete && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: t('modals.deleteNote.title'),\n message: t('modals.deleteNote.message', {\n noteTitle: noteToDelete.title\n }),\n onConfirm: handleDeleteNote,\n onCancel: function onCancel() {\n return setIsConfirmDialogOpen(false);\n }\n })));\n};\n_s(Notes, \"F5OyVLU548TfYnuTy0YCPJQ0nko=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useNavigate, _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents];\n});\n_c = Notes;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Notes);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Notes\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Notes.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Productivity/ProductivityAssistant.tsx":
-/*!********************************************************************!*\
- !*** ./frontend/components/Productivity/ProductivityAssistant.tsx ***!
- \********************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/AcademicCapIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js\");\n/* harmony import */ var _Task_TaskModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Task/TaskModal */ \"./frontend/components/Task/TaskModal.tsx\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _utils_taskIntelligenceService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/taskIntelligenceService */ \"./frontend/utils/taskIntelligenceService.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\nvar ProductivityAssistant = function ProductivityAssistant(_ref) {\n _s();\n var tasks = _ref.tasks,\n projects = _ref.projects;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_7__.useNavigate)();\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isExpanded = _useState2[0],\n setIsExpanded = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState4 = _slicedToArray(_useState3, 2),\n insights = _useState4[0],\n setInsights = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(new Set()),\n _useState6 = _slicedToArray(_useState5, 2),\n expandedInsights = _useState6[0],\n setExpandedInsights = _useState6[1];\n\n // Modal states\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isTaskModalOpen = _useState8[0],\n setIsTaskModalOpen = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState0 = _slicedToArray(_useState9, 2),\n selectedTask = _useState0[0],\n setSelectedTask = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(projects),\n _useState10 = _slicedToArray(_useState1, 2),\n allProjects = _useState10[0],\n setAllProjects = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n loading = _useState12[0],\n setLoading = _useState12[1];\n var PROJECT_VERBS = ['plan', 'organize', 'set up', 'setup', 'fix', 'review', 'implement', 'create', 'build', 'develop'];\n var OVERDUE_THRESHOLD_DAYS = 30;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var generateInsights = function generateInsights() {\n var newInsights = [];\n\n // Filter to only include non-completed tasks\n var activeTasks = tasks.filter(function (task) {\n return task.status !== 'done' && task.status !== 'archived';\n });\n\n // 1. Stalled Projects (no tasks/actions)\n var stalledProjects = projects.filter(function (project) {\n return project.active && !activeTasks.some(function (task) {\n return task.project_id === project.id;\n });\n });\n if (stalledProjects.length > 0) {\n newInsights.push({\n type: 'stalled_projects',\n title: t('productivity.stalledProjects', 'Stalled Projects'),\n description: t('productivity.stalledProjectsDesc', 'These projects have no tasks or actions'),\n items: stalledProjects,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n color: 'text-red-500'\n });\n }\n\n // 2. Projects with completed tasks but no next action\n var projectsNeedingNextAction = projects.filter(function (project) {\n var projectTasks = tasks.filter(function (task) {\n return task.project_id === project.id;\n });\n var hasCompletedTasks = projectTasks.some(function (task) {\n return task.status === 'done' || task.status === 'archived';\n });\n var hasNextAction = activeTasks.some(function (task) {\n return task.project_id === project.id && (task.status === 'not_started' || task.status === 'in_progress');\n });\n return project.active && hasCompletedTasks && !hasNextAction;\n });\n if (projectsNeedingNextAction.length > 0) {\n newInsights.push({\n type: 'completed_no_next',\n title: t('productivity.needsNextAction', 'Projects Need Next Action'),\n description: t('productivity.needsNextActionDesc', 'These projects have completed tasks but no next action'),\n items: projectsNeedingNextAction,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n color: 'text-yellow-500'\n });\n }\n\n // 3. Tasks that are actually projects\n var tasksAreProjects = activeTasks.filter(function (task) {\n var taskName = task.name.toLowerCase();\n return PROJECT_VERBS.some(function (verb) {\n return taskName.includes(verb);\n }) && taskName.length > 30; // Longer tasks are more likely to be projects\n });\n if (tasksAreProjects.length > 0) {\n newInsights.push({\n type: 'tasks_are_projects',\n title: t('productivity.tasksAreProjects', 'Tasks That Look Like Projects'),\n description: t('productivity.tasksAreProjectsDesc', 'These tasks might need to be broken down'),\n items: tasksAreProjects,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n color: 'text-blue-500'\n });\n }\n\n // 4. Tasks without clear verbs\n var vagueTasks = (0,_utils_taskIntelligenceService__WEBPACK_IMPORTED_MODULE_6__.getVagueTasks)(activeTasks);\n if (vagueTasks.length > 0) {\n newInsights.push({\n type: 'vague_tasks',\n title: t('productivity.vagueTasks', 'Tasks Without Clear Action'),\n description: t('productivity.vagueTasksDesc', 'These tasks need clearer action verbs'),\n items: vagueTasks,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n color: 'text-orange-500'\n });\n }\n\n // 5. Overdue or stale tasks\n var now = new Date();\n var thresholdDate = new Date(now.getTime() - OVERDUE_THRESHOLD_DAYS * 24 * 60 * 60 * 1000);\n var staleTasks = activeTasks.filter(function (task) {\n // Only use created_at since updated_at doesn't exist in the interface\n var taskDate = task.created_at ? new Date(task.created_at) : null;\n return taskDate && taskDate < thresholdDate;\n });\n if (staleTasks.length > 0) {\n newInsights.push({\n type: 'overdue_tasks',\n title: t('productivity.staleTasks', 'Stale Tasks'),\n description: t('productivity.staleTasksDesc', 'Tasks not updated in {{days}} days', {\n days: OVERDUE_THRESHOLD_DAYS\n }),\n items: staleTasks,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n color: 'text-gray-500'\n });\n }\n\n // 6. Stuck projects (not updated in a month)\n var stuckProjects = projects.filter(function (project) {\n if (!project.active) return false;\n\n // Projects don't have date fields in the interface, so we'll check if they have recent tasks\n var projectTasks = activeTasks.filter(function (task) {\n return task.project_id === project.id;\n });\n if (projectTasks.length === 0) return false; // Empty projects are handled by \"stalled projects\"\n\n // Find the most recent task date for this project\n var mostRecentTaskDate = projectTasks.reduce(function (latest, task) {\n var taskDate = task.created_at ? new Date(task.created_at) : null;\n if (!taskDate) return latest;\n return !latest || taskDate > latest ? taskDate : latest;\n }, null);\n return mostRecentTaskDate && mostRecentTaskDate < thresholdDate;\n });\n if (stuckProjects.length > 0) {\n newInsights.push({\n type: 'stuck_projects',\n title: t('productivity.stuckProjects', 'Stuck Projects'),\n description: t('productivity.stuckProjectsDesc', 'Projects not updated recently'),\n items: stuckProjects,\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n color: 'text-purple-500'\n });\n }\n setInsights(newInsights);\n };\n generateInsights();\n }, [tasks, projects, t]);\n var totalIssues = insights.reduce(function (sum, insight) {\n return sum + insight.items.length;\n }, 0);\n var toggleInsightExpansion = function toggleInsightExpansion(index) {\n var newExpanded = new Set(expandedInsights);\n if (newExpanded.has(index)) {\n newExpanded[\"delete\"](index);\n } else {\n newExpanded.add(index);\n }\n setExpandedInsights(newExpanded);\n };\n var handleItemClick = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(item) {\n var isTask, fullTask, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n isTask = 'status' in item;\n if (!isTask) {\n _context.n = 6;\n break;\n }\n _context.p = 1;\n setLoading(true);\n _context.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.fetchTaskById)(item.id);\n case 2:\n fullTask = _context.v;\n setSelectedTask(fullTask);\n setIsTaskModalOpen(true);\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n console.error('Failed to fetch task:', _t);\n showErrorToast(t('errors.failedToLoadTask', 'Failed to load task'));\n case 4:\n _context.p = 4;\n setLoading(false);\n return _context.f(4);\n case 5:\n _context.n = 7;\n break;\n case 6:\n // Handle project click - navigate to project page\n navigate(\"/project/\".concat(item.id));\n case 7:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3, 4, 5]]);\n }));\n return function handleItemClick(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleTaskSave = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(updatedTask) {\n var _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n if (!updatedTask.id) {\n _context2.n = 2;\n break;\n }\n _context2.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.updateTask)(updatedTask.id, updatedTask);\n case 1:\n setIsTaskModalOpen(false);\n setSelectedTask(null);\n showSuccessToast(t('task.updateSuccess', 'Task updated successfully'));\n // Optionally refresh the parent component data\n case 2:\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Failed to update task:', _t2);\n showErrorToast(t('task.updateError', 'Failed to update task'));\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 3]]);\n }));\n return function handleTaskSave(_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n if (!(selectedTask !== null && selectedTask !== void 0 && selectedTask.id)) {\n _context3.n = 2;\n break;\n }\n _context3.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.deleteTask)(selectedTask.id);\n case 1:\n setIsTaskModalOpen(false);\n setSelectedTask(null);\n showSuccessToast(t('task.deleteSuccess', 'Task deleted successfully'));\n // Optionally refresh the parent component data\n case 2:\n _context3.n = 4;\n break;\n case 3:\n _context3.p = 3;\n _t3 = _context3.v;\n console.error('Failed to delete task:', _t3);\n showErrorToast(t('task.deleteError', 'Failed to delete task'));\n case 4:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 3]]);\n }));\n return function handleTaskDelete() {\n return _ref4.apply(this, arguments);\n };\n }();\n var handleCreateProject = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(name) {\n var project, _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.p = 0;\n _context4.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.createProject)({\n name: name,\n active: true\n });\n case 1:\n project = _context4.v;\n setAllProjects(function (prev) {\n return [].concat(_toConsumableArray(prev), [project]);\n });\n return _context4.a(2, project);\n case 2:\n _context4.p = 2;\n _t4 = _context4.v;\n console.error('Failed to create project:', _t4);\n throw _t4;\n case 3:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 2]]);\n }));\n return function handleCreateProject(_x3) {\n return _ref5.apply(this, arguments);\n };\n }();\n\n // Load projects when component mounts\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadProjects = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {\n var projectsData, _t5;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.p = 0;\n _context5.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.fetchProjects)();\n case 1:\n projectsData = _context5.v;\n setAllProjects(Array.isArray(projectsData) ? projectsData : []);\n _context5.n = 3;\n break;\n case 2:\n _context5.p = 2;\n _t5 = _context5.v;\n console.error('Failed to load projects:', _t5);\n case 3:\n return _context5.a(2);\n }\n }, _callee5, null, [[0, 2]]);\n }));\n return function loadProjects() {\n return _ref6.apply(this, arguments);\n };\n }();\n if (projects.length === 0) {\n loadProjects();\n } else {\n setAllProjects(projects);\n }\n }, [projects]);\n if (totalIssues === 0) {\n return null;\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-2 p-4 bg-white dark:bg-gray-900 border-l-4 border-yellow-500 rounded-lg shadow\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setIsExpanded(!isExpanded);\n },\n className: \"flex items-center w-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-6 w-6 text-yellow-500 dark:text-yellow-400 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 text-left\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-700 dark:text-gray-300 font-medium\"\n }, t('productivity.issuesFound', 'Found {{count}} productivity issue(s) that need attention', {\n count: totalIssues\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-yellow-600 dark:text-yellow-400 text-sm\"\n }, t('productivity.reviewItems', 'Click to review and improve your workflow'))), isExpanded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"h-5 w-5 text-yellow-500\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-5 w-5 text-yellow-500\"\n })), isExpanded && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-4 pt-4 border-t border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-4\"\n }, insights.map(function (insight, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: index,\n className: \"border-l-4 border-gray-200 dark:border-gray-600 pl-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start space-x-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(insight.icon, {\n className: \"h-5 w-5 mt-0.5 \".concat(insight.color)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"font-medium text-gray-900 dark:text-gray-100\"\n }, insight.title, \" (\", insight.items.length, \")\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm text-gray-600 dark:text-gray-400 mb-2\"\n }, insight.description), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-1\"\n }, (expandedInsights.has(index) ? insight.items : insight.items.slice(0, 3)).map(function (item, itemIndex) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: itemIndex,\n className: \"text-sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return handleItemClick(item);\n },\n className: \"text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300 underline text-left\",\n disabled: loading\n }, \"\\u2022 \", item.name));\n }), insight.items.length > 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return toggleInsightExpansion(index);\n },\n className: \"text-sm text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 underline cursor-pointer\"\n }, expandedInsights.has(index) ? '... show less' : \"... and \".concat(insight.items.length - 3, \" more items\"))))));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-4 pt-4 border-t border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, t('productivity.suggestion', 'Click on any item above to open it and make improvements.')))), selectedTask && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_TaskModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n isOpen: isTaskModalOpen,\n onClose: function onClose() {\n setIsTaskModalOpen(false);\n setSelectedTask(null);\n },\n task: selectedTask,\n onSave: handleTaskSave,\n onDelete: handleTaskDelete,\n projects: allProjects,\n onCreateProject: handleCreateProject\n }));\n};\n_s(ProductivityAssistant, \"f/MwgZD54GHHQQM2mhaNBA4VC/c=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, react_router_dom__WEBPACK_IMPORTED_MODULE_7__.useNavigate, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__.useToast];\n});\n_c = ProductivityAssistant;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductivityAssistant);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"ProductivityAssistant\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Productivity/ProductivityAssistant.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Profile/ProfileSettings.tsx":
-/*!*********************************************************!*\
- !*** ./frontend/components/Profile/ProfileSettings.tsx ***!
- \*********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/UserIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftRightIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/LightBulbIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CogIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentListIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/BoltIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FaceSmileIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CheckIcon.js\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\nvar formatFrequency = function formatFrequency(frequency) {\n if (frequency.endsWith('h')) {\n var value = frequency.replace('h', '');\n return \"\".concat(value, \" \").concat(parseInt(value) === 1 ? 'hour' : 'hours');\n } else if (frequency === 'daily') {\n return '1 day';\n } else if (frequency === 'weekly') {\n return '1 week';\n } else if (frequency === 'weekdays') {\n return 'Weekdays';\n }\n return frequency;\n};\nvar ProfileSettings = function ProfileSettings(_ref) {\n _s();\n var isDarkMode = _ref.isDarkMode,\n toggleDarkMode = _ref.toggleDarkMode;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('general'),\n _useState2 = _slicedToArray(_useState, 2),\n activeTab = _useState2[0],\n setActiveTab = _useState2[1];\n\n // Password visibility state\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n showCurrentPassword = _useState4[0],\n setShowCurrentPassword = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n showNewPassword = _useState6[0],\n setShowNewPassword = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n showConfirmPassword = _useState8[0],\n setShowConfirmPassword = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState0 = _slicedToArray(_useState9, 2),\n profile = _useState0[0],\n setProfile = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n appearance: isDarkMode ? 'dark' : 'light',\n language: 'en',\n timezone: 'UTC',\n avatar_image: '',\n telegram_bot_token: '',\n task_intelligence_enabled: true,\n task_summary_enabled: false,\n task_summary_frequency: 'daily',\n auto_suggest_next_actions_enabled: true,\n productivity_assistant_enabled: true,\n next_task_suggestion_enabled: true,\n pomodoro_enabled: true,\n currentPassword: '',\n newPassword: '',\n confirmPassword: ''\n }),\n _useState10 = _slicedToArray(_useState1, 2),\n formData = _useState10[0],\n setFormData = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState12 = _slicedToArray(_useState11, 2),\n loading = _useState12[0],\n setLoading = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),\n _useState14 = _slicedToArray(_useState13, 2),\n updateKey = _useState14[0],\n setUpdateKey = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n isChangingLanguage = _useState16[0],\n setIsChangingLanguage = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState18 = _slicedToArray(_useState17, 2),\n isPolling = _useState18[0],\n setIsPolling = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('idle'),\n _useState20 = _slicedToArray(_useState19, 2),\n telegramSetupStatus = _useState20[0],\n setTelegramSetupStatus = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState22 = _slicedToArray(_useState21, 2),\n telegramBotInfo = _useState22[0],\n setTelegramBotInfo = _useState22[1];\n var forceUpdate = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n setUpdateKey(function (prevKey) {\n return prevKey + 1;\n });\n }, []);\n\n // Password validation\n var validatePasswordForm = function validatePasswordForm() {\n var errors = {};\n\n // Only validate if user is trying to change password\n if (formData.currentPassword || formData.newPassword || formData.confirmPassword) {\n if (!formData.currentPassword) {\n errors.currentPassword = t('profile.currentPasswordRequired', 'Current password is required');\n }\n if (!formData.newPassword) {\n errors.newPassword = t('profile.newPasswordRequired', 'New password is required');\n } else if (formData.newPassword.length < 6) {\n errors.newPassword = t('profile.passwordTooShort', 'Password must be at least 6 characters');\n }\n if (formData.newPassword !== formData.confirmPassword) {\n errors.confirmPassword = t('profile.passwordMismatch', 'Passwords do not match');\n }\n }\n return {\n valid: Object.keys(errors).length === 0,\n errors: errors\n };\n };\n var handleChange = function handleChange(e) {\n var _e$target = e.target,\n name = _e$target.name,\n value = _e$target.value;\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, value));\n });\n };\n var handleLanguageChange = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {\n var resources, loadPath, response, data, _t, _t2;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n setIsChangingLanguage(true);\n _context.n = 1;\n return i18n.changeLanguage(value);\n case 1:\n document.documentElement.lang = value;\n resources = i18n.getResourceBundle(value, 'translation');\n if (!(!resources || Object.keys(resources).length === 0)) {\n _context.n = 7;\n break;\n }\n loadPath = \"/locales/\".concat(value, \"/translation.json\");\n _context.p = 2;\n _context.n = 3;\n return fetch(loadPath);\n case 3:\n response = _context.v;\n if (!response.ok) {\n _context.n = 5;\n break;\n }\n _context.n = 4;\n return response.json();\n case 4:\n data = _context.v;\n i18n.addResourceBundle(value, 'translation', data, true, true);\n if (window.forceLanguageReload) {\n window.forceLanguageReload(value);\n }\n case 5:\n _context.n = 7;\n break;\n case 6:\n _context.p = 6;\n _t = _context.v;\n case 7:\n setTimeout(function () {\n forceUpdate();\n var checkAndLoadResources = i18n.getResourceBundle(value, 'translation');\n if (!checkAndLoadResources || Object.keys(checkAndLoadResources).length === 0) {\n if (window.forceLanguageReload) {\n window.forceLanguageReload(value);\n }\n }\n setTimeout(function () {\n if (isChangingLanguage) {\n setIsChangingLanguage(false);\n }\n }, 800);\n }, 200);\n _context.n = 9;\n break;\n case 8:\n _context.p = 8;\n _t2 = _context.v;\n setIsChangingLanguage(false);\n case 9:\n return _context.a(2);\n }\n }, _callee, null, [[2, 6], [0, 8]]);\n }));\n return function handleLanguageChange(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchProfile = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var response, data, _t3;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n setLoading(true);\n _context2.n = 1;\n return fetch('/api/profile');\n case 1:\n response = _context2.v;\n if (response.ok) {\n _context2.n = 2;\n break;\n }\n throw new Error(t('profile.fetchError', 'Failed to fetch profile data.'));\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n data = _context2.v;\n setProfile(data);\n setFormData({\n appearance: data.appearance || (isDarkMode ? 'dark' : 'light'),\n language: data.language || 'en',\n timezone: data.timezone || 'UTC',\n avatar_image: data.avatar_image || '',\n telegram_bot_token: data.telegram_bot_token || '',\n task_intelligence_enabled: data.task_intelligence_enabled !== undefined ? data.task_intelligence_enabled : true,\n task_summary_enabled: data.task_summary_enabled !== undefined ? data.task_summary_enabled : false,\n task_summary_frequency: data.task_summary_frequency || 'daily',\n auto_suggest_next_actions_enabled: data.auto_suggest_next_actions_enabled !== undefined ? data.auto_suggest_next_actions_enabled : true,\n productivity_assistant_enabled: data.productivity_assistant_enabled !== undefined ? data.productivity_assistant_enabled : true,\n next_task_suggestion_enabled: data.next_task_suggestion_enabled !== undefined ? data.next_task_suggestion_enabled : true,\n pomodoro_enabled: data.pomodoro_enabled !== undefined ? data.pomodoro_enabled : true\n });\n\n // Note: Task summary status checking functionality removed for now\n\n if (data.telegram_bot_token) {\n fetchPollingStatus();\n }\n _context2.n = 5;\n break;\n case 4:\n _context2.p = 4;\n _t3 = _context2.v;\n showErrorToast(_t3.message);\n case 5:\n _context2.p = 5;\n setLoading(false);\n return _context2.f(5);\n case 6:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 4, 5, 6]]);\n }));\n return function fetchProfile() {\n return _ref3.apply(this, arguments);\n };\n }();\n var fetchPollingStatus = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var response, data, _t4;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n _context3.n = 1;\n return fetch('/api/telegram/polling-status');\n case 1:\n response = _context3.v;\n if (response.ok) {\n _context3.n = 2;\n break;\n }\n throw new Error(t('profile.pollingStatusError', 'Failed to fetch polling status.'));\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n data = _context3.v;\n setIsPolling(data.running);\n if (data.token_exists && !data.running) {\n handleStartPolling();\n }\n _context3.n = 5;\n break;\n case 4:\n _context3.p = 4;\n _t4 = _context3.v;\n case 5:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 4]]);\n }));\n return function fetchPollingStatus() {\n return _ref4.apply(this, arguments);\n };\n }();\n fetchProfile();\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {}, [updateKey, i18n.language]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n appearance: isDarkMode ? 'dark' : 'light'\n });\n });\n }, [isDarkMode]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleLanguageChanged = function handleLanguageChanged() {\n forceUpdate();\n };\n var handleAppLanguageChanged = function handleAppLanguageChanged() {\n forceUpdate();\n setTimeout(function () {\n setIsChangingLanguage(false);\n }, 300);\n };\n i18n.on('languageChanged', handleLanguageChanged);\n window.addEventListener('app-language-changed', handleAppLanguageChanged);\n return function () {\n i18n.off('languageChanged', handleLanguageChanged);\n window.removeEventListener('app-language-changed', handleAppLanguageChanged);\n };\n }, []);\n var handleSetupTelegram = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {\n var _data$bot, response, _data, data, _data$bot$polling_sta, botUsername, _t5;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n setTelegramSetupStatus('loading');\n setTelegramBotInfo(null);\n _context4.p = 1;\n if (!(!formData.telegram_bot_token || !formData.telegram_bot_token.includes(':'))) {\n _context4.n = 2;\n break;\n }\n throw new Error(t('profile.invalidTelegramToken'));\n case 2:\n _context4.n = 3;\n return fetch('/api/telegram/setup', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n token: formData.telegram_bot_token\n })\n });\n case 3:\n response = _context4.v;\n if (response.ok) {\n _context4.n = 5;\n break;\n }\n _context4.n = 4;\n return response.json();\n case 4:\n _data = _context4.v;\n throw new Error(_data.error || t('profile.telegramSetupFailed'));\n case 5:\n _context4.n = 6;\n return response.json();\n case 6:\n data = _context4.v;\n setTelegramSetupStatus('success');\n showSuccessToast(t('profile.telegramSetupSuccess', 'Telegram bot configured successfully!'));\n if (data.bot) {\n setTelegramBotInfo(data.bot);\n setIsPolling(true);\n if (!((_data$bot$polling_sta = data.bot.polling_status) !== null && _data$bot$polling_sta !== void 0 && _data$bot$polling_sta.running)) {\n setTimeout(function () {\n handleStartPolling();\n }, 1000);\n }\n }\n botUsername = ((_data$bot = data.bot) === null || _data$bot === void 0 ? void 0 : _data$bot.username) || formData.telegram_bot_token.split(':')[0];\n window.open(\"https://t.me/\".concat(botUsername), '_blank');\n _context4.n = 8;\n break;\n case 7:\n _context4.p = 7;\n _t5 = _context4.v;\n setTelegramSetupStatus('error');\n showErrorToast(_t5.message);\n case 8:\n return _context4.a(2);\n }\n }, _callee4, null, [[1, 7]]);\n }));\n return function handleSetupTelegram() {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleStartPolling = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {\n var response, _data2, data, _t6;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.p = 0;\n _context5.n = 1;\n return fetch('/api/telegram/start-polling', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 1:\n response = _context5.v;\n if (response.ok) {\n _context5.n = 3;\n break;\n }\n _context5.n = 2;\n return response.json();\n case 2:\n _data2 = _context5.v;\n throw new Error(_data2.error || t('profile.startPollingFailed'));\n case 3:\n _context5.n = 4;\n return response.json();\n case 4:\n data = _context5.v;\n setIsPolling(true);\n showSuccessToast(t('profile.pollingStarted'));\n if (telegramBotInfo) {\n setTelegramBotInfo(_objectSpread(_objectSpread({}, telegramBotInfo), {}, {\n polling_status: data.status\n }));\n }\n _context5.n = 6;\n break;\n case 5:\n _context5.p = 5;\n _t6 = _context5.v;\n showErrorToast(t('profile.pollingError'));\n case 6:\n return _context5.a(2);\n }\n }, _callee5, null, [[0, 5]]);\n }));\n return function handleStartPolling() {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleStopPolling = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() {\n var response, _data3, data, _t7;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.p = 0;\n _context6.n = 1;\n return fetch('/api/telegram/stop-polling', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 1:\n response = _context6.v;\n if (response.ok) {\n _context6.n = 3;\n break;\n }\n _context6.n = 2;\n return response.json();\n case 2:\n _data3 = _context6.v;\n throw new Error(_data3.error || t('profile.stopPollingFailed'));\n case 3:\n _context6.n = 4;\n return response.json();\n case 4:\n data = _context6.v;\n setIsPolling(false);\n showSuccessToast(t('profile.pollingStopped', 'Polling stopped successfully.'));\n if (telegramBotInfo) {\n setTelegramBotInfo(_objectSpread(_objectSpread({}, telegramBotInfo), {}, {\n polling_status: data.status\n }));\n }\n _context6.n = 6;\n break;\n case 5:\n _context6.p = 5;\n _t7 = _context6.v;\n showErrorToast(t('profile.pollingError'));\n case 6:\n return _context6.a(2);\n }\n }, _callee6, null, [[0, 5]]);\n }));\n return function handleStopPolling() {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleSubmit = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(e) {\n var isPasswordChange, passwordValidation, dataToSend, response, data, updatedProfile, successMessage, _t8;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n e.preventDefault();\n\n // Check if user is trying to change password\n isPasswordChange = formData.currentPassword || formData.newPassword || formData.confirmPassword; // Only validate password if user is trying to change password\n if (!isPasswordChange) {\n _context7.n = 1;\n break;\n }\n passwordValidation = validatePasswordForm();\n if (passwordValidation.valid) {\n _context7.n = 1;\n break;\n }\n showErrorToast(Object.values(passwordValidation.errors)[0]);\n return _context7.a(2);\n case 1:\n _context7.p = 1;\n // Prepare data to send - exclude password fields if not changing password\n dataToSend = _objectSpread({}, formData);\n if (!isPasswordChange) {\n delete dataToSend.currentPassword;\n delete dataToSend.newPassword;\n delete dataToSend.confirmPassword;\n }\n _context7.n = 2;\n return fetch('/api/profile', {\n method: 'PATCH',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n },\n body: JSON.stringify(dataToSend)\n });\n case 2:\n response = _context7.v;\n if (response.ok) {\n _context7.n = 4;\n break;\n }\n _context7.n = 3;\n return response.json();\n case 3:\n data = _context7.v;\n throw new Error(data.error || 'Failed to update profile.');\n case 4:\n _context7.n = 5;\n return response.json();\n case 5:\n updatedProfile = _context7.v;\n setProfile(updatedProfile);\n\n // Update formData to reflect the saved changes, preserving any fields not in response\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n appearance: updatedProfile.appearance || prev.appearance || 'light',\n language: updatedProfile.language || prev.language || 'en',\n timezone: updatedProfile.timezone || prev.timezone || 'UTC',\n avatar_image: updatedProfile.avatar_image !== undefined ? updatedProfile.avatar_image : prev.avatar_image || '',\n telegram_bot_token: updatedProfile.telegram_bot_token !== undefined ? updatedProfile.telegram_bot_token : prev.telegram_bot_token || '',\n task_intelligence_enabled: updatedProfile.task_intelligence_enabled !== undefined ? updatedProfile.task_intelligence_enabled : prev.task_intelligence_enabled !== undefined ? prev.task_intelligence_enabled : true,\n task_summary_enabled: updatedProfile.task_summary_enabled !== undefined ? updatedProfile.task_summary_enabled : prev.task_summary_enabled !== undefined ? prev.task_summary_enabled : false,\n task_summary_frequency: updatedProfile.task_summary_frequency || prev.task_summary_frequency || 'daily',\n auto_suggest_next_actions_enabled: updatedProfile.auto_suggest_next_actions_enabled !== undefined ? updatedProfile.auto_suggest_next_actions_enabled : prev.auto_suggest_next_actions_enabled !== undefined ? prev.auto_suggest_next_actions_enabled : true,\n productivity_assistant_enabled: updatedProfile.productivity_assistant_enabled !== undefined ? updatedProfile.productivity_assistant_enabled : prev.productivity_assistant_enabled !== undefined ? prev.productivity_assistant_enabled : true,\n next_task_suggestion_enabled: updatedProfile.next_task_suggestion_enabled !== undefined ? updatedProfile.next_task_suggestion_enabled : prev.next_task_suggestion_enabled !== undefined ? prev.next_task_suggestion_enabled : true,\n pomodoro_enabled: updatedProfile.pomodoro_enabled !== undefined ? updatedProfile.pomodoro_enabled : prev.pomodoro_enabled !== undefined ? prev.pomodoro_enabled : true\n });\n });\n\n // Apply appearance change after save\n if (updatedProfile.appearance !== (isDarkMode ? 'dark' : 'light') && toggleDarkMode) {\n toggleDarkMode();\n }\n\n // Apply language change after save\n if (!(updatedProfile.language !== i18n.language)) {\n _context7.n = 6;\n break;\n }\n _context7.n = 6;\n return handleLanguageChange(updatedProfile.language);\n case 6:\n // Notify other components about Pomodoro setting change\n if (updatedProfile.pomodoro_enabled !== undefined) {\n window.dispatchEvent(new CustomEvent('pomodoroSettingChanged', {\n detail: {\n enabled: updatedProfile.pomodoro_enabled\n }\n }));\n }\n\n // Clear password fields on successful save\n if (isPasswordChange) {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n currentPassword: '',\n newPassword: '',\n confirmPassword: ''\n });\n });\n }\n successMessage = isPasswordChange ? t('profile.passwordChangeSuccess', 'Password changed successfully!') : t('profile.successMessage', 'Profile updated successfully!');\n showSuccessToast(successMessage);\n _context7.n = 8;\n break;\n case 7:\n _context7.p = 7;\n _t8 = _context7.v;\n showErrorToast(_t8.message);\n case 8:\n return _context7.a(2);\n }\n }, _callee7, null, [[1, 7]]);\n }));\n return function handleSubmit(_x2) {\n return _ref8.apply(this, arguments);\n };\n }();\n if (loading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, t('common.loading')));\n }\n var tabs = [{\n id: 'general',\n name: t('profile.tabs.general', 'General'),\n icon: 'user'\n }, {\n id: 'security',\n name: t('profile.tabs.security', 'Security'),\n icon: 'shield'\n }, {\n id: 'productivity',\n name: t('profile.tabs.productivity', 'Productivity'),\n icon: 'clock'\n }, {\n id: 'telegram',\n name: t('profile.tabs.telegram', 'Telegram'),\n icon: 'chat'\n }, {\n id: 'ai',\n name: t('profile.tabs.ai', 'AI Features'),\n icon: 'sparkles'\n }];\n var renderTabIcon = function renderTabIcon(iconType) {\n switch (iconType) {\n case 'user':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-5 h-5\"\n });\n case 'clock':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-5 h-5\"\n });\n case 'chat':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"w-5 h-5\"\n });\n case 'shield':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"w-5 h-5\"\n });\n case 'sparkles':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-5 h-5\"\n });\n default:\n return null;\n }\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"max-w-5xl mx-auto p-6\",\n key: \"profile-settings-\".concat(updateKey)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-semibold text-gray-900 dark:text-white mb-6\"\n }, t('profile.title')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"border-b border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"nav\", {\n className: \"-mb-px flex space-x-8\"\n }, tabs.map(function (tab) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: tab.id,\n type: \"button\",\n onClick: function onClick() {\n return setActiveTab(tab.id);\n },\n className: \"group inline-flex items-center py-2 px-1 border-b-2 font-medium text-sm \".concat(activeTab === tab.id ? 'border-blue-500 text-blue-600 dark:text-blue-400' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 dark:text-gray-400 dark:hover:text-gray-300')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"mr-2\"\n }, renderTabIcon(tab.icon)), tab.name);\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-8\"\n }, activeTab === 'general' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold text-gray-900 dark:text-white mb-6 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-6 h-6 mr-3 text-blue-500\"\n }), t('profile.accountSettings', 'Account & Preferences')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('profile.appearance')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n name: \"appearance\",\n value: formData.appearance,\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"light\"\n }, t('profile.lightMode', 'Light')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"dark\"\n }, t('profile.darkMode', 'Dark')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('profile.language')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n name: \"language\",\n value: formData.language,\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"en\"\n }, t('profile.english')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"es\"\n }, t('profile.spanish')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"el\"\n }, t('profile.greek')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"jp\"\n }, t('profile.japanese')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"ua\"\n }, t('profile.ukrainian')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"de\"\n }, t('profile.deutsch')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('profile.timezone')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n name: \"timezone\",\n value: formData.timezone,\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"UTC\"\n }, \"UTC\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"optgroup\", {\n label: \"Americas\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/New_York\"\n }, \"Eastern Time (New York)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Chicago\"\n }, \"Central Time (Chicago)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Denver\"\n }, \"Mountain Time (Denver)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Los_Angeles\"\n }, \"Pacific Time (Los Angeles)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Anchorage\"\n }, \"Alaska Time (Anchorage)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Pacific/Honolulu\"\n }, \"Hawaii Time (Honolulu)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Toronto\"\n }, \"Eastern Time (Toronto)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Vancouver\"\n }, \"Pacific Time (Vancouver)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Mexico_City\"\n }, \"Central Time (Mexico City)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Sao_Paulo\"\n }, \"Bras\\xEDlia Time (S\\xE3o Paulo)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Argentina/Buenos_Aires\"\n }, \"Argentina Time (Buenos Aires)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Lima\"\n }, \"Peru Time (Lima)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Bogota\"\n }, \"Colombia Time (Bogot\\xE1)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Caracas\"\n }, \"Venezuela Time (Caracas)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/Santiago\"\n }, \"Chile Time (Santiago)\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"optgroup\", {\n label: \"Europe\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/London\"\n }, \"Greenwich Mean Time (London)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Dublin\"\n }, \"Greenwich Mean Time (Dublin)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Lisbon\"\n }, \"Western European Time (Lisbon)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Paris\"\n }, \"Central European Time (Paris)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Berlin\"\n }, \"Central European Time (Berlin)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Madrid\"\n }, \"Central European Time (Madrid)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Rome\"\n }, \"Central European Time (Rome)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Amsterdam\"\n }, \"Central European Time (Amsterdam)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Brussels\"\n }, \"Central European Time (Brussels)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Vienna\"\n }, \"Central European Time (Vienna)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Zurich\"\n }, \"Central European Time (Zurich)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Prague\"\n }, \"Central European Time (Prague)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Warsaw\"\n }, \"Central European Time (Warsaw)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Stockholm\"\n }, \"Central European Time (Stockholm)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Oslo\"\n }, \"Central European Time (Oslo)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Copenhagen\"\n }, \"Central European Time (Copenhagen)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Helsinki\"\n }, \"Eastern European Time (Helsinki)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Athens\"\n }, \"Eastern European Time (Athens)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Kiev\"\n }, \"Eastern European Time (Kiev)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Moscow\"\n }, \"Moscow Time (Moscow)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/Istanbul\"\n }, \"Turkey Time (Istanbul)\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"optgroup\", {\n label: \"Asia\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Dubai\"\n }, \"Gulf Standard Time (Dubai)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Tehran\"\n }, \"Iran Standard Time (Tehran)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Yerevan\"\n }, \"Armenia Time (Yerevan)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Baku\"\n }, \"Azerbaijan Time (Baku)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Karachi\"\n }, \"Pakistan Standard Time (Karachi)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Kolkata\"\n }, \"India Standard Time (Mumbai/Delhi)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Kathmandu\"\n }, \"Nepal Time (Kathmandu)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Dhaka\"\n }, \"Bangladesh Standard Time (Dhaka)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Yangon\"\n }, \"Myanmar Time (Yangon)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Bangkok\"\n }, \"Indochina Time (Bangkok)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Ho_Chi_Minh\"\n }, \"Indochina Time (Ho Chi Minh)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Jakarta\"\n }, \"Western Indonesia Time (Jakarta)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Kuala_Lumpur\"\n }, \"Malaysia Time (Kuala Lumpur)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Singapore\"\n }, \"Singapore Standard Time (Singapore)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Manila\"\n }, \"Philippines Time (Manila)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Hong_Kong\"\n }, \"Hong Kong Time (Hong Kong)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Shanghai\"\n }, \"China Standard Time (Beijing/Shanghai)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Taipei\"\n }, \"China Standard Time (Taipei)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Tokyo\"\n }, \"Japan Standard Time (Tokyo)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Seoul\"\n }, \"Korea Standard Time (Seoul)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Vladivostok\"\n }, \"Vladivostok Time (Vladivostok)\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"optgroup\", {\n label: \"Africa\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Africa/Casablanca\"\n }, \"Western European Time (Casablanca)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Africa/Lagos\"\n }, \"West Africa Time (Lagos)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Africa/Cairo\"\n }, \"Eastern European Time (Cairo)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Africa/Johannesburg\"\n }, \"South Africa Standard Time (Johannesburg)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Africa/Nairobi\"\n }, \"East Africa Time (Nairobi)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Africa/Addis_Ababa\"\n }, \"East Africa Time (Addis Ababa)\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"optgroup\", {\n label: \"Oceania\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Australia/Perth\"\n }, \"Australian Western Standard Time (Perth)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Australia/Adelaide\"\n }, \"Australian Central Standard Time (Adelaide)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Australia/Darwin\"\n }, \"Australian Central Standard Time (Darwin)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Australia/Brisbane\"\n }, \"Australian Eastern Standard Time (Brisbane)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Australia/Sydney\"\n }, \"Australian Eastern Standard Time (Sydney)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Australia/Melbourne\"\n }, \"Australian Eastern Standard Time (Melbourne)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Pacific/Auckland\"\n }, \"New Zealand Standard Time (Auckland)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Pacific/Fiji\"\n }, \"Fiji Time (Suva)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Pacific/Guam\"\n }, \"Chamorro Standard Time (Guam)\")))))), activeTab === 'security' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold text-gray-900 dark:text-white mb-6 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"w-6 h-6 mr-3 text-red-500\"\n }), t('profile.security', 'Security Settings')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-blue-500\"\n }), t('profile.changePassword', 'Change Password')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 p-3 bg-blue-50 dark:bg-blue-900 border border-blue-200 dark:border-blue-800 rounded text-blue-800 dark:text-blue-200\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-4 h-4 inline mr-1\"\n }), t('profile.passwordChangeOptional', 'Leave password fields empty to update other settings without changing your password.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('profile.currentPassword', 'Current Password')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: showCurrentPassword ? 'text' : 'password',\n name: \"currentPassword\",\n value: formData.currentPassword || '',\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 pr-10 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500\",\n placeholder: t('profile.enterCurrentPassword', 'Enter your current password')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n className: \"absolute inset-y-0 right-0 pr-3 flex items-center\",\n onClick: function onClick() {\n return setShowCurrentPassword(!showCurrentPassword);\n }\n }, showCurrentPassword ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('profile.newPassword', 'New Password')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: showNewPassword ? 'text' : 'password',\n name: \"newPassword\",\n value: formData.newPassword || '',\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 pr-10 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500\",\n placeholder: t('profile.enterNewPassword', 'Enter your new password')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n className: \"absolute inset-y-0 right-0 pr-3 flex items-center\",\n onClick: function onClick() {\n return setShowNewPassword(!showNewPassword);\n }\n }, showNewPassword ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('profile.confirmPassword', 'Confirm New Password')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: showConfirmPassword ? 'text' : 'password',\n name: \"confirmPassword\",\n value: formData.confirmPassword || '',\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 pr-10 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500\",\n placeholder: t('profile.confirmNewPassword', 'Confirm your new password')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n className: \"absolute inset-y-0 right-0 pr-3 flex items-center\",\n onClick: function onClick() {\n return setShowConfirmPassword(!showConfirmPassword);\n }\n }, showConfirmPassword ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, t('profile.passwordChangeNote', 'Password changes will be saved when you click \"Save Changes\" at the bottom of the form.'))))), activeTab === 'productivity' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold text-gray-900 dark:text-white mb-6 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-6 h-6 mr-3 text-green-500\"\n }), t('profile.productivityFeatures', 'Productivity Features')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-700 rounded-lg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"text-sm font-medium text-gray-700 dark:text-gray-300\"\n }, t('profile.enablePomodoro', 'Enable Pomodoro Timer')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 mt-1\"\n }, t('profile.pomodoroDescription', 'Enable the Pomodoro timer in the navigation bar for focused work sessions.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block w-12 h-6 transition-colors duration-200 ease-in-out rounded-full cursor-pointer \".concat(formData.pomodoro_enabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'),\n onClick: function onClick() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n pomodoro_enabled: !prev.pomodoro_enabled\n });\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"absolute left-0 top-0 bottom-0 m-1 w-4 h-4 transition-transform duration-200 ease-in-out transform bg-white rounded-full \".concat(formData.pomodoro_enabled ? 'translate-x-6' : 'translate-x-0')\n }))))), activeTab === 'telegram' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 rounded-lg p-6 border border-blue-300 dark:border-blue-700 mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold text-blue-700 dark:text-blue-300 mb-6 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"w-6 h-6 mr-3 text-blue-500\"\n }), t('profile.telegramIntegration', 'Telegram Integration')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-8 p-4 bg-gray-50 dark:bg-gray-700 rounded-lg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-blue-500\"\n }), t('profile.botSetup', 'Bot Setup')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-sm text-gray-600 dark:text-gray-300 flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 mr-2 flex-shrink-0 text-blue-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('profile.telegramDescription', 'Connect your Tududi account to a Telegram bot to add items to your inbox via Telegram messages.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300\"\n }, t('profile.telegramBotToken', 'Telegram Bot Token')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n name: \"telegram_bot_token\",\n value: formData.telegram_bot_token || '',\n onChange: handleChange,\n placeholder: \"123456789:ABCDefGhIJKlmNoPQRsTUVwxyZ\",\n className: \"mt-1 block w-full border border-gray-300 dark:border-gray-700 rounded-md shadow-sm px-3 py-2 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"mt-2 text-xs text-gray-500 dark:text-gray-400\"\n }, t('profile.telegramTokenDescription', 'Create a bot with @BotFather on Telegram and paste the token here.'))), (profile === null || profile === void 0 ? void 0 : profile.telegram_chat_id) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-2 bg-green-50 dark:bg-green-900 border border-green-200 dark:border-green-800 rounded text-green-800 dark:text-green-200\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm\"\n }, t('profile.telegramConnected', 'Your Telegram account is connected! Send messages to your bot to add items to your Tududi inbox.'))), telegramBotInfo && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-2 bg-blue-50 dark:bg-blue-900 border border-blue-200 dark:border-blue-800 rounded text-blue-800 dark:text-blue-200\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"font-medium mb-2\"\n }, t('profile.botConfigured', 'Bot configured successfully!')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-sm space-y-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"font-semibold\"\n }, t('profile.botUsername', 'Bot Username:'), \" \"), \"@\", telegramBotInfo.username), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"font-semibold mb-1\"\n }, t('profile.pollingStatus', 'Polling Status:'), \" \"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center mb-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-3 h-3 rounded-full mr-2 \".concat(isPolling ? 'bg-green-500' : 'bg-red-500')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isPolling ? t('profile.pollingActive') : t('profile.pollingInactive'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs mb-2\"\n }, t('profile.pollingNote', 'Polling periodically checks for new messages from Telegram and adds them to your inbox.')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-wrap gap-2 mt-2\"\n }, isPolling ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleStopPolling,\n className: \"px-3 py-1 bg-red-600 text-white dark:bg-red-700 rounded text-sm hover:bg-red-700 dark:hover:bg-red-800\"\n }, t('profile.stopPolling', 'Stop Polling')) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleStartPolling,\n className: \"px-3 py-1 bg-blue-600 text-white dark:bg-blue-700 rounded text-sm hover:bg-blue-700 dark:hover:bg-blue-800\"\n }, t('profile.startPolling', 'Start Polling')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: telegramBotInfo.chat_url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"px-3 py-1 bg-green-600 text-white dark:bg-green-700 rounded text-sm hover:bg-green-700 dark:hover:bg-green-800\"\n }, t('profile.openTelegram', 'Open in Telegram')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8() {\n var testMessage, response, result, _t9;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n _context8.p = 0;\n testMessage = prompt('Enter a test message:');\n if (!testMessage) {\n _context8.n = 3;\n break;\n }\n _context8.n = 1;\n return fetch(\"/api/telegram/test/\".concat(profile === null || profile === void 0 ? void 0 : profile.id), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n text: testMessage\n })\n });\n case 1:\n response = _context8.v;\n _context8.n = 2;\n return response.json();\n case 2:\n result = _context8.v;\n if (result.success) {\n showSuccessToast(t('profile.testMessageSent', 'Test message sent successfully!'));\n } else {\n showErrorToast(t('profile.testMessageFailed', 'Failed to send test message.'));\n }\n case 3:\n _context8.n = 5;\n break;\n case 4:\n _context8.p = 4;\n _t9 = _context8.v;\n showErrorToast(t('profile.testMessageError', 'Error sending test message.'));\n case 5:\n return _context8.a(2);\n }\n }, _callee8, null, [[0, 4]]);\n })),\n className: \"px-3 py-1 bg-purple-600 text-white dark:bg-purple-700 rounded text-sm hover:bg-purple-700 dark:hover:bg-purple-800\"\n }, t('profile.testTelegramMessage', 'Test Telegram')))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleSetupTelegram,\n disabled: !formData.telegram_bot_token || telegramSetupStatus === 'loading',\n className: \"px-4 py-2 rounded-md \".concat(!formData.telegram_bot_token || telegramSetupStatus === 'loading' ? 'bg-gray-300 dark:bg-gray-700 text-gray-500 dark:text-gray-400 cursor-not-allowed' : 'bg-blue-600 text-white hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600')\n }, telegramSetupStatus === 'loading' ? t('profile.settingUp', 'Setting up...') : t('profile.setupTelegram', 'Setup Telegram')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-green-500\"\n }), t('profile.taskSummaryNotifications', 'Task Summary Notifications')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-sm text-gray-600 dark:text-gray-300 flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 mr-2 flex-shrink-0 text-blue-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('profile.taskSummaryDescription', 'Receive regular summaries of your tasks via Telegram. This feature requires your Telegram integration to be set up.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"text-sm font-medium text-gray-700 dark:text-gray-300\"\n }, t('profile.enableTaskSummary', 'Enable Task Summaries')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block w-12 h-6 transition-colors duration-200 ease-in-out rounded-full cursor-pointer \".concat(formData.task_summary_enabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'),\n onClick: function onClick() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n task_summary_enabled: !prev.task_summary_enabled\n });\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"absolute left-0 top-0 bottom-0 m-1 w-4 h-4 transition-transform duration-200 ease-in-out transform bg-white rounded-full \".concat(formData.task_summary_enabled ? 'translate-x-6' : 'translate-x-0')\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('profile.summaryFrequency', 'Summary Frequency')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-wrap gap-2\"\n }, ['1h', '2h', '4h', '8h', '12h', 'daily', 'weekly'].map(function (frequency) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: frequency,\n type: \"button\",\n className: \"px-3 py-1.5 text-sm rounded-full \".concat(formData.task_summary_frequency === frequency ? 'bg-blue-500 text-white' : 'bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300'),\n onClick: function onClick() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n task_summary_frequency: frequency\n });\n });\n }\n }, t(\"profile.frequency.\".concat(frequency), formatFrequency(frequency)));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"mt-2 text-xs text-gray-500 dark:text-gray-400\"\n }, t('profile.frequencyHelp', 'Choose how often you want to receive task summaries.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n disabled: !(profile !== null && profile !== void 0 && profile.telegram_bot_token) || !(profile !== null && profile !== void 0 && profile.telegram_chat_id),\n className: \"px-4 py-2 rounded-md \".concat(!(profile !== null && profile !== void 0 && profile.telegram_bot_token) || !(profile !== null && profile !== void 0 && profile.telegram_chat_id) ? 'bg-gray-300 dark:bg-gray-700 text-gray-500 dark:text-gray-400 cursor-not-allowed' : 'bg-blue-600 text-white hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600'),\n onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() {\n var response, _data4, data, _t0;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n _context9.p = 0;\n _context9.n = 1;\n return fetch('/api/profile/task-summary/send-now', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 1:\n response = _context9.v;\n if (response.ok) {\n _context9.n = 3;\n break;\n }\n _context9.n = 2;\n return response.json();\n case 2:\n _data4 = _context9.v;\n throw new Error(_data4.error || t('profile.sendSummaryFailed'));\n case 3:\n _context9.n = 4;\n return response.json();\n case 4:\n data = _context9.v;\n showSuccessToast(data.message);\n _context9.n = 6;\n break;\n case 5:\n _context9.p = 5;\n _t0 = _context9.v;\n showErrorToast(_t0.message);\n case 6:\n return _context9.a(2);\n }\n }, _callee9, null, [[0, 5]]);\n }))\n }, t('profile.sendTestSummary', 'Send Test Summary')), (!(profile !== null && profile !== void 0 && profile.telegram_bot_token) || !(profile !== null && profile !== void 0 && profile.telegram_chat_id)) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"mt-2 text-xs text-red-500\"\n }, t('profile.telegramRequiredForSummaries', 'Telegram integration must be set up to use task summaries.'))))), activeTab === 'ai' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold text-gray-900 dark:text-white mb-6 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-6 h-6 mr-3 text-blue-500\"\n }), t('profile.aiProductivityFeatures', 'AI & Productivity Features')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-purple-500\"\n }), t('profile.taskIntelligence', 'Task Intelligence')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-sm text-gray-600 dark:text-gray-300 flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 mr-2 flex-shrink-0 text-blue-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('profile.taskIntelligenceDescription', 'Get helpful suggestions to make your task names more descriptive and actionable.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"text-sm font-medium text-gray-700 dark:text-gray-300\"\n }, t('profile.enableTaskIntelligence', 'Enable Task Intelligence Assistant')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block w-12 h-6 transition-colors duration-200 ease-in-out rounded-full cursor-pointer \".concat(formData.task_intelligence_enabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'),\n onClick: function onClick() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n task_intelligence_enabled: !prev.task_intelligence_enabled\n });\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"absolute left-0 top-0 bottom-0 m-1 w-4 h-4 transition-transform duration-200 ease-in-out transform bg-white rounded-full \".concat(formData.task_intelligence_enabled ? 'translate-x-6' : 'translate-x-0')\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg mt-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-green-500\"\n }), t('profile.autoSuggestNextActions', 'Auto-Suggest Next Actions')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-sm text-gray-600 dark:text-gray-300 flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 mr-2 flex-shrink-0 text-blue-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('profile.autoSuggestNextActionsDescription', 'When creating a project, automatically prompt for the very next physical action to take.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"text-sm font-medium text-gray-700 dark:text-gray-300\"\n }, t('profile.enableAutoSuggestNextActions', 'Enable Next Action Prompts')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block w-12 h-6 transition-colors duration-200 ease-in-out rounded-full cursor-pointer \".concat(formData.auto_suggest_next_actions_enabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'),\n onClick: function onClick() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n auto_suggest_next_actions_enabled: !prev.auto_suggest_next_actions_enabled\n });\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"absolute left-0 top-0 bottom-0 m-1 w-4 h-4 transition-transform duration-200 ease-in-out transform bg-white rounded-full \".concat(formData.auto_suggest_next_actions_enabled ? 'translate-x-6' : 'translate-x-0')\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg mt-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-yellow-500\"\n }), t('profile.productivityAssistant', 'Productivity Assistant')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-sm text-gray-600 dark:text-gray-300 flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 mr-2 flex-shrink-0 text-blue-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('profile.productivityAssistantDescription', 'Show productivity insights that help identify stalled projects, vague tasks, and workflow improvements on your Today page.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"text-sm font-medium text-gray-700 dark:text-gray-300\"\n }, t('profile.enableProductivityAssistant', 'Enable Productivity Insights')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block w-12 h-6 transition-colors duration-200 ease-in-out rounded-full cursor-pointer \".concat(formData.productivity_assistant_enabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'),\n onClick: function onClick() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n productivity_assistant_enabled: !prev.productivity_assistant_enabled\n });\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"absolute left-0 top-0 bottom-0 m-1 w-4 h-4 transition-transform duration-200 ease-in-out transform bg-white rounded-full \".concat(formData.productivity_assistant_enabled ? 'translate-x-6' : 'translate-x-0')\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg mt-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-green-500\"\n }), t('profile.nextTaskSuggestion', 'Next Task Suggestion')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-sm text-gray-600 dark:text-gray-300 flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 mr-2 flex-shrink-0 text-blue-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, t('profile.nextTaskSuggestionDescription', 'Automatically suggest the next best task to work on when you have nothing in progress, prioritizing due today tasks, then suggested tasks, then next actions.'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"text-sm font-medium text-gray-700 dark:text-gray-300\"\n }, t('profile.enableNextTaskSuggestion', 'Enable Next Task Suggestions')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block w-12 h-6 transition-colors duration-200 ease-in-out rounded-full cursor-pointer \".concat(formData.next_task_suggestion_enabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'),\n onClick: function onClick() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n next_task_suggestion_enabled: !prev.next_task_suggestion_enabled\n });\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"absolute left-0 top-0 bottom-0 m-1 w-4 h-4 transition-transform duration-200 ease-in-out transform bg-white rounded-full \".concat(formData.next_task_suggestion_enabled ? 'translate-x-6' : 'translate-x-0')\n }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-end dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"submit\",\n className: \"px-6 py-3 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600 transition-colors duration-200 flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"w-5 h-5\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('profile.saveChanges', 'Save Changes'))))));\n};\n_s(ProfileSettings, \"uOzGhBqT/wcpgppQEi0oAwfgVy4=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast];\n});\n_c = ProfileSettings;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProfileSettings);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"ProfileSettings\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Profile/ProfileSettings.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Project/AutoSuggestNextActionBox.tsx":
-/*!******************************************************************!*\
- !*** ./frontend/components/Project/AutoSuggestNextActionBox.tsx ***!
- \******************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\nvar AutoSuggestNextActionBox = function AutoSuggestNextActionBox(_ref) {\n _s();\n var onAddAction = _ref.onAddAction,\n onDismiss = _ref.onDismiss,\n projectName = _ref.projectName;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState2 = _slicedToArray(_useState, 2),\n actionDescription = _useState2[0],\n setActionDescription = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isFocused = _useState4[0],\n setIsFocused = _useState4[1];\n var inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n // Focus the input when component mounts\n setTimeout(function () {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();\n }, 100);\n }, []);\n var handleSubmit = function handleSubmit(e) {\n e.preventDefault();\n if (actionDescription.trim()) {\n onAddAction(actionDescription.trim());\n showSuccessToast(t('success.nextActionAdded'));\n setActionDescription(\"\");\n }\n };\n var handleKeyDown = function handleKeyDown(e) {\n if (e.key === \"Escape\") {\n onDismiss();\n }\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-700 rounded-lg p-6 mb-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start justify-between mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-blue-100 dark:bg-blue-800 p-2 rounded-lg mr-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n className: \"w-6 h-6 text-blue-600 dark:text-blue-300\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 5l7 7-7 7\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-semibold text-blue-800 dark:text-blue-200 mb-1\"\n }, t('profile.nextActionPrompt', 'What\\'s the very next physical action for this project?')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onDismiss,\n className: \"text-blue-400 hover:text-blue-600 dark:text-blue-500 dark:hover:text-blue-300 transition-colors\",\n \"aria-label\": \"Dismiss\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n className: \"w-5 h-5\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M6 18L18 6M6 6l12 12\"\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: inputRef,\n type: \"text\",\n value: actionDescription,\n onChange: function onChange(e) {\n return setActionDescription(e.target.value);\n },\n onFocus: function onFocus() {\n return setIsFocused(true);\n },\n onBlur: function onBlur() {\n return setIsFocused(false);\n },\n onKeyDown: handleKeyDown,\n placeholder: t('profile.nextActionPlaceholder', 'e.g., Call John to schedule meeting, Research competitors online, Create project folder...'),\n className: \"w-full px-4 py-3 border rounded-lg shadow-sm transition-all duration-200 focus:outline-none bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 \".concat(isFocused ? 'border-blue-400 ring-2 ring-blue-100 dark:ring-blue-900/50' : 'border-blue-200 dark:border-blue-700 hover:border-blue-300 dark:hover:border-blue-600')\n }), actionDescription && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute right-3 top-1/2 transform -translate-y-1/2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"kbd\", {\n className: \"px-2 py-1 text-xs bg-blue-100 dark:bg-blue-800 text-blue-600 dark:text-blue-300 rounded border border-blue-200 dark:border-blue-700\"\n }, \"Enter\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-between items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: onDismiss,\n className: \"px-4 py-2 text-sm font-medium text-blue-600 dark:text-blue-400 bg-transparent hover:bg-blue-100 dark:hover:bg-blue-900/30 rounded-lg transition-colors\"\n }, t('profile.skipNextAction', 'Skip for now')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"submit\",\n disabled: !actionDescription.trim(),\n className: \"px-6 py-2 text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-200 dark:focus:ring-blue-800 rounded-lg disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n }, t('profile.addNextAction', 'Add Next Action')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-4 p-3 bg-blue-100/50 dark:bg-blue-900/30 rounded-lg border border-blue-200 dark:border-blue-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-blue-700 dark:text-blue-300 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n className: \"w-4 h-4 mr-2 flex-shrink-0\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('profile.nextActionHint', 'Think of the smallest, most concrete step you can take right now to move this project forward.')))));\n};\n_s(AutoSuggestNextActionBox, \"R92LnKtjGqu+CRaiwvlhhgy413c=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast];\n});\n_c = AutoSuggestNextActionBox;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AutoSuggestNextActionBox);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"AutoSuggestNextActionBox\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Project/AutoSuggestNextActionBox.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Project/ProjectDetails.tsx":
-/*!********************************************************!*\
- !*** ./frontend/components/Project/ProjectDetails.tsx ***!
- \********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PencilSquareIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/TrashIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _Task_TaskList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Task/TaskList */ \"./frontend/components/Task/TaskList.tsx\");\n/* harmony import */ var _Project_ProjectModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Project/ProjectModal */ \"./frontend/components/Project/ProjectModal.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _Task_NewTask__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Task/NewTask */ \"./frontend/components/Task/NewTask.tsx\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_areasService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/areasService */ \"./frontend/utils/areasService.ts\");\n/* harmony import */ var _utils_authUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/authUtils */ \"./frontend/utils/authUtils.ts\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/CalendarDaysIcon.js\");\n/* harmony import */ var _utils_profileService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/profileService */ \"./frontend/utils/profileService.ts\");\n/* harmony import */ var _AutoSuggestNextActionBox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./AutoSuggestNextActionBox */ \"./frontend/components/Project/AutoSuggestNextActionBox.tsx\");\n/* harmony import */ var _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../hooks/useModalEvents */ \"./frontend/hooks/useModalEvents.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar priorityStyles = {\n high: 'bg-red-500',\n medium: 'bg-yellow-500',\n low: 'bg-green-500',\n \"default\": 'bg-gray-400'\n};\nvar ProjectDetails = function ProjectDetails() {\n _s();\n var _useParams = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_15__.useParams)(),\n id = _useParams.id;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_15__.useNavigate)();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast;\n var areas = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_6__.useStore)(function (state) {\n return state.areasStore.areas;\n });\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined),\n _useState2 = _slicedToArray(_useState, 2),\n project = _useState2[0],\n setProject = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState4 = _slicedToArray(_useState3, 2),\n tasks = _useState4[0],\n setTasks = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState6 = _slicedToArray(_useState5, 2),\n loading = _useState6[0],\n setLoading = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState8 = _slicedToArray(_useState7, 2),\n error = _useState8[0],\n setError = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n isModalOpen = _useState0[0],\n setIsModalOpen = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState1, 2),\n isConfirmDialogOpen = _useState10[0],\n setIsConfirmDialogOpen = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n showCompleted = _useState12[0],\n setShowCompleted = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n showAutoSuggestForm = _useState14[0],\n setShowAutoSuggestForm = _useState14[1];\n\n // Dispatch global modal events\n (0,_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_14__.useModalEvents)(isModalOpen);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadProjectData = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var projectData, projectTasks, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (id) {\n _context.n = 1;\n break;\n }\n console.error(\"Project ID is missing.\");\n return _context.a(2);\n case 1:\n setLoading(true);\n _context.p = 2;\n (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_10__.fetchAreas)();\n _context.n = 3;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_8__.fetchProjectById)(id);\n case 3:\n projectData = _context.v;\n setProject(projectData);\n // Handle both 'tasks' and 'Tasks' property names\n projectTasks = projectData.tasks || projectData.Tasks || [];\n setTasks(projectTasks);\n _context.n = 5;\n break;\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error(\"Error fetching project data:\", _t);\n case 5:\n _context.p = 5;\n setLoading(false);\n return _context.f(5);\n case 6:\n return _context.a(2);\n }\n }, _callee, null, [[2, 4, 5, 6]]);\n }));\n return function loadProjectData() {\n return _ref.apply(this, arguments);\n };\n }();\n loadProjectData();\n }, [id, _utils_areasService__WEBPACK_IMPORTED_MODULE_10__.fetchAreas]);\n\n // Check if we should show auto-suggest form for projects with no tasks\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var checkAutoSuggest = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var autoSuggestEnabled;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (!(project && tasks.length === 0 && !loading)) {\n _context2.n = 2;\n break;\n }\n _context2.n = 1;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_12__.getAutoSuggestNextActionsEnabled)();\n case 1:\n autoSuggestEnabled = _context2.v;\n if (autoSuggestEnabled) {\n setShowAutoSuggestForm(true);\n }\n case 2:\n return _context2.a(2);\n }\n }, _callee2);\n }));\n return function checkAutoSuggest() {\n return _ref2.apply(this, arguments);\n };\n }();\n checkAutoSuggest();\n }, [project, tasks, loading]);\n var handleTaskCreate = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(taskName) {\n var newTask, taskLink, _t2;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n if (project) {\n _context3.n = 1;\n break;\n }\n console.error(\"Cannot create task: Project is missing\");\n throw new Error(\"Cannot create task: Project is missing\");\n case 1:\n _context3.p = 1;\n _context3.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_9__.createTask)({\n name: taskName,\n status: \"not_started\",\n project_id: project.id\n });\n case 2:\n newTask = _context3.v;\n setTasks(function (prevTasks) {\n return [].concat(_toConsumableArray(prevTasks), [newTask]);\n });\n\n // Show success toast with task link\n taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.created', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/task/\".concat(newTask.uuid),\n className: \"text-green-200 underline hover:text-green-100\"\n }, newTask.name), \" \", t('task.createdSuccessfully', 'created successfully!'));\n showSuccessToast(taskLink);\n _context3.n = 5;\n break;\n case 3:\n _context3.p = 3;\n _t2 = _context3.v;\n console.error(\"Error creating task:\", _t2);\n // Check if it's an authentication error\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_11__.isAuthError)(_t2)) {\n _context3.n = 4;\n break;\n }\n return _context3.a(2);\n case 4:\n throw _t2;\n case 5:\n return _context3.a(2);\n }\n }, _callee3, null, [[1, 3]]);\n }));\n return function handleTaskCreate(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleTaskUpdate = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(updatedTask) {\n var _t3;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n if (updatedTask.id) {\n _context4.n = 1;\n break;\n }\n console.error(\"Cannot update task: Task ID is missing\");\n return _context4.a(2);\n case 1:\n _context4.p = 1;\n _context4.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_9__.updateTask)(updatedTask.id, updatedTask);\n case 2:\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === updatedTask.id ? updatedTask : task;\n });\n });\n _context4.n = 4;\n break;\n case 3:\n _context4.p = 3;\n _t3 = _context4.v;\n console.error(\"Error updating task:\", _t3);\n case 4:\n return _context4.a(2);\n }\n }, _callee4, null, [[1, 3]]);\n }));\n return function handleTaskUpdate(_x2) {\n return _ref4.apply(this, arguments);\n };\n }();\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(taskId) {\n var _t4;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n if (taskId) {\n _context5.n = 1;\n break;\n }\n console.error(\"Cannot delete task: Task ID is missing\");\n return _context5.a(2);\n case 1:\n _context5.p = 1;\n _context5.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_9__.deleteTask)(taskId);\n case 2:\n setTasks(function (prevTasks) {\n return prevTasks.filter(function (task) {\n return task.id !== taskId;\n });\n });\n _context5.n = 4;\n break;\n case 3:\n _context5.p = 3;\n _t4 = _context5.v;\n console.error(\"Error deleting task:\", _t4);\n case 4:\n return _context5.a(2);\n }\n }, _callee5, null, [[1, 3]]);\n }));\n return function handleTaskDelete(_x3) {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleToggleToday = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(taskId) {\n var updatedTask, updatedProject, _t5, _t6;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.p = 0;\n _context6.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_9__.toggleTaskToday)(taskId);\n case 1:\n updatedTask = _context6.v;\n // Update the task in the local state immediately to avoid UI flashing\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === taskId ? _objectSpread(_objectSpread({}, task), {}, {\n today: updatedTask.today,\n today_move_count: updatedTask.today_move_count\n }) : task;\n });\n });\n _context6.n = 6;\n break;\n case 2:\n _context6.p = 2;\n _t5 = _context6.v;\n console.error(\"Error toggling task today status:\", _t5);\n // Optionally refetch data on error to ensure consistency\n if (!id) {\n _context6.n = 6;\n break;\n }\n _context6.p = 3;\n _context6.n = 4;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_8__.fetchProjectById)(id);\n case 4:\n updatedProject = _context6.v;\n setProject(updatedProject);\n setTasks(updatedProject.tasks || []);\n _context6.n = 6;\n break;\n case 5:\n _context6.p = 5;\n _t6 = _context6.v;\n console.error(\"Error refetching project data:\", _t6);\n case 6:\n return _context6.a(2);\n }\n }, _callee6, null, [[3, 5], [0, 2]]);\n }));\n return function handleToggleToday(_x4) {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleEditProject = function handleEditProject() {\n setIsModalOpen(true);\n };\n var handleSaveProject = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(updatedProject) {\n var savedProject, _t7;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n if (updatedProject.id) {\n _context7.n = 1;\n break;\n }\n console.error(\"Cannot save project: Project ID is missing\");\n return _context7.a(2);\n case 1:\n _context7.p = 1;\n _context7.n = 2;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_8__.updateProject)(updatedProject.id, updatedProject);\n case 2:\n savedProject = _context7.v;\n setProject(savedProject);\n setIsModalOpen(false);\n _context7.n = 4;\n break;\n case 3:\n _context7.p = 3;\n _t7 = _context7.v;\n console.error(\"Error saving project:\", _t7);\n case 4:\n return _context7.a(2);\n }\n }, _callee7, null, [[1, 3]]);\n }));\n return function handleSaveProject(_x5) {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleCreateNextAction = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(projectId, actionDescription) {\n var newTask, taskLink, _t8;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n _context8.p = 0;\n _context8.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_9__.createTask)({\n name: actionDescription,\n status: \"not_started\",\n project_id: projectId,\n priority: \"medium\"\n });\n case 1:\n newTask = _context8.v;\n // Update the tasks list to include the new task\n setTasks(function (prevTasks) {\n return [].concat(_toConsumableArray(prevTasks), [newTask]);\n });\n setShowAutoSuggestForm(false);\n\n // Show success toast with task link\n taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.created', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/task/\".concat(newTask.uuid),\n className: \"text-green-200 underline hover:text-green-100\"\n }, newTask.name), \" \", t('task.createdSuccessfully', 'created successfully!'));\n showSuccessToast(taskLink);\n _context8.n = 3;\n break;\n case 2:\n _context8.p = 2;\n _t8 = _context8.v;\n console.error(\"Error creating next action:\", _t8);\n case 3:\n return _context8.a(2);\n }\n }, _callee8, null, [[0, 2]]);\n }));\n return function handleCreateNextAction(_x6, _x7) {\n return _ref8.apply(this, arguments);\n };\n }();\n var handleSkipNextAction = function handleSkipNextAction() {\n setShowAutoSuggestForm(false);\n };\n var handleDeleteProject = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() {\n var _t9;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n if (project !== null && project !== void 0 && project.id) {\n _context9.n = 1;\n break;\n }\n console.error(\"Cannot delete project: Project ID is missing\");\n return _context9.a(2);\n case 1:\n _context9.p = 1;\n _context9.n = 2;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_8__.deleteProject)(project.id);\n case 2:\n navigate(\"/projects\");\n _context9.n = 4;\n break;\n case 3:\n _context9.p = 3;\n _t9 = _context9.v;\n console.error(\"Error deleting project:\", _t9);\n case 4:\n return _context9.a(2);\n }\n }, _callee9, null, [[1, 3]]);\n }));\n return function handleDeleteProject() {\n return _ref9.apply(this, arguments);\n };\n }();\n if (loading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, \"Loading project details...\"));\n }\n if (error) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 text-lg\"\n }, error));\n }\n if (!project) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 text-lg\"\n }, \"Project not found.\"));\n }\n var activeTasks = (tasks === null || tasks === void 0 ? void 0 : tasks.filter(function (task) {\n return typeof task.status === 'number' ? task.status !== 2 : task.status !== 'done';\n })) || []; //TODO: Also add archived\n var completedTasks = tasks === null || tasks === void 0 ? void 0 : tasks.filter(function (task) {\n return typeof task.status === 'number' ? task.status === 2 : task.status === 'done';\n });\n var displayTasks = showCompleted ? [].concat(_toConsumableArray(activeTasks), _toConsumableArray(completedTasks)) : activeTasks;\n var formatProjectDueDate = function formatProjectDueDate(dateString) {\n var date = new Date(dateString);\n var currentLang = i18n.language;\n\n // Format based on language\n var formatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n return date.toLocaleDateString(currentLang, formatOptions);\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, project.image_url && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6 rounded-lg overflow-hidden relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"img\", {\n src: project.image_url,\n alt: project.name,\n className: \"w-full h-48 object-cover\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute inset-0 bg-black bg-opacity-40 flex items-center justify-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h1\", {\n className: \"text-4xl md:text-5xl font-bold text-white text-center px-4 drop-shadow-lg\"\n }, project.name)), project.priority !== undefined && project.priority !== null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute top-3 left-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-4 h-4 rounded-full border-2 border-white shadow-lg \".concat(getPriorityStyle(project.priority)),\n title: \"Priority: \".concat(priorityLabel(project.priority)),\n \"aria-label\": \"Priority: \".concat(priorityLabel(project.priority))\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute bottom-4 right-4 flex space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleEditProject,\n className: \"p-2 bg-black bg-opacity-50 text-white hover:bg-opacity-70 rounded-full transition-all duration-200 backdrop-blur-sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setIsConfirmDialogOpen(true);\n },\n className: \"p-2 bg-black bg-opacity-50 text-white hover:bg-opacity-70 rounded-full transition-all duration-200 backdrop-blur-sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"h-5 w-5\"\n })))), (project.description || project.area || project.due_date_at || project.tags && project.tags.length > 0) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6 p-4 bg-gray-50 dark:bg-gray-800/50 border border-gray-200 dark:border-gray-700 rounded-lg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid gap-3\"\n }, project.description && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-400 mr-3 mt-0.5 flex-shrink-0\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-medium text-gray-600 dark:text-gray-400 mr-2\"\n }, \"Description:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm text-gray-900 dark:text-gray-100 leading-relaxed mt-1\"\n }, project.description))), project.area && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-400 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-medium text-gray-600 dark:text-gray-400 mr-2\"\n }, \"Area:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-900 dark:text-gray-100 bg-gray-100 dark:bg-gray-700 px-2 py-1 rounded\"\n }, project.area.name)), project.due_date_at && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-400 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-medium text-gray-600 dark:text-gray-400 mr-2\"\n }, \"Due Date:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-900 dark:text-gray-100\"\n }, formatProjectDueDate(project.due_date_at))), project.tags && project.tags.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-400 mr-3 mt-0.5\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n fill: \"currentColor\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M17.707 9.293a1 1 0 010 1.414l-7 7a1 1 0 01-1.414 0l-7-7A.997.997 0 012 10V5a3 3 0 013-3h5c.256 0 .512.098.707.293l7 7zM5 6a1 1 0 100-2 1 1 0 000 2z\",\n clipRule: \"evenodd\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-medium text-gray-600 dark:text-gray-400 mr-2\"\n }, \"Tags:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-wrap gap-1 mt-1\"\n }, project.tags.map(function (tag, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: index,\n onClick: function onClick() {\n return navigate(\"/tag/\".concat(tag.id));\n },\n className: \"inline-block px-2 py-1 text-xs bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200 rounded-full cursor-pointer hover:bg-blue-200 dark:hover:bg-blue-900/50 transition-colors\"\n }, tag.name);\n })))))), !project.image_url && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n className: \"h-6 w-6 text-gray-500 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light text-gray-900 dark:text-gray-100 mr-2\"\n }, project.name), project.priority !== undefined && project.priority !== null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-4 h-4 rounded-full border-2 border-white dark:border-gray-800 \".concat(getPriorityStyle(project.priority)),\n title: \"Priority: \".concat(priorityLabel(project.priority)),\n \"aria-label\": \"Priority: \".concat(priorityLabel(project.priority))\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleEditProject,\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setIsConfirmDialogOpen(true);\n },\n className: \"text-gray-500 hover:text-red-700 dark:hover:text-red-300 focus:outline-none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"h-5 w-5\"\n })))), !showAutoSuggestForm && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-medium text-gray-900 dark:text-gray-100\"\n }, t('sidebar.tasks', 'Tasks')), completedTasks.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"flex items-center space-x-2 cursor-pointer\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-600 dark:text-gray-400\"\n }, \"Show completed\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"checkbox\",\n checked: showCompleted,\n onChange: function onChange(e) {\n return setShowCompleted(e.target.checked);\n },\n className: \"sr-only\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-10 h-5 rounded-full transition-colors \".concat(showCompleted ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-4 h-4 bg-white rounded-full shadow-md transform transition-transform duration-200 ease-in-out \".concat(showCompleted ? 'translate-x-5' : 'translate-x-0.5', \" translate-y-0.5\")\n }))))), !showAutoSuggestForm && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_NewTask__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onTaskCreate: handleTaskCreate\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-2\"\n }, displayTasks.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_TaskList__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n tasks: displayTasks,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: project ? [project] : [],\n hideProjectName: true,\n onToggleToday: handleToggleToday\n }) : showAutoSuggestForm ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_AutoSuggestNextActionBox__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onAddAction: function onAddAction(actionDescription) {\n if (project !== null && project !== void 0 && project.id) {\n handleCreateNextAction(project.id, actionDescription);\n }\n },\n onDismiss: handleSkipNextAction,\n projectName: (project === null || project === void 0 ? void 0 : project.name) || \"\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-500 dark:text-gray-400\"\n }, \"No tasks.\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Project_ProjectModal__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n isOpen: isModalOpen,\n onClose: function onClose() {\n return setIsModalOpen(false);\n },\n onSave: handleSaveProject,\n project: project,\n areas: areas\n }), isConfirmDialogOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"Delete Project\",\n message: \"Are you sure you want to delete the project \\\"\".concat(project.name, \"\\\"?\"),\n onConfirm: handleDeleteProject,\n onCancel: function onCancel() {\n return setIsConfirmDialogOpen(false);\n }\n })));\n};\n_s(ProjectDetails, \"MmMVGi9196KIyNMOr0euyT1Zwiw=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_15__.useParams, react_router_dom__WEBPACK_IMPORTED_MODULE_15__.useNavigate, react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast, _store_useStore__WEBPACK_IMPORTED_MODULE_6__.useStore, _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_14__.useModalEvents];\n});\n_c = ProjectDetails;\nvar priorityLabel = function priorityLabel(priority) {\n // Handle both string and numeric priorities\n var normalizedPriority = typeof priority === 'number' ? ['low', 'medium', 'high'][priority] : priority;\n switch (normalizedPriority) {\n case 'high':\n return 'High';\n case 'medium':\n return 'Medium';\n case 'low':\n return 'Low';\n default:\n return '';\n }\n};\nvar getPriorityStyle = function getPriorityStyle(priority) {\n // Handle both string and numeric priorities\n var normalizedPriority = typeof priority === 'number' ? ['low', 'medium', 'high'][priority] : priority;\n return priorityStyles[normalizedPriority] || priorityStyles[\"default\"];\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProjectDetails);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"ProjectDetails\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Project/ProjectDetails.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Project/ProjectItem.tsx":
-/*!*****************************************************!*\
- !*** ./frontend/components/Project/ProjectItem.tsx ***!
- \*****************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/EllipsisVerticalIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\n\nvar getProjectInitials = function getProjectInitials(name) {\n var words = name.trim().split(\" \").filter(function (word) {\n return word.length > 0;\n });\n if (words.length === 1) {\n return name.toUpperCase();\n }\n return words.map(function (word) {\n return word[0].toUpperCase();\n }).join(\"\");\n};\nvar ProjectItem = function ProjectItem(_ref) {\n _s();\n var project = _ref.project,\n viewMode = _ref.viewMode,\n color = _ref.color,\n getCompletionPercentage = _ref.getCompletionPercentage,\n activeDropdown = _ref.activeDropdown,\n setActiveDropdown = _ref.setActiveDropdown,\n handleEditProject = _ref.handleEditProject,\n setProjectToDelete = _ref.setProjectToDelete,\n setIsConfirmDialogOpen = _ref.setIsConfirmDialogOpen;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(viewMode === \"cards\" ? \"bg-gray-50 dark:bg-gray-900 rounded-lg shadow-md relative flex flex-col\" : \"bg-gray-50 dark:bg-gray-900 rounded-lg shadow-md relative flex flex-row items-center p-4\"),\n style: {\n minHeight: viewMode === \"cards\" ? \"250px\" : \"auto\",\n maxHeight: viewMode === \"cards\" ? \"250px\" : \"auto\"\n }\n }, viewMode === \"cards\" && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-gray-200 dark:bg-gray-700 flex items-center justify-center overflow-hidden rounded-t-lg relative\",\n style: {\n height: \"140px\"\n }\n }, project.image_url ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"img\", {\n src: project.image_url,\n alt: project.name,\n className: \"w-full h-full object-cover\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-2xl font-extrabold text-gray-500 dark:text-gray-400 opacity-20\",\n \"aria-label\": t(\"projectItem.projectInitials\")\n }, getProjectInitials(project.name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute top-2 left-2 w-3 h-3 rounded-full \".concat(color)\n })), viewMode === \"list\" && project.image_url && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-16 h-16 mr-4 flex-shrink-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"img\", {\n src: project.image_url,\n alt: project.name,\n className: \"w-full h-full object-cover rounded-md\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-between items-start \".concat(viewMode === \"cards\" ? \"p-4 flex-1\" : \"flex-1\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, viewMode === \"list\" && !project.image_url && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-3 h-3 rounded-full \".concat(color, \" mr-3 flex-shrink-0\")\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Link, {\n to: \"/project/\".concat(project.id),\n className: \"\".concat(viewMode === \"cards\" ? \"text-lg font-semibold text-gray-900 dark:text-gray-100 hover:underline line-clamp-2\" : \"text-md font-semibold text-gray-900 dark:text-gray-100 hover:underline\")\n }, project.name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n className: \"text-gray-500 hover:text-gray-700 dark:text-gray-300 dark:hover:text-gray-400 focus:outline-none\",\n onClick: function onClick() {\n var _project$id;\n return setActiveDropdown(activeDropdown === project.id ? null : (_project$id = project.id) !== null && _project$id !== void 0 ? _project$id : null);\n },\n \"aria-label\": t(\"projectItem.toggleDropdownMenu\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5\"\n })), activeDropdown === project.id && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute right-0 mt-2 w-28 bg-white dark:bg-gray-700 shadow-lg rounded-md z-10\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return handleEditProject(project);\n },\n className: \"block px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-600 w-full text-left\"\n }, t(\"projectItem.edit\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n setProjectToDelete(project);\n setIsConfirmDialogOpen(true);\n setActiveDropdown(null);\n },\n className: \"block px-4 py-2 text-sm text-red-500 dark:text-red-300 hover:bg-gray-100 dark:hover:bg-gray-600 w-full text-left\"\n }, t(\"projectItem.delete\"))))), viewMode === \"cards\" && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute bottom-4 left-0 right-0 px-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2\",\n title: t(\"projectItem.completionPercentage\", {\n percentage: getCompletionPercentage()\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-blue-500 h-2 rounded-full\",\n style: {\n width: \"\".concat(getCompletionPercentage(), \"%\")\n }\n })))));\n};\n_s(ProjectItem, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = ProjectItem;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProjectItem);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"ProjectItem\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Project/ProjectItem.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Project/ProjectModal.tsx":
-/*!******************************************************!*\
- !*** ./frontend/components/Project/ProjectModal.tsx ***!
- \******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _Tag_TagInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Tag/TagInput */ \"./frontend/components/Tag/TagInput.tsx\");\n/* harmony import */ var _Shared_PriorityDropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Shared/PriorityDropdown */ \"./frontend/components/Shared/PriorityDropdown.tsx\");\n/* harmony import */ var _Shared_Switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Shared/Switch */ \"./frontend/components/Shared/Switch.tsx\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\nvar ProjectModal = function ProjectModal(_ref) {\n _s();\n var _project$tags;\n var isOpen = _ref.isOpen,\n onClose = _ref.onClose,\n onSave = _ref.onSave,\n onDelete = _ref.onDelete,\n project = _ref.project,\n areas = _ref.areas;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(project || {\n name: \"\",\n description: \"\",\n area_id: null,\n active: true,\n tags: [],\n priority: \"low\",\n due_date_at: \"\",\n image_url: \"\"\n }),\n _useState2 = _slicedToArray(_useState, 2),\n formData = _useState2[0],\n setFormData = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((project === null || project === void 0 || (_project$tags = project.tags) === null || _project$tags === void 0 ? void 0 : _project$tags.map(function (tag) {\n return tag.name;\n })) || []),\n _useState4 = _slicedToArray(_useState3, 2),\n tags = _useState4[0],\n setTags = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState6 = _slicedToArray(_useState5, 2),\n imageFile = _useState6[0],\n setImageFile = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((project === null || project === void 0 ? void 0 : project.image_url) || \"\"),\n _useState8 = _slicedToArray(_useState7, 2),\n imagePreview = _useState8[0],\n setImagePreview = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n isUploading = _useState0[0],\n setIsUploading = _useState0[1];\n var _useStore = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_6__.useStore)(),\n tagsStore = _useStore.tagsStore;\n var availableTags = tagsStore.tags,\n loadTags = tagsStore.loadTags;\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var fileInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState1, 2),\n isClosing = _useState10[0],\n setIsClosing = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n showConfirmDialog = _useState12[0],\n setShowConfirmDialog = _useState12[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_7__.useTranslation)(),\n t = _useTranslation.t;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (project) {\n var _project$tags2;\n setFormData(_objectSpread(_objectSpread({}, project), {}, {\n tags: project.tags || [],\n due_date_at: project.due_date_at || \"\",\n image_url: project.image_url || \"\"\n }));\n setTags(((_project$tags2 = project.tags) === null || _project$tags2 === void 0 ? void 0 : _project$tags2.map(function (tag) {\n return tag.name;\n })) || []);\n setImagePreview(project.image_url || \"\");\n } else {\n setFormData({\n name: \"\",\n description: \"\",\n area_id: null,\n active: true,\n tags: [],\n priority: \"low\",\n due_date_at: \"\",\n image_url: \"\"\n });\n setTags([]);\n setImagePreview(\"\");\n }\n setImageFile(null);\n }, [project]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (availableTags.length === 0) {\n loadTags()[\"catch\"](function (error) {\n console.error('Error loading tags:', error);\n });\n }\n }, [availableTags.length, loadTags]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return function () {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === \"Escape\") {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener(\"keydown\", handleKeyDown);\n }\n return function () {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [isOpen]);\n var handleChange = function handleChange(e) {\n var target = e.target;\n var name = target.name,\n type = target.type,\n value = target.value;\n if (type === \"checkbox\") {\n if (target instanceof HTMLInputElement) {\n var checked = target.checked;\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, checked));\n });\n }\n } else {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, value));\n });\n }\n };\n var handleTagsChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (newTags) {\n setTags(newTags);\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n tags: newTags.map(function (name) {\n return {\n name: name\n };\n })\n });\n });\n }, []);\n var handleImageSelect = function handleImageSelect(e) {\n var _e$target$files;\n var file = (_e$target$files = e.target.files) === null || _e$target$files === void 0 ? void 0 : _e$target$files[0];\n if (file) {\n setImageFile(file);\n\n // Create preview\n var reader = new FileReader();\n reader.onload = function (e) {\n var _e$target;\n setImagePreview((_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.result);\n };\n reader.readAsDataURL(file);\n }\n };\n var handleImageUpload = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var _formData, response, result, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (imageFile) {\n _context.n = 1;\n break;\n }\n return _context.a(2, null);\n case 1:\n setIsUploading(true);\n _context.p = 2;\n _formData = new FormData();\n _formData.append('image', imageFile);\n _context.n = 3;\n return fetch('/api/upload/project-image', {\n method: 'POST',\n credentials: 'include',\n body: _formData\n });\n case 3:\n response = _context.v;\n if (response.ok) {\n _context.n = 4;\n break;\n }\n throw new Error('Failed to upload image');\n case 4:\n _context.n = 5;\n return response.json();\n case 5:\n result = _context.v;\n return _context.a(2, result.imageUrl);\n case 6:\n _context.p = 6;\n _t = _context.v;\n console.error('Error uploading image:', _t);\n return _context.a(2, null);\n case 7:\n _context.p = 7;\n setIsUploading(false);\n return _context.f(7);\n case 8:\n return _context.a(2);\n }\n }, _callee, null, [[2, 6, 7, 8]]);\n }));\n return function handleImageUpload() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleRemoveImage = function handleRemoveImage() {\n setImageFile(null);\n setImagePreview(\"\");\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n image_url: \"\"\n });\n });\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n };\n var handleSubmit = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var imageUrl, uploadedImageUrl, projectData, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n imageUrl = formData.image_url; // Upload image if a new one was selected\n if (!imageFile) {\n _context2.n = 2;\n break;\n }\n _context2.n = 1;\n return handleImageUpload();\n case 1:\n uploadedImageUrl = _context2.v;\n if (uploadedImageUrl) {\n imageUrl = uploadedImageUrl;\n }\n case 2:\n projectData = _objectSpread(_objectSpread({}, formData), {}, {\n image_url: imageUrl,\n tags: tags.map(function (name) {\n return {\n name: name\n };\n })\n }); // Save the project\n onSave(projectData);\n showSuccessToast(project ? \"Project updated successfully!\" : \"Project created successfully!\");\n handleClose();\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Error saving project:', _t2);\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 3]]);\n }));\n return function handleSubmit() {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleDeleteClick = function handleDeleteClick() {\n setShowConfirmDialog(true);\n };\n var handleDeleteConfirm = function handleDeleteConfirm() {\n if (project && project.id && onDelete) {\n onDelete(project.id);\n showSuccessToast(t('success.projectDeleted'));\n setShowConfirmDialog(false);\n handleClose();\n }\n };\n var handleClose = function handleClose() {\n setIsClosing(true);\n setTimeout(function () {\n onClose();\n setIsClosing(false);\n }, 300);\n };\n var handleToggleActive = function handleToggleActive() {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n active: !prev.active\n });\n });\n };\n if (!isOpen) return null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-16 left-0 right-0 bottom-0 flex items-start sm:items-center justify-center bg-gray-900 bg-opacity-80 z-40 transition-opacity duration-300 \".concat(isClosing ? \"opacity-0\" : \"opacity-100\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: modalRef,\n className: \"bg-white dark:bg-gray-800 sm:rounded-lg sm:shadow-2xl w-full sm:max-w-2xl overflow-hidden transform transition-transform duration-300 \".concat(isClosing ? \"scale-95\" : \"scale-100\", \" flex flex-col\"),\n style: {\n height: \"calc(100vh - 4rem)\",\n maxHeight: \"90vh\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", {\n className: \"flex flex-col h-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"fieldset\", {\n className: \"flex flex-col h-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 space-y-3 flex-1 text-sm overflow-y-auto min-h-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"py-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n id: \"projectName\",\n name: \"name\",\n value: formData.name,\n onChange: handleChange,\n required: true,\n className: \"block w-full text-xl font-semibold dark:bg-gray-800 text-black dark:text-white border-b-2 border-gray-200 dark:border-gray-900 focus:outline-none shadow-sm py-2\",\n placeholder: t('project.name', 'Enter project name')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.description', 'Description')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textarea\", {\n id: \"projectDescription\",\n name: \"description\",\n rows: 4,\n value: formData.description || \"\",\n onChange: handleChange,\n className: \"block w-full rounded-md shadow-sm p-3 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 transition duration-150 ease-in-out\",\n placeholder: t('forms.areaDescriptionPlaceholder', 'Enter project description (optional)')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('project.projectImage', 'Project Image')), imagePreview ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative inline-block\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"img\", {\n src: imagePreview,\n alt: \"Project preview\",\n className: \"w-32 h-20 object-cover rounded-md border border-gray-300 dark:border-gray-600\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleRemoveImage,\n className: \"absolute -top-2 -right-2 bg-red-500 text-white rounded-full w-6 h-6 flex items-center justify-center text-xs hover:bg-red-600\"\n }, \"\\xD7\"))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: fileInputRef,\n type: \"file\",\n accept: \"image/*\",\n onChange: handleImageSelect,\n className: \"hidden\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n var _fileInputRef$current;\n return (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : _fileInputRef$current.click();\n },\n className: \"inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n className: \"w-4 h-4 mr-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n })), t('project.browseImage', 'Browse Image')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 mt-1\"\n }, t('project.uploadImageHint', 'Upload an image for your project (max 5MB)'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.dueDate', 'Due Date')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"date\",\n name: \"due_date_at\",\n value: formData.due_date_at || \"\",\n onChange: handleChange,\n className: \"block w-full rounded-md shadow-sm px-3 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 transition duration-150 ease-in-out\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-3\"\n }, t('forms.priority', 'Priority')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_PriorityDropdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: formData.priority || \"medium\",\n onChange: function onChange(value) {\n return setFormData(_objectSpread(_objectSpread({}, formData), {}, {\n priority: value\n }));\n }\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.tags', 'Tags')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Tag_TagInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onTagsChange: handleTagsChange,\n initialTags: tags,\n availableTags: availableTags\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('common.area', 'Area'), \" (\", t('forms.optional', 'optional'), \")\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n id: \"projectArea\",\n name: \"area_id\",\n value: formData.area_id || \"\",\n onChange: handleChange,\n className: \"block w-full rounded-md shadow-sm px-3 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 transition duration-150 ease-in-out\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"\"\n }, t('common.none', 'No Area')), areas.map(function (area) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n key: area.id,\n value: area.id\n }, area.name);\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_Switch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n isChecked: formData.active,\n onToggle: handleToggleActive\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n htmlFor: \"active\",\n className: \"ml-2 block text-sm text-gray-700 dark:text-gray-300\"\n }, t('projects.active', 'Active')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 flex-shrink-0 border-t border-gray-200 dark:border-gray-700 flex justify-end space-x-2\"\n }, project && onDelete && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleDeleteClick,\n className: \"px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-600 focus:outline-none transition duration-150 ease-in-out\"\n }, t('common.delete', 'Delete')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleClose,\n className: \"px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-600 focus:outline-none transition duration-150 ease-in-out\"\n }, t('common.cancel', 'Cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleSubmit,\n disabled: isUploading,\n className: \"px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600 focus:outline-none transition duration-150 ease-in-out disabled:opacity-50 disabled:cursor-not-allowed\"\n }, isUploading ? 'Uploading...' : project ? t('modals.updateProject', 'Update Project') : t('modals.createProject', 'Create Project'))))))), showConfirmDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n title: \"Delete Project\",\n message: \"Are you sure you want to delete this project? This action cannot be undone.\",\n onConfirm: handleDeleteConfirm,\n onCancel: function onCancel() {\n return setShowConfirmDialog(false);\n }\n }));\n};\n_s(ProjectModal, \"Pae7+OFE4FCzTwCJa2j5udioYAU=\", false, function () {\n return [_store_useStore__WEBPACK_IMPORTED_MODULE_6__.useStore, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast, react_i18next__WEBPACK_IMPORTED_MODULE_7__.useTranslation];\n});\n_c = ProjectModal;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProjectModal);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"ProjectModal\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Project/ProjectModal.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Projects.tsx":
-/*!******************************************!*\
- !*** ./frontend/components/Projects.tsx ***!
- \******************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/Squares2X2Icon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/Bars3Icon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/MagnifyingGlassIcon.js\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _Project_ProjectModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Project/ProjectModal */ \"./frontend/components/Project/ProjectModal.tsx\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _utils_areasService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/areasService */ \"./frontend/utils/areasService.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/useModalEvents */ \"./frontend/hooks/useModalEvents.ts\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _Project_ProjectItem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Project/ProjectItem */ \"./frontend/components/Project/ProjectItem.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\nvar getPriorityStyles = function getPriorityStyles(priority) {\n switch (priority) {\n case \"low\":\n return {\n color: \"bg-green-500\"\n };\n case \"medium\":\n return {\n color: \"bg-yellow-500\"\n };\n case \"high\":\n return {\n color: \"bg-red-500\"\n };\n default:\n return {\n color: \"bg-gray-500\"\n };\n }\n};\nvar Projects = function Projects() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_6__.useTranslation)(),\n t = _useTranslation.t;\n var _useStore = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_3__.useStore)(function (state) {\n return state.areasStore;\n }),\n areas = _useStore.areas,\n setAreas = _useStore.setAreas,\n setAreasLoading = _useStore.setLoading,\n setAreasError = _useStore.setError;\n var _useStore2 = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_3__.useStore)(function (state) {\n return state.projectsStore;\n }),\n setProjectsLoading = _useStore2.setLoading,\n setProjectsError = _useStore2.setError;\n var _useStore3 = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_3__.useStore)(function (state) {\n return state.projectsStore;\n }),\n isLoading = _useStore3.isLoading,\n isError = _useStore3.isError;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({}),\n _useState2 = _slicedToArray(_useState, 2),\n groupedProjects = _useState2[0],\n setGroupedProjects = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isProjectModalOpen = _useState4[0],\n setIsProjectModalOpen = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState6 = _slicedToArray(_useState5, 2),\n projectToEdit = _useState6[0],\n setProjectToEdit = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState8 = _slicedToArray(_useState7, 2),\n projectToDelete = _useState8[0],\n setProjectToDelete = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n isConfirmDialogOpen = _useState0[0],\n setIsConfirmDialogOpen = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState10 = _slicedToArray(_useState1, 2),\n activeDropdown = _useState10[0],\n setActiveDropdown = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState12 = _slicedToArray(_useState11, 2),\n searchQuery = _useState12[0],\n setSearchQuery = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"cards\"),\n _useState14 = _slicedToArray(_useState13, 2),\n viewMode = _useState14[0],\n setViewMode = _useState14[1];\n var _useSearchParams = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_9__.useSearchParams)(),\n _useSearchParams2 = _slicedToArray(_useSearchParams, 2),\n searchParams = _useSearchParams2[0],\n setSearchParams = _useSearchParams2[1];\n var activeFilter = searchParams.get(\"active\") || \"all\";\n\n // Dispatch global modal events\n (0,_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_7__.useModalEvents)(isProjectModalOpen);\n var areaFilter = searchParams.get(\"area_id\") || \"\";\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadAreas = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var areasData, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_5__.fetchAreas)();\n case 1:\n areasData = _context.v;\n setAreas(areasData);\n _context.n = 3;\n break;\n case 2:\n _context.p = 2;\n _t = _context.v;\n console.error(\"Failed to fetch areas:\", _t);\n setAreasError(true);\n case 3:\n return _context.a(2);\n }\n }, _callee, null, [[0, 2]]);\n }));\n return function loadAreas() {\n return _ref.apply(this, arguments);\n };\n }();\n loadAreas();\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadProjects = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var groupedProjectsData, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.fetchGroupedProjects)(activeFilter, areaFilter);\n case 1:\n groupedProjectsData = _context2.v;\n setGroupedProjects(groupedProjectsData);\n _context2.n = 3;\n break;\n case 2:\n _context2.p = 2;\n _t2 = _context2.v;\n console.error(\"Failed to fetch projects:\", _t2);\n setProjectsError(true);\n case 3:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 2]]);\n }));\n return function loadProjects() {\n return _ref2.apply(this, arguments);\n };\n }();\n loadProjects();\n }, [activeFilter, areaFilter]);\n var handleSaveProject = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(project) {\n var groupedProjectsData, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n setProjectsLoading(true);\n _context3.p = 1;\n if (!project.id) {\n _context3.n = 3;\n break;\n }\n _context3.n = 2;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.updateProject)(project.id, project);\n case 2:\n _context3.n = 4;\n break;\n case 3:\n _context3.n = 4;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.createProject)(project);\n case 4:\n _context3.n = 5;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.fetchGroupedProjects)(activeFilter, areaFilter);\n case 5:\n groupedProjectsData = _context3.v;\n setGroupedProjects(groupedProjectsData);\n _context3.n = 7;\n break;\n case 6:\n _context3.p = 6;\n _t3 = _context3.v;\n console.error(\"Error saving project:\", _t3);\n setProjectsError(true);\n case 7:\n _context3.p = 7;\n setProjectsLoading(false);\n setIsProjectModalOpen(false);\n return _context3.f(7);\n case 8:\n return _context3.a(2);\n }\n }, _callee3, null, [[1, 6, 7, 8]]);\n }));\n return function handleSaveProject(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleEditProject = function handleEditProject(project) {\n setProjectToEdit(project);\n setIsProjectModalOpen(true);\n };\n var handleDeleteProject = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {\n var groupedProjectsData, _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n if (projectToDelete) {\n _context4.n = 1;\n break;\n }\n return _context4.a(2);\n case 1:\n _context4.p = 1;\n if (!(projectToDelete.id !== undefined)) {\n _context4.n = 4;\n break;\n }\n setProjectsLoading(true);\n _context4.n = 2;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.deleteProject)(projectToDelete.id);\n case 2:\n _context4.n = 3;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.fetchGroupedProjects)(activeFilter, areaFilter);\n case 3:\n groupedProjectsData = _context4.v;\n setGroupedProjects(groupedProjectsData);\n _context4.n = 5;\n break;\n case 4:\n console.error(\"Cannot delete project: ID is undefined.\");\n case 5:\n _context4.n = 7;\n break;\n case 6:\n _context4.p = 6;\n _t4 = _context4.v;\n console.error(\"Error deleting project:\", _t4);\n setProjectsError(true);\n case 7:\n _context4.p = 7;\n setProjectsLoading(false);\n setIsConfirmDialogOpen(false);\n setProjectToDelete(null);\n return _context4.f(7);\n case 8:\n return _context4.a(2);\n }\n }, _callee4, null, [[1, 6, 7, 8]]);\n }));\n return function handleDeleteProject() {\n return _ref4.apply(this, arguments);\n };\n }();\n var _getCompletionPercentage = function getCompletionPercentage(project) {\n // Now the completion percentage comes directly from the backend\n return project.completion_percentage || 0;\n };\n var handleActiveFilterChange = function handleActiveFilterChange(e) {\n var newActiveFilter = e.target.value;\n var params = new URLSearchParams(searchParams);\n if (newActiveFilter === \"all\") {\n params[\"delete\"](\"active\");\n } else {\n params.set(\"active\", newActiveFilter);\n }\n setSearchParams(params);\n };\n var handleAreaFilterChange = function handleAreaFilterChange(e) {\n var newAreaFilter = e.target.value;\n var params = new URLSearchParams(searchParams);\n if (newAreaFilter === \"\") {\n params[\"delete\"](\"area_id\");\n } else {\n params.set(\"area_id\", newAreaFilter);\n }\n setSearchParams(params);\n };\n\n // Apply search filter to the grouped projects from backend\n var searchFilteredGroupedProjects = Object.keys(groupedProjects).reduce(function (acc, areaName) {\n var projectsInArea = groupedProjects[areaName];\n\n // Defensive check: ensure projectsInArea is an array\n if (!Array.isArray(projectsInArea)) {\n console.warn(\"Projects for area \\\"\".concat(areaName, \"\\\" is not an array:\"), projectsInArea);\n return acc;\n }\n var filteredProjects = projectsInArea.filter(function (project) {\n return project.name.toLowerCase().includes(searchQuery.toLowerCase());\n });\n if (filteredProjects.length > 0) {\n acc[areaName] = filteredProjects;\n }\n return acc;\n }, {});\n if (isLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, t('projects.loading')));\n }\n if (isError) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 text-lg\"\n }, t('projects.error')));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-6xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-6 w-6 text-gray-500 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light text-gray-900 dark:text-gray-100\"\n }, t('projects.title'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col md:flex-row md:items-center justify-between mb-6 space-y-4 md:space-y-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setViewMode(\"cards\");\n },\n className: \"p-2 rounded-md focus:outline-none \".concat(viewMode === \"cards\" ? \"bg-blue-500 text-white\" : \"bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300\"),\n \"aria-label\": t(\"projects.cardViewAriaLabel\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setViewMode(\"list\");\n },\n className: \"p-2 rounded-md focus:outline-none \".concat(viewMode === \"list\" ? \"bg-blue-500 text-white\" : \"bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300\"),\n \"aria-label\": t(\"projects.listViewAriaLabel\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"h-5 w-5\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col md:flex-row md:items-center md:space-x-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full md:w-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n htmlFor: \"activeFilter\",\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('common.status')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n id: \"activeFilter\",\n value: activeFilter,\n onChange: handleActiveFilterChange,\n className: \"block w-full p-2 border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"true\"\n }, t('projects.filters.active')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"false\"\n }, t('projects.filters.inactive')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"all\"\n }, t('projects.filters.all')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full md:w-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n htmlFor: \"areaFilter\",\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\"\n }, t('common.area')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n id: \"areaFilter\",\n value: areaFilter,\n onChange: handleAreaFilterChange,\n className: \"block w-full p-2 border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"\"\n }, t('projects.filters.allAreas')), areas.map(function (area) {\n var _area$id;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n key: area.id,\n value: (_area$id = area.id) === null || _area$id === void 0 ? void 0 : _area$id.toString()\n }, area.name);\n }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-sm p-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 dark:text-gray-400 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n placeholder: t('projects.searchPlaceholder'),\n value: searchQuery,\n onChange: function onChange(e) {\n return setSearchQuery(e.target.value);\n },\n className: \"w-full bg-transparent border-none focus:ring-0 focus:outline-none dark:text-white\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(viewMode === \"cards\" ? \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4\" : \"flex flex-col space-y-1\")\n }, Object.keys(searchFilteredGroupedProjects).length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-gray-700 dark:text-gray-300\"\n }, t('projects.noProjectsFound')) : Object.keys(searchFilteredGroupedProjects).map(function (areaName) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: areaName\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"\".concat(viewMode === \"cards\" ? \"col-span-full text-md uppercase font-light text-gray-800 dark:text-gray-200 mb-2 mt-6\" : \"text-lg font-semibold text-gray-800 dark:text-gray-200 mb-3 mt-6 border-b border-gray-300 dark:border-gray-600 pb-2\")\n }, areaName), searchFilteredGroupedProjects[areaName].map(function (project) {\n var _getPriorityStyles = getPriorityStyles(project.priority || \"low\"),\n color = _getPriorityStyles.color;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Project_ProjectItem__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n key: project.id,\n project: project,\n viewMode: viewMode,\n color: color,\n getCompletionPercentage: function getCompletionPercentage() {\n return _getCompletionPercentage(project);\n },\n activeDropdown: activeDropdown,\n setActiveDropdown: setActiveDropdown,\n handleEditProject: handleEditProject,\n setProjectToDelete: setProjectToDelete,\n setIsConfirmDialogOpen: setIsConfirmDialogOpen\n });\n }));\n }))), isProjectModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Project_ProjectModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n isOpen: isProjectModalOpen,\n onClose: function onClose() {\n setIsProjectModalOpen(false);\n setProjectToEdit(null);\n },\n onSave: handleSaveProject,\n project: projectToEdit || undefined,\n areas: areas\n }), isConfirmDialogOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n title: t('modals.deleteProject.title'),\n message: t('modals.deleteProject.message', {\n projectName: projectToDelete === null || projectToDelete === void 0 ? void 0 : projectToDelete.name\n }),\n onConfirm: handleDeleteProject,\n onCancel: function onCancel() {\n return setIsConfirmDialogOpen(false);\n }\n }));\n};\n_s(Projects, \"BiIAVFo1f7zO+GhHg0b6sQ8NupA=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_6__.useTranslation, _store_useStore__WEBPACK_IMPORTED_MODULE_3__.useStore, _store_useStore__WEBPACK_IMPORTED_MODULE_3__.useStore, _store_useStore__WEBPACK_IMPORTED_MODULE_3__.useStore, react_router_dom__WEBPACK_IMPORTED_MODULE_9__.useSearchParams, _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_7__.useModalEvents];\n});\n_c = Projects;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Projects);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Projects\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Projects.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/CollapsibleSection.tsx":
-/*!***********************************************************!*\
- !*** ./frontend/components/Shared/CollapsibleSection.tsx ***!
- \***********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\n\nvar CollapsibleSection = function CollapsibleSection(_ref) {\n var title = _ref.title,\n isExpanded = _ref.isExpanded,\n onToggle = _ref.onToggle,\n children = _ref.children,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"border-b border-gray-200 dark:border-gray-700 \".concat(className)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: onToggle,\n className: \"w-full px-4 py-3 flex items-center justify-between text-left hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-medium text-gray-900 dark:text-gray-100\"\n }, title), isExpanded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"h-4 w-4 text-gray-500\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-4 w-4 text-gray-500\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"transition-all duration-300 ease-in-out \".concat(isExpanded ? 'max-h-[500px] opacity-100' : 'max-h-0 opacity-0 overflow-hidden')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"px-4 pb-4\"\n }, children)));\n};\n_c = CollapsibleSection;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CollapsibleSection);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"CollapsibleSection\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/CollapsibleSection.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/ConfirmDialog.tsx":
-/*!******************************************************!*\
- !*** ./frontend/components/Shared/ConfirmDialog.tsx ***!
- \******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\nvar ConfirmDialog = function ConfirmDialog(_ref) {\n _s();\n var title = _ref.title,\n message = _ref.message,\n onConfirm = _ref.onConfirm,\n onCancel = _ref.onCancel;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 p-8 rounded-lg shadow-xl w-full max-w-lg mx-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold mb-4 text-gray-900 dark:text-white\"\n }, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-700 dark:text-gray-300 mb-8\"\n }, message), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-end space-x-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onCancel,\n className: \"px-4 py-2 bg-gray-300 text-gray-700 rounded hover:bg-gray-400 focus:outline-none\"\n }, t('common.cancel', 'Cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onConfirm,\n className: \"px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600 focus:outline-none\"\n }, t('common.delete', 'Delete')))));\n};\n_s(ConfirmDialog, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = ConfirmDialog;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ConfirmDialog);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"ConfirmDialog\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/ConfirmDialog.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/LoadingScreen.tsx":
-/*!******************************************************!*\
- !*** ./frontend/components/Shared/LoadingScreen.tsx ***!
- \******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\nvar LoadingScreen = function LoadingScreen() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex h-screen w-screen items-center justify-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-lg\"\n }, \"Loading application... Please wait.\"));\n};\n_c = LoadingScreen;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LoadingScreen);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"LoadingScreen\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/LoadingScreen.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/MarkdownRenderer.tsx":
-/*!*********************************************************!*\
- !*** ./frontend/components/Shared/MarkdownRenderer.tsx ***!
- \*********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_markdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-markdown */ \"./node_modules/react-markdown/lib/index.js\");\n/* harmony import */ var remark_gfm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! remark-gfm */ \"./node_modules/remark-gfm/lib/index.js\");\n/* harmony import */ var rehype_highlight__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rehype-highlight */ \"./node_modules/rehype-highlight/lib/index.js\");\n/* harmony import */ var highlight_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! highlight.js */ \"./node_modules/highlight.js/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nvar _excluded = [\"className\", \"children\"];\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nfunction _objectDestructuringEmpty(t) { if (null == t) throw new TypeError(\"Cannot destructure \" + t); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n\n\n\n\n\nvar MarkdownRenderer = function MarkdownRenderer(_ref) {\n _s();\n var content = _ref.content,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? '' : _ref$className;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n // Configure highlight.js\n highlight_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].configure({\n languages: ['javascript', 'typescript', 'python', 'java', 'css', 'html', 'json', 'bash', 'sql', 'yaml', 'xml', 'dockerfile', 'nginx', 'apache']\n });\n\n // Manual highlighting for any missed code blocks\n var timer = setTimeout(function () {\n var codeBlocks = document.querySelectorAll('pre code:not(.hljs)');\n codeBlocks.forEach(function (block) {\n highlight_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].highlightElement(block);\n });\n }, 100);\n return function () {\n return clearTimeout(timer);\n };\n }, [content]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"markdown-content \".concat(className)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_markdown__WEBPACK_IMPORTED_MODULE_2__.Markdown, {\n remarkPlugins: [remark_gfm__WEBPACK_IMPORTED_MODULE_3__[\"default\"]],\n rehypePlugins: [[rehype_highlight__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n detect: true,\n ignoreMissing: true\n }]],\n components: {\n // Customize heading styles\n h1: function h1(_ref2) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h1\", _extends({\n className: \"text-3xl font-bold mb-4 text-gray-900 dark:text-gray-100\"\n }, props));\n },\n h2: function h2(_ref3) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref3), _ref3));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", _extends({\n className: \"text-2xl font-semibold mb-3 text-gray-900 dark:text-gray-100\"\n }, props));\n },\n h3: function h3(_ref4) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref4), _ref4));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", _extends({\n className: \"text-xl font-medium mb-2 text-gray-900 dark:text-gray-100\"\n }, props));\n },\n h4: function h4(_ref5) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref5), _ref5));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h4\", _extends({\n className: \"text-lg font-medium mb-2 text-gray-900 dark:text-gray-100\"\n }, props));\n },\n h5: function h5(_ref6) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref6), _ref6));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h5\", _extends({\n className: \"text-base font-medium mb-2 text-gray-900 dark:text-gray-100\"\n }, props));\n },\n h6: function h6(_ref7) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref7), _ref7));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h6\", _extends({\n className: \"text-sm font-medium mb-2 text-gray-900 dark:text-gray-100\"\n }, props));\n },\n // Customize paragraph styles\n p: function p(_ref8) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref8), _ref8));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", _extends({\n className: \"mb-3 text-gray-700 dark:text-gray-300 leading-relaxed\"\n }, props));\n },\n // Customize list styles\n ul: function ul(_ref9) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref9), _ref9));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", _extends({\n className: \"mb-3 list-disc list-inside space-y-1 text-gray-700 dark:text-gray-300\"\n }, props));\n },\n ol: function ol(_ref0) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref0), _ref0));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ol\", _extends({\n className: \"mb-3 list-decimal list-inside space-y-1 text-gray-700 dark:text-gray-300\"\n }, props));\n },\n li: function li(_ref1) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref1), _ref1));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", _extends({\n className: \"ml-4\"\n }, props));\n },\n // Customize link styles\n a: function a(_ref10) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref10), _ref10));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", _extends({\n className: \"text-blue-600 dark:text-blue-400 hover:underline\"\n }, props));\n },\n // Customize code styles\n code: function code(_ref11) {\n var className = _ref11.className,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, _excluded);\n // Check if this is a code block (has language class) or inline code\n var isCodeBlock = className && className.startsWith('language-');\n if (isCodeBlock) {\n // This is a code block - add hljs class to ensure our styles apply\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"code\", _extends({\n className: \"\".concat(className, \" hljs\")\n }, props), children);\n } else {\n var _node;\n // This is inline code - apply our custom styling\n // Check if parent is a pre element - if so, this might be a code block without language\n var parentIsPre = ((_node = props.node) === null || _node === void 0 || (_node = _node.parent) === null || _node === void 0 ? void 0 : _node.tagName) === 'pre';\n if (parentIsPre) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"code\", _extends({\n className: \"hljs\"\n }, props), children);\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"code\", _extends({\n className: \"px-1 py-0.5 bg-gray-100 dark:bg-gray-800 rounded text-sm font-mono text-gray-900 dark:text-gray-100\"\n }, props), children);\n }\n },\n pre: function pre(_ref12) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref12), _ref12));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"pre\", _extends({\n className: \"mb-4 rounded-lg overflow-x-auto\"\n }, props));\n },\n // Customize blockquote styles\n blockquote: function blockquote(_ref13) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref13), _ref13));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"blockquote\", _extends({\n className: \"mb-4 pl-4 border-l-4 border-gray-300 dark:border-gray-600 italic text-gray-600 dark:text-gray-400\"\n }, props));\n },\n // Customize table styles\n table: function table(_ref14) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref14), _ref14));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"table\", _extends({\n className: \"mb-4 w-full border-collapse border border-gray-300 dark:border-gray-600\"\n }, props));\n },\n thead: function thead(_ref15) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref15), _ref15));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"thead\", _extends({\n className: \"bg-gray-100 dark:bg-gray-800\"\n }, props));\n },\n th: function th(_ref16) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref16), _ref16));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"th\", _extends({\n className: \"border border-gray-300 dark:border-gray-600 px-3 py-2 text-left font-semibold text-gray-900 dark:text-gray-100\"\n }, props));\n },\n td: function td(_ref17) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref17), _ref17));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"td\", _extends({\n className: \"border border-gray-300 dark:border-gray-600 px-3 py-2 text-gray-700 dark:text-gray-300\"\n }, props));\n },\n // Customize horizontal rule\n hr: function hr(_ref18) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref18), _ref18));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", _extends({\n className: \"my-6 border-gray-300 dark:border-gray-600\"\n }, props));\n },\n // Customize strong/bold text\n strong: function strong(_ref19) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref19), _ref19));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"strong\", _extends({\n className: \"font-semibold text-gray-900 dark:text-gray-100\"\n }, props));\n },\n // Customize italic text\n em: function em(_ref20) {\n var props = _extends({}, (_objectDestructuringEmpty(_ref20), _ref20));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"em\", _extends({\n className: \"italic text-gray-700 dark:text-gray-300\"\n }, props));\n }\n }\n }, content));\n};\n_s(MarkdownRenderer, \"OD7bBpZva5O2jO+Puf00hKivP7c=\");\n_c = MarkdownRenderer;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MarkdownRenderer);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"MarkdownRenderer\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/MarkdownRenderer.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/NotFound.tsx":
-/*!*************************************************!*\
- !*** ./frontend/components/Shared/NotFound.tsx ***!
- \*************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\nvar NotFound = function NotFound() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h1\", null, \"404 - Page Not Found\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", null, \"The page you're looking for doesn't exist.\"));\n};\n_c = NotFound;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NotFound);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"NotFound\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/NotFound.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/PomodoroTimer.tsx":
-/*!******************************************************!*\
- !*** ./frontend/components/Shared/PomodoroTimer.tsx ***!
- \******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PauseIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlayIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\nvar POMODORO_STORAGE_KEY = 'tududi_pomodoro_timer';\nvar DEFAULT_TIME = 25 * 60; // 25 minutes in seconds\n\nvar PomodoroTimer = function PomodoroTimer(_ref) {\n _s();\n var _ref$className = _ref.className,\n className = _ref$className === void 0 ? '' : _ref$className;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isActive = _useState2[0],\n setIsActive = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(DEFAULT_TIME),\n _useState4 = _slicedToArray(_useState3, 2),\n timeLeft = _useState4[0],\n setTimeLeft = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isRunning = _useState6[0],\n setIsRunning = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n showCompletionMessage = _useState8[0],\n setShowCompletionMessage = _useState8[1];\n var intervalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n // Load state from localStorage on mount\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var savedState = localStorage.getItem(POMODORO_STORAGE_KEY);\n if (savedState) {\n try {\n var state = JSON.parse(savedState);\n if (state.isActive) {\n setIsActive(true);\n setTimeLeft(state.timeLeft);\n setIsRunning(state.isRunning);\n\n // If timer was running, calculate how much time has passed\n if (state.isRunning && state.startTime) {\n var elapsed = Math.floor((Date.now() - state.startTime) / 1000);\n var newTimeLeft = Math.max(0, state.timeLeft - elapsed);\n setTimeLeft(newTimeLeft);\n if (newTimeLeft > 0) {\n setIsRunning(true);\n } else {\n setIsRunning(false);\n }\n }\n }\n } catch (error) {\n console.error('Failed to load pomodoro state:', error);\n }\n }\n }, []);\n\n // Save state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var state = {\n isActive: isActive,\n timeLeft: timeLeft,\n isRunning: isRunning,\n startTime: isRunning ? Date.now() - (DEFAULT_TIME - timeLeft) * 1000 : undefined\n };\n localStorage.setItem(POMODORO_STORAGE_KEY, JSON.stringify(state));\n }, [isActive, timeLeft, isRunning]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (isRunning && timeLeft > 0) {\n intervalRef.current = setInterval(function () {\n setTimeLeft(function (prev) {\n if (prev <= 1) {\n setIsRunning(false);\n setShowCompletionMessage(true);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n } else {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }\n return function () {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n };\n }, [isRunning, timeLeft]);\n var formatTime = function formatTime(seconds) {\n var mins = Math.floor(seconds / 60);\n var secs = seconds % 60;\n return \"\".concat(mins.toString().padStart(2, '0'), \":\").concat(secs.toString().padStart(2, '0'));\n };\n var handleTomatoClick = function handleTomatoClick() {\n setIsActive(true);\n setTimeLeft(DEFAULT_TIME);\n setIsRunning(false);\n };\n var handlePlayPause = function handlePlayPause() {\n setIsRunning(!isRunning);\n };\n var handleReset = function handleReset() {\n setIsRunning(false);\n setTimeLeft(DEFAULT_TIME);\n setShowCompletionMessage(false);\n };\n var handleClose = function handleClose() {\n setIsActive(false);\n setIsRunning(false);\n setTimeLeft(DEFAULT_TIME);\n setShowCompletionMessage(false);\n localStorage.removeItem(POMODORO_STORAGE_KEY);\n };\n\n // Tomato SVG Icon\n var TomatoIcon = function TomatoIcon() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n className: \"cursor-pointer hover:scale-110 transition-transform\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M12 22c-4.5 0-8-3-8-7 0-2 1-4 2-5.5C7 8 8.5 7 10 7c1 0 2 .5 2 .5s1-.5 2-.5c1.5 0 3 1 4 2.5 1 1.5 2 3.5 2 5.5 0 4-3.5 7-8 7z\",\n fill: \"#e74c3c\",\n stroke: \"#c0392b\",\n strokeWidth: \"1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M10 7c0-1 .5-2 1-3 .5 1 1.5 2 1.5 3\",\n fill: \"none\",\n stroke: \"#27ae60\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M11 4c-1 0-2 1-2 2\",\n fill: \"none\",\n stroke: \"#27ae60\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\"\n }));\n };\n if (!isActive) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center \".concat(className),\n onClick: handleTomatoClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(TomatoIcon, null));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative flex items-center space-x-2 \".concat(className)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2 bg-gray-100 dark:bg-gray-800 rounded-lg px-3 py-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-mono font-semibold text-gray-900 dark:text-white\"\n }, formatTime(timeLeft)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handlePlayPause,\n className: \"flex items-center justify-center p-1 bg-blue-500 text-white rounded hover:bg-blue-600 transition-colors\",\n \"aria-label\": isRunning ? t('pomodoro.pause') : t('pomodoro.play')\n }, isRunning ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-3 w-3\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-3 w-3\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleReset,\n className: \"flex items-center justify-center p-1 bg-gray-500 text-white rounded hover:bg-gray-600 transition-colors\",\n \"aria-label\": t('pomodoro.reset')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-3 w-3\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleClose,\n className: \"flex items-center justify-center p-1 bg-red-500 text-white rounded hover:bg-red-600 transition-colors\",\n \"aria-label\": t('pomodoro.close')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-3 w-3\"\n }))), showCompletionMessage && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute top-full mt-2 right-0 bg-green-100 dark:bg-green-900 border border-green-300 dark:border-green-700 text-green-800 dark:text-green-200 px-3 py-2 rounded-lg shadow-lg z-50 whitespace-nowrap\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2 mb-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm font-medium\"\n }, \"\\uD83C\\uDF45 \", t('pomodoro.complete'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs mb-3\"\n }, t('pomodoro.completeMessage')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n setShowCompletionMessage(false);\n setIsActive(false);\n setTimeLeft(DEFAULT_TIME);\n localStorage.removeItem(POMODORO_STORAGE_KEY);\n },\n className: \"w-full text-xs px-3 py-1 bg-green-600 dark:bg-green-700 text-white rounded hover:bg-green-700 dark:hover:bg-green-600 transition-colors\"\n }, t('pomodoro.done'))));\n};\n_s(PomodoroTimer, \"sh/qG+bVG4iFmp/Two4ODuIDGo0=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = PomodoroTimer;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PomodoroTimer);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"PomodoroTimer\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/PomodoroTimer.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/PriorityDropdown.tsx":
-/*!*********************************************************!*\
- !*** ./frontend/components/Shared/PriorityDropdown.tsx ***!
- \*********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowDownIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowUpIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FireIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\nvar PriorityDropdown = function PriorityDropdown(_ref) {\n _s();\n var value = _ref.value,\n onChange = _ref.onChange;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var priorities = [{\n value: 'low',\n label: t('priority.low', 'Low'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"w-5 h-5 text-gray-700 dark:text-gray-300\"\n })\n }, {\n value: 'medium',\n label: t('priority.medium', 'Medium'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-5 h-5 text-gray-700 dark:text-gray-300\"\n })\n }, {\n value: 'high',\n label: t('priority.high', 'High'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-5 h-5 text-gray-700 dark:text-gray-300\"\n })\n }];\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isOpen = _useState2[0],\n setIsOpen = _useState2[1];\n var dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var handleToggle = function handleToggle() {\n setIsOpen(!isOpen);\n };\n var handleClickOutside = function handleClickOutside(event) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n setIsOpen(false);\n }\n };\n var handleSelect = function handleSelect(priority) {\n onChange(priority);\n setIsOpen(false);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n var selectedPriority = priorities.find(function (p) {\n return p.value === value;\n });\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: dropdownRef,\n className: \"relative inline-block text-left w-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n className: \"inline-flex justify-between w-full px-3 py-2 bg-white dark:bg-gray-900 text-sm text-gray-900 dark:text-gray-100 border border-gray-300 dark:border-gray-900 rounded-md shadow-sm focus:outline-none\",\n onClick: handleToggle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"flex items-center space-x-2\"\n }, selectedPriority ? selectedPriority.icon : '', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, selectedPriority ? selectedPriority.label : t('forms.priority', 'Select Priority'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"w-5 h-5 text-gray-500 dark:text-gray-300\"\n })), isOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute z-10 mt-2 w-full bg-white dark:bg-gray-700 shadow-lg rounded-md\"\n }, priorities.map(function (priority) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: priority.value,\n onClick: function onClick() {\n return handleSelect(priority.value);\n },\n className: \"flex items-center justify-between px-4 py-2 text-sm text-gray-900 dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-600 w-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"flex items-center space-x-2\"\n }, priority.icon, \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, priority.label)));\n })));\n};\n_s(PriorityDropdown, \"qFZaxaTpRrXhBQ1R1JrEH1Pyquk=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = PriorityDropdown;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PriorityDropdown);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"PriorityDropdown\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/PriorityDropdown.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/Switch.tsx":
-/*!***********************************************!*\
- !*** ./frontend/components/Shared/Switch.tsx ***!
- \***********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\nvar Switch = function Switch(_ref) {\n var isChecked = _ref.isChecked,\n onToggle = _ref.onToggle;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-12 h-6 flex items-center rounded-full p-1 cursor-pointer transition-all duration-300 \".concat(isChecked ? 'bg-blue-600' : 'bg-gray-300'),\n onClick: onToggle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white w-4 h-4 rounded-full shadow-md transform transition-transform duration-300 \".concat(isChecked ? 'translate-x-6' : '')\n })));\n};\n_c = Switch;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Switch);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Switch\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/Switch.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Shared/ToastContext.tsx":
-/*!*****************************************************!*\
- !*** ./frontend/components/Shared/ToastContext.tsx ***!
- \*****************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ToastProvider: () => (/* binding */ ToastProvider),\n/* harmony export */ useToast: () => (/* binding */ useToast)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature(),\n _s2 = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\nvar ToastContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar ToastProvider = function ToastProvider(_ref) {\n _s();\n var children = _ref.children;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState2 = _slicedToArray(_useState, 2),\n toastMessage = _useState2[0],\n setToastMessage = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('success'),\n _useState4 = _slicedToArray(_useState3, 2),\n toastType = _useState4[0],\n setToastType = _useState4[1];\n var showSuccessToast = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (message) {\n setToastMessage(message);\n setToastType('success');\n setTimeout(function () {\n return setToastMessage(null);\n }, 4000);\n }, []);\n var showErrorToast = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (message) {\n setToastMessage(message);\n setToastType('error');\n setTimeout(function () {\n return setToastMessage(null);\n }, 4000);\n }, []);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ToastContext.Provider, {\n value: {\n showSuccessToast: showSuccessToast,\n showErrorToast: showErrorToast\n }\n }, children, toastMessage && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Toast, {\n message: toastMessage,\n type: toastType,\n onClose: function onClose() {\n return setToastMessage(null);\n }\n }));\n};\n_s(ToastProvider, \"LOKk7y55w/lPtCUhSKQrz3mvN9A=\");\n_c = ToastProvider;\nvar useToast = function useToast() {\n _s2();\n var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ToastContext);\n if (context === undefined) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n return context;\n};\n_s2(useToast, \"b9L3QQ+jgeyIrH0NfHrJ8nn7VMU=\");\nvar Toast = function Toast(_ref2) {\n var message = _ref2.message,\n type = _ref2.type,\n onClose = _ref2.onClose;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-20 right-4 z-50 px-4 py-3 rounded-lg shadow-md text-white \".concat(type === 'success' ? 'bg-green-500' : 'bg-red-500')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1\"\n }, message), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onClose,\n className: \"ml-4 text-xl leading-none hover:opacity-75\"\n }, \"\\xD7\")));\n};\n_c2 = Toast;\nvar _c, _c2;\n__webpack_require__.$Refresh$.register(_c, \"ToastProvider\");\n__webpack_require__.$Refresh$.register(_c2, \"Toast\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Shared/ToastContext.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar.tsx":
-/*!*****************************************!*\
- !*** ./frontend/components/Sidebar.tsx ***!
- \*****************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var _Sidebar_SidebarAreas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sidebar/SidebarAreas */ \"./frontend/components/Sidebar/SidebarAreas.tsx\");\n/* harmony import */ var _Sidebar_SidebarFooter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Sidebar/SidebarFooter */ \"./frontend/components/Sidebar/SidebarFooter.tsx\");\n/* harmony import */ var _Sidebar_SidebarNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Sidebar/SidebarNav */ \"./frontend/components/Sidebar/SidebarNav.tsx\");\n/* harmony import */ var _Sidebar_SidebarNotes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sidebar/SidebarNotes */ \"./frontend/components/Sidebar/SidebarNotes.tsx\");\n/* harmony import */ var _Sidebar_SidebarProjects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Sidebar/SidebarProjects */ \"./frontend/components/Sidebar/SidebarProjects.tsx\");\n/* harmony import */ var _Sidebar_SidebarTags__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Sidebar/SidebarTags */ \"./frontend/components/Sidebar/SidebarTags.tsx\");\n/* harmony import */ var _Sidebar_CreateNewDropdownButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Sidebar/CreateNewDropdownButton */ \"./frontend/components/Sidebar/CreateNewDropdownButton.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\nvar Sidebar = function Sidebar(_ref) {\n _s();\n var isSidebarOpen = _ref.isSidebarOpen,\n setIsSidebarOpen = _ref.setIsSidebarOpen,\n currentUser = _ref.currentUser,\n isDarkMode = _ref.isDarkMode,\n toggleDarkMode = _ref.toggleDarkMode,\n _openTaskModal = _ref.openTaskModal,\n openProjectModal = _ref.openProjectModal,\n openNoteModal = _ref.openNoteModal,\n openAreaModal = _ref.openAreaModal,\n openTagModal = _ref.openTagModal,\n notes = _ref.notes,\n areas = _ref.areas,\n tags = _ref.tags;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useNavigate)();\n var location = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useLocation)();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isDropdownOpen = _useState2[0],\n setIsDropdownOpen = _useState2[1];\n var toggleDropdown = function toggleDropdown() {\n setIsDropdownOpen(!isDropdownOpen);\n };\n var handleNavClick = function handleNavClick(path, title, icon) {\n navigate(path, {\n state: {\n title: title\n }\n });\n if (window.innerWidth < 1024) {\n setIsSidebarOpen(false);\n }\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-16 left-0 \".concat(isSidebarOpen ? 'w-full sm:w-72' : 'w-0', \" h-[calc(100vh-4rem)] bg-white dark:bg-gray-900 text-gray-900 dark:text-white transition-width duration-300 ease-in-out z-40\"),\n style: {\n visibility: isSidebarOpen ? 'visible' : 'hidden',\n overflow: 'hidden'\n }\n }, isSidebarOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col h-full overflow-y-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"px-3 pb-3 pt-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_CreateNewDropdownButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n openTaskModal: function openTaskModal(type) {\n return _openTaskModal(type || 'full');\n },\n openProjectModal: openProjectModal,\n openNoteModal: openNoteModal,\n openAreaModal: openAreaModal\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_SidebarNav__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n handleNavClick: handleNavClick,\n location: location,\n isDarkMode: isDarkMode\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_SidebarProjects__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n handleNavClick: handleNavClick,\n location: location,\n isDarkMode: isDarkMode,\n openProjectModal: openProjectModal\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_SidebarNotes__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n handleNavClick: handleNavClick,\n openNoteModal: openNoteModal,\n notes: notes,\n location: location,\n isDarkMode: isDarkMode\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_SidebarAreas__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n handleNavClick: handleNavClick,\n areas: areas,\n location: location,\n isDarkMode: isDarkMode,\n openAreaModal: openAreaModal\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_SidebarTags__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n handleNavClick: handleNavClick,\n location: location,\n isDarkMode: isDarkMode,\n openTagModal: openTagModal,\n tags: tags\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_SidebarFooter__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n currentUser: currentUser,\n isDarkMode: isDarkMode,\n toggleDarkMode: toggleDarkMode,\n isSidebarOpen: isSidebarOpen,\n setIsSidebarOpen: setIsSidebarOpen,\n isDropdownOpen: isDropdownOpen,\n toggleDropdown: toggleDropdown\n })));\n};\n_s(Sidebar, \"BuV5ye66dc5Hj9/s7y1G+tjc47E=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useNavigate, react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useLocation];\n});\n_c = Sidebar;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sidebar);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Sidebar\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar/CreateNewDropdownButton.tsx":
-/*!*****************************************************************!*\
- !*** ./frontend/components/Sidebar/CreateNewDropdownButton.tsx ***!
- \*****************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClipboardIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/BookOpenIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\nvar CreateNewDropdownButton = function CreateNewDropdownButton(_ref) {\n _s();\n var openTaskModal = _ref.openTaskModal,\n openProjectModal = _ref.openProjectModal,\n openNoteModal = _ref.openNoteModal,\n openAreaModal = _ref.openAreaModal;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isDropdownOpen = _useState2[0],\n setIsDropdownOpen = _useState2[1];\n var toggleDropdown = function toggleDropdown() {\n setIsDropdownOpen(!isDropdownOpen);\n };\n var handleDropdownSelect = function handleDropdownSelect(type) {\n switch (type) {\n case 'Task':\n openTaskModal('full');\n break;\n case 'Project':\n openProjectModal();\n break;\n case 'Note':\n openNoteModal(null);\n break;\n case 'Area':\n openAreaModal(null);\n break;\n default:\n break;\n }\n setIsDropdownOpen(false);\n };\n var dropdownItems = [{\n label: 'Task',\n translationKey: 'dropdown.task',\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n })\n }, {\n label: 'Project',\n translationKey: 'dropdown.project',\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n })\n }, {\n label: 'Note',\n translationKey: 'dropdown.note',\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n })\n }, {\n label: 'Area',\n translationKey: 'dropdown.area',\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n })\n }];\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-8 px-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n className: \"flex justify-between items-center w-full rounded-md border border-gray-300 dark:border-gray-700 shadow-sm px-4 py-2 bg-white dark:bg-gray-800 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none\",\n onClick: toggleDropdown\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"w-5 h-5 mr-2 text-gray-500 dark:text-gray-400\",\n \"aria-hidden\": \"true\"\n }), t('dropdown.createNew', 'Create New')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-5 h-5 text-gray-500 dark:text-gray-400\",\n \"aria-hidden\": \"true\"\n })), isDropdownOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute left-0 right-0 mt-2 w-full\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"rounded-md shadow-lg bg-white dark:bg-gray-800 ring-1 ring-black ring-opacity-5 z-10\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"py-1\",\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"aria-labelledby\": \"options-menu\"\n }, dropdownItems.map(function (_ref2) {\n var label = _ref2.label,\n translationKey = _ref2.translationKey,\n icon = _ref2.icon;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n key: label,\n className: \"block px-4 py-2 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer flex items-center\",\n onClick: function onClick() {\n return handleDropdownSelect(label);\n },\n role: \"menuitem\"\n }, icon, t(translationKey, label));\n }))))));\n};\n_s(CreateNewDropdownButton, \"gRRtbMjmmvWyG7bcZ7YMLpNqbfg=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = CreateNewDropdownButton;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CreateNewDropdownButton);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"CreateNewDropdownButton\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar/CreateNewDropdownButton.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar/SidebarAreas.tsx":
-/*!******************************************************!*\
- !*** ./frontend/components/Sidebar/SidebarAreas.tsx ***!
- \******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar SidebarAreas = function SidebarAreas(_ref) {\n _s();\n var handleNavClick = _ref.handleNavClick,\n location = _ref.location,\n openAreaModal = _ref.openAreaModal;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var isActiveArea = function isActiveArea(path) {\n return location.pathname === path ? \"bg-gray-200 dark:bg-gray-700 text-gray-900 dark:text-white\" : \"text-gray-700 dark:text-gray-300\";\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"flex flex-col space-y-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"flex justify-between items-center px-4 py-2 rounded-md uppercase text-xs tracking-wider cursor-pointer hover:text-black dark:hover:text-white \".concat(isActiveArea(\"/areas\")),\n onClick: function onClick() {\n return handleNavClick(\"/areas\", \"Areas\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }), t('sidebar.areas')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick(e) {\n e.stopPropagation();\n openAreaModal(null);\n },\n className: \"text-gray-700 dark:text-gray-300 hover:text-black dark:hover:text-white focus:outline-none\",\n \"aria-label\": t('sidebar.addAreaAriaLabel'),\n title: t('sidebar.addAreaTitle')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5\"\n })))));\n};\n_s(SidebarAreas, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = SidebarAreas;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SidebarAreas);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"SidebarAreas\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar/SidebarAreas.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar/SidebarFooter.tsx":
-/*!*******************************************************!*\
- !*** ./frontend/components/Sidebar/SidebarFooter.tsx ***!
- \*******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/SunIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/MoonIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\n\nvar SidebarFooter = function SidebarFooter(_ref) {\n var isDarkMode = _ref.isDarkMode,\n toggleDarkMode = _ref.toggleDarkMode,\n isSidebarOpen = _ref.isSidebarOpen,\n setIsSidebarOpen = _ref.setIsSidebarOpen;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-auto p-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"border-t border-gray-200 dark:border-gray-700 pt-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center\"\n }, isSidebarOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: toggleDarkMode,\n className: \"focus:outline-none text-gray-700 dark:text-gray-300\",\n \"aria-label\": \"Toggle Dark Mode\"\n }, isDarkMode ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"h-6 w-6 text-yellow-500\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-6 w-6 text-gray-500\"\n })))));\n};\n_c = SidebarFooter;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SidebarFooter);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"SidebarFooter\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar/SidebarFooter.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar/SidebarNav.tsx":
-/*!****************************************************!*\
- !*** ./frontend/components/Sidebar/SidebarNav.tsx ***!
- \****************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/InboxIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/CalendarDaysIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/ClockIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/ListBulletIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/CalendarIcon.js\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _utils_inboxService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/inboxService */ \"./frontend/utils/inboxService.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\n\n\nvar SidebarNav = function SidebarNav(_ref) {\n _s();\n var handleNavClick = _ref.handleNavClick,\n location = _ref.location;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var store = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_2__.useStore)();\n\n // Get inbox items count for badge\n var inboxItemsCount = store.inboxStore.inboxItems.length;\n\n // Load inbox items when component mounts to ensure badge shows correct count\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n (0,_utils_inboxService__WEBPACK_IMPORTED_MODULE_3__.loadInboxItemsToStore)()[\"catch\"](console.error);\n }, []);\n var navLinks = [{\n path: '/inbox',\n title: t('sidebar.inbox', 'Inbox'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5\"\n })\n }, {\n path: '/today',\n title: t('sidebar.today', 'Today'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-5 w-5\"\n }),\n query: 'type=today'\n }, {\n path: '/tasks?type=upcoming',\n title: t('sidebar.upcoming', 'Upcoming'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5\"\n }),\n query: 'type=upcoming'\n }, {\n path: '/tasks',\n title: t('sidebar.allTasks', 'All Tasks'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-5 w-5\"\n })\n }, {\n path: '/calendar',\n title: t('sidebar.calendar', 'Calendar'),\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5\"\n })\n }];\n var isActive = function isActive(path, query) {\n // Handle special case for paths without query parameters\n if (path === '/inbox' || path === '/today' || path === '/calendar') {\n var _isPathMatch = location.pathname === path;\n return _isPathMatch ? 'bg-gray-200 dark:bg-gray-700 text-gray-900 dark:text-white' : 'text-gray-700 dark:text-gray-300';\n }\n\n // Regular case for /tasks with query params\n var isPathMatch = location.pathname === '/tasks';\n var isQueryMatch = query ? location.search.includes(query) : location.search === '';\n return isPathMatch && isQueryMatch ? 'bg-gray-200 dark:bg-gray-700 text-gray-900 dark:text-white' : 'text-gray-700 dark:text-gray-300';\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"flex flex-col space-y-1\"\n }, navLinks.map(function (link) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: link.path\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return handleNavClick(link.path, link.title, link.icon);\n },\n className: \"w-full text-left px-4 py-1 flex items-center justify-between rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-all duration-200 \".concat(isActive(link.path, link.query))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, link.icon, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"ml-2\"\n }, link.title)), link.path === '/inbox' && inboxItemsCount > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"inline-flex items-center justify-center w-5 h-5 text-xs font-medium text-white bg-blue-500 rounded-full\"\n }, inboxItemsCount > 99 ? '99+' : inboxItemsCount))), link.path === '/inbox' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"py-1\"\n }));\n }));\n};\n_s(SidebarNav, \"4AMbE+JQd3ANObtpTgEaVXJiN2A=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _store_useStore__WEBPACK_IMPORTED_MODULE_2__.useStore];\n});\n_c = SidebarNav;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SidebarNav);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"SidebarNav\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar/SidebarNav.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar/SidebarNotes.tsx":
-/*!******************************************************!*\
- !*** ./frontend/components/Sidebar/SidebarNotes.tsx ***!
- \******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/BookOpenIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar SidebarNotes = function SidebarNotes(_ref) {\n _s();\n var handleNavClick = _ref.handleNavClick,\n location = _ref.location,\n openNoteModal = _ref.openNoteModal;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var isActiveNote = function isActiveNote(path) {\n return location.pathname === path ? 'bg-gray-200 dark:bg-gray-700 text-gray-900 dark:text-white' : 'text-gray-700 dark:text-gray-300';\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"flex flex-col space-y-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"flex justify-between items-center rounded-md px-4 py-2 uppercase text-xs tracking-wider cursor-pointer hover:text-black dark:hover:text-white \".concat(isActiveNote('/notes')),\n onClick: function onClick() {\n return handleNavClick('/notes', 'Notes', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }), t('sidebar.notes')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick(e) {\n e.stopPropagation();\n openNoteModal(null);\n },\n className: \"text-gray-700 dark:text-gray-300 hover:text-black dark:hover:text-white focus:outline-none\",\n \"aria-label\": \"Add Note\",\n title: \"Add Note\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5\"\n })))));\n};\n_s(SidebarNotes, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = SidebarNotes;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SidebarNotes);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"SidebarNotes\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar/SidebarNotes.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar/SidebarProjects.tsx":
-/*!*********************************************************!*\
- !*** ./frontend/components/Sidebar/SidebarProjects.tsx ***!
- \*********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar SidebarProjects = function SidebarProjects(_ref) {\n _s();\n var handleNavClick = _ref.handleNavClick,\n location = _ref.location,\n openProjectModal = _ref.openProjectModal;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var isActiveProject = function isActiveProject(path) {\n return location.pathname === path ? 'bg-gray-200 dark:bg-gray-700 text-gray-900 dark:text-white' : 'text-gray-700 dark:text-gray-300';\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"flex flex-col space-y-1 mt-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"flex justify-between items-center px-4 py-2 uppercase rounded-md text-xs tracking-wider cursor-pointer hover:text-black dark:hover:text-white \".concat(isActiveProject('/projects')),\n onClick: function onClick() {\n return handleNavClick('/projects?active=true', 'Projects', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }), t('sidebar.projects')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick(e) {\n e.stopPropagation();\n openProjectModal();\n },\n className: \"text-gray-700 dark:text-gray-300 hover:text-black dark:hover:text-white focus:outline-none\",\n \"aria-label\": \"Add Project\",\n title: \"Add Project\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5\"\n })))));\n};\n_s(SidebarProjects, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = SidebarProjects;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SidebarProjects);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"SidebarProjects\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar/SidebarProjects.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Sidebar/SidebarTags.tsx":
-/*!*****************************************************!*\
- !*** ./frontend/components/Sidebar/SidebarTags.tsx ***!
- \*****************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/TagIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar SidebarTags = function SidebarTags(_ref) {\n _s();\n var handleNavClick = _ref.handleNavClick,\n location = _ref.location,\n openTagModal = _ref.openTagModal;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var isActiveTag = function isActiveTag(path) {\n return location.pathname === path ? 'bg-gray-200 dark:bg-gray-700 text-gray-900 dark:text-white' : 'text-gray-700 dark:text-gray-300';\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"flex flex-col space-y-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"flex justify-between items-center rounded-md px-4 py-2 uppercase text-xs tracking-wider cursor-pointer hover:text-black dark:hover:text-white \".concat(isActiveTag('/tags')),\n onClick: function onClick() {\n return handleNavClick('/tags', 'Tags', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }), t('sidebar.tags')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick(e) {\n e.stopPropagation();\n openTagModal(null);\n },\n className: \"text-gray-700 dark:text-gray-300 hover:text-black dark:hover:text-white focus:outline-none\",\n \"aria-label\": t('sidebar.addTagAriaLabel'),\n title: t('sidebar.addTagTitle')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5\"\n })))));\n};\n_s(SidebarTags, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = SidebarTags;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SidebarTags);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"SidebarTags\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Sidebar/SidebarTags.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Tag/TagDetails.tsx":
-/*!************************************************!*\
- !*** ./frontend/components/Tag/TagDetails.tsx ***!
- \************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TagIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/CheckIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/BookOpenIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js\");\n/* harmony import */ var _Task_TaskList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Task/TaskList */ \"./frontend/components/Task/TaskList.tsx\");\n/* harmony import */ var _Project_ProjectItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Project/ProjectItem */ \"./frontend/components/Project/ProjectItem.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\nvar TagDetails = function TagDetails() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useParams = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_4__.useParams)(),\n id = _useParams.id;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState2 = _slicedToArray(_useState, 2),\n tag = _useState2[0],\n setTag = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState4 = _slicedToArray(_useState3, 2),\n tasks = _useState4[0],\n setTasks = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState6 = _slicedToArray(_useState5, 2),\n notes = _useState6[0],\n setNotes = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState8 = _slicedToArray(_useState7, 2),\n projects = _useState8[0],\n setProjects = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState0 = _slicedToArray(_useState9, 2),\n loading = _useState0[0],\n setLoading = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState10 = _slicedToArray(_useState1, 2),\n error = _useState10[0],\n setError = _useState10[1];\n\n // State for ProjectItem components\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState12 = _slicedToArray(_useState11, 2),\n activeDropdown = _useState12[0],\n setActiveDropdown = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState14 = _slicedToArray(_useState13, 2),\n hoveredNoteId = _useState14[0],\n setHoveredNoteId = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState16 = _slicedToArray(_useState15, 2),\n projectToDelete = _useState16[0],\n setProjectToDelete = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState18 = _slicedToArray(_useState17, 2),\n isConfirmDialogOpen = _useState18[0],\n setIsConfirmDialogOpen = _useState18[1];\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_4__.useNavigate)();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchTagData = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var tagResponse, tagData, _yield$Promise$all, _yield$Promise$all2, tasksResponse, notesResponse, projectsResponse, tasksData, notesData, projectsData, allProjects, filteredProjects, tagError, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return fetch(\"/api/tag/\".concat(id));\n case 1:\n tagResponse = _context.v;\n if (!tagResponse.ok) {\n _context.n = 10;\n break;\n }\n _context.n = 2;\n return tagResponse.json();\n case 2:\n tagData = _context.v;\n setTag(tagData);\n\n // Now fetch entities that have this tag using the tag name\n _context.n = 3;\n return Promise.all([fetch(\"/api/tasks?tag=\".concat(encodeURIComponent(tagData.name))), fetch(\"/api/notes?tag=\".concat(encodeURIComponent(tagData.name))), fetch(\"/api/projects\") // Projects API doesn't support tag filtering yet\n ]);\n case 3:\n _yield$Promise$all = _context.v;\n _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);\n tasksResponse = _yield$Promise$all2[0];\n notesResponse = _yield$Promise$all2[1];\n projectsResponse = _yield$Promise$all2[2];\n if (!tasksResponse.ok) {\n _context.n = 5;\n break;\n }\n _context.n = 4;\n return tasksResponse.json();\n case 4:\n tasksData = _context.v;\n setTasks(tasksData.tasks || []);\n case 5:\n if (!notesResponse.ok) {\n _context.n = 7;\n break;\n }\n _context.n = 6;\n return notesResponse.json();\n case 6:\n notesData = _context.v;\n setNotes(notesData || []);\n case 7:\n if (!projectsResponse.ok) {\n _context.n = 9;\n break;\n }\n _context.n = 8;\n return projectsResponse.json();\n case 8:\n projectsData = _context.v;\n // Filter projects client-side since API doesn't support tag filtering\n allProjects = projectsData.projects || projectsData || [];\n filteredProjects = allProjects.filter(function (project) {\n return project.tags && project.tags.some(function (tag) {\n return tag.name === tagData.name;\n });\n });\n setProjects(filteredProjects);\n case 9:\n _context.n = 12;\n break;\n case 10:\n _context.n = 11;\n return tagResponse.json();\n case 11:\n tagError = _context.v;\n setError(tagError.error || 'Failed to fetch tag.');\n case 12:\n _context.n = 14;\n break;\n case 13:\n _context.p = 13;\n _t = _context.v;\n setError(t('tags.error'));\n case 14:\n _context.p = 14;\n setLoading(false);\n return _context.f(14);\n case 15:\n return _context.a(2);\n }\n }, _callee, null, [[0, 13, 14, 15]]);\n }));\n return function fetchTagData() {\n return _ref.apply(this, arguments);\n };\n }();\n fetchTagData();\n }, [id, t]);\n\n // Task handlers\n var handleTaskUpdate = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(updatedTask) {\n var response, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return fetch(\"/api/task/\".concat(updatedTask.id), {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(updatedTask)\n });\n case 1:\n response = _context2.v;\n if (response.ok) {\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === updatedTask.id ? updatedTask : task;\n });\n });\n }\n _context2.n = 3;\n break;\n case 2:\n _context2.p = 2;\n _t2 = _context2.v;\n console.error(\"Error updating task:\", _t2);\n case 3:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 2]]);\n }));\n return function handleTaskUpdate(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(taskId) {\n var response, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n _context3.n = 1;\n return fetch(\"/api/task/\".concat(taskId), {\n method: \"DELETE\"\n });\n case 1:\n response = _context3.v;\n if (response.ok) {\n setTasks(function (prevTasks) {\n return prevTasks.filter(function (task) {\n return task.id !== taskId;\n });\n });\n }\n _context3.n = 3;\n break;\n case 2:\n _context3.p = 2;\n _t3 = _context3.v;\n console.error(\"Error deleting task:\", _t3);\n case 3:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 2]]);\n }));\n return function handleTaskDelete(_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleToggleToday = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(taskId) {\n var response, updatedTask, _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.p = 0;\n _context4.n = 1;\n return fetch(\"/api/task/\".concat(taskId, \"/today\"), {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n case 1:\n response = _context4.v;\n if (!response.ok) {\n _context4.n = 3;\n break;\n }\n _context4.n = 2;\n return response.json();\n case 2:\n updatedTask = _context4.v;\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === taskId ? _objectSpread(_objectSpread({}, task), {}, {\n today: updatedTask.today,\n today_move_count: updatedTask.today_move_count\n }) : task;\n });\n });\n case 3:\n _context4.n = 5;\n break;\n case 4:\n _context4.p = 4;\n _t4 = _context4.v;\n console.error(\"Error toggling today status:\", _t4);\n case 5:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 4]]);\n }));\n return function handleToggleToday(_x3) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n // Project handlers \n var handleEditProject = function handleEditProject(project) {\n // For now, just log - could add modal later\n console.log(\"Edit project:\", project);\n };\n var _getCompletionPercentage = function getCompletionPercentage(project) {\n return project.completion_percentage || 0;\n };\n var getPriorityStyles = function getPriorityStyles(priority) {\n switch (priority) {\n case \"low\":\n return {\n color: \"bg-green-500\"\n };\n case \"medium\":\n return {\n color: \"bg-yellow-500\"\n };\n case \"high\":\n return {\n color: \"bg-red-500\"\n };\n default:\n return {\n color: \"bg-gray-500\"\n };\n }\n };\n if (loading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, t('tags.loading')));\n }\n if (error) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 p-4\"\n }, error);\n }\n if (!tag) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-gray-700 dark:text-gray-300 p-4\"\n }, t('tags.notFound'));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-6 w-6 mr-2 text-gray-900 dark:text-white\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light text-gray-900 dark:text-white\"\n }, tag.name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-3 gap-6 mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 shadow rounded-lg p-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-8 w-8 text-blue-500 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-2xl font-semibold text-gray-900 dark:text-white\"\n }, tasks.length), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-600 dark:text-gray-400\"\n }, t('tasks.title'))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 shadow rounded-lg p-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-8 w-8 text-green-500 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-2xl font-semibold text-gray-900 dark:text-white\"\n }, notes.length), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-600 dark:text-gray-400\"\n }, t('notes.title'))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 shadow rounded-lg p-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-8 w-8 text-purple-500 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-2xl font-semibold text-gray-900 dark:text-white\"\n }, projects.length), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-600 dark:text-gray-400\"\n }, t('projects.title')))))), tasks.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-white mb-4 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }), t('tasks.title'), \" (\", tasks.length, \")\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_TaskList__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n tasks: tasks,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: [] // Empty since we're viewing by tag\n ,\n hideProjectName: false,\n onToggleToday: handleToggleToday\n })), notes.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-white mb-4 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }), t('notes.title'), \" (\", notes.length, \")\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"space-y-1\"\n }, notes.map(function (note) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n key: note.id,\n className: \"bg-white dark:bg-gray-900 shadow rounded-lg px-4 py-3 flex justify-between items-center\",\n onMouseEnter: function onMouseEnter() {\n return setHoveredNoteId(note.id || null);\n },\n onMouseLeave: function onMouseLeave() {\n return setHoveredNoteId(null);\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-grow overflow-hidden pr-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center flex-wrap gap-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_9__.Link, {\n to: \"/note/\".concat(note.id),\n className: \"text-md font-semibold text-gray-900 dark:text-gray-100 hover:underline\"\n }, note.title), (note.tags && note.tags.length > 0 || note.Tags && note.Tags.length > 0) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (note.tags || note.Tags || []).map(function (noteTag) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: noteTag.id,\n onClick: function onClick(e) {\n e.preventDefault();\n navigate(\"/tag/\".concat(noteTag.id));\n },\n className: \"flex items-center space-x-1 px-2 py-0.5 bg-gray-100 dark:bg-gray-700 rounded text-xs cursor-pointer hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-3 w-3 text-gray-500 dark:text-gray-300\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-gray-700 dark:text-gray-300\"\n }, noteTag.name));\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return console.log(\"Edit note:\", note);\n },\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none transition-opacity \".concat(hoveredNoteId === note.id ? 'opacity-100' : 'opacity-0'),\n \"aria-label\": \"Edit \".concat(note.title),\n title: \"Edit \".concat(note.title)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return console.log(\"Delete note:\", note);\n },\n className: \"text-gray-500 hover:text-red-700 dark:hover:text-red-300 focus:outline-none transition-opacity \".concat(hoveredNoteId === note.id ? 'opacity-100' : 'opacity-0'),\n \"aria-label\": \"Delete \".concat(note.title),\n title: \"Delete \".concat(note.title)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-5 w-5\"\n }))));\n }))), projects.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-semibold text-gray-900 dark:text-white mb-4 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 mr-2\"\n }), t('projects.title'), \" (\", projects.length, \")\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col space-y-1\"\n }, projects.map(function (project) {\n var _getPriorityStyles = getPriorityStyles(project.priority || \"low\"),\n color = _getPriorityStyles.color;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Project_ProjectItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: project.id,\n project: project,\n viewMode: \"list\",\n color: color,\n getCompletionPercentage: function getCompletionPercentage() {\n return _getCompletionPercentage(project);\n },\n activeDropdown: activeDropdown,\n setActiveDropdown: setActiveDropdown,\n handleEditProject: handleEditProject,\n setProjectToDelete: setProjectToDelete,\n setIsConfirmDialogOpen: setIsConfirmDialogOpen\n });\n }))), tasks.length === 0 && notes.length === 0 && projects.length === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-center py-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-16 w-16 text-gray-400 mx-auto mb-4\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-600 dark:text-gray-400 text-lg\"\n }, t('tags.noItemsWithTag', \"No items found with the tag \\\"\".concat(tag.name, \"\\\"\"))))));\n};\n_s(TagDetails, \"XaI9OAftLSvQJP+9HT/XoVe6DPc=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, react_router_dom__WEBPACK_IMPORTED_MODULE_4__.useParams, react_router_dom__WEBPACK_IMPORTED_MODULE_4__.useNavigate];\n});\n_c = TagDetails;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TagDetails);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TagDetails\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Tag/TagDetails.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Tag/TagInput.tsx":
-/*!**********************************************!*\
- !*** ./frontend/components/Tag/TagInput.tsx ***!
- \**********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\nvar TagInput = function TagInput(_ref) {\n _s();\n var initialTags = _ref.initialTags,\n onTagsChange = _ref.onTagsChange,\n availableTags = _ref.availableTags;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState2 = _slicedToArray(_useState, 2),\n inputValue = _useState2[0],\n setInputValue = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialTags || []),\n _useState4 = _slicedToArray(_useState3, 2),\n tags = _useState4[0],\n setTags = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState6 = _slicedToArray(_useState5, 2),\n filteredTags = _useState6[0],\n setFilteredTags = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isDropdownOpen = _useState8[0],\n setIsDropdownOpen = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(-1),\n _useState0 = _slicedToArray(_useState9, 2),\n highlightedIndex = _useState0[0],\n setHighlightedIndex = _useState0[1];\n var inputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n // Update internal tags state when initialTags prop changes\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n // Set the tags state with the initial tags\n if (initialTags && initialTags.length > 0) {\n // Simply set our internal state to match the initialTags\n setTags(initialTags);\n }\n }, [initialTags]);\n\n // Remove this effect to prevent infinite loops\n // onTagsChange is called directly in addNewTag, selectTag, and removeTag\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handler = setTimeout(function () {\n if (inputValue.trim() === '') {\n setFilteredTags([]);\n setIsDropdownOpen(false);\n return;\n }\n var filtered = availableTags.filter(function (tag) {\n return tag.name.toLowerCase().includes(inputValue.toLowerCase()) && !tags.includes(tag.name);\n });\n setFilteredTags(filtered);\n setIsDropdownOpen(filtered.length > 0);\n setHighlightedIndex(-1);\n }, 300);\n return function () {\n clearTimeout(handler);\n };\n }, [inputValue, availableTags, tags]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target) && containerRef.current && !containerRef.current.contains(event.target)) {\n setIsDropdownOpen(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n var handleInputChange = function handleInputChange(event) {\n setInputValue(event.target.value);\n };\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setHighlightedIndex(function (prev) {\n return prev < filteredTags.length - 1 ? prev + 1 : prev;\n });\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex(function (prev) {\n return prev > 0 ? prev - 1 : prev;\n });\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (highlightedIndex >= 0 && highlightedIndex < filteredTags.length) {\n selectTag(filteredTags[highlightedIndex].name);\n } else if (inputValue.trim()) {\n addNewTag(inputValue.trim());\n }\n } else if (event.key === 'Escape') {\n setIsDropdownOpen(false);\n } else if (event.key === ',') {\n if (inputValue.trim()) {\n event.preventDefault();\n addNewTag(inputValue.trim());\n }\n }\n };\n var addNewTag = function addNewTag(tag) {\n if (tags.length >= 10) {\n return;\n }\n if (!tags.includes(tag)) {\n var updatedTags = [].concat(_toConsumableArray(tags), [tag]);\n setTags(updatedTags);\n onTagsChange(updatedTags);\n }\n setInputValue('');\n setIsDropdownOpen(false);\n };\n var selectTag = function selectTag(tag) {\n if (!tags.includes(tag)) {\n var updatedTags = [].concat(_toConsumableArray(tags), [tag]);\n setTags(updatedTags);\n onTagsChange(updatedTags);\n }\n setInputValue('');\n setIsDropdownOpen(false);\n };\n var removeTag = function removeTag(index) {\n var updatedTags = tags.filter(function (_, i) {\n return i !== index;\n });\n setTags(updatedTags);\n onTagsChange(updatedTags);\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-2 relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: containerRef,\n className: \"flex flex-wrap items-center border border-gray-300 dark:border-gray-900 bg-white dark:bg-gray-900 rounded-md p-2 min-h-[40px]\"\n }, tags.length > 0 ? tags.map(function (tag, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n key: index,\n className: \"flex items-center bg-gray-200 text-gray-700 text-xs font-medium mr-2 px-2.5 py-0.5 rounded\"\n }, tag, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return removeTag(index);\n },\n className: \"ml-1 text-gray-600 hover:text-gray-800 focus:outline-none\",\n \"aria-label\": \"Remove tag \".concat(tag)\n }, \"\\xD7\"));\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-gray-400 text-xs\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n ref: inputRef,\n value: inputValue,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n placeholder: t('tags.typeToAdd'),\n className: \"flex-grow bg-transparent border-none outline-none text-sm text-gray-900 dark:text-gray-100\",\n onFocus: function onFocus() {\n if (filteredTags.length > 0) setIsDropdownOpen(true);\n },\n style: {\n minWidth: '150px'\n },\n \"aria-haspopup\": \"listbox\",\n \"aria-expanded\": isDropdownOpen,\n \"aria-controls\": \"tag-suggestions\"\n })), isDropdownOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: dropdownRef,\n className: \"absolute z-50 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-lg max-h-60 overflow-auto\",\n role: \"listbox\",\n id: \"tag-suggestions\"\n }, filteredTags.map(function (tag, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: tag.id,\n type: \"button\",\n onClick: function onClick() {\n return selectTag(tag.name);\n },\n className: \"w-full text-left px-4 py-2 text-sm hover:bg-gray-200 dark:hover:bg-gray-700 \".concat(highlightedIndex === index ? 'bg-gray-200 dark:bg-gray-700 text-gray-900 dark:text-gray-100' : 'text-gray-700 dark:text-gray-300'),\n onMouseEnter: function onMouseEnter() {\n return setHighlightedIndex(index);\n },\n onMouseLeave: function onMouseLeave() {\n return setHighlightedIndex(-1);\n },\n role: \"option\",\n \"aria-selected\": highlightedIndex === index\n }, highlightedIndex === index ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, inputValue.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"font-semibold\"\n }, tag.name.substring(0, inputValue.length)), tag.name.substring(inputValue.length)) : tag.name);\n }), filteredTags.length === 0 && inputValue.trim() !== '' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return addNewTag(inputValue.trim());\n },\n className: \"w-full text-left px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700\",\n role: \"option\"\n }, \"+ Create \\\"\", inputValue.trim(), \"\\\"\")));\n};\n_s(TagInput, \"o1LEChSrsUMhENqwqxLH2X63sBs=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TagInput;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TagInput);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TagInput\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Tag/TagInput.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Tag/TagModal.tsx":
-/*!**********************************************!*\
- !*** ./frontend/components/Tag/TagModal.tsx ***!
- \**********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\nvar TagModal = function TagModal(_ref) {\n _s();\n var isOpen = _ref.isOpen,\n onClose = _ref.onClose,\n onSave = _ref.onSave,\n tag = _ref.tag;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(tag || {\n name: ''\n }),\n _useState2 = _slicedToArray(_useState, 2),\n formData = _useState2[0],\n setFormData = _useState2[1];\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isClosing = _useState4[0],\n setIsClosing = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isSubmitting = _useState6[0],\n setIsSubmitting = _useState6[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)(),\n t = _useTranslation.t;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (tag) {\n setFormData(tag);\n } else {\n setFormData({\n name: ''\n });\n }\n }, [tag]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === 'Escape') {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener('keydown', handleKeyDown);\n }\n return function () {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [isOpen]);\n var handleChange = function handleChange(e) {\n var _e$target = e.target,\n name = _e$target.name,\n value = _e$target.value;\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, value));\n });\n };\n var handleSubmit = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (formData.name.trim()) {\n _context.n = 1;\n break;\n }\n showErrorToast(t('errors.tagNameRequired', 'Tag name is required.'));\n return _context.a(2);\n case 1:\n setIsSubmitting(true);\n try {\n if (tag) {\n showSuccessToast(t('success.tagUpdated', 'Tag updated successfully!'));\n } else {\n showSuccessToast(t('success.tagCreated', 'Tag created successfully!'));\n }\n onSave(formData);\n handleClose();\n } catch (err) {\n showErrorToast(t('errors.failedToSaveTag', 'Failed to save tag.'));\n } finally {\n setIsSubmitting(false);\n }\n case 2:\n return _context.a(2);\n }\n }, _callee);\n }));\n return function handleSubmit() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleClose = function handleClose() {\n setIsClosing(true);\n setTimeout(function () {\n onClose();\n setIsClosing(false);\n }, 300);\n };\n if (!isOpen) return null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-16 left-0 right-0 bottom-0 flex items-start sm:items-center justify-center bg-gray-900 bg-opacity-80 z-40 transition-opacity duration-300 \".concat(isClosing ? 'opacity-0' : 'opacity-100')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: modalRef,\n className: \"bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-800 sm:rounded-lg sm:shadow-2xl w-full sm:max-w-md overflow-hidden transform transition-transform duration-300 \".concat(isClosing ? 'scale-95' : 'scale-100', \" h-screen sm:h-auto flex flex-col\"),\n style: {\n maxHeight: 'calc(100vh - 4rem)'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", {\n className: \"flex flex-col flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"fieldset\", {\n className: \"flex flex-col flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4 space-y-3 flex-1 text-sm overflow-y-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"py-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n id: \"tagName\",\n name: \"name\",\n value: formData.name,\n onChange: handleChange,\n required: true,\n className: \"block w-full text-xl font-semibold dark:bg-gray-800 text-black dark:text-white border-b-2 border-gray-200 dark:border-gray-900 focus:outline-none shadow-sm py-2\",\n placeholder: t('forms.tagNamePlaceholder', 'Enter tag name')\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 flex-shrink-0 border-t border-gray-200 dark:border-gray-700 flex justify-end space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleClose,\n className: \"px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-600 focus:outline-none transition duration-150 ease-in-out\"\n }, t('common.cancel', 'Cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleSubmit,\n disabled: isSubmitting,\n className: \"px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600 focus:outline-none transition duration-150 ease-in-out \".concat(isSubmitting ? 'opacity-50 cursor-not-allowed' : '')\n }, isSubmitting ? t('modals.submitting', 'Submitting...') : tag ? t('modals.updateTag', 'Update Tag') : t('modals.createTag', 'Create Tag'))))))));\n};\n_s(TagModal, \"DEEDWSBiCUuJwhCRMel9CbEhkTQ=\", false, function () {\n return [_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast, react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation];\n});\n_c = TagModal;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TagModal);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TagModal\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Tag/TagModal.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Tags.tsx":
-/*!**************************************!*\
- !*** ./frontend/components/Tags.tsx ***!
- \**************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TagIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/MagnifyingGlassIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/CheckIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/BookOpenIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _Tag_TagModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Tag/TagModal */ \"./frontend/components/Tag/TagModal.tsx\");\n/* harmony import */ var _utils_tagsService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/tagsService */ \"./frontend/utils/tagsService.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\nvar Tags = function Tags() {\n _s();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState2 = _slicedToArray(_useState, 2),\n tags = _useState2[0],\n setTags = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isTagModalOpen = _useState4[0],\n setIsTagModalOpen = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState6 = _slicedToArray(_useState5, 2),\n selectedTag = _useState6[0],\n setSelectedTag = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isConfirmDialogOpen = _useState8[0],\n setIsConfirmDialogOpen = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState0 = _slicedToArray(_useState9, 2),\n tagToDelete = _useState0[0],\n setTagToDelete = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState10 = _slicedToArray(_useState1, 2),\n searchQuery = _useState10[0],\n setSearchQuery = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState12 = _slicedToArray(_useState11, 2),\n isLoading = _useState12[0],\n setIsLoading = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n isError = _useState14[0],\n setIsError = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState16 = _slicedToArray(_useState15, 2),\n hoveredTagId = _useState16[0],\n setHoveredTagId = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({}),\n _useState18 = _slicedToArray(_useState17, 2),\n tagMetrics = _useState18[0],\n setTagMetrics = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState20 = _slicedToArray(_useState19, 2),\n metricsLoaded = _useState20[0],\n setMetricsLoaded = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState22 = _slicedToArray(_useState21, 2),\n cachedProjects = _useState22[0],\n setCachedProjects = _useState22[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadTags = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var fetchedTags, _yield$Promise$all, _yield$Promise$all2, projectsResponse, tasksResponse, notesResponse, allProjects, allTasks, allNotes, projectsData, tasksData, notesData, metricsMap, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n setIsLoading(true);\n _context.p = 1;\n _context.n = 2;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_3__.fetchTags)();\n case 2:\n fetchedTags = _context.v;\n setTags(fetchedTags);\n\n // Load all data at once for better performance\n _context.n = 3;\n return Promise.all([fetch('/api/projects'), fetch('/api/tasks'), fetch('/api/notes')]);\n case 3:\n _yield$Promise$all = _context.v;\n _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);\n projectsResponse = _yield$Promise$all2[0];\n tasksResponse = _yield$Promise$all2[1];\n notesResponse = _yield$Promise$all2[2];\n allProjects = [];\n allTasks = [];\n allNotes = [];\n if (!projectsResponse.ok) {\n _context.n = 5;\n break;\n }\n _context.n = 4;\n return projectsResponse.json();\n case 4:\n projectsData = _context.v;\n allProjects = projectsData.projects || projectsData || [];\n setCachedProjects(allProjects);\n case 5:\n if (!tasksResponse.ok) {\n _context.n = 7;\n break;\n }\n _context.n = 6;\n return tasksResponse.json();\n case 6:\n tasksData = _context.v;\n allTasks = tasksData.tasks || tasksData || [];\n case 7:\n if (!notesResponse.ok) {\n _context.n = 9;\n break;\n }\n _context.n = 8;\n return notesResponse.json();\n case 8:\n notesData = _context.v;\n allNotes = notesData || [];\n case 9:\n // Calculate metrics for all tags at once\n metricsMap = {};\n fetchedTags.forEach(function (tag) {\n var tasksCount = allTasks.filter(function (task) {\n return task.tags && task.tags.some(function (taskTag) {\n return taskTag.name === tag.name;\n });\n }).length;\n var notesCount = allNotes.filter(function (note) {\n return note.tags && note.tags.some(function (noteTag) {\n return noteTag.name === tag.name;\n });\n }).length;\n var projectsCount = allProjects.filter(function (project) {\n return project.tags && project.tags.some(function (projectTag) {\n return projectTag.name === tag.name;\n });\n }).length;\n metricsMap[tag.name] = {\n tasks: tasksCount,\n notes: notesCount,\n projects: projectsCount\n };\n });\n setTagMetrics(metricsMap);\n setMetricsLoaded(true);\n _context.n = 11;\n break;\n case 10:\n _context.p = 10;\n _t = _context.v;\n console.error('Failed to fetch tags:', _t);\n setIsError(true);\n case 11:\n _context.p = 11;\n setIsLoading(false);\n return _context.f(11);\n case 12:\n return _context.a(2);\n }\n }, _callee, null, [[1, 10, 11, 12]]);\n }));\n return function loadTags() {\n return _ref.apply(this, arguments);\n };\n }();\n loadTags();\n }, []);\n var handleDeleteTag = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (tagToDelete) {\n _context2.n = 1;\n break;\n }\n return _context2.a(2);\n case 1:\n _context2.p = 1;\n _context2.n = 2;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_3__.deleteTag)(tagToDelete.id);\n case 2:\n setTags(function (prev) {\n return prev.filter(function (tag) {\n return tag.id !== tagToDelete.id;\n });\n });\n // Remove the deleted tag from metrics as well\n setTagMetrics(function (prev) {\n var newMetrics = _objectSpread({}, prev);\n delete newMetrics[tagToDelete.name];\n return newMetrics;\n });\n setIsConfirmDialogOpen(false);\n setTagToDelete(null);\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Failed to delete tag:', _t2);\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 3]]);\n }));\n return function handleDeleteTag() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleEditTag = function handleEditTag(tag) {\n setSelectedTag(tag);\n setIsTagModalOpen(true);\n };\n var handleSaveTag = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(tagData) {\n var updatedTags, oldTag, newTag, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n if (!tagData.id) {\n _context3.n = 2;\n break;\n }\n _context3.n = 1;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_3__.updateTag)(tagData.id, tagData);\n case 1:\n updatedTags = tags.map(function (tag) {\n return tag.id === tagData.id ? tagData : tag;\n });\n\n // If tag name changed, update metrics key\n oldTag = tags.find(function (t) {\n return t.id === tagData.id;\n });\n if (oldTag && oldTag.name !== tagData.name) {\n setTagMetrics(function (prev) {\n var newMetrics = _objectSpread({}, prev);\n if (newMetrics[oldTag.name]) {\n newMetrics[tagData.name] = newMetrics[oldTag.name];\n delete newMetrics[oldTag.name];\n }\n return newMetrics;\n });\n }\n _context3.n = 4;\n break;\n case 2:\n _context3.n = 3;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_3__.createTag)(tagData);\n case 3:\n newTag = _context3.v;\n updatedTags = [].concat(_toConsumableArray(tags), [newTag]);\n // Initialize metrics for new tag\n setTagMetrics(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, newTag.name, {\n tasks: 0,\n notes: 0,\n projects: 0\n }));\n });\n case 4:\n setTags(updatedTags);\n setIsTagModalOpen(false);\n setSelectedTag(null);\n _context3.n = 6;\n break;\n case 5:\n _context3.p = 5;\n _t3 = _context3.v;\n console.error('Failed to save tag:', _t3);\n case 6:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 5]]);\n }));\n return function handleSaveTag(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n var openConfirmDialog = function openConfirmDialog(tag) {\n setTagToDelete(tag);\n setIsConfirmDialogOpen(true);\n };\n var closeConfirmDialog = function closeConfirmDialog() {\n setIsConfirmDialogOpen(false);\n setTagToDelete(null);\n };\n var filteredTags = tags.filter(function (tag) {\n return tag.name.toLowerCase().includes(searchQuery.toLowerCase());\n });\n\n // Group tags alphabetically by first letter\n var groupedTags = filteredTags.reduce(function (groups, tag) {\n var firstLetter = tag.name.charAt(0).toUpperCase();\n if (!groups[firstLetter]) {\n groups[firstLetter] = [];\n }\n groups[firstLetter].push(tag);\n return groups;\n }, {});\n\n // Sort the groups by letter and sort tags within each group\n var sortedGroupKeys = Object.keys(groupedTags).sort();\n sortedGroupKeys.forEach(function (letter) {\n groupedTags[letter].sort(function (a, b) {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n });\n if (isLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, \"Loading tags...\"));\n }\n if (isError) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-red-500 p-4\"\n }, \"Error loading tags.\");\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between mb-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-6 w-6 mr-2 text-gray-900 dark:text-white\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light text-gray-900 dark:text-white\"\n }, \"Tags\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-sm p-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 dark:text-gray-400 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n placeholder: \"Search tags...\",\n value: searchQuery,\n onChange: function onChange(e) {\n return setSearchQuery(e.target.value);\n },\n className: \"w-full bg-transparent border-none focus:ring-0 focus:outline-none dark:text-white\"\n }))), filteredTags.length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-700 dark:text-gray-300\"\n }, \"No tags found.\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-8\"\n }, sortedGroupKeys.map(function (letter) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: letter\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-semibold text-gray-900 dark:text-white mb-2\"\n }, letter), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", {\n className: \"border-gray-300 dark:border-gray-600\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\"\n }, groupedTags[letter].map(function (tag) {\n var metrics = tagMetrics[tag.name] || {\n tasks: 0,\n notes: 0,\n projects: 0\n };\n var hasItems = metrics.tasks > 0 || metrics.notes > 0 || metrics.projects > 0;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n key: tag.id,\n className: \"bg-white dark:bg-gray-900 shadow rounded-lg p-4\",\n onMouseEnter: function onMouseEnter() {\n return setHoveredTagId(tag.id || null);\n },\n onMouseLeave: function onMouseLeave() {\n return setHoveredTagId(null);\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-3 flex-grow\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_6__.Link, {\n to: \"/tag/\".concat(tag.id),\n className: \"text-md font-semibold text-gray-900 dark:text-gray-100 hover:underline\"\n }, tag.name), !metricsLoaded && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center text-sm text-gray-400 dark:text-gray-500\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"animate-spin rounded-full h-4 w-4 border-2 border-gray-300 border-t-blue-500\"\n })), metricsLoaded && hasItems && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-3 text-sm text-gray-600 dark:text-gray-400\"\n }, metrics.projects > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4 text-purple-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, metrics.projects)), metrics.tasks > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-4 w-4 text-blue-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, metrics.tasks)), metrics.notes > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-4 w-4 text-green-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, metrics.notes)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex space-x-2 ml-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return handleEditTag(tag);\n },\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none transition-opacity \".concat(hoveredTagId === tag.id ? 'opacity-100' : 'opacity-0'),\n \"aria-label\": \"Edit \".concat(tag.name),\n title: \"Edit \".concat(tag.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-4 w-4\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return openConfirmDialog(tag);\n },\n className: \"text-gray-500 hover:text-red-700 dark:hover:text-red-300 focus:outline-none transition-opacity \".concat(hoveredTagId === tag.id ? 'opacity-100' : 'opacity-0'),\n \"aria-label\": \"Delete \".concat(tag.name),\n title: \"Delete \".concat(tag.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-4 w-4\"\n })))));\n })));\n })), isTagModalOpen && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Tag_TagModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n isOpen: isTagModalOpen,\n onClose: function onClose() {\n return setIsTagModalOpen(false);\n },\n onSave: handleSaveTag,\n tag: selectedTag\n }), isConfirmDialogOpen && tagToDelete && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n title: \"Delete Tag\",\n message: \"Are you sure you want to delete the tag \\\"\".concat(tagToDelete.name, \"\\\"?\"),\n onConfirm: handleDeleteTag,\n onCancel: closeConfirmDialog\n })));\n};\n_s(Tags, \"NdQDjaaxlTeJCAc+kE0cCoojCJ4=\");\n_c = Tags;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Tags);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"Tags\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Tags.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/NewTask.tsx":
-/*!**********************************************!*\
- !*** ./frontend/components/Task/NewTask.tsx ***!
- \**********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js\");\n/* harmony import */ var _utils_profileService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/profileService */ \"./frontend/utils/profileService.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\nvar NewTask = function NewTask(_ref) {\n _s();\n var onTaskCreate = _ref.onTaskCreate;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState2 = _slicedToArray(_useState, 2),\n taskName = _useState2[0],\n setTaskName = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n showNameLengthHelper = _useState4[0],\n setShowNameLengthHelper = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState6 = _slicedToArray(_useState5, 2),\n taskIntelligenceEnabled = _useState6[0],\n setTaskIntelligenceEnabled = _useState6[1];\n var _useToast = (0,_components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)(),\n t = _useTranslation.t;\n\n // Fetch task intelligence setting when component mounts\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchTaskIntelligenceSetting = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var enabled, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_3__.getTaskIntelligenceEnabled)();\n case 1:\n enabled = _context.v;\n setTaskIntelligenceEnabled(enabled);\n _context.n = 3;\n break;\n case 2:\n _context.p = 2;\n _t = _context.v;\n console.error('Error fetching task intelligence setting:', _t);\n setTaskIntelligenceEnabled(true); // Default to enabled\n case 3:\n return _context.a(2);\n }\n }, _callee, null, [[0, 2]]);\n }));\n return function fetchTaskIntelligenceSetting() {\n return _ref2.apply(this, arguments);\n };\n }();\n fetchTaskIntelligenceSetting();\n }, []);\n var handleInputChange = function handleInputChange(event) {\n var value = event.target.value;\n setTaskName(value);\n\n // Show helper message for task name if it's too short (only if intelligence is enabled)\n if (taskIntelligenceEnabled) {\n var trimmedValue = value.trim();\n setShowNameLengthHelper(trimmedValue.length > 0 && trimmedValue.length < 10);\n }\n };\n var handleKeyDown = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(event) {\n var taskText, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (!(event.key === 'Enter' && taskName.trim())) {\n _context2.n = 4;\n break;\n }\n taskText = taskName.trim();\n setTaskName('');\n setShowNameLengthHelper(false); // Hide helper when creating task\n _context2.p = 1;\n _context2.n = 2;\n return onTaskCreate(taskText);\n case 2:\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Error creating task:', _t2);\n setTaskName(taskText);\n showErrorToast(t('errors.taskCreate', 'Failed to create task.'));\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 3]]);\n }));\n return function handleKeyDown(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between py-3 px-4 border-b border-gray-200 dark:border-gray-800 rounded-lg shadow-sm bg-white dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-xl text-gray-500 dark:text-gray-400 mr-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-6 w-6\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n value: taskName,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n className: \"font-medium text-sm text-gray-900 dark:text-gray-100 placeholder-gray-400 dark:placeholder-gray-600 bg-transparent dark:bg-transparent focus:outline-none focus:ring-0 w-full appearance-none\",\n placeholder: t('tasks.addNewTask', 'Προσθήκη Νέας Εργασίας')\n })), showNameLengthHelper && taskIntelligenceEnabled && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-2 p-3 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-700 rounded-md\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-shrink-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n className: \"h-4 w-4 text-blue-400 mt-0.5\",\n fill: \"currentColor\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\",\n clipRule: \"evenodd\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"ml-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm text-blue-800 dark:text-blue-200\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"strong\", null, t('task.nameHelper.title', 'Make it more descriptive!'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-blue-700 dark:text-blue-300 mt-1\"\n }, t('task.nameHelper.suggestion', 'Try adding more details like \"Call dentist to schedule cleaning appointment\" instead of just \"Call dentist\"'))))));\n};\n_s(NewTask, \"M9PKmhtZNefTL/Qa+Xk0MqagYrE=\", false, function () {\n return [_components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast, react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation];\n});\n_c = NewTask;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NewTask);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"NewTask\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/NewTask.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/NextTaskSuggestion.tsx":
-/*!*********************************************************!*\
- !*** ./frontend/components/Task/NextTaskSuggestion.tsx ***!
- \*********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/SparklesIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlayIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\nvar NextTaskSuggestion = function NextTaskSuggestion(_ref) {\n _s();\n var metrics = _ref.metrics,\n onTaskUpdate = _ref.onTaskUpdate,\n onClose = _ref.onClose;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isUpdating = _useState2[0],\n setIsUpdating = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),\n _useState4 = _slicedToArray(_useState3, 2),\n currentTaskIndex = _useState4[0],\n setCurrentTaskIndex = _useState4[1];\n\n // Check if there are any tasks in progress\n // If there are tasks in progress, don't show the suggestion\n if (metrics.tasks_in_progress.length > 0) {\n return null;\n }\n\n // Helper function to check if task is not started\n var isNotStarted = function isNotStarted(task) {\n return task.status === 'not_started' || task.status === 0;\n };\n\n // Get all available tasks in priority order:\n // 1. Today plan tasks (user's intentional selection for today)\n // 2. Due today tasks (time-based urgency)\n // 3. Suggested tasks from today page (algorithm recommendations)\n var todayPlanAvailable = (metrics.today_plan_tasks || []).filter(isNotStarted);\n var dueTodayAvailable = metrics.tasks_due_today.filter(isNotStarted);\n var suggestedAvailable = metrics.suggested_tasks.filter(isNotStarted);\n\n // Combine all available tasks with priority (intelligent selection)\n var allAvailableTasks = [].concat(_toConsumableArray(todayPlanAvailable.map(function (task) {\n return {\n task: task,\n source: 'today_plan'\n };\n })), _toConsumableArray(dueTodayAvailable.map(function (task) {\n return {\n task: task,\n source: 'due_today'\n };\n })), _toConsumableArray(suggestedAvailable.map(function (task) {\n return {\n task: task,\n source: 'suggested'\n };\n })));\n if (allAvailableTasks.length === 0) {\n return null;\n }\n\n // Get current task based on index, wrap around if needed\n var currentTaskData = allAvailableTasks[currentTaskIndex % allAvailableTasks.length];\n var suggestedTask = currentTaskData.task;\n var suggestionSource = currentTaskData.source;\n var handleStartTask = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var updatedTask, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (!(!suggestedTask || !suggestedTask.id)) {\n _context.n = 1;\n break;\n }\n return _context.a(2);\n case 1:\n setIsUpdating(true);\n _context.p = 2;\n // Universal rule: when setting status to in_progress, also add to today\n updatedTask = _objectSpread(_objectSpread({}, suggestedTask), {}, {\n status: 'in_progress',\n today: true\n });\n _context.n = 3;\n return onTaskUpdate(updatedTask);\n case 3:\n showSuccessToast(t('task.startedSuccessfully', 'Task started successfully!'));\n _context.n = 5;\n break;\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error('Error starting task:', _t);\n case 5:\n _context.p = 5;\n setIsUpdating(false);\n return _context.f(5);\n case 6:\n return _context.a(2);\n }\n }, _callee, null, [[2, 4, 5, 6]]);\n }));\n return function handleStartTask() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleGiveMeSomethingElse = function handleGiveMeSomethingElse() {\n setCurrentTaskIndex(function (prev) {\n return prev + 1;\n });\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6 p-4 bg-white dark:bg-gray-900 border-l-4 border-purple-500 rounded-lg shadow relative\"\n }, onClose && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: onClose,\n className: \"absolute top-2 right-2 p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors\",\n \"aria-label\": t('common.close', 'Close')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-6 w-6 text-purple-500 dark:text-purple-400 mr-3 flex-shrink-0 mt-0.5\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 pr-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-700 dark:text-gray-300 font-medium mb-2 break-words\"\n }, suggestionSource === 'today_plan' && t('nextTask.suggestionTodayPlan', 'Since there is nothing in progress, what about starting with this task from your today plan'), suggestionSource === 'due_today' && t('nextTask.suggestionDueToday', 'Since there is nothing in progress, what about starting with this task due today'), suggestionSource === 'suggested' && t('nextTask.suggestionSuggested', 'Since there is nothing in progress, what about starting with this suggested task')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-gray-50 dark:bg-gray-800 rounded-md p-3 mb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-900 dark:text-gray-100 font-medium break-words\"\n }, suggestedTask.name), suggestedTask.due_date && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm text-gray-500 dark:text-gray-400 mt-1\"\n }, t('forms.task.labels.dueDate', 'Due'), \": \", new Date(suggestedTask.due_date).toLocaleDateString())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleStartTask,\n disabled: isUpdating,\n className: \"inline-flex items-center px-4 py-2 bg-green-600 hover:bg-green-700 disabled:bg-green-400 text-white text-sm font-medium rounded-md transition-colors\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4 mr-2\"\n }), isUpdating ? t('nextTask.starting', 'Starting...') : t('nextTask.letsDoIt', \"Yes, let's do it!\")), allAvailableTasks.length > 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleGiveMeSomethingElse,\n disabled: isUpdating,\n className: \"inline-flex items-center px-4 py-2 bg-gray-600 hover:bg-gray-700 disabled:bg-gray-400 text-white text-sm font-medium rounded-md transition-colors\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4 mr-2\"\n }), t('nextTask.giveMeSomethingElse', 'Give me something else'))))));\n};\n_s(NextTaskSuggestion, \"P9uSiP2YeVGrxB7ECIG2tD2tmYM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast];\n});\n_c = NextTaskSuggestion;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NextTaskSuggestion);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"NextTaskSuggestion\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/NextTaskSuggestion.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/RecurrenceInput.tsx":
-/*!******************************************************!*\
- !*** ./frontend/components/Task/RecurrenceInput.tsx ***!
- \******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\nvar RecurrenceInput = function RecurrenceInput(_ref) {\n _s();\n var recurrenceType = _ref.recurrenceType,\n recurrenceInterval = _ref.recurrenceInterval,\n recurrenceEndDate = _ref.recurrenceEndDate,\n recurrenceWeekday = _ref.recurrenceWeekday,\n recurrenceMonthDay = _ref.recurrenceMonthDay,\n recurrenceWeekOfMonth = _ref.recurrenceWeekOfMonth,\n completionBased = _ref.completionBased,\n _onChange = _ref.onChange,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isChildTask = _ref.isChildTask,\n isChildTask = _ref$isChildTask === void 0 ? false : _ref$isChildTask,\n _ref$parentTaskLoadin = _ref.parentTaskLoading,\n parentTaskLoading = _ref$parentTaskLoadin === void 0 ? false : _ref$parentTaskLoadin,\n onEditParent = _ref.onEditParent,\n onParentRecurrenceChange = _ref.onParentRecurrenceChange;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n editingParentRecurrence = _useState2[0],\n setEditingParentRecurrence = _useState2[1];\n var weekdays = [{\n value: 0,\n label: t('weekdays.sunday', 'Sunday')\n }, {\n value: 1,\n label: t('weekdays.monday', 'Monday')\n }, {\n value: 2,\n label: t('weekdays.tuesday', 'Tuesday')\n }, {\n value: 3,\n label: t('weekdays.wednesday', 'Wednesday')\n }, {\n value: 4,\n label: t('weekdays.thursday', 'Thursday')\n }, {\n value: 5,\n label: t('weekdays.friday', 'Friday')\n }, {\n value: 6,\n label: t('weekdays.saturday', 'Saturday')\n }];\n var weekOfMonthOptions = [{\n value: 1,\n label: t('recurrence.firstWeek', 'First')\n }, {\n value: 2,\n label: t('recurrence.secondWeek', 'Second')\n }, {\n value: 3,\n label: t('recurrence.thirdWeek', 'Third')\n }, {\n value: 4,\n label: t('recurrence.fourthWeek', 'Fourth')\n }, {\n value: 5,\n label: t('recurrence.lastWeek', 'Last')\n }];\n var renderRecurrenceTypeSelect = function renderRecurrenceTypeSelect(customOnChange, isDisabled) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.recurrenceType', 'Repeat')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n value: recurrenceType,\n onChange: function onChange(e) {\n return (customOnChange || _onChange)('recurrence_type', e.target.value);\n },\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: isDisabled\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"none\"\n }, t('recurrence.none', 'No repeat')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"daily\"\n }, t('recurrence.daily', 'Daily')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"weekly\"\n }, t('recurrence.weekly', 'Weekly')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"monthly\"\n }, t('recurrence.monthly', 'Monthly')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"monthly_weekday\"\n }, t('recurrence.monthlyWeekday', 'Monthly on weekday')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"monthly_last_day\"\n }, t('recurrence.monthlyLastDay', 'Monthly on last day'))));\n };\n var renderIntervalInput = function renderIntervalInput(customOnChange, isDisabled) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.recurrenceInterval', 'Every')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"number\",\n min: \"1\",\n max: \"999\",\n value: recurrenceInterval || 1,\n onChange: function onChange(e) {\n return (customOnChange || _onChange)('recurrence_interval', parseInt(e.target.value));\n },\n className: \"block w-20 border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: isDisabled\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-600 dark:text-gray-400\"\n }, recurrenceType === 'daily' && t('recurrence.days', 'days'), recurrenceType === 'weekly' && t('recurrence.weeks', 'weeks'), (recurrenceType === 'monthly' || recurrenceType === 'monthly_weekday' || recurrenceType === 'monthly_last_day') && t('recurrence.months', 'months'))));\n };\n var renderWeekdaySelect = function renderWeekdaySelect(customOnChange, isDisabled) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.weekday', 'On day')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n value: recurrenceWeekday !== undefined ? recurrenceWeekday : '',\n onChange: function onChange(e) {\n return (customOnChange || _onChange)('recurrence_weekday', e.target.value ? parseInt(e.target.value) : null);\n },\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: isDisabled\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"\"\n }, t('recurrence.anyDay', 'Any day')), weekdays.map(function (day) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n key: day.value,\n value: day.value\n }, day.label);\n })));\n };\n var renderMonthDayInput = function renderMonthDayInput(customOnChange, isDisabled) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.monthDay', 'Day of month')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"number\",\n min: \"1\",\n max: \"31\",\n value: recurrenceMonthDay || '',\n onChange: function onChange(e) {\n return (customOnChange || _onChange)('recurrence_month_day', e.target.value ? parseInt(e.target.value) : null);\n },\n placeholder: t('recurrence.monthDayPlaceholder', 'Leave empty for current day'),\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: isDisabled\n }));\n };\n var renderMonthlyWeekdayInputs = function renderMonthlyWeekdayInputs() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-2 gap-4 mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.weekOfMonth', 'Week of month')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n value: recurrenceWeekOfMonth || 1,\n onChange: function onChange(e) {\n return _onChange('recurrence_week_of_month', parseInt(e.target.value));\n },\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\"\n }, weekOfMonthOptions.map(function (option) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n key: option.value,\n value: option.value\n }, option.label);\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.weekday', 'Weekday')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n value: recurrenceWeekday || 1,\n onChange: function onChange(e) {\n return _onChange('recurrence_weekday', parseInt(e.target.value));\n },\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\"\n }, weekdays.map(function (day) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n key: day.value,\n value: day.value\n }, day.label);\n }))));\n };\n var renderEndDateInput = function renderEndDateInput(customOnChange, isDisabled) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.recurrenceEndDate', 'End date (optional)')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"date\",\n value: recurrenceEndDate || '',\n onChange: function onChange(e) {\n return (customOnChange || _onChange)('recurrence_end_date', e.target.value || null);\n },\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: isDisabled\n }));\n };\n var renderCompletionBasedToggle = function renderCompletionBasedToggle() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"checkbox\",\n checked: completionBased,\n onChange: function onChange(e) {\n return _onChange('completion_based', e.target.checked);\n },\n className: \"rounded border-gray-300 text-blue-600 shadow-sm focus:border-blue-300 focus:ring focus:ring-blue-200 focus:ring-opacity-50\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-700 dark:text-gray-300\"\n }, t('forms.task.labels.completionBased', 'Repeat after completion'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 mt-1\"\n }, t('forms.task.completionBasedHelp', 'If checked, the next task will be created based on completion date instead of due date')));\n };\n\n // Show message for child tasks\n if (isChildTask && parentTaskLoading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3 border-t border-gray-200 dark:border-gray-700 pt-4 mt-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-sm font-medium text-gray-900 dark:text-gray-100 mb-4\"\n }, t('forms.task.recurrenceSettings', 'Recurrence Settings')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-sm text-gray-600 dark:text-gray-400\"\n }, \"Loading parent task recurrence settings...\"));\n }\n if (isChildTask) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-sm font-medium text-gray-900 dark:text-gray-100 mb-4\"\n }, t('forms.task.recurrenceSettings', 'Recurrence Settings')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-blue-50 dark:bg-blue-900/30 border border-blue-200 dark:border-blue-800 rounded-md p-3 mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-sm text-blue-800 dark:text-blue-200\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"strong\", null, \"Recurring Task Instance\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"mt-1\"\n }, \"This task was generated from a recurring task. The recurrence settings shown below are inherited from the original task and cannot be edited here.\"), onParentRecurrenceChange && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return setEditingParentRecurrence(!editingParentRecurrence);\n },\n className: \"mt-2 inline-flex items-center px-3 py-1 border text-xs font-medium rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 \".concat(editingParentRecurrence ? 'border-red-300 dark:border-red-600 text-red-700 dark:text-red-300 bg-red-50 dark:bg-red-900/50 hover:bg-red-100 dark:hover:bg-red-800/50' : 'border-blue-300 dark:border-blue-600 text-blue-700 dark:text-blue-300 bg-white dark:bg-blue-900/50 hover:bg-blue-50 dark:hover:bg-blue-800/50')\n }, editingParentRecurrence ? 'Cancel Edit' : 'Edit Parent Recurrence'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: editingParentRecurrence ? '' : 'opacity-60 pointer-events-none'\n }, editingParentRecurrence && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 p-2 bg-yellow-50 dark:bg-yellow-900/30 border border-yellow-200 dark:border-yellow-800 rounded-md\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xs text-yellow-800 dark:text-yellow-200\"\n }, \"\\u26A0\\uFE0F You are editing the parent task's recurrence settings. Changes will affect all future instances of this recurring task.\")), recurrenceType === 'none' ? renderRecurrenceTypeSelect(editingParentRecurrence ? onParentRecurrenceChange : undefined, !editingParentRecurrence) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, renderRecurrenceTypeSelect(editingParentRecurrence ? onParentRecurrenceChange : undefined, !editingParentRecurrence), renderIntervalInput(editingParentRecurrence ? onParentRecurrenceChange : undefined, !editingParentRecurrence), (recurrenceType === 'weekly' || recurrenceType === 'monthly_weekday') && renderWeekdaySelect(editingParentRecurrence ? onParentRecurrenceChange : undefined, !editingParentRecurrence), recurrenceType === 'monthly' && renderMonthDayInput(editingParentRecurrence ? onParentRecurrenceChange : undefined, !editingParentRecurrence), recurrenceType === 'monthly_weekday' && renderMonthlyWeekdayInputs(), renderEndDateInput(editingParentRecurrence ? onParentRecurrenceChange : undefined, !editingParentRecurrence), renderCompletionBasedToggle())));\n }\n if (recurrenceType === 'none') {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, renderRecurrenceTypeSelect());\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-sm font-medium text-gray-900 dark:text-gray-100 mb-4\"\n }, t('forms.task.recurrenceSettings', 'Recurrence Settings')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-3 gap-4 mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.recurrenceType', 'Repeat')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", {\n value: recurrenceType,\n onChange: function onChange(e) {\n return _onChange('recurrence_type', e.target.value);\n },\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: disabled\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"none\"\n }, t('recurrence.none', 'No repeat')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"daily\"\n }, t('recurrence.daily', 'Daily')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"weekly\"\n }, t('recurrence.weekly', 'Weekly')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"monthly\"\n }, t('recurrence.monthly', 'Monthly')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"monthly_weekday\"\n }, t('recurrence.monthlyWeekday', 'Monthly on weekday')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"monthly_last_day\"\n }, t('recurrence.monthlyLastDay', 'Monthly on last day')))), (recurrenceType === 'daily' || recurrenceType === 'weekly' || recurrenceType === 'monthly' || recurrenceType === 'monthly_weekday' || recurrenceType === 'monthly_last_day') && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.recurrenceInterval', 'Every')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"number\",\n min: \"1\",\n max: \"999\",\n value: recurrenceInterval || 1,\n onChange: function onChange(e) {\n return _onChange('recurrence_interval', parseInt(e.target.value));\n },\n className: \"block w-20 border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: disabled\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-600 dark:text-gray-400\"\n }, recurrenceType === 'daily' && t('recurrence.days', 'days'), recurrenceType === 'weekly' && t('recurrence.weeks', 'weeks'), (recurrenceType === 'monthly' || recurrenceType === 'monthly_weekday' || recurrenceType === 'monthly_last_day') && t('recurrence.months', 'months')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.recurrenceEndDate', 'End date (optional)')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"date\",\n value: recurrenceEndDate || '',\n onChange: function onChange(e) {\n return _onChange('recurrence_end_date', e.target.value || null);\n },\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n disabled: disabled\n }))), recurrenceType === 'weekly' && renderWeekdaySelect(), recurrenceType === 'monthly' && renderMonthDayInput(), recurrenceType === 'monthly_weekday' && renderMonthlyWeekdayInputs(), renderCompletionBasedToggle());\n};\n_s(RecurrenceInput, \"Q4sFGwi6uO4mbRSYAok5GyB1wOY=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = RecurrenceInput;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RecurrenceInput);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"RecurrenceInput\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/RecurrenceInput.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/SimplifiedTaskModal.tsx":
-/*!**********************************************************!*\
- !*** ./frontend/components/Task/SimplifiedTaskModal.tsx ***!
- \**********************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _utils_inboxService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/inboxService */ \"./frontend/utils/inboxService.ts\");\n/* harmony import */ var _utils_authUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/authUtils */ \"./frontend/utils/authUtils.ts\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js\");\n/* harmony import */ var _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/useModalEvents */ \"./frontend/hooks/useModalEvents.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n// import UrlPreview from \"../Shared/UrlPreview\";\n// import { UrlTitleResult } from \"../../utils/urlService\";\n\nvar SimplifiedTaskModal = function SimplifiedTaskModal(_ref) {\n _s();\n var isOpen = _ref.isOpen,\n onClose = _ref.onClose,\n onSave = _ref.onSave,\n _ref$initialText = _ref.initialText,\n initialText = _ref$initialText === void 0 ? \"\" : _ref$initialText,\n _ref$editMode = _ref.editMode,\n editMode = _ref$editMode === void 0 ? false : _ref$editMode,\n onEdit = _ref.onEdit;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialText),\n _useState2 = _slicedToArray(_useState, 2),\n inputText = _useState2[0],\n setInputText = _useState2[1];\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isClosing = _useState4[0],\n setIsClosing = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isSaving = _useState6[0],\n setIsSaving = _useState6[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var nameInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('inbox'),\n _useState8 = _slicedToArray(_useState7, 2),\n saveMode = _useState8[0],\n setSaveMode = _useState8[1];\n // const [urlPreview, setUrlPreview] = useState(null);\n\n // Dispatch global modal events to hide floating + button\n (0,_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents)(isOpen);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (isOpen && nameInputRef.current) {\n nameInputRef.current.focus();\n }\n }, [isOpen]);\n\n // Prevent body scroll when modal is open\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = 'unset';\n }\n\n // Cleanup function to restore scroll when component unmounts\n return function () {\n document.body.style.overflow = 'unset';\n };\n }, [isOpen]);\n var handleChange = function handleChange(e) {\n setInputText(e.target.value);\n };\n var handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var newTask, _t, _t2, _t3;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (!(!inputText.trim() || isSaving)) {\n _context.n = 1;\n break;\n }\n return _context.a(2);\n case 1:\n setIsSaving(true);\n _context.p = 2;\n if (!(editMode && onEdit)) {\n _context.n = 4;\n break;\n }\n _context.n = 3;\n return onEdit(inputText.trim());\n case 3:\n setIsClosing(true);\n setTimeout(function () {\n onClose();\n setIsClosing(false);\n }, 300);\n return _context.a(2);\n case 4:\n if (!(saveMode === 'task')) {\n _context.n = 10;\n break;\n }\n newTask = {\n name: inputText.trim(),\n status: \"not_started\"\n };\n _context.p = 5;\n _context.n = 6;\n return onSave(newTask);\n case 6:\n showSuccessToast(t('task.createSuccess'));\n setInputText('');\n handleClose();\n _context.n = 9;\n break;\n case 7:\n _context.p = 7;\n _t = _context.v;\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_4__.isAuthError)(_t)) {\n _context.n = 8;\n break;\n }\n return _context.a(2);\n case 8:\n throw _t;\n case 9:\n _context.n = 13;\n break;\n case 10:\n _context.p = 10;\n _context.n = 11;\n return (0,_utils_inboxService__WEBPACK_IMPORTED_MODULE_3__.createInboxItemWithStore)(inputText.trim());\n case 11:\n showSuccessToast(t('inbox.itemAdded'));\n handleClose();\n _context.n = 13;\n break;\n case 12:\n _context.p = 12;\n _t2 = _context.v;\n console.error('Failed to create inbox item:', _t2);\n showErrorToast(t('inbox.addError'));\n setIsSaving(false);\n case 13:\n _context.n = 15;\n break;\n case 14:\n _context.p = 14;\n _t3 = _context.v;\n console.error('Failed to save:', _t3);\n if (editMode) {\n showErrorToast(t('inbox.updateError'));\n } else {\n showErrorToast(saveMode === 'task' ? t('task.createError') : t('inbox.addError'));\n }\n case 15:\n _context.p = 15;\n setIsSaving(false);\n return _context.f(15);\n case 16:\n return _context.a(2);\n }\n }, _callee, null, [[10, 12], [5, 7], [2, 14, 15, 16]]);\n })), [inputText, isSaving, editMode, onEdit, saveMode, onSave, showSuccessToast, showErrorToast, t, onClose]);\n var handleClose = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n setIsClosing(true);\n setTimeout(function () {\n onClose();\n if (!editMode) {\n setInputText(\"\");\n setSaveMode('inbox');\n }\n setIsClosing(false);\n }, 300);\n }, [onClose, editMode]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return function () {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === \"Escape\") {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener(\"keydown\", handleKeyDown);\n }\n return function () {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [isOpen, handleClose]); // Only depend on isOpen and handleClose\n\n if (!isOpen) return null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-16 left-0 right-0 bottom-0 sm:top-16 flex items-start sm:items-center justify-center bg-gray-900 bg-opacity-80 z-[45] transition-opacity duration-300 \".concat(isClosing ? \"opacity-0\" : \"opacity-100\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: modalRef,\n className: \"relative bg-white dark:bg-gray-800 border-0 sm:border border-gray-200 dark:border-gray-800 sm:rounded-lg sm:shadow-2xl w-full h-full sm:h-auto sm:max-w-2xl md:max-w-3xl transform transition-transform duration-300 \".concat(isClosing ? \"scale-95\" : \"scale-100\", \" flex flex-col\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleClose,\n className: \"absolute top-4 right-4 z-10 p-2 text-gray-600 hover:text-gray-800 dark:text-gray-300 dark:hover:text-gray-100 bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 rounded-full shadow-lg transition-colors duration-200 sm:hidden\",\n \"aria-label\": \"Close\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-6 w-6\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 flex items-center justify-center sm:block sm:flex-none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full p-6 px-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col sm:flex-row sm:items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: nameInputRef,\n type: \"text\",\n name: \"text\",\n value: inputText,\n onChange: handleChange,\n required: true,\n className: \"flex-1 text-xl font-semibold dark:bg-gray-800 text-black dark:text-white border-b-2 border-gray-200 dark:border-gray-900 focus:outline-none shadow-sm py-2\",\n placeholder: t('inbox.captureThought'),\n onKeyDown: function onKeyDown(e) {\n if (e.key === 'Enter' && !e.shiftKey && !isSaving) {\n e.preventDefault();\n handleSubmit();\n }\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleSubmit,\n disabled: !inputText.trim() || isSaving,\n className: \"mt-4 sm:mt-0 sm:ml-4 inline-flex justify-center px-4 py-2 text-sm font-medium text-white rounded-md shadow-sm focus:outline-none \".concat(inputText.trim() && !isSaving ? \"bg-blue-600 hover:bg-blue-700\" : \"bg-blue-400 cursor-not-allowed\")\n }, isSaving ? t('common.saving') : t('common.save')))))));\n};\n_s(SimplifiedTaskModal, \"XLYb9EgfK5yQXYZv9BiXpRtvtDs=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation, _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_1__.useToast, _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents];\n});\n_c = SimplifiedTaskModal;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SimplifiedTaskModal);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"SimplifiedTaskModal\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/SimplifiedTaskModal.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskActions.tsx":
-/*!**************************************************!*\
- !*** ./frontend/components/Task/TaskActions.tsx ***!
- \**************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/TrashIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar TaskActions = function TaskActions(_ref) {\n _s();\n var taskId = _ref.taskId,\n onDelete = _ref.onDelete,\n onSave = _ref.onSave,\n onCancel = _ref.onCancel;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 flex-shrink-0 flex justify-end space-x-2\"\n }, taskId && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: onDelete,\n className: \"p-2 bg-red-600 text-white rounded hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-600 flex items-center justify-center\",\n title: t('common.delete', 'Delete'),\n \"aria-label\": t('common.delete', 'Delete')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: onCancel,\n className: \"px-3 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-200 rounded hover:bg-gray-300 dark:hover:bg-gray-600 text-sm\"\n }, t('common.cancel', 'Cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: onSave,\n className: \"px-3 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600 text-sm\"\n }, t('common.save', 'Save')));\n};\n_s(TaskActions, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskActions;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskActions);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskActions\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskActions.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskForm/TaskContentSection.tsx":
-/*!******************************************************************!*\
- !*** ./frontend/components/Task/TaskForm/TaskContentSection.tsx ***!
- \******************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\nvar TaskContentSection = function TaskContentSection(_ref) {\n _s();\n var taskId = _ref.taskId,\n value = _ref.value,\n onChange = _ref.onChange;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"px-4 py-4 border-b border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-sm font-medium text-gray-900 dark:text-gray-100 mb-3\"\n }, t('forms.noteContent', 'Content')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textarea\", {\n id: \"task_note_\".concat(taskId),\n name: \"note\",\n rows: 3,\n value: value,\n onChange: onChange,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 shadow-sm p-3 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n placeholder: t('forms.noteContentPlaceholder', 'Add task description...')\n }));\n};\n_s(TaskContentSection, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskContentSection;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskContentSection);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskContentSection\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskForm/TaskContentSection.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskForm/TaskMetadataSection.tsx":
-/*!*******************************************************************!*\
- !*** ./frontend/components/Task/TaskForm/TaskMetadataSection.tsx ***!
- \*******************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _Shared_PriorityDropdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Shared/PriorityDropdown */ \"./frontend/components/Shared/PriorityDropdown.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar TaskMetadataSection = function TaskMetadataSection(_ref) {\n _s();\n var priority = _ref.priority,\n dueDate = _ref.dueDate,\n taskId = _ref.taskId,\n onStatusChange = _ref.onStatusChange,\n onPriorityChange = _ref.onPriorityChange,\n onDueDateChange = _ref.onDueDateChange;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.priority', 'Priority')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_PriorityDropdown__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n value: priority,\n onChange: onPriorityChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2\"\n }, t('forms.task.labels.dueDate', 'Due Date')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"date\",\n id: \"task_due_date_\".concat(taskId),\n name: \"due_date\",\n value: dueDate,\n onChange: onDueDateChange,\n className: \"block w-full focus:outline-none focus:ring-2 focus:ring-blue-500 shadow-sm px-3 py-2 text-sm bg-white dark:bg-gray-900 border border-gray-300 dark:border-gray-600 rounded-md text-gray-900 dark:text-gray-100\"\n })));\n};\n_s(TaskMetadataSection, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskMetadataSection;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskMetadataSection);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskMetadataSection\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskForm/TaskMetadataSection.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskForm/TaskProjectSection.tsx":
-/*!******************************************************************!*\
- !*** ./frontend/components/Task/TaskForm/TaskProjectSection.tsx ***!
- \******************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\nvar TaskProjectSection = function TaskProjectSection(_ref) {\n _s();\n var newProjectName = _ref.newProjectName,\n onProjectSearch = _ref.onProjectSearch,\n dropdownOpen = _ref.dropdownOpen,\n filteredProjects = _ref.filteredProjects,\n onProjectSelection = _ref.onProjectSelection,\n onCreateProject = _ref.onCreateProject,\n isCreatingProject = _ref.isCreatingProject;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n placeholder: t('forms.task.projectSearchPlaceholder', 'Search or create a project...'),\n value: newProjectName,\n onChange: onProjectSearch,\n className: \"block w-full border border-gray-300 dark:border-gray-600 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 shadow-sm px-3 py-2 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\"\n }), dropdownOpen && newProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute mt-1 bg-white dark:bg-gray-800 shadow-lg rounded-md w-full z-50 border border-gray-200 dark:border-gray-700\"\n }, filteredProjects.length > 0 ? filteredProjects.map(function (project) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n key: project.id,\n type: \"button\",\n onClick: function onClick() {\n return onProjectSelection(project);\n },\n className: \"block w-full text-gray-700 dark:text-gray-300 text-left px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\"\n }, project.name);\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"px-4 py-2 text-gray-500 dark:text-gray-400\"\n }, t('forms.task.noMatchingProjects', 'No matching projects')), newProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: onCreateProject,\n disabled: isCreatingProject,\n className: \"block w-full text-left px-4 py-2 bg-blue-500 text-white hover:bg-blue-600 transition-colors\"\n }, isCreatingProject ? t('forms.task.creatingProject', 'Creating...') : t('forms.task.createProject', '+ Create') + \" \\\"\".concat(newProjectName, \"\\\"\"))));\n};\n_s(TaskProjectSection, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskProjectSection;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskProjectSection);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskProjectSection\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskForm/TaskProjectSection.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskForm/TaskRecurrenceSection.tsx":
-/*!*********************************************************************!*\
- !*** ./frontend/components/Task/TaskForm/TaskRecurrenceSection.tsx ***!
- \*********************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _RecurrenceInput__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../RecurrenceInput */ \"./frontend/components/Task/RecurrenceInput.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\n\nvar TaskRecurrenceSection = function TaskRecurrenceSection(_ref) {\n var formData = _ref.formData,\n parentTask = _ref.parentTask,\n parentTaskLoading = _ref.parentTaskLoading,\n onRecurrenceChange = _ref.onRecurrenceChange,\n onEditParent = _ref.onEditParent,\n onParentRecurrenceChange = _ref.onParentRecurrenceChange;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_RecurrenceInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n recurrenceType: parentTask ? parentTask.recurrence_type || 'none' : formData.recurrence_type || 'none',\n recurrenceInterval: parentTask ? parentTask.recurrence_interval || 1 : formData.recurrence_interval || 1,\n recurrenceEndDate: parentTask ? parentTask.recurrence_end_date : formData.recurrence_end_date,\n recurrenceWeekday: parentTask ? parentTask.recurrence_weekday : formData.recurrence_weekday,\n recurrenceMonthDay: parentTask ? parentTask.recurrence_month_day : formData.recurrence_month_day,\n recurrenceWeekOfMonth: parentTask ? parentTask.recurrence_week_of_month : formData.recurrence_week_of_month,\n completionBased: parentTask ? parentTask.completion_based || false : formData.completion_based || false,\n onChange: onRecurrenceChange,\n disabled: !!parentTask,\n isChildTask: !!parentTask,\n parentTaskLoading: parentTaskLoading,\n onEditParent: parentTask ? onEditParent : undefined,\n onParentRecurrenceChange: parentTask ? onParentRecurrenceChange : undefined\n });\n};\n_c = TaskRecurrenceSection;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskRecurrenceSection);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskRecurrenceSection\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskForm/TaskRecurrenceSection.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskForm/TaskTagsSection.tsx":
-/*!***************************************************************!*\
- !*** ./frontend/components/Task/TaskForm/TaskTagsSection.tsx ***!
- \***************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _Tag_TagInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Tag/TagInput */ \"./frontend/components/Tag/TagInput.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar TaskTagsSection = function TaskTagsSection(_ref) {\n _s();\n var tags = _ref.tags,\n onTagsChange = _ref.onTagsChange,\n availableTags = _ref.availableTags;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Tag_TagInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onTagsChange: onTagsChange,\n initialTags: tags,\n availableTags: availableTags\n });\n};\n_s(TaskTagsSection, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskTagsSection;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskTagsSection);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskTagsSection\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskForm/TaskTagsSection.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskForm/TaskTitleSection.tsx":
-/*!****************************************************************!*\
- !*** ./frontend/components/Task/TaskForm/TaskTitleSection.tsx ***!
- \****************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\nvar TaskTitleSection = function TaskTitleSection(_ref) {\n _s();\n var taskId = _ref.taskId,\n value = _ref.value,\n onChange = _ref.onChange,\n taskAnalysis = _ref.taskAnalysis,\n taskIntelligenceEnabled = _ref.taskIntelligenceEnabled;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"px-4 py-4 border-b border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n id: \"task_name_\".concat(taskId),\n name: \"name\",\n value: value,\n onChange: onChange,\n required: true,\n className: \"block w-full text-xl font-semibold dark:bg-gray-800 text-black dark:text-white border-none focus:outline-none focus:border-none focus:ring-0 shadow-sm py-2\",\n placeholder: t('forms.task.namePlaceholder', 'Add Task Name')\n }), taskAnalysis && taskAnalysis.isVague && taskIntelligenceEnabled && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-2 p-3 rounded-md border \".concat(taskAnalysis.severity === 'high' ? 'bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-700' : taskAnalysis.severity === 'medium' ? 'bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-700' : 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-700')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-shrink-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n className: \"h-4 w-4 mt-0.5 \".concat(taskAnalysis.severity === 'high' ? 'text-red-400' : taskAnalysis.severity === 'medium' ? 'text-yellow-400' : 'text-blue-400'),\n fill: \"currentColor\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\",\n clipRule: \"evenodd\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"ml-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm \".concat(taskAnalysis.severity === 'high' ? 'text-red-800 dark:text-red-200' : taskAnalysis.severity === 'medium' ? 'text-yellow-800 dark:text-yellow-200' : 'text-blue-800 dark:text-blue-200')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"strong\", null, taskAnalysis.reason === 'short' && t('task.nameHelper.short', 'Make it more descriptive!'), taskAnalysis.reason === 'no_verb' && t('task.nameHelper.noVerb', 'Add an action verb!'), taskAnalysis.reason === 'vague_pattern' && t('task.nameHelper.vague', 'Be more specific!'))), taskAnalysis.suggestion && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs mt-1 \".concat(taskAnalysis.severity === 'high' ? 'text-red-700 dark:text-red-300' : taskAnalysis.severity === 'medium' ? 'text-yellow-700 dark:text-yellow-300' : 'text-blue-700 dark:text-blue-300')\n }, t(taskAnalysis.suggestion, taskAnalysis.suggestion))))));\n};\n_s(TaskTitleSection, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskTitleSection;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskTitleSection);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskTitleSection\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskForm/TaskTitleSection.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskHeader.tsx":
-/*!*************************************************!*\
- !*** ./frontend/components/Task/TaskHeader.tsx ***!
- \*************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlayIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/TagIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _TaskPriorityIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TaskPriorityIcon */ \"./frontend/components/Task/TaskPriorityIcon.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\n\n\n\n\nvar TaskHeader = function TaskHeader(_ref) {\n _s();\n var task = _ref.task,\n project = _ref.project,\n onTaskClick = _ref.onTaskClick,\n onToggleCompletion = _ref.onToggleCompletion,\n _ref$hideProjectName = _ref.hideProjectName,\n hideProjectName = _ref$hideProjectName === void 0 ? false : _ref$hideProjectName,\n onToggleToday = _ref.onToggleToday,\n onTaskUpdate = _ref.onTaskUpdate,\n _ref$isOverdue = _ref.isOverdue,\n isOverdue = _ref$isOverdue === void 0 ? false : _ref$isOverdue;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var formatDueDate = function formatDueDate(dueDate) {\n var today = new Date().toISOString().split('T')[0];\n var tomorrow = new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString().split('T')[0];\n var yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString().split('T')[0];\n if (dueDate === today) return t('dateIndicators.today', 'TODAY');\n if (dueDate === tomorrow) return t('dateIndicators.tomorrow', 'TOMORROW');\n if (dueDate === yesterday) return t('dateIndicators.yesterday', 'YESTERDAY');\n return new Date(dueDate).toLocaleDateString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n });\n };\n var formatRecurrence = function formatRecurrence(recurrenceType) {\n switch (recurrenceType) {\n case 'daily':\n return t('recurrence.daily', 'Daily');\n case 'weekly':\n return t('recurrence.weekly', 'Weekly');\n case 'monthly':\n return t('recurrence.monthly', 'Monthly');\n case 'monthly_weekday':\n return t('recurrence.monthlyWeekday', 'Monthly');\n case 'monthly_last_day':\n return t('recurrence.monthlyLastDay', 'Monthly');\n default:\n return t('recurrence.recurring', 'Recurring');\n }\n };\n var handleTodayToggle = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {\n var _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n e.stopPropagation(); // Prevent opening task modal\n if (!(onToggleToday && task.id)) {\n _context.n = 4;\n break;\n }\n _context.p = 1;\n _context.n = 2;\n return onToggleToday(task.id);\n case 2:\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n console.error('Failed to toggle today status:', _t);\n case 4:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3]]);\n }));\n return function handleTodayToggle(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handlePlayToggle = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(e) {\n var isCurrentlyInProgress, updatedTask, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n e.stopPropagation(); // Prevent opening task modal\n if (!(task.id && (task.status === 'not_started' || task.status === 'in_progress' || task.status === 0 || task.status === 1) && onTaskUpdate)) {\n _context2.n = 4;\n break;\n }\n _context2.p = 1;\n isCurrentlyInProgress = task.status === 'in_progress' || task.status === 1;\n updatedTask = _objectSpread(_objectSpread({}, task), {}, {\n status: isCurrentlyInProgress ? 'not_started' : 'in_progress',\n // Automatically add to today plan when setting to in_progress\n today: isCurrentlyInProgress ? task.today : true\n });\n _context2.n = 2;\n return onTaskUpdate(updatedTask);\n case 2:\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Failed to toggle in progress status:', _t2);\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 3]]);\n }));\n return function handlePlayToggle(_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"py-2 px-4 cursor-pointer group\",\n onClick: onTaskClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"hidden md:flex flex-col md:flex-row md:items-center md:justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-4 mb-2 md:mb-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskPriorityIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n priority: task.priority,\n status: task.status,\n onToggleCompletion: onToggleCompletion\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-md text-gray-900 dark:text-gray-100\"\n }, task.name), isOverdue && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"ml-2 px-2 py-0.5 text-xs bg-amber-100 dark:bg-amber-900/30 text-amber-700 dark:text-amber-300 rounded-md\",\n title: \"Task has been in today plan for a while\"\n }, \"overdue\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center text-xs text-gray-500 dark:text-gray-400\"\n }, project && !hideProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, project.name)), project && !hideProjectName && task.tags && task.tags.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"mx-2\"\n }, \"\\u2022\"), task.tags && task.tags.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, task.tags.map(function (tag) {\n return tag.name;\n }).join(', '))), (project && !hideProjectName || task.tags && task.tags.length > 0) && task.due_date && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"mx-2\"\n }, \"\\u2022\"), task.due_date && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, formatDueDate(task.due_date))), (project && !hideProjectName || task.tags && task.tags.length > 0 || task.due_date) && task.recurrence_type && task.recurrence_type !== 'none' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"mx-2\"\n }, \"\\u2022\"), task.recurrence_type && task.recurrence_type !== 'none' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, formatRecurrence(task.recurrence_type)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center flex-wrap justify-start md:justify-end space-x-2\"\n }, onToggleToday && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleTodayToggle,\n className: \"items-center justify-center \".concat(Number(task.today_move_count) > 1 ? 'px-2 h-6' : 'w-6 h-6', \" rounded-full transition-all duration-200 opacity-0 group-hover:opacity-100 \").concat(task.today ? 'bg-green-100 dark:bg-green-900 text-green-600 dark:text-green-400 hover:bg-green-200 dark:hover:bg-green-800 flex' : 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 hidden group-hover:flex'),\n title: task.today ? t('tasks.removeFromToday', 'Remove from today plan') : t('tasks.addToToday', 'Add to today plan')\n }, task.today ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-3 w-3\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-3 w-3\"\n }), Number(task.today_move_count) > 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"ml-1 text-xs font-medium\"\n }, Number(task.today_move_count))), (task.status === 'not_started' || task.status === 'in_progress' || task.status === 0 || task.status === 1) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handlePlayToggle,\n className: \"flex items-center justify-center w-6 h-6 rounded-full transition-all duration-200 \".concat(task.status === 'in_progress' || task.status === 1 ? 'bg-green-100 dark:bg-green-900 text-green-600 dark:text-green-400 hover:bg-green-200 dark:hover:bg-green-800 animate-pulse' : 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 opacity-0 group-hover:opacity-100'),\n title: task.status === 'in_progress' || task.status === 1 ? t('tasks.setNotStarted', 'Set to not started') : t('tasks.setInProgress', 'Set in progress')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-3 w-3\"\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"block md:hidden\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start font-light text-md text-gray-900 dark:text-gray-100\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskPriorityIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n priority: task.priority,\n status: task.status,\n onToggleCompletion: onToggleCompletion\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"ml-2 flex flex-col flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, task.name), isOverdue && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"ml-2 px-2 py-0.5 text-xs bg-amber-100 dark:bg-amber-900/30 text-amber-700 dark:text-amber-300 rounded-md\",\n title: \"Task has been in today plan for a while\"\n }, \"overdue\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col text-xs text-gray-500 dark:text-gray-400 mt-1 space-y-1\"\n }, project && !hideProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, project.name)), task.tags && task.tags.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, task.tags.map(function (tag) {\n return tag.name;\n }).join(', '))), task.due_date && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, formatDueDate(task.due_date))), task.recurrence_type && task.recurrence_type !== 'none' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-3 w-3 mr-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, formatRecurrence(task.recurrence_type)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center flex-wrap justify-start space-x-2 mt-2 ml-8\"\n }, (task.status === 'not_started' || task.status === 'in_progress' || task.status === 0 || task.status === 1) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handlePlayToggle,\n className: \"flex items-center justify-center w-6 h-6 rounded-full transition-all duration-200 \".concat(task.status === 'in_progress' || task.status === 1 ? 'bg-green-100 dark:bg-green-900 text-green-600 dark:text-green-400 hover:bg-green-200 dark:hover:bg-green-800 animate-pulse' : 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 opacity-0 group-hover:opacity-100'),\n title: task.status === 'in_progress' || task.status === 1 ? t('tasks.setNotStarted', 'Set to not started') : t('tasks.setInProgress', 'Set in progress')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-3 w-3\"\n })), onToggleToday && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: handleTodayToggle,\n className: \"items-center justify-center \".concat(Number(task.today_move_count) > 1 ? 'px-2 h-6' : 'w-6 h-6', \" rounded-full transition-all duration-200 opacity-0 group-hover:opacity-100 \").concat(task.today ? 'bg-green-100 dark:bg-green-900 text-green-600 dark:text-green-400 hover:bg-green-200 dark:hover:bg-green-800 flex' : 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 hidden group-hover:flex'),\n title: task.today ? t('tasks.removeFromToday', 'Remove from today plan') : t('tasks.addToToday', 'Add to today plan')\n }, task.today ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-3 w-3\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-3 w-3\"\n }), Number(task.today_move_count) > 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"ml-1 text-xs font-medium\"\n }, Number(task.today_move_count))))));\n};\n_s(TaskHeader, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskHeader;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskHeader);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskHeader\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskHeader.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskItem.tsx":
-/*!***********************************************!*\
- !*** ./frontend/components/Task/TaskItem.tsx ***!
- \***********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _TaskHeader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TaskHeader */ \"./frontend/components/Task/TaskHeader.tsx\");\n/* harmony import */ var _TaskModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TaskModal */ \"./frontend/components/Task/TaskModal.tsx\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_dateUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/dateUtils */ \"./frontend/utils/dateUtils.ts\");\n/* harmony import */ var _hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/useModalEvents */ \"./frontend/hooks/useModalEvents.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\nvar TaskItem = function TaskItem(_ref) {\n _s();\n var task = _ref.task,\n onTaskUpdate = _ref.onTaskUpdate,\n onTaskDelete = _ref.onTaskDelete,\n projects = _ref.projects,\n _ref$hideProjectName = _ref.hideProjectName,\n hideProjectName = _ref$hideProjectName === void 0 ? false : _ref$hideProjectName,\n onToggleToday = _ref.onToggleToday;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n isModalOpen = _useState2[0],\n setIsModalOpen = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(projects),\n _useState4 = _slicedToArray(_useState3, 2),\n projectList = _useState4[0],\n setProjectList = _useState4[1];\n\n // Dispatch global modal events\n (0,_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents)(isModalOpen);\n var handleTaskClick = function handleTaskClick() {\n setIsModalOpen(true);\n };\n var handleSave = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(updatedTask) {\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return onTaskUpdate(updatedTask);\n case 1:\n setIsModalOpen(false);\n case 2:\n return _context.a(2);\n }\n }, _callee);\n }));\n return function handleSave(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleDelete = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(taskId) {\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (!task.id) {\n _context2.n = 1;\n break;\n }\n _context2.n = 1;\n return onTaskDelete(task.id);\n case 1:\n return _context2.a(2);\n }\n }, _callee2);\n }));\n return function handleDelete(_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleToggleCompletion = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var updatedTask, _t;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n if (!task.id) {\n _context3.n = 5;\n break;\n }\n _context3.p = 1;\n _context3.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.toggleTaskCompletion)(task.id);\n case 2:\n updatedTask = _context3.v;\n _context3.n = 3;\n return onTaskUpdate(updatedTask);\n case 3:\n _context3.n = 5;\n break;\n case 4:\n _context3.p = 4;\n _t = _context3.v;\n case 5:\n return _context3.a(2);\n }\n }, _callee3, null, [[1, 4]]);\n }));\n return function handleToggleCompletion() {\n return _ref4.apply(this, arguments);\n };\n }();\n var handleCreateProject = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(name) {\n var response, newProject, _t2;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.p = 0;\n _context4.n = 1;\n return fetch('/api/project', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n name: name,\n active: true\n })\n });\n case 1:\n response = _context4.v;\n if (response.ok) {\n _context4.n = 2;\n break;\n }\n throw new Error('Failed to create project');\n case 2:\n _context4.n = 3;\n return response.json();\n case 3:\n newProject = _context4.v;\n setProjectList(function (prevProjects) {\n return [].concat(_toConsumableArray(prevProjects), [newProject]);\n });\n return _context4.a(2, newProject);\n case 4:\n _context4.p = 4;\n _t2 = _context4.v;\n throw _t2;\n case 5:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 4]]);\n }));\n return function handleCreateProject(_x3) {\n return _ref5.apply(this, arguments);\n };\n }();\n\n // Use the project from the task's included data if available, otherwise find from projectList\n var project = task.Project || projectList.find(function (p) {\n return p.id === task.project_id;\n });\n\n // Check if task is in progress to apply pulsing border animation\n var isInProgress = task.status === 'in_progress' || task.status === 1;\n\n // Check if task is overdue (created yesterday or earlier and not completed)\n var isOverdue = (0,_utils_dateUtils__WEBPACK_IMPORTED_MODULE_4__.isTaskOverdue)(task);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"rounded-lg shadow-sm bg-white dark:bg-gray-900 mt-1 \".concat(isInProgress ? 'border-2 border-green-400/60 dark:border-green-500/60' : 'border-2 border-gray-50 dark:border-gray-800')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskHeader__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n task: task,\n project: project,\n onTaskClick: handleTaskClick,\n onToggleCompletion: handleToggleCompletion,\n hideProjectName: hideProjectName,\n onToggleToday: onToggleToday,\n onTaskUpdate: onTaskUpdate,\n isOverdue: isOverdue\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n isOpen: isModalOpen,\n onClose: function onClose() {\n return setIsModalOpen(false);\n },\n task: task,\n onSave: handleSave,\n onDelete: handleDelete,\n projects: projectList,\n onCreateProject: handleCreateProject\n }));\n};\n_s(TaskItem, \"HuoIldrRkimoruvo/lCAgxgoLnY=\", false, function () {\n return [_hooks_useModalEvents__WEBPACK_IMPORTED_MODULE_5__.useModalEvents];\n});\n_c = TaskItem;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskItem);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskItem\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskItem.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskList.tsx":
-/*!***********************************************!*\
- !*** ./frontend/components/Task/TaskList.tsx ***!
- \***********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _TaskItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TaskItem */ \"./frontend/components/Task/TaskItem.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\n\nvar TaskList = function TaskList(_ref) {\n var tasks = _ref.tasks,\n onTaskUpdate = _ref.onTaskUpdate,\n onTaskDelete = _ref.onTaskDelete,\n projects = _ref.projects,\n _ref$hideProjectName = _ref.hideProjectName,\n hideProjectName = _ref$hideProjectName === void 0 ? false : _ref$hideProjectName,\n onToggleToday = _ref.onToggleToday;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, tasks.length > 0 ? tasks.map(function (task) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: task.id,\n task: task,\n onTaskUpdate: onTaskUpdate,\n onTaskDelete: onTaskDelete,\n projects: projects,\n hideProjectName: hideProjectName,\n onToggleToday: onToggleToday\n });\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-500 dark:text-gray-400 text-center mt-4\"\n }, \"No tasks available.\"));\n};\n_c = TaskList;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskList);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskList\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskList.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskModal.tsx":
-/*!************************************************!*\
- !*** ./frontend/components/Task/TaskModal.tsx ***!
- \************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _TaskActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TaskActions */ \"./frontend/components/Task/TaskActions.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _Shared_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Shared/CollapsibleSection */ \"./frontend/components/Shared/CollapsibleSection.tsx\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _TimelinePanel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./TimelinePanel */ \"./frontend/components/Task/TimelinePanel.tsx\");\n/* harmony import */ var _utils_tagsService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/tagsService */ \"./frontend/utils/tagsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_profileService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/profileService */ \"./frontend/utils/profileService.ts\");\n/* harmony import */ var _utils_taskIntelligenceService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/taskIntelligenceService */ \"./frontend/utils/taskIntelligenceService.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js\");\n/* harmony import */ var _TaskForm_TaskTitleSection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TaskForm/TaskTitleSection */ \"./frontend/components/Task/TaskForm/TaskTitleSection.tsx\");\n/* harmony import */ var _TaskForm_TaskContentSection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./TaskForm/TaskContentSection */ \"./frontend/components/Task/TaskForm/TaskContentSection.tsx\");\n/* harmony import */ var _TaskForm_TaskTagsSection__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TaskForm/TaskTagsSection */ \"./frontend/components/Task/TaskForm/TaskTagsSection.tsx\");\n/* harmony import */ var _TaskForm_TaskProjectSection__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./TaskForm/TaskProjectSection */ \"./frontend/components/Task/TaskForm/TaskProjectSection.tsx\");\n/* harmony import */ var _TaskForm_TaskMetadataSection__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./TaskForm/TaskMetadataSection */ \"./frontend/components/Task/TaskForm/TaskMetadataSection.tsx\");\n/* harmony import */ var _TaskForm_TaskRecurrenceSection__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./TaskForm/TaskRecurrenceSection */ \"./frontend/components/Task/TaskForm/TaskRecurrenceSection.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Import form sections\n\n\n\n\n\n\nvar TaskModal = function TaskModal(_ref) {\n _s();\n var _task$tags, _formData$tags;\n var isOpen = _ref.isOpen,\n onClose = _ref.onClose,\n task = _ref.task,\n onSave = _ref.onSave,\n onDelete = _ref.onDelete,\n projects = _ref.projects,\n onCreateProject = _ref.onCreateProject,\n onEditParentTask = _ref.onEditParentTask;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(task),\n _useState2 = _slicedToArray(_useState, 2),\n formData = _useState2[0],\n setFormData = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(((_task$tags = task.tags) === null || _task$tags === void 0 ? void 0 : _task$tags.map(function (tag) {\n return tag.name;\n })) || []),\n _useState4 = _slicedToArray(_useState3, 2),\n tags = _useState4[0],\n setTags = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(projects || []),\n _useState6 = _slicedToArray(_useState5, 2),\n filteredProjects = _useState6[0],\n setFilteredProjects = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState8 = _slicedToArray(_useState7, 2),\n newProjectName = _useState8[0],\n setNewProjectName = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState0 = _slicedToArray(_useState9, 2),\n isCreatingProject = _useState0[0],\n setIsCreatingProject = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState1, 2),\n dropdownOpen = _useState10[0],\n setDropdownOpen = _useState10[1];\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n isClosing = _useState12[0],\n setIsClosing = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n showConfirmDialog = _useState14[0],\n setShowConfirmDialog = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState16 = _slicedToArray(_useState15, 2),\n localAvailableTags = _useState16[0],\n setLocalAvailableTags = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState18 = _slicedToArray(_useState17, 2),\n tagsLoaded = _useState18[0],\n setTagsLoaded = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState20 = _slicedToArray(_useState19, 2),\n tagsLoading = _useState20[0],\n setTagsLoading = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState22 = _slicedToArray(_useState21, 2),\n parentTask = _useState22[0],\n setParentTask = _useState22[1];\n var _useState23 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState24 = _slicedToArray(_useState23, 2),\n parentTaskLoading = _useState24[0],\n setParentTaskLoading = _useState24[1];\n var _useState25 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState26 = _slicedToArray(_useState25, 2),\n taskAnalysis = _useState26[0],\n setTaskAnalysis = _useState26[1];\n var _useState27 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState28 = _slicedToArray(_useState27, 2),\n taskIntelligenceEnabled = _useState28[0],\n setTaskIntelligenceEnabled = _useState28[1];\n var _useState29 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState30 = _slicedToArray(_useState29, 2),\n isTimelineExpanded = _useState30[0],\n setIsTimelineExpanded = _useState30[1];\n\n // Collapsible section states\n var _useState31 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n tags: false,\n project: false,\n metadata: false,\n recurrence: false\n }),\n _useState32 = _slicedToArray(_useState31, 2),\n expandedSections = _useState32[0],\n setExpandedSections = _useState32[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_4__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_10__.useTranslation)(),\n t = _useTranslation.t;\n var toggleSection = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (section) {\n setExpandedSections(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, section, !prev[section]));\n });\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var _task$tags2;\n setFormData(task);\n setTags(((_task$tags2 = task.tags) === null || _task$tags2 === void 0 ? void 0 : _task$tags2.map(function (tag) {\n return tag.name;\n })) || []);\n\n // Analyze task name and show helper when modal opens (only if intelligence is enabled)\n if (isOpen && task.name && taskIntelligenceEnabled) {\n var analysis = (0,_utils_taskIntelligenceService__WEBPACK_IMPORTED_MODULE_9__.analyzeTaskName)(task.name);\n setTaskAnalysis(analysis);\n } else {\n setTaskAnalysis(null);\n }\n\n // Safely find the current project, handling the case where projects might be undefined\n var currentProject = projects === null || projects === void 0 ? void 0 : projects.find(function (project) {\n return project.id === task.project_id;\n });\n setNewProjectName(currentProject ? currentProject.name : '');\n\n // Fetch parent task if this is a child task\n var fetchParentTask = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var parent, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (!(task.recurring_parent_id && isOpen)) {\n _context.n = 6;\n break;\n }\n setParentTaskLoading(true);\n _context.p = 1;\n _context.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_7__.fetchTaskById)(task.recurring_parent_id);\n case 2:\n parent = _context.v;\n setParentTask(parent);\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n console.error('Error fetching parent task:', _t);\n setParentTask(null);\n case 4:\n _context.p = 4;\n setParentTaskLoading(false);\n return _context.f(4);\n case 5:\n _context.n = 7;\n break;\n case 6:\n setParentTask(null);\n case 7:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3, 4, 5]]);\n }));\n return function fetchParentTask() {\n return _ref2.apply(this, arguments);\n };\n }();\n fetchParentTask();\n }, [task, projects, isOpen, taskIntelligenceEnabled]);\n\n // Fetch task intelligence setting when modal opens\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchTaskIntelligenceSetting = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var enabled, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (!isOpen) {\n _context2.n = 4;\n break;\n }\n _context2.p = 1;\n _context2.n = 2;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_8__.getTaskIntelligenceEnabled)();\n case 2:\n enabled = _context2.v;\n setTaskIntelligenceEnabled(enabled);\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error('Error fetching task intelligence setting:', _t2);\n setTaskIntelligenceEnabled(true); // Default to enabled\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[1, 3]]);\n }));\n return function fetchTaskIntelligenceSetting() {\n return _ref3.apply(this, arguments);\n };\n }();\n fetchTaskIntelligenceSetting();\n }, [isOpen]);\n var handleEditParent = function handleEditParent() {\n if (parentTask && onEditParentTask) {\n onEditParentTask(parentTask);\n onClose(); // Close current modal\n }\n };\n var handleParentRecurrenceChange = function handleParentRecurrenceChange(field, value) {\n // Update the parent task data in local state\n if (parentTask) {\n setParentTask(_objectSpread(_objectSpread({}, parentTask), {}, _defineProperty({}, field, value)));\n }\n // Also update the form data to reflect the change\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty(_defineProperty({}, field, value), \"update_parent_recurrence\", true));\n });\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadTags = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var fetchedTags, _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n if (!(isOpen && !tagsLoaded)) {\n _context3.n = 5;\n break;\n }\n setTagsLoading(true);\n _context3.p = 1;\n _context3.n = 2;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_6__.fetchTags)();\n case 2:\n fetchedTags = _context3.v;\n setLocalAvailableTags(fetchedTags);\n setTagsLoaded(true);\n _context3.n = 4;\n break;\n case 3:\n _context3.p = 3;\n _t3 = _context3.v;\n console.error(\"Error fetching tags:\", _t3);\n setTagsLoaded(true); // Mark as loaded even on error to prevent retry loop\n case 4:\n _context3.p = 4;\n setTagsLoading(false);\n return _context3.f(4);\n case 5:\n return _context3.a(2);\n }\n }, _callee3, null, [[1, 3, 4, 5]]);\n }));\n return function loadTags() {\n return _ref4.apply(this, arguments);\n };\n }();\n\n // Only load tags if modal is open\n if (isOpen) {\n loadTags();\n }\n }, [isOpen, tagsLoaded]);\n var getPriorityString = function getPriorityString(priority) {\n if (typeof priority === 'number') {\n var priorityNames = ['low', 'medium', 'high'];\n return priorityNames[priority] || 'medium';\n }\n return priority || 'medium';\n };\n var getStatusString = function getStatusString(status) {\n if (typeof status === 'number') {\n var statusNames = ['not_started', 'in_progress', 'done', 'archived'];\n return statusNames[status] || 'not_started';\n }\n return status;\n };\n var handleChange = function handleChange(e) {\n var _e$target = e.target,\n name = _e$target.name,\n value = _e$target.value;\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, value));\n });\n\n // Analyze task name in real-time (only if intelligence is enabled)\n if (name === 'name' && taskIntelligenceEnabled) {\n var analysis = (0,_utils_taskIntelligenceService__WEBPACK_IMPORTED_MODULE_9__.analyzeTaskName)(value);\n setTaskAnalysis(analysis);\n }\n };\n var handleRecurrenceChange = function handleRecurrenceChange(field, value) {\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, field, value));\n });\n };\n var handleTagsChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (newTags) {\n setTags(newTags);\n setFormData(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n tags: newTags.map(function (name) {\n return {\n name: name\n };\n })\n });\n });\n }, []);\n var handleProjectSearch = function handleProjectSearch(e) {\n var query = e.target.value.toLowerCase();\n setNewProjectName(query);\n setDropdownOpen(true);\n setFilteredProjects(projects.filter(function (project) {\n return project.name.toLowerCase().includes(query);\n }));\n };\n var handleProjectSelection = function handleProjectSelection(project) {\n setFormData(_objectSpread(_objectSpread({}, formData), {}, {\n project_id: project.id\n }));\n setNewProjectName(project.name);\n setDropdownOpen(false);\n };\n var handleCreateProject = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {\n var newProject, _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n if (!(newProjectName.trim() !== \"\")) {\n _context4.n = 5;\n break;\n }\n setIsCreatingProject(true);\n _context4.p = 1;\n _context4.n = 2;\n return onCreateProject(newProjectName);\n case 2:\n newProject = _context4.v;\n setFormData(_objectSpread(_objectSpread({}, formData), {}, {\n project_id: newProject.id\n }));\n setFilteredProjects([].concat(_toConsumableArray(filteredProjects), [newProject]));\n setNewProjectName(newProject.name);\n setDropdownOpen(false);\n showSuccessToast(t('success.projectCreated'));\n _context4.n = 4;\n break;\n case 3:\n _context4.p = 3;\n _t4 = _context4.v;\n showErrorToast(t('errors.projectCreationFailed'));\n console.error(\"Error creating project:\", _t4);\n case 4:\n _context4.p = 4;\n setIsCreatingProject(false);\n return _context4.f(4);\n case 5:\n return _context4.a(2);\n }\n }, _callee4, null, [[1, 3, 4, 5]]);\n }));\n return function handleCreateProject() {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleSubmit = function handleSubmit() {\n onSave(_objectSpread(_objectSpread({}, formData), {}, {\n tags: tags.map(function (tag) {\n return {\n name: tag\n };\n })\n }));\n var taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.updated', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/task/\".concat(formData.uuid),\n className: \"text-green-200 underline hover:text-green-100\"\n }, formData.name), \" \", t('task.updatedSuccessfully', 'updated successfully!'));\n showSuccessToast(taskLink);\n handleClose();\n };\n var handleDeleteClick = function handleDeleteClick() {\n setShowConfirmDialog(true);\n };\n var handleDeleteConfirm = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {\n var taskLink, _t5;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n if (!formData.id) {\n _context5.n = 4;\n break;\n }\n _context5.p = 1;\n _context5.n = 2;\n return onDelete(formData.id);\n case 2:\n taskLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('task.deleted', 'Task'), \" \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"/task/\".concat(formData.uuid),\n className: \"text-green-200 underline hover:text-green-100\"\n }, formData.name), \" \", t('task.deletedSuccessfully', 'deleted successfully!'));\n showSuccessToast(taskLink);\n setShowConfirmDialog(false);\n handleClose();\n _context5.n = 4;\n break;\n case 3:\n _context5.p = 3;\n _t5 = _context5.v;\n console.error('Failed to delete task:', _t5);\n showErrorToast(t('task.deleteError', 'Failed to delete task'));\n case 4:\n return _context5.a(2);\n }\n }, _callee5, null, [[1, 3]]);\n }));\n return function handleDeleteConfirm() {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleClose = function handleClose() {\n setIsClosing(true);\n setTimeout(function () {\n onClose();\n setIsClosing(false);\n setTagsLoaded(false); // Reset tags loaded state for next modal open\n }, 300);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setFilteredProjects(projects || []);\n }, [projects]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return function () {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === \"Escape\") {\n handleClose();\n }\n };\n if (isOpen) {\n document.addEventListener(\"keydown\", handleKeyDown);\n }\n return function () {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [isOpen]);\n if (!isOpen) return null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"fixed top-16 left-0 right-0 bottom-0 bg-gray-900 bg-opacity-80 z-40 transition-opacity duration-300 overflow-y-auto \".concat(isClosing ? \"opacity-0\" : \"opacity-100\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"min-h-full flex items-start justify-center px-4 py-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: modalRef,\n className: \"bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-800 sm:rounded-lg sm:shadow-2xl w-full sm:max-w-6xl transform transition-transform duration-300 \".concat(isClosing ? \"scale-95\" : \"scale-100\", \" my-4\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col lg:flex-row min-h-[400px] max-h-[90vh]\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 flex flex-col transition-all duration-300 \".concat(isTimelineExpanded ? 'lg:pr-2' : '')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 overflow-y-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"form\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"fieldset\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskForm_TaskTitleSection__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n taskId: task.id,\n value: formData.name,\n onChange: handleChange,\n taskAnalysis: taskAnalysis,\n taskIntelligenceEnabled: taskIntelligenceEnabled\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskForm_TaskContentSection__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n taskId: task.id,\n value: formData.note || \"\",\n onChange: handleChange\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: t('forms.task.labels.tags', 'Tags'),\n isExpanded: expandedSections.tags,\n onToggle: function onToggle() {\n return toggleSection('tags');\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskForm_TaskTagsSection__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n tags: ((_formData$tags = formData.tags) === null || _formData$tags === void 0 ? void 0 : _formData$tags.map(function (tag) {\n return tag.name;\n })) || [],\n onTagsChange: handleTagsChange,\n availableTags: localAvailableTags\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: t('forms.task.labels.project', 'Project'),\n isExpanded: expandedSections.project,\n onToggle: function onToggle() {\n return toggleSection('project');\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskForm_TaskProjectSection__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n newProjectName: newProjectName,\n onProjectSearch: handleProjectSearch,\n dropdownOpen: dropdownOpen,\n filteredProjects: filteredProjects,\n onProjectSelection: handleProjectSelection,\n onCreateProject: handleCreateProject,\n isCreatingProject: isCreatingProject\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: t('forms.task.statusAndOptions', 'Status & Options'),\n isExpanded: expandedSections.metadata,\n onToggle: function onToggle() {\n return toggleSection('metadata');\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskForm_TaskMetadataSection__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n priority: getPriorityString(formData.priority),\n dueDate: formData.due_date || \"\",\n taskId: task.id,\n onStatusChange: function onStatusChange(value) {\n // Universal rule: when setting status to in_progress, also add to today\n var updatedData = _objectSpread(_objectSpread({}, formData), {}, {\n status: value\n });\n if (value === 'in_progress') {\n updatedData.today = true;\n }\n setFormData(updatedData);\n },\n onPriorityChange: function onPriorityChange(value) {\n return setFormData(_objectSpread(_objectSpread({}, formData), {}, {\n priority: value\n }));\n },\n onDueDateChange: handleChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: t('forms.task.recurrence', 'Recurrence'),\n isExpanded: expandedSections.recurrence,\n onToggle: function onToggle() {\n return toggleSection('recurrence');\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskForm_TaskRecurrenceSection__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n formData: formData,\n parentTask: parentTask,\n parentTaskLoading: parentTaskLoading,\n onRecurrenceChange: handleRecurrenceChange,\n onEditParent: parentTask ? handleEditParent : undefined,\n onParentRecurrenceChange: parentTask ? handleParentRecurrenceChange : undefined\n }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-shrink-0 p-3 flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskActions__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n taskId: task.id,\n onDelete: handleDeleteClick,\n onSave: handleSubmit,\n onCancel: handleClose\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setIsTimelineExpanded(!isTimelineExpanded);\n },\n className: \"p-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-full transition-colors\",\n title: isTimelineExpanded ? t('timeline.hideActivityTimeline') : t('timeline.showActivityTimeline')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"h-5 w-5 transition-transform duration-200 \".concat(isTimelineExpanded ? 'rotate-180' : '')\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TimelinePanel__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n taskId: task.id,\n isExpanded: isTimelineExpanded,\n onToggle: function onToggle() {\n return setIsTimelineExpanded(!isTimelineExpanded);\n }\n }))))), showConfirmDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n title: t('modals.deleteTask.title', 'Delete Task'),\n message: t('modals.deleteTask.confirmation', 'Are you sure you want to delete this task? This action cannot be undone.'),\n onConfirm: handleDeleteConfirm,\n onCancel: function onCancel() {\n return setShowConfirmDialog(false);\n }\n }));\n};\n_s(TaskModal, \"sR3iTbRZPgb6BEXqmiBDVDPu0EI=\", false, function () {\n return [_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_4__.useToast, react_i18next__WEBPACK_IMPORTED_MODULE_10__.useTranslation];\n});\n_c = TaskModal;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskModal);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskModal\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskModal.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskPriorityIcon.tsx":
-/*!*******************************************************!*\
- !*** ./frontend/components/Task/TaskPriorityIcon.tsx ***!
- \*******************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\n\nvar TaskPriorityIcon = function TaskPriorityIcon(_ref) {\n _s();\n var priority = _ref.priority,\n status = _ref.status,\n onToggleCompletion = _ref.onToggleCompletion;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var getIconColor = function getIconColor() {\n if (status === 'done' || status === 2) return 'text-green-500';\n\n // Handle both string and numeric priority values\n var priorityStr = priority;\n if (typeof priority === 'number') {\n var priorityNames = ['low', 'medium', 'high'];\n priorityStr = priorityNames[priority] || 'low';\n }\n switch (priorityStr) {\n case 'high':\n case 2:\n return 'text-red-500';\n case 'medium':\n case 1:\n return 'text-yellow-500';\n case 'low':\n case 0:\n default:\n return 'text-gray-300';\n }\n };\n var colorClass = getIconColor();\n var handleClick = function handleClick(e) {\n e.stopPropagation(); // Prevent triggering TaskHeader onClick\n if (onToggleCompletion) {\n onToggleCompletion();\n }\n };\n if (status === 'done' || status === 2) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 \".concat(colorClass, \" cursor-pointer hover:scale-110 transition-transform\"),\n onClick: handleClick\n });\n } else {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 \".concat(colorClass, \" cursor-pointer hover:scale-110 transition-transform\"),\n onClick: handleClick\n });\n }\n};\n_s(TaskPriorityIcon, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskPriorityIcon;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskPriorityIcon);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskPriorityIcon\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskPriorityIcon.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskTimeline.tsx":
-/*!***************************************************!*\
- !*** ./frontend/components/Task/TaskTimeline.tsx ***!
- \***************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _utils_taskEventService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/taskEventService */ \"./frontend/utils/taskEventService.ts\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/SparklesIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlayIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArchiveBoxIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/AdjustmentsHorizontalIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PencilIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/TagIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\nvar TaskTimeline = function TaskTimeline(_ref) {\n _s();\n var taskId = _ref.taskId;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState2 = _slicedToArray(_useState, 2),\n events = _useState2[0],\n setEvents = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState4 = _slicedToArray(_useState3, 2),\n loading = _useState4[0],\n setLoading = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState6 = _slicedToArray(_useState5, 2),\n error = _useState6[0],\n setError = _useState6[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchTimeline = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var timeline, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (!(!taskId || taskId === undefined)) {\n _context.n = 1;\n break;\n }\n setLoading(false);\n setEvents([]);\n return _context.a(2);\n case 1:\n setLoading(true);\n setError(null);\n _context.p = 2;\n _context.n = 3;\n return (0,_utils_taskEventService__WEBPACK_IMPORTED_MODULE_2__.getTaskTimeline)(taskId);\n case 3:\n timeline = _context.v;\n setEvents(timeline);\n _context.n = 5;\n break;\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error('Error fetching task timeline:', _t);\n setError(t('timeline.failedToLoad', 'Failed to load timeline'));\n case 5:\n _context.p = 5;\n setLoading(false);\n return _context.f(5);\n case 6:\n return _context.a(2);\n }\n }, _callee, null, [[2, 4, 5, 6]]);\n }));\n return function fetchTimeline() {\n return _ref2.apply(this, arguments);\n };\n }();\n fetchTimeline();\n }, [taskId]);\n var getEventIcon = function getEventIcon(eventType, newValue) {\n var iconClass = \"h-3.5 w-3.5\";\n switch (eventType) {\n case 'created':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"\".concat(iconClass, \" text-blue-500\")\n });\n case 'status_changed':\n if ((newValue === null || newValue === void 0 ? void 0 : newValue.status) === 1) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"\".concat(iconClass, \" text-yellow-500\")\n });\n if ((newValue === null || newValue === void 0 ? void 0 : newValue.status) === 2) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"\".concat(iconClass, \" text-green-500\")\n });\n if ((newValue === null || newValue === void 0 ? void 0 : newValue.status) === 3) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"\".concat(iconClass, \" text-gray-500\")\n });\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"\".concat(iconClass, \" text-blue-500\")\n });\n case 'completed':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"\".concat(iconClass, \" text-green-500\")\n });\n case 'priority_changed':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"\".concat(iconClass, \" text-orange-500\")\n });\n case 'due_date_changed':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"\".concat(iconClass, \" text-purple-500\")\n });\n case 'project_changed':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"\".concat(iconClass, \" text-indigo-500\")\n });\n case 'name_changed':\n case 'description_changed':\n case 'note_changed':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"\".concat(iconClass, \" text-gray-500\")\n });\n case 'tags_changed':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"\".concat(iconClass, \" text-pink-500\")\n });\n case 'archived':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"\".concat(iconClass, \" text-gray-500\")\n });\n case 'today_changed':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"\".concat(iconClass, \" text-blue-600\")\n });\n default:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"\".concat(iconClass, \" text-gray-400\")\n });\n }\n };\n var getEventDescription = function getEventDescription(event) {\n var event_type = event.event_type,\n old_value = event.old_value,\n new_value = event.new_value,\n field_name = event.field_name;\n switch (event_type) {\n case 'created':\n return t('timeline.events.taskCreated');\n case 'status_changed':\n case 'completed':\n var oldStatus = old_value === null || old_value === void 0 ? void 0 : old_value.status;\n var newStatus = new_value === null || new_value === void 0 ? void 0 : new_value.status;\n if (oldStatus !== undefined && newStatus !== undefined) {\n return \"\".concat(t('timeline.events.status'), \": \").concat((0,_utils_taskEventService__WEBPACK_IMPORTED_MODULE_2__.getStatusLabel)(oldStatus), \" \\u2192 \").concat((0,_utils_taskEventService__WEBPACK_IMPORTED_MODULE_2__.getStatusLabel)(newStatus));\n }\n return t('timeline.events.statusChanged');\n case 'priority_changed':\n var oldPriority = old_value === null || old_value === void 0 ? void 0 : old_value.priority;\n var newPriority = new_value === null || new_value === void 0 ? void 0 : new_value.priority;\n if (oldPriority !== undefined && newPriority !== undefined) {\n return \"\".concat(t('timeline.events.priority'), \": \").concat((0,_utils_taskEventService__WEBPACK_IMPORTED_MODULE_2__.getPriorityLabel)(oldPriority), \" \\u2192 \").concat((0,_utils_taskEventService__WEBPACK_IMPORTED_MODULE_2__.getPriorityLabel)(newPriority));\n }\n return t('timeline.events.priorityChanged');\n case 'due_date_changed':\n var oldDate = old_value === null || old_value === void 0 ? void 0 : old_value.due_date;\n var newDate = new_value === null || new_value === void 0 ? void 0 : new_value.due_date;\n if (oldDate || newDate) {\n return \"\".concat(t('timeline.events.dueDate'), \": \").concat(oldDate || t('timeline.events.none'), \" \\u2192 \").concat(newDate || t('timeline.events.none'));\n }\n return t('timeline.events.dueDateChanged');\n case 'name_changed':\n return t('timeline.events.nameUpdated');\n case 'description_changed':\n return t('timeline.events.descriptionUpdated');\n case 'note_changed':\n return t('timeline.events.noteUpdated');\n case 'project_changed':\n return t('timeline.events.projectChanged');\n case 'tags_changed':\n return t('timeline.events.tagsUpdated');\n case 'archived':\n return t('timeline.events.taskArchived');\n case 'today_changed':\n return t('timeline.events.todayFlagChanged');\n default:\n return (0,_utils_taskEventService__WEBPACK_IMPORTED_MODULE_2__.getEventTypeLabel)(event_type);\n }\n };\n var formatTimeAgo = function formatTimeAgo(dateString) {\n var date = new Date(dateString);\n var now = new Date();\n var diffMs = now.getTime() - date.getTime();\n var diffMinutes = Math.floor(diffMs / (1000 * 60));\n var diffHours = Math.floor(diffMs / (1000 * 60 * 60));\n var diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n if (diffMinutes < 1) return 'Just now';\n if (diffMinutes < 60) return \"\".concat(diffMinutes, \"m ago\");\n if (diffHours < 24) return \"\".concat(diffHours, \"h ago\");\n if (diffDays < 7) return \"\".concat(diffDays, \"d ago\");\n return date.toLocaleDateString();\n };\n if (loading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col items-center justify-center h-32 text-gray-500 dark:text-gray-400\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-6 w-6 mb-2 animate-spin\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm\"\n }, \"Loading timeline...\"));\n }\n if (error) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col items-center justify-center h-32 text-red-500\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-6 w-6 mb-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm\"\n }, error));\n }\n if (!taskId) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col items-center justify-center h-32 text-gray-500 dark:text-gray-400\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-6 w-6 mb-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-center\"\n }, \"Timeline will appear after saving\"));\n }\n if (events.length === 0) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col items-center justify-center h-32 text-gray-500 dark:text-gray-400\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-6 w-6 mb-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm\"\n }, \"No activity yet\"));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"h-full overflow-y-auto\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-2\"\n }, events.map(function (event, index) {\n var _event$new_value;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: event.id,\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-start space-x-3 py-1 relative z-10\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center border-2 \".concat(event.event_type === 'created' ? 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-700' : event.event_type === 'completed' ? 'bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-700' : event.event_type === 'status_changed' && ((_event$new_value = event.new_value) === null || _event$new_value === void 0 ? void 0 : _event$new_value.status) === 1 ? 'bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-700' : event.event_type === 'priority_changed' ? 'bg-orange-50 dark:bg-orange-900/20 border-orange-200 dark:border-orange-700' : 'bg-gray-50 dark:bg-gray-900/20 border-gray-200 dark:border-gray-700')\n }, getEventIcon(event.event_type, event.new_value)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex-1 min-w-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xs font-medium text-gray-900 dark:text-gray-100 leading-tight\"\n }, getEventDescription(event)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 mt-1\"\n }, formatTimeAgo(event.created_at)), event.event_type === 'tags_changed' && event.new_value && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-1.5 flex flex-wrap gap-1\"\n }, Array.isArray(event.new_value) && event.new_value.map(function (tag, tagIndex) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n key: tagIndex,\n className: \"inline-flex items-center px-1.5 py-0.5 rounded text-xs bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200 border border-blue-200 dark:border-blue-800\"\n }, tag.name || tag);\n })))));\n })));\n};\n_s(TaskTimeline, \"webeFJRvKr/VfHwYYpBS3FXYxvo=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TaskTimeline;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskTimeline);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskTimeline\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskTimeline.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TaskView.tsx":
-/*!***********************************************!*\
- !*** ./frontend/components/Task/TaskView.tsx ***!
- \***********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var _TaskModal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TaskModal */ \"./frontend/components/Task/TaskModal.tsx\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\nvar TaskView = function TaskView() {\n _s();\n var _useParams = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_5__.useParams)(),\n uuid = _useParams.uuid;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_5__.useNavigate)();\n var store = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_4__.useStore)();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState2 = _slicedToArray(_useState, 2),\n task = _useState2[0],\n setTask = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState4 = _slicedToArray(_useState3, 2),\n loading = _useState4[0],\n setLoading = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState6 = _slicedToArray(_useState5, 2),\n error = _useState6[0],\n setError = _useState6[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchTask = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var taskData, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (uuid) {\n _context.n = 1;\n break;\n }\n setError(\"No task UUID provided\");\n setLoading(false);\n return _context.a(2);\n case 1:\n _context.p = 1;\n _context.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_2__.fetchTaskByUuid)(uuid);\n case 2:\n taskData = _context.v;\n setTask(taskData);\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n setError(\"An error occurred while fetching the task\");\n case 4:\n _context.p = 4;\n setLoading(false);\n return _context.f(4);\n case 5:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3, 4, 5]]);\n }));\n return function fetchTask() {\n return _ref.apply(this, arguments);\n };\n }();\n fetchTask();\n }, [uuid]);\n var handleClose = function handleClose() {\n navigate(-1); // Go back to previous page\n };\n var handleTaskUpdate = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(updatedTask) {\n var updated, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n if (!(task !== null && task !== void 0 && task.id)) {\n _context2.n = 2;\n break;\n }\n _context2.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_2__.updateTask)(task.id, updatedTask);\n case 1:\n updated = _context2.v;\n setTask(updated);\n case 2:\n _context2.n = 4;\n break;\n case 3:\n _context2.p = 3;\n _t2 = _context2.v;\n console.error(\"Error updating task:\", _t2);\n case 4:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 3]]);\n }));\n return function handleTaskUpdate(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(taskId) {\n var _t3;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.p = 0;\n _context3.n = 1;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_2__.deleteTask)(taskId);\n case 1:\n navigate('/today'); // Navigate back to today view after deletion\n _context3.n = 3;\n break;\n case 2:\n _context3.p = 2;\n _t3 = _context3.v;\n console.error(\"Error deleting task:\", _t3);\n throw _t3;\n case 3:\n return _context3.a(2);\n }\n }, _callee3, null, [[0, 2]]);\n }));\n return function handleTaskDelete(_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleCreateProject = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(name) {\n var _t4;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.p = 0;\n _context4.n = 1;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_3__.createProject)({\n name: name\n });\n case 1:\n return _context4.a(2, _context4.v);\n case 2:\n _context4.p = 2;\n _t4 = _context4.v;\n console.error(\"Error creating project:\", _t4);\n throw _t4;\n case 3:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 2]]);\n }));\n return function handleCreateProject(_x3) {\n return _ref4.apply(this, arguments);\n };\n }();\n if (loading) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-gray-700 dark:text-gray-200\"\n }, \"Loading task...\"));\n }\n if (error || !task) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-center h-screen bg-gray-100 dark:bg-gray-900\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-xl font-semibold text-red-600 dark:text-red-400 mb-4\"\n }, error || \"Task not found\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return navigate(\"/\");\n },\n className: \"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors\"\n }, \"Go Home\")));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskModal__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n isOpen: true,\n task: task,\n onClose: handleClose,\n onSave: handleTaskUpdate,\n onDelete: handleTaskDelete,\n projects: store.projectsStore.projects,\n onCreateProject: handleCreateProject\n });\n};\n_s(TaskView, \"4UNf5wNPjU8MM885vAfxIIeN3Tk=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_5__.useParams, react_router_dom__WEBPACK_IMPORTED_MODULE_5__.useNavigate, _store_useStore__WEBPACK_IMPORTED_MODULE_4__.useStore];\n});\n_c = TaskView;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskView);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskView\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TaskView.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TasksToday.tsx":
-/*!*************************************************!*\
- !*** ./frontend/components/Task/TasksToday.tsx ***!
- \*************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/format.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/el.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/es.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/ja.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/uk.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/de.js\");\n/* harmony import */ var date_fns_locale__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! date-fns/locale */ \"./node_modules/date-fns/locale/en-US.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! i18next */ \"./node_modules/i18next/dist/esm/i18next.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentListIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowUpIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ArrowDownIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _TaskList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TaskList */ \"./frontend/components/Task/TaskList.tsx\");\n/* harmony import */ var _TodayPlan__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TodayPlan */ \"./frontend/components/Task/TodayPlan.tsx\");\n/* harmony import */ var _Productivity_ProductivityAssistant__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Productivity/ProductivityAssistant */ \"./frontend/components/Productivity/ProductivityAssistant.tsx\");\n/* harmony import */ var _NextTaskSuggestion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./NextTaskSuggestion */ \"./frontend/components/Task/NextTaskSuggestion.tsx\");\n/* harmony import */ var _WeeklyCompletionChart__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./WeeklyCompletionChart */ \"./frontend/components/Task/WeeklyCompletionChart.tsx\");\n/* harmony import */ var _TodaySettingsDropdown__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TodaySettingsDropdown */ \"./frontend/components/Task/TodaySettingsDropdown.tsx\");\n/* harmony import */ var _utils_profileService__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/profileService */ \"./frontend/utils/profileService.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar getLocale = function getLocale(language) {\n switch (language) {\n case 'el':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_13__.el;\n case 'es':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_14__.es;\n case 'jp':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_15__.ja;\n case 'ua':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_16__.uk;\n case 'de':\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_17__.de;\n default:\n return date_fns_locale__WEBPACK_IMPORTED_MODULE_18__.enUS;\n }\n};\nvar TasksToday = function TasksToday() {\n _s();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n\n // Don't use multiple separate useStore calls - combine them into one\n var store = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore)();\n\n // Use local state for data instead of directly using store state\n // This prevents unnecessary re-renders from store updates\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState2 = _slicedToArray(_useState, 2),\n localTasks = _useState2[0],\n setLocalTasks = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState4 = _slicedToArray(_useState3, 2),\n localProjects = _useState4[0],\n setLocalProjects = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isLoading = _useState6[0],\n setIsLoading = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState8 = _slicedToArray(_useState7, 2),\n isError = _useState8[0],\n setIsError = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState0 = _slicedToArray(_useState9, 2),\n dailyQuote = _useState0[0],\n setDailyQuote = _useState0[1];\n var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState10 = _slicedToArray(_useState1, 2),\n productivityAssistantEnabled = _useState10[0],\n setProductivityAssistantEnabled = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n isSettingsDropdownOpen = _useState12[0],\n setIsSettingsDropdownOpen = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n showMetrics: false,\n showProductivity: false,\n showIntelligence: false,\n showDueToday: true,\n showCompleted: true,\n showProgressBar: true,\n // Always enabled\n showDailyQuote: true\n }),\n _useState14 = _slicedToArray(_useState13, 2),\n todaySettings = _useState14[0],\n setTodaySettings = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState16 = _slicedToArray(_useState15, 2),\n nextTaskSuggestionEnabled = _useState16[0],\n setNextTaskSuggestionEnabled = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n var stored = sessionStorage.getItem('hideNextTaskSuggestion');\n return stored !== 'true';\n }),\n _useState18 = _slicedToArray(_useState17, 2),\n showNextTaskSuggestion = _useState18[0],\n setShowNextTaskSuggestion = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n var stored = localStorage.getItem('suggestedTasksCollapsed');\n return stored === 'true';\n }),\n _useState20 = _slicedToArray(_useState19, 2),\n isSuggestedCollapsed = _useState20[0],\n setIsSuggestedCollapsed = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n var stored = localStorage.getItem('completedTasksCollapsed');\n return stored === 'true';\n }),\n _useState22 = _slicedToArray(_useState21, 2),\n isCompletedCollapsed = _useState22[0],\n setIsCompletedCollapsed = _useState22[1];\n\n // Metrics from the API\n var _useState23 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n total_open_tasks: 0,\n tasks_pending_over_month: 0,\n tasks_in_progress_count: 0,\n tasks_in_progress: [],\n tasks_due_today: [],\n suggested_tasks: [],\n tasks_completed_today: [],\n weekly_completions: []\n }),\n _useState24 = _slicedToArray(_useState23, 2),\n metrics = _useState24[0],\n setMetrics = _useState24[1];\n\n // Helper function to get completion trend vs average\n var getCompletionTrend = function getCompletionTrend() {\n var todayCount = metrics.tasks_completed_today.length;\n\n // Calculate average: sum of all completed tasks divided by 7 days\n // The average represents the daily average across the week\n if (metrics.weekly_completions.length === 0) {\n return {\n direction: 'same',\n difference: 0,\n percentage: 0,\n todayCount: todayCount,\n averageCount: 0\n };\n }\n\n // Sum all completed tasks from the weekly data\n var totalCompletedTasks = metrics.weekly_completions.reduce(function (sum, completion) {\n return sum + completion.count;\n }, 0);\n\n // Average is total completed tasks divided by 7\n var averageCount = totalCompletedTasks / 7;\n\n // Calculate percentage change vs average\n var percentage = 0;\n if (averageCount > 0) {\n percentage = Math.round((todayCount - averageCount) / averageCount * 100);\n } else if (todayCount > 0) {\n // If average was 0 but today has completions, it's a 100%+ increase\n percentage = 100;\n }\n if (todayCount > averageCount) {\n return {\n direction: 'up',\n difference: Math.round((todayCount - averageCount) * 10) / 10,\n // Round to 1 decimal\n percentage: Math.abs(percentage),\n todayCount: todayCount,\n averageCount: Math.round(averageCount * 10) / 10 // Round to 1 decimal\n };\n } else if (todayCount < averageCount) {\n return {\n direction: 'down',\n difference: Math.round((averageCount - todayCount) * 10) / 10,\n // Round to 1 decimal\n percentage: Math.abs(percentage),\n todayCount: todayCount,\n averageCount: Math.round(averageCount * 10) / 10 // Round to 1 decimal\n };\n } else {\n return {\n direction: 'same',\n difference: 0,\n percentage: 0,\n todayCount: todayCount,\n averageCount: Math.round(averageCount * 10) / 10 // Round to 1 decimal\n };\n }\n };\n\n // Track mounting state to prevent state updates after unmount\n var isMounted = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(false);\n\n // Function to handle next task suggestion dismissal\n var handleCloseNextTaskSuggestion = function handleCloseNextTaskSuggestion() {\n setShowNextTaskSuggestion(false);\n sessionStorage.setItem('hideNextTaskSuggestion', 'true');\n };\n\n // Toggle functions for collapsible sections\n var toggleSuggestedCollapsed = function toggleSuggestedCollapsed() {\n var newState = !isSuggestedCollapsed;\n setIsSuggestedCollapsed(newState);\n localStorage.setItem('suggestedTasksCollapsed', newState.toString());\n };\n var toggleCompletedCollapsed = function toggleCompletedCollapsed() {\n var newState = !isCompletedCollapsed;\n setIsCompletedCollapsed(newState);\n localStorage.setItem('completedTasksCollapsed', newState.toString());\n };\n\n // Load data once on component mount\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n isMounted.current = true;\n\n // Only fetch data once on mount\n var loadData = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var isEnabled, isNextTaskEnabled, projectsData, safeProjectsData, _yield$fetchTasks, fetchedTasks, fetchedMetrics, response, data, randomIndex, fallbackResponse, fallbackData, _randomIndex, _response, userData, settings, _t, _t2, _t3, _t4, _t5, _t6;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (isMounted.current) {\n _context.n = 1;\n break;\n }\n return _context.a(2);\n case 1:\n setIsLoading(true);\n setIsError(false);\n _context.p = 2;\n _context.n = 3;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_12__.getProductivityAssistantEnabled)();\n case 3:\n isEnabled = _context.v;\n if (isMounted.current) {\n setProductivityAssistantEnabled(isEnabled);\n }\n _context.n = 5;\n break;\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error(\"Failed to load productivity assistant setting:\", _t);\n case 5:\n _context.p = 5;\n _context.n = 6;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_12__.getNextTaskSuggestionEnabled)();\n case 6:\n isNextTaskEnabled = _context.v;\n if (isMounted.current) {\n setNextTaskSuggestionEnabled(isNextTaskEnabled);\n }\n _context.n = 8;\n break;\n case 7:\n _context.p = 7;\n _t2 = _context.v;\n console.error(\"Failed to load next task suggestion setting:\", _t2);\n case 8:\n _context.p = 8;\n _context.n = 9;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_4__.fetchProjects)();\n case 9:\n projectsData = _context.v;\n if (isMounted.current) {\n safeProjectsData = Array.isArray(projectsData) ? projectsData : [];\n setLocalProjects(safeProjectsData);\n store.projectsStore.setProjects(safeProjectsData);\n }\n _context.n = 11;\n break;\n case 10:\n _context.p = 10;\n _t3 = _context.v;\n console.error('Projects loading error:', _t3);\n if (isMounted.current) {\n setLocalProjects([]);\n setIsError(true);\n }\n case 11:\n _context.p = 11;\n _context.n = 12;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.fetchTasks)(\"?type=today\");\n case 12:\n _yield$fetchTasks = _context.v;\n fetchedTasks = _yield$fetchTasks.tasks;\n fetchedMetrics = _yield$fetchTasks.metrics;\n if (isMounted.current) {\n setLocalTasks(fetchedTasks);\n setMetrics(fetchedMetrics);\n // Also update the store\n store.tasksStore.setTasks(fetchedTasks);\n }\n _context.n = 14;\n break;\n case 13:\n _context.p = 13;\n _t4 = _context.v;\n console.error(\"Failed to fetch tasks:\", _t4);\n if (isMounted.current) {\n setIsError(true);\n }\n case 14:\n _context.p = 14;\n if (isMounted.current) {\n setIsLoading(false);\n }\n return _context.f(14);\n case 15:\n _context.p = 15;\n _context.n = 16;\n return fetch(\"/locales/\".concat(i18next__WEBPACK_IMPORTED_MODULE_2__[\"default\"].language, \"/quotes.json\"));\n case 16:\n response = _context.v;\n if (!response.ok) {\n _context.n = 18;\n break;\n }\n _context.n = 17;\n return response.json();\n case 17:\n data = _context.v;\n if (isMounted.current && data.quotes && data.quotes.length > 0) {\n // Get a random quote from the translated quotes\n randomIndex = Math.floor(Math.random() * data.quotes.length);\n setDailyQuote(data.quotes[randomIndex]);\n }\n _context.n = 21;\n break;\n case 18:\n _context.n = 19;\n return fetch('/locales/en/quotes.json');\n case 19:\n fallbackResponse = _context.v;\n if (!fallbackResponse.ok) {\n _context.n = 21;\n break;\n }\n _context.n = 20;\n return fallbackResponse.json();\n case 20:\n fallbackData = _context.v;\n if (isMounted.current && fallbackData.quotes && fallbackData.quotes.length > 0) {\n _randomIndex = Math.floor(Math.random() * fallbackData.quotes.length);\n setDailyQuote(fallbackData.quotes[_randomIndex]);\n }\n case 21:\n _context.n = 23;\n break;\n case 22:\n _context.p = 22;\n _t5 = _context.v;\n console.error(\"Failed to load daily quote:\", _t5);\n // Ultimate fallback\n if (isMounted.current) {\n setDailyQuote(\"Focus on progress, not perfection.\");\n }\n case 23:\n _context.p = 23;\n _context.n = 24;\n return fetch('/api/profile', {\n credentials: 'include'\n });\n case 24:\n _response = _context.v;\n if (!_response.ok) {\n _context.n = 26;\n break;\n }\n _context.n = 25;\n return _response.json();\n case 25:\n userData = _context.v;\n if (isMounted.current) {\n // Parse today_settings if it's a string, or use the object directly\n\n if (userData.today_settings) {\n if (typeof userData.today_settings === 'string') {\n try {\n settings = JSON.parse(userData.today_settings);\n } catch (error) {\n console.error('Error parsing today_settings:', error);\n settings = null;\n }\n } else {\n settings = userData.today_settings;\n }\n }\n\n // Use parsed settings or fall back to defaults\n settings = settings || {\n showMetrics: false,\n showProductivity: false,\n showIntelligence: false,\n showDueToday: true,\n showCompleted: true,\n showProgressBar: true,\n // Always enabled\n showDailyQuote: true\n };\n\n // Ensure progress bar is always enabled\n settings.showProgressBar = true;\n setTodaySettings(settings);\n }\n case 26:\n _context.n = 28;\n break;\n case 27:\n _context.p = 27;\n _t6 = _context.v;\n console.error(\"Failed to load user settings:\", _t6);\n case 28:\n return _context.a(2);\n }\n }, _callee, null, [[23, 27], [15, 22], [11, 13, 14, 15], [8, 10], [5, 7], [2, 4]]);\n }));\n return function loadData() {\n return _ref.apply(this, arguments);\n };\n }();\n loadData();\n\n // Cleanup function to prevent state updates after unmount\n return function () {\n isMounted.current = false;\n };\n }, []); // Empty dependency array - only run once on mount\n\n // Memoize task handlers to prevent recreating functions on each render\n var handleTaskUpdate = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(updatedTask) {\n var _yield$fetchTasks2, updatedTasks, _metrics, _t7;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n if (!(!updatedTask.id || !isMounted.current)) {\n _context2.n = 1;\n break;\n }\n return _context2.a(2);\n case 1:\n setIsLoading(true);\n _context2.p = 2;\n _context2.n = 3;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.updateTask)(updatedTask.id, updatedTask);\n case 3:\n _context2.n = 4;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.fetchTasks)(\"?type=today\");\n case 4:\n _yield$fetchTasks2 = _context2.v;\n updatedTasks = _yield$fetchTasks2.tasks;\n _metrics = _yield$fetchTasks2.metrics;\n if (isMounted.current) {\n setLocalTasks(updatedTasks);\n setMetrics(_metrics);\n // Update store\n store.tasksStore.setTasks(updatedTasks);\n }\n _context2.n = 6;\n break;\n case 5:\n _context2.p = 5;\n _t7 = _context2.v;\n console.error(\"Error updating task:\", _t7);\n if (isMounted.current) {\n setIsError(true);\n }\n case 6:\n _context2.p = 6;\n if (isMounted.current) {\n setIsLoading(false);\n }\n return _context2.f(6);\n case 7:\n return _context2.a(2);\n }\n }, _callee2, null, [[2, 5, 6, 7]]);\n }));\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }(), [store.tasksStore]);\n var handleTaskDelete = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(taskId) {\n var _yield$fetchTasks3, updatedTasks, _metrics2, _t8;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n if (isMounted.current) {\n _context3.n = 1;\n break;\n }\n return _context3.a(2);\n case 1:\n setIsLoading(true);\n _context3.p = 2;\n _context3.n = 3;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.deleteTask)(taskId);\n case 3:\n _context3.n = 4;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.fetchTasks)(\"?type=today\");\n case 4:\n _yield$fetchTasks3 = _context3.v;\n updatedTasks = _yield$fetchTasks3.tasks;\n _metrics2 = _yield$fetchTasks3.metrics;\n if (isMounted.current) {\n setLocalTasks(updatedTasks);\n setMetrics(_metrics2);\n // Update store\n store.tasksStore.setTasks(updatedTasks);\n }\n _context3.n = 6;\n break;\n case 5:\n _context3.p = 5;\n _t8 = _context3.v;\n console.error(\"Error deleting task:\", _t8);\n if (isMounted.current) {\n setIsError(true);\n }\n case 6:\n _context3.p = 6;\n if (isMounted.current) {\n setIsLoading(false);\n }\n return _context3.f(6);\n case 7:\n return _context3.a(2);\n }\n }, _callee3, null, [[2, 5, 6, 7]]);\n }));\n return function (_x2) {\n return _ref3.apply(this, arguments);\n };\n }(), [store.tasksStore]);\n var handleToggleToday = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(taskId) {\n var _yield$fetchTasks4, updatedTasks, _metrics3, _t9;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n if (isMounted.current) {\n _context4.n = 1;\n break;\n }\n return _context4.a(2);\n case 1:\n _context4.p = 1;\n _context4.n = 2;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.toggleTaskToday)(taskId);\n case 2:\n _context4.n = 3;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_3__.fetchTasks)(\"?type=today\");\n case 3:\n _yield$fetchTasks4 = _context4.v;\n updatedTasks = _yield$fetchTasks4.tasks;\n _metrics3 = _yield$fetchTasks4.metrics;\n if (isMounted.current) {\n setLocalTasks(updatedTasks);\n setMetrics(_metrics3);\n // Update store\n store.tasksStore.setTasks(updatedTasks);\n }\n _context4.n = 5;\n break;\n case 4:\n _context4.p = 4;\n _t9 = _context4.v;\n console.error(\"Error toggling task today status:\", _t9);\n if (isMounted.current) {\n setIsError(true);\n }\n case 5:\n return _context4.a(2);\n }\n }, _callee4, null, [[1, 4]]);\n }));\n return function (_x3) {\n return _ref4.apply(this, arguments);\n };\n }(), [store.tasksStore]);\n\n // Calculate today's progress for the progress bar\n var getTodayProgress = function getTodayProgress() {\n var todayTasks = metrics.today_plan_tasks || [];\n var completedToday = metrics.tasks_completed_today.length;\n var totalTodayTasks = todayTasks.length + completedToday;\n return {\n completed: completedToday,\n total: totalTodayTasks,\n percentage: totalTodayTasks === 0 ? 0 : Math.round(completedToday / totalTodayTasks * 100)\n };\n };\n var todayProgress = getTodayProgress();\n\n // Handle settings change\n var handleSettingsChange = function handleSettingsChange(newSettings) {\n setTodaySettings(newSettings);\n };\n\n // Show loading state\n if (isLoading && localTasks.length === 0) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center items-center h-64\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-500 dark:text-gray-400\"\n }, t('common.loading', 'Loading...')));\n }\n\n // Show error state\n if (isError && localTasks.length === 0) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center items-center h-64\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-red-500\"\n }, t('errors.somethingWentWrong', 'Something went wrong')));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-center px-4 lg:px-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full max-w-5xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-col\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-end justify-between mb-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"h-5 w-5 mr-2 mb-1\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h2\", {\n className: \"text-2xl font-light mr-4\"\n }, t('tasks.today')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-gray-500\"\n }, (0,date_fns__WEBPACK_IMPORTED_MODULE_20__.format)(new Date(), \"PPP\", {\n locale: getLocale(i18next__WEBPACK_IMPORTED_MODULE_2__[\"default\"].language)\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-end space-x-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return setIsSettingsDropdownOpen(!isSettingsDropdownOpen);\n },\n className: \"flex flex-row items-center p-2 group focus:outline-none rounded-md transition-all duration-200 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800\",\n title: t('settings.todayPageSettings', 'Today Page Settings')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n className: \"h-5 w-5\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-xs font-medium transition-all duration-200 max-w-0 overflow-hidden opacity-0 group-hover:max-w-xs group-hover:opacity-100 group-focus:max-w-xs group-focus:opacity-100 group-hover:ml-2 group-focus:ml-2\"\n }, t('common.settings', 'Settings'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TodaySettingsDropdown__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n isOpen: isSettingsDropdownOpen,\n onClose: function onClose() {\n return setIsSettingsDropdownOpen(false);\n },\n settings: todaySettings,\n onSettingsChange: handleSettingsChange\n })))), todaySettings.showProgressBar && todayProgress.total > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"w-full bg-gray-200 dark:bg-gray-700 rounded-full h-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"h-1 rounded-full transition-all duration-500 ease-out bg-gradient-to-r from-blue-400 via-blue-500 to-blue-700\",\n style: {\n width: \"\".concat(todayProgress.percentage, \"%\")\n }\n })), todaySettings.showDailyQuote && dailyQuote && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-s text-gray-400 dark:text-gray-500 font-light text-left\"\n }, dailyQuote))))), todaySettings.showMetrics && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-2 grid grid-cols-1 lg:grid-cols-3 gap-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 rounded-lg shadow p-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-sm font-medium mb-2 text-gray-700 dark:text-gray-300\"\n }, t('dashboard.overview')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n className: \"h-4 w-4 text-blue-500 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, t('tasks.backlog'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, metrics.total_open_tasks)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n className: \"h-4 w-4 text-green-500 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, t('tasks.inProgress'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, metrics.tasks_in_progress_count)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"h-4 w-4 text-red-500 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, t('tasks.dueToday'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, metrics.tasks_due_today.length)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n className: \"h-4 w-4 text-green-600 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, t('tasks.completedToday', 'Completed Today'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center space-x-1\"\n }, function () {\n var trend = getCompletionTrend();\n var getTooltipText = function getTooltipText() {\n if (trend.direction === 'same') {\n return t('dashboard.sameAsAverage', 'Same as average');\n } else if (trend.direction === 'up') {\n return t('dashboard.betterThanAverage', '{{percentage}}% more than average', {\n percentage: trend.percentage\n });\n } else {\n return t('dashboard.worseThanAverage', '{{percentage}}% less than average', {\n percentage: trend.percentage\n });\n }\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (trend.direction === 'up' || trend.direction === 'down') && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"relative group\"\n }, trend.direction === 'up' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n className: \"h-3 w-3 text-green-500\"\n }), trend.direction === 'down' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n className: \"h-3 w-3 text-red-500\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 px-2 py-1 text-xs text-white bg-gray-900 dark:bg-gray-700 rounded opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none whitespace-nowrap z-10\"\n }, getTooltipText())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, metrics.tasks_completed_today.length));\n }())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_27__[\"default\"], {\n className: \"h-4 w-4 text-purple-500 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400\"\n }, t('projects.active'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, Array.isArray(localProjects) ? localProjects.filter(function (project) {\n return project.active;\n }).length : 0)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"lg:col-span-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_WeeklyCompletionChart__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n data: metrics.weekly_completions\n }))), todaySettings.showProductivity && productivityAssistantEnabled && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Productivity_ProductivityAssistant__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n tasks: localTasks,\n projects: localProjects\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TodayPlan__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n todayPlanTasks: metrics.today_plan_tasks || [],\n projects: localProjects,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n onToggleToday: handleToggleToday\n }), todaySettings.showIntelligence && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-2\"\n }, nextTaskSuggestionEnabled && showNextTaskSuggestion && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_NextTaskSuggestion__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n metrics: {\n tasks_due_today: metrics.tasks_due_today,\n suggested_tasks: metrics.suggested_tasks,\n tasks_in_progress: metrics.tasks_in_progress,\n today_plan_tasks: metrics.today_plan_tasks\n },\n onTaskUpdate: handleTaskUpdate,\n onClose: handleCloseNextTaskSuggestion\n }), metrics.suggested_tasks.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between cursor-pointer mt-6 mb-2 pb-2 border-b border-gray-200 dark:border-gray-700\",\n onClick: toggleSuggestedCollapsed\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-medium\"\n }, t('tasks.suggested')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-500 mr-2\"\n }, metrics.suggested_tasks.length), isSuggestedCollapsed ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_28__[\"default\"], {\n className: \"h-5 w-5 text-gray-500\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_29__[\"default\"], {\n className: \"h-5 w-5 text-gray-500\"\n }))), !isSuggestedCollapsed && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskList__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n tasks: metrics.suggested_tasks,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: localProjects,\n onToggleToday: handleToggleToday\n }))), todaySettings.showDueToday && metrics.tasks_due_today.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-medium mt-6 mb-2\"\n }, t('tasks.dueToday')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskList__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n tasks: metrics.tasks_due_today,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: localProjects,\n onToggleToday: handleToggleToday\n })), todaySettings.showCompleted && metrics.tasks_completed_today.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between cursor-pointer mt-6 mb-2 pb-2 border-b border-gray-200 dark:border-gray-700\",\n onClick: toggleCompletedCollapsed\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-xl font-medium\"\n }, t('tasks.completedToday')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-sm text-gray-500 mr-2\"\n }, metrics.tasks_completed_today.length), isCompletedCollapsed ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_28__[\"default\"], {\n className: \"h-5 w-5 text-gray-500\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_29__[\"default\"], {\n className: \"h-5 w-5 text-gray-500\"\n }))), !isCompletedCollapsed && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskList__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n tasks: metrics.tasks_completed_today,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: localProjects,\n onToggleToday: handleToggleToday\n })), metrics.tasks_due_today.length === 0 && metrics.tasks_in_progress.length === 0 && metrics.suggested_tasks.length === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-500 text-center mt-4\"\n }, t('tasks.noTasksAvailable'))));\n};\n_s(TasksToday, \"Hc8C7xHEanytcQXEnF7K/scGgfE=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _store_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore];\n});\n_c = TasksToday;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TasksToday);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TasksToday\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TasksToday.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TimelinePanel.tsx":
-/*!****************************************************!*\
- !*** ./frontend/components/Task/TimelinePanel.tsx ***!
- \****************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _TaskTimeline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TaskTimeline */ \"./frontend/components/Task/TaskTimeline.tsx\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\n\nvar TimelinePanel = function TimelinePanel(_ref) {\n _s();\n var taskId = _ref.taskId,\n isExpanded = _ref.isExpanded,\n onToggle = _ref.onToggle;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(isExpanded ? 'w-full lg:w-80 opacity-100' : 'w-0 lg:w-12 opacity-0 lg:opacity-100', \" border-t lg:border-t-0 lg:border-l border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900/50 flex flex-col transition-all duration-300 overflow-hidden\")\n }, !isExpanded && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"hidden lg:flex flex-col items-center justify-center h-full p-2\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 mt-2 transform rotate-90 whitespace-nowrap\"\n }, t('timeline.activityTimeline'))), isExpanded && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 lg:p-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-sm font-medium text-gray-900 dark:text-gray-100 flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4 mr-2 text-gray-500\"\n }), t('timeline.activityTimeline')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return onToggle();\n },\n className: \"lg:hidden p-1 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 rounded\",\n title: t('timeline.hideTimeline')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-4 w-4\"\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 lg:p-4 flex-1 overflow-hidden\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskTimeline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n taskId: taskId\n }))));\n};\n_s(TimelinePanel, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TimelinePanel;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TimelinePanel);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TimelinePanel\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TimelinePanel.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TodayPlan.tsx":
-/*!************************************************!*\
- !*** ./frontend/components/Task/TodayPlan.tsx ***!
- \************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js\");\n/* harmony import */ var _TaskList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TaskList */ \"./frontend/components/Task/TaskList.tsx\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\n\nvar TodayPlan = function TodayPlan(_ref) {\n _s();\n var todayPlanTasks = _ref.todayPlanTasks,\n projects = _ref.projects,\n onTaskUpdate = _ref.onTaskUpdate,\n onTaskDelete = _ref.onTaskDelete,\n onToggleToday = _ref.onToggleToday;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n\n // Handle undefined or null todayPlanTasks\n var safeTodayPlanTasks = todayPlanTasks || [];\n if (safeTodayPlanTasks.length === 0) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"text-center py-8\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-12 w-12 text-gray-300 dark:text-gray-600 mx-auto mb-4\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-gray-500 dark:text-gray-400 mb-2\"\n }, t('tasks.noPlanToday', 'No tasks planned for today yet')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm text-gray-400 dark:text-gray-500\"\n }, t('tasks.addToPlanHint', 'Use the calendar icons next to suggested tasks to add them to your today plan'))));\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TaskList__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n tasks: safeTodayPlanTasks,\n onTaskUpdate: onTaskUpdate,\n onTaskDelete: onTaskDelete,\n projects: projects,\n onToggleToday: onToggleToday\n }));\n};\n_s(TodayPlan, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TodayPlan;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TodayPlan);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TodayPlan\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TodayPlan.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/TodaySettingsDropdown.tsx":
-/*!************************************************************!*\
- !*** ./frontend/components/Task/TodaySettingsDropdown.tsx ***!
- \************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChatBubbleBottomCenterTextIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/LightBulbIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/SparklesIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/TrophyIcon.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _s = __webpack_require__.$Refresh$.signature();\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n\n\n\nvar TodaySettingsDropdown = function TodaySettingsDropdown(_ref) {\n _s();\n var isOpen = _ref.isOpen,\n onClose = _ref.onClose,\n settings = _ref.settings,\n onSettingsChange = _ref.onSettingsChange;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(settings),\n _useState2 = _slicedToArray(_useState, 2),\n localSettings = _useState2[0],\n setLocalSettings = _useState2[1];\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isSaving = _useState4[0],\n setIsSaving = _useState4[1];\n var dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setLocalSettings(settings);\n }, [settings]);\n\n // Close dropdown when clicking outside\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleClickOutside = function handleClickOutside(event) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n onClose();\n }\n };\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, onClose]);\n var handleToggle = function handleToggle(key) {\n var newSettings = _objectSpread(_objectSpread({}, localSettings), {}, _defineProperty({}, key, !localSettings[key]));\n setLocalSettings(newSettings);\n\n // Auto-save on change\n saveSettings(newSettings);\n };\n var saveSettings = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(settingsToSave) {\n var response, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n setIsSaving(true);\n _context.p = 1;\n _context.n = 2;\n return fetch('/api/profile/today-settings', {\n method: 'PUT',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(settingsToSave)\n });\n case 2:\n response = _context.v;\n if (response.ok) {\n onSettingsChange(settingsToSave);\n } else {\n console.error('Failed to save settings');\n }\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n console.error('Error saving settings:', _t);\n case 4:\n _context.p = 4;\n setIsSaving(false);\n return _context.f(4);\n case 5:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3, 4, 5]]);\n }));\n return function saveSettings(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n if (!isOpen) return null;\n var settingsOptions = [{\n key: 'showDailyQuote',\n label: t('settings.showDailyQuote', 'Show Daily Quote'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n }, {\n key: 'showMetrics',\n label: t('settings.showMetrics', 'Show Metrics'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n }, {\n key: 'showProductivity',\n label: t('settings.showProductivity', 'Show Productivity Insights'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n }, {\n key: 'showIntelligence',\n label: t('settings.showIntelligence', 'Show Intelligence Suggestions'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n }, {\n key: 'showDueToday',\n label: t('settings.showDueToday', 'Show Due Today Tasks'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n }, {\n key: 'showCompleted',\n label: t('settings.showCompleted', 'Show Completed Tasks'),\n icon: _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n }];\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: dropdownRef,\n className: \"absolute right-0 top-full mt-2 w-72 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 z-50\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-sm font-medium text-gray-900 dark:text-gray-100 mb-3\"\n }, t('settings.todayPageSettings', 'Today Page Settings')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"space-y-3\"\n }, settingsOptions.map(function (option) {\n var IconComponent = option.icon;\n var isDisabled = option.disabled || isSaving;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: option.key,\n className: \"flex items-center justify-between \".concat(isDisabled ? 'opacity-60' : '')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center flex-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(IconComponent, {\n className: \"h-4 w-4 text-gray-500 dark:text-gray-400 mr-3\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", {\n className: \"text-sm text-gray-700 dark:text-gray-300 \".concat(!isDisabled ? 'cursor-pointer' : 'cursor-not-allowed', \" flex-1\")\n }, option.label)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n return !isDisabled && handleToggle(option.key);\n },\n disabled: isDisabled,\n className: \"relative inline-flex h-5 w-9 items-center rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed \".concat(localSettings[option.key] ? 'bg-blue-600' : 'bg-gray-200 dark:bg-gray-700')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"inline-block h-3 w-3 transform rounded-full bg-white transition-transform \".concat(localSettings[option.key] ? 'translate-x-5' : 'translate-x-1')\n })));\n })), isSaving && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-3 text-xs text-gray-500 dark:text-gray-400\"\n }, t('common.saving', 'Saving...'))));\n};\n_s(TodaySettingsDropdown, \"dohTXgqX3dM1PMqkzEEw9xXkfY4=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = TodaySettingsDropdown;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TodaySettingsDropdown);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TodaySettingsDropdown\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/TodaySettingsDropdown.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/components/Task/WeeklyCompletionChart.tsx":
-/*!************************************************************!*\
- !*** ./frontend/components/Task/WeeklyCompletionChart.tsx ***!
- \************************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var recharts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! recharts */ \"./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var recharts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! recharts */ \"./node_modules/recharts/es6/chart/BarChart.js\");\n/* harmony import */ var recharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! recharts */ \"./node_modules/recharts/es6/cartesian/XAxis.js\");\n/* harmony import */ var recharts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! recharts */ \"./node_modules/recharts/es6/cartesian/YAxis.js\");\n/* harmony import */ var recharts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! recharts */ \"./node_modules/recharts/es6/component/Tooltip.js\");\n/* harmony import */ var recharts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! recharts */ \"./node_modules/recharts/es6/cartesian/Bar.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n\nvar WeeklyCompletionChart = function WeeklyCompletionChart(_ref) {\n _s();\n var data = _ref.data;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t;\n var CustomTooltip = function CustomTooltip(_ref2) {\n var active = _ref2.active,\n payload = _ref2.payload,\n label = _ref2.label;\n if (active && payload && payload.length) {\n var _data = payload[0].payload;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-800 p-3 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm font-medium text-gray-900 dark:text-gray-100\"\n }, _data.dayName), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm text-gray-600 dark:text-gray-400\"\n }, _data.count, \" \", _data.count === 1 ? t('tasks.taskCompleted') : t('tasks.tasksCompleted')));\n }\n return null;\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"bg-white dark:bg-gray-900 rounded-lg shadow p-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-sm font-medium mb-2 text-gray-700 dark:text-gray-300\"\n }, t('tasks.weeklyCompletions')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"h-40\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(recharts__WEBPACK_IMPORTED_MODULE_2__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(recharts__WEBPACK_IMPORTED_MODULE_3__.BarChart, {\n data: data,\n margin: {\n top: 5,\n right: 5,\n left: 5,\n bottom: 5\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(recharts__WEBPACK_IMPORTED_MODULE_4__.XAxis, {\n dataKey: \"dayName\",\n axisLine: false,\n tickLine: false,\n tick: {\n fontSize: 10,\n fill: 'currentColor',\n className: 'text-gray-600 dark:text-gray-400'\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(recharts__WEBPACK_IMPORTED_MODULE_5__.YAxis, {\n axisLine: false,\n tickLine: false,\n tick: {\n fontSize: 10,\n fill: 'currentColor',\n className: 'text-gray-600 dark:text-gray-400'\n },\n allowDecimals: false,\n width: 25,\n domain: [0, 'dataMax']\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(recharts__WEBPACK_IMPORTED_MODULE_6__.Tooltip, {\n content: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTooltip, null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(recharts__WEBPACK_IMPORTED_MODULE_7__.Bar, {\n dataKey: \"count\",\n fill: \"#3b82f6\",\n radius: [2, 2, 0, 0],\n minPointSize: 2\n })))));\n};\n_s(WeeklyCompletionChart, \"zlIdU9EjM2llFt74AbE2KsUJXyM=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\n});\n_c = WeeklyCompletionChart;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WeeklyCompletionChart);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"WeeklyCompletionChart\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/components/Task/WeeklyCompletionChart.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/hooks/useModalEvents.ts":
-/*!******************************************!*\
- !*** ./frontend/hooks/useModalEvents.ts ***!
- \******************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useModalEvents: () => (/* binding */ useModalEvents)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nvar _s = __webpack_require__.$Refresh$.signature();\n\n\n/**\n * Hook to dispatch global modal events when local modal state changes\n * @param isOpen - Whether the modal is currently open\n */\nvar useModalEvents = function useModalEvents(isOpen) {\n _s();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (isOpen) {\n window.dispatchEvent(new CustomEvent('modalOpen'));\n } else {\n window.dispatchEvent(new CustomEvent('modalClose'));\n }\n }, [isOpen]);\n};\n_s(useModalEvents, \"OD7bBpZva5O2jO+Puf00hKivP7c=\");\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/hooks/useModalEvents.ts?");
-
-/***/ }),
-
-/***/ "./frontend/i18n.ts":
-/*!**************************!*\
- !*** ./frontend/i18n.ts ***!
- \**************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! i18next */ \"./node_modules/i18next/dist/esm/i18next.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* harmony import */ var i18next_http_backend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! i18next-http-backend */ \"./node_modules/i18next-http-backend/esm/index.js\");\n/* harmony import */ var i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! i18next-browser-languagedetector */ \"./node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n\n\n\n\nvar isDevelopment = \"development\" === 'development';\nvar fallbackResources = {\n en: {\n translation: {\n common: {\n loading: 'Loading...',\n appLoading: 'Loading application... Please wait.',\n error: 'Error'\n },\n auth: {\n login: 'Login',\n register: 'Register'\n },\n errors: {\n somethingWentWrong: 'Something went wrong, please try again'\n }\n }\n }\n};\nvar devResources = isDevelopment ? {\n en: {\n translation: fallbackResources.en.translation\n }\n} : undefined;\nvar i18nInstance = i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].use(i18next_http_backend__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).use(i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).use(react_i18next__WEBPACK_IMPORTED_MODULE_1__.initReactI18next);\ni18nInstance.init({\n fallbackLng: 'en',\n debug: isDevelopment,\n load: 'languageOnly',\n supportedLngs: ['en', 'es', 'el', 'jp', 'ua', 'de'],\n nonExplicitSupportedLngs: true,\n resources: devResources,\n detection: {\n order: ['querystring', 'cookie', 'localStorage', 'navigator'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n caches: ['localStorage', 'cookie']\n },\n interpolation: {\n escapeValue: false\n },\n defaultNS: 'translation',\n ns: ['translation'],\n backend: {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n queryStringParams: {\n v: '1'\n },\n requestOptions: {\n cache: 'default',\n credentials: 'same-origin',\n mode: 'cors'\n }\n }\n}).then(function () {\n var loadPath = isDevelopment ? \"./locales/\".concat(i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language, \"/translation.json\") : \"/locales/\".concat(i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language, \"/translation.json\");\n fetch(loadPath).then(function (response) {\n if (!response.ok) {\n if (isDevelopment) {\n return fetch(\"/locales/\".concat(i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language, \"/translation.json\"));\n }\n throw new Error(\"Failed to fetch translation: \".concat(response.status));\n }\n return response.json();\n }).then(function (data) {\n i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addResourceBundle(i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language, 'translation', data, true, true);\n })[\"catch\"](function () {\n if (isDevelopment) {\n try {\n setTimeout(function () {\n fetch(\"/locales/\".concat(i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language, \"/translation.json\"), {\n headers: {\n 'Accept': 'application/json'\n },\n mode: 'cors'\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addResourceBundle(i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language, 'translation', data, true, true);\n })[\"catch\"](function () {});\n }, 1000);\n } catch (e) {}\n }\n });\n});\ni18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].on('initialized', function () {});\ni18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].on('loaded', function () {});\ni18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].on('failedLoading', function () {});\ni18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].on('missingKey', function () {});\nvar dispatchLanguageChangeEvent = function dispatchLanguageChangeEvent(lng) {\n var event = new CustomEvent('app-language-changed', {\n detail: {\n language: lng\n }\n });\n window.dispatchEvent(event);\n};\ni18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].on('languageChanged', function (lng) {\n localStorage.setItem('i18nextLng', lng);\n document.documentElement.lang = lng;\n var handleTranslationsLoaded = function handleTranslationsLoaded() {\n dispatchLanguageChangeEvent(lng);\n if (i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].services && i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].services.resourceStore) {\n var currentNS = i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.defaultNS || 'translation';\n i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reloadResources(lng, currentNS);\n }\n };\n if (!i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasResourceBundle(lng, 'translation')) {\n var loadPath = isDevelopment ? \"./locales/\".concat(lng, \"/translation.json\") : \"/locales/\".concat(lng, \"/translation.json\");\n fetch(loadPath).then(function (response) {\n if (!response.ok) {\n return fetch(\"/locales/\".concat(lng, \"/translation.json\"));\n }\n return response;\n }).then(function (response) {\n return response.json();\n }).then(function (data) {\n if (data) {\n i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addResourceBundle(lng, 'translation', data, true, true);\n handleTranslationsLoaded();\n }\n })[\"catch\"](function () {\n handleTranslationsLoaded();\n });\n } else {\n handleTranslationsLoaded();\n }\n});\nwindow.checkTranslation = function (key) {\n try {\n var translation = i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].t(key);\n return translation;\n } catch (_unused) {\n return null;\n }\n};\nwindow.forceLanguageReload = function (lng) {\n var targetLng = lng || i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language;\n i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reloadResources(targetLng, 'translation').then(function () {\n dispatchLanguageChangeEvent(targetLng);\n if (i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].services && i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].services.resourceStore) {\n Object.values(i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].services.resourceStore.data).forEach(function (lang) {\n if (lang.translation && _typeof(lang.translation) === 'object' && lang.translation !== null) {\n var temp = _objectSpread({}, lang.translation);\n lang.translation = temp;\n }\n });\n }\n if (lng) {\n setTimeout(function () {\n i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"].changeLanguage(targetLng);\n }, 50);\n }\n })[\"catch\"](function () {});\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (i18next__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/i18n.ts?");
-
-/***/ }),
-
-/***/ "./frontend/index.tsx":
-/*!****************************!*\
- !*** ./frontend/index.tsx ***!
- \****************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom/client */ \"./node_modules/react-dom/client.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./App */ \"./frontend/App.tsx\");\n/* harmony import */ var _components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./i18n */ \"./frontend/i18n.ts\");\n/* harmony import */ var _styles_markdown_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles/markdown.css */ \"./frontend/styles/markdown.css\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-i18next */ \"./node_modules/react-i18next/dist/es/index.js\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n// Add type declaration for module.hot\n\n\n\n\n\n\n // Import i18n config to initialize it\n // Import markdown styles\n\n // Import the i18n instance with its configuration\n\nvar storedPreference = localStorage.getItem(\"isDarkMode\");\nvar prefersDarkMode = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\nvar isDarkMode = storedPreference ? storedPreference === \"true\" : prefersDarkMode;\nif (isDarkMode) {\n document.documentElement.classList.add(\"dark\");\n} else {\n document.documentElement.classList.remove(\"dark\");\n}\nvar container = document.getElementById(\"root\");\n\n// Store the root outside the if block so it can be accessed by the HMR code\nvar root;\nif (container) {\n root = (0,react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot)(container);\n root.render(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_i18next__WEBPACK_IMPORTED_MODULE_6__.I18nextProvider, {\n i18n: _i18n__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_7__.BrowserRouter, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_3__.ToastProvider, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_App__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))));\n}\n\n// Hot Module Replacement (HMR) - Remove this snippet to remove HMR.\n// Learn more: https://www.webpackjs.com/concepts/hot-module-replacement/\nif (true) {\n module.hot.accept(/*! ./App */ \"./frontend/App.tsx\", __WEBPACK_OUTDATED_DEPENDENCIES__ => { /* harmony import */ _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./App */ \"./frontend/App.tsx\");\n(function () {\n // New version of App component imported\n if (root) {\n root.render(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_i18next__WEBPACK_IMPORTED_MODULE_6__.I18nextProvider, {\n i18n: _i18n__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_7__.BrowserRouter, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_3__.ToastProvider, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_App__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))));\n }\n })(__WEBPACK_OUTDATED_DEPENDENCIES__); });\n}\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/index.tsx?");
-
-/***/ }),
-
-/***/ "./frontend/store/useStore.ts":
-/*!************************************!*\
- !*** ./frontend/store/useStore.ts ***!
- \************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useStore: () => (/* binding */ useStore)\n/* harmony export */ });\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand */ \"./node_modules/zustand/esm/react.mjs\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\nvar useStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__.create)(function (set) {\n return {\n notesStore: {\n notes: [],\n isLoading: false,\n isError: false,\n setNotes: function setNotes(notes) {\n return set(function (state) {\n return {\n notesStore: _objectSpread(_objectSpread({}, state.notesStore), {}, {\n notes: notes\n })\n };\n });\n },\n setLoading: function setLoading(isLoading) {\n return set(function (state) {\n return {\n notesStore: _objectSpread(_objectSpread({}, state.notesStore), {}, {\n isLoading: isLoading\n })\n };\n });\n },\n setError: function setError(isError) {\n return set(function (state) {\n return {\n notesStore: _objectSpread(_objectSpread({}, state.notesStore), {}, {\n isError: isError\n })\n };\n });\n }\n },\n areasStore: {\n areas: [],\n isLoading: false,\n isError: false,\n setAreas: function setAreas(areas) {\n return set(function (state) {\n return {\n areasStore: _objectSpread(_objectSpread({}, state.areasStore), {}, {\n areas: areas\n })\n };\n });\n },\n setLoading: function setLoading(isLoading) {\n return set(function (state) {\n return {\n areasStore: _objectSpread(_objectSpread({}, state.areasStore), {}, {\n isLoading: isLoading\n })\n };\n });\n },\n setError: function setError(isError) {\n return set(function (state) {\n return {\n areasStore: _objectSpread(_objectSpread({}, state.areasStore), {}, {\n isError: isError\n })\n };\n });\n }\n },\n projectsStore: {\n projects: [],\n isLoading: false,\n isError: false,\n setProjects: function setProjects(projects) {\n return set(function (state) {\n return {\n projectsStore: _objectSpread(_objectSpread({}, state.projectsStore), {}, {\n projects: projects\n })\n };\n });\n },\n setLoading: function setLoading(isLoading) {\n return set(function (state) {\n return {\n projectsStore: _objectSpread(_objectSpread({}, state.projectsStore), {}, {\n isLoading: isLoading\n })\n };\n });\n },\n setError: function setError(isError) {\n return set(function (state) {\n return {\n projectsStore: _objectSpread(_objectSpread({}, state.projectsStore), {}, {\n isError: isError\n })\n };\n });\n }\n },\n tagsStore: {\n tags: [],\n isLoading: false,\n isError: false,\n setTags: function setTags(tags) {\n return set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n tags: tags\n })\n };\n });\n },\n setLoading: function setLoading(isLoading) {\n return set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n isLoading: isLoading\n })\n };\n });\n },\n setError: function setError(isError) {\n return set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n isError: isError\n })\n };\n });\n },\n loadTags: function () {\n var _loadTags = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var _require, fetchTags, tags, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _require = __webpack_require__(/*! ../utils/tagsService */ \"./frontend/utils/tagsService.ts\"), fetchTags = _require.fetchTags;\n set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n isLoading: true,\n isError: false\n })\n };\n });\n _context.p = 1;\n _context.n = 2;\n return fetchTags();\n case 2:\n tags = _context.v;\n set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n tags: tags,\n isLoading: false\n })\n };\n });\n _context.n = 4;\n break;\n case 3:\n _context.p = 3;\n _t = _context.v;\n console.error(\"loadTags: Failed to load tags:\", _t);\n set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n isError: true,\n isLoading: false\n })\n };\n });\n case 4:\n return _context.a(2);\n }\n }, _callee, null, [[1, 3]]);\n }));\n function loadTags() {\n return _loadTags.apply(this, arguments);\n }\n return loadTags;\n }()\n },\n tasksStore: {\n tasks: [],\n isLoading: false,\n isError: false,\n setTasks: function setTasks(tasks) {\n return set(function (state) {\n return {\n tasksStore: _objectSpread(_objectSpread({}, state.tasksStore), {}, {\n tasks: tasks\n })\n };\n });\n },\n setLoading: function setLoading(isLoading) {\n return set(function (state) {\n return {\n tasksStore: _objectSpread(_objectSpread({}, state.tasksStore), {}, {\n isLoading: isLoading\n })\n };\n });\n },\n setError: function setError(isError) {\n return set(function (state) {\n return {\n tasksStore: _objectSpread(_objectSpread({}, state.tasksStore), {}, {\n isError: isError\n })\n };\n });\n }\n },\n inboxStore: {\n inboxItems: [],\n isLoading: false,\n isError: false,\n setInboxItems: function setInboxItems(inboxItems) {\n return set(function (state) {\n return {\n inboxStore: _objectSpread(_objectSpread({}, state.inboxStore), {}, {\n inboxItems: inboxItems\n })\n };\n });\n },\n addInboxItem: function addInboxItem(inboxItem) {\n return set(function (state) {\n return {\n inboxStore: _objectSpread(_objectSpread({}, state.inboxStore), {}, {\n inboxItems: [].concat(_toConsumableArray(state.inboxStore.inboxItems), [inboxItem])\n })\n };\n });\n },\n updateInboxItem: function updateInboxItem(inboxItem) {\n return set(function (state) {\n return {\n inboxStore: _objectSpread(_objectSpread({}, state.inboxStore), {}, {\n inboxItems: state.inboxStore.inboxItems.map(function (item) {\n return item.id === inboxItem.id ? inboxItem : item;\n })\n })\n };\n });\n },\n removeInboxItem: function removeInboxItem(id) {\n return set(function (state) {\n return {\n inboxStore: _objectSpread(_objectSpread({}, state.inboxStore), {}, {\n inboxItems: state.inboxStore.inboxItems.filter(function (item) {\n return item.id !== id;\n })\n })\n };\n });\n },\n setLoading: function setLoading(isLoading) {\n return set(function (state) {\n return {\n inboxStore: _objectSpread(_objectSpread({}, state.inboxStore), {}, {\n isLoading: isLoading\n })\n };\n });\n },\n setError: function setError(isError) {\n return set(function (state) {\n return {\n inboxStore: _objectSpread(_objectSpread({}, state.inboxStore), {}, {\n isError: isError\n })\n };\n });\n }\n }\n };\n});\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/store/useStore.ts?");
-
-/***/ }),
-
-/***/ "./frontend/styles/markdown.css":
-/*!**************************************!*\
- !*** ./frontend/styles/markdown.css ***!
- \**************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./markdown.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./frontend/styles/markdown.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\nif (true) {\n if (!_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals || module.hot.invalidate) {\n var isEqualLocals = function isEqualLocals(a, b, isNamedExport) {\n if (!a && b || a && !b) {\n return false;\n }\n var p;\n for (p in a) {\n if (isNamedExport && p === \"default\") {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (a[p] !== b[p]) {\n return false;\n }\n }\n for (p in b) {\n if (isNamedExport && p === \"default\") {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (!a[p]) {\n return false;\n }\n }\n return true;\n};\n var isNamedExport = !_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals;\n var oldLocals = isNamedExport ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__ : _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals;\n\n module.hot.accept(\n /*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./markdown.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./frontend/styles/markdown.css\",\n __WEBPACK_OUTDATED_DEPENDENCIES__ => { /* harmony import */ _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./markdown.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./frontend/styles/markdown.css\");\n(function () {\n if (!isEqualLocals(oldLocals, isNamedExport ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__ : _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals, isNamedExport)) {\n module.hot.invalidate();\n\n return;\n }\n\n oldLocals = isNamedExport ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__ : _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals;\n\n update(_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n })(__WEBPACK_OUTDATED_DEPENDENCIES__); }\n )\n }\n\n module.hot.dispose(function() {\n update();\n });\n}\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_markdown_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://tududi/./frontend/styles/markdown.css?");
-
-/***/ }),
-
-/***/ "./frontend/styles/tailwind.css":
-/*!**************************************!*\
- !*** ./frontend/styles/tailwind.css ***!
- \**************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./tailwind.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./frontend/styles/tailwind.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\nif (true) {\n if (!_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals || module.hot.invalidate) {\n var isEqualLocals = function isEqualLocals(a, b, isNamedExport) {\n if (!a && b || a && !b) {\n return false;\n }\n var p;\n for (p in a) {\n if (isNamedExport && p === \"default\") {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (a[p] !== b[p]) {\n return false;\n }\n }\n for (p in b) {\n if (isNamedExport && p === \"default\") {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (!a[p]) {\n return false;\n }\n }\n return true;\n};\n var isNamedExport = !_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals;\n var oldLocals = isNamedExport ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__ : _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals;\n\n module.hot.accept(\n /*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./tailwind.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./frontend/styles/tailwind.css\",\n __WEBPACK_OUTDATED_DEPENDENCIES__ => { /* harmony import */ _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./tailwind.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./frontend/styles/tailwind.css\");\n(function () {\n if (!isEqualLocals(oldLocals, isNamedExport ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__ : _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals, isNamedExport)) {\n module.hot.invalidate();\n\n return;\n }\n\n oldLocals = isNamedExport ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__ : _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals;\n\n update(_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n })(__WEBPACK_OUTDATED_DEPENDENCIES__); }\n )\n }\n\n module.hot.dispose(function() {\n update();\n });\n}\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_tailwind_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://tududi/./frontend/styles/tailwind.css?");
-
-/***/ }),
-
-/***/ "./frontend/utils/areasService.ts":
-/*!****************************************!*\
- !*** ./frontend/utils/areasService.ts ***!
- \****************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createArea: () => (/* binding */ createArea),\n/* harmony export */ deleteArea: () => (/* binding */ deleteArea),\n/* harmony export */ fetchAreas: () => (/* binding */ fetchAreas),\n/* harmony export */ updateArea: () => (/* binding */ updateArea)\n/* harmony export */ });\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\nvar fetchAreas = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return fetch(\"/api/areas?active=true\", {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch areas.');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n return _context.a(2, _context.v);\n }\n }, _callee);\n }));\n return function fetchAreas() {\n return _ref.apply(this, arguments);\n };\n}();\nvar createArea = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(areaData) {\n var response;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.n = 1;\n return fetch('/api/areas', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(areaData)\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to create area.');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n return _context2.a(2, _context2.v);\n }\n }, _callee2);\n }));\n return function createArea(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\nvar updateArea = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(areaId, areaData) {\n var response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return fetch(\"/api/areas/\".concat(areaId), {\n method: 'PATCH',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(areaData)\n });\n case 1:\n response = _context3.v;\n _context3.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update area.');\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n return _context3.a(2, _context3.v);\n }\n }, _callee3);\n }));\n return function updateArea(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\nvar deleteArea = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(areaId) {\n var response;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return fetch(\"/api/areas/\".concat(areaId), {\n method: 'DELETE',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context4.v;\n _context4.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to delete area.');\n case 2:\n return _context4.a(2);\n }\n }, _callee4);\n }));\n return function deleteArea(_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/areasService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/authUtils.ts":
-/*!*************************************!*\
- !*** ./frontend/utils/authUtils.ts ***!
- \*************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDefaultHeaders: () => (/* binding */ getDefaultHeaders),\n/* harmony export */ getPostHeaders: () => (/* binding */ getPostHeaders),\n/* harmony export */ handleAuthResponse: () => (/* binding */ handleAuthResponse),\n/* harmony export */ isAuthError: () => (/* binding */ isAuthError)\n/* harmony export */ });\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar getDefaultHeaders = function getDefaultHeaders() {\n return {\n 'Accept': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'Origin': window.location.origin\n };\n};\nvar getPostHeaders = function getPostHeaders() {\n return _objectSpread(_objectSpread({}, getDefaultHeaders()), {}, {\n 'Content-Type': 'application/json'\n });\n};\nvar isRedirecting = false;\nvar handleAuthResponse = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(response, errorMessage) {\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (response.ok) {\n _context.n = 2;\n break;\n }\n if (!(response.status === 401)) {\n _context.n = 1;\n break;\n }\n if (window.location.pathname !== '/login' && !isRedirecting) {\n isRedirecting = true;\n setTimeout(function () {\n window.location.href = '/login';\n }, 100);\n }\n throw new Error('Authentication required');\n case 1:\n throw new Error(errorMessage);\n case 2:\n return _context.a(2, response);\n }\n }, _callee);\n }));\n return function handleAuthResponse(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\nvar isAuthError = function isAuthError(error) {\n return (error === null || error === void 0 ? void 0 : error.message) && error.message.includes('Authentication required');\n};\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/authUtils.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/dateUtils.ts":
-/*!*************************************!*\
- !*** ./frontend/utils/dateUtils.ts ***!
- \*************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formatDateTime: () => (/* binding */ formatDateTime),\n/* harmony export */ formatDayMonth: () => (/* binding */ formatDayMonth),\n/* harmony export */ formatLocalizedDate: () => (/* binding */ formatLocalizedDate),\n/* harmony export */ formatLongDate: () => (/* binding */ formatLongDate),\n/* harmony export */ formatMonthYear: () => (/* binding */ formatMonthYear),\n/* harmony export */ formatShortDate: () => (/* binding */ formatShortDate),\n/* harmony export */ formatTime: () => (/* binding */ formatTime),\n/* harmony export */ getCurrentLocale: () => (/* binding */ getCurrentLocale),\n/* harmony export */ getDateFormatPattern: () => (/* binding */ getDateFormatPattern),\n/* harmony export */ isTaskOverdue: () => (/* binding */ isTaskOverdue)\n/* harmony export */ });\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/format.js\");\n/* harmony import */ var date_fns_locale_en_US__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! date-fns/locale/en-US */ \"./node_modules/date-fns/locale/en-US.js\");\n/* harmony import */ var date_fns_locale_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! date-fns/locale/es */ \"./node_modules/date-fns/locale/es.js\");\n/* harmony import */ var date_fns_locale_el__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! date-fns/locale/el */ \"./node_modules/date-fns/locale/el.js\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../i18n */ \"./frontend/i18n.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n\n\n\n\n\n\n/**\r\n * Maps i18next language codes to date-fns locale objects\r\n */\nvar localeMap = {\n en: date_fns_locale_en_US__WEBPACK_IMPORTED_MODULE_1__.enUS,\n es: date_fns_locale_es__WEBPACK_IMPORTED_MODULE_2__.es,\n el: date_fns_locale_el__WEBPACK_IMPORTED_MODULE_3__.el\n};\n\n/**\r\n * Returns the date-fns locale object based on the current i18next language\r\n * Falls back to English if the current language is not supported\r\n */\nvar getCurrentLocale = function getCurrentLocale() {\n var language = _i18n__WEBPACK_IMPORTED_MODULE_0__[\"default\"].language || 'en';\n return localeMap[language] || date_fns_locale_en_US__WEBPACK_IMPORTED_MODULE_1__.enUS;\n};\n\n/**\r\n * Formats a date using the current locale from i18next\r\n * \r\n * @param date - The date to format\r\n * @param formatStr - The format string (https://date-fns.org/v2.29.3/docs/format)\r\n * @returns The formatted date string\r\n */\nvar formatLocalizedDate = function formatLocalizedDate(date, formatStr) {\n return (0,date_fns__WEBPACK_IMPORTED_MODULE_4__.format)(date, formatStr, {\n locale: getCurrentLocale()\n });\n};\n\n/**\r\n * Gets the date format pattern from translation file\r\n * \r\n * @param formatKey - The key for the format in the dateFormats object\r\n * @param fallback - Fallback format to use if translation is missing\r\n * @returns The format pattern string\r\n */\nvar getDateFormatPattern = function getDateFormatPattern(formatKey, fallback) {\n var pattern = _i18n__WEBPACK_IMPORTED_MODULE_0__[\"default\"].t(\"dateFormats.\".concat(formatKey));\n // If the translation key doesn't exist, it will return the key itself\n return pattern === \"dateFormats.\".concat(formatKey) ? fallback : pattern;\n};\n\n/**\r\n * Formats a date in a long readable format based on the current locale\r\n * Example: \"Monday, January 1, 2023\" (in English)\r\n * \r\n * @param date - The date to format\r\n * @returns The formatted date string\r\n */\nvar formatLongDate = function formatLongDate(date) {\n return formatLocalizedDate(date, getDateFormatPattern('long', 'EEEE, MMMM d, yyyy'));\n};\n\n/**\r\n * Formats a date in a short format based on the current locale\r\n * Example: \"Jan 1, 2023\" (in English)\r\n * \r\n * @param date - The date to format\r\n * @returns The formatted date string\r\n */\nvar formatShortDate = function formatShortDate(date) {\n return formatLocalizedDate(date, getDateFormatPattern('short', 'MMM d, yyyy'));\n};\n\n/**\r\n * Formats a date to show only month and year based on the current locale\r\n * Example: \"January 2023\" (in English)\r\n * \r\n * @param date - The date to format\r\n * @returns The formatted date string\r\n */\nvar formatMonthYear = function formatMonthYear(date) {\n return formatLocalizedDate(date, getDateFormatPattern('monthYear', 'MMMM yyyy'));\n};\n\n/**\r\n * Formats a date to show only day and month based on the current locale\r\n * Example: \"January 1\" (in English)\r\n * \r\n * @param date - The date to format\r\n * @returns The formatted date string\r\n */\nvar formatDayMonth = function formatDayMonth(date) {\n return formatLocalizedDate(date, getDateFormatPattern('dayMonth', 'MMMM d'));\n};\n\n/**\r\n * Formats a date to show only time based on the current locale\r\n * Example: \"3:30 PM\" (in English)\r\n * \r\n * @param date - The date to format\r\n * @returns The formatted time string\r\n */\nvar formatTime = function formatTime(date) {\n return formatLocalizedDate(date, getDateFormatPattern('time', 'h:mm a'));\n};\n\n/**\r\n * Formats a date to show date and time based on the current locale\r\n * Example: \"Jan 1, 2023 3:30 PM\" (in English)\r\n * \r\n * @param date - The date to format\r\n * @returns The formatted date and time string\r\n */\nvar formatDateTime = function formatDateTime(date) {\n return formatLocalizedDate(date, getDateFormatPattern('dateTime', 'MMM d, yyyy h:mm a'));\n};\n\n/**\r\n * Checks if a task in today plan has been there for more than a day (likely overdue)\r\n * \r\n * @param task - The task to check\r\n * @returns True if the task is likely overdue in today plan, false otherwise\r\n */\nvar isTaskOverdue = function isTaskOverdue(task) {\n // If task is not in today plan, it's not overdue\n if (!task.today) {\n return false;\n }\n\n // Only hide overdue badge if task is actually completed (done/archived), not just in progress\n if (task.completed_at || task.status === 'done' || task.status === 2 || task.status === 'archived' || task.status === 3) {\n return false;\n }\n\n // If task has been moved to today multiple times, it's likely been sitting around\n if (task.today_move_count && task.today_move_count > 1) {\n return true;\n }\n\n // If no creation date, can't determine if overdue\n if (!task.created_at) {\n return false;\n }\n var createdDate = new Date(task.created_at);\n var yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n yesterday.setHours(23, 59, 59, 999); // End of yesterday\n\n // Task is likely overdue if created before end of yesterday and is in today plan\n // This is an approximation - tasks created yesterday or earlier that are in today plan\n // are likely to have been sitting there for a while\n return createdDate.getTime() < yesterday.getTime();\n};\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/dateUtils.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/inboxService.ts":
-/*!****************************************!*\
- !*** ./frontend/utils/inboxService.ts ***!
- \****************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createInboxItem: () => (/* binding */ createInboxItem),\n/* harmony export */ createInboxItemWithStore: () => (/* binding */ createInboxItemWithStore),\n/* harmony export */ deleteInboxItem: () => (/* binding */ deleteInboxItem),\n/* harmony export */ deleteInboxItemWithStore: () => (/* binding */ deleteInboxItemWithStore),\n/* harmony export */ fetchInboxItems: () => (/* binding */ fetchInboxItems),\n/* harmony export */ loadInboxItemsToStore: () => (/* binding */ loadInboxItemsToStore),\n/* harmony export */ processInboxItem: () => (/* binding */ processInboxItem),\n/* harmony export */ processInboxItemWithStore: () => (/* binding */ processInboxItemWithStore),\n/* harmony export */ updateInboxItem: () => (/* binding */ updateInboxItem),\n/* harmony export */ updateInboxItemWithStore: () => (/* binding */ updateInboxItemWithStore)\n/* harmony export */ });\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\n\n\n// API functions\nvar fetchInboxItems = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response, result;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return fetch('/api/inbox', {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_1__.handleAuthResponse)(response, 'Failed to fetch inbox items.');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n result = _context.v;\n if (Array.isArray(result)) {\n _context.n = 4;\n break;\n }\n throw new Error('Resulting inbox items are not an array.');\n case 4:\n return _context.a(2, result);\n }\n }, _callee);\n }));\n return function fetchInboxItems() {\n return _ref.apply(this, arguments);\n };\n}();\nvar createInboxItem = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(content) {\n var source,\n response,\n _args2 = arguments;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n source = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : 'tududi';\n _context2.n = 1;\n return fetch('/api/inbox', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n content: content,\n source: source\n })\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_1__.handleAuthResponse)(response, 'Failed to create inbox item.');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n return _context2.a(2, _context2.v);\n }\n }, _callee2);\n }));\n return function createInboxItem(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\nvar updateInboxItem = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(itemId, content) {\n var response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return fetch(\"/api/inbox/\".concat(itemId), {\n method: 'PATCH',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n content: content\n })\n });\n case 1:\n response = _context3.v;\n _context3.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_1__.handleAuthResponse)(response, 'Failed to update inbox item.');\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n return _context3.a(2, _context3.v);\n }\n }, _callee3);\n }));\n return function updateInboxItem(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\nvar processInboxItem = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(itemId) {\n var response;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return fetch(\"/api/inbox/\".concat(itemId, \"/process\"), {\n method: 'PATCH',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context4.v;\n _context4.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_1__.handleAuthResponse)(response, 'Failed to process inbox item.');\n case 2:\n _context4.n = 3;\n return response.json();\n case 3:\n return _context4.a(2, _context4.v);\n }\n }, _callee4);\n }));\n return function processInboxItem(_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\nvar deleteInboxItem = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(itemId) {\n var response;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.n = 1;\n return fetch(\"/api/inbox/\".concat(itemId), {\n method: 'DELETE',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context5.v;\n _context5.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_1__.handleAuthResponse)(response, 'Failed to delete inbox item.');\n case 2:\n return _context5.a(2);\n }\n }, _callee5);\n }));\n return function deleteInboxItem(_x5) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n// Track last check time to detect new items\nvar lastCheckTimestamp = Date.now();\n\n// Store-aware functions\nvar loadInboxItemsToStore = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() {\n var inboxStore, items, currentItemIds, currentTime, newTelegramItems, notificationData, _t;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n inboxStore = _store_useStore__WEBPACK_IMPORTED_MODULE_0__.useStore.getState().inboxStore; // Only show loading for initial load\n if (inboxStore.inboxItems.length === 0) {\n inboxStore.setLoading(true);\n }\n _context6.p = 1;\n _context6.n = 2;\n return fetchInboxItems();\n case 2:\n items = _context6.v;\n // Check for new items since last check\n currentItemIds = new Set(inboxStore.inboxItems.map(function (item) {\n return item.id;\n }));\n currentTime = Date.now(); // New telegram items\n newTelegramItems = items.filter(function (item) {\n return item.id && !currentItemIds.has(item.id) && item.source === 'telegram';\n }); // Only show notifications if we have detected changes\n if (inboxStore.inboxItems.length > 0 && newTelegramItems.length > 0) {\n // Instead of trying to show toast directly (which won't work outside of React components),\n // dispatch a custom event that the component can listen for and show toasts\n // Get some minimal info about the items for the notification\n notificationData = {\n count: newTelegramItems.length,\n firstItemContent: newTelegramItems[0].content.substring(0, 30) + (newTelegramItems[0].content.length > 30 ? '...' : '')\n }; // Dispatch a custom event with the notification data\n window.dispatchEvent(new CustomEvent('inboxItemsUpdated', {\n detail: notificationData\n }));\n }\n\n // Update state and timestamp\n inboxStore.setInboxItems(items);\n inboxStore.setError(false);\n lastCheckTimestamp = currentTime;\n _context6.n = 4;\n break;\n case 3:\n _context6.p = 3;\n _t = _context6.v;\n console.error('Failed to load inbox items:', _t);\n inboxStore.setError(true);\n case 4:\n _context6.p = 4;\n inboxStore.setLoading(false);\n return _context6.f(4);\n case 5:\n return _context6.a(2);\n }\n }, _callee6, null, [[1, 3, 4, 5]]);\n }));\n return function loadInboxItemsToStore() {\n return _ref6.apply(this, arguments);\n };\n}();\nvar createInboxItemWithStore = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(content) {\n var source,\n inboxStore,\n newItem,\n _args7 = arguments,\n _t2;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n source = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : 'tududi';\n inboxStore = _store_useStore__WEBPACK_IMPORTED_MODULE_0__.useStore.getState().inboxStore;\n _context7.p = 1;\n _context7.n = 2;\n return createInboxItem(content, source);\n case 2:\n newItem = _context7.v;\n inboxStore.addInboxItem(newItem);\n return _context7.a(2, newItem);\n case 3:\n _context7.p = 3;\n _t2 = _context7.v;\n console.error('Failed to create inbox item:', _t2);\n throw _t2;\n case 4:\n return _context7.a(2);\n }\n }, _callee7, null, [[1, 3]]);\n }));\n return function createInboxItemWithStore(_x6) {\n return _ref7.apply(this, arguments);\n };\n}();\nvar updateInboxItemWithStore = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(itemId, content) {\n var inboxStore, updatedItem, _t3;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n inboxStore = _store_useStore__WEBPACK_IMPORTED_MODULE_0__.useStore.getState().inboxStore;\n _context8.p = 1;\n _context8.n = 2;\n return updateInboxItem(itemId, content);\n case 2:\n updatedItem = _context8.v;\n inboxStore.updateInboxItem(updatedItem);\n return _context8.a(2, updatedItem);\n case 3:\n _context8.p = 3;\n _t3 = _context8.v;\n console.error('Failed to update inbox item:', _t3);\n throw _t3;\n case 4:\n return _context8.a(2);\n }\n }, _callee8, null, [[1, 3]]);\n }));\n return function updateInboxItemWithStore(_x7, _x8) {\n return _ref8.apply(this, arguments);\n };\n}();\nvar processInboxItemWithStore = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9(itemId) {\n var inboxStore, processedItem, _t4;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n inboxStore = _store_useStore__WEBPACK_IMPORTED_MODULE_0__.useStore.getState().inboxStore;\n _context9.p = 1;\n _context9.n = 2;\n return processInboxItem(itemId);\n case 2:\n processedItem = _context9.v;\n inboxStore.removeInboxItem(itemId);\n return _context9.a(2, processedItem);\n case 3:\n _context9.p = 3;\n _t4 = _context9.v;\n console.error('Failed to process inbox item:', _t4);\n throw _t4;\n case 4:\n return _context9.a(2);\n }\n }, _callee9, null, [[1, 3]]);\n }));\n return function processInboxItemWithStore(_x9) {\n return _ref9.apply(this, arguments);\n };\n}();\nvar deleteInboxItemWithStore = /*#__PURE__*/function () {\n var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0(itemId) {\n var inboxStore, _t5;\n return _regenerator().w(function (_context0) {\n while (1) switch (_context0.n) {\n case 0:\n inboxStore = _store_useStore__WEBPACK_IMPORTED_MODULE_0__.useStore.getState().inboxStore;\n _context0.p = 1;\n _context0.n = 2;\n return deleteInboxItem(itemId);\n case 2:\n inboxStore.removeInboxItem(itemId);\n _context0.n = 4;\n break;\n case 3:\n _context0.p = 3;\n _t5 = _context0.v;\n console.error('Failed to delete inbox item:', _t5);\n throw _t5;\n case 4:\n return _context0.a(2);\n }\n }, _callee0, null, [[1, 3]]);\n }));\n return function deleteInboxItemWithStore(_x0) {\n return _ref0.apply(this, arguments);\n };\n}();\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/inboxService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/notesService.ts":
-/*!****************************************!*\
- !*** ./frontend/utils/notesService.ts ***!
- \****************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createNote: () => (/* binding */ createNote),\n/* harmony export */ deleteNote: () => (/* binding */ deleteNote),\n/* harmony export */ fetchNotes: () => (/* binding */ fetchNotes),\n/* harmony export */ updateNote: () => (/* binding */ updateNote)\n/* harmony export */ });\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\nvar fetchNotes = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return fetch(\"/api/notes\", {\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getDefaultHeaders)()\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch notes.');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n return _context.a(2, _context.v);\n }\n }, _callee);\n }));\n return function fetchNotes() {\n return _ref.apply(this, arguments);\n };\n}();\nvar createNote = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(noteData) {\n var response, _t;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return fetch('/api/note', {\n method: 'POST',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getPostHeaders)(),\n body: JSON.stringify(noteData)\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to create note.');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n return _context2.a(2, _context2.v);\n case 4:\n _context2.p = 4;\n _t = _context2.v;\n throw _t;\n case 5:\n return _context2.a(2);\n }\n }, _callee2, null, [[0, 4]]);\n }));\n return function createNote(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\nvar updateNote = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(noteId, noteData) {\n var response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return fetch(\"/api/note/\".concat(noteId), {\n method: 'PATCH',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getPostHeaders)(),\n body: JSON.stringify(noteData)\n });\n case 1:\n response = _context3.v;\n _context3.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update note.');\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n return _context3.a(2, _context3.v);\n }\n }, _callee3);\n }));\n return function updateNote(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\nvar deleteNote = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(noteId) {\n var response;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return fetch(\"/api/note/\".concat(noteId), {\n method: 'DELETE',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getDefaultHeaders)()\n });\n case 1:\n response = _context4.v;\n _context4.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to delete note.');\n case 2:\n return _context4.a(2);\n }\n }, _callee4);\n }));\n return function deleteNote(_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/notesService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/profileService.ts":
-/*!******************************************!*\
- !*** ./frontend/utils/profileService.ts ***!
- \******************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fetchProfile: () => (/* binding */ fetchProfile),\n/* harmony export */ fetchSchedulerStatus: () => (/* binding */ fetchSchedulerStatus),\n/* harmony export */ fetchTelegramPollingStatus: () => (/* binding */ fetchTelegramPollingStatus),\n/* harmony export */ getAutoSuggestNextActionsEnabled: () => (/* binding */ getAutoSuggestNextActionsEnabled),\n/* harmony export */ getNextTaskSuggestionEnabled: () => (/* binding */ getNextTaskSuggestionEnabled),\n/* harmony export */ getProductivityAssistantEnabled: () => (/* binding */ getProductivityAssistantEnabled),\n/* harmony export */ getTaskIntelligenceEnabled: () => (/* binding */ getTaskIntelligenceEnabled),\n/* harmony export */ sendTaskSummaryNow: () => (/* binding */ sendTaskSummaryNow),\n/* harmony export */ setupTelegram: () => (/* binding */ setupTelegram),\n/* harmony export */ startTelegramPolling: () => (/* binding */ startTelegramPolling),\n/* harmony export */ stopTelegramPolling: () => (/* binding */ stopTelegramPolling),\n/* harmony export */ testTelegram: () => (/* binding */ testTelegram),\n/* harmony export */ toggleTaskSummary: () => (/* binding */ toggleTaskSummary),\n/* harmony export */ updateProfile: () => (/* binding */ updateProfile),\n/* harmony export */ updateTaskSummaryFrequency: () => (/* binding */ updateTaskSummaryFrequency)\n/* harmony export */ });\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\nvar fetchProfile = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return fetch('/api/profile', {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch profile data.');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n return _context.a(2, _context.v);\n }\n }, _callee);\n }));\n return function fetchProfile() {\n return _ref.apply(this, arguments);\n };\n}();\nvar updateProfile = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(profileData) {\n var response;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.n = 1;\n return fetch('/api/profile', {\n method: 'PATCH',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(profileData)\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update profile.');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n return _context2.a(2, _context2.v);\n }\n }, _callee2);\n }));\n return function updateProfile(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\nvar fetchSchedulerStatus = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return fetch('/api/profile/task-summary/status', {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context3.v;\n _context3.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch scheduler status.');\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n return _context3.a(2, _context3.v);\n }\n }, _callee3);\n }));\n return function fetchSchedulerStatus() {\n return _ref3.apply(this, arguments);\n };\n}();\nvar sendTaskSummaryNow = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {\n var response;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return fetch('/api/profile/task-summary/send-now', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context4.v;\n _context4.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to send task summary.');\n case 2:\n _context4.n = 3;\n return response.json();\n case 3:\n return _context4.a(2, _context4.v);\n }\n }, _callee4);\n }));\n return function sendTaskSummaryNow() {\n return _ref4.apply(this, arguments);\n };\n}();\nvar fetchTelegramPollingStatus = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {\n var response;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.n = 1;\n return fetch('/api/telegram/polling-status', {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context5.v;\n _context5.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch polling status.');\n case 2:\n _context5.n = 3;\n return response.json();\n case 3:\n return _context5.a(2, _context5.v);\n }\n }, _callee5);\n }));\n return function fetchTelegramPollingStatus() {\n return _ref5.apply(this, arguments);\n };\n}();\nvar setupTelegram = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(botToken, chatId) {\n var response;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.n = 1;\n return fetch('/api/telegram/setup', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n bot_token: botToken,\n chat_id: chatId\n })\n });\n case 1:\n response = _context6.v;\n _context6.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to setup telegram.');\n case 2:\n _context6.n = 3;\n return response.json();\n case 3:\n return _context6.a(2, _context6.v);\n }\n }, _callee6);\n }));\n return function setupTelegram(_x2, _x3) {\n return _ref6.apply(this, arguments);\n };\n}();\nvar startTelegramPolling = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {\n var response;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n _context7.n = 1;\n return fetch('/api/telegram/start-polling', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context7.v;\n _context7.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to start telegram polling.');\n case 2:\n _context7.n = 3;\n return response.json();\n case 3:\n return _context7.a(2, _context7.v);\n }\n }, _callee7);\n }));\n return function startTelegramPolling() {\n return _ref7.apply(this, arguments);\n };\n}();\nvar stopTelegramPolling = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8() {\n var response;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n _context8.n = 1;\n return fetch('/api/telegram/stop-polling', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context8.v;\n _context8.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to stop telegram polling.');\n case 2:\n _context8.n = 3;\n return response.json();\n case 3:\n return _context8.a(2, _context8.v);\n }\n }, _callee8);\n }));\n return function stopTelegramPolling() {\n return _ref8.apply(this, arguments);\n };\n}();\nvar testTelegram = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9(userId, message) {\n var response;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n _context9.n = 1;\n return fetch(\"/api/telegram/test/\".concat(userId), {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n text: message\n })\n });\n case 1:\n response = _context9.v;\n _context9.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to send test message.');\n case 2:\n _context9.n = 3;\n return response.json();\n case 3:\n return _context9.a(2, _context9.v);\n }\n }, _callee9);\n }));\n return function testTelegram(_x4, _x5) {\n return _ref9.apply(this, arguments);\n };\n}();\nvar toggleTaskSummary = /*#__PURE__*/function () {\n var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {\n var response;\n return _regenerator().w(function (_context0) {\n while (1) switch (_context0.n) {\n case 0:\n _context0.n = 1;\n return fetch('/api/profile/task-summary/toggle', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context0.v;\n _context0.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to toggle task summary.');\n case 2:\n _context0.n = 3;\n return response.json();\n case 3:\n return _context0.a(2, _context0.v);\n }\n }, _callee0);\n }));\n return function toggleTaskSummary() {\n return _ref0.apply(this, arguments);\n };\n}();\nvar updateTaskSummaryFrequency = /*#__PURE__*/function () {\n var _ref1 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1(frequency) {\n var response;\n return _regenerator().w(function (_context1) {\n while (1) switch (_context1.n) {\n case 0:\n _context1.n = 1;\n return fetch('/api/profile/task-summary/frequency', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n frequency: frequency\n })\n });\n case 1:\n response = _context1.v;\n _context1.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update task summary frequency.');\n case 2:\n _context1.n = 3;\n return response.json();\n case 3:\n return _context1.a(2, _context1.v);\n }\n }, _callee1);\n }));\n return function updateTaskSummaryFrequency(_x6) {\n return _ref1.apply(this, arguments);\n };\n}();\nvar getTaskIntelligenceEnabled = /*#__PURE__*/function () {\n var _ref10 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee10() {\n var profile, _t;\n return _regenerator().w(function (_context10) {\n while (1) switch (_context10.n) {\n case 0:\n _context10.p = 0;\n _context10.n = 1;\n return fetchProfile();\n case 1:\n profile = _context10.v;\n return _context10.a(2, profile.task_intelligence_enabled !== undefined ? profile.task_intelligence_enabled : true);\n case 2:\n _context10.p = 2;\n _t = _context10.v;\n console.error('Error fetching task intelligence setting:', _t);\n return _context10.a(2, true);\n }\n }, _callee10, null, [[0, 2]]);\n }));\n return function getTaskIntelligenceEnabled() {\n return _ref10.apply(this, arguments);\n };\n}();\nvar getAutoSuggestNextActionsEnabled = /*#__PURE__*/function () {\n var _ref11 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee11() {\n var profile, _t2;\n return _regenerator().w(function (_context11) {\n while (1) switch (_context11.n) {\n case 0:\n _context11.p = 0;\n _context11.n = 1;\n return fetchProfile();\n case 1:\n profile = _context11.v;\n return _context11.a(2, profile.auto_suggest_next_actions_enabled !== undefined ? profile.auto_suggest_next_actions_enabled : true);\n case 2:\n _context11.p = 2;\n _t2 = _context11.v;\n console.error('Error fetching auto-suggest next actions setting:', _t2);\n return _context11.a(2, true);\n }\n }, _callee11, null, [[0, 2]]);\n }));\n return function getAutoSuggestNextActionsEnabled() {\n return _ref11.apply(this, arguments);\n };\n}();\nvar getProductivityAssistantEnabled = /*#__PURE__*/function () {\n var _ref12 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee12() {\n var profile, _t3;\n return _regenerator().w(function (_context12) {\n while (1) switch (_context12.n) {\n case 0:\n _context12.p = 0;\n _context12.n = 1;\n return fetchProfile();\n case 1:\n profile = _context12.v;\n return _context12.a(2, profile.productivity_assistant_enabled !== undefined ? profile.productivity_assistant_enabled : true);\n case 2:\n _context12.p = 2;\n _t3 = _context12.v;\n console.error('Error fetching productivity assistant setting:', _t3);\n return _context12.a(2, true);\n }\n }, _callee12, null, [[0, 2]]);\n }));\n return function getProductivityAssistantEnabled() {\n return _ref12.apply(this, arguments);\n };\n}();\nvar getNextTaskSuggestionEnabled = /*#__PURE__*/function () {\n var _ref13 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee13() {\n var profile, _t4;\n return _regenerator().w(function (_context13) {\n while (1) switch (_context13.n) {\n case 0:\n _context13.p = 0;\n _context13.n = 1;\n return fetchProfile();\n case 1:\n profile = _context13.v;\n return _context13.a(2, profile.next_task_suggestion_enabled !== undefined ? profile.next_task_suggestion_enabled : true);\n case 2:\n _context13.p = 2;\n _t4 = _context13.v;\n console.error('Error fetching next task suggestion setting:', _t4);\n return _context13.a(2, true);\n }\n }, _callee13, null, [[0, 2]]);\n }));\n return function getNextTaskSuggestionEnabled() {\n return _ref13.apply(this, arguments);\n };\n}();\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/profileService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/projectsService.ts":
-/*!*******************************************!*\
- !*** ./frontend/utils/projectsService.ts ***!
- \*******************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createProject: () => (/* binding */ createProject),\n/* harmony export */ deleteProject: () => (/* binding */ deleteProject),\n/* harmony export */ fetchGroupedProjects: () => (/* binding */ fetchGroupedProjects),\n/* harmony export */ fetchProjectById: () => (/* binding */ fetchProjectById),\n/* harmony export */ fetchProjects: () => (/* binding */ fetchProjects),\n/* harmony export */ updateProject: () => (/* binding */ updateProject)\n/* harmony export */ });\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\nvar fetchProjects = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var activeFilter,\n areaFilter,\n url,\n params,\n response,\n data,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n activeFilter = _args.length > 0 && _args[0] !== undefined ? _args[0] : \"all\";\n areaFilter = _args.length > 1 && _args[1] !== undefined ? _args[1] : \"\";\n url = \"/api/projects\";\n params = new URLSearchParams();\n if (activeFilter !== \"all\") params.append(\"active\", activeFilter);\n if (areaFilter) params.append(\"area_id\", areaFilter);\n if (params.toString()) url += \"?\".concat(params.toString());\n _context.n = 1;\n return fetch(url, {\n credentials: 'include',\n headers: {\n Accept: 'application/json'\n }\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch projects.');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n data = _context.v;\n return _context.a(2, data.projects || data);\n }\n }, _callee);\n }));\n return function fetchProjects() {\n return _ref.apply(this, arguments);\n };\n}();\nvar fetchGroupedProjects = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var activeFilter,\n areaFilter,\n url,\n params,\n response,\n data,\n _args2 = arguments;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n activeFilter = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : \"all\";\n areaFilter = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : \"\";\n url = \"/api/projects\";\n params = new URLSearchParams();\n params.append(\"grouped\", \"true\");\n if (activeFilter !== \"all\") params.append(\"active\", activeFilter);\n if (areaFilter) params.append(\"area_id\", areaFilter);\n if (params.toString()) url += \"?\".concat(params.toString());\n _context2.n = 1;\n return fetch(url, {\n credentials: 'include',\n headers: {\n Accept: 'application/json'\n }\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch projects.');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n data = _context2.v;\n return _context2.a(2, data);\n }\n }, _callee2);\n }));\n return function fetchGroupedProjects() {\n return _ref2.apply(this, arguments);\n };\n}();\nvar fetchProjectById = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(projectId) {\n var response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return fetch(\"/api/project/\".concat(projectId), {\n credentials: 'include',\n headers: {\n Accept: 'application/json'\n }\n });\n case 1:\n response = _context3.v;\n _context3.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch project details.');\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n return _context3.a(2, _context3.v);\n }\n }, _callee3);\n }));\n return function fetchProjectById(_x) {\n return _ref3.apply(this, arguments);\n };\n}();\nvar createProject = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(projectData) {\n var response;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return fetch('/api/project', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(projectData)\n });\n case 1:\n response = _context4.v;\n _context4.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to create project.');\n case 2:\n _context4.n = 3;\n return response.json();\n case 3:\n return _context4.a(2, _context4.v);\n }\n }, _callee4);\n }));\n return function createProject(_x2) {\n return _ref4.apply(this, arguments);\n };\n}();\nvar updateProject = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(projectId, projectData) {\n var response;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.n = 1;\n return fetch(\"/api/project/\".concat(projectId), {\n method: 'PATCH',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(projectData)\n });\n case 1:\n response = _context5.v;\n _context5.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update project.');\n case 2:\n _context5.n = 3;\n return response.json();\n case 3:\n return _context5.a(2, _context5.v);\n }\n }, _callee5);\n }));\n return function updateProject(_x3, _x4) {\n return _ref5.apply(this, arguments);\n };\n}();\nvar deleteProject = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(projectId) {\n var response;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.n = 1;\n return fetch(\"/api/project/\".concat(projectId), {\n method: 'DELETE',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context6.v;\n _context6.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to delete project.');\n case 2:\n return _context6.a(2);\n }\n }, _callee6);\n }));\n return function deleteProject(_x5) {\n return _ref6.apply(this, arguments);\n };\n}();\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/projectsService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/tagsService.ts":
-/*!***************************************!*\
- !*** ./frontend/utils/tagsService.ts ***!
- \***************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTag: () => (/* binding */ createTag),\n/* harmony export */ deleteTag: () => (/* binding */ deleteTag),\n/* harmony export */ fetchTags: () => (/* binding */ fetchTags),\n/* harmony export */ updateTag: () => (/* binding */ updateTag)\n/* harmony export */ });\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\nvar fetchTags = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var response, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return fetch(\"/api/tags\", {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Cache-Control': 'no-cache',\n 'Pragma': 'no-cache'\n }\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch tags.');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n return _context.a(2, _context.v);\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error(\"Tags fetch error:\", _t);\n // Return empty array to prevent UI from breaking\n return _context.a(2, []);\n }\n }, _callee, null, [[0, 4]]);\n }));\n return function fetchTags() {\n return _ref.apply(this, arguments);\n };\n}();\nvar createTag = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(tagData) {\n var response;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.n = 1;\n return fetch('/api/tag', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(tagData)\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to create tag.');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n return _context2.a(2, _context2.v);\n }\n }, _callee2);\n }));\n return function createTag(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\nvar updateTag = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(tagId, tagData) {\n var response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return fetch(\"/api/tag/\".concat(tagId), {\n method: 'PATCH',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(tagData)\n });\n case 1:\n response = _context3.v;\n _context3.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update tag.');\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n return _context3.a(2, _context3.v);\n }\n }, _callee3);\n }));\n return function updateTag(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\nvar deleteTag = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(tagId) {\n var response;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return fetch(\"/api/tag/\".concat(tagId), {\n method: 'DELETE',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context4.v;\n _context4.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to delete tag.');\n case 2:\n return _context4.a(2);\n }\n }, _callee4);\n }));\n return function deleteTag(_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/tagsService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/taskEventService.ts":
-/*!********************************************!*\
- !*** ./frontend/utils/taskEventService.ts ***!
- \********************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formatDuration: () => (/* binding */ formatDuration),\n/* harmony export */ getCompletionAnalytics: () => (/* binding */ getCompletionAnalytics),\n/* harmony export */ getEventTypeLabel: () => (/* binding */ getEventTypeLabel),\n/* harmony export */ getPriorityLabel: () => (/* binding */ getPriorityLabel),\n/* harmony export */ getStatusLabel: () => (/* binding */ getStatusLabel),\n/* harmony export */ getTaskCompletionTime: () => (/* binding */ getTaskCompletionTime),\n/* harmony export */ getTaskTimeline: () => (/* binding */ getTaskTimeline),\n/* harmony export */ getUserActivitySummary: () => (/* binding */ getUserActivitySummary),\n/* harmony export */ getUserProductivityMetrics: () => (/* binding */ getUserProductivityMetrics)\n/* harmony export */ });\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nvar API_BASE = '/api';\n\n/**\n * Get task timeline (all events for a specific task)\n */\nvar getTaskTimeline = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(taskId) {\n var response;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return fetch(\"\".concat(API_BASE, \"/task/\").concat(taskId, \"/timeline\"), {\n credentials: 'include'\n });\n case 1:\n response = _context.v;\n if (response.ok) {\n _context.n = 2;\n break;\n }\n throw new Error(\"Failed to fetch task timeline: \".concat(response.statusText));\n case 2:\n return _context.a(2, response.json());\n }\n }, _callee);\n }));\n return function getTaskTimeline(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Get task completion time analytics\n */\nvar getTaskCompletionTime = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(taskId) {\n var response;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.n = 1;\n return fetch(\"\".concat(API_BASE, \"/task/\").concat(taskId, \"/completion-time\"), {\n credentials: 'include'\n });\n case 1:\n response = _context2.v;\n if (!(response.status === 404)) {\n _context2.n = 2;\n break;\n }\n return _context2.a(2, null);\n case 2:\n if (response.ok) {\n _context2.n = 3;\n break;\n }\n throw new Error(\"Failed to fetch task completion time: \".concat(response.statusText));\n case 3:\n return _context2.a(2, response.json());\n }\n }, _callee2);\n }));\n return function getTaskCompletionTime(_x2) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Get user productivity metrics\n */\nvar getUserProductivityMetrics = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(startDate, endDate) {\n var params, response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n params = new URLSearchParams();\n if (startDate) params.append('startDate', startDate);\n if (endDate) params.append('endDate', endDate);\n _context3.n = 1;\n return fetch(\"\".concat(API_BASE, \"/user/productivity-metrics?\").concat(params), {\n credentials: 'include'\n });\n case 1:\n response = _context3.v;\n if (response.ok) {\n _context3.n = 2;\n break;\n }\n throw new Error(\"Failed to fetch productivity metrics: \".concat(response.statusText));\n case 2:\n return _context3.a(2, response.json());\n }\n }, _callee3);\n }));\n return function getUserProductivityMetrics(_x3, _x4) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Get user activity summary\n */\nvar getUserActivitySummary = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(startDate, endDate) {\n var params, response;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n params = new URLSearchParams({\n startDate: startDate,\n endDate: endDate\n });\n _context4.n = 1;\n return fetch(\"\".concat(API_BASE, \"/user/activity-summary?\").concat(params), {\n credentials: 'include'\n });\n case 1:\n response = _context4.v;\n if (response.ok) {\n _context4.n = 2;\n break;\n }\n throw new Error(\"Failed to fetch activity summary: \".concat(response.statusText));\n case 2:\n return _context4.a(2, response.json());\n }\n }, _callee4);\n }));\n return function getUserActivitySummary(_x5, _x6) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Get completion analytics for multiple tasks\n */\nvar getCompletionAnalytics = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {\n var options,\n params,\n response,\n _args5 = arguments;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n options = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {};\n params = new URLSearchParams();\n if (options.limit) params.append('limit', options.limit.toString());\n if (options.offset) params.append('offset', options.offset.toString());\n if (options.projectId) params.append('projectId', options.projectId.toString());\n _context5.n = 1;\n return fetch(\"\".concat(API_BASE, \"/tasks/completion-analytics?\").concat(params), {\n credentials: 'include'\n });\n case 1:\n response = _context5.v;\n if (response.ok) {\n _context5.n = 2;\n break;\n }\n throw new Error(\"Failed to fetch completion analytics: \".concat(response.statusText));\n case 2:\n return _context5.a(2, response.json());\n }\n }, _callee5);\n }));\n return function getCompletionAnalytics() {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Format duration for display\n */\nvar formatDuration = function formatDuration(hours) {\n if (hours < 1) {\n var minutes = Math.round(hours * 60);\n return \"\".concat(minutes, \"m\");\n } else if (hours < 24) {\n var h = Math.floor(hours);\n var m = Math.round((hours - h) * 60);\n return m > 0 ? \"\".concat(h, \"h \").concat(m, \"m\") : \"\".concat(h, \"h\");\n } else {\n var days = Math.floor(hours / 24);\n var _h = Math.floor(hours % 24);\n return _h > 0 ? \"\".concat(days, \"d \").concat(_h, \"h\") : \"\".concat(days, \"d\");\n }\n};\n\n/**\n * Get human-readable event type\n */\nvar getEventTypeLabel = function getEventTypeLabel(eventType) {\n var labels = {\n 'created': 'Created',\n 'status_changed': 'Status Changed',\n 'priority_changed': 'Priority Changed',\n 'due_date_changed': 'Due Date Changed',\n 'project_changed': 'Project Changed',\n 'name_changed': 'Name Changed',\n 'description_changed': 'Description Changed',\n 'note_changed': 'Note Changed',\n 'completed': 'Completed',\n 'archived': 'Archived',\n 'deleted': 'Deleted',\n 'restored': 'Restored',\n 'today_changed': 'Today Flag Changed',\n 'tags_changed': 'Tags Changed',\n 'recurrence_changed': 'Recurrence Changed'\n };\n return labels[eventType] || eventType;\n};\n\n/**\n * Get human-readable status value\n */\nvar getStatusLabel = function getStatusLabel(status) {\n var statusLabels = {\n 0: 'Not Started',\n 1: 'In Progress',\n 2: 'Done',\n 3: 'Archived',\n 4: 'Waiting'\n };\n return statusLabels[status] || \"Status \".concat(status);\n};\n\n/**\n * Get human-readable priority value\n */\nvar getPriorityLabel = function getPriorityLabel(priority) {\n var priorityLabels = {\n 0: 'Low',\n 1: 'Medium',\n 2: 'High'\n };\n return priorityLabels[priority] || \"Priority \".concat(priority);\n};\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/taskEventService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/taskIntelligenceService.ts":
-/*!***************************************************!*\
- !*** ./frontend/utils/taskIntelligenceService.ts ***!
- \***************************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ analyzeTaskName: () => (/* binding */ analyzeTaskName),\n/* harmony export */ getTaskNameSuggestion: () => (/* binding */ getTaskNameSuggestion),\n/* harmony export */ getVagueTasks: () => (/* binding */ getVagueTasks)\n/* harmony export */ });\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\n/**\n * Analyzes a task name to determine if it's vague or needs improvement\n * Returns an object with analysis results and suggestions\n */\n\nvar analyzeTaskName = function analyzeTaskName(taskName) {\n var trimmedName = taskName.toLowerCase().trim();\n\n // Very short tasks (less than 10 chars) - original logic\n if (trimmedName.length > 0 && trimmedName.length < 10) {\n return {\n isVague: true,\n reason: 'short',\n suggestion: 'task.suggestions.short',\n severity: 'medium'\n };\n }\n\n // Skip if it's already a next action (contains →)\n if (trimmedName.includes('→')) {\n return {\n isVague: false,\n reason: 'good',\n severity: 'low'\n };\n }\n\n // More comprehensive action verb patterns\n var actionVerbPatterns = [\n // Direct action verbs at start\n /^(call|email|text|message|phone|contact)/, /^(write|draft|compose|type|create|make)/, /^(read|review|check|examine|study|analyze)/, /^(buy|purchase|order|get|obtain|acquire)/, /^(schedule|book|arrange|plan|set up|setup)/, /^(meet|discuss|talk|speak|chat)/, /^(send|deliver|ship|mail|forward)/, /^(update|edit|modify|change|fix|correct)/, /^(finish|complete|finalize|wrap up)/, /^(submit|file|upload|post|publish)/, /^(organize|sort|clean|tidy|arrange)/, /^(research|find|search|look up|investigate)/, /^(prepare|gather|collect|assemble)/, /^(install|download|set up|configure)/, /^(test|try|experiment|validate)/, /^(backup|save|export|archive)/, /^(delete|remove|uninstall|cancel)/,\n // Gerund forms (-ing verbs) which are often good actions\n /^(calling|emailing|writing|reading|buying|scheduling|meeting|sending|updating|finishing|submitting|organizing|researching|preparing|installing|testing|backing)/,\n // Question patterns (usually clear next actions)\n /^(what|how|when|where|why|which)/, /\\?$/,\n // Imperative patterns with objects\n /^(add|remove|insert|attach|include|exclude)/, /^(start|begin|initiate|launch|kick off)/, /^(stop|end|terminate|close|shut)/,\n // Common task patterns\n /^(follow up|followup)/, /^(sign up|signup)/, /^(log in|login)/, /^(pick up|pickup)/, /^(drop off|dropoff)/, /^(set up|setup)/, /^(clean up|cleanup)/, /^(wrap up|wrapup)/];\n\n // Check if task starts with any action verb pattern\n var hasActionVerb = actionVerbPatterns.some(function (pattern) {\n return pattern.test(trimmedName);\n });\n if (hasActionVerb) {\n return {\n isVague: false,\n reason: 'good',\n severity: 'low'\n };\n }\n\n // Check for common non-actionable patterns (these are vague)\n var vaguePatterns = [\n // Single words without context\n /^[a-zA-Z]+$/,\n // Just names without action\n /^[A-Z][a-z]+ [A-Z][a-z]+$/,\n // Just project/area names\n /^(project|website|app|system|process|issue|problem|bug|feature)$/i,\n // Very short tasks without clear action (less than 3 words)\n /^(\\w+\\s+\\w+|^\\w+)$/];\n\n // Only flag as vague if it matches vague patterns AND is not clearly actionable\n var matchesVaguePattern = vaguePatterns.some(function (pattern) {\n return pattern.test(trimmedName);\n });\n\n // Additional checks for good tasks that shouldn't be flagged\n var hasGoodStructure = trimmedName.length > 15 ||\n // Longer tasks are usually more specific\n trimmedName.split(' ').length > 3 ||\n // More than 3 words usually means more specific\n /\\b(for|with|to|from|about|regarding|re:|fwd:)\\b/.test(trimmedName) ||\n // Prepositions indicate context\n /\\b(tomorrow|today|monday|tuesday|wednesday|thursday|friday|saturday|sunday|next week|this week)\\b/.test(trimmedName) ||\n // Time references\n /\\b(project|meeting|appointment|deadline|due|urgent|important)\\b/.test(trimmedName) // Context indicators\n ;\n if (matchesVaguePattern && !hasGoodStructure) {\n return {\n isVague: true,\n reason: 'vague_pattern',\n suggestion: 'task.suggestions.vague',\n severity: 'high'\n };\n }\n\n // Check for missing action verbs (less strict)\n if (!hasActionVerb && trimmedName.split(' ').length <= 2) {\n return {\n isVague: true,\n reason: 'no_verb',\n suggestion: 'task.suggestions.noVerb',\n severity: 'medium'\n };\n }\n return {\n isVague: false,\n reason: 'good',\n severity: 'low'\n };\n};\n\n/**\n * Filters tasks to find vague ones using the enhanced logic\n */\nvar getVagueTasks = function getVagueTasks(tasks) {\n return tasks.filter(function (task) {\n if (task.status === 'done' || task.status === 'archived') return false;\n var analysis = analyzeTaskName(task.name);\n return analysis.isVague;\n });\n};\n\n/**\n * Gets a user-friendly suggestion for improving a task name\n */\nvar getTaskNameSuggestion = function getTaskNameSuggestion(taskName) {\n var analysis = analyzeTaskName(taskName);\n return analysis.isVague ? analysis.suggestion || null : null;\n};\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/taskIntelligenceService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/tasksService.ts":
-/*!****************************************!*\
- !*** ./frontend/utils/tasksService.ts ***!
- \****************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTask: () => (/* binding */ createTask),\n/* harmony export */ deleteTask: () => (/* binding */ deleteTask),\n/* harmony export */ fetchTaskById: () => (/* binding */ fetchTaskById),\n/* harmony export */ fetchTaskByUuid: () => (/* binding */ fetchTaskByUuid),\n/* harmony export */ fetchTasks: () => (/* binding */ fetchTasks),\n/* harmony export */ toggleTaskCompletion: () => (/* binding */ toggleTaskCompletion),\n/* harmony export */ toggleTaskToday: () => (/* binding */ toggleTaskToday),\n/* harmony export */ updateTask: () => (/* binding */ updateTask)\n/* harmony export */ });\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\nvar fetchTasks = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var query,\n response,\n result,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n query = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';\n _context.n = 1;\n return fetch(\"/api/tasks\".concat(query), {\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getDefaultHeaders)()\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch tasks.');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n result = _context.v;\n if (Array.isArray(result.tasks)) {\n _context.n = 4;\n break;\n }\n throw new Error('Resulting tasks are not an array.');\n case 4:\n if (result.metrics) {\n _context.n = 5;\n break;\n }\n throw new Error('Metrics data is not included.');\n case 5:\n return _context.a(2, {\n tasks: result.tasks,\n metrics: result.metrics\n });\n }\n }, _callee);\n }));\n return function fetchTasks() {\n return _ref.apply(this, arguments);\n };\n}();\nvar createTask = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(taskData) {\n var response;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.n = 1;\n return fetch('/api/task', {\n method: 'POST',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getPostHeaders)(),\n body: JSON.stringify(taskData)\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to create task.');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n return _context2.a(2, _context2.v);\n }\n }, _callee2);\n }));\n return function createTask(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\nvar updateTask = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(taskId, taskData) {\n var response;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return fetch(\"/api/task/\".concat(taskId), {\n method: 'PATCH',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getPostHeaders)(),\n body: JSON.stringify(taskData)\n });\n case 1:\n response = _context3.v;\n _context3.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update task.');\n case 2:\n _context3.n = 3;\n return response.json();\n case 3:\n return _context3.a(2, _context3.v);\n }\n }, _callee3);\n }));\n return function updateTask(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\nvar toggleTaskCompletion = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(taskId) {\n var response, result;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return fetch(\"/api/task/\".concat(taskId, \"/toggle_completion\"), {\n method: 'PATCH',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getPostHeaders)()\n });\n case 1:\n response = _context4.v;\n _context4.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to toggle task completion.');\n case 2:\n _context4.n = 3;\n return response.json();\n case 3:\n result = _context4.v;\n return _context4.a(2, result);\n }\n }, _callee4);\n }));\n return function toggleTaskCompletion(_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\nvar deleteTask = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(taskId) {\n var response;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.n = 1;\n return fetch(\"/api/task/\".concat(taskId), {\n method: 'DELETE',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getDefaultHeaders)()\n });\n case 1:\n response = _context5.v;\n _context5.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to delete task.');\n case 2:\n return _context5.a(2);\n }\n }, _callee5);\n }));\n return function deleteTask(_x5) {\n return _ref5.apply(this, arguments);\n };\n}();\nvar fetchTaskById = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(taskId) {\n var response;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _context6.n = 1;\n return fetch(\"/api/task/\".concat(taskId), {\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getDefaultHeaders)()\n });\n case 1:\n response = _context6.v;\n _context6.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch task.');\n case 2:\n _context6.n = 3;\n return response.json();\n case 3:\n return _context6.a(2, _context6.v);\n }\n }, _callee6);\n }));\n return function fetchTaskById(_x6) {\n return _ref6.apply(this, arguments);\n };\n}();\nvar fetchTaskByUuid = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(uuid) {\n var response;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n _context7.n = 1;\n return fetch(\"/api/task/uuid/\".concat(uuid), {\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getDefaultHeaders)()\n });\n case 1:\n response = _context7.v;\n _context7.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch task.');\n case 2:\n _context7.n = 3;\n return response.json();\n case 3:\n return _context7.a(2, _context7.v);\n }\n }, _callee7);\n }));\n return function fetchTaskByUuid(_x7) {\n return _ref7.apply(this, arguments);\n };\n}();\nvar toggleTaskToday = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(taskId) {\n var response;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n _context8.n = 1;\n return fetch(\"/api/task/\".concat(taskId, \"/toggle-today\"), {\n method: 'PATCH',\n credentials: 'include',\n headers: (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.getPostHeaders)()\n });\n case 1:\n response = _context8.v;\n _context8.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to toggle task today status.');\n case 2:\n _context8.n = 3;\n return response.json();\n case 3:\n return _context8.a(2, _context8.v);\n }\n }, _callee8);\n }));\n return function toggleTaskToday(_x8) {\n return _ref8.apply(this, arguments);\n };\n}();\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/tasksService.ts?");
-
-/***/ }),
-
-/***/ "./frontend/utils/urlService.ts":
-/*!**************************************!*\
- !*** ./frontend/utils/urlService.ts ***!
- \**************************************/
-/***/ ((module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ extractTitleFromText: () => (/* binding */ extractTitleFromText),\n/* harmony export */ extractUrlTitle: () => (/* binding */ extractUrlTitle),\n/* harmony export */ isUrl: () => (/* binding */ isUrl)\n/* harmony export */ });\n/* harmony import */ var _authUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./authUtils */ \"./frontend/utils/authUtils.ts\");\n/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ \"./node_modules/react-refresh/runtime.js\");\n\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2); } }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n/**\n * Service for URL-related operations like extracting titles from web pages\n */\n\n/**\n * Extract the title of a web page from its URL\n * @param url The URL to extract the title from\n * @returns Promise resolving to the page title or null if not found\n */\nvar extractUrlTitle = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url) {\n var response, _t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.p = 0;\n _context.n = 1;\n return fetch(\"/api/url/title?url=\".concat(encodeURIComponent(url)), {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 1:\n response = _context.v;\n _context.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to extract URL title');\n case 2:\n _context.n = 3;\n return response.json();\n case 3:\n return _context.a(2, _context.v);\n case 4:\n _context.p = 4;\n _t = _context.v;\n console.error('Error extracting URL title:', _t);\n return _context.a(2, {\n url: url,\n title: null,\n error: _t.message\n });\n }\n }, _callee, null, [[0, 4]]);\n }));\n return function extractUrlTitle(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Extract a URL and its title from arbitrary text\n * @param text The text that might contain a URL\n * @returns Promise resolving to the URL and title if found\n */\nvar extractTitleFromText = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(text) {\n var response, result, _t2;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return fetch('/api/url/extract-from-text', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n text: text\n })\n });\n case 1:\n response = _context2.v;\n _context2.n = 2;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to extract title from text');\n case 2:\n _context2.n = 3;\n return response.json();\n case 3:\n result = _context2.v;\n if (!(result.found === false)) {\n _context2.n = 4;\n break;\n }\n return _context2.a(2, null);\n case 4:\n return _context2.a(2, result);\n case 5:\n _context2.p = 5;\n _t2 = _context2.v;\n console.error('Error extracting title from text:', _t2);\n return _context2.a(2, null);\n }\n }, _callee2, null, [[0, 5]]);\n }));\n return function extractTitleFromText(_x2) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Check if a string is likely a URL\n * @param text The text to check\n * @returns True if the text appears to be a URL\n */\nvar isUrl = function isUrl(text) {\n // Basic URL validation regex\n var urlRegex = /^(https?:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/i;\n return urlRegex.test(text.trim());\n};\n\nconst $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') {\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') {\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn __react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else {\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}\n\n//# sourceURL=webpack://tududi/./frontend/utils/urlService.ts?");
-
-/***/ }),
-
-/***/ "./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js":
-/*!**************************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _assertThisInitialized)\n/* harmony export */ });\nfunction _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\n\n\n//# sourceURL=webpack://tududi/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@babel/runtime/helpers/esm/extends.js":
-/*!************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _extends)\n/* harmony export */ });\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\n\n\n//# sourceURL=webpack://tududi/./node_modules/@babel/runtime/helpers/esm/extends.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _inheritsLoose)\n/* harmony export */ });\n/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js\");\n\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, (0,_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(t, o);\n}\n\n\n//# sourceURL=webpack://tududi/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js":
-/*!*********************************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
- \*********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _objectWithoutPropertiesLoose)\n/* harmony export */ });\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\n\n\n//# sourceURL=webpack://tududi/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ _setPrototypeOf)\n/* harmony export */ });\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\n\n\n//# sourceURL=webpack://tududi/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/AcademicCapIcon.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/AcademicCapIcon.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction AcademicCapIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(AcademicCapIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/AcademicCapIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/AdjustmentsHorizontalIcon.js":
-/*!***********************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/AdjustmentsHorizontalIcon.js ***!
- \***********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction AdjustmentsHorizontalIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(AdjustmentsHorizontalIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/AdjustmentsHorizontalIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ArchiveBoxIcon.js":
-/*!************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ArchiveBoxIcon.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ArchiveBoxIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ArchiveBoxIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ArchiveBoxIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ArrowDownIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ArrowDownIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ArrowDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ArrowDownIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ArrowDownIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ArrowPathIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ArrowPathIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ArrowTopRightOnSquareIcon.js":
-/*!***********************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ArrowTopRightOnSquareIcon.js ***!
- \***********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ArrowTopRightOnSquareIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ArrowTopRightOnSquareIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ArrowTopRightOnSquareIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ArrowUpIcon.js":
-/*!*********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ArrowUpIcon.js ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ArrowUpIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ArrowUpIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ArrowUpIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/BoltIcon.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/BoltIcon.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction BoltIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(BoltIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/BoltIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/BookOpenIcon.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/BookOpenIcon.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction BookOpenIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(BookOpenIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/BookOpenIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js":
-/*!**************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CalendarDaysIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5m-9-6h.008v.008H12v-.008ZM12 15h.008v.008H12V15Zm0 2.25h.008v.008H12v-.008ZM9.75 15h.008v.008H9.75V15Zm0 2.25h.008v.008H9.75v-.008ZM7.5 15h.008v.008H7.5V15Zm0 2.25h.008v.008H7.5v-.008Zm6.75-4.5h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V15Zm0 2.25h.008v.008h-.008v-.008Zm2.25-4.5h.008v.008H16.5v-.008Zm0 2.25h.008v.008H16.5V15Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CalendarDaysIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/CalendarDaysIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CalendarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CalendarIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChartBarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChartBarIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ChatBubbleBottomCenterTextIcon.js":
-/*!****************************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ChatBubbleBottomCenterTextIcon.js ***!
- \****************************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChatBubbleBottomCenterTextIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 0 1 .865-.501 48.172 48.172 0 0 0 3.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChatBubbleBottomCenterTextIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ChatBubbleBottomCenterTextIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftRightIcon.js":
-/*!*********************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftRightIcon.js ***!
- \*********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChatBubbleLeftRightIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChatBubbleLeftRightIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftRightIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CheckCircleIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/CheckIcon.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/CheckIcon.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m4.5 12.75 6 6 9-13.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CheckIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/CheckIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChevronDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m19.5 8.25-7.5 7.5-7.5-7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChevronDownIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ChevronLeftIcon.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ChevronLeftIcon.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChevronLeftIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.75 19.5 8.25 12l7.5-7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChevronLeftIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ChevronLeftIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js":
-/*!**************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ChevronRightIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m8.25 4.5 7.5 7.5-7.5 7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ChevronRightIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentListIcon.js":
-/*!***********************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentListIcon.js ***!
- \***********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ClipboardDocumentListIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ClipboardDocumentListIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentListIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ClipboardIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ClipboardIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ClipboardIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ClipboardIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ClipboardIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ClockIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ClockIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ClockIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction Cog6ToothIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(Cog6ToothIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/CogIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/CogIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CogIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CogIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/CogIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/DocumentTextIcon.js":
-/*!**************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/DocumentTextIcon.js ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction DocumentTextIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(DocumentTextIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/DocumentTextIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js":
-/*!*********************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js ***!
- \*********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ExclamationTriangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ExclamationTriangleIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction EyeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(EyeIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction EyeSlashIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(EyeSlashIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/FaceSmileIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/FaceSmileIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction FaceSmileIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(FaceSmileIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/FaceSmileIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/FireIcon.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/FireIcon.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction FireIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(FireIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/FireIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js":
-/*!********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction FolderIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(FolderIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/FolderIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/InboxIcon.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/InboxIcon.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction InboxIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.25 13.5h3.86a2.25 2.25 0 0 1 2.012 1.244l.256.512a2.25 2.25 0 0 0 2.013 1.244h3.218a2.25 2.25 0 0 0 2.013-1.244l.256-.512a2.25 2.25 0 0 1 2.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 0 0-2.15-1.588H6.911a2.25 2.25 0 0 0-2.15 1.588L2.35 13.177a2.25 2.25 0 0 0-.1.661Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(InboxIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/InboxIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js":
-/*!*******************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js ***!
- \*******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction InformationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(InformationCircleIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/LightBulbIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/LightBulbIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction LightBulbIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(LightBulbIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/LightBulbIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/MoonIcon.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/MoonIcon.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction MoonIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(MoonIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/MoonIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/PauseIcon.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/PauseIcon.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction PauseIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.75 5.25v13.5m-7.5-13.5v13.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(PauseIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/PauseIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/PencilIcon.js":
-/*!********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/PencilIcon.js ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction PencilIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(PencilIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/PencilIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/PencilSquareIcon.js":
-/*!**************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/PencilSquareIcon.js ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction PencilSquareIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(PencilSquareIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/PencilSquareIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/PlayIcon.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/PlayIcon.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction PlayIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986V5.653Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(PlayIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/PlayIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js":
-/*!************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction PlusCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(PlusCircleIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/PlusIcon.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/PlusIcon.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction PlusIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 4.5v15m7.5-7.5h-15\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(PlusIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/PlusIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ShieldCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ShieldCheckIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/SparklesIcon.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/SparklesIcon.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction SparklesIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(SparklesIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/SparklesIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.js":
-/*!************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction Squares2X2Icon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(Squares2X2Icon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/SunIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/SunIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction SunIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(SunIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/SunIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/TagIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/TagIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction TagIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 6h.008v.008H6V6Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(TagIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/TagIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/TrashIcon.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/TrashIcon.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction TrashIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(TrashIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/TrashIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/TrophyIcon.js":
-/*!********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/TrophyIcon.js ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction TrophyIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M16.5 18.75h-9m9 0a3 3 0 0 1 3 3h-15a3 3 0 0 1 3-3m9 0v-3.375c0-.621-.503-1.125-1.125-1.125h-.871M7.5 18.75v-3.375c0-.621.504-1.125 1.125-1.125h.872m5.007 0H9.497m5.007 0a7.454 7.454 0 0 1-.982-3.172M9.497 14.25a7.454 7.454 0 0 0 .981-3.172M5.25 4.236c-.982.143-1.954.317-2.916.52A6.003 6.003 0 0 0 7.73 9.728M5.25 4.236V4.5c0 2.108.966 3.99 2.48 5.228M5.25 4.236V2.721C7.456 2.41 9.71 2.25 12 2.25c2.291 0 4.545.16 6.75.47v1.516M7.73 9.728a6.726 6.726 0 0 0 2.748 1.35m8.272-6.842V4.5c0 2.108-.966 3.99-2.48 5.228m2.48-5.492a46.32 46.32 0 0 1 2.916.52 6.003 6.003 0 0 1-5.395 4.972m0 0a6.726 6.726 0 0 1-2.749 1.35m0 0a6.772 6.772 0 0 1-3.044 0\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(TrophyIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/TrophyIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/UserIcon.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/UserIcon.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction UserIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(UserIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/UserIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction XMarkIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 18 18 6M6 6l12 12\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(XMarkIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/Bars3Icon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/Bars3Icon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction Bars3Icon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M3 6.75A.75.75 0 0 1 3.75 6h16.5a.75.75 0 0 1 0 1.5H3.75A.75.75 0 0 1 3 6.75ZM3 12a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75A.75.75 0 0 1 3 12Zm0 5.25a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75a.75.75 0 0 1-.75-.75Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(Bars3Icon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/Bars3Icon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/BookOpenIcon.js":
-/*!********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/BookOpenIcon.js ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction BookOpenIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n d: \"M11.25 4.533A9.707 9.707 0 0 0 6 3a9.735 9.735 0 0 0-3.25.555.75.75 0 0 0-.5.707v14.25a.75.75 0 0 0 1 .707A8.237 8.237 0 0 1 6 18.75c1.995 0 3.823.707 5.25 1.886V4.533ZM12.75 20.636A8.214 8.214 0 0 1 18 18.75c.966 0 1.89.166 2.75.47a.75.75 0 0 0 1-.708V4.262a.75.75 0 0 0-.5-.707A9.735 9.735 0 0 0 18 3a9.707 9.707 0 0 0-5.25 1.533v16.103Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(BookOpenIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/BookOpenIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/CalendarDaysIcon.js":
-/*!************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/CalendarDaysIcon.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CalendarDaysIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n d: \"M12.75 12.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM7.5 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM8.25 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM9.75 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM10.5 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM12.75 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM14.25 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM15 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM16.5 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM15 12.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM16.5 13.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M6.75 2.25A.75.75 0 0 1 7.5 3v1.5h9V3A.75.75 0 0 1 18 3v1.5h.75a3 3 0 0 1 3 3v11.25a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3V7.5a3 3 0 0 1 3-3H6V3a.75.75 0 0 1 .75-.75Zm13.5 9a1.5 1.5 0 0 0-1.5-1.5H5.25a1.5 1.5 0 0 0-1.5 1.5v7.5a1.5 1.5 0 0 0 1.5 1.5h13.5a1.5 1.5 0 0 0 1.5-1.5v-7.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CalendarDaysIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/CalendarDaysIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/CalendarIcon.js":
-/*!********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/CalendarIcon.js ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CalendarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M6.75 2.25A.75.75 0 0 1 7.5 3v1.5h9V3A.75.75 0 0 1 18 3v1.5h.75a3 3 0 0 1 3 3v11.25a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3V7.5a3 3 0 0 1 3-3H6V3a.75.75 0 0 1 .75-.75Zm13.5 9a1.5 1.5 0 0 0-1.5-1.5H5.25a1.5 1.5 0 0 0-1.5 1.5v7.5a1.5 1.5 0 0 0 1.5 1.5h13.5a1.5 1.5 0 0 0 1.5-1.5v-7.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CalendarIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/CalendarIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CheckCircleIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/CheckIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/CheckIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction CheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M19.916 4.626a.75.75 0 0 1 .208 1.04l-9 13.5a.75.75 0 0 1-1.154.114l-6-6a.75.75 0 0 1 1.06-1.06l5.353 5.353 8.493-12.74a.75.75 0 0 1 1.04-.207Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CheckIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/CheckIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/ClockIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/ClockIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ClockIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25ZM12.75 6a.75.75 0 0 0-1.5 0v6c0 .414.336.75.75.75h4.5a.75.75 0 0 0 0-1.5h-3.75V6Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ClockIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/ClockIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/DocumentTextIcon.js":
-/*!************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/DocumentTextIcon.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction DocumentTextIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M5.625 1.5c-1.036 0-1.875.84-1.875 1.875v17.25c0 1.035.84 1.875 1.875 1.875h12.75c1.035 0 1.875-.84 1.875-1.875V12.75A3.75 3.75 0 0 0 16.5 9h-1.875a1.875 1.875 0 0 1-1.875-1.875V5.25A3.75 3.75 0 0 0 9 1.5H5.625ZM7.5 15a.75.75 0 0 1 .75-.75h7.5a.75.75 0 0 1 0 1.5h-7.5A.75.75 0 0 1 7.5 15Zm.75 2.25a.75.75 0 0 0 0 1.5H12a.75.75 0 0 0 0-1.5H8.25Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n d: \"M12.971 1.816A5.23 5.23 0 0 1 14.25 5.25v1.875c0 .207.168.375.375.375H16.5a5.23 5.23 0 0 1 3.434 1.279 9.768 9.768 0 0 0-6.963-6.963Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(DocumentTextIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/DocumentTextIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/EllipsisVerticalIcon.js":
-/*!****************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/EllipsisVerticalIcon.js ***!
- \****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction EllipsisVerticalIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10.5 6a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm0 6a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm0 6a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(EllipsisVerticalIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/EllipsisVerticalIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/FolderIcon.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/FolderIcon.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction FolderIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n d: \"M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(FolderIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/FolderIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/InboxIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/InboxIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction InboxIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M6.912 3a3 3 0 0 0-2.868 2.118l-2.411 7.838a3 3 0 0 0-.133.882V18a3 3 0 0 0 3 3h15a3 3 0 0 0 3-3v-4.162c0-.299-.045-.596-.133-.882l-2.412-7.838A3 3 0 0 0 17.088 3H6.912Zm13.823 9.75-2.213-7.191A1.5 1.5 0 0 0 17.088 4.5H6.912a1.5 1.5 0 0 0-1.434 1.059L3.265 12.75H6.11a3 3 0 0 1 2.684 1.658l.256.513a1.5 1.5 0 0 0 1.342.829h3.218a1.5 1.5 0 0 0 1.342-.83l.256-.512a3 3 0 0 1 2.684-1.658h2.844Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(InboxIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/InboxIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js":
-/*!*****************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js ***!
- \*****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction InformationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(InformationCircleIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/ListBulletIcon.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/ListBulletIcon.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction ListBulletIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.625 6.75a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875 0A.75.75 0 0 1 8.25 6h12a.75.75 0 0 1 0 1.5h-12a.75.75 0 0 1-.75-.75ZM2.625 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0ZM7.5 12a.75.75 0 0 1 .75-.75h12a.75.75 0 0 1 0 1.5h-12A.75.75 0 0 1 7.5 12Zm-4.875 5.25a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875 0a.75.75 0 0 1 .75-.75h12a.75.75 0 0 1 0 1.5h-12a.75.75 0 0 1-.75-.75Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ListBulletIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/ListBulletIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/MagnifyingGlassIcon.js":
-/*!***************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/MagnifyingGlassIcon.js ***!
- \***************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction MagnifyingGlassIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10.5 3.75a6.75 6.75 0 1 0 0 13.5 6.75 6.75 0 0 0 0-13.5ZM2.25 10.5a8.25 8.25 0 1 1 14.59 5.28l4.69 4.69a.75.75 0 1 1-1.06 1.06l-4.69-4.69A8.25 8.25 0 0 1 2.25 10.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(MagnifyingGlassIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/MagnifyingGlassIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js":
-/*!************************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction PencilSquareIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n d: \"M21.731 2.269a2.625 2.625 0 0 0-3.712 0l-1.157 1.157 3.712 3.712 1.157-1.157a2.625 2.625 0 0 0 0-3.712ZM19.513 8.199l-3.712-3.712-8.4 8.4a5.25 5.25 0 0 0-1.32 2.214l-.8 2.685a.75.75 0 0 0 .933.933l2.685-.8a5.25 5.25 0 0 0 2.214-1.32l8.4-8.4Z\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n d: \"M5.25 5.25a3 3 0 0 0-3 3v10.5a3 3 0 0 0 3 3h10.5a3 3 0 0 0 3-3V13.5a.75.75 0 0 0-1.5 0v5.25a1.5 1.5 0 0 1-1.5 1.5H5.25a1.5 1.5 0 0 1-1.5-1.5V8.25a1.5 1.5 0 0 1 1.5-1.5h5.25a.75.75 0 0 0 0-1.5H5.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(PencilSquareIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/PencilSquareIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/Squares2X2Icon.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/Squares2X2Icon.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction Squares2X2Icon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M3 6a3 3 0 0 1 3-3h2.25a3 3 0 0 1 3 3v2.25a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6Zm9.75 0a3 3 0 0 1 3-3H18a3 3 0 0 1 3 3v2.25a3 3 0 0 1-3 3h-2.25a3 3 0 0 1-3-3V6ZM3 15.75a3 3 0 0 1 3-3h2.25a3 3 0 0 1 3 3V18a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3v-2.25Zm9.75 0a3 3 0 0 1 3-3H18a3 3 0 0 1 3 3V18a3 3 0 0 1-3 3h-2.25a3 3 0 0 1-3-3v-2.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(Squares2X2Icon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/Squares2X2Icon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/TagIcon.js":
-/*!***************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/TagIcon.js ***!
- \***************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction TagIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M5.25 2.25a3 3 0 0 0-3 3v4.318a3 3 0 0 0 .879 2.121l9.58 9.581c.92.92 2.39 1.186 3.548.428a18.849 18.849 0 0 0 5.441-5.44c.758-1.16.492-2.629-.428-3.548l-9.58-9.581a3 3 0 0 0-2.122-.879H5.25ZM6.375 7.5a1.125 1.125 0 1 0 0-2.25 1.125 1.125 0 0 0 0 2.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(TagIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/TagIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction TrashIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M16.5 4.478v.227a48.816 48.816 0 0 1 3.878.512.75.75 0 1 1-.256 1.478l-.209-.035-1.005 13.07a3 3 0 0 1-2.991 2.77H8.084a3 3 0 0 1-2.991-2.77L4.087 6.66l-.209.035a.75.75 0 0 1-.256-1.478A48.567 48.567 0 0 1 7.5 4.705v-.227c0-1.564 1.213-2.9 2.816-2.951a52.662 52.662 0 0 1 3.369 0c1.603.051 2.815 1.387 2.815 2.951Zm-6.136-1.452a51.196 51.196 0 0 1 3.273 0C14.39 3.05 15 3.684 15 4.478v.113a49.488 49.488 0 0 0-6 0v-.113c0-.794.609-1.428 1.364-1.452Zm-.355 5.945a.75.75 0 1 0-1.5.058l.347 9a.75.75 0 1 0 1.499-.058l-.346-9Zm5.48.058a.75.75 0 1 0-1.498-.058l-.347 9a.75.75 0 0 0 1.5.058l.345-9Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(TrashIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/TrashIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@heroicons/react/24/solid/esm/UserIcon.js":
-/*!****************************************************************!*\
- !*** ./node_modules/@heroicons/react/24/solid/esm/UserIcon.js ***!
- \****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction UserIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(UserIcon);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);\n\n//# sourceURL=webpack://tududi/./node_modules/@heroicons/react/24/solid/esm/UserIcon.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ErrorOverlayEntry.js?sockHost=0.0.0.0&sockPort=8080&sockProtocol=http":
-/*!****************************************************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ErrorOverlayEntry.js?sockHost=0.0.0.0&sockPort=8080&sockProtocol=http ***!
- \****************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("var __resourceQuery = \"?sockHost=0.0.0.0&sockPort=8080&sockProtocol=http\";\n/* provided dependency */ var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n/* provided dependency */ var __react_refresh_socket__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/WDSSocket.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/WDSSocket.js\");\n/* global __react_refresh_error_overlay__, __react_refresh_socket__, __resourceQuery */\n\nconst events = __webpack_require__(/*! ./utils/errorEventHandlers.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/errorEventHandlers.js\");\nconst formatWebpackErrors = __webpack_require__(/*! ./utils/formatWebpackErrors.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/formatWebpackErrors.js\");\nconst runWithPatchedUrl = __webpack_require__(/*! ./utils/patchUrl.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/patchUrl.js\");\nconst runWithRetry = __webpack_require__(/*! ./utils/retry.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/retry.js\");\n\n// Setup error states\nlet isHotReload = false;\nlet hasRuntimeErrors = false;\n\n/**\n * Try dismissing the compile error overlay.\n * This will also reset runtime error records (if any),\n * because we have new source to evaluate.\n * @returns {void}\n */\nfunction tryDismissErrorOverlay() {\n __react_refresh_error_overlay__.clearCompileError();\n __react_refresh_error_overlay__.clearRuntimeErrors(!hasRuntimeErrors);\n hasRuntimeErrors = false;\n}\n\n/**\n * A function called after a compile success signal is received from Webpack.\n * @returns {void}\n */\nfunction handleCompileSuccess() {\n isHotReload = true;\n\n if (isHotReload) {\n tryDismissErrorOverlay();\n }\n}\n\n/**\n * A function called after a compile errored signal is received from Webpack.\n * @param {string[]} errors\n * @returns {void}\n */\nfunction handleCompileErrors(errors) {\n isHotReload = true;\n\n const formattedErrors = formatWebpackErrors(errors);\n\n // Only show the first error\n __react_refresh_error_overlay__.showCompileError(formattedErrors[0]);\n}\n\n/**\n * Handles compilation messages from Webpack.\n * Integrates with a compile error overlay.\n * @param {*} message A Webpack HMR message sent via WebSockets.\n * @returns {void}\n */\nfunction compileMessageHandler(message) {\n switch (message.type) {\n case 'ok':\n case 'still-ok':\n case 'warnings': {\n // TODO: Implement handling for warnings\n handleCompileSuccess();\n break;\n }\n case 'errors': {\n handleCompileErrors(message.data);\n break;\n }\n default: {\n // Do nothing.\n }\n }\n}\n\nif (true) {\n if (typeof window !== 'undefined') {\n runWithPatchedUrl(function setupOverlay() {\n // Only register if no other overlay have been registered\n if (!window.__reactRefreshOverlayInjected && __react_refresh_socket__) {\n // Registers handlers for compile errors with retry -\n // This is to prevent mismatching injection order causing errors to be thrown\n runWithRetry(function initSocket() {\n __react_refresh_socket__.init(compileMessageHandler, __resourceQuery);\n }, 3);\n // Registers handlers for runtime errors\n events.handleError(function handleError(error) {\n hasRuntimeErrors = true;\n __react_refresh_error_overlay__.handleRuntimeError(error);\n });\n events.handleUnhandledRejection(function handleUnhandledPromiseRejection(error) {\n hasRuntimeErrors = true;\n __react_refresh_error_overlay__.handleRuntimeError(error);\n });\n\n // Mark overlay as injected to prevent double-injection\n window.__reactRefreshOverlayInjected = true;\n }\n });\n }\n}\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ErrorOverlayEntry.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js":
-/*!***************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js ***!
- \***************************************************************************************/
-/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("/* global __react_refresh_library__ */\n\nconst safeThis = __webpack_require__(/*! core-js-pure/features/global-this */ \"./node_modules/core-js-pure/features/global-this.js\");\nconst RefreshRuntime = __webpack_require__(/*! react-refresh/runtime */ \"./node_modules/react-refresh/runtime.js\");\n\nif (true) {\n if (typeof safeThis !== 'undefined') {\n var $RefreshInjected$ = '__reactRefreshInjected';\n // Namespace the injected flag (if necessary) for monorepo compatibility\n if (false) // removed by dead control flow\n{}\n\n // Only inject the runtime if it hasn't been injected\n if (!safeThis[$RefreshInjected$]) {\n // Inject refresh runtime into global scope\n RefreshRuntime.injectIntoGlobalHook(safeThis);\n\n // Mark the runtime as injected to prevent double-injection\n safeThis[$RefreshInjected$] = true;\n }\n }\n}\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/errorEventHandlers.js":
-/*!**********************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/errorEventHandlers.js ***!
- \**********************************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * @callback EventCallback\n * @param {string | Error | null} context\n * @returns {void}\n */\n/**\n * @callback EventHandler\n * @param {Event} event\n * @returns {void}\n */\n\n/**\n * A function that creates an event handler for the `error` event.\n * @param {EventCallback} callback A function called to handle the error context.\n * @returns {EventHandler} A handler for the `error` event.\n */\nfunction createErrorHandler(callback) {\n return function errorHandler(event) {\n if (!event || !event.error) {\n return callback(null);\n }\n if (event.error instanceof Error) {\n return callback(event.error);\n }\n // A non-error was thrown, we don't have a trace. :(\n // Look in your browser's devtools for more information\n return callback(new Error(event.error));\n };\n}\n\n/**\n * A function that creates an event handler for the `unhandledrejection` event.\n * @param {EventCallback} callback A function called to handle the error context.\n * @returns {EventHandler} A handler for the `unhandledrejection` event.\n */\nfunction createRejectionHandler(callback) {\n return function rejectionHandler(event) {\n if (!event || !event.reason) {\n return callback(new Error('Unknown'));\n }\n if (event.reason instanceof Error) {\n return callback(event.reason);\n }\n // A non-error was rejected, we don't have a trace :(\n // Look in your browser's devtools for more information\n return callback(new Error(event.reason));\n };\n}\n\n/**\n * Creates a handler that registers an EventListener on window for a valid type\n * and calls a callback when the event fires.\n * @param {string} eventType A valid DOM event type.\n * @param {function(EventCallback): EventHandler} createHandler A function that creates an event handler.\n * @returns {register} A function that registers the EventListener given a callback.\n */\nfunction createWindowEventHandler(eventType, createHandler) {\n /**\n * @type {EventHandler | null} A cached event handler function.\n */\n let eventHandler = null;\n\n /**\n * Unregisters an EventListener if it has been registered.\n * @returns {void}\n */\n function unregister() {\n if (eventHandler === null) {\n return;\n }\n window.removeEventListener(eventType, eventHandler);\n eventHandler = null;\n }\n\n /**\n * Registers an EventListener if it hasn't been registered.\n * @param {EventCallback} callback A function called after the event handler to handle its context.\n * @returns {unregister | void} A function to unregister the registered EventListener if registration is performed.\n */\n function register(callback) {\n if (eventHandler !== null) {\n return;\n }\n eventHandler = createHandler(callback);\n window.addEventListener(eventType, eventHandler);\n\n return unregister;\n }\n\n return register;\n}\n\nconst handleError = createWindowEventHandler('error', createErrorHandler);\nconst handleUnhandledRejection = createWindowEventHandler(\n 'unhandledrejection',\n createRejectionHandler\n);\n\nmodule.exports = {\n handleError: handleError,\n handleUnhandledRejection: handleUnhandledRejection,\n};\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/errorEventHandlers.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/formatWebpackErrors.js":
-/*!***********************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/formatWebpackErrors.js ***!
- \***********************************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * @typedef {Object} WebpackErrorObj\n * @property {string} moduleIdentifier\n * @property {string} moduleName\n * @property {string} message\n */\n\nconst friendlySyntaxErrorLabel = 'Syntax error:';\n\n/**\n * Checks if the error message is for a syntax error.\n * @param {string} message The raw Webpack error message.\n * @returns {boolean} Whether the error message is for a syntax error.\n */\nfunction isLikelyASyntaxError(message) {\n return message.indexOf(friendlySyntaxErrorLabel) !== -1;\n}\n\n/**\n * Cleans up Webpack error messages.\n *\n * This implementation is based on the one from [create-react-app](https://github.com/facebook/create-react-app/blob/edc671eeea6b7d26ac3f1eb2050e50f75cf9ad5d/packages/react-dev-utils/formatWebpackMessages.js).\n * @param {string} message The raw Webpack error message.\n * @returns {string} The formatted Webpack error message.\n */\nfunction formatMessage(message) {\n let lines = message.split('\\n');\n\n // Strip Webpack-added headers off errors/warnings\n // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js\n lines = lines.filter(function (line) {\n return !/Module [A-z ]+\\(from/.test(line);\n });\n\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === '') {\n lines.splice(1, 1);\n }\n\n // Remove duplicated newlines\n lines = lines.filter(function (line, index, arr) {\n return index === 0 || line.trim() !== '' || line.trim() !== arr[index - 1].trim();\n });\n\n // Clean up the file name\n lines[0] = lines[0].replace(/^(.*) \\d+:\\d+-\\d+$/, '$1');\n\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].indexOf('Module not found: ') === 0) {\n lines = [\n lines[0],\n lines[1]\n .replace('Error: ', '')\n .replace('Module not found: Cannot find file:', 'Cannot find file:'),\n ];\n }\n\n message = lines.join('\\n');\n\n // Clean up syntax errors\n message = message.replace('SyntaxError:', friendlySyntaxErrorLabel);\n\n // Internal stacks are generally useless, so we strip them -\n // except the stacks containing `webpack:`,\n // because they're normally from user code generated by webpack.\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, ''); // at ... ...:x:y\n message = message.replace(/^\\s*at\\s((?!webpack:).)*[\\s)]*(\\n|$)/gm, ''); // at ... \n message = message.replace(/^\\s*at\\s(\\n|$)/gm, ''); // at \n\n return message.trim();\n}\n\n/**\n * Formats Webpack error messages into a more readable format.\n * @param {Array} errors An array of Webpack error messages.\n * @returns {string[]} The formatted Webpack error messages.\n */\nfunction formatWebpackErrors(errors) {\n let formattedErrors = errors.map(function (errorObjOrMessage) {\n // Webpack 5 compilation errors are in the form of descriptor objects,\n // so we have to join pieces to get the format we want.\n if (typeof errorObjOrMessage === 'object') {\n return formatMessage([errorObjOrMessage.moduleName, errorObjOrMessage.message].join('\\n'));\n }\n // Webpack 4 compilation errors are strings\n return formatMessage(errorObjOrMessage);\n });\n\n if (formattedErrors.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n formattedErrors = formattedErrors.filter(isLikelyASyntaxError);\n }\n return formattedErrors;\n}\n\nmodule.exports = formatWebpackErrors;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/formatWebpackErrors.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/patchUrl.js":
-/*!************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/patchUrl.js ***!
- \************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("/* global __react_refresh_polyfill_url__ */\n\n/**\n * @typedef {Object} UrlAPIs\n * @property {typeof URL} URL\n * @property {typeof URLSearchParams} URLSearchParams\n */\n\n/**\n * Runs a callback with patched the DOM URL APIs.\n * @param {function(UrlAPIs): void} callback The code to run with patched URL globals.\n * @returns {void}\n */\nfunction runWithPatchedUrl(callback) {\n var __originalURL;\n var __originalURLSearchParams;\n\n // Polyfill the DOM URL and URLSearchParams constructors\n if ( false || !window.URL) {\n __originalURL = window.URL;\n window.URL = __webpack_require__(/*! core-js-pure/web/url */ \"./node_modules/core-js-pure/web/url.js\");\n }\n if ( false || !window.URLSearchParams) {\n __originalURLSearchParams = window.URLSearchParams;\n window.URLSearchParams = __webpack_require__(/*! core-js-pure/web/url-search-params */ \"./node_modules/core-js-pure/web/url-search-params.js\");\n }\n\n // Pass in URL APIs in case they are needed\n callback({ URL: window.URL, URLSearchParams: window.URLSearchParams });\n\n // Restore polyfill-ed APIs to their original state\n if (__originalURL) {\n window.URL = __originalURL;\n }\n if (__originalURLSearchParams) {\n window.URLSearchParams = __originalURLSearchParams;\n }\n}\n\nmodule.exports = runWithPatchedUrl;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/patchUrl.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/retry.js":
-/*!*********************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/retry.js ***!
- \*********************************************************************************/
-/***/ ((module) => {
-
-eval("function runWithRetry(callback, maxRetries) {\n function executeWithRetryAndTimeout(currentCount) {\n try {\n if (currentCount > maxRetries - 1) {\n console.warn('[React Refresh] Failed to set up the socket connection.');\n return;\n }\n\n callback();\n } catch (err) {\n setTimeout(\n function () {\n executeWithRetryAndTimeout(currentCount + 1);\n },\n Math.pow(10, currentCount)\n );\n }\n }\n\n executeWithRetryAndTimeout(0);\n}\n\nmodule.exports = runWithRetry;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils/retry.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js":
-/*!***************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js ***!
- \***************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("/* global __webpack_require__ */\nvar Refresh = __webpack_require__(/*! react-refresh/runtime */ \"./node_modules/react-refresh/runtime.js\");\n\n/**\n * Extracts exports from a webpack module object.\n * @param {string} moduleId A Webpack module ID.\n * @returns {*} An exports object from the module.\n */\nfunction getModuleExports(moduleId) {\n if (typeof moduleId === 'undefined') {\n // `moduleId` is unavailable, which indicates that this module is not in the cache,\n // which means we won't be able to capture any exports,\n // and thus they cannot be refreshed safely.\n // These are likely runtime or dynamically generated modules.\n return {};\n }\n\n var maybeModule = __webpack_require__.c[moduleId];\n if (typeof maybeModule === 'undefined') {\n // `moduleId` is available but the module in cache is unavailable,\n // which indicates the module is somehow corrupted (e.g. broken Webpacak `module` globals).\n // We will warn the user (as this is likely a mistake) and assume they cannot be refreshed.\n console.warn('[React Refresh] Failed to get exports for module: ' + moduleId + '.');\n return {};\n }\n\n var exportsOrPromise = maybeModule.exports;\n if (typeof Promise !== 'undefined' && exportsOrPromise instanceof Promise) {\n return exportsOrPromise.then(function (exports) {\n return exports;\n });\n }\n return exportsOrPromise;\n}\n\n/**\n * Calculates the signature of a React refresh boundary.\n * If this signature changes, it's unsafe to accept the boundary.\n *\n * This implementation is based on the one in [Metro](https://github.com/facebook/metro/blob/907d6af22ac6ebe58572be418e9253a90665ecbd/packages/metro/src/lib/polyfills/require.js#L795-L816).\n * @param {*} moduleExports A Webpack module exports object.\n * @returns {string[]} A React refresh boundary signature array.\n */\nfunction getReactRefreshBoundarySignature(moduleExports) {\n var signature = [];\n signature.push(Refresh.getFamilyByType(moduleExports));\n\n if (moduleExports == null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n return signature;\n }\n\n for (var key in moduleExports) {\n if (key === '__esModule') {\n continue;\n }\n\n signature.push(key);\n signature.push(Refresh.getFamilyByType(moduleExports[key]));\n }\n\n return signature;\n}\n\n/**\n * Creates a data object to be retained across refreshes.\n * This object should not transtively reference previous exports,\n * which can form infinite chain of objects across refreshes, which can pressure RAM.\n *\n * @param {*} moduleExports A Webpack module exports object.\n * @returns {*} A React refresh boundary signature array.\n */\nfunction getWebpackHotData(moduleExports) {\n return {\n signature: getReactRefreshBoundarySignature(moduleExports),\n isReactRefreshBoundary: isReactRefreshBoundary(moduleExports),\n };\n}\n\n/**\n * Creates a helper that performs a delayed React refresh.\n * @returns {function(function(): void): void} A debounced React refresh function.\n */\nfunction createDebounceUpdate() {\n /**\n * A cached setTimeout handler.\n * @type {number | undefined}\n */\n var refreshTimeout;\n\n /**\n * Performs react refresh on a delay and clears the error overlay.\n * @param {function(): void} callback\n * @returns {void}\n */\n function enqueueUpdate(callback) {\n if (typeof refreshTimeout === 'undefined') {\n refreshTimeout = setTimeout(function () {\n refreshTimeout = undefined;\n Refresh.performReactRefresh();\n callback();\n }, 30);\n }\n }\n\n return enqueueUpdate;\n}\n\n/**\n * Checks if all exports are likely a React component.\n *\n * This implementation is based on the one in [Metro](https://github.com/facebook/metro/blob/febdba2383113c88296c61e28e4ef6a7f4939fda/packages/metro/src/lib/polyfills/require.js#L748-L774).\n * @param {*} moduleExports A Webpack module exports object.\n * @returns {boolean} Whether the exports are React component like.\n */\nfunction isReactRefreshBoundary(moduleExports) {\n if (Refresh.isLikelyComponentType(moduleExports)) {\n return true;\n }\n if (moduleExports === undefined || moduleExports === null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n return false;\n }\n\n var hasExports = false;\n var areAllExportsComponents = true;\n for (var key in moduleExports) {\n hasExports = true;\n\n // This is the ES Module indicator flag\n if (key === '__esModule') {\n continue;\n }\n\n // We can (and have to) safely execute getters here,\n // as Webpack manually assigns harmony exports to getters,\n // without any side-effects attached.\n // Ref: https://github.com/webpack/webpack/blob/b93048643fe74de2a6931755911da1212df55897/lib/MainTemplate.js#L281\n var exportValue = moduleExports[key];\n if (!Refresh.isLikelyComponentType(exportValue)) {\n areAllExportsComponents = false;\n }\n }\n\n return hasExports && areAllExportsComponents;\n}\n\n/**\n * Checks if exports are likely a React component and registers them.\n *\n * This implementation is based on the one in [Metro](https://github.com/facebook/metro/blob/febdba2383113c88296c61e28e4ef6a7f4939fda/packages/metro/src/lib/polyfills/require.js#L818-L835).\n * @param {*} moduleExports A Webpack module exports object.\n * @param {string} moduleId A Webpack module ID.\n * @returns {void}\n */\nfunction registerExportsForReactRefresh(moduleExports, moduleId) {\n if (Refresh.isLikelyComponentType(moduleExports)) {\n // Register module.exports if it is likely a component\n Refresh.register(moduleExports, moduleId + ' %exports%');\n }\n\n if (moduleExports === undefined || moduleExports === null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over the exports.\n return;\n }\n\n for (var key in moduleExports) {\n // Skip registering the ES Module indicator\n if (key === '__esModule') {\n continue;\n }\n\n var exportValue = moduleExports[key];\n if (Refresh.isLikelyComponentType(exportValue)) {\n var typeID = moduleId + ' %exports% ' + key;\n Refresh.register(exportValue, typeID);\n }\n }\n}\n\n/**\n * Compares previous and next module objects to check for mutated boundaries.\n *\n * This implementation is based on the one in [Metro](https://github.com/facebook/metro/blob/907d6af22ac6ebe58572be418e9253a90665ecbd/packages/metro/src/lib/polyfills/require.js#L776-L792).\n * @param {*} prevSignature The signature of the current Webpack module exports object.\n * @param {*} nextSignature The signature of the next Webpack module exports object.\n * @returns {boolean} Whether the React refresh boundary should be invalidated.\n */\nfunction shouldInvalidateReactRefreshBoundary(prevSignature, nextSignature) {\n if (prevSignature.length !== nextSignature.length) {\n return true;\n }\n\n for (var i = 0; i < nextSignature.length; i += 1) {\n if (prevSignature[i] !== nextSignature[i]) {\n return true;\n }\n }\n\n return false;\n}\n\nvar enqueueUpdate = createDebounceUpdate();\nfunction executeRuntime(moduleExports, moduleId, webpackHot, refreshOverlay, isTest) {\n registerExportsForReactRefresh(moduleExports, moduleId);\n\n if (webpackHot) {\n var isHotUpdate = !!webpackHot.data;\n var prevData;\n if (isHotUpdate) {\n prevData = webpackHot.data.prevData;\n }\n\n if (isReactRefreshBoundary(moduleExports)) {\n webpackHot.dispose(\n /**\n * A callback to performs a full refresh if React has unrecoverable errors,\n * and also caches the to-be-disposed module.\n * @param {*} data A hot module data object from Webpack HMR.\n * @returns {void}\n */\n function hotDisposeCallback(data) {\n // We have to mutate the data object to get data registered and cached\n data.prevData = getWebpackHotData(moduleExports);\n }\n );\n webpackHot.accept(\n /**\n * An error handler to allow self-recovering behaviours.\n * @param {Error} error An error occurred during evaluation of a module.\n * @returns {void}\n */\n function hotErrorHandler(error) {\n if (typeof refreshOverlay !== 'undefined' && refreshOverlay) {\n refreshOverlay.handleRuntimeError(error);\n }\n\n if (typeof isTest !== 'undefined' && isTest) {\n if (window.onHotAcceptError) {\n window.onHotAcceptError(error.message);\n }\n }\n\n __webpack_require__.c[moduleId].hot.accept(hotErrorHandler);\n }\n );\n\n if (isHotUpdate) {\n if (\n prevData &&\n prevData.isReactRefreshBoundary &&\n shouldInvalidateReactRefreshBoundary(\n prevData.signature,\n getReactRefreshBoundarySignature(moduleExports)\n )\n ) {\n webpackHot.invalidate();\n } else {\n enqueueUpdate(\n /**\n * A function to dismiss the error overlay after performing React refresh.\n * @returns {void}\n */\n function updateCallback() {\n if (typeof refreshOverlay !== 'undefined' && refreshOverlay) {\n refreshOverlay.clearRuntimeErrors();\n }\n }\n );\n }\n }\n } else {\n if (isHotUpdate && typeof prevData !== 'undefined') {\n webpackHot.invalidate();\n }\n }\n }\n}\n\nmodule.exports = Object.freeze({\n enqueueUpdate: enqueueUpdate,\n executeRuntime: executeRuntime,\n getModuleExports: getModuleExports,\n isReactRefreshBoundary: isReactRefreshBoundary,\n registerExportsForReactRefresh: registerExportsForReactRefresh,\n});\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/CompileErrorTrace.js":
-/*!***************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/CompileErrorTrace.js ***!
- \***************************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const ansiHTML = __webpack_require__(/*! ansi-html */ \"./node_modules/ansi-html/index.js\");\nconst entities = __webpack_require__(/*! html-entities */ \"./node_modules/html-entities/dist/commonjs/index.js\");\nconst theme = __webpack_require__(/*! ../theme.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js\");\nconst utils = __webpack_require__(/*! ../utils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/utils.js\");\n\nansiHTML.setColors(theme);\n\n/**\n * @typedef {Object} CompileErrorTraceProps\n * @property {string} errorMessage\n */\n\n/**\n * A formatter that turns Webpack compile error messages into highlighted HTML source traces.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {CompileErrorTraceProps} props\n * @returns {void}\n */\nfunction CompileErrorTrace(document, root, props) {\n const errorParts = props.errorMessage.split('\\n');\n if (errorParts.length) {\n if (errorParts[0]) {\n errorParts[0] = utils.formatFilename(errorParts[0]);\n }\n\n const errorMessage = errorParts.splice(1, 1)[0];\n if (errorMessage) {\n // Strip filename from the error message\n errorParts.unshift(errorMessage.replace(/^(.*:)\\s.*:(\\s.*)$/, '$1$2'));\n }\n }\n\n const stackContainer = document.createElement('pre');\n stackContainer.innerHTML = entities.decode(\n ansiHTML(entities.encode(errorParts.join('\\n'), { level: 'html5', mode: 'nonAscii' })),\n { level: 'html5' }\n );\n stackContainer.style.fontFamily = [\n '\"Operator Mono SSm\"',\n '\"Operator Mono\"',\n '\"Fira Code Retina\"',\n '\"Fira Code\"',\n '\"FiraCode-Retina\"',\n '\"Andale Mono\"',\n '\"Lucida Console\"',\n 'Menlo',\n 'Consolas',\n 'Monaco',\n 'monospace',\n ].join(', ');\n stackContainer.style.margin = '0';\n stackContainer.style.whiteSpace = 'pre-wrap';\n\n root.appendChild(stackContainer);\n}\n\nmodule.exports = CompileErrorTrace;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/CompileErrorTrace.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/PageHeader.js":
-/*!********************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/PageHeader.js ***!
- \********************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const Spacer = __webpack_require__(/*! ./Spacer.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js\");\nconst theme = __webpack_require__(/*! ../theme.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js\");\n\n/**\n * @typedef {Object} PageHeaderProps\n * @property {string} [message]\n * @property {string} title\n * @property {string} [topOffset]\n */\n\n/**\n * The header of the overlay.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {PageHeaderProps} props\n * @returns {void}\n */\nfunction PageHeader(document, root, props) {\n const pageHeaderContainer = document.createElement('div');\n pageHeaderContainer.style.background = '#' + theme.dimgrey;\n pageHeaderContainer.style.boxShadow = '0 1px 4px rgba(0, 0, 0, 0.3)';\n pageHeaderContainer.style.color = '#' + theme.white;\n pageHeaderContainer.style.left = '0';\n pageHeaderContainer.style.right = '0';\n pageHeaderContainer.style.padding = '1rem 1.5rem';\n pageHeaderContainer.style.paddingLeft = 'max(1.5rem, env(safe-area-inset-left))';\n pageHeaderContainer.style.paddingRight = 'max(1.5rem, env(safe-area-inset-right))';\n pageHeaderContainer.style.position = 'fixed';\n pageHeaderContainer.style.top = props.topOffset || '0';\n\n const title = document.createElement('h3');\n title.innerText = props.title;\n title.style.color = '#' + theme.red;\n title.style.fontSize = '1.125rem';\n title.style.lineHeight = '1.3';\n title.style.margin = '0';\n pageHeaderContainer.appendChild(title);\n\n if (props.message) {\n title.style.margin = '0 0 0.5rem';\n\n const message = document.createElement('span');\n message.innerText = props.message;\n message.style.color = '#' + theme.white;\n message.style.wordBreak = 'break-word';\n pageHeaderContainer.appendChild(message);\n }\n\n root.appendChild(pageHeaderContainer);\n\n // This has to run after appending elements to root\n // because we need to actual mounted height.\n Spacer(document, root, {\n space: pageHeaderContainer.offsetHeight.toString(10),\n });\n}\n\nmodule.exports = PageHeader;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/PageHeader.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorFooter.js":
-/*!****************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorFooter.js ***!
- \****************************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const Spacer = __webpack_require__(/*! ./Spacer.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js\");\nconst theme = __webpack_require__(/*! ../theme.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js\");\n\n/**\n * @typedef {Object} RuntimeErrorFooterProps\n * @property {string} [initialFocus]\n * @property {boolean} multiple\n * @property {function(MouseEvent): void} onClickCloseButton\n * @property {function(MouseEvent): void} onClickNextButton\n * @property {function(MouseEvent): void} onClickPrevButton\n */\n\n/**\n * A fixed footer that handles pagination of runtime errors.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {RuntimeErrorFooterProps} props\n * @returns {void}\n */\nfunction RuntimeErrorFooter(document, root, props) {\n const footer = document.createElement('div');\n footer.style.backgroundColor = '#' + theme.dimgrey;\n footer.style.bottom = '0';\n footer.style.boxShadow = '0 -1px 4px rgba(0, 0, 0, 0.3)';\n footer.style.height = '2.5rem';\n footer.style.left = '0';\n footer.style.right = '0';\n footer.style.lineHeight = '2.5rem';\n footer.style.paddingBottom = '0';\n footer.style.paddingBottom = 'env(safe-area-inset-bottom)';\n footer.style.position = 'fixed';\n footer.style.textAlign = 'center';\n footer.style.zIndex = '2';\n\n const BUTTON_CONFIGS = {\n prev: {\n id: 'prev',\n label: '◀ Prev',\n onClick: props.onClickPrevButton,\n },\n close: {\n id: 'close',\n label: '× Close',\n onClick: props.onClickCloseButton,\n },\n next: {\n id: 'next',\n label: 'Next ▶',\n onClick: props.onClickNextButton,\n },\n };\n\n let buttons = [BUTTON_CONFIGS.close];\n if (props.multiple) {\n buttons = [BUTTON_CONFIGS.prev, BUTTON_CONFIGS.close, BUTTON_CONFIGS.next];\n }\n\n /** @type {HTMLButtonElement | undefined} */\n let initialFocusButton;\n for (let i = 0; i < buttons.length; i += 1) {\n const buttonConfig = buttons[i];\n\n const button = document.createElement('button');\n button.id = buttonConfig.id;\n button.innerHTML = buttonConfig.label;\n button.tabIndex = 1;\n button.style.backgroundColor = '#' + theme.dimgrey;\n button.style.border = 'none';\n button.style.color = '#' + theme.white;\n button.style.cursor = 'pointer';\n button.style.fontSize = 'inherit';\n button.style.height = '100%';\n button.style.padding = '0.5rem 0.75rem';\n button.style.width = (100 / buttons.length).toString(10) + '%';\n button.addEventListener('click', buttonConfig.onClick);\n\n if (buttonConfig.id === props.initialFocus) {\n initialFocusButton = button;\n }\n\n footer.appendChild(button);\n }\n\n root.appendChild(footer);\n\n Spacer(document, root, { space: '2.5rem' });\n\n if (initialFocusButton) {\n initialFocusButton.focus();\n }\n}\n\nmodule.exports = RuntimeErrorFooter;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorFooter.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorHeader.js":
-/*!****************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorHeader.js ***!
- \****************************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const Spacer = __webpack_require__(/*! ./Spacer.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js\");\nconst theme = __webpack_require__(/*! ../theme.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js\");\n\n/**\n * @typedef {Object} RuntimeErrorHeaderProps\n * @property {number} currentErrorIndex\n * @property {number} totalErrors\n */\n\n/**\n * A fixed header that shows the total runtime error count.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {RuntimeErrorHeaderProps} props\n * @returns {void}\n */\nfunction RuntimeErrorHeader(document, root, props) {\n const header = document.createElement('div');\n header.innerText = 'Error ' + (props.currentErrorIndex + 1) + ' of ' + props.totalErrors;\n header.style.backgroundColor = '#' + theme.red;\n header.style.color = '#' + theme.white;\n header.style.fontWeight = '500';\n header.style.height = '2.5rem';\n header.style.left = '0';\n header.style.lineHeight = '2.5rem';\n header.style.position = 'fixed';\n header.style.textAlign = 'center';\n header.style.top = '0';\n header.style.width = '100vw';\n header.style.zIndex = '2';\n\n root.appendChild(header);\n\n Spacer(document, root, { space: '2.5rem' });\n}\n\nmodule.exports = RuntimeErrorHeader;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorHeader.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorStack.js":
-/*!***************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorStack.js ***!
- \***************************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const ErrorStackParser = __webpack_require__(/*! error-stack-parser */ \"./node_modules/error-stack-parser/error-stack-parser.js\");\nconst theme = __webpack_require__(/*! ../theme.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js\");\nconst utils = __webpack_require__(/*! ../utils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/utils.js\");\n\n/**\n * @typedef {Object} RuntimeErrorStackProps\n * @property {Error} error\n */\n\n/**\n * A formatter that turns runtime error stacks into highlighted HTML stacks.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {RuntimeErrorStackProps} props\n * @returns {void}\n */\nfunction RuntimeErrorStack(document, root, props) {\n const stackTitle = document.createElement('h4');\n stackTitle.innerText = 'Call Stack';\n stackTitle.style.color = '#' + theme.white;\n stackTitle.style.fontSize = '1.0625rem';\n stackTitle.style.fontWeight = '500';\n stackTitle.style.lineHeight = '1.3';\n stackTitle.style.margin = '0 0 0.5rem';\n\n const stackContainer = document.createElement('div');\n stackContainer.style.fontSize = '0.8125rem';\n stackContainer.style.lineHeight = '1.3';\n stackContainer.style.whiteSpace = 'pre-wrap';\n\n let errorStacks;\n try {\n errorStacks = ErrorStackParser.parse(props.error);\n } catch (e) {\n errorStacks = [];\n stackContainer.innerHTML = 'No stack trace is available for this error!';\n }\n\n for (let i = 0; i < Math.min(errorStacks.length, 10); i += 1) {\n const currentStack = errorStacks[i];\n\n const functionName = document.createElement('code');\n functionName.innerHTML = ' ' + currentStack.functionName || 0;\n functionName.style.color = '#' + theme.yellow;\n functionName.style.fontFamily = [\n '\"Operator Mono SSm\"',\n '\"Operator Mono\"',\n '\"Fira Code Retina\"',\n '\"Fira Code\"',\n '\"FiraCode-Retina\"',\n '\"Andale Mono\"',\n '\"Lucida Console\"',\n 'Menlo',\n 'Consolas',\n 'Monaco',\n 'monospace',\n ].join(', ');\n\n const fileName = document.createElement('div');\n fileName.innerHTML =\n ' ' +\n utils.formatFilename(currentStack.fileName) +\n ':' +\n currentStack.lineNumber +\n ':' +\n currentStack.columnNumber;\n fileName.style.color = '#' + theme.white;\n fileName.style.fontSize = '0.6875rem';\n fileName.style.marginBottom = '0.25rem';\n\n stackContainer.appendChild(functionName);\n stackContainer.appendChild(fileName);\n }\n\n root.appendChild(stackTitle);\n root.appendChild(stackContainer);\n}\n\nmodule.exports = RuntimeErrorStack;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorStack.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js":
-/*!****************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js ***!
- \****************************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * @typedef {Object} SpacerProps\n * @property {string} space\n */\n\n/**\n * An empty element to add spacing manually.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {SpacerProps} props\n * @returns {void}\n */\nfunction Spacer(document, root, props) {\n const spacer = document.createElement('div');\n spacer.style.paddingBottom = props.space;\n root.appendChild(spacer);\n}\n\nmodule.exports = Spacer;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/CompileErrorContainer.js":
-/*!*******************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/CompileErrorContainer.js ***!
- \*******************************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const CompileErrorTrace = __webpack_require__(/*! ../components/CompileErrorTrace.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/CompileErrorTrace.js\");\nconst PageHeader = __webpack_require__(/*! ../components/PageHeader.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/PageHeader.js\");\nconst Spacer = __webpack_require__(/*! ../components/Spacer.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js\");\n\n/**\n * @typedef {Object} CompileErrorContainerProps\n * @property {string} errorMessage\n */\n\n/**\n * A container to render Webpack compilation error messages with source trace.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {CompileErrorContainerProps} props\n * @returns {void}\n */\nfunction CompileErrorContainer(document, root, props) {\n PageHeader(document, root, {\n title: 'Failed to compile.',\n });\n CompileErrorTrace(document, root, { errorMessage: props.errorMessage });\n Spacer(document, root, { space: '1rem' });\n}\n\nmodule.exports = CompileErrorContainer;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/CompileErrorContainer.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/RuntimeErrorContainer.js":
-/*!*******************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/RuntimeErrorContainer.js ***!
- \*******************************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const PageHeader = __webpack_require__(/*! ../components/PageHeader.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/PageHeader.js\");\nconst RuntimeErrorStack = __webpack_require__(/*! ../components/RuntimeErrorStack.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorStack.js\");\nconst Spacer = __webpack_require__(/*! ../components/Spacer.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js\");\n\n/**\n * @typedef {Object} RuntimeErrorContainerProps\n * @property {Error} currentError\n */\n\n/**\n * A container to render runtime error messages with stack trace.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {RuntimeErrorContainerProps} props\n * @returns {void}\n */\nfunction RuntimeErrorContainer(document, root, props) {\n PageHeader(document, root, {\n message: props.currentError.message,\n title: props.currentError.name,\n topOffset: '2.5rem',\n });\n RuntimeErrorStack(document, root, {\n error: props.currentError,\n });\n Spacer(document, root, { space: '1rem' });\n}\n\nmodule.exports = RuntimeErrorContainer;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/RuntimeErrorContainer.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js":
-/*!****************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js ***!
- \****************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const RuntimeErrorFooter = __webpack_require__(/*! ./components/RuntimeErrorFooter.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorFooter.js\");\nconst RuntimeErrorHeader = __webpack_require__(/*! ./components/RuntimeErrorHeader.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorHeader.js\");\nconst CompileErrorContainer = __webpack_require__(/*! ./containers/CompileErrorContainer.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/CompileErrorContainer.js\");\nconst RuntimeErrorContainer = __webpack_require__(/*! ./containers/RuntimeErrorContainer.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/containers/RuntimeErrorContainer.js\");\nconst theme = __webpack_require__(/*! ./theme.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js\");\nconst utils = __webpack_require__(/*! ./utils.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/utils.js\");\n\n/**\n * @callback RenderFn\n * @returns {void}\n */\n\n/* ===== Cached elements for DOM manipulations ===== */\n/**\n * The iframe that contains the overlay.\n * @type {HTMLIFrameElement}\n */\nlet iframeRoot = null;\n/**\n * The document object from the iframe root, used to create and render elements.\n * @type {Document}\n */\nlet rootDocument = null;\n/**\n * The root div elements will attach to.\n * @type {HTMLDivElement}\n */\nlet root = null;\n/**\n * A Cached function to allow deferred render.\n * @type {RenderFn | null}\n */\nlet scheduledRenderFn = null;\n\n/* ===== Overlay State ===== */\n/**\n * The latest error message from Webpack compilation.\n * @type {string}\n */\nlet currentCompileErrorMessage = '';\n/**\n * Index of the error currently shown by the overlay.\n * @type {number}\n */\nlet currentRuntimeErrorIndex = 0;\n/**\n * The latest runtime error objects.\n * @type {Error[]}\n */\nlet currentRuntimeErrors = [];\n/**\n * The render mode the overlay is currently in.\n * @type {'compileError' | 'runtimeError' | null}\n */\nlet currentMode = null;\n\n/**\n * @typedef {Object} IframeProps\n * @property {function(): void} onIframeLoad\n */\n\n/**\n * Creates the main `iframe` the overlay will attach to.\n * Accepts a callback to be ran after iframe is initialized.\n * @param {Document} document\n * @param {HTMLElement} root\n * @param {IframeProps} props\n * @returns {HTMLIFrameElement}\n */\nfunction IframeRoot(document, root, props) {\n const iframe = document.createElement('iframe');\n iframe.id = 'react-refresh-overlay';\n iframe.src = 'about:blank';\n\n iframe.style.border = 'none';\n iframe.style.height = '100%';\n iframe.style.left = '0';\n iframe.style.minHeight = '100vh';\n iframe.style.minHeight = '-webkit-fill-available';\n iframe.style.position = 'fixed';\n iframe.style.top = '0';\n iframe.style.width = '100vw';\n iframe.style.zIndex = '2147483647';\n iframe.addEventListener('load', function onLoad() {\n // Reset margin of iframe body\n iframe.contentDocument.body.style.margin = '0';\n props.onIframeLoad();\n });\n\n // We skip mounting and returns as we need to ensure\n // the load event is fired after we setup the global variable\n return iframe;\n}\n\n/**\n * Creates the main `div` element for the overlay to render.\n * @param {Document} document\n * @param {HTMLElement} root\n * @returns {HTMLDivElement}\n */\nfunction OverlayRoot(document, root) {\n const div = document.createElement('div');\n div.id = 'react-refresh-overlay-error';\n\n // Style the contents container\n div.style.backgroundColor = '#' + theme.grey;\n div.style.boxSizing = 'border-box';\n div.style.color = '#' + theme.white;\n div.style.fontFamily = [\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n '\"Helvetica Neue\"',\n 'Helvetica',\n 'Arial',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n 'Segoe UI Symbol',\n ].join(', ');\n div.style.fontSize = '0.875rem';\n div.style.height = '100%';\n div.style.lineHeight = '1.3';\n div.style.overflow = 'auto';\n div.style.padding = '1rem 1.5rem 0';\n div.style.paddingTop = 'max(1rem, env(safe-area-inset-top))';\n div.style.paddingRight = 'max(1.5rem, env(safe-area-inset-right))';\n div.style.paddingBottom = 'env(safe-area-inset-bottom)';\n div.style.paddingLeft = 'max(1.5rem, env(safe-area-inset-left))';\n div.style.width = '100vw';\n\n root.appendChild(div);\n return div;\n}\n\n/**\n * Ensures the iframe root and the overlay root are both initialized before render.\n * If check fails, render will be deferred until both roots are initialized.\n * @param {RenderFn} renderFn A function that triggers a DOM render.\n * @returns {void}\n */\nfunction ensureRootExists(renderFn) {\n if (root) {\n // Overlay root is ready, we can render right away.\n renderFn();\n return;\n }\n\n // Creating an iframe may be asynchronous so we'll defer render.\n // In case of multiple calls, function from the last call will be used.\n scheduledRenderFn = renderFn;\n\n if (iframeRoot) {\n // Iframe is already ready, it will fire the load event.\n return;\n }\n\n // Create the iframe root, and, the overlay root inside it when it is ready.\n iframeRoot = IframeRoot(document, document.body, {\n onIframeLoad: function onIframeLoad() {\n rootDocument = iframeRoot.contentDocument;\n root = OverlayRoot(rootDocument, rootDocument.body);\n scheduledRenderFn();\n },\n });\n\n // We have to mount here to ensure `iframeRoot` is set when `onIframeLoad` fires.\n // This is because onIframeLoad() will be called synchronously\n // or asynchronously depending on the browser.\n document.body.appendChild(iframeRoot);\n}\n\n/**\n * Creates the main `div` element for the overlay to render.\n * @returns {void}\n */\nfunction render() {\n ensureRootExists(function () {\n const currentFocus = rootDocument.activeElement;\n let currentFocusId;\n if (currentFocus.localName === 'button' && currentFocus.id) {\n currentFocusId = currentFocus.id;\n }\n\n utils.removeAllChildren(root);\n\n if (currentCompileErrorMessage) {\n currentMode = 'compileError';\n\n CompileErrorContainer(rootDocument, root, {\n errorMessage: currentCompileErrorMessage,\n });\n } else if (currentRuntimeErrors.length) {\n currentMode = 'runtimeError';\n\n RuntimeErrorHeader(rootDocument, root, {\n currentErrorIndex: currentRuntimeErrorIndex,\n totalErrors: currentRuntimeErrors.length,\n });\n RuntimeErrorContainer(rootDocument, root, {\n currentError: currentRuntimeErrors[currentRuntimeErrorIndex],\n });\n RuntimeErrorFooter(rootDocument, root, {\n initialFocus: currentFocusId,\n multiple: currentRuntimeErrors.length > 1,\n onClickCloseButton: function onClose() {\n clearRuntimeErrors();\n },\n onClickNextButton: function onNext() {\n if (currentRuntimeErrorIndex === currentRuntimeErrors.length - 1) {\n return;\n }\n currentRuntimeErrorIndex += 1;\n ensureRootExists(render);\n },\n onClickPrevButton: function onPrev() {\n if (currentRuntimeErrorIndex === 0) {\n return;\n }\n currentRuntimeErrorIndex -= 1;\n ensureRootExists(render);\n },\n });\n }\n });\n}\n\n/**\n * Destroys the state of the overlay.\n * @returns {void}\n */\nfunction cleanup() {\n // Clean up and reset all internal state.\n document.body.removeChild(iframeRoot);\n scheduledRenderFn = null;\n root = null;\n iframeRoot = null;\n}\n\n/**\n * Clears Webpack compilation errors and dismisses the compile error overlay.\n * @returns {void}\n */\nfunction clearCompileError() {\n if (!root || currentMode !== 'compileError') {\n return;\n }\n\n currentCompileErrorMessage = '';\n currentMode = null;\n cleanup();\n}\n\n/**\n * Clears runtime error records and dismisses the runtime error overlay.\n * @param {boolean} [dismissOverlay] Whether to dismiss the overlay or not.\n * @returns {void}\n */\nfunction clearRuntimeErrors(dismissOverlay) {\n if (!root || currentMode !== 'runtimeError') {\n return;\n }\n\n currentRuntimeErrorIndex = 0;\n currentRuntimeErrors = [];\n\n if (typeof dismissOverlay === 'undefined' || dismissOverlay) {\n currentMode = null;\n cleanup();\n }\n}\n\n/**\n * Shows the compile error overlay with the specific Webpack error message.\n * @param {string} message\n * @returns {void}\n */\nfunction showCompileError(message) {\n if (!message) {\n return;\n }\n\n currentCompileErrorMessage = message;\n\n render();\n}\n\n/**\n * Shows the runtime error overlay with the specific error records.\n * @param {Error[]} errors\n * @returns {void}\n */\nfunction showRuntimeErrors(errors) {\n if (!errors || !errors.length) {\n return;\n }\n\n currentRuntimeErrors = errors;\n\n render();\n}\n\n/**\n * The debounced version of `showRuntimeErrors` to prevent frequent renders\n * due to rapid firing listeners.\n * @param {Error[]} errors\n * @returns {void}\n */\nconst debouncedShowRuntimeErrors = utils.debounce(showRuntimeErrors, 30);\n\n/**\n * Detects if an error is a Webpack compilation error.\n * @param {Error} error The error of interest.\n * @returns {boolean} If the error is a Webpack compilation error.\n */\nfunction isWebpackCompileError(error) {\n return /Module [A-z ]+\\(from/.test(error.message) || /Cannot find module/.test(error.message);\n}\n\n/**\n * Handles runtime error contexts captured with EventListeners.\n * Integrates with a runtime error overlay.\n * @param {Error} error A valid error object.\n * @returns {void}\n */\nfunction handleRuntimeError(error) {\n if (error && !isWebpackCompileError(error) && currentRuntimeErrors.indexOf(error) === -1) {\n currentRuntimeErrors = currentRuntimeErrors.concat(error);\n }\n debouncedShowRuntimeErrors(currentRuntimeErrors);\n}\n\nmodule.exports = Object.freeze({\n clearCompileError: clearCompileError,\n clearRuntimeErrors: clearRuntimeErrors,\n handleRuntimeError: handleRuntimeError,\n showCompileError: showCompileError,\n showRuntimeErrors: showRuntimeErrors,\n});\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js":
-/*!****************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js ***!
- \****************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * @typedef {Object} Theme\n * @property {string[]} reset\n * @property {string} black\n * @property {string} red\n * @property {string} green\n * @property {string} yellow\n * @property {string} blue\n * @property {string} magenta\n * @property {string} cyan\n * @property {string} white\n * @property {string} lightgrey\n * @property {string} darkgrey\n * @property {string} grey\n * @property {string} dimgrey\n */\n\n/**\n * @type {Theme} theme\n * A collection of colors to be used by the overlay.\n * Partially adopted from Tomorrow Night Bright.\n */\nconst theme = {\n reset: ['transparent', 'transparent'],\n black: '000000',\n red: 'D34F56',\n green: 'B9C954',\n yellow: 'E6C452',\n blue: '7CA7D8',\n magenta: 'C299D6',\n cyan: '73BFB1',\n white: 'FFFFFF',\n lightgrey: 'C7C7C7',\n darkgrey: 'A9A9A9',\n grey: '474747',\n dimgrey: '343434',\n};\n\nmodule.exports = theme;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/theme.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/utils.js":
-/*!****************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/utils.js ***!
- \****************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * Debounce a function to delay invoking until wait (ms) have elapsed since the last invocation.\n * @param {function(...*): *} fn The function to be debounced.\n * @param {number} wait Milliseconds to wait before invoking again.\n * @return {function(...*): void} The debounced function.\n */\nfunction debounce(fn, wait) {\n /**\n * A cached setTimeout handler.\n * @type {number | undefined}\n */\n let timer;\n\n /**\n * @returns {void}\n */\n function debounced() {\n const context = this;\n const args = arguments;\n\n clearTimeout(timer);\n timer = setTimeout(function () {\n return fn.apply(context, args);\n }, wait);\n }\n\n return debounced;\n}\n\n/**\n * Prettify a filename from error stacks into the desired format.\n * @param {string} filename The filename to be formatted.\n * @returns {string} The formatted filename.\n */\nfunction formatFilename(filename) {\n // Strip away protocol and domain for compiled files\n const htmlMatch = /^https?:\\/\\/(.*)\\/(.*)/.exec(filename);\n if (htmlMatch && htmlMatch[1] && htmlMatch[2]) {\n return htmlMatch[2];\n }\n\n // Strip everything before the first directory for source files\n const sourceMatch = /\\/.*?([^./]+[/|\\\\].*)$/.exec(filename);\n if (sourceMatch && sourceMatch[1]) {\n return sourceMatch[1].replace(/\\?$/, '');\n }\n\n // Unknown filename type, use it as is\n return filename;\n}\n\n/**\n * Remove all children of an element.\n * @param {HTMLElement} element A valid HTML element.\n * @param {number} [skip] Number of elements to skip removing.\n * @returns {void}\n */\nfunction removeAllChildren(element, skip) {\n /** @type {Node[]} */\n const childList = Array.prototype.slice.call(\n element.childNodes,\n typeof skip !== 'undefined' ? skip : 0\n );\n\n for (let i = 0; i < childList.length; i += 1) {\n element.removeChild(childList[i]);\n }\n}\n\nmodule.exports = {\n debounce: debounce,\n formatFilename: formatFilename,\n removeAllChildren: removeAllChildren,\n};\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/utils.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/WDSSocket.js":
-/*!********************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/WDSSocket.js ***!
- \********************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("/* global __webpack_dev_server_client__ */\n\nconst getSocketUrlParts = __webpack_require__(/*! ./utils/getSocketUrlParts.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getSocketUrlParts.js\");\nconst getUrlFromParts = __webpack_require__(/*! ./utils/getUrlFromParts */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getUrlFromParts.js\");\nconst getWDSMetadata = __webpack_require__(/*! ./utils/getWDSMetadata */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getWDSMetadata.js\");\n\n/**\n * Initializes a socket server for HMR for webpack-dev-server.\n * @param {function(*): void} messageHandler A handler to consume Webpack compilation messages.\n * @param {string} [resourceQuery] Webpack's `__resourceQuery` string.\n * @returns {void}\n */\nfunction initWDSSocket(messageHandler, resourceQuery) {\n if (typeof __webpack_dev_server_client__ !== 'undefined') {\n let SocketClient = __webpack_dev_server_client__;\n if (typeof __webpack_dev_server_client__.default !== 'undefined') {\n SocketClient = __webpack_dev_server_client__.default;\n }\n\n const wdsMeta = getWDSMetadata(SocketClient);\n const urlParts = getSocketUrlParts(resourceQuery, wdsMeta);\n\n const connection = new SocketClient(getUrlFromParts(urlParts, wdsMeta));\n\n connection.onMessage(function onSocketMessage(data) {\n const message = JSON.parse(data);\n messageHandler(message);\n });\n }\n}\n\nmodule.exports = { init: initWDSSocket };\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/WDSSocket.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getCurrentScriptSource.js":
-/*!***************************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getCurrentScriptSource.js ***!
- \***************************************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * Gets the source (i.e. host) of the script currently running.\n * @returns {string}\n */\nfunction getCurrentScriptSource() {\n // `document.currentScript` is the most accurate way to get the current running script,\n // but is not supported in all browsers (most notably, IE).\n if ('currentScript' in document) {\n // In some cases, `document.currentScript` would be `null` even if the browser supports it:\n // e.g. asynchronous chunks on Firefox.\n // We should not fallback to the list-approach as it would not be safe.\n if (document.currentScript == null) return;\n return document.currentScript.getAttribute('src');\n }\n // Fallback to getting all scripts running in the document,\n // and finding the last one injected.\n else {\n const scriptElementsWithSrc = Array.prototype.filter.call(\n document.scripts || [],\n function (elem) {\n return elem.getAttribute('src');\n }\n );\n if (!scriptElementsWithSrc.length) return;\n const currentScript = scriptElementsWithSrc[scriptElementsWithSrc.length - 1];\n return currentScript.getAttribute('src');\n }\n}\n\nmodule.exports = getCurrentScriptSource;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getCurrentScriptSource.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getSocketUrlParts.js":
-/*!**********************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getSocketUrlParts.js ***!
- \**********************************************************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("const getCurrentScriptSource = __webpack_require__(/*! ./getCurrentScriptSource.js */ \"./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getCurrentScriptSource.js\");\n\n/**\n * @typedef {Object} SocketUrlParts\n * @property {string} [auth]\n * @property {string} hostname\n * @property {string} [protocol]\n * @property {string} pathname\n * @property {string} [port]\n */\n\n/**\n * Parse current location and Webpack's `__resourceQuery` into parts that can create a valid socket URL.\n * @param {string} [resourceQuery] The Webpack `__resourceQuery` string.\n * @param {import('./getWDSMetadata').WDSMetaObj} [metadata] The parsed WDS metadata object.\n * @returns {SocketUrlParts} The parsed URL parts.\n * @see https://webpack.js.org/api/module-variables/#__resourcequery-webpack-specific\n */\nfunction getSocketUrlParts(resourceQuery, metadata) {\n if (typeof metadata === 'undefined') {\n metadata = {};\n }\n\n /** @type {SocketUrlParts} */\n let urlParts = {};\n\n // If the resource query is available,\n // parse it and ignore everything we received from the script host.\n if (resourceQuery) {\n const parsedQuery = {};\n const searchParams = new URLSearchParams(resourceQuery.slice(1));\n searchParams.forEach(function (value, key) {\n parsedQuery[key] = value;\n });\n\n urlParts.hostname = parsedQuery.sockHost;\n urlParts.pathname = parsedQuery.sockPath;\n urlParts.port = parsedQuery.sockPort;\n\n // Make sure the protocol from resource query has a trailing colon\n if (parsedQuery.sockProtocol) {\n urlParts.protocol = parsedQuery.sockProtocol + ':';\n }\n } else {\n const scriptSource = getCurrentScriptSource();\n\n let url = {};\n try {\n // The placeholder `baseURL` with `window.location.href`,\n // is to allow parsing of path-relative or protocol-relative URLs,\n // and will have no effect if `scriptSource` is a fully valid URL.\n url = new URL(scriptSource, window.location.href);\n } catch (e) {\n // URL parsing failed, do nothing.\n // We will still proceed to see if we can recover using `resourceQuery`\n }\n\n // Parse authentication credentials in case we need them\n if (url.username) {\n // Since HTTP basic authentication does not allow empty username,\n // we only include password if the username is not empty.\n // Result: or :\n urlParts.auth = url.username;\n if (url.password) {\n urlParts.auth += ':' + url.password;\n }\n }\n\n // `file://` URLs has `'null'` origin\n if (url.origin !== 'null') {\n urlParts.hostname = url.hostname;\n }\n\n urlParts.protocol = url.protocol;\n urlParts.port = url.port;\n }\n\n if (!urlParts.pathname) {\n if (metadata.version === 4) {\n // This is hard-coded in WDS v4\n urlParts.pathname = '/ws';\n } else {\n // This is hard-coded in WDS v3\n urlParts.pathname = '/sockjs-node';\n }\n }\n\n // Check for IPv4 and IPv6 host addresses that correspond to any/empty.\n // This is important because `hostname` can be empty for some hosts,\n // such as 'about:blank' or 'file://' URLs.\n const isEmptyHostname =\n urlParts.hostname === '0.0.0.0' || urlParts.hostname === '[::]' || !urlParts.hostname;\n // We only re-assign the hostname if it is empty,\n // and if we are using HTTP/HTTPS protocols.\n if (\n isEmptyHostname &&\n window.location.hostname &&\n window.location.protocol.indexOf('http') === 0\n ) {\n urlParts.hostname = window.location.hostname;\n }\n\n // We only re-assign `protocol` when `protocol` is unavailable,\n // or if `hostname` is available and is empty,\n // since otherwise we risk creating an invalid URL.\n // We also do this when no sockProtocol was passed to the config and 'https' is used,\n // as it mandates the use of secure sockets.\n if (\n !urlParts.protocol ||\n (urlParts.hostname &&\n (isEmptyHostname || (!resourceQuery && window.location.protocol === 'https:')))\n ) {\n urlParts.protocol = window.location.protocol;\n }\n\n // We only re-assign port when it is not available\n if (!urlParts.port) {\n urlParts.port = window.location.port;\n }\n\n if (!urlParts.hostname || !urlParts.pathname) {\n throw new Error(\n [\n '[React Refresh] Failed to get an URL for the socket connection.',\n \"This usually means that the current executed script doesn't have a `src` attribute set.\",\n 'You should either specify the socket path parameters under the `devServer` key in your Webpack config, or use the `overlay` option.',\n 'https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/docs/API.md#overlay',\n ].join('\\n')\n );\n }\n\n return {\n auth: urlParts.auth,\n hostname: urlParts.hostname,\n pathname: urlParts.pathname,\n protocol: urlParts.protocol,\n port: urlParts.port || undefined,\n };\n}\n\nmodule.exports = getSocketUrlParts;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getSocketUrlParts.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getUrlFromParts.js":
-/*!********************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getUrlFromParts.js ***!
- \********************************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * Create a valid URL from parsed URL parts.\n * @param {import('./getSocketUrlParts').SocketUrlParts} urlParts The parsed URL parts.\n * @param {import('./getWDSMetadata').WDSMetaObj} [metadata] The parsed WDS metadata object.\n * @returns {string} The generated URL.\n */\nfunction urlFromParts(urlParts, metadata) {\n if (typeof metadata === 'undefined') {\n metadata = {};\n }\n\n let fullProtocol = 'http:';\n if (urlParts.protocol) {\n fullProtocol = urlParts.protocol;\n }\n if (metadata.enforceWs) {\n fullProtocol = fullProtocol.replace(/^(?:http|.+-extension|file)/i, 'ws');\n }\n\n fullProtocol = fullProtocol + '//';\n\n let fullHost = urlParts.hostname;\n if (urlParts.auth) {\n const fullAuth = urlParts.auth.split(':').map(encodeURIComponent).join(':') + '@';\n fullHost = fullAuth + fullHost;\n }\n if (urlParts.port) {\n fullHost = fullHost + ':' + urlParts.port;\n }\n\n const url = new URL(urlParts.pathname, fullProtocol + fullHost);\n return url.href;\n}\n\nmodule.exports = urlFromParts;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getUrlFromParts.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getWDSMetadata.js":
-/*!*******************************************************************************************!*\
- !*** ./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getWDSMetadata.js ***!
- \*******************************************************************************************/
-/***/ ((module) => {
-
-eval("/**\n * @typedef {Object} WDSMetaObj\n * @property {boolean} enforceWs\n * @property {number} version\n */\n\n/**\n * Derives WDS metadata from a compatible socket client.\n * @param {Function} SocketClient A WDS socket client (SockJS/WebSocket).\n * @returns {WDSMetaObj} The parsed WDS metadata object.\n */\nfunction getWDSMetadata(SocketClient) {\n let enforceWs = false;\n if (\n typeof SocketClient.name !== 'undefined' &&\n SocketClient.name !== null &&\n SocketClient.name.toLowerCase().includes('websocket')\n ) {\n enforceWs = true;\n }\n\n let version;\n // WDS versions <=3.5.0\n if (!('onMessage' in SocketClient.prototype)) {\n version = 3;\n } else {\n // WDS versions >=3.5.0 <4\n if (\n 'getClientPath' in SocketClient ||\n Object.getPrototypeOf(SocketClient).name === 'BaseClient'\n ) {\n version = 3;\n } else {\n version = 4;\n }\n }\n\n return {\n enforceWs: enforceWs,\n version: version,\n };\n}\n\nmodule.exports = getWDSMetadata;\n\n\n//# sourceURL=webpack://tududi/./node_modules/@pmmmwh/react-refresh-webpack-plugin/sockets/utils/getWDSMetadata.js?");
-
-/***/ }),
-
-/***/ "./node_modules/@remix-run/router/dist/router.js":
-/*!*******************************************************!*\
- !*** ./node_modules/@remix-run/router/dist/router.js ***!
- \*******************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbortedDeferredError: () => (/* binding */ AbortedDeferredError),\n/* harmony export */ Action: () => (/* binding */ Action),\n/* harmony export */ IDLE_BLOCKER: () => (/* binding */ IDLE_BLOCKER),\n/* harmony export */ IDLE_FETCHER: () => (/* binding */ IDLE_FETCHER),\n/* harmony export */ IDLE_NAVIGATION: () => (/* binding */ IDLE_NAVIGATION),\n/* harmony export */ UNSAFE_DEFERRED_SYMBOL: () => (/* binding */ UNSAFE_DEFERRED_SYMBOL),\n/* harmony export */ UNSAFE_DeferredData: () => (/* binding */ DeferredData),\n/* harmony export */ UNSAFE_ErrorResponseImpl: () => (/* binding */ ErrorResponseImpl),\n/* harmony export */ UNSAFE_convertRouteMatchToUiMatch: () => (/* binding */ convertRouteMatchToUiMatch),\n/* harmony export */ UNSAFE_convertRoutesToDataRoutes: () => (/* binding */ convertRoutesToDataRoutes),\n/* harmony export */ UNSAFE_decodePath: () => (/* binding */ decodePath),\n/* harmony export */ UNSAFE_getResolveToMatches: () => (/* binding */ getResolveToMatches),\n/* harmony export */ UNSAFE_invariant: () => (/* binding */ invariant),\n/* harmony export */ UNSAFE_warning: () => (/* binding */ warning),\n/* harmony export */ createBrowserHistory: () => (/* binding */ createBrowserHistory),\n/* harmony export */ createHashHistory: () => (/* binding */ createHashHistory),\n/* harmony export */ createMemoryHistory: () => (/* binding */ createMemoryHistory),\n/* harmony export */ createPath: () => (/* binding */ createPath),\n/* harmony export */ createRouter: () => (/* binding */ createRouter),\n/* harmony export */ createStaticHandler: () => (/* binding */ createStaticHandler),\n/* harmony export */ data: () => (/* binding */ data),\n/* harmony export */ defer: () => (/* binding */ defer),\n/* harmony export */ generatePath: () => (/* binding */ generatePath),\n/* harmony export */ getStaticContextFromError: () => (/* binding */ getStaticContextFromError),\n/* harmony export */ getToPathname: () => (/* binding */ getToPathname),\n/* harmony export */ isDataWithResponseInit: () => (/* binding */ isDataWithResponseInit),\n/* harmony export */ isDeferredData: () => (/* binding */ isDeferredData),\n/* harmony export */ isRouteErrorResponse: () => (/* binding */ isRouteErrorResponse),\n/* harmony export */ joinPaths: () => (/* binding */ joinPaths),\n/* harmony export */ json: () => (/* binding */ json),\n/* harmony export */ matchPath: () => (/* binding */ matchPath),\n/* harmony export */ matchRoutes: () => (/* binding */ matchRoutes),\n/* harmony export */ normalizePathname: () => (/* binding */ normalizePathname),\n/* harmony export */ parsePath: () => (/* binding */ parsePath),\n/* harmony export */ redirect: () => (/* binding */ redirect),\n/* harmony export */ redirectDocument: () => (/* binding */ redirectDocument),\n/* harmony export */ replace: () => (/* binding */ replace),\n/* harmony export */ resolvePath: () => (/* binding */ resolvePath),\n/* harmony export */ resolveTo: () => (/* binding */ resolveTo),\n/* harmony export */ stripBasename: () => (/* binding */ stripBasename)\n/* harmony export */ });\n/**\n * @remix-run/router v1.23.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded, allowPartial);\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname, allowPartial) {\n if (allowPartial === void 0) {\n allowPartial = false;\n }\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n let route = meta.route;\n if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false\n }, remainingPathname);\n }\n if (!match) {\n return null;\n }\n Object.assign(matchedParams, match.params);\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map(v => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n let pathMatches = getPathContributingMatches(matches);\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);\n }\n return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass DataWithResponseInit {\n constructor(data, init) {\n this.type = \"DataWithResponseInit\";\n this.data = data;\n this.init = init || null;\n }\n}\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nfunction data(data, init) {\n return new DataWithResponseInit(data, typeof init === \"number\" ? {\n status: init\n } : init);\n}\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst replace = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialMatchesIsFOW = false;\n let initialErrors = null;\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(initialMatches, dataRoutes, init.history.location.pathname);\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n let initialized;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(null, dataRoutes, init.history.location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatchesIsFOW = true;\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some(m => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some(m => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n initialized = initialMatches.slice(0, idx + 1).every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = new Set();\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate = undefined;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise(resolve => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Remove any lingering deleted fetchers that have already been removed\n // from state.fetchers\n deletedFetchers.forEach(key => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n deletedFetchersKeys.push(key);\n }\n });\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n } else {\n // We already called deleteFetcher() on these, can remove them from this\n // Set now that we've handed the keys off to the data layer\n deletedFetchersKeys.forEach(key => deletedFetchers.delete(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = opts != null && opts.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ?\n // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n state.matches : matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a