diff --git a/backend/database.sqlite b/backend/database.sqlite
new file mode 100644
index 0000000..e69de29
diff --git a/backend/migrations/20250620000001-add-task-intelligence-enabled.js b/backend/migrations/20250620000001-add-task-intelligence-enabled.js
new file mode 100644
index 0000000..0652eb2
--- /dev/null
+++ b/backend/migrations/20250620000001-add-task-intelligence-enabled.js
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = {
+ up: async (queryInterface, Sequelize) => {
+ await queryInterface.addColumn('users', 'task_intelligence_enabled', {
+ type: Sequelize.BOOLEAN,
+ allowNull: false,
+ defaultValue: true
+ });
+ },
+
+ down: async (queryInterface, Sequelize) => {
+ await queryInterface.removeColumn('users', 'task_intelligence_enabled');
+ }
+};
\ No newline at end of file
diff --git a/backend/migrations/20250620000002-add-auto-suggest-next-actions-enabled.js b/backend/migrations/20250620000002-add-auto-suggest-next-actions-enabled.js
new file mode 100644
index 0000000..ac8bec9
--- /dev/null
+++ b/backend/migrations/20250620000002-add-auto-suggest-next-actions-enabled.js
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = {
+ up: async (queryInterface, Sequelize) => {
+ await queryInterface.addColumn('users', 'auto_suggest_next_actions_enabled', {
+ type: Sequelize.BOOLEAN,
+ allowNull: false,
+ defaultValue: false
+ });
+ },
+
+ down: async (queryInterface, Sequelize) => {
+ await queryInterface.removeColumn('users', 'auto_suggest_next_actions_enabled');
+ }
+};
\ No newline at end of file
diff --git a/backend/models/user.js b/backend/models/user.js
index 489eeeb..48f0bd1 100644
--- a/backend/models/user.js
+++ b/backend/models/user.js
@@ -75,6 +75,16 @@ module.exports = (sequelize) => {
task_summary_next_run: {
type: DataTypes.DATE,
allowNull: true
+ },
+ task_intelligence_enabled: {
+ type: DataTypes.BOOLEAN,
+ allowNull: false,
+ defaultValue: true
+ },
+ auto_suggest_next_actions_enabled: {
+ type: DataTypes.BOOLEAN,
+ allowNull: false,
+ defaultValue: false
}
}, {
tableName: 'users',
diff --git a/backend/routes/users.js b/backend/routes/users.js
index 6616df2..c61d1c0 100644
--- a/backend/routes/users.js
+++ b/backend/routes/users.js
@@ -16,7 +16,8 @@ router.get('/profile', async (req, res) => {
attributes: [
'id', 'email', 'appearance', 'language', 'timezone',
'avatar_image', 'telegram_bot_token', 'telegram_chat_id',
- 'task_summary_enabled', 'task_summary_frequency'
+ 'task_summary_enabled', 'task_summary_frequency', 'task_intelligence_enabled',
+ 'auto_suggest_next_actions_enabled'
]
});
@@ -43,7 +44,7 @@ router.patch('/profile', async (req, res) => {
return res.status(404).json({ error: 'Profile not found.' });
}
- const { appearance, language, timezone, avatar_image, telegram_bot_token } = req.body;
+ const { appearance, language, timezone, avatar_image, telegram_bot_token, task_intelligence_enabled, task_summary_enabled, task_summary_frequency, auto_suggest_next_actions_enabled } = req.body;
const allowedUpdates = {};
if (appearance !== undefined) allowedUpdates.appearance = appearance;
@@ -51,12 +52,16 @@ router.patch('/profile', async (req, res) => {
if (timezone !== undefined) allowedUpdates.timezone = timezone;
if (avatar_image !== undefined) allowedUpdates.avatar_image = avatar_image;
if (telegram_bot_token !== undefined) allowedUpdates.telegram_bot_token = telegram_bot_token;
+ if (task_intelligence_enabled !== undefined) allowedUpdates.task_intelligence_enabled = task_intelligence_enabled;
+ if (task_summary_enabled !== undefined) allowedUpdates.task_summary_enabled = task_summary_enabled;
+ if (task_summary_frequency !== undefined) allowedUpdates.task_summary_frequency = task_summary_frequency;
+ if (auto_suggest_next_actions_enabled !== undefined) allowedUpdates.auto_suggest_next_actions_enabled = auto_suggest_next_actions_enabled;
await user.update(allowedUpdates);
// Return updated user with limited fields
const updatedUser = await User.findByPk(user.id, {
- attributes: ['id', 'email', 'appearance', 'language', 'timezone', 'avatar_image', 'telegram_bot_token', 'telegram_chat_id']
+ attributes: ['id', 'email', 'appearance', 'language', 'timezone', 'avatar_image', 'telegram_bot_token', 'telegram_chat_id', 'task_intelligence_enabled', 'task_summary_enabled', 'task_summary_frequency', 'auto_suggest_next_actions_enabled']
});
res.json(updatedUser);
diff --git a/backend/start.sh b/backend/start.sh
index 3fd3f0e..e65ab8e 100755
--- a/backend/start.sh
+++ b/backend/start.sh
@@ -8,4 +8,4 @@ echo " TUDUDI_USER_EMAIL=your_email@example.com"
echo " TUDUDI_USER_PASSWORD=your_password"
echo ""
-PORT=3001 npm start
\ No newline at end of file
+PORT=3002 npm start
\ No newline at end of file
diff --git a/dist/index.html b/dist/index.html
index d3ca31a..98ae913 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -5,7 +5,7 @@
Tududi
-
+
diff --git a/dist/main.c4f3294a76ad7df1abf3.js b/dist/main.f7b757adb68235200251.js
similarity index 91%
rename from dist/main.c4f3294a76ad7df1abf3.js
rename to dist/main.f7b757adb68235200251.js
index 4fb4547..e6348f2 100644
--- a/dist/main.c4f3294a76ad7df1abf3.js
+++ b/dist/main.f7b757adb68235200251.js
@@ -136,7 +136,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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/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 _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__ = __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_5__ = __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/* 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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 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 dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.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 var toggleDropdown = function toggleDropdown() {\n setIsDropdownOpen(!isDropdownOpen);\n };\n var handleLogout = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var response;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return fetch('/api/logout', {\n method: 'GET',\n credentials: 'include'\n });\n case 3:\n response = _context.sent;\n if (!response.ok) {\n _context.next = 9;\n break;\n }\n setCurrentUser(null);\n navigate('/login');\n _context.next = 14;\n break;\n case 9:\n _context.t0 = console;\n _context.next = 12;\n return response.json();\n case 12:\n _context.t1 = _context.sent;\n _context.t0.error.call(_context.t0, 'Logout failed:', _context.t1);\n case 14:\n _context.next = 19;\n break;\n case 16:\n _context.prev = 16;\n _context.t2 = _context[\"catch\"](0);\n console.error('Error during logout:', _context.t2);\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 16]]);\n }));\n return function handleLogout() {\n return _ref2.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_3__[\"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_4__.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 }, /*#__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_5__[\"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_4__.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('nav.profile', '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('nav.logout', 'Logout')))))));\n};\n_s(Navbar, \"oqYBwuFqzRGd6605389zYqHh9Rc=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, react_router_dom__WEBPACK_IMPORTED_MODULE_2__.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?");
+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/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 _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__ = __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_5__ = __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/* 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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 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 dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.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 var toggleDropdown = function toggleDropdown() {\n setIsDropdownOpen(!isDropdownOpen);\n };\n var handleLogout = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var response;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return fetch('/api/logout', {\n method: 'GET',\n credentials: 'include'\n });\n case 3:\n response = _context.sent;\n if (!response.ok) {\n _context.next = 9;\n break;\n }\n setCurrentUser(null);\n navigate('/login');\n _context.next = 14;\n break;\n case 9:\n _context.t0 = console;\n _context.next = 12;\n return response.json();\n case 12:\n _context.t1 = _context.sent;\n _context.t0.error.call(_context.t0, 'Logout failed:', _context.t1);\n case 14:\n _context.next = 19;\n break;\n case 16:\n _context.prev = 16;\n _context.t2 = _context[\"catch\"](0);\n console.error('Error during logout:', _context.t2);\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 16]]);\n }));\n return function handleLogout() {\n return _ref2.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_3__[\"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_4__.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 }, /*#__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_5__[\"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_4__.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, \"oqYBwuFqzRGd6605389zYqHh9Rc=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, react_router_dom__WEBPACK_IMPORTED_MODULE_2__.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?");
/***/ }),
@@ -169,7 +169,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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_5__ = __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_6__ = __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_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 _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/* 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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 Notes = function Notes() {\n _s();\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 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 _useState10 = _slicedToArray(_useState9, 2),\n noteToDelete = _useState10[0],\n setNoteToDelete = _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)(true),\n _useState14 = _slicedToArray(_useState13, 2),\n isLoading = _useState14[0],\n setIsLoading = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n isError = _useState16[0],\n setIsError = _useState16[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadNotes = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var fetchedNotes;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n setIsLoading(true);\n _context.prev = 1;\n _context.next = 4;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.fetchNotes)();\n case 4:\n fetchedNotes = _context.sent;\n setNotes(fetchedNotes);\n _context.next = 12;\n break;\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](1);\n console.error('Error loading notes:', _context.t0);\n setIsError(true);\n case 12:\n _context.prev = 12;\n setIsLoading(false);\n return _context.finish(12);\n case 15:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[1, 8, 12, 15]]);\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__*/_regeneratorRuntime().mark(function _callee2() {\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (noteToDelete) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\");\n case 2:\n _context2.prev = 2;\n _context2.next = 5;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.deleteNote)(noteToDelete.id);\n case 5:\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.next = 13;\n break;\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](2);\n console.error('Error deleting note:', _context2.t0);\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[2, 10]]);\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__*/_regeneratorRuntime().mark(function _callee3(noteData) {\n var updatedNotes, newNote;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n if (!noteData.id) {\n _context3.next = 7;\n break;\n }\n _context3.next = 4;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.updateNote)(noteData.id, noteData);\n case 4:\n updatedNotes = notes.map(function (note) {\n return note.id === noteData.id ? noteData : note;\n });\n _context3.next = 11;\n break;\n case 7:\n _context3.next = 9;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.createNote)(noteData);\n case 9:\n newNote = _context3.sent;\n updatedNotes = [].concat(_toConsumableArray(notes), [newNote]);\n case 11:\n setNotes(updatedNotes);\n setIsNoteModalOpen(false);\n setSelectedNote(null);\n _context3.next = 19;\n break;\n case 16:\n _context3.prev = 16;\n _context3.t0 = _context3[\"catch\"](0);\n console.error('Error saving note:', _context3.t0);\n case 19:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[0, 16]]);\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_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 }, 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_6__[\"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-2 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: \"/note/\".concat(note.id),\n className: \"text-md font-semibold text-gray-900 dark:text-gray-100 hover:underline block\"\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: function onClick() {\n return handleEditNote(note);\n },\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none\",\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_8__[\"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 \"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_9__[\"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, \"tWC9YyTMFcF80mPrda99BjZZhBw=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\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?");
+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_5__ = __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_6__ = __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_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 _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/* 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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 Notes = function Notes() {\n _s();\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 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 _useState10 = _slicedToArray(_useState9, 2),\n noteToDelete = _useState10[0],\n setNoteToDelete = _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)(true),\n _useState14 = _slicedToArray(_useState13, 2),\n isLoading = _useState14[0],\n setIsLoading = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n isError = _useState16[0],\n setIsError = _useState16[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadNotes = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var fetchedNotes;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n setIsLoading(true);\n _context.prev = 1;\n console.log('Attempting to fetch notes...');\n _context.next = 5;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.fetchNotes)();\n case 5:\n fetchedNotes = _context.sent;\n console.log('Fetched notes:', fetchedNotes);\n console.log('Number of notes:', fetchedNotes.length);\n setNotes(fetchedNotes);\n _context.next = 15;\n break;\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](1);\n console.error('Error loading notes:', _context.t0);\n setIsError(true);\n case 15:\n _context.prev = 15;\n setIsLoading(false);\n return _context.finish(15);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[1, 11, 15, 18]]);\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__*/_regeneratorRuntime().mark(function _callee2() {\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (noteToDelete) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\");\n case 2:\n _context2.prev = 2;\n _context2.next = 5;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.deleteNote)(noteToDelete.id);\n case 5:\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.next = 13;\n break;\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](2);\n console.error('Error deleting note:', _context2.t0);\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[2, 10]]);\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__*/_regeneratorRuntime().mark(function _callee3(noteData) {\n var updatedNotes, newNote;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n if (!noteData.id) {\n _context3.next = 7;\n break;\n }\n _context3.next = 4;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.updateNote)(noteData.id, noteData);\n case 4:\n updatedNotes = notes.map(function (note) {\n return note.id === noteData.id ? noteData : note;\n });\n _context3.next = 11;\n break;\n case 7:\n _context3.next = 9;\n return (0,_utils_notesService__WEBPACK_IMPORTED_MODULE_4__.createNote)(noteData);\n case 9:\n newNote = _context3.sent;\n updatedNotes = [].concat(_toConsumableArray(notes), [newNote]);\n case 11:\n setNotes(updatedNotes);\n setIsNoteModalOpen(false);\n setSelectedNote(null);\n _context3.next = 19;\n break;\n case 16:\n _context3.prev = 16;\n _context3.t0 = _context3[\"catch\"](0);\n console.error('Error saving note:', _context3.t0);\n case 19:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[0, 16]]);\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 console.log('All notes:', notes);\n console.log('Search query:', searchQuery);\n console.log('Filtered notes:', filteredNotes);\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_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 }, 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_6__[\"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-2 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: \"/note/\".concat(note.id),\n className: \"text-md font-semibold text-gray-900 dark:text-gray-100 hover:underline block\"\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: function onClick() {\n return handleEditNote(note);\n },\n className: \"text-gray-500 hover:text-blue-700 dark:hover:text-blue-300 focus:outline-none\",\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_8__[\"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 \"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_9__[\"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, \"tWC9YyTMFcF80mPrda99BjZZhBw=\", false, function () {\n return [react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation];\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?");
/***/ }),
@@ -180,7 +180,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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/InformationCircleIcon.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 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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 capitalize = function capitalize(str) {\n if (!str) return '';\n return str.charAt(0).toUpperCase() + str.slice(1);\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 currentUser = _ref.currentUser,\n 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)(null),\n _useState2 = _slicedToArray(_useState, 2),\n profile = _useState2[0],\n setProfile = _useState2[1];\n var _useState3 = (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 }),\n _useState4 = _slicedToArray(_useState3, 2),\n formData = _useState4[0],\n setFormData = _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)(null),\n _useState10 = _slicedToArray(_useState9, 2),\n success = _useState10[0],\n setSuccess = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),\n _useState12 = _slicedToArray(_useState11, 2),\n updateKey = _useState12[0],\n setUpdateKey = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n isChangingLanguage = _useState14[0],\n setIsChangingLanguage = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState16 = _slicedToArray(_useState15, 2),\n telegramBotToken = _useState16[0],\n setTelegramBotToken = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState18 = _slicedToArray(_useState17, 2),\n telegramChatId = _useState18[0],\n setTelegramChatId = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState20 = _slicedToArray(_useState19, 2),\n isTesting = _useState20[0],\n setIsTesting = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState22 = _slicedToArray(_useState21, 2),\n isSendingSummary = _useState22[0],\n setIsSendingSummary = _useState22[1];\n var _useState23 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState24 = _slicedToArray(_useState23, 2),\n schedulerStatus = _useState24[0],\n setSchedulerStatus = _useState24[1];\n var _useState25 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState26 = _slicedToArray(_useState25, 2),\n loadingStatus = _useState26[0],\n setLoadingStatus = _useState26[1];\n var _useState27 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState28 = _slicedToArray(_useState27, 2),\n isPolling = _useState28[0],\n setIsPolling = _useState28[1];\n var _useState29 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('idle'),\n _useState30 = _slicedToArray(_useState29, 2),\n telegramSetupStatus = _useState30[0],\n setTelegramSetupStatus = _useState30[1];\n var _useState31 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState32 = _slicedToArray(_useState31, 2),\n telegramError = _useState32[0],\n setTelegramError = _useState32[1];\n var _useState33 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState34 = _slicedToArray(_useState33, 2),\n telegramBotInfo = _useState34[0],\n setTelegramBotInfo = _useState34[1];\n var forceUpdate = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n setUpdateKey(function (prevKey) {\n return prevKey + 1;\n });\n }, []);\n var fetchSchedulerStatus = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var response, data;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n setLoadingStatus(true);\n _context.next = 4;\n return fetch('/api/profile/task-summary/status');\n case 4:\n response = _context.sent;\n if (response.ok) {\n _context.next = 7;\n break;\n }\n throw new Error(t('profile.statusFetchError', 'Failed to fetch scheduler status.'));\n case 7:\n _context.next = 9;\n return response.json();\n case 9:\n data = _context.sent;\n setSchedulerStatus(data);\n _context.next = 16;\n break;\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](0);\n showErrorToast(_context.t0.message);\n case 16:\n _context.prev = 16;\n setLoadingStatus(false);\n return _context.finish(16);\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 13, 16, 19]]);\n }));\n return function fetchSchedulerStatus() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleSendTaskSummaryNow = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var response, _data, data;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n setIsSendingSummary(true);\n _context2.next = 4;\n return fetch('/api/profile/task-summary/send-now', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 4:\n response = _context2.sent;\n if (response.ok) {\n _context2.next = 10;\n break;\n }\n _context2.next = 8;\n return response.json();\n case 8:\n _data = _context2.sent;\n throw new Error(_data.error || t('profile.sendSummaryFailed', 'Failed to send summary.'));\n case 10:\n _context2.next = 12;\n return response.json();\n case 12:\n data = _context2.sent;\n showSuccessToast(data.message);\n if (data.enabled) {\n fetchSchedulerStatus();\n }\n _context2.next = 20;\n break;\n case 17:\n _context2.prev = 17;\n _context2.t0 = _context2[\"catch\"](0);\n showErrorToast(_context2.t0.message);\n case 20:\n _context2.prev = 20;\n setIsSendingSummary(false);\n return _context2.finish(20);\n case 23:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[0, 17, 20, 23]]);\n }));\n return function handleSendTaskSummaryNow() {\n return _ref3.apply(this, arguments);\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 if (name === 'appearance' && toggleDarkMode) {\n var shouldBeDark = value === 'dark';\n if (shouldBeDark !== isDarkMode) {\n toggleDarkMode();\n }\n }\n if (name === 'language' && value !== i18n.language) {\n handleLanguageChange(value);\n }\n };\n var handleLanguageChange = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(value) {\n var resources, loadPath, response, data;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n setIsChangingLanguage(true);\n _context3.next = 4;\n return i18n.changeLanguage(value);\n case 4:\n document.documentElement.lang = value;\n resources = i18n.getResourceBundle(value, 'translation');\n if (!(!resources || Object.keys(resources).length === 0)) {\n _context3.next = 22;\n break;\n }\n loadPath = \"/locales/\".concat(value, \"/translation.json\");\n _context3.prev = 8;\n _context3.next = 11;\n return fetch(loadPath);\n case 11:\n response = _context3.sent;\n if (!response.ok) {\n _context3.next = 18;\n break;\n }\n _context3.next = 15;\n return response.json();\n case 15:\n data = _context3.sent;\n i18n.addResourceBundle(value, 'translation', data, true, true);\n if (window.forceLanguageReload) {\n window.forceLanguageReload(value);\n }\n case 18:\n _context3.next = 22;\n break;\n case 20:\n _context3.prev = 20;\n _context3.t0 = _context3[\"catch\"](8);\n case 22:\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 _context3.next = 28;\n break;\n case 25:\n _context3.prev = 25;\n _context3.t1 = _context3[\"catch\"](0);\n setIsChangingLanguage(false);\n case 28:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[0, 25], [8, 20]]);\n }));\n return function handleLanguageChange(_x) {\n return _ref4.apply(this, arguments);\n };\n }();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchProfile = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n var response, data;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n setLoading(true);\n _context4.next = 4;\n return fetch('/api/profile');\n case 4:\n response = _context4.sent;\n if (response.ok) {\n _context4.next = 7;\n break;\n }\n throw new Error(t('profile.fetchError', 'Failed to fetch profile data.'));\n case 7:\n _context4.next = 9;\n return response.json();\n case 9:\n data = _context4.sent;\n setProfile(data);\n setFormData({\n appearance: isDarkMode ? 'dark' : 'light',\n // Use current app state instead of saved preference\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 });\n setTelegramBotToken(data.telegram_bot_token || '');\n setTelegramChatId(data.telegram_chat_id || '');\n if (data.task_summary_enabled) {\n fetchSchedulerStatus();\n }\n if (data.telegram_bot_token) {\n fetchPollingStatus();\n }\n _context4.next = 21;\n break;\n case 18:\n _context4.prev = 18;\n _context4.t0 = _context4[\"catch\"](0);\n showErrorToast(_context4.t0.message);\n case 21:\n _context4.prev = 21;\n setLoading(false);\n return _context4.finish(21);\n case 24:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[0, 18, 21, 24]]);\n }));\n return function fetchProfile() {\n return _ref5.apply(this, arguments);\n };\n }();\n var fetchPollingStatus = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n var response, data;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.prev = 0;\n _context5.next = 3;\n return fetch('/api/telegram/polling-status');\n case 3:\n response = _context5.sent;\n if (response.ok) {\n _context5.next = 6;\n break;\n }\n throw new Error(t('profile.pollingStatusError', 'Failed to fetch polling status.'));\n case 6:\n _context5.next = 8;\n return response.json();\n case 8:\n data = _context5.sent;\n setIsPolling(data.running);\n if (data.token_exists && !data.running) {\n handleStartPolling();\n }\n _context5.next = 15;\n break;\n case 13:\n _context5.prev = 13;\n _context5.t0 = _context5[\"catch\"](0);\n case 15:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, null, [[0, 13]]);\n }));\n return function fetchPollingStatus() {\n return _ref6.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(lng) {\n forceUpdate();\n };\n var handleAppLanguageChanged = function handleAppLanguageChanged(event) {\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 _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var _data$bot, response, _data2, data, _data$bot$polling_sta, botUsername;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n setTelegramSetupStatus('loading');\n setTelegramError(null);\n setTelegramBotInfo(null);\n _context6.prev = 3;\n if (!(!formData.telegram_bot_token || !formData.telegram_bot_token.includes(':'))) {\n _context6.next = 6;\n break;\n }\n throw new Error(t('profile.invalidTelegramToken'));\n case 6:\n _context6.next = 8;\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 8:\n response = _context6.sent;\n if (response.ok) {\n _context6.next = 14;\n break;\n }\n _context6.next = 12;\n return response.json();\n case 12:\n _data2 = _context6.sent;\n throw new Error(_data2.error || t('profile.telegramSetupFailed'));\n case 14:\n _context6.next = 16;\n return response.json();\n case 16:\n data = _context6.sent;\n setTelegramSetupStatus('success');\n setSuccess(t('profile.telegramSetupSuccess'));\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 _context6.next = 28;\n break;\n case 24:\n _context6.prev = 24;\n _context6.t0 = _context6[\"catch\"](3);\n setTelegramSetupStatus('error');\n setTelegramError(_context6.t0.message);\n case 28:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, null, [[3, 24]]);\n }));\n return function handleSetupTelegram() {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleStartPolling = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n var response, _data3, data;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.prev = 0;\n _context7.next = 3;\n return fetch('/api/telegram/start-polling', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 3:\n response = _context7.sent;\n if (response.ok) {\n _context7.next = 9;\n break;\n }\n _context7.next = 7;\n return response.json();\n case 7:\n _data3 = _context7.sent;\n throw new Error(_data3.error || t('profile.startPollingFailed'));\n case 9:\n _context7.next = 11;\n return response.json();\n case 11:\n data = _context7.sent;\n setIsPolling(true);\n showSuccessToast(t('profile.pollingStarted'));\n if (telegramBotInfo) {\n setTelegramBotInfo(_objectSpread(_objectSpread({}, telegramBotInfo), {}, {\n polling_status: data.status\n }));\n }\n _context7.next = 20;\n break;\n case 17:\n _context7.prev = 17;\n _context7.t0 = _context7[\"catch\"](0);\n showErrorToast(t('profile.pollingError'));\n case 20:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, null, [[0, 17]]);\n }));\n return function handleStartPolling() {\n return _ref8.apply(this, arguments);\n };\n }();\n var handleStopPolling = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n var response, _data4, data;\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n _context8.prev = 0;\n _context8.next = 3;\n return fetch('/api/telegram/stop-polling', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 3:\n response = _context8.sent;\n if (response.ok) {\n _context8.next = 9;\n break;\n }\n _context8.next = 7;\n return response.json();\n case 7:\n _data4 = _context8.sent;\n throw new Error(_data4.error || t('profile.stopPollingFailed'));\n case 9:\n _context8.next = 11;\n return response.json();\n case 11:\n data = _context8.sent;\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 _context8.next = 20;\n break;\n case 17:\n _context8.prev = 17;\n _context8.t0 = _context8[\"catch\"](0);\n showErrorToast(t('profile.pollingError'));\n case 20:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, null, [[0, 17]]);\n }));\n return function handleStopPolling() {\n return _ref9.apply(this, arguments);\n };\n }();\n var handleSubmit = /*#__PURE__*/function () {\n var _ref10 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(e) {\n var response, data, updatedProfile;\n return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n e.preventDefault();\n setError(null);\n setSuccess(null);\n _context9.prev = 3;\n _context9.next = 6;\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(formData)\n });\n case 6:\n response = _context9.sent;\n if (response.ok) {\n _context9.next = 12;\n break;\n }\n _context9.next = 10;\n return response.json();\n case 10:\n data = _context9.sent;\n throw new Error(data.error || 'Failed to update profile.');\n case 12:\n _context9.next = 14;\n return response.json();\n case 14:\n updatedProfile = _context9.sent;\n setProfile(updatedProfile);\n if (!(updatedProfile.language !== i18n.language)) {\n _context9.next = 19;\n break;\n }\n _context9.next = 19;\n return i18n.changeLanguage(updatedProfile.language);\n case 19:\n setSuccess(t('profile.successMessage'));\n _context9.next = 25;\n break;\n case 22:\n _context9.prev = 22;\n _context9.t0 = _context9[\"catch\"](3);\n setError(_context9.t0.message);\n case 25:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9, null, [[3, 22]]);\n }));\n return function handleSubmit(_x2) {\n return _ref10.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 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 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')), success && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-green-500\"\n }, success), error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 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 className: \"block text-sm font-medium text-gray-700 dark:text-gray-300\"\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: \"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(\"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\", {\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\"\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: \"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(\"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(\"p\", {\n className: \"mt-2 text-xs text-gray-500 dark:text-gray-400\"\n }, t('profile.languageChangedNote', 'Language changes are applied immediately')), isChangingLanguage && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mt-2 text-sm text-blue-500 animate-pulse\"\n }, t('profile.languageChanging', 'Changing language...'))), /*#__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\"\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: \"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(\"option\", {\n value: \"UTC\"\n }, \"UTC\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"America/New_York\"\n }, \"America/New_York\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/London\"\n }, \"Europe/London\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Tokyo\"\n }, \"Asia/Tokyo\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-6 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3\"\n }, t('profile.telegramIntegration', 'Telegram Integration')), /*#__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_3__[\"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\", {\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\"\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: \"mb-4 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.'))), telegramError && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 p-2 bg-red-50 dark:bg-red-900 border border-red-200 dark:border-red-800 rounded text-red-800 dark:text-red-200\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm\"\n }, telegramError)), telegramBotInfo && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 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\", null, /*#__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-col sm:flex-row sm:items-center 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 text-center mb-2 sm:mb-0 sm:mr-3\"\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 text-center mb-2 sm:mb-0 sm:mr-3\"\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 text-center mb-2 sm:mb-0 sm:mr-3\"\n }, t('profile.openTelegram', 'Open in Telegram')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n var testMessage, response, result;\n return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n _context10.prev = 0;\n testMessage = prompt('Enter a test message:');\n if (!testMessage) {\n _context10.next = 10;\n break;\n }\n _context10.next = 5;\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 5:\n response = _context10.sent;\n _context10.next = 8;\n return response.json();\n case 8:\n result = _context10.sent;\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 10:\n _context10.next = 15;\n break;\n case 12:\n _context10.prev = 12;\n _context10.t0 = _context10[\"catch\"](0);\n showErrorToast(t('profile.testMessageError', 'Error sending test message.'));\n case 15:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10, null, [[0, 12]]);\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 text-center\"\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(\"h3\", {\n className: \"text-lg font-medium text-gray-900 dark:text-white mb-3\"\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_3__[\"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(profile !== null && profile !== void 0 && profile.task_summary_enabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'),\n onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n var response, _data5, data;\n return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n _context11.prev = 0;\n _context11.next = 3;\n return fetch('/api/profile/task-summary/toggle', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 3:\n response = _context11.sent;\n if (response.ok) {\n _context11.next = 9;\n break;\n }\n _context11.next = 7;\n return response.json();\n case 7:\n _data5 = _context11.sent;\n throw new Error(_data5.error || t('profile.toggleFailed'));\n case 9:\n _context11.next = 11;\n return response.json();\n case 11:\n data = _context11.sent;\n setProfile(function (prev) {\n return prev ? _objectSpread(_objectSpread({}, prev), {}, {\n task_summary_enabled: data.enabled\n }) : null;\n });\n showSuccessToast(data.message);\n _context11.next = 19;\n break;\n case 16:\n _context11.prev = 16;\n _context11.t0 = _context11[\"catch\"](0);\n showErrorToast(_context11.t0.message);\n case 19:\n case \"end\":\n return _context11.stop();\n }\n }, _callee11, null, [[0, 16]]);\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(profile !== null && profile !== void 0 && profile.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((profile === null || profile === void 0 ? void 0 : profile.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: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n var response, _data6, data;\n return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n while (1) switch (_context12.prev = _context12.next) {\n case 0:\n _context12.prev = 0;\n _context12.next = 3;\n return fetch('/api/profile/task-summary/frequency', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n frequency: frequency\n })\n });\n case 3:\n response = _context12.sent;\n if (response.ok) {\n _context12.next = 9;\n break;\n }\n _context12.next = 7;\n return response.json();\n case 7:\n _data6 = _context12.sent;\n throw new Error(_data6.error || t('profile.frequencyUpdateFailed'));\n case 9:\n _context12.next = 11;\n return response.json();\n case 11:\n data = _context12.sent;\n setProfile(function (prev) {\n return prev ? _objectSpread(_objectSpread({}, prev), {}, {\n task_summary_frequency: frequency\n }) : null;\n });\n showSuccessToast(data.message);\n _context12.next = 19;\n break;\n case 16:\n _context12.prev = 16;\n _context12.t0 = _context12[\"catch\"](0);\n showErrorToast(_context12.t0.message);\n case 19:\n case \"end\":\n return _context12.stop();\n }\n }, _callee12, null, [[0, 16]]);\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__*/_regeneratorRuntime().mark(function _callee13() {\n var response, _data7, data;\n return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n while (1) switch (_context13.prev = _context13.next) {\n case 0:\n _context13.prev = 0;\n _context13.next = 3;\n return fetch('/api/profile/task-summary/send-now', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 3:\n response = _context13.sent;\n if (response.ok) {\n _context13.next = 9;\n break;\n }\n _context13.next = 7;\n return response.json();\n case 7:\n _data7 = _context13.sent;\n throw new Error(_data7.error || t('profile.sendSummaryFailed'));\n case 9:\n _context13.next = 11;\n return response.json();\n case 11:\n data = _context13.sent;\n showSuccessToast(data.message);\n _context13.next = 18;\n break;\n case 15:\n _context13.prev = 15;\n _context13.t0 = _context13[\"catch\"](0);\n showErrorToast(_context13.t0.message);\n case 18:\n case \"end\":\n return _context13.stop();\n }\n }, _callee13, null, [[0, 15]]);\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.')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex justify-end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"submit\",\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\"\n }, t('profile.saveChanges')))));\n};\n_s(ProfileSettings, \"4Npd7QNMvIVHBLrp6ITLfb9zfrc=\", 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?");
+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/InformationCircleIcon.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 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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 capitalize = function capitalize(str) {\n if (!str) return '';\n return str.charAt(0).toUpperCase() + str.slice(1);\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 currentUser = _ref.currentUser,\n 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 var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState4 = _slicedToArray(_useState3, 2),\n profile = _useState4[0],\n setProfile = _useState4[1];\n var _useState5 = (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 }),\n _useState6 = _slicedToArray(_useState5, 2),\n formData = _useState6[0],\n setFormData = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState8 = _slicedToArray(_useState7, 2),\n loading = _useState8[0],\n setLoading = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState10 = _slicedToArray(_useState9, 2),\n error = _useState10[0],\n setError = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState12 = _slicedToArray(_useState11, 2),\n success = _useState12[0],\n setSuccess = _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)(''),\n _useState18 = _slicedToArray(_useState17, 2),\n telegramBotToken = _useState18[0],\n setTelegramBotToken = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(''),\n _useState20 = _slicedToArray(_useState19, 2),\n telegramChatId = _useState20[0],\n setTelegramChatId = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState22 = _slicedToArray(_useState21, 2),\n isTesting = _useState22[0],\n setIsTesting = _useState22[1];\n var _useState23 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState24 = _slicedToArray(_useState23, 2),\n isSendingSummary = _useState24[0],\n setIsSendingSummary = _useState24[1];\n var _useState25 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState26 = _slicedToArray(_useState25, 2),\n schedulerStatus = _useState26[0],\n setSchedulerStatus = _useState26[1];\n var _useState27 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState28 = _slicedToArray(_useState27, 2),\n loadingStatus = _useState28[0],\n setLoadingStatus = _useState28[1];\n var _useState29 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState30 = _slicedToArray(_useState29, 2),\n isPolling = _useState30[0],\n setIsPolling = _useState30[1];\n var _useState31 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('idle'),\n _useState32 = _slicedToArray(_useState31, 2),\n telegramSetupStatus = _useState32[0],\n setTelegramSetupStatus = _useState32[1];\n var _useState33 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState34 = _slicedToArray(_useState33, 2),\n telegramError = _useState34[0],\n setTelegramError = _useState34[1];\n var _useState35 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState36 = _slicedToArray(_useState35, 2),\n telegramBotInfo = _useState36[0],\n setTelegramBotInfo = _useState36[1];\n var forceUpdate = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n setUpdateKey(function (prevKey) {\n return prevKey + 1;\n });\n }, []);\n var fetchSchedulerStatus = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var response, data;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n setLoadingStatus(true);\n _context.next = 4;\n return fetch('/api/profile/task-summary/status');\n case 4:\n response = _context.sent;\n if (response.ok) {\n _context.next = 7;\n break;\n }\n throw new Error(t('profile.statusFetchError', 'Failed to fetch scheduler status.'));\n case 7:\n _context.next = 9;\n return response.json();\n case 9:\n data = _context.sent;\n setSchedulerStatus(data);\n _context.next = 16;\n break;\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](0);\n showErrorToast(_context.t0.message);\n case 16:\n _context.prev = 16;\n setLoadingStatus(false);\n return _context.finish(16);\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 13, 16, 19]]);\n }));\n return function fetchSchedulerStatus() {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleSendTaskSummaryNow = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var response, _data, data;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n setIsSendingSummary(true);\n _context2.next = 4;\n return fetch('/api/profile/task-summary/send-now', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 4:\n response = _context2.sent;\n if (response.ok) {\n _context2.next = 10;\n break;\n }\n _context2.next = 8;\n return response.json();\n case 8:\n _data = _context2.sent;\n throw new Error(_data.error || t('profile.sendSummaryFailed', 'Failed to send summary.'));\n case 10:\n _context2.next = 12;\n return response.json();\n case 12:\n data = _context2.sent;\n showSuccessToast(data.message);\n if (data.enabled) {\n fetchSchedulerStatus();\n }\n _context2.next = 20;\n break;\n case 17:\n _context2.prev = 17;\n _context2.t0 = _context2[\"catch\"](0);\n showErrorToast(_context2.t0.message);\n case 20:\n _context2.prev = 20;\n setIsSendingSummary(false);\n return _context2.finish(20);\n case 23:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[0, 17, 20, 23]]);\n }));\n return function handleSendTaskSummaryNow() {\n return _ref3.apply(this, arguments);\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 _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(value) {\n var resources, loadPath, response, data;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n setIsChangingLanguage(true);\n _context3.next = 4;\n return i18n.changeLanguage(value);\n case 4:\n document.documentElement.lang = value;\n resources = i18n.getResourceBundle(value, 'translation');\n if (!(!resources || Object.keys(resources).length === 0)) {\n _context3.next = 22;\n break;\n }\n loadPath = \"/locales/\".concat(value, \"/translation.json\");\n _context3.prev = 8;\n _context3.next = 11;\n return fetch(loadPath);\n case 11:\n response = _context3.sent;\n if (!response.ok) {\n _context3.next = 18;\n break;\n }\n _context3.next = 15;\n return response.json();\n case 15:\n data = _context3.sent;\n i18n.addResourceBundle(value, 'translation', data, true, true);\n if (window.forceLanguageReload) {\n window.forceLanguageReload(value);\n }\n case 18:\n _context3.next = 22;\n break;\n case 20:\n _context3.prev = 20;\n _context3.t0 = _context3[\"catch\"](8);\n case 22:\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 _context3.next = 28;\n break;\n case 25:\n _context3.prev = 25;\n _context3.t1 = _context3[\"catch\"](0);\n setIsChangingLanguage(false);\n case 28:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[0, 25], [8, 20]]);\n }));\n return function handleLanguageChange(_x) {\n return _ref4.apply(this, arguments);\n };\n }();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var fetchProfile = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n var response, data;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n setLoading(true);\n _context4.next = 4;\n return fetch('/api/profile');\n case 4:\n response = _context4.sent;\n if (response.ok) {\n _context4.next = 7;\n break;\n }\n throw new Error(t('profile.fetchError', 'Failed to fetch profile data.'));\n case 7:\n _context4.next = 9;\n return response.json();\n case 9:\n data = _context4.sent;\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 });\n setTelegramBotToken(data.telegram_bot_token || '');\n setTelegramChatId(data.telegram_chat_id || '');\n if (data.task_summary_enabled) {\n fetchSchedulerStatus();\n }\n if (data.telegram_bot_token) {\n fetchPollingStatus();\n }\n _context4.next = 21;\n break;\n case 18:\n _context4.prev = 18;\n _context4.t0 = _context4[\"catch\"](0);\n showErrorToast(_context4.t0.message);\n case 21:\n _context4.prev = 21;\n setLoading(false);\n return _context4.finish(21);\n case 24:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[0, 18, 21, 24]]);\n }));\n return function fetchProfile() {\n return _ref5.apply(this, arguments);\n };\n }();\n var fetchPollingStatus = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n var response, data;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.prev = 0;\n _context5.next = 3;\n return fetch('/api/telegram/polling-status');\n case 3:\n response = _context5.sent;\n if (response.ok) {\n _context5.next = 6;\n break;\n }\n throw new Error(t('profile.pollingStatusError', 'Failed to fetch polling status.'));\n case 6:\n _context5.next = 8;\n return response.json();\n case 8:\n data = _context5.sent;\n setIsPolling(data.running);\n if (data.token_exists && !data.running) {\n handleStartPolling();\n }\n _context5.next = 15;\n break;\n case 13:\n _context5.prev = 13;\n _context5.t0 = _context5[\"catch\"](0);\n case 15:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, null, [[0, 13]]);\n }));\n return function fetchPollingStatus() {\n return _ref6.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(lng) {\n forceUpdate();\n };\n var handleAppLanguageChanged = function handleAppLanguageChanged(event) {\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 _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var _data$bot, response, _data2, data, _data$bot$polling_sta, botUsername;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n setTelegramSetupStatus('loading');\n setTelegramError(null);\n setTelegramBotInfo(null);\n _context6.prev = 3;\n if (!(!formData.telegram_bot_token || !formData.telegram_bot_token.includes(':'))) {\n _context6.next = 6;\n break;\n }\n throw new Error(t('profile.invalidTelegramToken'));\n case 6:\n _context6.next = 8;\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 8:\n response = _context6.sent;\n if (response.ok) {\n _context6.next = 14;\n break;\n }\n _context6.next = 12;\n return response.json();\n case 12:\n _data2 = _context6.sent;\n throw new Error(_data2.error || t('profile.telegramSetupFailed'));\n case 14:\n _context6.next = 16;\n return response.json();\n case 16:\n data = _context6.sent;\n setTelegramSetupStatus('success');\n setSuccess(t('profile.telegramSetupSuccess'));\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 _context6.next = 28;\n break;\n case 24:\n _context6.prev = 24;\n _context6.t0 = _context6[\"catch\"](3);\n setTelegramSetupStatus('error');\n setTelegramError(_context6.t0.message);\n case 28:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, null, [[3, 24]]);\n }));\n return function handleSetupTelegram() {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleStartPolling = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n var response, _data3, data;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.prev = 0;\n _context7.next = 3;\n return fetch('/api/telegram/start-polling', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 3:\n response = _context7.sent;\n if (response.ok) {\n _context7.next = 9;\n break;\n }\n _context7.next = 7;\n return response.json();\n case 7:\n _data3 = _context7.sent;\n throw new Error(_data3.error || t('profile.startPollingFailed'));\n case 9:\n _context7.next = 11;\n return response.json();\n case 11:\n data = _context7.sent;\n setIsPolling(true);\n showSuccessToast(t('profile.pollingStarted'));\n if (telegramBotInfo) {\n setTelegramBotInfo(_objectSpread(_objectSpread({}, telegramBotInfo), {}, {\n polling_status: data.status\n }));\n }\n _context7.next = 20;\n break;\n case 17:\n _context7.prev = 17;\n _context7.t0 = _context7[\"catch\"](0);\n showErrorToast(t('profile.pollingError'));\n case 20:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, null, [[0, 17]]);\n }));\n return function handleStartPolling() {\n return _ref8.apply(this, arguments);\n };\n }();\n var handleStopPolling = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n var response, _data4, data;\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n _context8.prev = 0;\n _context8.next = 3;\n return fetch('/api/telegram/stop-polling', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 3:\n response = _context8.sent;\n if (response.ok) {\n _context8.next = 9;\n break;\n }\n _context8.next = 7;\n return response.json();\n case 7:\n _data4 = _context8.sent;\n throw new Error(_data4.error || t('profile.stopPollingFailed'));\n case 9:\n _context8.next = 11;\n return response.json();\n case 11:\n data = _context8.sent;\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 _context8.next = 20;\n break;\n case 17:\n _context8.prev = 17;\n _context8.t0 = _context8[\"catch\"](0);\n showErrorToast(t('profile.pollingError'));\n case 20:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, null, [[0, 17]]);\n }));\n return function handleStopPolling() {\n return _ref9.apply(this, arguments);\n };\n }();\n var handleSubmit = /*#__PURE__*/function () {\n var _ref10 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(e) {\n var response, data, updatedProfile;\n return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n e.preventDefault();\n setError(null);\n setSuccess(null);\n _context9.prev = 3;\n _context9.next = 6;\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(formData)\n });\n case 6:\n response = _context9.sent;\n if (response.ok) {\n _context9.next = 12;\n break;\n }\n _context9.next = 10;\n return response.json();\n case 10:\n data = _context9.sent;\n throw new Error(data.error || 'Failed to update profile.');\n case 12:\n _context9.next = 14;\n return response.json();\n case 14:\n updatedProfile = _context9.sent;\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 });\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 _context9.next = 21;\n break;\n }\n _context9.next = 21;\n return handleLanguageChange(updatedProfile.language);\n case 21:\n setSuccess(t('profile.successMessage'));\n _context9.next = 27;\n break;\n case 24:\n _context9.prev = 24;\n _context9.t0 = _context9[\"catch\"](3);\n setError(_context9.t0.message);\n case 27:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9, null, [[3, 24]]);\n }));\n return function handleSubmit(_x2) {\n return _ref10.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 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 var tabs = [{\n id: 'general',\n name: t('profile.tabs.general', 'General'),\n icon: 'user'\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(\"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: \"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z\"\n }));\n case 'chat':\n return /*#__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: \"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z\"\n }));\n case 'sparkles':\n return /*#__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: \"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"\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 })))), success && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-green-500\"\n }, success), error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"mb-4 text-red-500\"\n }, error), /*#__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(\"svg\", {\n className: \"w-6 h-6 mr-3 text-blue-500\",\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: \"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z\"\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(\"option\", {\n value: \"America/New_York\"\n }, \"America/New_York\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Europe/London\"\n }, \"Europe/London\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", {\n value: \"Asia/Tokyo\"\n }, \"Asia/Tokyo\"))))), 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(\"svg\", {\n className: \"w-6 h-6 mr-3 text-blue-500\",\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: \"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z\"\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(\"svg\", {\n className: \"w-5 h-5 mr-2 text-blue-500\",\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: \"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\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_3__[\"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.'))), telegramError && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-2 bg-red-50 dark:bg-red-900 border border-red-200 dark:border-red-800 rounded text-red-800 dark:text-red-200\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-sm\"\n }, telegramError)), 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__*/_regeneratorRuntime().mark(function _callee10() {\n var testMessage, response, result;\n return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n _context10.prev = 0;\n testMessage = prompt('Enter a test message:');\n if (!testMessage) {\n _context10.next = 10;\n break;\n }\n _context10.next = 5;\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 5:\n response = _context10.sent;\n _context10.next = 8;\n return response.json();\n case 8:\n result = _context10.sent;\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 10:\n _context10.next = 15;\n break;\n case 12:\n _context10.prev = 12;\n _context10.t0 = _context10[\"catch\"](0);\n showErrorToast(t('profile.testMessageError', 'Error sending test message.'));\n case 15:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10, null, [[0, 12]]);\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(\"svg\", {\n className: \"w-5 h-5 mr-2 text-green-500\",\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: \"M15 17h5l-5 5v-5zM4 19h6v-1a1 1 0 011-1h4a1 1 0 011 1v1h2a2 2 0 002-2V7a2 2 0 00-2-2H4a2 2 0 00-2 2v10a2 2 0 002 2z\"\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_3__[\"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__*/_regeneratorRuntime().mark(function _callee11() {\n var response, _data5, data;\n return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n _context11.prev = 0;\n _context11.next = 3;\n return fetch('/api/profile/task-summary/send-now', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 3:\n response = _context11.sent;\n if (response.ok) {\n _context11.next = 9;\n break;\n }\n _context11.next = 7;\n return response.json();\n case 7:\n _data5 = _context11.sent;\n throw new Error(_data5.error || t('profile.sendSummaryFailed'));\n case 9:\n _context11.next = 11;\n return response.json();\n case 11:\n data = _context11.sent;\n showSuccessToast(data.message);\n _context11.next = 18;\n break;\n case 15:\n _context11.prev = 15;\n _context11.t0 = _context11[\"catch\"](0);\n showErrorToast(_context11.t0.message);\n case 18:\n case \"end\":\n return _context11.stop();\n }\n }, _callee11, null, [[0, 15]]);\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(\"svg\", {\n className: \"w-6 h-6 mr-3 text-blue-500\",\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.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"\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(\"svg\", {\n className: \"w-5 h-5 mr-2 text-purple-500\",\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 10V3L4 14h7v7l9-11h-7z\"\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_3__[\"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(\"svg\", {\n className: \"w-5 h-5 mr-2 text-green-500\",\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 })), 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_3__[\"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: \"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(\"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: \"M5 13l4 4L19 7\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, t('profile.saveChanges', 'Save Changes'))))));\n};\n_s(ProfileSettings, \"7gaJKxDvKYugmKCgfCTsrDA6l6Q=\", 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(\"Next action added successfully!\");\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(\"p\", {\n className: \"text-sm text-blue-600 dark:text-blue-300\"\n }, t('project', 'Project'), \": \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"font-medium\"\n }, projectName)))), /*#__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?");
/***/ }),
@@ -191,7 +202,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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_11__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_16__ = __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_outline__WEBPACK_IMPORTED_MODULE_12__ = __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_13__ = __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_14__ = __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_15__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/Squares2X2Icon.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_ProjectModal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Project/ProjectModal */ \"./frontend/components/Project/ProjectModal.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _Task_NewTask__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Task/NewTask */ \"./frontend/components/Task/NewTask.tsx\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_areasService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/areasService */ \"./frontend/utils/areasService.ts\");\n/* harmony import */ var _utils_authUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/authUtils */ \"./frontend/utils/authUtils.ts\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_17__ = __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_18__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.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 _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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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\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_11__.useParams)(),\n id = _useParams.id;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_11__.useNavigate)();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n var areas = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_5__.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 _useState10 = _slicedToArray(_useState9, 2),\n isModalOpen = _useState10[0],\n setIsModalOpen = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n isConfirmDialogOpen = _useState12[0],\n setIsConfirmDialogOpen = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n showCompleted = _useState14[0],\n setShowCompleted = _useState14[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadProjectData = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var projectData, projectTasks;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (id) {\n _context.next = 3;\n break;\n }\n console.error(\"Project ID is missing.\");\n return _context.abrupt(\"return\");\n case 3:\n setLoading(true);\n _context.prev = 4;\n (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_9__.fetchAreas)();\n _context.next = 8;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_7__.fetchProjectById)(id);\n case 8:\n projectData = _context.sent;\n console.log(\"Project data received:\", projectData);\n console.log(\"Tasks in project:\", projectData.tasks);\n console.log(\"Tasks (capital T):\", projectData.Tasks);\n setProject(projectData);\n // Handle both 'tasks' and 'Tasks' property names\n projectTasks = projectData.tasks || projectData.Tasks || [];\n setTasks(projectTasks);\n _context.next = 20;\n break;\n case 17:\n _context.prev = 17;\n _context.t0 = _context[\"catch\"](4);\n console.error(\"Error fetching project data:\", _context.t0);\n case 20:\n _context.prev = 20;\n setLoading(false);\n return _context.finish(20);\n case 23:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[4, 17, 20, 23]]);\n }));\n return function loadProjectData() {\n return _ref.apply(this, arguments);\n };\n }();\n loadProjectData();\n }, [id, _utils_areasService__WEBPACK_IMPORTED_MODULE_9__.fetchAreas]);\n var handleTaskCreate = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(taskName) {\n var newTask;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (project) {\n _context2.next = 3;\n break;\n }\n console.error(\"Cannot create task: Project is missing\");\n throw new Error(\"Cannot create task: Project is missing\");\n case 3:\n _context2.prev = 3;\n _context2.next = 6;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_8__.createTask)({\n name: taskName,\n status: \"not_started\",\n project_id: project.id\n });\n case 6:\n newTask = _context2.sent;\n setTasks(function (prevTasks) {\n return [].concat(_toConsumableArray(prevTasks), [newTask]);\n });\n _context2.next = 16;\n break;\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](3);\n console.error(\"Error creating task:\", _context2.t0);\n // Check if it's an authentication error\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_10__.isAuthError)(_context2.t0)) {\n _context2.next = 15;\n break;\n }\n return _context2.abrupt(\"return\");\n case 15:\n throw _context2.t0;\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[3, 10]]);\n }));\n return function handleTaskCreate(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n var handleTaskUpdate = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(updatedTask) {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (updatedTask.id) {\n _context3.next = 3;\n break;\n }\n console.error(\"Cannot update task: Task ID is missing\");\n return _context3.abrupt(\"return\");\n case 3:\n _context3.prev = 3;\n _context3.next = 6;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_8__.updateTask)(updatedTask.id, updatedTask);\n case 6:\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === updatedTask.id ? updatedTask : task;\n });\n });\n _context3.next = 12;\n break;\n case 9:\n _context3.prev = 9;\n _context3.t0 = _context3[\"catch\"](3);\n console.error(\"Error updating task:\", _context3.t0);\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[3, 9]]);\n }));\n return function handleTaskUpdate(_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(taskId) {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (taskId) {\n _context4.next = 3;\n break;\n }\n console.error(\"Cannot delete task: Task ID is missing\");\n return _context4.abrupt(\"return\");\n case 3:\n _context4.prev = 3;\n _context4.next = 6;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_8__.deleteTask)(taskId);\n case 6:\n setTasks(function (prevTasks) {\n return prevTasks.filter(function (task) {\n return task.id !== taskId;\n });\n });\n _context4.next = 12;\n break;\n case 9:\n _context4.prev = 9;\n _context4.t0 = _context4[\"catch\"](3);\n console.error(\"Error deleting task:\", _context4.t0);\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[3, 9]]);\n }));\n return function handleTaskDelete(_x3) {\n return _ref4.apply(this, arguments);\n };\n }();\n var handleEditProject = function handleEditProject() {\n setIsModalOpen(true);\n };\n var handleSaveProject = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(updatedProject) {\n var savedProject;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (updatedProject.id) {\n _context5.next = 3;\n break;\n }\n console.error(\"Cannot save project: Project ID is missing\");\n return _context5.abrupt(\"return\");\n case 3:\n _context5.prev = 3;\n _context5.next = 6;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_7__.updateProject)(updatedProject.id, updatedProject);\n case 6:\n savedProject = _context5.sent;\n setProject(savedProject);\n setIsModalOpen(false);\n _context5.next = 14;\n break;\n case 11:\n _context5.prev = 11;\n _context5.t0 = _context5[\"catch\"](3);\n console.error(\"Error saving project:\", _context5.t0);\n case 14:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, null, [[3, 11]]);\n }));\n return function handleSaveProject(_x4) {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleDeleteProject = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (project !== null && project !== void 0 && project.id) {\n _context6.next = 3;\n break;\n }\n console.error(\"Cannot delete project: Project ID is missing\");\n return _context6.abrupt(\"return\");\n case 3:\n _context6.prev = 3;\n _context6.next = 6;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_7__.deleteProject)(project.id);\n case 6:\n navigate(\"/projects\");\n _context6.next = 12;\n break;\n case 9:\n _context6.prev = 9;\n _context6.t0 = _context6[\"catch\"](3);\n console.error(\"Error deleting project:\", _context6.t0);\n case 12:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, null, [[3, 9]]);\n }));\n return function handleDeleteProject() {\n return _ref6.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\"\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: \"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_12__[\"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 && /*#__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(priorityStyles[project.priority] || priorityStyles[\"default\"]),\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_13__[\"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_14__[\"default\"], {\n className: \"h-5 w-5\"\n })))), project.area && /*#__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(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_15__[\"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(react_router_dom__WEBPACK_IMPORTED_MODULE_16__.Link, {\n to: \"/projects/?area_id=\".concat(project.area.id),\n className: \"text-gray-600 dark:text-gray-400 hover:underline\"\n }, project.area.name.toUpperCase())), project.due_date_at && /*#__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(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 dark:text-gray-400 mr-2\"\n }), formatProjectDueDate(project.due_date_at)), project.description && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"flex items-center text-gray-700 dark:text-gray-300 mb-6\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 dark:text-gray-400 mr-2\"\n }), project.description), /*#__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 }, \"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 }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Task_NewTask__WEBPACK_IMPORTED_MODULE_6__[\"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_2__[\"default\"], {\n tasks: displayTasks,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: project ? [project] : [],\n hideProjectName: true\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_3__[\"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_4__[\"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, \"F8FkOOwcGbHI+POr42kVxCi6Ur8=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_11__.useParams, react_router_dom__WEBPACK_IMPORTED_MODULE_11__.useNavigate, react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _store_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore];\n});\n_c = ProjectDetails;\nvar priorityLabel = function priorityLabel(priority) {\n switch (priority) {\n case 'high':\n return 'High';\n case 'medium':\n return 'Medium';\n case 'low':\n return 'Low';\n default:\n return '';\n }\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?");
+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_13__ = __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 _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_14__ = __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_15__ = __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_17__ = __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_19__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/FolderIcon.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_ProjectModal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Project/ProjectModal */ \"./frontend/components/Project/ProjectModal.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _store_useStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../store/useStore */ \"./frontend/store/useStore.ts\");\n/* harmony import */ var _Task_NewTask__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Task/NewTask */ \"./frontend/components/Task/NewTask.tsx\");\n/* harmony import */ var _utils_projectsService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/projectsService */ \"./frontend/utils/projectsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_areasService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/areasService */ \"./frontend/utils/areasService.ts\");\n/* harmony import */ var _utils_authUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/authUtils */ \"./frontend/utils/authUtils.ts\");\n/* harmony import */ var _heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_16__ = __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_18__ = __webpack_require__(/*! @heroicons/react/24/solid */ \"./node_modules/@heroicons/react/24/solid/esm/CalendarDaysIcon.js\");\n/* harmony import */ var _utils_profileService__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/profileService */ \"./frontend/utils/profileService.ts\");\n/* harmony import */ var _AutoSuggestNextActionBox__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./AutoSuggestNextActionBox */ \"./frontend/components/Project/AutoSuggestNextActionBox.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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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\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_13__.useParams)(),\n id = _useParams.id;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_13__.useNavigate)();\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n var areas = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_5__.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 _useState10 = _slicedToArray(_useState9, 2),\n isModalOpen = _useState10[0],\n setIsModalOpen = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n isConfirmDialogOpen = _useState12[0],\n setIsConfirmDialogOpen = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n showCompleted = _useState14[0],\n setShowCompleted = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n showAutoSuggestForm = _useState16[0],\n setShowAutoSuggestForm = _useState16[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var loadProjectData = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var projectData, projectTasks;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (id) {\n _context.next = 3;\n break;\n }\n console.error(\"Project ID is missing.\");\n return _context.abrupt(\"return\");\n case 3:\n setLoading(true);\n _context.prev = 4;\n (0,_utils_areasService__WEBPACK_IMPORTED_MODULE_9__.fetchAreas)();\n _context.next = 8;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_7__.fetchProjectById)(id);\n case 8:\n projectData = _context.sent;\n console.log(\"Project data received:\", projectData);\n console.log(\"Tasks in project:\", projectData.tasks);\n console.log(\"Tasks (capital T):\", projectData.Tasks);\n setProject(projectData);\n // Handle both 'tasks' and 'Tasks' property names\n projectTasks = projectData.tasks || projectData.Tasks || [];\n setTasks(projectTasks);\n _context.next = 20;\n break;\n case 17:\n _context.prev = 17;\n _context.t0 = _context[\"catch\"](4);\n console.error(\"Error fetching project data:\", _context.t0);\n case 20:\n _context.prev = 20;\n setLoading(false);\n return _context.finish(20);\n case 23:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[4, 17, 20, 23]]);\n }));\n return function loadProjectData() {\n return _ref.apply(this, arguments);\n };\n }();\n loadProjectData();\n }, [id, _utils_areasService__WEBPACK_IMPORTED_MODULE_9__.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__*/_regeneratorRuntime().mark(function _callee2() {\n var autoSuggestEnabled;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(project && tasks.length === 0 && !loading)) {\n _context2.next = 5;\n break;\n }\n _context2.next = 3;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_11__.getAutoSuggestNextActionsEnabled)();\n case 3:\n autoSuggestEnabled = _context2.sent;\n if (autoSuggestEnabled) {\n setShowAutoSuggestForm(true);\n }\n case 5:\n case \"end\":\n return _context2.stop();\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__*/_regeneratorRuntime().mark(function _callee3(taskName) {\n var newTask;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (project) {\n _context3.next = 3;\n break;\n }\n console.error(\"Cannot create task: Project is missing\");\n throw new Error(\"Cannot create task: Project is missing\");\n case 3:\n _context3.prev = 3;\n _context3.next = 6;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_8__.createTask)({\n name: taskName,\n status: \"not_started\",\n project_id: project.id\n });\n case 6:\n newTask = _context3.sent;\n setTasks(function (prevTasks) {\n return [].concat(_toConsumableArray(prevTasks), [newTask]);\n });\n _context3.next = 16;\n break;\n case 10:\n _context3.prev = 10;\n _context3.t0 = _context3[\"catch\"](3);\n console.error(\"Error creating task:\", _context3.t0);\n // Check if it's an authentication error\n if (!(0,_utils_authUtils__WEBPACK_IMPORTED_MODULE_10__.isAuthError)(_context3.t0)) {\n _context3.next = 15;\n break;\n }\n return _context3.abrupt(\"return\");\n case 15:\n throw _context3.t0;\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[3, 10]]);\n }));\n return function handleTaskCreate(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n var handleTaskUpdate = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(updatedTask) {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (updatedTask.id) {\n _context4.next = 3;\n break;\n }\n console.error(\"Cannot update task: Task ID is missing\");\n return _context4.abrupt(\"return\");\n case 3:\n _context4.prev = 3;\n _context4.next = 6;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_8__.updateTask)(updatedTask.id, updatedTask);\n case 6:\n setTasks(function (prevTasks) {\n return prevTasks.map(function (task) {\n return task.id === updatedTask.id ? updatedTask : task;\n });\n });\n _context4.next = 12;\n break;\n case 9:\n _context4.prev = 9;\n _context4.t0 = _context4[\"catch\"](3);\n console.error(\"Error updating task:\", _context4.t0);\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[3, 9]]);\n }));\n return function handleTaskUpdate(_x2) {\n return _ref4.apply(this, arguments);\n };\n }();\n var handleTaskDelete = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(taskId) {\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (taskId) {\n _context5.next = 3;\n break;\n }\n console.error(\"Cannot delete task: Task ID is missing\");\n return _context5.abrupt(\"return\");\n case 3:\n _context5.prev = 3;\n _context5.next = 6;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_8__.deleteTask)(taskId);\n case 6:\n setTasks(function (prevTasks) {\n return prevTasks.filter(function (task) {\n return task.id !== taskId;\n });\n });\n _context5.next = 12;\n break;\n case 9:\n _context5.prev = 9;\n _context5.t0 = _context5[\"catch\"](3);\n console.error(\"Error deleting task:\", _context5.t0);\n case 12:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, null, [[3, 9]]);\n }));\n return function handleTaskDelete(_x3) {\n return _ref5.apply(this, arguments);\n };\n }();\n var handleEditProject = function handleEditProject() {\n setIsModalOpen(true);\n };\n var handleSaveProject = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(updatedProject) {\n var savedProject;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (updatedProject.id) {\n _context6.next = 3;\n break;\n }\n console.error(\"Cannot save project: Project ID is missing\");\n return _context6.abrupt(\"return\");\n case 3:\n _context6.prev = 3;\n _context6.next = 6;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_7__.updateProject)(updatedProject.id, updatedProject);\n case 6:\n savedProject = _context6.sent;\n setProject(savedProject);\n setIsModalOpen(false);\n _context6.next = 14;\n break;\n case 11:\n _context6.prev = 11;\n _context6.t0 = _context6[\"catch\"](3);\n console.error(\"Error saving project:\", _context6.t0);\n case 14:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, null, [[3, 11]]);\n }));\n return function handleSaveProject(_x4) {\n return _ref6.apply(this, arguments);\n };\n }();\n var handleCreateNextAction = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(projectId, actionDescription) {\n var newTask;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.prev = 0;\n _context7.next = 3;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_8__.createTask)({\n name: actionDescription,\n status: \"not_started\",\n project_id: projectId,\n priority: \"medium\"\n });\n case 3:\n newTask = _context7.sent;\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 _context7.next = 11;\n break;\n case 8:\n _context7.prev = 8;\n _context7.t0 = _context7[\"catch\"](0);\n console.error(\"Error creating next action:\", _context7.t0);\n case 11:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, null, [[0, 8]]);\n }));\n return function handleCreateNextAction(_x5, _x6) {\n return _ref7.apply(this, arguments);\n };\n }();\n var handleSkipNextAction = function handleSkipNextAction() {\n setShowAutoSuggestForm(false);\n };\n var handleDeleteProject = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (project !== null && project !== void 0 && project.id) {\n _context8.next = 3;\n break;\n }\n console.error(\"Cannot delete project: Project ID is missing\");\n return _context8.abrupt(\"return\");\n case 3:\n _context8.prev = 3;\n _context8.next = 6;\n return (0,_utils_projectsService__WEBPACK_IMPORTED_MODULE_7__.deleteProject)(project.id);\n case 6:\n navigate(\"/projects\");\n _context8.next = 12;\n break;\n case 9:\n _context8.prev = 9;\n _context8.t0 = _context8[\"catch\"](3);\n console.error(\"Error deleting project:\", _context8.t0);\n case 12:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, null, [[3, 9]]);\n }));\n return function handleDeleteProject() {\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 }, \"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 && /*#__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(priorityStyles[project.priority] || priorityStyles[\"default\"]),\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_14__[\"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_15__[\"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_16__[\"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_17__[\"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_18__[\"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(\"span\", {\n key: index,\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\"\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_19__[\"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 && /*#__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(priorityStyles[project.priority] || priorityStyles[\"default\"]),\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_14__[\"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_15__[\"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 }, \"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_6__[\"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_2__[\"default\"], {\n tasks: displayTasks,\n onTaskUpdate: handleTaskUpdate,\n onTaskDelete: handleTaskDelete,\n projects: project ? [project] : [],\n hideProjectName: true\n }) : showAutoSuggestForm ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_AutoSuggestNextActionBox__WEBPACK_IMPORTED_MODULE_12__[\"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_3__[\"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_4__[\"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, \"YwH2aW2VrHj1ATT3xU4dTD11Q+8=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_13__.useParams, react_router_dom__WEBPACK_IMPORTED_MODULE_13__.useNavigate, react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation, _store_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore];\n});\n_c = ProjectDetails;\nvar priorityLabel = function priorityLabel(priority) {\n switch (priority) {\n case 'high':\n return 'High';\n case 'medium':\n return 'Medium';\n case 'low':\n return 'Low';\n default:\n return '';\n }\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?");
/***/ }),
@@ -213,7 +224,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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 _utils_tagsService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/tagsService */ \"./frontend/utils/tagsService.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_8__ = __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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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\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 _useState10 = _slicedToArray(_useState9, 2),\n isUploading = _useState10[0],\n setIsUploading = _useState10[1];\n var _useStore = (0,_store_useStore__WEBPACK_IMPORTED_MODULE_6__.useStore)(),\n tagsStore = _useStore.tagsStore;\n var availableTags = tagsStore.tags;\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var fileInputRef = (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 _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_2__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_8__.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 (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_7__.fetchTags)();\n }\n }, [availableTags.length]);\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__*/_regeneratorRuntime().mark(function _callee() {\n var _formData, response, result;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (imageFile) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\", null);\n case 2:\n setIsUploading(true);\n _context.prev = 3;\n _formData = new FormData();\n _formData.append('image', imageFile);\n _context.next = 8;\n return fetch('/api/upload/project-image', {\n method: 'POST',\n credentials: 'include',\n body: _formData\n });\n case 8:\n response = _context.sent;\n if (response.ok) {\n _context.next = 11;\n break;\n }\n throw new Error('Failed to upload image');\n case 11:\n _context.next = 13;\n return response.json();\n case 13:\n result = _context.sent;\n return _context.abrupt(\"return\", result.imageUrl);\n case 17:\n _context.prev = 17;\n _context.t0 = _context[\"catch\"](3);\n console.error('Error uploading image:', _context.t0);\n return _context.abrupt(\"return\", null);\n case 21:\n _context.prev = 21;\n setIsUploading(false);\n return _context.finish(21);\n case 24:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[3, 17, 21, 24]]);\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__*/_regeneratorRuntime().mark(function _callee2() {\n var imageUrl, uploadedImageUrl, projectData;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n imageUrl = formData.image_url; // Upload image if a new one was selected\n if (!imageFile) {\n _context2.next = 7;\n break;\n }\n _context2.next = 5;\n return handleImageUpload();\n case 5:\n uploadedImageUrl = _context2.sent;\n if (uploadedImageUrl) {\n imageUrl = uploadedImageUrl;\n }\n case 7:\n projectData = _objectSpread(_objectSpread({}, formData), {}, {\n image_url: imageUrl,\n tags: tags.map(function (name) {\n return {\n name: name\n };\n })\n });\n onSave(projectData);\n showSuccessToast(project ? \"Project updated successfully!\" : \"Project created successfully!\");\n handleClose();\n _context2.next = 16;\n break;\n case 13:\n _context2.prev = 13;\n _context2.t0 = _context2[\"catch\"](0);\n console.error('Error saving project:', _context2.t0);\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[0, 13]]);\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(\"Project deleted successfully!\");\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 }, \"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: \"block w-full text-sm text-gray-500 dark:text-gray-400 file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-medium file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100 dark:file:bg-blue-900 dark:file:text-blue-200\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: \"text-xs text-gray-500 dark:text-gray-400 mt-1\"\n }, \"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_8__.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?");
+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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 _useState10 = _slicedToArray(_useState9, 2),\n isUploading = _useState10[0],\n setIsUploading = _useState10[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 _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 _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 console.log('Loading tags...');\n loadTags().then(function () {\n console.log('Tags loaded successfully');\n })[\"catch\"](function (error) {\n console.error('Error loading tags:', error);\n });\n } else {\n console.log('Available tags:', availableTags);\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 console.log('Tags changed:', 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 console.log('Form data updated with tags:', newTags.map(function (name) {\n return {\n name: name\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__*/_regeneratorRuntime().mark(function _callee() {\n var _formData, response, result;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (imageFile) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\", null);\n case 2:\n setIsUploading(true);\n _context.prev = 3;\n _formData = new FormData();\n _formData.append('image', imageFile);\n _context.next = 8;\n return fetch('/api/upload/project-image', {\n method: 'POST',\n credentials: 'include',\n body: _formData\n });\n case 8:\n response = _context.sent;\n if (response.ok) {\n _context.next = 11;\n break;\n }\n throw new Error('Failed to upload image');\n case 11:\n _context.next = 13;\n return response.json();\n case 13:\n result = _context.sent;\n return _context.abrupt(\"return\", result.imageUrl);\n case 17:\n _context.prev = 17;\n _context.t0 = _context[\"catch\"](3);\n console.error('Error uploading image:', _context.t0);\n return _context.abrupt(\"return\", null);\n case 21:\n _context.prev = 21;\n setIsUploading(false);\n return _context.finish(21);\n case 24:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[3, 17, 21, 24]]);\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__*/_regeneratorRuntime().mark(function _callee2() {\n var imageUrl, uploadedImageUrl, projectData;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n imageUrl = formData.image_url; // Upload image if a new one was selected\n if (!imageFile) {\n _context2.next = 7;\n break;\n }\n _context2.next = 5;\n return handleImageUpload();\n case 5:\n uploadedImageUrl = _context2.sent;\n if (uploadedImageUrl) {\n imageUrl = uploadedImageUrl;\n }\n case 7:\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.next = 16;\n break;\n case 13:\n _context2.prev = 13;\n _context2.t0 = _context2[\"catch\"](0);\n console.error('Error saving project:', _context2.t0);\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[0, 13]]);\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(\"Project deleted successfully!\");\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?");
/***/ }),
@@ -444,7 +455,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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_3__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusCircleIcon.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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 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 _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 var handleInputChange = function handleInputChange(event) {\n setTaskName(event.target.value);\n };\n var handleKeyDown = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(event) {\n var taskText;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(event.key === 'Enter' && taskName.trim())) {\n _context.next = 14;\n break;\n }\n taskText = taskName.trim();\n setTaskName('');\n _context.prev = 3;\n _context.next = 6;\n return onTaskCreate(taskText);\n case 6:\n showSuccessToast(t('success.taskCreated', 'Task created successfully!'));\n _context.next = 14;\n break;\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n console.error('Error creating task:', _context.t0);\n setTaskName(taskText);\n showErrorToast(t('errors.taskCreate', 'Failed to create task.'));\n case 14:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[3, 9]]);\n }));\n return function handleKeyDown(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex items-center justify-between py-3 px-4 mb-2 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_3__[\"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 }));\n};\n_s(NewTask, \"KBYdgqzOlHVePvYN4KVfaPQiRAI=\", 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?");
+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\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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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__*/_regeneratorRuntime().mark(function _callee() {\n var enabled;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_3__.getTaskIntelligenceEnabled)();\n case 3:\n enabled = _context.sent;\n setTaskIntelligenceEnabled(enabled);\n _context.next = 11;\n break;\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](0);\n console.error('Error fetching task intelligence setting:', _context.t0);\n setTaskIntelligenceEnabled(true); // Default to enabled\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 7]]);\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__*/_regeneratorRuntime().mark(function _callee2(event) {\n var taskText;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(event.key === 'Enter' && taskName.trim())) {\n _context2.next = 15;\n break;\n }\n taskText = taskName.trim();\n setTaskName('');\n setShowNameLengthHelper(false); // Hide helper when creating task\n _context2.prev = 4;\n _context2.next = 7;\n return onTaskCreate(taskText);\n case 7:\n showSuccessToast(t('success.taskCreated', 'Task created successfully!'));\n _context2.next = 15;\n break;\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](4);\n console.error('Error creating task:', _context2.t0);\n setTaskName(taskText);\n showErrorToast(t('errors.taskCreate', 'Failed to create task.'));\n case 15:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[4, 10]]);\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?");
/***/ }),
@@ -455,7 +466,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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 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: \"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 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')), renderRecurrenceTypeSelect(), (recurrenceType === 'daily' || recurrenceType === 'weekly' || recurrenceType === 'monthly' || recurrenceType === 'monthly_weekday' || recurrenceType === 'monthly_last_day') && renderIntervalInput(), recurrenceType === 'weekly' && renderWeekdaySelect(), recurrenceType === 'monthly' && renderMonthDayInput(), recurrenceType === 'monthly_weekday' && renderMonthlyWeekdayInputs(), renderEndDateInput(), 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?");
+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 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: \"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 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: \"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?");
/***/ }),
@@ -532,7 +543,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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_PriorityDropdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/PriorityDropdown */ \"./frontend/components/Shared/PriorityDropdown.tsx\");\n/* harmony import */ var _Shared_StatusDropdown__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Shared/StatusDropdown */ \"./frontend/components/Shared/StatusDropdown.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _Tag_TagInput__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Tag/TagInput */ \"./frontend/components/Tag/TagInput.tsx\");\n/* harmony import */ var _RecurrenceInput__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./RecurrenceInput */ \"./frontend/components/Task/RecurrenceInput.tsx\");\n/* harmony import */ var _utils_tagsService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/tagsService */ \"./frontend/utils/tagsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_10__ = __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 _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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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 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 _useState10 = _slicedToArray(_useState9, 2),\n isCreatingProject = _useState10[0],\n setIsCreatingProject = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n dropdownOpen = _useState12[0],\n setDropdownOpen = _useState12[1];\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n isClosing = _useState14[0],\n setIsClosing = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n showConfirmDialog = _useState16[0],\n setShowConfirmDialog = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState18 = _slicedToArray(_useState17, 2),\n localAvailableTags = _useState18[0],\n setLocalAvailableTags = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState20 = _slicedToArray(_useState19, 2),\n tagsLoaded = _useState20[0],\n setTagsLoaded = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState22 = _slicedToArray(_useState21, 2),\n tagsLoading = _useState22[0],\n setTagsLoading = _useState22[1];\n var _useState23 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState24 = _slicedToArray(_useState23, 2),\n parentTask = _useState24[0],\n setParentTask = _useState24[1];\n var _useState25 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState26 = _slicedToArray(_useState25, 2),\n parentTaskLoading = _useState26[0],\n setParentTaskLoading = _useState26[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__.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 (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 // 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__*/_regeneratorRuntime().mark(function _callee() {\n var parent;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(task.recurring_parent_id && isOpen)) {\n _context.next = 18;\n break;\n }\n setParentTaskLoading(true);\n _context.prev = 2;\n _context.next = 5;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_9__.fetchTaskById)(task.recurring_parent_id);\n case 5:\n parent = _context.sent;\n setParentTask(parent);\n _context.next = 13;\n break;\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](2);\n console.error('Error fetching parent task:', _context.t0);\n setParentTask(null);\n case 13:\n _context.prev = 13;\n setParentTaskLoading(false);\n return _context.finish(13);\n case 16:\n _context.next = 19;\n break;\n case 18:\n setParentTask(null);\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[2, 9, 13, 16]]);\n }));\n return function fetchParentTask() {\n return _ref2.apply(this, arguments);\n };\n }();\n fetchParentTask();\n }, [task, projects, 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 _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var fetchedTags;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(isOpen && !tagsLoaded)) {\n _context2.next = 17;\n break;\n }\n setTagsLoading(true);\n _context2.prev = 2;\n _context2.next = 5;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_8__.fetchTags)();\n case 5:\n fetchedTags = _context2.sent;\n setLocalAvailableTags(fetchedTags);\n setTagsLoaded(true);\n _context2.next = 14;\n break;\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](2);\n console.error(\"Error fetching tags:\", _context2.t0);\n setTagsLoaded(true); // Mark as loaded even on error to prevent retry loop\n case 14:\n _context2.prev = 14;\n setTagsLoading(false);\n return _context2.finish(14);\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[2, 10, 14, 17]]);\n }));\n return function loadTags() {\n return _ref3.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 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 _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n var newProject;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (!(newProjectName.trim() !== \"\")) {\n _context3.next = 20;\n break;\n }\n setIsCreatingProject(true);\n _context3.prev = 2;\n _context3.next = 5;\n return onCreateProject(newProjectName);\n case 5:\n newProject = _context3.sent;\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(\"Project created successfully!\");\n _context3.next = 17;\n break;\n case 13:\n _context3.prev = 13;\n _context3.t0 = _context3[\"catch\"](2);\n showErrorToast(\"Failed to create project.\");\n console.error(\"Error creating project:\", _context3.t0);\n case 17:\n _context3.prev = 17;\n setIsCreatingProject(false);\n return _context3.finish(17);\n case 20:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[2, 13, 17, 20]]);\n }));\n return function handleCreateProject() {\n return _ref4.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 showSuccessToast(\"Task updated successfully!\");\n handleClose();\n };\n var handleDeleteClick = function handleDeleteClick() {\n setShowConfirmDialog(true);\n };\n var handleDeleteConfirm = function handleDeleteConfirm() {\n if (formData.id) {\n onDelete(formData.id);\n showSuccessToast(\"Task deleted successfully!\");\n setShowConfirmDialog(false);\n handleClose();\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-3xl 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: \"p-4 space-y-3 text-sm\"\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(\"div\", {\n className: \"py-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n id: \"task_name_\".concat(task.id),\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.task.namePlaceholder', 'Add Task 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.task.labels.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_6__[\"default\"], {\n onTagsChange: handleTagsChange,\n initialTags: ((_formData$tags = formData.tags) === null || _formData$tags === void 0 ? void 0 : _formData$tags.map(function (tag) {\n return tag.name;\n })) || [],\n availableTags: localAvailableTags\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3 relative\"\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.task.labels.project', 'Project')), /*#__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: handleProjectSearch,\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 }), dropdownOpen && newProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute mt-1 bg-white dark:bg-gray-900 shadow-md rounded-md w-full z-10\"\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 handleProjectSelection(project);\n },\n className: \"block w-full text-gray-500 dark:text-gray-300 text-left px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600\"\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-300\"\n }, t('forms.task.noMatchingProjects', 'No matching projects')), newProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleCreateProject,\n disabled: isCreatingProject,\n className: \"block w-full text-left px-4 py-2 bg-blue-500 text-white hover:bg-blue-600\"\n }, isCreatingProject ? t('forms.task.creatingProject', 'Creating...') : t('forms.task.createProject', '+ Create') + \" \\\"\".concat(newProjectName, \"\\\"\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-2 sm:grid-cols-3 gap-4 pb-3 sm:grid-flow-col\"\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-3\"\n }, t('forms.task.labels.status', 'Status')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_StatusDropdown__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n value: getStatusString(formData.status),\n onChange: function onChange(value) {\n return setFormData(_objectSpread(_objectSpread({}, formData), {}, {\n status: value\n }));\n }\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-3\"\n }, t('forms.task.labels.priority', 'Priority')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_PriorityDropdown__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n value: getPriorityString(formData.priority),\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\", 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-3\"\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(task.id),\n name: \"due_date\",\n value: formData.due_date || \"\",\n onChange: handleChange,\n className: \"block w-full focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 border border-gray-300 dark:border-gray-900 rounded-md text-gray-900 dark:text-gray-100\"\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.noteContent')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textarea\", {\n id: \"task_note_\".concat(task.id),\n name: \"note\",\n rows: 3,\n value: formData.note || \"\",\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm p-3 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n placeholder: t('forms.noteContentPlaceholder')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_RecurrenceInput__WEBPACK_IMPORTED_MODULE_7__[\"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: handleRecurrenceChange,\n disabled: !!parentTask,\n isChildTask: !!parentTask,\n parentTaskLoading: parentTaskLoading,\n onEditParent: parentTask ? handleEditParent : undefined,\n onParentRecurrenceChange: parentTask ? handleParentRecurrenceChange : undefined\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 border-t border-gray-200 dark:border-gray-700\"\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 }))))), showConfirmDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__[\"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, \"ZjAWDhaWSu56qYZs5jfo5jRaPVY=\", false, function () {\n return [_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__.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?");
+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_PriorityDropdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Shared/PriorityDropdown */ \"./frontend/components/Shared/PriorityDropdown.tsx\");\n/* harmony import */ var _Shared_StatusDropdown__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Shared/StatusDropdown */ \"./frontend/components/Shared/StatusDropdown.tsx\");\n/* harmony import */ var _Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Shared/ConfirmDialog */ \"./frontend/components/Shared/ConfirmDialog.tsx\");\n/* harmony import */ var _Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Shared/ToastContext */ \"./frontend/components/Shared/ToastContext.tsx\");\n/* harmony import */ var _Tag_TagInput__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Tag/TagInput */ \"./frontend/components/Tag/TagInput.tsx\");\n/* harmony import */ var _RecurrenceInput__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./RecurrenceInput */ \"./frontend/components/Task/RecurrenceInput.tsx\");\n/* harmony import */ var _utils_tagsService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/tagsService */ \"./frontend/utils/tagsService.ts\");\n/* harmony import */ var _utils_tasksService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/tasksService */ \"./frontend/utils/tasksService.ts\");\n/* harmony import */ var _utils_profileService__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/profileService */ \"./frontend/utils/profileService.ts\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_11__ = __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 _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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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\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 _useState10 = _slicedToArray(_useState9, 2),\n isCreatingProject = _useState10[0],\n setIsCreatingProject = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState12 = _slicedToArray(_useState11, 2),\n dropdownOpen = _useState12[0],\n setDropdownOpen = _useState12[1];\n var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n isClosing = _useState14[0],\n setIsClosing = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n showConfirmDialog = _useState16[0],\n setShowConfirmDialog = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState18 = _slicedToArray(_useState17, 2),\n localAvailableTags = _useState18[0],\n setLocalAvailableTags = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState20 = _slicedToArray(_useState19, 2),\n tagsLoaded = _useState20[0],\n setTagsLoaded = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState22 = _slicedToArray(_useState21, 2),\n tagsLoading = _useState22[0],\n setTagsLoading = _useState22[1];\n var _useState23 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),\n _useState24 = _slicedToArray(_useState23, 2),\n parentTask = _useState24[0],\n setParentTask = _useState24[1];\n var _useState25 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState26 = _slicedToArray(_useState25, 2),\n parentTaskLoading = _useState26[0],\n setParentTaskLoading = _useState26[1];\n var _useState27 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState28 = _slicedToArray(_useState27, 2),\n showNameLengthHelper = _useState28[0],\n setShowNameLengthHelper = _useState28[1];\n var _useState29 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState30 = _slicedToArray(_useState29, 2),\n taskIntelligenceEnabled = _useState30[0],\n setTaskIntelligenceEnabled = _useState30[1];\n var _useToast = (0,_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__.useToast)(),\n showSuccessToast = _useToast.showSuccessToast,\n showErrorToast = _useToast.showErrorToast;\n var _useTranslation = (0,react_i18next__WEBPACK_IMPORTED_MODULE_11__.useTranslation)(),\n t = _useTranslation.t;\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 // Check if task name is short and show helper when modal opens (only if intelligence is enabled)\n if (isOpen && task.name && taskIntelligenceEnabled) {\n var trimmedName = task.name.trim();\n setShowNameLengthHelper(trimmedName.length > 0 && trimmedName.length < 10);\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__*/_regeneratorRuntime().mark(function _callee() {\n var parent;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(task.recurring_parent_id && isOpen)) {\n _context.next = 18;\n break;\n }\n setParentTaskLoading(true);\n _context.prev = 2;\n _context.next = 5;\n return (0,_utils_tasksService__WEBPACK_IMPORTED_MODULE_9__.fetchTaskById)(task.recurring_parent_id);\n case 5:\n parent = _context.sent;\n setParentTask(parent);\n _context.next = 13;\n break;\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](2);\n console.error('Error fetching parent task:', _context.t0);\n setParentTask(null);\n case 13:\n _context.prev = 13;\n setParentTaskLoading(false);\n return _context.finish(13);\n case 16:\n _context.next = 19;\n break;\n case 18:\n setParentTask(null);\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[2, 9, 13, 16]]);\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__*/_regeneratorRuntime().mark(function _callee2() {\n var enabled;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!isOpen) {\n _context2.next = 12;\n break;\n }\n _context2.prev = 1;\n _context2.next = 4;\n return (0,_utils_profileService__WEBPACK_IMPORTED_MODULE_10__.getTaskIntelligenceEnabled)();\n case 4:\n enabled = _context2.sent;\n setTaskIntelligenceEnabled(enabled);\n _context2.next = 12;\n break;\n case 8:\n _context2.prev = 8;\n _context2.t0 = _context2[\"catch\"](1);\n console.error('Error fetching task intelligence setting:', _context2.t0);\n setTaskIntelligenceEnabled(true); // Default to enabled\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[1, 8]]);\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__*/_regeneratorRuntime().mark(function _callee3() {\n var fetchedTags;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (!(isOpen && !tagsLoaded)) {\n _context3.next = 17;\n break;\n }\n setTagsLoading(true);\n _context3.prev = 2;\n _context3.next = 5;\n return (0,_utils_tagsService__WEBPACK_IMPORTED_MODULE_8__.fetchTags)();\n case 5:\n fetchedTags = _context3.sent;\n setLocalAvailableTags(fetchedTags);\n setTagsLoaded(true);\n _context3.next = 14;\n break;\n case 10:\n _context3.prev = 10;\n _context3.t0 = _context3[\"catch\"](2);\n console.error(\"Error fetching tags:\", _context3.t0);\n setTagsLoaded(true); // Mark as loaded even on error to prevent retry loop\n case 14:\n _context3.prev = 14;\n setTagsLoading(false);\n return _context3.finish(14);\n case 17:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[2, 10, 14, 17]]);\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 // Show helper message for task name if it's too short (only if intelligence is enabled)\n if (name === 'name' && taskIntelligenceEnabled) {\n var trimmedValue = value.trim();\n setShowNameLengthHelper(trimmedValue.length > 0 && trimmedValue.length < 10);\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__*/_regeneratorRuntime().mark(function _callee4() {\n var newProject;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(newProjectName.trim() !== \"\")) {\n _context4.next = 20;\n break;\n }\n setIsCreatingProject(true);\n _context4.prev = 2;\n _context4.next = 5;\n return onCreateProject(newProjectName);\n case 5:\n newProject = _context4.sent;\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(\"Project created successfully!\");\n _context4.next = 17;\n break;\n case 13:\n _context4.prev = 13;\n _context4.t0 = _context4[\"catch\"](2);\n showErrorToast(\"Failed to create project.\");\n console.error(\"Error creating project:\", _context4.t0);\n case 17:\n _context4.prev = 17;\n setIsCreatingProject(false);\n return _context4.finish(17);\n case 20:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[2, 13, 17, 20]]);\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 showSuccessToast(\"Task updated successfully!\");\n handleClose();\n };\n var handleDeleteClick = function handleDeleteClick() {\n setShowConfirmDialog(true);\n };\n var handleDeleteConfirm = function handleDeleteConfirm() {\n if (formData.id) {\n onDelete(formData.id);\n showSuccessToast(\"Task deleted successfully!\");\n setShowConfirmDialog(false);\n handleClose();\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-3xl 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: \"p-4 space-y-3 text-sm\"\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(\"div\", {\n className: \"py-4\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"text\",\n id: \"task_name_\".concat(task.id),\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.task.namePlaceholder', 'Add Task Name')\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\"')))))), /*#__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.task.labels.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_6__[\"default\"], {\n onTagsChange: handleTagsChange,\n initialTags: ((_formData$tags = formData.tags) === null || _formData$tags === void 0 ? void 0 : _formData$tags.map(function (tag) {\n return tag.name;\n })) || [],\n availableTags: localAvailableTags\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"pb-3 relative\"\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.task.labels.project', 'Project')), /*#__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: handleProjectSearch,\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 }), dropdownOpen && newProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"absolute mt-1 bg-white dark:bg-gray-900 shadow-md rounded-md w-full z-10\"\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 handleProjectSelection(project);\n },\n className: \"block w-full text-gray-500 dark:text-gray-300 text-left px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600\"\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-300\"\n }, t('forms.task.noMatchingProjects', 'No matching projects')), newProjectName && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: handleCreateProject,\n disabled: isCreatingProject,\n className: \"block w-full text-left px-4 py-2 bg-blue-500 text-white hover:bg-blue-600\"\n }, isCreatingProject ? t('forms.task.creatingProject', 'Creating...') : t('forms.task.createProject', '+ Create') + \" \\\"\".concat(newProjectName, \"\\\"\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"grid grid-cols-2 sm:grid-cols-3 gap-4 pb-3 sm:grid-flow-col\"\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-3\"\n }, t('forms.task.labels.status', 'Status')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_StatusDropdown__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n value: getStatusString(formData.status),\n onChange: function onChange(value) {\n return setFormData(_objectSpread(_objectSpread({}, formData), {}, {\n status: value\n }));\n }\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-3\"\n }, t('forms.task.labels.priority', 'Priority')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_PriorityDropdown__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n value: getPriorityString(formData.priority),\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\", 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-3\"\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(task.id),\n name: \"due_date\",\n value: formData.due_date || \"\",\n onChange: handleChange,\n className: \"block w-full focus:outline-none shadow-sm px-2 py-2 text-sm bg-white dark:bg-gray-900 border border-gray-300 dark:border-gray-900 rounded-md text-gray-900 dark:text-gray-100\"\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.noteContent')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textarea\", {\n id: \"task_note_\".concat(task.id),\n name: \"note\",\n rows: 3,\n value: formData.note || \"\",\n onChange: handleChange,\n className: \"block w-full border border-gray-300 dark:border-gray-900 rounded-md focus:outline-none shadow-sm p-3 text-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100\",\n placeholder: t('forms.noteContentPlaceholder')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_RecurrenceInput__WEBPACK_IMPORTED_MODULE_7__[\"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: handleRecurrenceChange,\n disabled: !!parentTask,\n isChildTask: !!parentTask,\n parentTaskLoading: parentTaskLoading,\n onEditParent: parentTask ? handleEditParent : undefined,\n onParentRecurrenceChange: parentTask ? handleParentRecurrenceChange : undefined\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"p-3 border-t border-gray-200 dark:border-gray-700\"\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 }))))), showConfirmDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Shared_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__[\"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, \"tdnkGeyEgM9hszxTy6Hd9h4H2A4=\", false, function () {\n return [_Shared_ToastContext__WEBPACK_IMPORTED_MODULE_5__.useToast, react_i18next__WEBPACK_IMPORTED_MODULE_11__.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?");
/***/ }),
@@ -576,7 +587,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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_1__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\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/TagIcon.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/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\nvar TaskTags = function TaskTags(_ref) {\n _s();\n var _ref$tags = _ref.tags,\n tags = _ref$tags === void 0 ? [] : _ref$tags,\n onTagRemove = _ref.onTagRemove,\n className = _ref.className;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_1__.useNavigate)();\n var handleTagClick = function handleTagClick(tagName) {\n navigate(\"/tasks?tag=\".concat(tagName));\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-wrap gap-2 \".concat(className)\n }, tags.map(function (tag, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: tag.id || index,\n className: \"flex items-center bg-gray-200 text-gray-800 text-xs font-medium px-2 py-1.5 rounded-md dark:bg-gray-700 dark:text-gray-200 cursor-pointer\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return handleTagClick(tag.name);\n },\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"hidden md:block h-4 w-4 text-gray-500 dark:text-gray-300 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-xs text-gray-700 dark:text-gray-300\"\n }, tag.name)), onTagRemove && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return onTagRemove(tag.id);\n },\n className: \"ml-1 text-gray-500 hover:text-gray-700 dark:hover:text-gray-400 focus:outline-none\",\n \"aria-label\": \"Remove tag \".concat(tag.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4\"\n })));\n }));\n};\n_s(TaskTags, \"CzcTeTziyjMsSrAVmHuCCb6+Bfg=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_1__.useNavigate];\n});\n_c = TaskTags;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskTags);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskTags\");\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/TaskTags.tsx?");
+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_1__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\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/TagIcon.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/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\nvar TaskTags = function TaskTags(_ref) {\n _s();\n var _ref$tags = _ref.tags,\n tags = _ref$tags === void 0 ? [] : _ref$tags,\n onTagRemove = _ref.onTagRemove,\n className = _ref.className;\n var navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_1__.useNavigate)();\n var handleTagClick = function handleTagClick(tagName) {\n navigate(\"/tasks?tag=\".concat(tagName));\n };\n\n // Don't render anything if there are no tags\n if (!tags || tags.length === 0) {\n return null;\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"flex flex-wrap gap-2 \".concat(className)\n }, tags.map(function (tag, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: tag.id || index,\n className: \"flex items-center bg-gray-200 text-gray-800 text-xs font-medium px-2 py-1.5 rounded-md dark:bg-gray-700 dark:text-gray-200 cursor-pointer\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return handleTagClick(tag.name);\n },\n className: \"flex items-center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"hidden md:block h-4 w-4 text-gray-500 dark:text-gray-300 mr-2\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"text-xs text-gray-700 dark:text-gray-300\"\n }, tag.name)), onTagRemove && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return onTagRemove(tag.id);\n },\n className: \"ml-1 text-gray-500 hover:text-gray-700 dark:hover:text-gray-400 focus:outline-none\",\n \"aria-label\": \"Remove tag \".concat(tag.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_heroicons_react_24_solid__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4\"\n })));\n }));\n};\n_s(TaskTags, \"CzcTeTziyjMsSrAVmHuCCb6+Bfg=\", false, function () {\n return [react_router_dom__WEBPACK_IMPORTED_MODULE_1__.useNavigate];\n});\n_c = TaskTags;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TaskTags);\nvar _c;\n__webpack_require__.$Refresh$.register(_c, \"TaskTags\");\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/TaskTags.tsx?");
/***/ }),
@@ -620,7 +631,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
/***/ ((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 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 },\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?");
+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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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__*/_regeneratorRuntime().mark(function _callee() {\n var _require, fetchTags, tags;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _require = __webpack_require__(/*! ../utils/tagsService */ \"./frontend/utils/tagsService.ts\"), fetchTags = _require.fetchTags;\n console.log(\"loadTags: Starting to load tags...\");\n set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n isLoading: true,\n isError: false\n })\n };\n });\n _context.prev = 3;\n _context.next = 6;\n return fetchTags();\n case 6:\n tags = _context.sent;\n console.log(\"loadTags: Successfully loaded tags:\", tags);\n set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n tags: tags,\n isLoading: false\n })\n };\n });\n _context.next = 15;\n break;\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](3);\n console.error(\"loadTags: Failed to load tags:\", _context.t0);\n set(function (state) {\n return {\n tagsStore: _objectSpread(_objectSpread({}, state.tagsStore), {}, {\n isError: true,\n isLoading: false\n })\n };\n });\n case 15:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[3, 11]]);\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?");
/***/ }),
@@ -668,6 +679,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./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 */ 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 _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 _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\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__*/_regeneratorRuntime().mark(function _callee() {\n var response;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return fetch('/api/profile', {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 2:\n response = _context.sent;\n _context.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch profile data.');\n case 5:\n _context.next = 7;\n return response.json();\n case 7:\n return _context.abrupt(\"return\", _context.sent);\n case 8:\n case \"end\":\n return _context.stop();\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__*/_regeneratorRuntime().mark(function _callee2(profileData) {\n var response;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 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(profileData)\n });\n case 2:\n response = _context2.sent;\n _context2.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update profile.');\n case 5:\n _context2.next = 7;\n return response.json();\n case 7:\n return _context2.abrupt(\"return\", _context2.sent);\n case 8:\n case \"end\":\n return _context2.stop();\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__*/_regeneratorRuntime().mark(function _callee3() {\n var response;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return fetch('/api/profile/task-summary/status', {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 2:\n response = _context3.sent;\n _context3.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch scheduler status.');\n case 5:\n _context3.next = 7;\n return response.json();\n case 7:\n return _context3.abrupt(\"return\", _context3.sent);\n case 8:\n case \"end\":\n return _context3.stop();\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__*/_regeneratorRuntime().mark(function _callee4() {\n var response;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\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 2:\n response = _context4.sent;\n _context4.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to send task summary.');\n case 5:\n _context4.next = 7;\n return response.json();\n case 7:\n return _context4.abrupt(\"return\", _context4.sent);\n case 8:\n case \"end\":\n return _context4.stop();\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__*/_regeneratorRuntime().mark(function _callee5() {\n var response;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return fetch('/api/telegram/polling-status', {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n });\n case 2:\n response = _context5.sent;\n _context5.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to fetch polling status.');\n case 5:\n _context5.next = 7;\n return response.json();\n case 7:\n return _context5.abrupt(\"return\", _context5.sent);\n case 8:\n case \"end\":\n return _context5.stop();\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__*/_regeneratorRuntime().mark(function _callee6(botToken, chatId) {\n var response;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\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 2:\n response = _context6.sent;\n _context6.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to setup telegram.');\n case 5:\n _context6.next = 7;\n return response.json();\n case 7:\n return _context6.abrupt(\"return\", _context6.sent);\n case 8:\n case \"end\":\n return _context6.stop();\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__*/_regeneratorRuntime().mark(function _callee7() {\n var response;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\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 2:\n response = _context7.sent;\n _context7.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to start telegram polling.');\n case 5:\n _context7.next = 7;\n return response.json();\n case 7:\n return _context7.abrupt(\"return\", _context7.sent);\n case 8:\n case \"end\":\n return _context7.stop();\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__*/_regeneratorRuntime().mark(function _callee8() {\n var response;\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\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 2:\n response = _context8.sent;\n _context8.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to stop telegram polling.');\n case 5:\n _context8.next = 7;\n return response.json();\n case 7:\n return _context8.abrupt(\"return\", _context8.sent);\n case 8:\n case \"end\":\n return _context8.stop();\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__*/_regeneratorRuntime().mark(function _callee9(userId, message) {\n var response;\n return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\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 2:\n response = _context9.sent;\n _context9.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to send test message.');\n case 5:\n _context9.next = 7;\n return response.json();\n case 7:\n return _context9.abrupt(\"return\", _context9.sent);\n case 8:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9);\n }));\n return function testTelegram(_x4, _x5) {\n return _ref9.apply(this, arguments);\n };\n}();\nvar toggleTaskSummary = /*#__PURE__*/function () {\n var _ref10 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n var response;\n return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\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 2:\n response = _context10.sent;\n _context10.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to toggle task summary.');\n case 5:\n _context10.next = 7;\n return response.json();\n case 7:\n return _context10.abrupt(\"return\", _context10.sent);\n case 8:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10);\n }));\n return function toggleTaskSummary() {\n return _ref10.apply(this, arguments);\n };\n}();\nvar updateTaskSummaryFrequency = /*#__PURE__*/function () {\n var _ref11 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11(frequency) {\n var response;\n return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\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 2:\n response = _context11.sent;\n _context11.next = 5;\n return (0,_authUtils__WEBPACK_IMPORTED_MODULE_0__.handleAuthResponse)(response, 'Failed to update task summary frequency.');\n case 5:\n _context11.next = 7;\n return response.json();\n case 7:\n return _context11.abrupt(\"return\", _context11.sent);\n case 8:\n case \"end\":\n return _context11.stop();\n }\n }, _callee11);\n }));\n return function updateTaskSummaryFrequency(_x6) {\n return _ref11.apply(this, arguments);\n };\n}();\nvar getTaskIntelligenceEnabled = /*#__PURE__*/function () {\n var _ref12 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n var profile;\n return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n while (1) switch (_context12.prev = _context12.next) {\n case 0:\n _context12.prev = 0;\n _context12.next = 3;\n return fetchProfile();\n case 3:\n profile = _context12.sent;\n return _context12.abrupt(\"return\", profile.task_intelligence_enabled !== undefined ? profile.task_intelligence_enabled : true);\n case 7:\n _context12.prev = 7;\n _context12.t0 = _context12[\"catch\"](0);\n console.error('Error fetching task intelligence setting:', _context12.t0);\n return _context12.abrupt(\"return\", true);\n case 11:\n case \"end\":\n return _context12.stop();\n }\n }, _callee12, null, [[0, 7]]);\n }));\n return function getTaskIntelligenceEnabled() {\n return _ref12.apply(this, arguments);\n };\n}();\nvar getAutoSuggestNextActionsEnabled = /*#__PURE__*/function () {\n var _ref13 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n var profile;\n return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n while (1) switch (_context13.prev = _context13.next) {\n case 0:\n _context13.prev = 0;\n _context13.next = 3;\n return fetchProfile();\n case 3:\n profile = _context13.sent;\n return _context13.abrupt(\"return\", profile.auto_suggest_next_actions_enabled !== undefined ? profile.auto_suggest_next_actions_enabled : true);\n case 7:\n _context13.prev = 7;\n _context13.t0 = _context13[\"catch\"](0);\n console.error('Error fetching auto-suggest next actions setting:', _context13.t0);\n return _context13.abrupt(\"return\", true);\n case 11:\n case \"end\":\n return _context13.stop();\n }\n }, _callee13, null, [[0, 7]]);\n }));\n return function getAutoSuggestNextActionsEnabled() {\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 ***!
@@ -719,7 +741,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((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_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}/*\n! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured \\`sans\\` font-family by default.\n5. Use the user's configured \\`sans\\` font-feature-settings by default.\n6. Use the user's configured \\`sans\\` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from \\`html\\` so users can set them as a class directly on the \\`html\\` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured \\`mono\\` font-family by default.\n2. Use the user's configured \\`mono\\` font-feature-settings by default.\n3. Use the user's configured \\`mono\\` font-variation-settings by default.\n4. Correct the odd \\`em\\` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent \\`sub\\` and \\`sup\\` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([type='submit']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional \\`:invalid\\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to \\`inherit\\` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements \\`display: block\\` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add \\`vertical-align: middle\\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n.container {\n width: 100%;\n}\n@media (min-width: 640px) {\n\n .container {\n max-width: 640px;\n }\n}\n@media (min-width: 768px) {\n\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n\n .container {\n max-width: 1024px;\n }\n}\n@media (min-width: 1280px) {\n\n .container {\n max-width: 1280px;\n }\n}\n@media (min-width: 1536px) {\n\n .container {\n max-width: 1536px;\n }\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.visible {\n visibility: visible;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.inset-0 {\n inset: 0px;\n}\n.-right-2 {\n right: -0.5rem;\n}\n.-top-2 {\n top: -0.5rem;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.bottom-4 {\n bottom: 1rem;\n}\n.bottom-6 {\n bottom: 1.5rem;\n}\n.left-0 {\n left: 0px;\n}\n.left-2 {\n left: 0.5rem;\n}\n.right-0 {\n right: 0px;\n}\n.right-4 {\n right: 1rem;\n}\n.right-6 {\n right: 1.5rem;\n}\n.top-0 {\n top: 0px;\n}\n.top-16 {\n top: 4rem;\n}\n.top-2 {\n top: 0.5rem;\n}\n.z-10 {\n z-index: 10;\n}\n.z-40 {\n z-index: 40;\n}\n.z-50 {\n z-index: 50;\n}\n.col-span-full {\n grid-column: 1 / -1;\n}\n.m-1 {\n margin: 0.25rem;\n}\n.mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mb-3 {\n margin-bottom: 0.75rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n.mb-8 {\n margin-bottom: 2rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-1 {\n margin-left: 0.25rem;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-3 {\n margin-left: 0.75rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-72 {\n margin-left: 18rem;\n}\n.ml-8 {\n margin-left: 2rem;\n}\n.mr-1 {\n margin-right: 0.25rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mr-3 {\n margin-right: 0.75rem;\n}\n.mr-4 {\n margin-right: 1rem;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.mt-6 {\n margin-top: 1.5rem;\n}\n.mt-auto {\n margin-top: auto;\n}\n.line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n}\n.block {\n display: block;\n}\n.inline-block {\n display: inline-block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.h-16 {\n height: 4rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-20 {\n height: 5rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-48 {\n height: 12rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-64 {\n height: 16rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-\\\\[calc\\\\(100vh-4rem\\\\)\\\\] {\n height: calc(100vh - 4rem);\n}\n.h-full {\n height: 100%;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-60 {\n max-height: 15rem;\n}\n.min-h-0 {\n min-height: 0px;\n}\n.min-h-\\\\[40px\\\\] {\n min-height: 40px;\n}\n.min-h-full {\n min-height: 100%;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-12 {\n width: 3rem;\n}\n.w-16 {\n width: 4rem;\n}\n.w-20 {\n width: 5rem;\n}\n.w-28 {\n width: 7rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-32 {\n width: 8rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-40 {\n width: 10rem;\n}\n.w-48 {\n width: 12rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-6 {\n width: 1.5rem;\n}\n.w-8 {\n width: 2rem;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.max-w-5xl {\n max-width: 64rem;\n}\n.max-w-6xl {\n max-width: 72rem;\n}\n.max-w-full {\n max-width: 100%;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-sm {\n max-width: 24rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.origin-top-right {\n transform-origin: top right;\n}\n.translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-0\\\\.5 {\n --tw-translate-x: 0.125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-5 {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-6 {\n --tw-translate-x: 1.5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-0\\\\.5 {\n --tw-translate-y: 0.125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-100 {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-95 {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes pulse {\n\n 50% {\n opacity: .5;\n }\n}\n.animate-pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.resize {\n resize: both;\n}\n.appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.space-x-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0px * var(--tw-space-x-reverse));\n margin-left: calc(0px * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-3 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-pre-line {\n white-space: pre-line;\n}\n.break-words {\n overflow-wrap: break-word;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.rounded-md {\n border-radius: 0.375rem;\n}\n.rounded-t-lg {\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l-4 {\n border-left-width: 4px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-none {\n border-style: none;\n}\n.border-blue-200 {\n --tw-border-opacity: 1;\n border-color: rgb(191 219 254 / var(--tw-border-opacity));\n}\n.border-blue-300 {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n.border-blue-500 {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.border-blue-700 {\n --tw-border-opacity: 1;\n border-color: rgb(29 78 216 / var(--tw-border-opacity));\n}\n.border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(229 231 235 / var(--tw-border-opacity));\n}\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity));\n}\n.border-green-200 {\n --tw-border-opacity: 1;\n border-color: rgb(187 247 208 / var(--tw-border-opacity));\n}\n.border-green-500 {\n --tw-border-opacity: 1;\n border-color: rgb(34 197 94 / var(--tw-border-opacity));\n}\n.border-red-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 202 202 / var(--tw-border-opacity));\n}\n.border-red-300 {\n --tw-border-opacity: 1;\n border-color: rgb(252 165 165 / var(--tw-border-opacity));\n}\n.border-red-700 {\n --tw-border-opacity: 1;\n border-color: rgb(185 28 28 / var(--tw-border-opacity));\n}\n.border-white {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n.border-yellow-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 240 138 / var(--tw-border-opacity));\n}\n.bg-black {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n.bg-blue-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity));\n}\n.bg-blue-400 {\n --tw-bg-opacity: 1;\n background-color: rgb(96 165 250 / var(--tw-bg-opacity));\n}\n.bg-blue-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity));\n}\n.bg-blue-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n.bg-blue-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-400 {\n --tw-bg-opacity: 1;\n background-color: rgb(156 163 175 / var(--tw-bg-opacity));\n}\n.bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity));\n}\n.bg-green-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(240 253 244 / var(--tw-bg-opacity));\n}\n.bg-green-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(34 197 94 / var(--tw-bg-opacity));\n}\n.bg-green-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(22 163 74 / var(--tw-bg-opacity));\n}\n.bg-purple-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 232 255 / var(--tw-bg-opacity));\n}\n.bg-purple-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(147 51 234 / var(--tw-bg-opacity));\n}\n.bg-red-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 242 242 / var(--tw-bg-opacity));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-red-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-yellow-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 252 232 / var(--tw-bg-opacity));\n}\n.bg-yellow-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(234 179 8 / var(--tw-bg-opacity));\n}\n.bg-opacity-50 {\n --tw-bg-opacity: 0.5;\n}\n.bg-opacity-80 {\n --tw-bg-opacity: 0.8;\n}\n.object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-8 {\n padding: 2rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.py-0\\\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.pb-3 {\n padding-bottom: 0.75rem;\n}\n.pr-4 {\n padding-right: 1rem;\n}\n.pt-24 {\n padding-top: 6rem;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.pt-8 {\n padding-top: 2rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-5xl {\n font-size: 3rem;\n line-height: 1;\n}\n.text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-light {\n font-weight: 300;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.capitalize {\n text-transform: capitalize;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n.text-blue-400 {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n.text-blue-500 {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n.text-blue-600 {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n}\n.text-blue-700 {\n --tw-text-opacity: 1;\n color: rgb(29 78 216 / var(--tw-text-opacity));\n}\n.text-blue-800 {\n --tw-text-opacity: 1;\n color: rgb(30 64 175 / var(--tw-text-opacity));\n}\n.text-gray-300 {\n --tw-text-opacity: 1;\n color: rgb(209 213 219 / var(--tw-text-opacity));\n}\n.text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n.text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n.text-gray-700 {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n.text-gray-800 {\n --tw-text-opacity: 1;\n color: rgb(31 41 55 / var(--tw-text-opacity));\n}\n.text-gray-900 {\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity));\n}\n.text-green-400 {\n --tw-text-opacity: 1;\n color: rgb(74 222 128 / var(--tw-text-opacity));\n}\n.text-green-500 {\n --tw-text-opacity: 1;\n color: rgb(34 197 94 / var(--tw-text-opacity));\n}\n.text-green-800 {\n --tw-text-opacity: 1;\n color: rgb(22 101 52 / var(--tw-text-opacity));\n}\n.text-purple-800 {\n --tw-text-opacity: 1;\n color: rgb(107 33 168 / var(--tw-text-opacity));\n}\n.text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity));\n}\n.text-red-600 {\n --tw-text-opacity: 1;\n color: rgb(220 38 38 / var(--tw-text-opacity));\n}\n.text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity));\n}\n.text-red-800 {\n --tw-text-opacity: 1;\n color: rgb(153 27 27 / var(--tw-text-opacity));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.text-yellow-500 {\n --tw-text-opacity: 1;\n color: rgb(234 179 8 / var(--tw-text-opacity));\n}\n.text-yellow-800 {\n --tw-text-opacity: 1;\n color: rgb(133 77 14 / var(--tw-text-opacity));\n}\n.no-underline {\n text-decoration-line: none;\n}\n.placeholder-gray-400::-moz-placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(156 163 175 / var(--tw-placeholder-opacity));\n}\n.placeholder-gray-400::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(156 163 175 / var(--tw-placeholder-opacity));\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-20 {\n opacity: 0.2;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.ring-1 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-black {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity));\n}\n.ring-opacity-5 {\n --tw-ring-opacity: 0.05;\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.spinner {\n border: 4px solid rgba(0, 0, 0, 0.1);\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border-left-color: #09f;\n animation: spin 1s ease infinite;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\ninput:focus, select:focus, textarea:focus {\n outline: none;\n box-shadow: none;\n}\n\n.file\\\\:mr-4::file-selector-button {\n margin-right: 1rem;\n}\n\n.file\\\\:rounded-md::file-selector-button {\n border-radius: 0.375rem;\n}\n\n.file\\\\:border-0::file-selector-button {\n border-width: 0px;\n}\n\n.file\\\\:bg-blue-50::file-selector-button {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity));\n}\n\n.file\\\\:px-4::file-selector-button {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.file\\\\:py-2::file-selector-button {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.file\\\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n\n.file\\\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n\n.file\\\\:text-blue-700::file-selector-button {\n --tw-text-opacity: 1;\n color: rgb(29 78 216 / var(--tw-text-opacity));\n}\n\n.hover\\\\:scale-110:hover {\n --tw-scale-x: 1.1;\n --tw-scale-y: 1.1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.hover\\\\:bg-blue-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-blue-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-blue-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-blue-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(29 78 216 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-200:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-400:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(156 163 175 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-green-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(21 128 61 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-purple-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(126 34 206 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-red-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(254 226 226 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-red-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:text-black:hover {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-blue-700:hover {\n --tw-text-opacity: 1;\n color: rgb(29 78 216 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-gray-800:hover {\n --tw-text-opacity: 1;\n color: rgb(31 41 55 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-red-500:hover {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-red-700:hover {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity));\n}\n\n.hover\\\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.hover\\\\:file\\\\:bg-blue-100::file-selector-button:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity));\n}\n\n.focus\\\\:border-blue-300:focus {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n\n.focus\\\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.focus\\\\:ring:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\\\:ring-0:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\\\:ring-blue-200:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity));\n}\n\n.focus\\\\:ring-blue-500:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));\n}\n\n.focus\\\\:ring-opacity-50:focus {\n --tw-ring-opacity: 0.5;\n}\n\n.focus\\\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.disabled\\\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\\\:opacity-50:disabled {\n opacity: 0.5;\n}\n\n.dark\\\\:border-blue-600:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(37 99 235 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-blue-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(30 64 175 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-600:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(75 85 99 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-700:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(55 65 81 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(31 41 55 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-900:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(17 24 39 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-green-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(22 101 52 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-red-600:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(220 38 38 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-red-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(153 27 27 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-yellow-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(133 77 14 / var(--tw-border-opacity));\n}\n\n.dark\\\\:bg-blue-500:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-blue-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(29 78 216 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-blue-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 58 138 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-blue-900\\\\/30:is(.dark *) {\n background-color: rgb(30 58 138 / 0.3);\n}\n\n.dark\\\\:bg-blue-900\\\\/50:is(.dark *) {\n background-color: rgb(30 58 138 / 0.5);\n}\n\n.dark\\\\:bg-gray-600:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(75 85 99 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-gray-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-gray-800:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-gray-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-green-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(21 128 61 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-green-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(20 83 45 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-purple-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(126 34 206 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-purple-800:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(107 33 168 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-500:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(127 29 29 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-900\\\\/50:is(.dark *) {\n background-color: rgb(127 29 29 / 0.5);\n}\n\n.dark\\\\:bg-transparent:is(.dark *) {\n background-color: transparent;\n}\n\n.dark\\\\:bg-yellow-900\\\\/30:is(.dark *) {\n background-color: rgb(113 63 18 / 0.3);\n}\n\n.dark\\\\:text-blue-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(219 234 254 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-blue-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(191 219 254 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-blue-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(147 197 253 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-blue-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 231 235 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(209 213 219 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-600:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-green-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(187 247 208 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-purple-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 232 255 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-red-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(254 202 202 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-red-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(252 165 165 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-red-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-white:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-yellow-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(254 240 138 / var(--tw-text-opacity));\n}\n\n.dark\\\\:placeholder-gray-600:is(.dark *)::-moz-placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(75 85 99 / var(--tw-placeholder-opacity));\n}\n\n.dark\\\\:placeholder-gray-600:is(.dark *)::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(75 85 99 / var(--tw-placeholder-opacity));\n}\n\n.dark\\\\:file\\\\:bg-blue-900:is(.dark *)::file-selector-button {\n --tw-bg-opacity: 1;\n background-color: rgb(30 58 138 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:file\\\\:text-blue-200:is(.dark *)::file-selector-button {\n --tw-text-opacity: 1;\n color: rgb(191 219 254 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-blue-600:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-blue-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 64 175 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-blue-800\\\\/50:hover:is(.dark *) {\n background-color: rgb(30 64 175 / 0.5);\n}\n\n.dark\\\\:hover\\\\:bg-blue-900:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 58 138 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-gray-600:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(75 85 99 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-gray-700:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-green-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(22 101 52 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-purple-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(107 33 168 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-red-600:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-red-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(153 27 27 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-red-800\\\\/50:hover:is(.dark *) {\n background-color: rgb(153 27 27 / 0.5);\n}\n\n.dark\\\\:hover\\\\:bg-red-900:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(127 29 29 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:text-blue-300:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(147 197 253 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:text-gray-400:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:text-red-300:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(252 165 165 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:text-white:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n@media (min-width: 640px) {\n\n .sm\\\\:left-auto {\n left: auto;\n }\n\n .sm\\\\:right-0 {\n right: 0px;\n }\n\n .sm\\\\:mb-0 {\n margin-bottom: 0px;\n }\n\n .sm\\\\:mr-3 {\n margin-right: 0.75rem;\n }\n\n .sm\\\\:h-auto {\n height: auto;\n }\n\n .sm\\\\:w-56 {\n width: 14rem;\n }\n\n .sm\\\\:w-72 {\n width: 18rem;\n }\n\n .sm\\\\:max-w-2xl {\n max-width: 42rem;\n }\n\n .sm\\\\:max-w-3xl {\n max-width: 48rem;\n }\n\n .sm\\\\:max-w-md {\n max-width: 28rem;\n }\n\n .sm\\\\:grid-flow-col {\n grid-auto-flow: column;\n }\n\n .sm\\\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .sm\\\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .sm\\\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\\\:items-center {\n align-items: center;\n }\n\n .sm\\\\:rounded-lg {\n border-radius: 0.5rem;\n }\n\n .sm\\\\:p-6 {\n padding: 1.5rem;\n }\n\n .sm\\\\:px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n\n .sm\\\\:shadow-2xl {\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n }\n}\n\n@media (min-width: 768px) {\n\n .md\\\\:mb-0 {\n margin-bottom: 0px;\n }\n\n .md\\\\:block {\n display: block;\n }\n\n .md\\\\:flex {\n display: flex;\n }\n\n .md\\\\:hidden {\n display: none;\n }\n\n .md\\\\:w-auto {\n width: auto;\n }\n\n .md\\\\:max-w-3xl {\n max-width: 48rem;\n }\n\n .md\\\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .md\\\\:flex-row {\n flex-direction: row;\n }\n\n .md\\\\:items-center {\n align-items: center;\n }\n\n .md\\\\:justify-end {\n justify-content: flex-end;\n }\n\n .md\\\\:justify-between {\n justify-content: space-between;\n }\n\n .md\\\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .md\\\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .md\\\\:px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n\n .md\\\\:px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n}\n\n@media (min-width: 1024px) {\n\n .lg\\\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .lg\\\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n\n .lg\\\\:p-8 {\n padding: 2rem;\n }\n\n .lg\\\\:px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n\n .lg\\\\:px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n}\n\n@media (min-width: 1280px) {\n\n .xl\\\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n}\n\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://tududi/./frontend/styles/tailwind.css?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js");
+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_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}/*\n! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured \\`sans\\` font-family by default.\n5. Use the user's configured \\`sans\\` font-feature-settings by default.\n6. Use the user's configured \\`sans\\` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from \\`html\\` so users can set them as a class directly on the \\`html\\` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured \\`mono\\` font-family by default.\n2. Use the user's configured \\`mono\\` font-feature-settings by default.\n3. Use the user's configured \\`mono\\` font-variation-settings by default.\n4. Correct the odd \\`em\\` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent \\`sub\\` and \\`sup\\` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([type='submit']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional \\`:invalid\\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to \\`inherit\\` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements \\`display: block\\` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add \\`vertical-align: middle\\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n.container {\n width: 100%;\n}\n@media (min-width: 640px) {\n\n .container {\n max-width: 640px;\n }\n}\n@media (min-width: 768px) {\n\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n\n .container {\n max-width: 1024px;\n }\n}\n@media (min-width: 1280px) {\n\n .container {\n max-width: 1280px;\n }\n}\n@media (min-width: 1536px) {\n\n .container {\n max-width: 1536px;\n }\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.visible {\n visibility: visible;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.inset-0 {\n inset: 0px;\n}\n.-right-2 {\n right: -0.5rem;\n}\n.-top-2 {\n top: -0.5rem;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.bottom-4 {\n bottom: 1rem;\n}\n.bottom-6 {\n bottom: 1.5rem;\n}\n.left-0 {\n left: 0px;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-3 {\n left: 0.75rem;\n}\n.right-0 {\n right: 0px;\n}\n.right-3 {\n right: 0.75rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-6 {\n right: 1.5rem;\n}\n.top-0 {\n top: 0px;\n}\n.top-1\\\\/2 {\n top: 50%;\n}\n.top-16 {\n top: 4rem;\n}\n.top-2 {\n top: 0.5rem;\n}\n.top-3 {\n top: 0.75rem;\n}\n.z-10 {\n z-index: 10;\n}\n.z-40 {\n z-index: 40;\n}\n.z-50 {\n z-index: 50;\n}\n.col-span-full {\n grid-column: 1 / -1;\n}\n.m-1 {\n margin: 0.25rem;\n}\n.mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.-mb-px {\n margin-bottom: -1px;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mb-3 {\n margin-bottom: 0.75rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n.mb-8 {\n margin-bottom: 2rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-1 {\n margin-left: 0.25rem;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-3 {\n margin-left: 0.75rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-72 {\n margin-left: 18rem;\n}\n.ml-8 {\n margin-left: 2rem;\n}\n.mr-1 {\n margin-right: 0.25rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mr-3 {\n margin-right: 0.75rem;\n}\n.mr-4 {\n margin-right: 1rem;\n}\n.mt-0\\\\.5 {\n margin-top: 0.125rem;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.mt-6 {\n margin-top: 1.5rem;\n}\n.mt-auto {\n margin-top: auto;\n}\n.line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n}\n.block {\n display: block;\n}\n.inline-block {\n display: inline-block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.h-16 {\n height: 4rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-20 {\n height: 5rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-48 {\n height: 12rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-64 {\n height: 16rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-\\\\[calc\\\\(100vh-4rem\\\\)\\\\] {\n height: calc(100vh - 4rem);\n}\n.h-full {\n height: 100%;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-60 {\n max-height: 15rem;\n}\n.min-h-0 {\n min-height: 0px;\n}\n.min-h-\\\\[40px\\\\] {\n min-height: 40px;\n}\n.min-h-full {\n min-height: 100%;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-12 {\n width: 3rem;\n}\n.w-16 {\n width: 4rem;\n}\n.w-20 {\n width: 5rem;\n}\n.w-28 {\n width: 7rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-32 {\n width: 8rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-40 {\n width: 10rem;\n}\n.w-48 {\n width: 12rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-6 {\n width: 1.5rem;\n}\n.w-8 {\n width: 2rem;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.max-w-5xl {\n max-width: 64rem;\n}\n.max-w-6xl {\n max-width: 72rem;\n}\n.max-w-full {\n max-width: 100%;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-sm {\n max-width: 24rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.origin-top-right {\n transform-origin: top right;\n}\n.-translate-y-1\\\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-0\\\\.5 {\n --tw-translate-x: 0.125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-5 {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-6 {\n --tw-translate-x: 1.5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-0\\\\.5 {\n --tw-translate-y: 0.125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-100 {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-95 {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.resize {\n resize: both;\n}\n.appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-6 {\n gap: 1.5rem;\n}\n.space-x-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0px * var(--tw-space-x-reverse));\n margin-left: calc(0px * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-8 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(2rem * var(--tw-space-x-reverse));\n margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-3 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.space-y-8 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(2rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-pre-line {\n white-space: pre-line;\n}\n.break-words {\n overflow-wrap: break-word;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.rounded-md {\n border-radius: 0.375rem;\n}\n.rounded-t-lg {\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l-4 {\n border-left-width: 4px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-none {\n border-style: none;\n}\n.border-blue-200 {\n --tw-border-opacity: 1;\n border-color: rgb(191 219 254 / var(--tw-border-opacity));\n}\n.border-blue-300 {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n.border-blue-400 {\n --tw-border-opacity: 1;\n border-color: rgb(96 165 250 / var(--tw-border-opacity));\n}\n.border-blue-500 {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.border-blue-700 {\n --tw-border-opacity: 1;\n border-color: rgb(29 78 216 / var(--tw-border-opacity));\n}\n.border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(229 231 235 / var(--tw-border-opacity));\n}\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity));\n}\n.border-green-200 {\n --tw-border-opacity: 1;\n border-color: rgb(187 247 208 / var(--tw-border-opacity));\n}\n.border-green-500 {\n --tw-border-opacity: 1;\n border-color: rgb(34 197 94 / var(--tw-border-opacity));\n}\n.border-red-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 202 202 / var(--tw-border-opacity));\n}\n.border-red-300 {\n --tw-border-opacity: 1;\n border-color: rgb(252 165 165 / var(--tw-border-opacity));\n}\n.border-red-700 {\n --tw-border-opacity: 1;\n border-color: rgb(185 28 28 / var(--tw-border-opacity));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-white {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n.border-yellow-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 240 138 / var(--tw-border-opacity));\n}\n.bg-black {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n.bg-blue-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity));\n}\n.bg-blue-100\\\\/50 {\n background-color: rgb(219 234 254 / 0.5);\n}\n.bg-blue-400 {\n --tw-bg-opacity: 1;\n background-color: rgb(96 165 250 / var(--tw-bg-opacity));\n}\n.bg-blue-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity));\n}\n.bg-blue-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n.bg-blue-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-400 {\n --tw-bg-opacity: 1;\n background-color: rgb(156 163 175 / var(--tw-bg-opacity));\n}\n.bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity));\n}\n.bg-green-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(240 253 244 / var(--tw-bg-opacity));\n}\n.bg-green-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(34 197 94 / var(--tw-bg-opacity));\n}\n.bg-green-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(22 163 74 / var(--tw-bg-opacity));\n}\n.bg-purple-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 232 255 / var(--tw-bg-opacity));\n}\n.bg-purple-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(147 51 234 / var(--tw-bg-opacity));\n}\n.bg-red-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 242 242 / var(--tw-bg-opacity));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-red-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-yellow-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 252 232 / var(--tw-bg-opacity));\n}\n.bg-yellow-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(234 179 8 / var(--tw-bg-opacity));\n}\n.bg-opacity-40 {\n --tw-bg-opacity: 0.4;\n}\n.bg-opacity-50 {\n --tw-bg-opacity: 0.5;\n}\n.bg-opacity-80 {\n --tw-bg-opacity: 0.8;\n}\n.object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-8 {\n padding: 2rem;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.py-0\\\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.pb-3 {\n padding-bottom: 0.75rem;\n}\n.pr-4 {\n padding-right: 1rem;\n}\n.pt-24 {\n padding-top: 6rem;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.pt-8 {\n padding-top: 2rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-5xl {\n font-size: 3rem;\n line-height: 1;\n}\n.text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-light {\n font-weight: 300;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.capitalize {\n text-transform: capitalize;\n}\n.leading-relaxed {\n line-height: 1.625;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n.text-blue-400 {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n.text-blue-500 {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n.text-blue-600 {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n}\n.text-blue-700 {\n --tw-text-opacity: 1;\n color: rgb(29 78 216 / var(--tw-text-opacity));\n}\n.text-blue-800 {\n --tw-text-opacity: 1;\n color: rgb(30 64 175 / var(--tw-text-opacity));\n}\n.text-gray-300 {\n --tw-text-opacity: 1;\n color: rgb(209 213 219 / var(--tw-text-opacity));\n}\n.text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n.text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n.text-gray-700 {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n.text-gray-800 {\n --tw-text-opacity: 1;\n color: rgb(31 41 55 / var(--tw-text-opacity));\n}\n.text-gray-900 {\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity));\n}\n.text-green-400 {\n --tw-text-opacity: 1;\n color: rgb(74 222 128 / var(--tw-text-opacity));\n}\n.text-green-500 {\n --tw-text-opacity: 1;\n color: rgb(34 197 94 / var(--tw-text-opacity));\n}\n.text-green-800 {\n --tw-text-opacity: 1;\n color: rgb(22 101 52 / var(--tw-text-opacity));\n}\n.text-purple-500 {\n --tw-text-opacity: 1;\n color: rgb(168 85 247 / var(--tw-text-opacity));\n}\n.text-purple-800 {\n --tw-text-opacity: 1;\n color: rgb(107 33 168 / var(--tw-text-opacity));\n}\n.text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity));\n}\n.text-red-600 {\n --tw-text-opacity: 1;\n color: rgb(220 38 38 / var(--tw-text-opacity));\n}\n.text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity));\n}\n.text-red-800 {\n --tw-text-opacity: 1;\n color: rgb(153 27 27 / var(--tw-text-opacity));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.text-yellow-500 {\n --tw-text-opacity: 1;\n color: rgb(234 179 8 / var(--tw-text-opacity));\n}\n.text-yellow-800 {\n --tw-text-opacity: 1;\n color: rgb(133 77 14 / var(--tw-text-opacity));\n}\n.no-underline {\n text-decoration-line: none;\n}\n.placeholder-gray-400::-moz-placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(156 163 175 / var(--tw-placeholder-opacity));\n}\n.placeholder-gray-400::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(156 163 175 / var(--tw-placeholder-opacity));\n}\n.placeholder-gray-500::-moz-placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(107 114 128 / var(--tw-placeholder-opacity));\n}\n.placeholder-gray-500::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(107 114 128 / var(--tw-placeholder-opacity));\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-20 {\n opacity: 0.2;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.ring-1 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-black {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity));\n}\n.ring-blue-100 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(219 234 254 / var(--tw-ring-opacity));\n}\n.ring-opacity-5 {\n --tw-ring-opacity: 0.05;\n}\n.drop-shadow-lg {\n --tw-drop-shadow: drop-shadow(0 10px 8px rgb(0 0 0 / 0.04)) drop-shadow(0 4px 3px rgb(0 0 0 / 0.1));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.spinner {\n border: 4px solid rgba(0, 0, 0, 0.1);\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border-left-color: #09f;\n animation: spin 1s ease infinite;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\ninput:focus, select:focus, textarea:focus {\n outline: none;\n box-shadow: none;\n}\n\n.hover\\\\:scale-110:hover {\n --tw-scale-x: 1.1;\n --tw-scale-y: 1.1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.hover\\\\:border-blue-300:hover {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n\n.hover\\\\:border-gray-300:hover {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity));\n}\n\n.hover\\\\:bg-blue-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-blue-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-blue-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-blue-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(29 78 216 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-200:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-400:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(156 163 175 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-green-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(21 128 61 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-purple-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(126 34 206 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-red-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(254 226 226 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-red-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-opacity-70:hover {\n --tw-bg-opacity: 0.7;\n}\n\n.hover\\\\:text-black:hover {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-blue-600:hover {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-blue-700:hover {\n --tw-text-opacity: 1;\n color: rgb(29 78 216 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-gray-800:hover {\n --tw-text-opacity: 1;\n color: rgb(31 41 55 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-red-500:hover {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-red-700:hover {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity));\n}\n\n.hover\\\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\\\:border-blue-300:focus {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n\n.focus\\\\:border-blue-500:focus {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n\n.focus\\\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.focus\\\\:ring:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\\\:ring-0:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\\\:ring-blue-200:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity));\n}\n\n.focus\\\\:ring-blue-500:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));\n}\n\n.focus\\\\:ring-opacity-50:focus {\n --tw-ring-opacity: 0.5;\n}\n\n.focus\\\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.disabled\\\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\\\:opacity-50:disabled {\n opacity: 0.5;\n}\n\n.dark\\\\:border-blue-600:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(37 99 235 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-blue-700:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(29 78 216 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-blue-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(30 64 175 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-600:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(75 85 99 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-700:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(55 65 81 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(31 41 55 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-gray-900:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(17 24 39 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-green-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(22 101 52 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-red-600:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(220 38 38 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-red-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(153 27 27 / var(--tw-border-opacity));\n}\n\n.dark\\\\:border-yellow-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(133 77 14 / var(--tw-border-opacity));\n}\n\n.dark\\\\:bg-blue-500:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-blue-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(29 78 216 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-blue-800:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 64 175 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-blue-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 58 138 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-blue-900\\\\/20:is(.dark *) {\n background-color: rgb(30 58 138 / 0.2);\n}\n\n.dark\\\\:bg-blue-900\\\\/30:is(.dark *) {\n background-color: rgb(30 58 138 / 0.3);\n}\n\n.dark\\\\:bg-blue-900\\\\/50:is(.dark *) {\n background-color: rgb(30 58 138 / 0.5);\n}\n\n.dark\\\\:bg-gray-600:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(75 85 99 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-gray-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-gray-800:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-gray-800\\\\/50:is(.dark *) {\n background-color: rgb(31 41 55 / 0.5);\n}\n\n.dark\\\\:bg-gray-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-green-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(21 128 61 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-green-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(20 83 45 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-purple-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(126 34 206 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-purple-800:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(107 33 168 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-500:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(127 29 29 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:bg-red-900\\\\/50:is(.dark *) {\n background-color: rgb(127 29 29 / 0.5);\n}\n\n.dark\\\\:bg-transparent:is(.dark *) {\n background-color: transparent;\n}\n\n.dark\\\\:bg-yellow-900\\\\/30:is(.dark *) {\n background-color: rgb(113 63 18 / 0.3);\n}\n\n.dark\\\\:text-blue-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(219 234 254 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-blue-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(191 219 254 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-blue-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(147 197 253 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-blue-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-blue-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 231 235 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(209 213 219 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-gray-600:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-green-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(187 247 208 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-purple-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 232 255 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-red-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(254 202 202 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-red-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(252 165 165 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-red-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-white:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.dark\\\\:text-yellow-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(254 240 138 / var(--tw-text-opacity));\n}\n\n.dark\\\\:placeholder-gray-400:is(.dark *)::-moz-placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(156 163 175 / var(--tw-placeholder-opacity));\n}\n\n.dark\\\\:placeholder-gray-400:is(.dark *)::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(156 163 175 / var(--tw-placeholder-opacity));\n}\n\n.dark\\\\:placeholder-gray-600:is(.dark *)::-moz-placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(75 85 99 / var(--tw-placeholder-opacity));\n}\n\n.dark\\\\:placeholder-gray-600:is(.dark *)::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(75 85 99 / var(--tw-placeholder-opacity));\n}\n\n.dark\\\\:ring-blue-900\\\\/50:is(.dark *) {\n --tw-ring-color: rgb(30 58 138 / 0.5);\n}\n\n.dark\\\\:hover\\\\:border-blue-600:hover:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(37 99 235 / var(--tw-border-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-blue-600:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-blue-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 64 175 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-blue-800\\\\/50:hover:is(.dark *) {\n background-color: rgb(30 64 175 / 0.5);\n}\n\n.dark\\\\:hover\\\\:bg-blue-900:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 58 138 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-blue-900\\\\/30:hover:is(.dark *) {\n background-color: rgb(30 58 138 / 0.3);\n}\n\n.dark\\\\:hover\\\\:bg-gray-600:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(75 85 99 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-gray-700:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-green-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(22 101 52 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-purple-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(107 33 168 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-red-600:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-red-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(153 27 27 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:bg-red-800\\\\/50:hover:is(.dark *) {\n background-color: rgb(153 27 27 / 0.5);\n}\n\n.dark\\\\:hover\\\\:bg-red-900:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(127 29 29 / var(--tw-bg-opacity));\n}\n\n.dark\\\\:hover\\\\:text-blue-300:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(147 197 253 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:text-gray-300:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(209 213 219 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:text-gray-400:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:text-red-300:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(252 165 165 / var(--tw-text-opacity));\n}\n\n.dark\\\\:hover\\\\:text-white:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.dark\\\\:focus\\\\:ring-blue-800:focus:is(.dark *) {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));\n}\n\n@media (min-width: 640px) {\n\n .sm\\\\:left-auto {\n left: auto;\n }\n\n .sm\\\\:right-0 {\n right: 0px;\n }\n\n .sm\\\\:mb-0 {\n margin-bottom: 0px;\n }\n\n .sm\\\\:h-auto {\n height: auto;\n }\n\n .sm\\\\:w-56 {\n width: 14rem;\n }\n\n .sm\\\\:w-72 {\n width: 18rem;\n }\n\n .sm\\\\:max-w-2xl {\n max-width: 42rem;\n }\n\n .sm\\\\:max-w-3xl {\n max-width: 48rem;\n }\n\n .sm\\\\:max-w-md {\n max-width: 28rem;\n }\n\n .sm\\\\:grid-flow-col {\n grid-auto-flow: column;\n }\n\n .sm\\\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .sm\\\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .sm\\\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\\\:items-center {\n align-items: center;\n }\n\n .sm\\\\:rounded-lg {\n border-radius: 0.5rem;\n }\n\n .sm\\\\:p-6 {\n padding: 1.5rem;\n }\n\n .sm\\\\:px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n\n .sm\\\\:shadow-2xl {\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n }\n}\n\n@media (min-width: 768px) {\n\n .md\\\\:mb-0 {\n margin-bottom: 0px;\n }\n\n .md\\\\:block {\n display: block;\n }\n\n .md\\\\:flex {\n display: flex;\n }\n\n .md\\\\:hidden {\n display: none;\n }\n\n .md\\\\:w-auto {\n width: auto;\n }\n\n .md\\\\:max-w-3xl {\n max-width: 48rem;\n }\n\n .md\\\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .md\\\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .md\\\\:flex-row {\n flex-direction: row;\n }\n\n .md\\\\:items-center {\n align-items: center;\n }\n\n .md\\\\:justify-end {\n justify-content: flex-end;\n }\n\n .md\\\\:justify-between {\n justify-content: space-between;\n }\n\n .md\\\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .md\\\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .md\\\\:px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n\n .md\\\\:px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n\n .md\\\\:text-5xl {\n font-size: 3rem;\n line-height: 1;\n }\n}\n\n@media (min-width: 1024px) {\n\n .lg\\\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .lg\\\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n\n .lg\\\\:p-8 {\n padding: 2rem;\n }\n\n .lg\\\\:px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n\n .lg\\\\:px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n}\n\n@media (min-width: 1280px) {\n\n .xl\\\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n}\n\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://tududi/./frontend/styles/tailwind.css?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js");
/***/ }),
@@ -4277,7 +4299,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/******/
/******/ /* webpack/runtime/getFullHash */
/******/ (() => {
-/******/ __webpack_require__.h = () => ("6af1faf4fe30e885209a")
+/******/ __webpack_require__.h = () => ("fb290884cd44ecceda60")
/******/ })();
/******/
/******/ /* webpack/runtime/global */
diff --git a/frontend/Layout.tsx b/frontend/Layout.tsx
index 87cb391..eed8503 100644
--- a/frontend/Layout.tsx
+++ b/frontend/Layout.tsx
@@ -254,6 +254,7 @@ const Layout: React.FC = ({
}
};
+
const handleSaveArea = async (areaData: Partial) => {
try {
if (areaData.id) {
diff --git a/frontend/components/Inbox/InboxItems.tsx b/frontend/components/Inbox/InboxItems.tsx
index e53b1f4..8d03339 100644
--- a/frontend/components/Inbox/InboxItems.tsx
+++ b/frontend/components/Inbox/InboxItems.tsx
@@ -229,6 +229,7 @@ const InboxItems: React.FC = () => {
showErrorToast(t('project.createError'));
}
};
+
const handleSaveNote = async (note: Note) => {
try {
diff --git a/frontend/components/Navbar.tsx b/frontend/components/Navbar.tsx
index 628d4cb..05d06b2 100644
--- a/frontend/components/Navbar.tsx
+++ b/frontend/components/Navbar.tsx
@@ -114,7 +114,7 @@ const Navbar: React.FC = ({
className="block px-4 py-2 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700"
onClick={() => setIsDropdownOpen(false)}
>
- {t('nav.profile', 'Profile Settings')}
+ {t('navigation.profileSettings', 'Profile Settings')}
)}
diff --git a/frontend/components/Profile/ProfileSettings.tsx b/frontend/components/Profile/ProfileSettings.tsx
index b67bb91..64885af 100644
--- a/frontend/components/Profile/ProfileSettings.tsx
+++ b/frontend/components/Profile/ProfileSettings.tsx
@@ -21,6 +21,8 @@ interface Profile {
telegram_chat_id: string | null;
task_summary_enabled: boolean;
task_summary_frequency: string;
+ task_intelligence_enabled: boolean;
+ auto_suggest_next_actions_enabled: boolean;
}
interface SchedulerStatus {
@@ -60,6 +62,8 @@ const ProfileSettings: React.FC = ({ currentUser, isDarkMo
const { t, i18n } = useTranslation();
const { showSuccessToast, showErrorToast } = useToast();
+ const [activeTab, setActiveTab] = useState('general');
+
const [profile, setProfile] = useState(null);
const [formData, setFormData] = useState>({
appearance: isDarkMode ? 'dark' : 'light',
@@ -67,6 +71,10 @@ const ProfileSettings: React.FC = ({ currentUser, isDarkMo
timezone: 'UTC',
avatar_image: '',
telegram_bot_token: '',
+ task_intelligence_enabled: true,
+ task_summary_enabled: false,
+ task_summary_frequency: 'daily',
+ auto_suggest_next_actions_enabled: true,
});
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
@@ -135,17 +143,6 @@ const ProfileSettings: React.FC = ({ currentUser, isDarkMo
const handleChange = (e: ChangeEvent) => {
const { name, value } = e.target;
setFormData(prev => ({ ...prev, [name]: value }));
-
- if (name === 'appearance' && toggleDarkMode) {
- const shouldBeDark = value === 'dark';
- if (shouldBeDark !== isDarkMode) {
- toggleDarkMode();
- }
- }
-
- if (name === 'language' && value !== i18n.language) {
- handleLanguageChange(value);
- }
};
const handleLanguageChange = async (value: string) => {
@@ -208,11 +205,15 @@ const ProfileSettings: React.FC = ({ currentUser, isDarkMo
const data = await response.json();
setProfile(data);
setFormData({
- appearance: isDarkMode ? 'dark' : 'light', // Use current app state instead of saved preference
+ appearance: data.appearance || (isDarkMode ? 'dark' : 'light'),
language: data.language || 'en',
timezone: data.timezone || 'UTC',
avatar_image: data.avatar_image || '',
telegram_bot_token: data.telegram_bot_token || '',
+ task_intelligence_enabled: data.task_intelligence_enabled !== undefined ? data.task_intelligence_enabled : true,
+ task_summary_enabled: data.task_summary_enabled !== undefined ? data.task_summary_enabled : false,
+ task_summary_frequency: data.task_summary_frequency || 'daily',
+ auto_suggest_next_actions_enabled: data.auto_suggest_next_actions_enabled !== undefined ? data.auto_suggest_next_actions_enabled : true,
});
setTelegramBotToken(data.telegram_bot_token || '');
setTelegramChatId(data.telegram_chat_id || '');
@@ -409,8 +410,28 @@ const ProfileSettings: React.FC = ({ currentUser, isDarkMo
const updatedProfile: Profile = await response.json();
setProfile(updatedProfile);
+ // Update formData to reflect the saved changes, preserving any fields not in response
+ setFormData(prev => ({
+ ...prev,
+ appearance: updatedProfile.appearance || prev.appearance || 'light',
+ language: updatedProfile.language || prev.language || 'en',
+ timezone: updatedProfile.timezone || prev.timezone || 'UTC',
+ avatar_image: updatedProfile.avatar_image !== undefined ? updatedProfile.avatar_image : prev.avatar_image || '',
+ telegram_bot_token: updatedProfile.telegram_bot_token !== undefined ? updatedProfile.telegram_bot_token : prev.telegram_bot_token || '',
+ task_intelligence_enabled: updatedProfile.task_intelligence_enabled !== undefined ? updatedProfile.task_intelligence_enabled : prev.task_intelligence_enabled !== undefined ? prev.task_intelligence_enabled : true,
+ task_summary_enabled: updatedProfile.task_summary_enabled !== undefined ? updatedProfile.task_summary_enabled : prev.task_summary_enabled !== undefined ? prev.task_summary_enabled : false,
+ task_summary_frequency: updatedProfile.task_summary_frequency || prev.task_summary_frequency || 'daily',
+ 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,
+ }));
+
+ // Apply appearance change after save
+ if (updatedProfile.appearance !== (isDarkMode ? 'dark' : 'light') && toggleDarkMode) {
+ toggleDarkMode();
+ }
+
+ // Apply language change after save
if (updatedProfile.language !== i18n.language) {
- await i18n.changeLanguage(updatedProfile.language);
+ await handleLanguageChange(updatedProfile.language);
}
setSuccess(t('profile.successMessage'));
@@ -437,351 +458,497 @@ const ProfileSettings: React.FC = ({ currentUser, isDarkMo
);
}
+ const tabs = [
+ { id: 'general', name: t('profile.tabs.general', 'General'), icon: 'user' },
+ { id: 'telegram', name: t('profile.tabs.telegram', 'Telegram'), icon: 'chat' },
+ { id: 'ai', name: t('profile.tabs.ai', 'AI Features'), icon: 'sparkles' },
+ ];
+
+ const renderTabIcon = (iconType: string) => {
+ switch (iconType) {
+ case 'user':
+ return (
+
+ );
+ case 'chat':
+ return (
+
+ );
+ case 'sparkles':
+ return (
+
+ );
+ default:
+ return null;
+ }
+ };
+
return (
{t('profile.title')}
+ {/* Navigation Tabs */}
+
+
+
+
+
+
{success &&
{success}
}
{error &&
{error}
}
-