@impakers/debug 1.4.18 → 1.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.js CHANGED
@@ -2295,6 +2295,17 @@ async function uploadFile(endpoint, file, context, taskId) {
2295
2295
  }
2296
2296
  return res.json();
2297
2297
  }
2298
+ async function fetchHistory(endpoint, options = {}) {
2299
+ const params = new URLSearchParams();
2300
+ if (options.since) params.set("since", options.since);
2301
+ if (options.date) params.set("date", options.date);
2302
+ if (options.limit) params.set("limit", String(options.limit));
2303
+ const qs = params.toString();
2304
+ const url = `${endpoint}/history${qs ? `?${qs}` : ""}`;
2305
+ const res = await apiFetch(url);
2306
+ const data = await res.json();
2307
+ return data.events || [];
2308
+ }
2298
2309
 
2299
2310
  // src/core/sourcemap-resolver.ts
2300
2311
  var import_trace_mapping = require("@jridgewell/trace-mapping");
@@ -2470,9 +2481,32 @@ function PendingMarker({ x, y, accentColor }) {
2470
2481
  // src/components/comment-thread/index.tsx
2471
2482
  var import_react3 = require("react");
2472
2483
 
2484
+ // src/components/loading-spinner/styles.module.scss
2485
+ var css3 = "@keyframes styles-module__spin___h0C6p {\n to {\n transform: rotate(360deg);\n }\n}\n.styles-module__container___YKn1h {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px 16px;\n}\n\n.styles-module__spinner___4ELZK {\n width: 20px;\n height: 20px;\n border: 2px solid #e5e7eb;\n border-top-color: #6b7280;\n border-radius: 50%;\n animation: styles-module__spin___h0C6p 0.6s linear infinite;\n}\n\n.styles-module__message___70Ayy {\n font-size: 12px;\n color: #9ca3af;\n}";
2486
+ var classNames3 = { "container": "styles-module__container___YKn1h", "spinner": "styles-module__spinner___4ELZK", "spin": "styles-module__spin___h0C6p", "message": "styles-module__message___70Ayy" };
2487
+ if (typeof document !== "undefined") {
2488
+ let style = document.getElementById("impakers-debug-styles-loading-spinner-styles");
2489
+ if (!style) {
2490
+ style = document.createElement("style");
2491
+ style.id = "impakers-debug-styles-loading-spinner-styles";
2492
+ document.head.appendChild(style);
2493
+ }
2494
+ style.textContent = css3;
2495
+ }
2496
+ var styles_module_default3 = classNames3;
2497
+
2498
+ // src/components/loading-spinner/index.tsx
2499
+ var import_jsx_runtime4 = require("react/jsx-runtime");
2500
+ function LoadingSpinner({ message = "\uB85C\uB529 \uC911..." }) {
2501
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.container, children: [
2502
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.spinner }),
2503
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.message, children: message })
2504
+ ] });
2505
+ }
2506
+
2473
2507
  // src/components/comment-thread/styles.module.scss
2474
- var css3 = '@keyframes styles-module__threadIn___pBTFZ {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__threadOut___-ccKh {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.96);\n }\n}\n.styles-module__thread___ua2EO {\n position: fixed;\n width: 340px;\n max-height: min(480px, 100vh - 40px);\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);\n z-index: 100002;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n font-size: 13px;\n color: #1a1a1a;\n animation: styles-module__threadIn___pBTFZ 0.15s ease-out;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__thread___ua2EO.styles-module__exiting___RIPeX {\n animation: styles-module__threadOut___-ccKh 0.12s ease-in forwards;\n pointer-events: none;\n}\n\n.styles-module__header___GiEBq {\n padding: 14px 16px 10px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n flex-shrink: 0;\n}\n\n.styles-module__avatar___JElAd {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__headerInfo___E8809 {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__headerTop___eDiCd {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__authorName___T1BfB {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__timestamp___WusBf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__headerActions___8FsMY {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__headerAction___Tinmq {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__headerAction___Tinmq:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__headerAction___Tinmq svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__title___qkfqY {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n word-break: break-word;\n}\n\n.styles-module__commentsList___kYqAR {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__comment___pW3IO {\n padding: 10px 16px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n.styles-module__comment___pW3IO:hover {\n background: #f9fafb;\n}\n.styles-module__comment___pW3IO:hover .styles-module__commentActions___wO0fs {\n opacity: 1;\n}\n\n.styles-module__commentHighlight___EiTmx {\n background: #eff6ff;\n border-left: 2px solid #3b82f6;\n padding-left: 14px;\n}\n\n.styles-module__commentContent___RObGr {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentTop___BbTF3 {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthor___tBjpl {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___0OLrz {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentActions___wO0fs {\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.12s;\n}\n\n.styles-module__commentText___ldy2V {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.styles-module__screenshot___jUqau {\n margin-top: 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-width: 200px;\n}\n.styles-module__screenshot___jUqau img {\n width: 100%;\n height: auto;\n display: block;\n}\n.styles-module__screenshot___jUqau .styles-module__screenshotBadge___roEqY {\n position: absolute;\n top: 6px;\n right: 6px;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 500;\n}\n\n.styles-module__fileCard___-iOro {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n text-decoration: none;\n color: inherit;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 200px;\n}\n.styles-module__fileCard___-iOro:hover {\n background: #f3f4f6;\n}\n\n.styles-module__fileIcon___dNJMT {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: #e5e7eb;\n color: #374151;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n flex-shrink: 0;\n letter-spacing: 0.5px;\n}\n\n.styles-module__fileInfo___dVrLV {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__fileCardName___SHOj- {\n font-size: 12px;\n font-weight: 500;\n color: #1a1a1a;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__fileCardSize___W53JL {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__pendingFile___-OSRs {\n position: relative;\n margin: 0 16px 8px;\n padding: 8px 10px;\n padding-right: 30px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.styles-module__divider___kDjxN {\n height: 1px;\n background: #f3f4f6;\n margin: 0;\n flex-shrink: 0;\n}\n\n.styles-module__pendingImage___gHaF3 {\n position: relative;\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 120px;\n flex-shrink: 0;\n}\n.styles-module__pendingImage___gHaF3 img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n max-height: 120px;\n}\n\n.styles-module__pendingRemove___FRL4h {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n padding: 0;\n}\n.styles-module__pendingRemove___FRL4h:hover {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.styles-module__replyArea___VQn9b {\n padding: 10px 16px 8px;\n border-top: 1px solid #f3f4f6;\n flex-shrink: 0;\n}\n\n.styles-module__replyInput___uZNBW {\n width: 100%;\n border: none;\n outline: none;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n padding: 0;\n min-height: 36px;\n max-height: 120px;\n line-height: 1.55;\n transition: height 0.1s ease;\n}\n.styles-module__replyInput___uZNBW::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__replyToolbar___fTFJU {\n display: flex;\n align-items: center;\n padding: 4px 16px 10px;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.styles-module__replyTool___Ho-Rx {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replyTool___Ho-Rx:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__replyTool___Ho-Rx svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__replySend___e0VSb {\n margin-left: auto;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replySend___e0VSb:hover {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb.styles-module__active___R--Jj {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__empty___XXGiw {\n padding: 24px 16px;\n text-align: center;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__statusBadge___el8ml {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 10px;\n margin-left: auto;\n}\n.styles-module__statusBadge___el8ml.styles-module__todo___rUWBr {\n background: #fef3c7;\n color: #92400e;\n}\n.styles-module__statusBadge___el8ml.styles-module__inProgress___HEWgU {\n background: #dbeafe;\n color: #1e40af;\n}\n.styles-module__statusBadge___el8ml.styles-module__done___zC12n {\n background: #dcfce7;\n color: #166534;\n}\n\n.styles-module__lightbox___KoWEF {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n.styles-module__lightbox___KoWEF img {\n max-width: 90vw;\n max-height: 90vh;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n\n.styles-module__lightboxClose___tGZlm {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n border: none;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__lightboxClose___tGZlm:hover {\n background: rgba(255, 255, 255, 0.25);\n}';
2475
- var classNames3 = { "thread": "styles-module__thread___ua2EO", "threadIn": "styles-module__threadIn___pBTFZ", "exiting": "styles-module__exiting___RIPeX", "threadOut": "styles-module__threadOut___-ccKh", "header": "styles-module__header___GiEBq", "avatar": "styles-module__avatar___JElAd", "headerInfo": "styles-module__headerInfo___E8809", "headerTop": "styles-module__headerTop___eDiCd", "authorName": "styles-module__authorName___T1BfB", "timestamp": "styles-module__timestamp___WusBf", "headerActions": "styles-module__headerActions___8FsMY", "headerAction": "styles-module__headerAction___Tinmq", "title": "styles-module__title___qkfqY", "commentsList": "styles-module__commentsList___kYqAR", "comment": "styles-module__comment___pW3IO", "commentActions": "styles-module__commentActions___wO0fs", "commentHighlight": "styles-module__commentHighlight___EiTmx", "commentContent": "styles-module__commentContent___RObGr", "commentTop": "styles-module__commentTop___BbTF3", "commentAuthor": "styles-module__commentAuthor___tBjpl", "commentTime": "styles-module__commentTime___0OLrz", "commentText": "styles-module__commentText___ldy2V", "screenshot": "styles-module__screenshot___jUqau", "screenshotBadge": "styles-module__screenshotBadge___roEqY", "fileCard": "styles-module__fileCard___-iOro", "fileIcon": "styles-module__fileIcon___dNJMT", "fileInfo": "styles-module__fileInfo___dVrLV", "fileCardName": "styles-module__fileCardName___SHOj-", "fileCardSize": "styles-module__fileCardSize___W53JL", "pendingFile": "styles-module__pendingFile___-OSRs", "divider": "styles-module__divider___kDjxN", "pendingImage": "styles-module__pendingImage___gHaF3", "pendingRemove": "styles-module__pendingRemove___FRL4h", "replyArea": "styles-module__replyArea___VQn9b", "replyInput": "styles-module__replyInput___uZNBW", "replyToolbar": "styles-module__replyToolbar___fTFJU", "replyTool": "styles-module__replyTool___Ho-Rx", "replySend": "styles-module__replySend___e0VSb", "active": "styles-module__active___R--Jj", "empty": "styles-module__empty___XXGiw", "statusBadge": "styles-module__statusBadge___el8ml", "todo": "styles-module__todo___rUWBr", "inProgress": "styles-module__inProgress___HEWgU", "done": "styles-module__done___zC12n", "lightbox": "styles-module__lightbox___KoWEF", "lightboxClose": "styles-module__lightboxClose___tGZlm" };
2508
+ var css4 = '@keyframes styles-module__threadIn___pBTFZ {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__threadOut___-ccKh {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.96);\n }\n}\n.styles-module__thread___ua2EO {\n position: fixed;\n width: 340px;\n max-height: min(480px, 100vh - 40px);\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);\n z-index: 100002;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n font-size: 13px;\n color: #1a1a1a;\n animation: styles-module__threadIn___pBTFZ 0.15s ease-out;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__thread___ua2EO.styles-module__exiting___RIPeX {\n animation: styles-module__threadOut___-ccKh 0.12s ease-in forwards;\n pointer-events: none;\n}\n\n.styles-module__header___GiEBq {\n padding: 14px 16px 10px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n flex-shrink: 0;\n background: #f5f5f5;\n}\n\n.styles-module__avatar___JElAd {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__headerInfo___E8809 {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__headerTop___eDiCd {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__authorName___T1BfB {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__timestamp___WusBf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__headerActions___8FsMY {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__headerAction___Tinmq {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__headerAction___Tinmq:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__headerAction___Tinmq svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__title___qkfqY {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n word-break: break-word;\n}\n\n.styles-module__commentsList___kYqAR {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__comment___pW3IO {\n padding: 10px 16px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n.styles-module__comment___pW3IO:hover {\n background: #f9fafb;\n}\n.styles-module__comment___pW3IO:hover .styles-module__commentActions___wO0fs {\n opacity: 1;\n}\n\n.styles-module__commentHighlight___EiTmx {\n background: #eff6ff;\n border-left: 2px solid #3b82f6;\n padding-left: 14px;\n}\n\n.styles-module__commentContent___RObGr {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentTop___BbTF3 {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthor___tBjpl {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___0OLrz {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentActions___wO0fs {\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.12s;\n}\n\n.styles-module__commentText___ldy2V {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.styles-module__screenshot___jUqau {\n margin-top: 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-width: 200px;\n}\n.styles-module__screenshot___jUqau img {\n width: 100%;\n height: auto;\n display: block;\n}\n.styles-module__screenshot___jUqau .styles-module__screenshotBadge___roEqY {\n position: absolute;\n top: 6px;\n right: 6px;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 500;\n}\n\n.styles-module__fileCard___-iOro {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n text-decoration: none;\n color: inherit;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 200px;\n}\n.styles-module__fileCard___-iOro:hover {\n background: #f3f4f6;\n}\n\n.styles-module__fileIcon___dNJMT {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: #e5e7eb;\n color: #374151;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n flex-shrink: 0;\n letter-spacing: 0.5px;\n}\n\n.styles-module__fileInfo___dVrLV {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__fileCardName___SHOj- {\n font-size: 12px;\n font-weight: 500;\n color: #1a1a1a;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__fileCardSize___W53JL {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__pendingFile___-OSRs {\n position: relative;\n margin: 0 16px 8px;\n padding: 8px 10px;\n padding-right: 30px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.styles-module__divider___kDjxN {\n height: 1px;\n background: #f3f4f6;\n margin: 0;\n flex-shrink: 0;\n}\n\n.styles-module__pendingImage___gHaF3 {\n position: relative;\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 120px;\n flex-shrink: 0;\n}\n.styles-module__pendingImage___gHaF3 img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n max-height: 120px;\n}\n\n.styles-module__pendingRemove___FRL4h {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n padding: 0;\n}\n.styles-module__pendingRemove___FRL4h:hover {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.styles-module__replyArea___VQn9b {\n padding: 10px 16px 8px;\n border-top: 1px solid #f3f4f6;\n flex-shrink: 0;\n}\n\n.styles-module__replyInput___uZNBW {\n width: 100%;\n border: none;\n outline: none;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n padding: 0;\n min-height: 36px;\n max-height: 120px;\n line-height: 1.55;\n transition: height 0.1s ease;\n}\n.styles-module__replyInput___uZNBW::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__replyToolbar___fTFJU {\n display: flex;\n align-items: center;\n padding: 4px 16px 10px;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.styles-module__replyTool___Ho-Rx {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replyTool___Ho-Rx:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__replyTool___Ho-Rx svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__replySend___e0VSb {\n margin-left: auto;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replySend___e0VSb:hover {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb.styles-module__active___R--Jj {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__empty___XXGiw {\n padding: 24px 16px;\n text-align: center;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__statusBadge___el8ml {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 10px;\n margin-left: auto;\n}\n.styles-module__statusBadge___el8ml.styles-module__todo___rUWBr {\n background: #fef3c7;\n color: #92400e;\n}\n.styles-module__statusBadge___el8ml.styles-module__inProgress___HEWgU {\n background: #dbeafe;\n color: #1e40af;\n}\n.styles-module__statusBadge___el8ml.styles-module__done___zC12n {\n background: #dcfce7;\n color: #166534;\n}\n\n.styles-module__lightbox___KoWEF {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n.styles-module__lightbox___KoWEF img {\n max-width: 90vw;\n max-height: 90vh;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n\n.styles-module__lightboxClose___tGZlm {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n border: none;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__lightboxClose___tGZlm:hover {\n background: rgba(255, 255, 255, 0.25);\n}';
2509
+ var classNames4 = { "thread": "styles-module__thread___ua2EO", "threadIn": "styles-module__threadIn___pBTFZ", "exiting": "styles-module__exiting___RIPeX", "threadOut": "styles-module__threadOut___-ccKh", "header": "styles-module__header___GiEBq", "avatar": "styles-module__avatar___JElAd", "headerInfo": "styles-module__headerInfo___E8809", "headerTop": "styles-module__headerTop___eDiCd", "authorName": "styles-module__authorName___T1BfB", "timestamp": "styles-module__timestamp___WusBf", "headerActions": "styles-module__headerActions___8FsMY", "headerAction": "styles-module__headerAction___Tinmq", "title": "styles-module__title___qkfqY", "commentsList": "styles-module__commentsList___kYqAR", "comment": "styles-module__comment___pW3IO", "commentActions": "styles-module__commentActions___wO0fs", "commentHighlight": "styles-module__commentHighlight___EiTmx", "commentContent": "styles-module__commentContent___RObGr", "commentTop": "styles-module__commentTop___BbTF3", "commentAuthor": "styles-module__commentAuthor___tBjpl", "commentTime": "styles-module__commentTime___0OLrz", "commentText": "styles-module__commentText___ldy2V", "screenshot": "styles-module__screenshot___jUqau", "screenshotBadge": "styles-module__screenshotBadge___roEqY", "fileCard": "styles-module__fileCard___-iOro", "fileIcon": "styles-module__fileIcon___dNJMT", "fileInfo": "styles-module__fileInfo___dVrLV", "fileCardName": "styles-module__fileCardName___SHOj-", "fileCardSize": "styles-module__fileCardSize___W53JL", "pendingFile": "styles-module__pendingFile___-OSRs", "divider": "styles-module__divider___kDjxN", "pendingImage": "styles-module__pendingImage___gHaF3", "pendingRemove": "styles-module__pendingRemove___FRL4h", "replyArea": "styles-module__replyArea___VQn9b", "replyInput": "styles-module__replyInput___uZNBW", "replyToolbar": "styles-module__replyToolbar___fTFJU", "replyTool": "styles-module__replyTool___Ho-Rx", "replySend": "styles-module__replySend___e0VSb", "active": "styles-module__active___R--Jj", "empty": "styles-module__empty___XXGiw", "statusBadge": "styles-module__statusBadge___el8ml", "todo": "styles-module__todo___rUWBr", "inProgress": "styles-module__inProgress___HEWgU", "done": "styles-module__done___zC12n", "lightbox": "styles-module__lightbox___KoWEF", "lightboxClose": "styles-module__lightboxClose___tGZlm" };
2476
2510
  if (typeof document !== "undefined") {
2477
2511
  let style = document.getElementById("impakers-debug-styles-comment-thread-styles");
2478
2512
  if (!style) {
@@ -2480,12 +2514,12 @@ if (typeof document !== "undefined") {
2480
2514
  style.id = "impakers-debug-styles-comment-thread-styles";
2481
2515
  document.head.appendChild(style);
2482
2516
  }
2483
- style.textContent = css3;
2517
+ style.textContent = css4;
2484
2518
  }
2485
- var styles_module_default3 = classNames3;
2519
+ var styles_module_default4 = classNames4;
2486
2520
 
2487
2521
  // src/components/comment-thread/index.tsx
2488
- var import_jsx_runtime4 = require("react/jsx-runtime");
2522
+ var import_jsx_runtime5 = require("react/jsx-runtime");
2489
2523
  function formatTime(dateStr) {
2490
2524
  const date = new Date(dateStr);
2491
2525
  const diff = Date.now() - date.getTime();
@@ -2524,6 +2558,7 @@ function CommentThread({
2524
2558
  left,
2525
2559
  top,
2526
2560
  bottom,
2561
+ loading,
2527
2562
  onClose,
2528
2563
  onReply
2529
2564
  }) {
@@ -2544,7 +2579,7 @@ function CommentThread({
2544
2579
  if (capturingDom) return;
2545
2580
  const handler = (e) => {
2546
2581
  const target = e.target;
2547
- if (target.closest(`.${styles_module_default3.thread}`)) return;
2582
+ if (target.closest(`.${styles_module_default4.thread}`)) return;
2548
2583
  if (target.closest("[data-annotation-marker]")) return;
2549
2584
  if (target.closest("[data-impakers-debug]")) return;
2550
2585
  handleClose();
@@ -2663,57 +2698,61 @@ function CommentThread({
2663
2698
  ...top !== void 0 ? { top } : {},
2664
2699
  ...bottom !== void 0 ? { bottom } : {}
2665
2700
  };
2666
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
2701
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
2667
2702
  "div",
2668
2703
  {
2669
- className: `${styles_module_default3.thread} ${exiting ? styles_module_default3.exiting : ""}`,
2704
+ className: `${styles_module_default4.thread} ${exiting ? styles_module_default4.exiting : ""}`,
2670
2705
  style: positionStyle,
2671
2706
  "data-impakers-debug": "",
2672
2707
  onClick: (e) => e.stopPropagation(),
2673
2708
  children: [
2674
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.header, children: [
2675
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.avatar, children: getInitials(task.authorName || currentUserName) }),
2676
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.headerInfo, children: [
2677
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.headerTop, children: [
2678
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.authorName, children: task.authorName || currentUserName }),
2679
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.timestamp, children: formatTime(task.createdAt) })
2709
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.header, children: [
2710
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.avatar, children: getInitials(task.authorName || currentUserName) }),
2711
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.headerInfo, children: [
2712
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.headerTop, children: [
2713
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.authorName, children: task.authorName || currentUserName }),
2714
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.timestamp, children: formatTime(task.createdAt) })
2680
2715
  ] }),
2681
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.title, children: feedbackTitle })
2716
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.title, children: feedbackTitle })
2682
2717
  ] }),
2683
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.headerActions, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: styles_module_default3.headerAction, onClick: handleClose, title: "\uB2EB\uAE30", type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) }) })
2718
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.headerActions, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.headerAction, onClick: handleClose, title: "\uB2EB\uAE30", type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) }) })
2719
+ ] }),
2720
+ loading && task.comments.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2721
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.divider }),
2722
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(LoadingSpinner, { message: "\uB313\uAE00 \uB85C\uB529 \uC911..." })
2684
2723
  ] }),
2685
- task.comments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
2686
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.divider }),
2687
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.commentsList, ref: listRef, children: task.comments.map((comment) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.comment, children: [
2688
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.avatar, style: { width: 22, height: 22, fontSize: 10 }, children: getInitials(comment.authorName) }),
2689
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.commentContent, children: [
2690
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.commentTop, children: [
2691
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.commentAuthor, children: comment.authorName }),
2692
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.commentTime, children: formatTime(comment.createdAt) })
2724
+ task.comments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2725
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.divider }),
2726
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.commentsList, ref: listRef, children: task.comments.map((comment) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.comment, children: [
2727
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.avatar, style: { width: 22, height: 22, fontSize: 10 }, children: getInitials(comment.authorName) }),
2728
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.commentContent, children: [
2729
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.commentTop, children: [
2730
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.commentAuthor, children: comment.authorName }),
2731
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.commentTime, children: formatTime(comment.createdAt) })
2693
2732
  ] }),
2694
- comment.content && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.commentText, children: comment.content }),
2695
- comment.imageUrl && comment.imageUrl !== "loading..." && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2733
+ comment.content && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.commentText, children: comment.content }),
2734
+ comment.imageUrl && comment.imageUrl !== "loading..." && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2696
2735
  "div",
2697
2736
  {
2698
- className: styles_module_default3.screenshot,
2737
+ className: styles_module_default4.screenshot,
2699
2738
  onClick: () => setLightboxSrc(comment.imageUrl),
2700
2739
  style: { cursor: "pointer" },
2701
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { src: comment.imageUrl, alt: "screenshot" })
2740
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: comment.imageUrl, alt: "screenshot" })
2702
2741
  }
2703
2742
  ),
2704
- comment.fileUrl && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
2743
+ comment.fileUrl && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
2705
2744
  "a",
2706
2745
  {
2707
- className: styles_module_default3.fileCard,
2746
+ className: styles_module_default4.fileCard,
2708
2747
  href: comment.fileUrl,
2709
2748
  target: "_blank",
2710
2749
  rel: "noopener noreferrer",
2711
2750
  onClick: (e) => e.stopPropagation(),
2712
2751
  children: [
2713
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.fileIcon, children: getFileIcon(comment.fileType || "") }),
2714
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: styles_module_default3.fileInfo, children: [
2715
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.fileCardName, children: comment.fileName || "\uD30C\uC77C" }),
2716
- comment.fileSize != null && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.fileCardSize, children: formatFileSize(comment.fileSize) })
2752
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileIcon, children: getFileIcon(comment.fileType || "") }),
2753
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: styles_module_default4.fileInfo, children: [
2754
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardName, children: comment.fileName || "\uD30C\uC77C" }),
2755
+ comment.fileSize != null && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardSize, children: formatFileSize(comment.fileSize) })
2717
2756
  ] })
2718
2757
  ]
2719
2758
  }
@@ -2721,23 +2760,23 @@ function CommentThread({
2721
2760
  ] })
2722
2761
  ] }, comment.id)) })
2723
2762
  ] }),
2724
- pendingImage && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.pendingImage, children: [
2725
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { src: pendingImage, alt: "pending" }),
2726
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: styles_module_default3.pendingRemove, onClick: () => setPendingImage(null), type: "button", children: "\xD7" })
2763
+ pendingImage && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.pendingImage, children: [
2764
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: pendingImage, alt: "pending" }),
2765
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.pendingRemove, onClick: () => setPendingImage(null), type: "button", children: "\xD7" })
2727
2766
  ] }),
2728
- pendingFile && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.pendingFile, children: [
2729
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.fileIcon, children: getFileIcon(pendingFile.type) }),
2730
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: styles_module_default3.fileInfo, children: [
2731
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.fileCardName, children: pendingFile.name }),
2732
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.fileCardSize, children: formatFileSize(pendingFile.size) })
2767
+ pendingFile && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.pendingFile, children: [
2768
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileIcon, children: getFileIcon(pendingFile.type) }),
2769
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: styles_module_default4.fileInfo, children: [
2770
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardName, children: pendingFile.name }),
2771
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardSize, children: formatFileSize(pendingFile.size) })
2733
2772
  ] }),
2734
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: styles_module_default3.pendingRemove, onClick: () => setPendingFile(null), type: "button", children: "\xD7" })
2773
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.pendingRemove, onClick: () => setPendingFile(null), type: "button", children: "\xD7" })
2735
2774
  ] }),
2736
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.replyArea, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2775
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.replyArea, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2737
2776
  "textarea",
2738
2777
  {
2739
2778
  ref: textareaRef,
2740
- className: styles_module_default3.replyInput,
2779
+ className: styles_module_default4.replyInput,
2741
2780
  placeholder: "Reply...",
2742
2781
  value: replyText,
2743
2782
  onChange: (e) => {
@@ -2750,31 +2789,31 @@ function CommentThread({
2750
2789
  rows: 2
2751
2790
  }
2752
2791
  ) }),
2753
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.replyToolbar, children: [
2754
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: styles_module_default3.replyTool, onClick: handleAttachClick, type: "button", title: "\uD30C\uC77C \uCCA8\uBD80", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2755
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
2756
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
2792
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.replyToolbar, children: [
2793
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.replyTool, onClick: handleAttachClick, type: "button", title: "\uD30C\uC77C \uCCA8\uBD80", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2794
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
2795
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
2757
2796
  ] }) }),
2758
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: styles_module_default3.replyTool, onClick: handleCameraClick, type: "button", title: "\uC694\uC18C \uC2A4\uD06C\uB9B0\uC0F7", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2759
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M14.5 4h-5L7 7H4a2 2 0 00-2 2v9a2 2 0 002 2h16a2 2 0 002-2V9a2 2 0 00-2-2h-3l-2.5-3z" }),
2760
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "12", cy: "13", r: "3" })
2797
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.replyTool, onClick: handleCameraClick, type: "button", title: "\uC694\uC18C \uC2A4\uD06C\uB9B0\uC0F7", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2798
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M14.5 4h-5L7 7H4a2 2 0 00-2 2v9a2 2 0 002 2h16a2 2 0 002-2V9a2 2 0 00-2-2h-3l-2.5-3z" }),
2799
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "12", cy: "13", r: "3" })
2761
2800
  ] }) }),
2762
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2801
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2763
2802
  "button",
2764
2803
  {
2765
- className: `${styles_module_default3.replySend} ${replyText.trim() || pendingImage || pendingFile ? styles_module_default3.active : ""}`,
2804
+ className: `${styles_module_default4.replySend} ${replyText.trim() || pendingImage || pendingFile ? styles_module_default4.active : ""}`,
2766
2805
  onClick: handleSend,
2767
2806
  disabled: !replyText.trim() && !pendingImage && !pendingFile,
2768
2807
  type: "button",
2769
2808
  title: "\uC804\uC1A1",
2770
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2771
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "22", y1: "2", x2: "11", y2: "13" }),
2772
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })
2809
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2810
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "22", y1: "2", x2: "11", y2: "13" }),
2811
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })
2773
2812
  ] })
2774
2813
  }
2775
2814
  )
2776
2815
  ] }),
2777
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2816
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2778
2817
  "input",
2779
2818
  {
2780
2819
  ref: fileInputRef,
@@ -2784,9 +2823,9 @@ function CommentThread({
2784
2823
  onChange: handleFileChange
2785
2824
  }
2786
2825
  ),
2787
- lightboxSrc && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.lightbox, onClick: () => setLightboxSrc(null), "data-impakers-debug": "", children: [
2788
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { src: lightboxSrc, alt: "enlarged", onClick: (e) => e.stopPropagation() }),
2789
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: styles_module_default3.lightboxClose, onClick: () => setLightboxSrc(null), type: "button", children: "\xD7" })
2826
+ lightboxSrc && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.lightbox, onClick: () => setLightboxSrc(null), "data-impakers-debug": "", children: [
2827
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: lightboxSrc, alt: "enlarged", onClick: (e) => e.stopPropagation() }),
2828
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.lightboxClose, onClick: () => setLightboxSrc(null), type: "button", children: "\xD7" })
2790
2829
  ] })
2791
2830
  ]
2792
2831
  }
@@ -2797,8 +2836,8 @@ function CommentThread({
2797
2836
  var import_react4 = require("react");
2798
2837
 
2799
2838
  // src/components/fab-menu/styles.module.scss
2800
- var css4 = '@keyframes styles-module__fabEnter___DMJoo {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__menuItemIn___GfmJ3 {\n from {\n opacity: 0;\n transform: scale(0.3);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__menuItemOut___s0nQD {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.3);\n }\n}\n.styles-module__fab___wShP- {\n touch-action: none;\n z-index: 99999;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #18181b;\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;\n animation: styles-module__fabEnter___DMJoo 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n position: relative;\n}\n.styles-module__fab___wShP- svg {\n width: 20px;\n height: 20px;\n transition: transform 0.2s ease;\n}\n.styles-module__fab___wShP-:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.12);\n}\n.styles-module__fab___wShP-:active {\n transform: scale(0.96);\n}\n.styles-module__fab___wShP-.styles-module__expanded___qyto6 svg {\n transform: rotate(45deg);\n}\n\n.styles-module__menuItems___1qNsE {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n z-index: 99999;\n}\n\n.styles-module__menuItem___pB75H {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: #fff;\n color: #374151;\n border: 1px solid #e5e7eb;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);\n transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease, border-color 0.12s ease;\n position: relative;\n}\n.styles-module__menuItem___pB75H svg {\n width: 18px;\n height: 18px;\n}\n.styles-module__menuItem___pB75H:hover {\n transform: scale(1.08);\n background: #f9fafb;\n border-color: #d1d5db;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n}\n.styles-module__menuItem___pB75H:active {\n transform: scale(0.96);\n}\n.styles-module__menuItem___pB75H.styles-module__active___7ktmc {\n background: #18181b;\n color: #fff;\n border-color: #18181b;\n}\n\n.styles-module__menuItem___pB75H:nth-child(1) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 0ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(2) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 40ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(3) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 80ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(4) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 120ms both;\n}\n\n.styles-module__menuItemClosing___m4o-a:nth-child(1) {\n animation: styles-module__menuItemOut___s0nQD 0.1s ease-in 40ms both;\n}\n\n.styles-module__menuItemClosing___m4o-a:nth-child(2) {\n animation: styles-module__menuItemOut___s0nQD 0.1s ease-in 0ms both;\n}\n\n.styles-module__tooltip___Cy6kg {\n position: absolute;\n right: calc(100% + 10px);\n white-space: nowrap;\n background: rgba(0, 0, 0, 0.85);\n color: #fff;\n font-size: 12px;\n font-weight: 500;\n padding: 5px 10px;\n border-radius: 6px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.12s ease;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}\n\n.styles-module__menuItem___pB75H:hover .styles-module__tooltip___Cy6kg {\n opacity: 1;\n}\n\n.styles-module__contextMenu___A8fQt {\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16), 0 1px 4px rgba(0, 0, 0, 0.08);\n padding: 4px;\n min-width: 140px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__menuItemIn___GfmJ3 0.1s ease-out;\n}\n\n.styles-module__contextMenuItem___1u9io {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font-size: 13px;\n color: #18181b;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n font-family: inherit;\n}\n.styles-module__contextMenuItem___1u9io:hover {\n background: #f4f4f5;\n}\n\n.styles-module__badge___zmiZx {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 16px;\n height: 16px;\n border-radius: 8px;\n background: #ef4444;\n color: #fff;\n font-size: 10px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}';
2801
- var classNames4 = { "fab": "styles-module__fab___wShP-", "fabEnter": "styles-module__fabEnter___DMJoo", "expanded": "styles-module__expanded___qyto6", "menuItems": "styles-module__menuItems___1qNsE", "menuItem": "styles-module__menuItem___pB75H", "active": "styles-module__active___7ktmc", "menuItemIn": "styles-module__menuItemIn___GfmJ3", "menuItemClosing": "styles-module__menuItemClosing___m4o-a", "menuItemOut": "styles-module__menuItemOut___s0nQD", "tooltip": "styles-module__tooltip___Cy6kg", "contextMenu": "styles-module__contextMenu___A8fQt", "contextMenuItem": "styles-module__contextMenuItem___1u9io", "badge": "styles-module__badge___zmiZx" };
2839
+ var css5 = '@keyframes styles-module__fabEnter___DMJoo {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__menuItemIn___GfmJ3 {\n from {\n opacity: 0;\n transform: scale(0.3);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__menuItemOut___s0nQD {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.3);\n }\n}\n.styles-module__fab___wShP- {\n touch-action: none;\n z-index: 99999;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #18181b;\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;\n animation: styles-module__fabEnter___DMJoo 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n position: relative;\n}\n.styles-module__fab___wShP- svg {\n width: 20px;\n height: 20px;\n transition: transform 0.2s ease;\n}\n.styles-module__fab___wShP-:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.12);\n}\n.styles-module__fab___wShP-:active {\n transform: scale(0.96);\n}\n.styles-module__fab___wShP-.styles-module__expanded___qyto6 svg {\n transform: rotate(45deg);\n}\n\n.styles-module__menuItems___1qNsE {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n z-index: 99999;\n}\n\n.styles-module__menuItem___pB75H {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: #fff;\n color: #374151;\n border: 1px solid #e5e7eb;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);\n transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease, border-color 0.12s ease;\n position: relative;\n}\n.styles-module__menuItem___pB75H svg {\n width: 18px;\n height: 18px;\n}\n.styles-module__menuItem___pB75H:hover {\n transform: scale(1.08);\n background: #f9fafb;\n border-color: #d1d5db;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n}\n.styles-module__menuItem___pB75H:active {\n transform: scale(0.96);\n}\n.styles-module__menuItem___pB75H.styles-module__active___7ktmc {\n background: #18181b;\n color: #fff;\n border-color: #18181b;\n}\n\n.styles-module__menuItem___pB75H:nth-child(1) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 0ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(2) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 40ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(3) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 80ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(4) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 120ms both;\n}\n\n.styles-module__menuItemClosing___m4o-a:nth-child(1) {\n animation: styles-module__menuItemOut___s0nQD 0.1s ease-in 40ms both;\n}\n\n.styles-module__menuItemClosing___m4o-a:nth-child(2) {\n animation: styles-module__menuItemOut___s0nQD 0.1s ease-in 0ms both;\n}\n\n.styles-module__tooltip___Cy6kg {\n position: absolute;\n right: calc(100% + 10px);\n white-space: nowrap;\n background: rgba(0, 0, 0, 0.85);\n color: #fff;\n font-size: 12px;\n font-weight: 500;\n padding: 5px 10px;\n border-radius: 6px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.12s ease;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}\n\n.styles-module__menuItem___pB75H:hover .styles-module__tooltip___Cy6kg {\n opacity: 1;\n}\n\n.styles-module__contextMenu___A8fQt {\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16), 0 1px 4px rgba(0, 0, 0, 0.08);\n padding: 4px;\n min-width: 140px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__menuItemIn___GfmJ3 0.1s ease-out;\n}\n\n.styles-module__contextMenuItem___1u9io {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font-size: 13px;\n color: #18181b;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n font-family: inherit;\n}\n.styles-module__contextMenuItem___1u9io:hover {\n background: #f4f4f5;\n}\n\n.styles-module__badge___zmiZx {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 16px;\n height: 16px;\n border-radius: 8px;\n background: #ef4444;\n color: #fff;\n font-size: 10px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}';
2840
+ var classNames5 = { "fab": "styles-module__fab___wShP-", "fabEnter": "styles-module__fabEnter___DMJoo", "expanded": "styles-module__expanded___qyto6", "menuItems": "styles-module__menuItems___1qNsE", "menuItem": "styles-module__menuItem___pB75H", "active": "styles-module__active___7ktmc", "menuItemIn": "styles-module__menuItemIn___GfmJ3", "menuItemClosing": "styles-module__menuItemClosing___m4o-a", "menuItemOut": "styles-module__menuItemOut___s0nQD", "tooltip": "styles-module__tooltip___Cy6kg", "contextMenu": "styles-module__contextMenu___A8fQt", "contextMenuItem": "styles-module__contextMenuItem___1u9io", "badge": "styles-module__badge___zmiZx" };
2802
2841
  if (typeof document !== "undefined") {
2803
2842
  let style = document.getElementById("impakers-debug-styles-fab-menu-styles");
2804
2843
  if (!style) {
@@ -2806,12 +2845,12 @@ if (typeof document !== "undefined") {
2806
2845
  style.id = "impakers-debug-styles-fab-menu-styles";
2807
2846
  document.head.appendChild(style);
2808
2847
  }
2809
- style.textContent = css4;
2848
+ style.textContent = css5;
2810
2849
  }
2811
- var styles_module_default4 = classNames4;
2850
+ var styles_module_default5 = classNames5;
2812
2851
 
2813
2852
  // src/components/fab-menu/index.tsx
2814
- var import_jsx_runtime5 = require("react/jsx-runtime");
2853
+ var import_jsx_runtime6 = require("react/jsx-runtime");
2815
2854
  function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
2816
2855
  const [expanded, setExpanded] = (0, import_react4.useState)(false);
2817
2856
  const [closing, setClosing] = (0, import_react4.useState)(false);
@@ -2890,11 +2929,11 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
2890
2929
  document.addEventListener("mousedown", handler);
2891
2930
  return () => document.removeEventListener("mousedown", handler);
2892
2931
  }, [expanded, showContextMenu, closeMenu]);
2893
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2894
- (expanded || closing) && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2932
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2933
+ (expanded || closing) && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2895
2934
  "div",
2896
2935
  {
2897
- className: styles_module_default4.menuItems,
2936
+ className: styles_module_default5.menuItems,
2898
2937
  style: {
2899
2938
  position: "fixed",
2900
2939
  right: position.right + (44 - 40) / 2,
@@ -2904,10 +2943,10 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
2904
2943
  },
2905
2944
  "data-impakers-debug": "",
2906
2945
  "data-impakers-fab": "",
2907
- children: [...items].reverse().map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
2946
+ children: [...items].reverse().map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2908
2947
  "button",
2909
2948
  {
2910
- className: `${styles_module_default4.menuItem} ${item.active ? styles_module_default4.active : ""} ${closing ? styles_module_default4.menuItemClosing : ""}`,
2949
+ className: `${styles_module_default5.menuItem} ${item.active ? styles_module_default5.active : ""} ${closing ? styles_module_default5.menuItemClosing : ""}`,
2911
2950
  style: { animationDelay: closing ? `${i * 30}ms` : `${(items.length - 1 - i) * 40}ms` },
2912
2951
  onClick: (e) => {
2913
2952
  e.stopPropagation();
@@ -2919,19 +2958,19 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
2919
2958
  "data-impakers-debug": "",
2920
2959
  children: [
2921
2960
  item.icon,
2922
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.tooltip, children: item.label }),
2923
- item.badge && item.badge > 0 ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.badge, children: item.badge > 99 ? "99+" : item.badge }) : null
2961
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.tooltip, children: item.label }),
2962
+ item.badge && item.badge > 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.badge, children: item.badge > 99 ? "99+" : item.badge }) : null
2924
2963
  ]
2925
2964
  },
2926
2965
  item.id
2927
2966
  ))
2928
2967
  }
2929
2968
  ),
2930
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2969
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2931
2970
  "button",
2932
2971
  {
2933
2972
  ref: fabRef,
2934
- className: `${styles_module_default4.fab} ${expanded ? styles_module_default4.expanded : ""}`,
2973
+ className: `${styles_module_default5.fab} ${expanded ? styles_module_default5.expanded : ""}`,
2935
2974
  style: { position: "fixed", right: position.right, bottom: position.bottom },
2936
2975
  onPointerDown: handleFabPointerDown,
2937
2976
  onPointerMove: handleFabPointerMove,
@@ -2941,30 +2980,30 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
2941
2980
  "aria-label": "\uD53C\uB4DC\uBC31 \uBA54\uB274",
2942
2981
  "data-impakers-debug": "",
2943
2982
  "data-impakers-fab": "",
2944
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2945
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
2946
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
2983
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
2984
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
2985
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
2947
2986
  ] })
2948
2987
  }
2949
2988
  ),
2950
- showContextMenu && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2989
+ showContextMenu && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2951
2990
  "div",
2952
2991
  {
2953
2992
  style: { position: "fixed", inset: 0, zIndex: 2147483647 },
2954
2993
  onMouseDown: () => setShowContextMenu(null),
2955
2994
  "data-impakers-debug": "",
2956
2995
  "data-impakers-fab": "",
2957
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2996
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2958
2997
  "div",
2959
2998
  {
2960
- className: styles_module_default4.contextMenu,
2999
+ className: styles_module_default5.contextMenu,
2961
3000
  style: { position: "fixed", left: showContextMenu.x, top: showContextMenu.y, zIndex: 2147483647 },
2962
3001
  onMouseDown: (e) => e.stopPropagation(),
2963
3002
  "data-impakers-fab": "",
2964
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
3003
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2965
3004
  "button",
2966
3005
  {
2967
- className: styles_module_default4.contextMenuItem,
3006
+ className: styles_module_default5.contextMenuItem,
2968
3007
  onMouseDown: (e) => {
2969
3008
  e.stopPropagation();
2970
3009
  setShowContextMenu(null);
@@ -2986,8 +3025,8 @@ var import_react5 = require("react");
2986
3025
  var import_react_dom = require("react-dom");
2987
3026
 
2988
3027
  // src/components/inbox-panel/styles.module.scss
2989
- var css5 = '@keyframes styles-module__slideIn___0o0s- {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n@keyframes styles-module__slideOut___nKrBX {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes styles-module__fadeIn___j09Ts {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.styles-module__backdrop___zYhcU {\n position: fixed;\n inset: 0;\n z-index: 100003;\n animation: styles-module__fadeIn___j09Ts 0.15s ease-out;\n}\n\n.styles-module__panel___6YS8k {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 420px;\n max-width: 100vw;\n background: #fafafa;\n z-index: 100004;\n display: flex;\n flex-direction: column;\n box-shadow: -4px 0 24px rgba(0, 0, 0, 0.08);\n animation: styles-module__slideIn___0o0s- 0.2s ease-out;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__panel___6YS8k.styles-module__exiting___6A-Ag {\n animation: styles-module__slideOut___nKrBX 0.15s ease-in forwards;\n}\n\n.styles-module__header___fBbGz {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__headerLeft___e0YLf {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.styles-module__headerTitle___oEPJa {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__closeBtn___-H8ra {\n width: 32px;\n height: 32px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__closeBtn___-H8ra:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n.styles-module__closeBtn___-H8ra svg {\n width: 18px;\n height: 18px;\n}\n\n.styles-module__tabs___nfuX7 {\n display: flex;\n padding: 0 20px;\n gap: 0;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__tab___Hc-jn {\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n border: none;\n background: none;\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: color 0.12s, border-color 0.12s;\n font-family: inherit;\n}\n.styles-module__tab___Hc-jn:hover {\n color: #374151;\n}\n.styles-module__tab___Hc-jn.styles-module__active___ZQzA5 {\n color: #18181b;\n border-bottom-color: #18181b;\n}\n\n.styles-module__tabBadge___IdFDQ {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n border-radius: 9px;\n background: #e5e7eb;\n color: #374151;\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n margin-left: 6px;\n}\n\n.styles-module__statusFilter___qtBXs {\n display: flex;\n gap: 6px;\n padding: 10px 20px;\n border-bottom: 1px solid #f3f4f6;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__filterChip___l2s74 {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n background: #f3f4f6;\n border: 1px solid transparent;\n border-radius: 16px;\n cursor: pointer;\n transition: all 0.12s;\n font-family: inherit;\n}\n.styles-module__filterChip___l2s74:hover {\n color: #374151;\n background: #e5e7eb;\n}\n.styles-module__filterChip___l2s74.styles-module__active___ZQzA5 {\n color: #18181b;\n background: #fff;\n border-color: #d1d5db;\n}\n\n.styles-module__filterCount___KukiQ {\n font-size: 11px;\n font-weight: 600;\n color: inherit;\n opacity: 0.7;\n}\n\n.styles-module__content___L2lRw {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__card___F8qwd {\n background: #fff;\n border-radius: 12px;\n border: 1px solid #e5e7eb;\n margin-bottom: 12px;\n overflow: hidden;\n transition: box-shadow 0.12s;\n cursor: pointer;\n}\n.styles-module__card___F8qwd:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.styles-module__cardHeader___QOVGR {\n padding: 14px 16px 8px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.styles-module__cardAvatar___FfKmW {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__cardInfo___BmrdF {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__cardMeta___7p9KD {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__cardAuthor___YvnuR {\n font-size: 13px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__cardTime___N1Png {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__cardActions___7QF72 {\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__cardAction___t4b3V {\n width: 26px;\n height: 26px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__cardAction___t4b3V:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__cardAction___t4b3V svg {\n width: 14px;\n height: 14px;\n}\n\n.styles-module__cardTitle___xJxDN {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n padding: 0 16px 8px;\n}\n\n.styles-module__cardScreenshot___I5-QL {\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-height: 160px;\n}\n.styles-module__cardScreenshot___I5-QL img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__cardRoute___U4gB6 {\n margin: 0 16px 10px;\n padding: 8px 12px;\n background: #f9fafb;\n border: 1px solid #f3f4f6;\n border-radius: 8px;\n font-size: 12px;\n color: #6b7280;\n line-height: 1.4;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: background 0.12s, border-color 0.12s;\n}\n.styles-module__cardRoute___U4gB6:hover {\n background: #f3f4f6;\n border-color: #d1d5db;\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRoutePath___zP-fh {\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRouteIcon___SBqGj {\n color: #3b82f6;\n}\n\n.styles-module__cardRouteName___BDH75 {\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__cardRoutePath___zP-fh {\n flex: 1;\n min-width: 0;\n color: #9ca3af;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: color 0.12s;\n}\n\n.styles-module__cardRouteIcon___SBqGj {\n flex-shrink: 0;\n color: #9ca3af;\n transition: color 0.12s;\n}\n\n.styles-module__cardStatusTime___S62W1 {\n padding: 0 16px 6px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.styles-module__cardStatusTime___S62W1 span {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__cardFooter___wfPa4 {\n padding: 8px 16px 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.styles-module__cardReplyDot___YnqzI {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #16a34a;\n flex-shrink: 0;\n}\n\n.styles-module__cardReplyCount___O1khL {\n font-size: 12px;\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__statusDot___l4IHG {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__statusDot___l4IHG.styles-module__todo___894P6 {\n background: #f59e0b;\n}\n.styles-module__statusDot___l4IHG.styles-module__inProgress___IZ1mJ {\n background: #3b82f6;\n}\n.styles-module__statusDot___l4IHG.styles-module__done___n4cWP {\n background: #16a34a;\n}\n\n.styles-module__empty___IADrw {\n text-align: center;\n padding: 48px 20px;\n color: #9ca3af;\n font-size: 13px;\n line-height: 1.6;\n}\n\n.styles-module__emptyIcon___1x5wT {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background: #f3f4f6;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 12px;\n color: #9ca3af;\n}\n.styles-module__emptyIcon___1x5wT svg {\n width: 24px;\n height: 24px;\n}\n\n.styles-module__checkBtn___KjHxm {\n width: 28px;\n height: 28px;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: transparent;\n transition: all 0.15s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__checkBtn___KjHxm svg {\n width: 14px;\n height: 14px;\n}\n.styles-module__checkBtn___KjHxm:hover {\n border-color: #16a34a;\n color: #16a34a;\n}\n.styles-module__checkBtn___KjHxm.styles-module__checked___8pype {\n border-color: #16a34a;\n background: #16a34a;\n color: #fff;\n}\n\n.styles-module__cardDone___-m4w- {\n opacity: 0.6;\n}\n.styles-module__cardDone___-m4w- .styles-module__cardTitle___xJxDN {\n text-decoration: line-through;\n color: #9ca3af;\n}\n\n.styles-module__backBtn___PTIAl {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__backBtn___PTIAl:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__detailView___36cvH {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.styles-module__detailHeader___Hepgq {\n display: flex;\n gap: 10px;\n padding: 16px 20px;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.styles-module__detailTitle___7TvrX {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n margin-top: 4px;\n}\n\n.styles-module__detailScreenshot___UPF0f {\n margin: 0 20px 0;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 180px;\n}\n.styles-module__detailScreenshot___UPF0f img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__commentsList___5Uigg {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__commentItem___5u78u {\n display: flex;\n gap: 10px;\n padding: 10px 20px;\n}\n.styles-module__commentItem___5u78u:hover {\n background: #f9fafb;\n}\n\n.styles-module__commentAvatar___OatKg {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__commentBody___gmv1J {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentMeta___JNJa3 {\n display: flex;\n gap: 6px;\n align-items: center;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthorName___XNVRk {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___CokGf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentContent___yMiLR {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.styles-module__loadingComments___zpATD, .styles-module__noComments___kvl90 {\n text-align: center;\n padding: 24px 20px;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__replyBox___FO-XS {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid #f3f4f6;\n background: #fff;\n}\n\n.styles-module__replyInput___k8C9e {\n flex: 1;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 8px 12px;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n outline: none;\n min-height: 20px;\n max-height: 80px;\n line-height: 1.5;\n transition: border-color 0.12s;\n}\n.styles-module__replyInput___k8C9e:focus {\n border-color: #18181b;\n}\n.styles-module__replyInput___k8C9e::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__sendBtn___pBzWa {\n width: 32px;\n height: 32px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #d1d5db;\n transition: color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__sendBtn___pBzWa.styles-module__active___ZQzA5 {\n color: #3b82f6;\n}\n.styles-module__sendBtn___pBzWa:hover {\n color: #3b82f6;\n}\n\n.styles-module__commentImage___LuH8X {\n margin-top: 6px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-width: 240px;\n cursor: pointer;\n transition: opacity 0.12s;\n}\n.styles-module__commentImage___LuH8X:hover {\n opacity: 0.9;\n}\n.styles-module__commentImage___LuH8X img {\n width: 100%;\n height: auto;\n display: block;\n}\n\n.styles-module__commentFileCard___XE44y {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 240px;\n}\n.styles-module__commentFileCard___XE44y:hover {\n background: #f3f4f6;\n}\n\n.styles-module__commentFileIcon___G58-y {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: #e5e7eb;\n color: #374151;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n flex-shrink: 0;\n letter-spacing: 0.5px;\n}\n\n.styles-module__commentFileInfo___OFIhR {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__commentFileName___NUoII {\n font-size: 12px;\n font-weight: 500;\n color: #1a1a1a;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__commentFileSize___sokU8 {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__filePreviewOverlay___5RxYd {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.styles-module__filePreviewModal___MGJLW {\n width: 90vw;\n max-width: 960px;\n height: 80vh;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}\n\n.styles-module__filePreviewHeader___E9SWJ {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewName___z8t-L {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__filePreviewActions___weizo {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewOpen___JpaEs {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 500;\n color: #3b82f6;\n text-decoration: none;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.12s;\n}\n.styles-module__filePreviewOpen___JpaEs:hover {\n background: #eff6ff;\n}\n\n.styles-module__filePreviewClose___TFcbr {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n font-size: 18px;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__filePreviewClose___TFcbr:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__filePreviewBody___gwg1S {\n flex: 1;\n overflow: hidden;\n}\n\n.styles-module__filePreviewIframe___OQ3Oo {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.styles-module__filePreviewFallback___U1rB2 {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 12px;\n color: #6b7280;\n font-size: 14px;\n}\n.styles-module__filePreviewFallback___U1rB2 a {\n color: #3b82f6;\n text-decoration: none;\n font-weight: 500;\n}\n.styles-module__filePreviewFallback___U1rB2 a:hover {\n text-decoration: underline;\n}\n\n.styles-module__filePreviewFallbackIcon___0--41 {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n background: #f3f4f6;\n color: #6b7280;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: 700;\n}\n\n.styles-module__lightbox___8CDdt {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n.styles-module__lightbox___8CDdt img {\n max-width: 90vw;\n max-height: 90vh;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n\n.styles-module__lightboxClose___VGfjh {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n border: none;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__lightboxClose___VGfjh:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.styles-module__historyFilter___IoWL4 {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 10px 20px;\n border-bottom: 1px solid #f3f4f6;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__historyDateWrap___reBzb {\n position: relative;\n}\n\n.styles-module__filterChipClear___Sx4c3 {\n width: 22px;\n height: 22px;\n border: none;\n background: #e5e7eb;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n color: #6b7280;\n line-height: 1;\n transition: background 0.12s;\n font-family: inherit;\n}\n.styles-module__filterChipClear___Sx4c3:hover {\n background: #d1d5db;\n}\n\n.styles-module__datePopover___AYzLr {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 10;\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n padding: 8px;\n}\n\n.styles-module__dateInput___Ofr3Y {\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n outline: none;\n cursor: pointer;\n}\n.styles-module__dateInput___Ofr3Y:focus {\n border-color: #18181b;\n}\n\n.styles-module__historyItem___G4kbt {\n display: flex;\n gap: 12px;\n padding: 12px 20px;\n position: relative;\n transition: background 0.12s;\n}\n.styles-module__historyItem___G4kbt:hover {\n background: #f9fafb;\n}\n.styles-module__historyItem___G4kbt:not(:last-child)::before {\n content: "";\n position: absolute;\n left: 29px;\n top: 24px;\n bottom: -12px;\n width: 1px;\n background: #e5e7eb;\n}\n\n.styles-module__historyDot___0z439 {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: 4px;\n background: #d1d5db;\n}\n\n.styles-module__historyDot_created___G-qjM {\n background: #6366f1;\n}\n\n.styles-module__historyDot_started___0FJa0 {\n background: #3b82f6;\n}\n\n.styles-module__historyDot_completed___q-WGH {\n background: #16a34a;\n}\n\n.styles-module__historyBody___i-k1p {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__historyMeta___khk0e {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 2px;\n}\n\n.styles-module__historyEvent___P6rQ5 {\n font-size: 12px;\n font-weight: 600;\n color: #374151;\n}\n\n.styles-module__historyTime___bWpM4 {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__historyTitle___gUvXd {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__historyUrl___5xfKq {\n font-size: 11px;\n color: #9ca3af;\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}';
2990
- var classNames5 = { "backdrop": "styles-module__backdrop___zYhcU", "fadeIn": "styles-module__fadeIn___j09Ts", "panel": "styles-module__panel___6YS8k", "slideIn": "styles-module__slideIn___0o0s-", "exiting": "styles-module__exiting___6A-Ag", "slideOut": "styles-module__slideOut___nKrBX", "header": "styles-module__header___fBbGz", "headerLeft": "styles-module__headerLeft___e0YLf", "headerTitle": "styles-module__headerTitle___oEPJa", "closeBtn": "styles-module__closeBtn___-H8ra", "tabs": "styles-module__tabs___nfuX7", "tab": "styles-module__tab___Hc-jn", "active": "styles-module__active___ZQzA5", "tabBadge": "styles-module__tabBadge___IdFDQ", "statusFilter": "styles-module__statusFilter___qtBXs", "filterChip": "styles-module__filterChip___l2s74", "filterCount": "styles-module__filterCount___KukiQ", "content": "styles-module__content___L2lRw", "card": "styles-module__card___F8qwd", "cardHeader": "styles-module__cardHeader___QOVGR", "cardAvatar": "styles-module__cardAvatar___FfKmW", "cardInfo": "styles-module__cardInfo___BmrdF", "cardMeta": "styles-module__cardMeta___7p9KD", "cardAuthor": "styles-module__cardAuthor___YvnuR", "cardTime": "styles-module__cardTime___N1Png", "cardActions": "styles-module__cardActions___7QF72", "cardAction": "styles-module__cardAction___t4b3V", "cardTitle": "styles-module__cardTitle___xJxDN", "cardScreenshot": "styles-module__cardScreenshot___I5-QL", "cardRoute": "styles-module__cardRoute___U4gB6", "cardRoutePath": "styles-module__cardRoutePath___zP-fh", "cardRouteIcon": "styles-module__cardRouteIcon___SBqGj", "cardRouteName": "styles-module__cardRouteName___BDH75", "cardStatusTime": "styles-module__cardStatusTime___S62W1", "cardFooter": "styles-module__cardFooter___wfPa4", "cardReplyDot": "styles-module__cardReplyDot___YnqzI", "cardReplyCount": "styles-module__cardReplyCount___O1khL", "statusDot": "styles-module__statusDot___l4IHG", "todo": "styles-module__todo___894P6", "inProgress": "styles-module__inProgress___IZ1mJ", "done": "styles-module__done___n4cWP", "empty": "styles-module__empty___IADrw", "emptyIcon": "styles-module__emptyIcon___1x5wT", "checkBtn": "styles-module__checkBtn___KjHxm", "checked": "styles-module__checked___8pype", "cardDone": "styles-module__cardDone___-m4w-", "backBtn": "styles-module__backBtn___PTIAl", "detailView": "styles-module__detailView___36cvH", "detailHeader": "styles-module__detailHeader___Hepgq", "detailTitle": "styles-module__detailTitle___7TvrX", "detailScreenshot": "styles-module__detailScreenshot___UPF0f", "commentsList": "styles-module__commentsList___5Uigg", "commentItem": "styles-module__commentItem___5u78u", "commentAvatar": "styles-module__commentAvatar___OatKg", "commentBody": "styles-module__commentBody___gmv1J", "commentMeta": "styles-module__commentMeta___JNJa3", "commentAuthorName": "styles-module__commentAuthorName___XNVRk", "commentTime": "styles-module__commentTime___CokGf", "commentContent": "styles-module__commentContent___yMiLR", "loadingComments": "styles-module__loadingComments___zpATD", "noComments": "styles-module__noComments___kvl90", "replyBox": "styles-module__replyBox___FO-XS", "replyInput": "styles-module__replyInput___k8C9e", "sendBtn": "styles-module__sendBtn___pBzWa", "commentImage": "styles-module__commentImage___LuH8X", "commentFileCard": "styles-module__commentFileCard___XE44y", "commentFileIcon": "styles-module__commentFileIcon___G58-y", "commentFileInfo": "styles-module__commentFileInfo___OFIhR", "commentFileName": "styles-module__commentFileName___NUoII", "commentFileSize": "styles-module__commentFileSize___sokU8", "filePreviewOverlay": "styles-module__filePreviewOverlay___5RxYd", "filePreviewModal": "styles-module__filePreviewModal___MGJLW", "filePreviewHeader": "styles-module__filePreviewHeader___E9SWJ", "filePreviewName": "styles-module__filePreviewName___z8t-L", "filePreviewActions": "styles-module__filePreviewActions___weizo", "filePreviewOpen": "styles-module__filePreviewOpen___JpaEs", "filePreviewClose": "styles-module__filePreviewClose___TFcbr", "filePreviewBody": "styles-module__filePreviewBody___gwg1S", "filePreviewIframe": "styles-module__filePreviewIframe___OQ3Oo", "filePreviewFallback": "styles-module__filePreviewFallback___U1rB2", "filePreviewFallbackIcon": "styles-module__filePreviewFallbackIcon___0--41", "lightbox": "styles-module__lightbox___8CDdt", "lightboxClose": "styles-module__lightboxClose___VGfjh", "historyFilter": "styles-module__historyFilter___IoWL4", "historyDateWrap": "styles-module__historyDateWrap___reBzb", "filterChipClear": "styles-module__filterChipClear___Sx4c3", "datePopover": "styles-module__datePopover___AYzLr", "dateInput": "styles-module__dateInput___Ofr3Y", "historyItem": "styles-module__historyItem___G4kbt", "historyDot": "styles-module__historyDot___0z439", "historyDot_created": "styles-module__historyDot_created___G-qjM", "historyDot_started": "styles-module__historyDot_started___0FJa0", "historyDot_completed": "styles-module__historyDot_completed___q-WGH", "historyBody": "styles-module__historyBody___i-k1p", "historyMeta": "styles-module__historyMeta___khk0e", "historyEvent": "styles-module__historyEvent___P6rQ5", "historyTime": "styles-module__historyTime___bWpM4", "historyTitle": "styles-module__historyTitle___gUvXd", "historyUrl": "styles-module__historyUrl___5xfKq" };
3028
+ var css6 = '@keyframes styles-module__slideIn___0o0s- {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n@keyframes styles-module__slideOut___nKrBX {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes styles-module__fadeIn___j09Ts {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.styles-module__backdrop___zYhcU {\n position: fixed;\n inset: 0;\n z-index: 100003;\n animation: styles-module__fadeIn___j09Ts 0.15s ease-out;\n}\n\n.styles-module__panel___6YS8k {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 420px;\n max-width: 100vw;\n background: #fafafa;\n z-index: 100004;\n display: flex;\n flex-direction: column;\n box-shadow: -4px 0 24px rgba(0, 0, 0, 0.08);\n animation: styles-module__slideIn___0o0s- 0.2s ease-out;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__panel___6YS8k.styles-module__exiting___6A-Ag {\n animation: styles-module__slideOut___nKrBX 0.15s ease-in forwards;\n}\n\n.styles-module__header___fBbGz {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__headerLeft___e0YLf {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.styles-module__headerTitle___oEPJa {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__closeBtn___-H8ra {\n width: 32px;\n height: 32px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__closeBtn___-H8ra:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n.styles-module__closeBtn___-H8ra svg {\n width: 18px;\n height: 18px;\n}\n\n.styles-module__tabs___nfuX7 {\n display: flex;\n padding: 0 20px;\n gap: 0;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__tab___Hc-jn {\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n border: none;\n background: none;\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: color 0.12s, border-color 0.12s;\n font-family: inherit;\n}\n.styles-module__tab___Hc-jn:hover {\n color: #374151;\n}\n.styles-module__tab___Hc-jn.styles-module__active___ZQzA5 {\n color: #18181b;\n border-bottom-color: #18181b;\n}\n\n.styles-module__tabBadge___IdFDQ {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n border-radius: 9px;\n background: #e5e7eb;\n color: #374151;\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n margin-left: 6px;\n}\n\n.styles-module__statusFilter___qtBXs {\n display: flex;\n gap: 6px;\n padding: 10px 20px;\n border-bottom: 1px solid #f3f4f6;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__filterChip___l2s74 {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n background: #f3f4f6;\n border: 1px solid transparent;\n border-radius: 16px;\n cursor: pointer;\n transition: all 0.12s;\n font-family: inherit;\n}\n.styles-module__filterChip___l2s74:hover {\n color: #374151;\n background: #e5e7eb;\n}\n.styles-module__filterChip___l2s74.styles-module__active___ZQzA5 {\n color: #18181b;\n background: #fff;\n border-color: #d1d5db;\n}\n\n.styles-module__filterCount___KukiQ {\n font-size: 11px;\n font-weight: 600;\n color: inherit;\n opacity: 0.7;\n}\n\n.styles-module__content___L2lRw {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__card___F8qwd {\n background: #fff;\n border-radius: 12px;\n border: 1px solid #e5e7eb;\n margin-bottom: 12px;\n overflow: hidden;\n transition: box-shadow 0.12s;\n cursor: pointer;\n}\n.styles-module__card___F8qwd:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.styles-module__cardHeader___QOVGR {\n padding: 14px 16px 8px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.styles-module__cardAvatar___FfKmW {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__cardInfo___BmrdF {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__cardMeta___7p9KD {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__cardAuthor___YvnuR {\n font-size: 13px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__cardTime___N1Png {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__cardActions___7QF72 {\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__cardAction___t4b3V {\n width: 26px;\n height: 26px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__cardAction___t4b3V:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__cardAction___t4b3V svg {\n width: 14px;\n height: 14px;\n}\n\n.styles-module__cardTitle___xJxDN {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n padding: 0 16px 8px;\n}\n\n.styles-module__cardScreenshot___I5-QL {\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-height: 160px;\n}\n.styles-module__cardScreenshot___I5-QL img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__cardRoute___U4gB6 {\n margin: 0 16px 10px;\n padding: 8px 12px;\n background: #f9fafb;\n border: 1px solid #f3f4f6;\n border-radius: 8px;\n font-size: 12px;\n color: #6b7280;\n line-height: 1.4;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: background 0.12s, border-color 0.12s;\n}\n.styles-module__cardRoute___U4gB6:hover {\n background: #f3f4f6;\n border-color: #d1d5db;\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRoutePath___zP-fh {\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRouteIcon___SBqGj {\n color: #3b82f6;\n}\n\n.styles-module__cardRouteName___BDH75 {\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__cardRoutePath___zP-fh {\n flex: 1;\n min-width: 0;\n color: #9ca3af;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: color 0.12s;\n}\n\n.styles-module__cardRouteIcon___SBqGj {\n flex-shrink: 0;\n color: #9ca3af;\n transition: color 0.12s;\n}\n\n.styles-module__cardStatusTime___S62W1 {\n padding: 0 16px 6px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.styles-module__cardStatusTime___S62W1 span {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__cardFooter___wfPa4 {\n padding: 8px 16px 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.styles-module__cardReplyDot___YnqzI {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #16a34a;\n flex-shrink: 0;\n}\n\n.styles-module__cardReplyCount___O1khL {\n font-size: 12px;\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__statusDot___l4IHG {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__statusDot___l4IHG.styles-module__todo___894P6 {\n background: #f59e0b;\n}\n.styles-module__statusDot___l4IHG.styles-module__inProgress___IZ1mJ {\n background: #3b82f6;\n}\n.styles-module__statusDot___l4IHG.styles-module__done___n4cWP {\n background: #16a34a;\n}\n\n.styles-module__empty___IADrw {\n text-align: center;\n padding: 48px 20px;\n color: #9ca3af;\n font-size: 13px;\n line-height: 1.6;\n}\n\n.styles-module__emptyIcon___1x5wT {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background: #f3f4f6;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 12px;\n color: #9ca3af;\n}\n.styles-module__emptyIcon___1x5wT svg {\n width: 24px;\n height: 24px;\n}\n\n.styles-module__checkBtn___KjHxm {\n width: 28px;\n height: 28px;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: transparent;\n transition: all 0.15s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__checkBtn___KjHxm svg {\n width: 14px;\n height: 14px;\n}\n.styles-module__checkBtn___KjHxm:hover {\n border-color: #16a34a;\n color: #16a34a;\n}\n.styles-module__checkBtn___KjHxm.styles-module__checked___8pype {\n border-color: #16a34a;\n background: #16a34a;\n color: #fff;\n}\n\n.styles-module__cardDone___-m4w- {\n opacity: 0.6;\n}\n.styles-module__cardDone___-m4w- .styles-module__cardTitle___xJxDN {\n text-decoration: line-through;\n color: #9ca3af;\n}\n\n.styles-module__backBtn___PTIAl {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__backBtn___PTIAl:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__detailView___36cvH {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.styles-module__detailHeader___Hepgq {\n display: flex;\n gap: 10px;\n padding: 16px 20px;\n background: #f5f5f5;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.styles-module__detailTitle___7TvrX {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n margin-top: 4px;\n}\n\n.styles-module__detailScreenshot___UPF0f {\n margin: 0 20px 0;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 180px;\n}\n.styles-module__detailScreenshot___UPF0f img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__commentsList___5Uigg {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__commentItem___5u78u {\n display: flex;\n gap: 10px;\n padding: 10px 20px;\n}\n.styles-module__commentItem___5u78u:hover {\n background: #f9fafb;\n}\n\n.styles-module__commentAvatar___OatKg {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__commentBody___gmv1J {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentMeta___JNJa3 {\n display: flex;\n gap: 6px;\n align-items: center;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthorName___XNVRk {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___CokGf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentContent___yMiLR {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.styles-module__loadingComments___zpATD, .styles-module__noComments___kvl90 {\n text-align: center;\n padding: 24px 20px;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__replyBox___FO-XS {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid #f3f4f6;\n background: #fff;\n}\n\n.styles-module__replyInput___k8C9e {\n flex: 1;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 8px 12px;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n outline: none;\n min-height: 20px;\n max-height: 80px;\n line-height: 1.5;\n transition: border-color 0.12s;\n}\n.styles-module__replyInput___k8C9e:focus {\n border-color: #18181b;\n}\n.styles-module__replyInput___k8C9e::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__sendBtn___pBzWa {\n width: 32px;\n height: 32px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #d1d5db;\n transition: color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__sendBtn___pBzWa.styles-module__active___ZQzA5 {\n color: #3b82f6;\n}\n.styles-module__sendBtn___pBzWa:hover {\n color: #3b82f6;\n}\n\n.styles-module__commentImage___LuH8X {\n margin-top: 6px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-width: 240px;\n cursor: pointer;\n transition: opacity 0.12s;\n}\n.styles-module__commentImage___LuH8X:hover {\n opacity: 0.9;\n}\n.styles-module__commentImage___LuH8X img {\n width: 100%;\n height: auto;\n display: block;\n}\n\n.styles-module__commentFileCard___XE44y {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 240px;\n}\n.styles-module__commentFileCard___XE44y:hover {\n background: #f3f4f6;\n}\n\n.styles-module__commentFileIcon___G58-y {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: #e5e7eb;\n color: #374151;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n flex-shrink: 0;\n letter-spacing: 0.5px;\n}\n\n.styles-module__commentFileInfo___OFIhR {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__commentFileName___NUoII {\n font-size: 12px;\n font-weight: 500;\n color: #1a1a1a;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__commentFileSize___sokU8 {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__filePreviewOverlay___5RxYd {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.styles-module__filePreviewModal___MGJLW {\n width: 90vw;\n max-width: 960px;\n height: 80vh;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}\n\n.styles-module__filePreviewHeader___E9SWJ {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewName___z8t-L {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__filePreviewActions___weizo {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewOpen___JpaEs {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 500;\n color: #3b82f6;\n text-decoration: none;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.12s;\n}\n.styles-module__filePreviewOpen___JpaEs:hover {\n background: #eff6ff;\n}\n\n.styles-module__filePreviewClose___TFcbr {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n font-size: 18px;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__filePreviewClose___TFcbr:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__filePreviewBody___gwg1S {\n flex: 1;\n overflow: hidden;\n}\n\n.styles-module__filePreviewIframe___OQ3Oo {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.styles-module__filePreviewFallback___U1rB2 {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 12px;\n color: #6b7280;\n font-size: 14px;\n}\n.styles-module__filePreviewFallback___U1rB2 a {\n color: #3b82f6;\n text-decoration: none;\n font-weight: 500;\n}\n.styles-module__filePreviewFallback___U1rB2 a:hover {\n text-decoration: underline;\n}\n\n.styles-module__filePreviewFallbackIcon___0--41 {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n background: #f3f4f6;\n color: #6b7280;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: 700;\n}\n\n.styles-module__lightbox___8CDdt {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n.styles-module__lightbox___8CDdt img {\n max-width: 90vw;\n max-height: 90vh;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n\n.styles-module__lightboxClose___VGfjh {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n border: none;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__lightboxClose___VGfjh:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.styles-module__historyFilter___IoWL4 {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 10px 20px;\n border-bottom: 1px solid #f3f4f6;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__historyDateWrap___reBzb {\n position: relative;\n}\n\n.styles-module__filterChipClear___Sx4c3 {\n width: 22px;\n height: 22px;\n border: none;\n background: #e5e7eb;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n color: #6b7280;\n line-height: 1;\n transition: background 0.12s;\n font-family: inherit;\n}\n.styles-module__filterChipClear___Sx4c3:hover {\n background: #d1d5db;\n}\n\n.styles-module__datePopover___AYzLr {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 10;\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n padding: 8px;\n}\n\n.styles-module__dateInput___Ofr3Y {\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n outline: none;\n cursor: pointer;\n}\n.styles-module__dateInput___Ofr3Y:focus {\n border-color: #18181b;\n}\n\n.styles-module__historyItem___G4kbt {\n display: flex;\n gap: 12px;\n padding: 12px 20px;\n position: relative;\n transition: background 0.12s;\n}\n.styles-module__historyItem___G4kbt:hover {\n background: #f9fafb;\n}\n.styles-module__historyItem___G4kbt:not(:last-child)::before {\n content: "";\n position: absolute;\n left: 29px;\n top: 24px;\n bottom: -12px;\n width: 1px;\n background: #e5e7eb;\n}\n\n.styles-module__historyDot___0z439 {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: 4px;\n background: #d1d5db;\n}\n\n.styles-module__historyDot_created___G-qjM {\n background: #6366f1;\n}\n\n.styles-module__historyDot_status_changed___jsanw {\n background: #3b82f6;\n}\n\n.styles-module__historyDot_comment_added___5-lrl {\n background: #f59e0b;\n}\n\n.styles-module__historyBody___i-k1p {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__historyMeta___khk0e {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 2px;\n}\n\n.styles-module__historyEvent___P6rQ5 {\n font-size: 12px;\n font-weight: 600;\n color: #374151;\n}\n\n.styles-module__historyTime___bWpM4 {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__historyTitle___gUvXd {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__historyUrl___5xfKq {\n font-size: 11px;\n color: #9ca3af;\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}';
3029
+ var classNames6 = { "backdrop": "styles-module__backdrop___zYhcU", "fadeIn": "styles-module__fadeIn___j09Ts", "panel": "styles-module__panel___6YS8k", "slideIn": "styles-module__slideIn___0o0s-", "exiting": "styles-module__exiting___6A-Ag", "slideOut": "styles-module__slideOut___nKrBX", "header": "styles-module__header___fBbGz", "headerLeft": "styles-module__headerLeft___e0YLf", "headerTitle": "styles-module__headerTitle___oEPJa", "closeBtn": "styles-module__closeBtn___-H8ra", "tabs": "styles-module__tabs___nfuX7", "tab": "styles-module__tab___Hc-jn", "active": "styles-module__active___ZQzA5", "tabBadge": "styles-module__tabBadge___IdFDQ", "statusFilter": "styles-module__statusFilter___qtBXs", "filterChip": "styles-module__filterChip___l2s74", "filterCount": "styles-module__filterCount___KukiQ", "content": "styles-module__content___L2lRw", "card": "styles-module__card___F8qwd", "cardHeader": "styles-module__cardHeader___QOVGR", "cardAvatar": "styles-module__cardAvatar___FfKmW", "cardInfo": "styles-module__cardInfo___BmrdF", "cardMeta": "styles-module__cardMeta___7p9KD", "cardAuthor": "styles-module__cardAuthor___YvnuR", "cardTime": "styles-module__cardTime___N1Png", "cardActions": "styles-module__cardActions___7QF72", "cardAction": "styles-module__cardAction___t4b3V", "cardTitle": "styles-module__cardTitle___xJxDN", "cardScreenshot": "styles-module__cardScreenshot___I5-QL", "cardRoute": "styles-module__cardRoute___U4gB6", "cardRoutePath": "styles-module__cardRoutePath___zP-fh", "cardRouteIcon": "styles-module__cardRouteIcon___SBqGj", "cardRouteName": "styles-module__cardRouteName___BDH75", "cardStatusTime": "styles-module__cardStatusTime___S62W1", "cardFooter": "styles-module__cardFooter___wfPa4", "cardReplyDot": "styles-module__cardReplyDot___YnqzI", "cardReplyCount": "styles-module__cardReplyCount___O1khL", "statusDot": "styles-module__statusDot___l4IHG", "todo": "styles-module__todo___894P6", "inProgress": "styles-module__inProgress___IZ1mJ", "done": "styles-module__done___n4cWP", "empty": "styles-module__empty___IADrw", "emptyIcon": "styles-module__emptyIcon___1x5wT", "checkBtn": "styles-module__checkBtn___KjHxm", "checked": "styles-module__checked___8pype", "cardDone": "styles-module__cardDone___-m4w-", "backBtn": "styles-module__backBtn___PTIAl", "detailView": "styles-module__detailView___36cvH", "detailHeader": "styles-module__detailHeader___Hepgq", "detailTitle": "styles-module__detailTitle___7TvrX", "detailScreenshot": "styles-module__detailScreenshot___UPF0f", "commentsList": "styles-module__commentsList___5Uigg", "commentItem": "styles-module__commentItem___5u78u", "commentAvatar": "styles-module__commentAvatar___OatKg", "commentBody": "styles-module__commentBody___gmv1J", "commentMeta": "styles-module__commentMeta___JNJa3", "commentAuthorName": "styles-module__commentAuthorName___XNVRk", "commentTime": "styles-module__commentTime___CokGf", "commentContent": "styles-module__commentContent___yMiLR", "loadingComments": "styles-module__loadingComments___zpATD", "noComments": "styles-module__noComments___kvl90", "replyBox": "styles-module__replyBox___FO-XS", "replyInput": "styles-module__replyInput___k8C9e", "sendBtn": "styles-module__sendBtn___pBzWa", "commentImage": "styles-module__commentImage___LuH8X", "commentFileCard": "styles-module__commentFileCard___XE44y", "commentFileIcon": "styles-module__commentFileIcon___G58-y", "commentFileInfo": "styles-module__commentFileInfo___OFIhR", "commentFileName": "styles-module__commentFileName___NUoII", "commentFileSize": "styles-module__commentFileSize___sokU8", "filePreviewOverlay": "styles-module__filePreviewOverlay___5RxYd", "filePreviewModal": "styles-module__filePreviewModal___MGJLW", "filePreviewHeader": "styles-module__filePreviewHeader___E9SWJ", "filePreviewName": "styles-module__filePreviewName___z8t-L", "filePreviewActions": "styles-module__filePreviewActions___weizo", "filePreviewOpen": "styles-module__filePreviewOpen___JpaEs", "filePreviewClose": "styles-module__filePreviewClose___TFcbr", "filePreviewBody": "styles-module__filePreviewBody___gwg1S", "filePreviewIframe": "styles-module__filePreviewIframe___OQ3Oo", "filePreviewFallback": "styles-module__filePreviewFallback___U1rB2", "filePreviewFallbackIcon": "styles-module__filePreviewFallbackIcon___0--41", "lightbox": "styles-module__lightbox___8CDdt", "lightboxClose": "styles-module__lightboxClose___VGfjh", "historyFilter": "styles-module__historyFilter___IoWL4", "historyDateWrap": "styles-module__historyDateWrap___reBzb", "filterChipClear": "styles-module__filterChipClear___Sx4c3", "datePopover": "styles-module__datePopover___AYzLr", "dateInput": "styles-module__dateInput___Ofr3Y", "historyItem": "styles-module__historyItem___G4kbt", "historyDot": "styles-module__historyDot___0z439", "historyDot_created": "styles-module__historyDot_created___G-qjM", "historyDot_status_changed": "styles-module__historyDot_status_changed___jsanw", "historyDot_comment_added": "styles-module__historyDot_comment_added___5-lrl", "historyBody": "styles-module__historyBody___i-k1p", "historyMeta": "styles-module__historyMeta___khk0e", "historyEvent": "styles-module__historyEvent___P6rQ5", "historyTime": "styles-module__historyTime___bWpM4", "historyTitle": "styles-module__historyTitle___gUvXd", "historyUrl": "styles-module__historyUrl___5xfKq" };
2991
3030
  if (typeof document !== "undefined") {
2992
3031
  let style = document.getElementById("impakers-debug-styles-inbox-panel-styles");
2993
3032
  if (!style) {
@@ -2995,12 +3034,12 @@ if (typeof document !== "undefined") {
2995
3034
  style.id = "impakers-debug-styles-inbox-panel-styles";
2996
3035
  document.head.appendChild(style);
2997
3036
  }
2998
- style.textContent = css5;
3037
+ style.textContent = css6;
2999
3038
  }
3000
- var styles_module_default5 = classNames5;
3039
+ var styles_module_default6 = classNames6;
3001
3040
 
3002
3041
  // src/components/inbox-panel/index.tsx
3003
- var import_jsx_runtime6 = require("react/jsx-runtime");
3042
+ var import_jsx_runtime7 = require("react/jsx-runtime");
3004
3043
  function ImageLightbox({ src, onClose }) {
3005
3044
  (0, import_react5.useEffect)(() => {
3006
3045
  const handler = (e) => {
@@ -3009,9 +3048,9 @@ function ImageLightbox({ src, onClose }) {
3009
3048
  document.addEventListener("keydown", handler);
3010
3049
  return () => document.removeEventListener("keydown", handler);
3011
3050
  }, [onClose]);
3012
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.lightbox, onClick: onClose, "data-impakers-debug": "", children: [
3013
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src, alt: "enlarged", onClick: (e) => e.stopPropagation() }),
3014
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: styles_module_default5.lightboxClose, onClick: onClose, type: "button", children: "\xD7" })
3051
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.lightbox, onClick: onClose, "data-impakers-debug": "", children: [
3052
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src, alt: "enlarged", onClick: (e) => e.stopPropagation() }),
3053
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.lightboxClose, onClick: onClose, type: "button", children: "\xD7" })
3015
3054
  ] });
3016
3055
  }
3017
3056
  function formatFileSize2(bytes) {
@@ -3060,25 +3099,25 @@ function FilePreviewModal({
3060
3099
  return () => document.removeEventListener("keydown", handler);
3061
3100
  }, [onClose]);
3062
3101
  const previewSrc = getPreviewSrc(fileUrl, fileType, fileSource);
3063
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.filePreviewOverlay, onClick: onClose, "data-impakers-debug": "", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.filePreviewModal, onClick: (e) => e.stopPropagation(), children: [
3064
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.filePreviewHeader, children: [
3065
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.filePreviewName, children: fileName }),
3066
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.filePreviewActions, children: [
3067
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("a", { href: fileUrl, target: "_blank", rel: "noopener noreferrer", className: styles_module_default5.filePreviewOpen, children: [
3068
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "14", height: "14", children: [
3069
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }),
3070
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "15 3 21 3 21 9" }),
3071
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
3102
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.filePreviewOverlay, onClick: onClose, "data-impakers-debug": "", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewModal, onClick: (e) => e.stopPropagation(), children: [
3103
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewHeader, children: [
3104
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filePreviewName, children: fileName }),
3105
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewActions, children: [
3106
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("a", { href: fileUrl, target: "_blank", rel: "noopener noreferrer", className: styles_module_default6.filePreviewOpen, children: [
3107
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "14", height: "14", children: [
3108
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }),
3109
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "15 3 21 3 21 9" }),
3110
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
3072
3111
  ] }),
3073
3112
  "\uC5F4\uAE30"
3074
3113
  ] }),
3075
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: styles_module_default5.filePreviewClose, onClick: onClose, type: "button", children: "\xD7" })
3114
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.filePreviewClose, onClick: onClose, type: "button", children: "\xD7" })
3076
3115
  ] })
3077
3116
  ] }),
3078
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.filePreviewBody, children: previewSrc ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("iframe", { src: previewSrc, className: styles_module_default5.filePreviewIframe, title: fileName }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.filePreviewFallback, children: [
3079
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.filePreviewFallbackIcon, children: getFileIcon2(fileType) }),
3080
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: "\uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uD30C\uC77C \uD615\uC2DD\uC785\uB2C8\uB2E4" }),
3081
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("a", { href: fileUrl, target: "_blank", rel: "noopener noreferrer", children: "\uD30C\uC77C \uC5F4\uAE30" })
3117
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.filePreviewBody, children: previewSrc ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("iframe", { src: previewSrc, className: styles_module_default6.filePreviewIframe, title: fileName }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewFallback, children: [
3118
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filePreviewFallbackIcon, children: getFileIcon2(fileType) }),
3119
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: "\uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uD30C\uC77C \uD615\uC2DD\uC785\uB2C8\uB2E4" }),
3120
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("a", { href: fileUrl, target: "_blank", rel: "noopener noreferrer", children: "\uD30C\uC77C \uC5F4\uAE30" })
3082
3121
  ] }) })
3083
3122
  ] }) });
3084
3123
  }
@@ -3106,13 +3145,17 @@ function InboxPanel({
3106
3145
  endpoint,
3107
3146
  currentUserName,
3108
3147
  currentUserId,
3109
- onClose
3148
+ onClose,
3149
+ onHistoryViewed,
3150
+ newNotiCount
3110
3151
  }) {
3111
3152
  const [tab, setTab] = (0, import_react5.useState)("page");
3112
3153
  const [statusFilter, setStatusFilter] = (0, import_react5.useState)("todo");
3113
3154
  const [historyDate, setHistoryDate] = (0, import_react5.useState)("");
3114
3155
  const [showDatePicker, setShowDatePicker] = (0, import_react5.useState)(false);
3115
3156
  const datePickerRef = (0, import_react5.useRef)(null);
3157
+ const [historyEvents, setHistoryEvents] = (0, import_react5.useState)([]);
3158
+ const [historyLoading, setHistoryLoading] = (0, import_react5.useState)(false);
3116
3159
  const [exiting, setExiting] = (0, import_react5.useState)(false);
3117
3160
  const [selectedItem, setSelectedItem] = (0, import_react5.useState)(null);
3118
3161
  const [comments, setComments] = (0, import_react5.useState)([]);
@@ -3198,96 +3241,64 @@ function InboxPanel({
3198
3241
  const todoCount = rawItems.filter((item) => item.status === "todo").length;
3199
3242
  const inProgressCount = rawItems.filter((item) => item.status === "in_progress").length;
3200
3243
  const doneCount = rawItems.filter((item) => item.status === "done").length;
3201
- const historyEvents = (0, import_react5.useMemo)(() => {
3202
- const allSrc = allItems.length > 0 ? allItems : pageItems;
3203
- const events = [];
3204
- for (const item of allSrc) {
3205
- events.push({
3206
- id: item.id,
3207
- title: item.title,
3208
- authorName: item.authorName,
3209
- event: "created",
3210
- timestamp: item.createdAt,
3211
- feedbackUrl: item.feedbackUrl
3212
- });
3213
- if (item.startedAt) {
3214
- events.push({
3215
- id: item.id,
3216
- title: item.title,
3217
- authorName: item.authorName,
3218
- event: "started",
3219
- timestamp: item.startedAt,
3220
- feedbackUrl: item.feedbackUrl
3221
- });
3222
- }
3223
- if (item.completedAt) {
3224
- events.push({
3225
- id: item.id,
3226
- title: item.title,
3227
- authorName: item.authorName,
3228
- event: "completed",
3229
- timestamp: item.completedAt,
3230
- feedbackUrl: item.feedbackUrl
3231
- });
3232
- }
3233
- }
3234
- const sorted = events.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
3235
- if (!historyDate) return sorted;
3236
- return sorted.filter((ev) => ev.timestamp.startsWith(historyDate));
3237
- }, [allItems, pageItems, historyDate]);
3244
+ (0, import_react5.useEffect)(() => {
3245
+ if (tab !== "history") return;
3246
+ setHistoryLoading(true);
3247
+ fetchHistory(endpoint, { date: historyDate || void 0, limit: 200 }).then(setHistoryEvents).catch(() => setHistoryEvents([])).finally(() => setHistoryLoading(false));
3248
+ }, [tab, historyDate, endpoint]);
3238
3249
  if (typeof document === "undefined") return null;
3239
3250
  return (0, import_react_dom.createPortal)(
3240
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { "data-impakers-debug": "", children: [
3241
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.backdrop, onClick: handleClose }),
3242
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: `${styles_module_default5.panel} ${exiting ? styles_module_default5.exiting : ""}`, "data-impakers-debug": "", children: [
3243
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.header, children: [
3244
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.headerLeft, children: [
3245
- selectedItem && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: styles_module_default5.backBtn, onClick: handleClose, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "16", height: "16", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "15 18 9 12 15 6" }) }) }),
3246
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.headerTitle, children: selectedItem ? selectedItem.title.replace(/^\[피드백\]\s*/, "") : serviceName || "Feedback" })
3251
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { "data-impakers-debug": "", children: [
3252
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.backdrop, onClick: handleClose }),
3253
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: `${styles_module_default6.panel} ${exiting ? styles_module_default6.exiting : ""}`, "data-impakers-debug": "", children: [
3254
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.header, children: [
3255
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.headerLeft, children: [
3256
+ selectedItem && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.backBtn, onClick: handleClose, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "16", height: "16", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "15 18 9 12 15 6" }) }) }),
3257
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.headerTitle, children: selectedItem ? "\uD53C\uB4DC\uBC31 \uC0C1\uC138" : serviceName || "Feedback" })
3247
3258
  ] }),
3248
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: styles_module_default5.closeBtn, onClick: () => {
3259
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.closeBtn, onClick: () => {
3249
3260
  setExiting(true);
3250
3261
  setTimeout(() => onClose(), 150);
3251
- }, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) })
3262
+ }, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) })
3252
3263
  ] }),
3253
- selectedItem ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.detailView, children: [
3254
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.detailHeader, children: [
3255
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.cardAvatar, children: getInitials2(selectedItem.authorName) }),
3256
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { children: [
3257
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.cardMeta, children: [
3258
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.cardAuthor, children: selectedItem.authorName }),
3259
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.cardTime, children: formatTime2(selectedItem.createdAt) })
3264
+ selectedItem ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.detailView, children: [
3265
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.detailHeader, children: [
3266
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardAvatar, children: getInitials2(selectedItem.authorName) }),
3267
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
3268
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardMeta, children: [
3269
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardAuthor, children: selectedItem.authorName }),
3270
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardTime, children: formatTime2(selectedItem.createdAt) })
3260
3271
  ] }),
3261
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.detailTitle, children: selectedItem.title.replace(/^\[피드백\]\s*/, "") })
3272
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.detailTitle, children: selectedItem.title.replace(/^\[피드백\]\s*/, "") })
3262
3273
  ] })
3263
3274
  ] }),
3264
- selectedItem.screenshot && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.detailScreenshot, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: selectedItem.screenshot, alt: "screenshot" }) }),
3265
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.commentsList, children: [
3266
- loadingComments && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.loadingComments, children: "\uB313\uAE00 \uB85C\uB529 \uC911..." }),
3267
- !loadingComments && comments.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.noComments, children: "\uC544\uC9C1 \uB313\uAE00\uC774 \uC5C6\uC2B5\uB2C8\uB2E4" }),
3268
- comments.map((c) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.commentItem, children: [
3269
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.commentAvatar, style: { width: 22, height: 22, fontSize: 10 }, children: getInitials2(c.authorName) }),
3270
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.commentBody, children: [
3271
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.commentMeta, children: [
3272
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.commentAuthorName, children: c.authorName }),
3273
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.commentTime, children: formatTime2(c.createdAt) })
3275
+ selectedItem.screenshot && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.detailScreenshot, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: selectedItem.screenshot, alt: "screenshot" }) }),
3276
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentsList, children: [
3277
+ loadingComments && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LoadingSpinner, { message: "\uB313\uAE00 \uB85C\uB529 \uC911..." }),
3278
+ !loadingComments && comments.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.noComments, children: "\uC544\uC9C1 \uB313\uAE00\uC774 \uC5C6\uC2B5\uB2C8\uB2E4" }),
3279
+ comments.map((c) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentItem, children: [
3280
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.commentAvatar, style: { width: 22, height: 22, fontSize: 10 }, children: getInitials2(c.authorName) }),
3281
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentBody, children: [
3282
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentMeta, children: [
3283
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentAuthorName, children: c.authorName }),
3284
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentTime, children: formatTime2(c.createdAt) })
3274
3285
  ] }),
3275
- c.content && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.commentContent, children: c.content }),
3276
- c.imageUrl && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3286
+ c.content && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.commentContent, children: c.content }),
3287
+ c.imageUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3277
3288
  "div",
3278
3289
  {
3279
- className: styles_module_default5.commentImage,
3290
+ className: styles_module_default6.commentImage,
3280
3291
  onClick: (e) => {
3281
3292
  e.stopPropagation();
3282
3293
  setLightboxSrc(c.imageUrl);
3283
3294
  },
3284
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: c.imageUrl, alt: "attachment" })
3295
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: c.imageUrl, alt: "attachment" })
3285
3296
  }
3286
3297
  ),
3287
- c.fileUrl && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3298
+ c.fileUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3288
3299
  "div",
3289
3300
  {
3290
- className: styles_module_default5.commentFileCard,
3301
+ className: styles_module_default6.commentFileCard,
3291
3302
  onClick: (e) => {
3292
3303
  e.stopPropagation();
3293
3304
  setFilePreview({
@@ -3298,24 +3309,24 @@ function InboxPanel({
3298
3309
  });
3299
3310
  },
3300
3311
  children: [
3301
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.commentFileIcon, children: getFileIcon2(c.fileType || "") }),
3302
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: styles_module_default5.commentFileInfo, children: [
3303
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.commentFileName, children: c.fileName || "\uD30C\uC77C" }),
3304
- c.fileSize != null && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.commentFileSize, children: formatFileSize2(c.fileSize) })
3312
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentFileIcon, children: getFileIcon2(c.fileType || "") }),
3313
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: styles_module_default6.commentFileInfo, children: [
3314
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentFileName, children: c.fileName || "\uD30C\uC77C" }),
3315
+ c.fileSize != null && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentFileSize, children: formatFileSize2(c.fileSize) })
3305
3316
  ] })
3306
3317
  ]
3307
3318
  }
3308
3319
  )
3309
3320
  ] })
3310
3321
  ] }, c.id)),
3311
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { ref: commentsEndRef })
3322
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { ref: commentsEndRef })
3312
3323
  ] }),
3313
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.replyBox, children: [
3314
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3324
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.replyBox, children: [
3325
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3315
3326
  "textarea",
3316
3327
  {
3317
3328
  ref: replyRef,
3318
- className: styles_module_default5.replyInput,
3329
+ className: styles_module_default6.replyInput,
3319
3330
  placeholder: "Reply...",
3320
3331
  value: replyText,
3321
3332
  onChange: (e) => {
@@ -3328,55 +3339,61 @@ function InboxPanel({
3328
3339
  rows: 2
3329
3340
  }
3330
3341
  ),
3331
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3342
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3332
3343
  "button",
3333
3344
  {
3334
- className: `${styles_module_default5.sendBtn} ${replyText.trim() ? styles_module_default5.active : ""}`,
3345
+ className: `${styles_module_default6.sendBtn} ${replyText.trim() ? styles_module_default6.active : ""}`,
3335
3346
  onClick: handleSendReply,
3336
3347
  disabled: !replyText.trim(),
3337
3348
  type: "button",
3338
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "16", height: "16", children: [
3339
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "22", y1: "2", x2: "11", y2: "13" }),
3340
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })
3349
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "16", height: "16", children: [
3350
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "22", y1: "2", x2: "11", y2: "13" }),
3351
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })
3341
3352
  ] })
3342
3353
  }
3343
3354
  )
3344
3355
  ] })
3345
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
3346
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.tabs, children: [
3347
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("button", { className: `${styles_module_default5.tab} ${tab === "page" ? styles_module_default5.active : ""}`, onClick: () => setTab("page"), type: "button", children: [
3356
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
3357
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.tabs, children: [
3358
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: `${styles_module_default6.tab} ${tab === "page" ? styles_module_default6.active : ""}`, onClick: () => setTab("page"), type: "button", children: [
3348
3359
  "This Page",
3349
- pageItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.tabBadge, children: pageItems.length })
3360
+ pageItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.tabBadge, children: pageItems.length })
3350
3361
  ] }),
3351
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("button", { className: `${styles_module_default5.tab} ${tab === "all" ? styles_module_default5.active : ""}`, onClick: () => setTab("all"), type: "button", children: [
3362
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: `${styles_module_default6.tab} ${tab === "all" ? styles_module_default6.active : ""}`, onClick: () => setTab("all"), type: "button", children: [
3352
3363
  "All",
3353
- allItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.tabBadge, children: allItems.length })
3364
+ allItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.tabBadge, children: allItems.length })
3354
3365
  ] }),
3355
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: `${styles_module_default5.tab} ${tab === "history" ? styles_module_default5.active : ""}`, onClick: () => setTab("history"), type: "button", children: "History" })
3366
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: `${styles_module_default6.tab} ${tab === "history" ? styles_module_default6.active : ""}`, onClick: () => {
3367
+ setTab("history");
3368
+ onHistoryViewed?.();
3369
+ }, type: "button", children: [
3370
+ "History",
3371
+ newNotiCount && newNotiCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.tabBadge, children: newNotiCount }) : null
3372
+ ] })
3356
3373
  ] }),
3357
3374
  tab === "history" ? (
3358
3375
  /* === History 뷰 === */
3359
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
3360
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.historyFilter, children: [
3361
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.historyDateWrap, ref: datePickerRef, children: [
3362
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3376
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
3377
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyFilter, children: [
3378
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyDateWrap, ref: datePickerRef, children: [
3379
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3363
3380
  "button",
3364
3381
  {
3365
- className: `${styles_module_default5.filterChip} ${historyDate ? styles_module_default5.active : ""}`,
3382
+ className: `${styles_module_default6.filterChip} ${historyDate ? styles_module_default6.active : ""}`,
3366
3383
  onClick: () => setShowDatePicker((v) => !v),
3367
3384
  type: "button",
3368
3385
  children: [
3369
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "13", height: "13", children: [
3370
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }),
3371
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "16", y1: "2", x2: "16", y2: "6" }),
3372
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "8", y1: "2", x2: "8", y2: "6" }),
3373
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "3", y1: "10", x2: "21", y2: "10" })
3386
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "13", height: "13", children: [
3387
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }),
3388
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "16", y1: "2", x2: "16", y2: "6" }),
3389
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "8", y1: "2", x2: "8", y2: "6" }),
3390
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "3", y1: "10", x2: "21", y2: "10" })
3374
3391
  ] }),
3375
3392
  historyDate ? `${new Date(historyDate).getMonth() + 1}/${new Date(historyDate).getDate()}` : "\uB0A0\uC9DC"
3376
3393
  ]
3377
3394
  }
3378
3395
  ),
3379
- showDatePicker && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.datePopover, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3396
+ showDatePicker && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.datePopover, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3380
3397
  "input",
3381
3398
  {
3382
3399
  type: "date",
@@ -3385,15 +3402,15 @@ function InboxPanel({
3385
3402
  setHistoryDate(e.target.value);
3386
3403
  setShowDatePicker(false);
3387
3404
  },
3388
- className: styles_module_default5.dateInput,
3405
+ className: styles_module_default6.dateInput,
3389
3406
  autoFocus: true
3390
3407
  }
3391
3408
  ) })
3392
3409
  ] }),
3393
- historyDate && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3410
+ historyDate && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3394
3411
  "button",
3395
3412
  {
3396
- className: styles_module_default5.filterChipClear,
3413
+ className: styles_module_default6.filterChipClear,
3397
3414
  onClick: () => setHistoryDate(""),
3398
3415
  type: "button",
3399
3416
  title: "\uD544\uD130 \uCD08\uAE30\uD654",
@@ -3401,112 +3418,114 @@ function InboxPanel({
3401
3418
  }
3402
3419
  )
3403
3420
  ] }),
3404
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.content, children: historyEvents.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.empty, children: [
3405
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.emptyIcon, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
3406
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
3407
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "12 6 12 12 16 14" })
3421
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.content, children: historyLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.empty, children: "\uB85C\uB529 \uC911..." }) : historyEvents.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.empty, children: [
3422
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.emptyIcon, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
3423
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
3424
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "12 6 12 12 16 14" })
3408
3425
  ] }) }),
3409
3426
  "\uD788\uC2A4\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4"
3410
- ] }) : historyEvents.map((ev, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.historyItem, children: [
3411
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: `${styles_module_default5.historyDot} ${styles_module_default5[`historyDot_${ev.event}`]}` }),
3412
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.historyBody, children: [
3413
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.historyMeta, children: [
3414
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: styles_module_default5.historyEvent, children: [
3415
- ev.event === "created" && "\uD53C\uB4DC\uBC31 \uC0DD\uC131",
3416
- ev.event === "started" && "\uC9C4\uD589 \uC2DC\uC791",
3417
- ev.event === "completed" && "\uC644\uB8CC \uCC98\uB9AC"
3427
+ ] }) : historyEvents.map((ev, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyItem, children: [
3428
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: `${styles_module_default6.historyDot} ${styles_module_default6[`historyDot_${ev.action}`]}` }),
3429
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyBody, children: [
3430
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyMeta, children: [
3431
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: styles_module_default6.historyEvent, children: [
3432
+ ev.action === "created" && "\uD53C\uB4DC\uBC31 \uC0DD\uC131",
3433
+ ev.action === "status_changed" && ev.toStatus === "in_progress" && "\uC9C4\uD589 \uC2DC\uC791",
3434
+ ev.action === "status_changed" && ev.toStatus === "done" && "\uC644\uB8CC \uCC98\uB9AC",
3435
+ ev.action === "status_changed" && ev.toStatus === "todo" && "\uC7AC\uC624\uD508",
3436
+ ev.action === "comment_added" && `\uB313\uAE00 (${ev.actorName || "\uC775\uBA85"})`
3418
3437
  ] }),
3419
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.historyTime, children: formatTime2(ev.timestamp) })
3438
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.historyTime, children: formatTime2(ev.createdAt) })
3420
3439
  ] }),
3421
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.historyTitle, children: ev.title.replace(/^\[피드백\]\s*/, "") }),
3422
- ev.feedbackUrl && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.historyUrl, children: ev.feedbackUrl })
3440
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.historyTitle, children: (ev.taskTitle || "").replace(/^\[피드백\]\s*/, "") }),
3441
+ ev.feedbackUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.historyUrl, children: ev.feedbackUrl })
3423
3442
  ] })
3424
- ] }, `${ev.id}-${ev.event}-${i}`)) })
3443
+ ] }, `${ev.id}-${ev.action}-${i}`)) })
3425
3444
  ] })
3426
- ) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
3427
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.statusFilter, children: [
3428
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3445
+ ) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
3446
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.statusFilter, children: [
3447
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3429
3448
  "button",
3430
3449
  {
3431
- className: `${styles_module_default5.filterChip} ${statusFilter === "todo" ? styles_module_default5.active : ""}`,
3450
+ className: `${styles_module_default6.filterChip} ${statusFilter === "todo" ? styles_module_default6.active : ""}`,
3432
3451
  onClick: () => setStatusFilter("todo"),
3433
3452
  type: "button",
3434
3453
  children: [
3435
3454
  "\uC9C4\uD589\uC804",
3436
- todoCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.filterCount, children: todoCount })
3455
+ todoCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filterCount, children: todoCount })
3437
3456
  ]
3438
3457
  }
3439
3458
  ),
3440
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3459
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3441
3460
  "button",
3442
3461
  {
3443
- className: `${styles_module_default5.filterChip} ${statusFilter === "in_progress" ? styles_module_default5.active : ""}`,
3462
+ className: `${styles_module_default6.filterChip} ${statusFilter === "in_progress" ? styles_module_default6.active : ""}`,
3444
3463
  onClick: () => setStatusFilter("in_progress"),
3445
3464
  type: "button",
3446
3465
  children: [
3447
3466
  "\uC9C4\uD589\uC911",
3448
- inProgressCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.filterCount, children: inProgressCount })
3467
+ inProgressCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filterCount, children: inProgressCount })
3449
3468
  ]
3450
3469
  }
3451
3470
  ),
3452
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3471
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3453
3472
  "button",
3454
3473
  {
3455
- className: `${styles_module_default5.filterChip} ${statusFilter === "done" ? styles_module_default5.active : ""}`,
3474
+ className: `${styles_module_default6.filterChip} ${statusFilter === "done" ? styles_module_default6.active : ""}`,
3456
3475
  onClick: () => setStatusFilter("done"),
3457
3476
  type: "button",
3458
3477
  children: [
3459
3478
  "\uC644\uB8CC",
3460
- doneCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.filterCount, children: doneCount })
3479
+ doneCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filterCount, children: doneCount })
3461
3480
  ]
3462
3481
  }
3463
3482
  )
3464
3483
  ] }),
3465
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.content, children: items.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.empty, children: [
3466
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.emptyIcon, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z" }) }) }),
3484
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.content, children: items.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.empty, children: [
3485
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.emptyIcon, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z" }) }) }),
3467
3486
  tab === "page" ? "\uC774 \uD398\uC774\uC9C0\uC5D0 \uD53C\uB4DC\uBC31\uC774 \uC5C6\uC2B5\uB2C8\uB2E4" : "\uD53C\uB4DC\uBC31\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"
3468
- ] }) : items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: `${styles_module_default5.card} ${item.status === "done" ? styles_module_default5.cardDone : ""}`, onClick: () => handleItemClick(item), children: [
3469
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.cardHeader, children: [
3470
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.cardAvatar, children: getInitials2(item.authorName) }),
3471
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.cardInfo, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.cardMeta, children: [
3472
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.cardAuthor, children: item.authorName }),
3473
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.cardTime, children: formatTime2(item.createdAt) })
3487
+ ] }) : items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: `${styles_module_default6.card} ${item.status === "done" ? styles_module_default6.cardDone : ""}`, onClick: () => handleItemClick(item), children: [
3488
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardHeader, children: [
3489
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardAvatar, children: getInitials2(item.authorName) }),
3490
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardInfo, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardMeta, children: [
3491
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardAuthor, children: item.authorName }),
3492
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardTime, children: formatTime2(item.createdAt) })
3474
3493
  ] }) })
3475
3494
  ] }),
3476
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.cardTitle, children: item.title.replace(/^\[피드백\]\s*/, "") }),
3477
- item.screenshot && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: styles_module_default5.cardScreenshot, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: item.screenshot, alt: "screenshot" }) }),
3478
- tab === "all" && item.feedbackUrl && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3495
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardTitle, children: item.title.replace(/^\[피드백\]\s*/, "") }),
3496
+ item.screenshot && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardScreenshot, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: item.screenshot, alt: "screenshot" }) }),
3497
+ tab === "all" && item.feedbackUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3479
3498
  "div",
3480
3499
  {
3481
- className: styles_module_default5.cardRoute,
3500
+ className: styles_module_default6.cardRoute,
3482
3501
  onClick: (e) => {
3483
3502
  e.stopPropagation();
3484
3503
  window.location.href = item.feedbackUrl;
3485
3504
  },
3486
3505
  title: "\uD398\uC774\uC9C0\uB85C \uC774\uB3D9",
3487
3506
  children: [
3488
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.cardRoutePath, children: item.feedbackUrl }),
3489
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { className: styles_module_default5.cardRouteIcon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "12", height: "12", children: [
3490
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }),
3491
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "15 3 21 3 21 9" }),
3492
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
3507
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardRoutePath, children: item.feedbackUrl }),
3508
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { className: styles_module_default6.cardRouteIcon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "12", height: "12", children: [
3509
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }),
3510
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "15 3 21 3 21 9" }),
3511
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
3493
3512
  ] })
3494
3513
  ]
3495
3514
  }
3496
3515
  ),
3497
- (item.startedAt || item.completedAt) && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.cardStatusTime, children: [
3498
- item.startedAt && item.status !== "todo" && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
3516
+ (item.startedAt || item.completedAt) && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardStatusTime, children: [
3517
+ item.startedAt && item.status !== "todo" && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { children: [
3499
3518
  "\uC9C4\uD589 \uC2DC\uC791: ",
3500
3519
  formatTime2(item.startedAt)
3501
3520
  ] }),
3502
- item.completedAt && item.status === "done" && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
3521
+ item.completedAt && item.status === "done" && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { children: [
3503
3522
  "\uC644\uB8CC: ",
3504
3523
  formatTime2(item.completedAt)
3505
3524
  ] })
3506
3525
  ] }),
3507
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: styles_module_default5.cardFooter, children: [
3508
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.cardReplyDot }),
3509
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: styles_module_default5.cardReplyCount, children: [
3526
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardFooter, children: [
3527
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardReplyDot }),
3528
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: styles_module_default6.cardReplyCount, children: [
3510
3529
  item.commentCount,
3511
3530
  " ",
3512
3531
  item.commentCount === 1 ? "Reply" : "Replies"
@@ -3516,8 +3535,8 @@ function InboxPanel({
3516
3535
  ] })
3517
3536
  ] })
3518
3537
  ] }),
3519
- lightboxSrc && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ImageLightbox, { src: lightboxSrc, onClose: () => setLightboxSrc(null) }),
3520
- filePreview && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3538
+ lightboxSrc && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ImageLightbox, { src: lightboxSrc, onClose: () => setLightboxSrc(null) }),
3539
+ filePreview && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3521
3540
  FilePreviewModal,
3522
3541
  {
3523
3542
  fileUrl: filePreview.url,
@@ -3569,8 +3588,8 @@ var MARKER_COLORS = [
3569
3588
  ];
3570
3589
 
3571
3590
  // src/components/settings-panel/styles.module.scss
3572
- var css6 = '@keyframes styles-module__panelIn___SmRh6 {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n.styles-module__backdrop___--cMp {\n position: fixed;\n inset: 0;\n z-index: 100005;\n}\n\n.styles-module__panel___z6xiJ {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 280px;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);\n z-index: 100006;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__panelIn___SmRh6 0.15s ease-out;\n -webkit-font-smoothing: antialiased;\n}\n\n.styles-module__header___NkOur {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.styles-module__title___tsKZw {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__closeBtn___-OQ4Y {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n}\n.styles-module__closeBtn___-OQ4Y:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__body___9pyCP {\n padding: 12px 16px 16px;\n}\n\n.styles-module__field___vnQMl {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.styles-module__fieldLabel___2WUKB {\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__toggle___uWsqC {\n width: 40px;\n height: 22px;\n border-radius: 11px;\n background: #d1d5db;\n border: none;\n cursor: pointer;\n position: relative;\n transition: background 0.2s;\n padding: 0;\n}\n.styles-module__toggle___uWsqC.styles-module__on___W27kf {\n background: #18181b;\n}\n\n.styles-module__toggleThumb___wyckC {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: #fff;\n transition: transform 0.2s;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.styles-module__on___W27kf .styles-module__toggleThumb___wyckC {\n transform: translateX(18px);\n}\n\n.styles-module__colors___vgFGZ {\n display: flex;\n gap: 6px;\n}\n\n.styles-module__colorBtn___N7dGu {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n transition: transform 0.12s, border-color 0.12s;\n padding: 0;\n}\n.styles-module__colorBtn___N7dGu:hover {\n transform: scale(1.15);\n}\n.styles-module__colorBtn___N7dGu.styles-module__selected___0tVDH {\n border-color: #18181b;\n transform: scale(1.15);\n}';
3573
- var classNames6 = { "backdrop": "styles-module__backdrop___--cMp", "panel": "styles-module__panel___z6xiJ", "panelIn": "styles-module__panelIn___SmRh6", "header": "styles-module__header___NkOur", "title": "styles-module__title___tsKZw", "closeBtn": "styles-module__closeBtn___-OQ4Y", "body": "styles-module__body___9pyCP", "field": "styles-module__field___vnQMl", "fieldLabel": "styles-module__fieldLabel___2WUKB", "toggle": "styles-module__toggle___uWsqC", "on": "styles-module__on___W27kf", "toggleThumb": "styles-module__toggleThumb___wyckC", "colors": "styles-module__colors___vgFGZ", "colorBtn": "styles-module__colorBtn___N7dGu", "selected": "styles-module__selected___0tVDH" };
3591
+ var css7 = '@keyframes styles-module__panelIn___SmRh6 {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n.styles-module__backdrop___--cMp {\n position: fixed;\n inset: 0;\n z-index: 100005;\n}\n\n.styles-module__panel___z6xiJ {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 280px;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);\n z-index: 100006;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__panelIn___SmRh6 0.15s ease-out;\n -webkit-font-smoothing: antialiased;\n}\n\n.styles-module__header___NkOur {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.styles-module__title___tsKZw {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__closeBtn___-OQ4Y {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #6b7280;\n}\n.styles-module__closeBtn___-OQ4Y:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__body___9pyCP {\n padding: 12px 16px 16px;\n}\n\n.styles-module__field___vnQMl {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.styles-module__fieldLabel___2WUKB {\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__toggle___uWsqC {\n width: 40px;\n height: 22px;\n border-radius: 11px;\n background: #d1d5db;\n border: none;\n cursor: pointer;\n position: relative;\n transition: background 0.2s;\n padding: 0;\n}\n.styles-module__toggle___uWsqC.styles-module__on___W27kf {\n background: #18181b;\n}\n\n.styles-module__toggleThumb___wyckC {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: #fff;\n transition: transform 0.2s;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.styles-module__on___W27kf .styles-module__toggleThumb___wyckC {\n transform: translateX(18px);\n}\n\n.styles-module__colors___vgFGZ {\n display: flex;\n gap: 6px;\n}\n\n.styles-module__colorBtn___N7dGu {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n transition: transform 0.12s, border-color 0.12s;\n padding: 0;\n}\n.styles-module__colorBtn___N7dGu:hover {\n transform: scale(1.15);\n}\n.styles-module__colorBtn___N7dGu.styles-module__selected___0tVDH {\n border-color: #18181b;\n transform: scale(1.15);\n}';
3592
+ var classNames7 = { "backdrop": "styles-module__backdrop___--cMp", "panel": "styles-module__panel___z6xiJ", "panelIn": "styles-module__panelIn___SmRh6", "header": "styles-module__header___NkOur", "title": "styles-module__title___tsKZw", "closeBtn": "styles-module__closeBtn___-OQ4Y", "body": "styles-module__body___9pyCP", "field": "styles-module__field___vnQMl", "fieldLabel": "styles-module__fieldLabel___2WUKB", "toggle": "styles-module__toggle___uWsqC", "on": "styles-module__on___W27kf", "toggleThumb": "styles-module__toggleThumb___wyckC", "colors": "styles-module__colors___vgFGZ", "colorBtn": "styles-module__colorBtn___N7dGu", "selected": "styles-module__selected___0tVDH" };
3574
3593
  if (typeof document !== "undefined") {
3575
3594
  let style = document.getElementById("impakers-debug-styles-settings-panel-styles");
3576
3595
  if (!style) {
@@ -3578,12 +3597,12 @@ if (typeof document !== "undefined") {
3578
3597
  style.id = "impakers-debug-styles-settings-panel-styles";
3579
3598
  document.head.appendChild(style);
3580
3599
  }
3581
- style.textContent = css6;
3600
+ style.textContent = css7;
3582
3601
  }
3583
- var styles_module_default6 = classNames6;
3602
+ var styles_module_default7 = classNames7;
3584
3603
 
3585
3604
  // src/components/settings-panel/index.tsx
3586
- var import_jsx_runtime7 = require("react/jsx-runtime");
3605
+ var import_jsx_runtime8 = require("react/jsx-runtime");
3587
3606
  function SettingsPanel({ settings, onChange, onClose }) {
3588
3607
  const handleToggleMarkers = (0, import_react6.useCallback)(() => {
3589
3608
  onChange({ ...settings, markersVisible: !settings.markersVisible });
@@ -3599,56 +3618,56 @@ function SettingsPanel({ settings, onChange, onClose }) {
3599
3618
  }, [settings, onChange]);
3600
3619
  if (typeof document === "undefined") return null;
3601
3620
  return (0, import_react_dom2.createPortal)(
3602
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { "data-impakers-debug": "", children: [
3603
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.backdrop, onClick: onClose }),
3604
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.panel, "data-impakers-debug": "", children: [
3605
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.header, children: [
3606
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.title, children: "\uC124\uC815" }),
3607
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.closeBtn, onClick: onClose, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) })
3621
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { "data-impakers-debug": "", children: [
3622
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.backdrop, onClick: onClose }),
3623
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.panel, "data-impakers-debug": "", children: [
3624
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.header, children: [
3625
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.title, children: "\uC124\uC815" }),
3626
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: styles_module_default7.closeBtn, onClick: onClose, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) })
3608
3627
  ] }),
3609
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.body, children: [
3610
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.field, children: [
3611
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.fieldLabel, children: "\uB9C8\uCEE4 \uD45C\uC2DC" }),
3612
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3628
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.body, children: [
3629
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
3630
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uB9C8\uCEE4 \uD45C\uC2DC" }),
3631
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3613
3632
  "button",
3614
3633
  {
3615
- className: `${styles_module_default6.toggle} ${settings.markersVisible ? styles_module_default6.on : ""}`,
3634
+ className: `${styles_module_default7.toggle} ${settings.markersVisible ? styles_module_default7.on : ""}`,
3616
3635
  onClick: handleToggleMarkers,
3617
3636
  type: "button",
3618
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.toggleThumb })
3637
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.toggleThumb })
3619
3638
  }
3620
3639
  )
3621
3640
  ] }),
3622
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.field, children: [
3623
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.fieldLabel, children: "\uC644\uB8CC \uD540 \uC228\uAE30\uAE30" }),
3624
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3641
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
3642
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uC644\uB8CC \uD540 \uC228\uAE30\uAE30" }),
3643
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3625
3644
  "button",
3626
3645
  {
3627
- className: `${styles_module_default6.toggle} ${settings.hideDoneMarkers ? styles_module_default6.on : ""}`,
3646
+ className: `${styles_module_default7.toggle} ${settings.hideDoneMarkers ? styles_module_default7.on : ""}`,
3628
3647
  onClick: handleToggleHideDone,
3629
3648
  type: "button",
3630
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.toggleThumb })
3649
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.toggleThumb })
3631
3650
  }
3632
3651
  )
3633
3652
  ] }),
3634
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.field, children: [
3635
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.fieldLabel, children: "\uB0B4\uAC00 \uCD94\uAC00\uD55C \uAC83\uB9CC" }),
3636
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3653
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
3654
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uB0B4\uAC00 \uCD94\uAC00\uD55C \uAC83\uB9CC" }),
3655
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3637
3656
  "button",
3638
3657
  {
3639
- className: `${styles_module_default6.toggle} ${settings.showOnlyMine ? styles_module_default6.on : ""}`,
3658
+ className: `${styles_module_default7.toggle} ${settings.showOnlyMine ? styles_module_default7.on : ""}`,
3640
3659
  onClick: handleToggleShowOnlyMine,
3641
3660
  type: "button",
3642
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.toggleThumb })
3661
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.toggleThumb })
3643
3662
  }
3644
3663
  )
3645
3664
  ] }),
3646
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.field, children: [
3647
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.fieldLabel, children: "\uB9C8\uCEE4 \uC0C9\uC0C1" }),
3648
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.colors, children: MARKER_COLORS.map((c) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3665
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
3666
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uB9C8\uCEE4 \uC0C9\uC0C1" }),
3667
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.colors, children: MARKER_COLORS.map((c) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3649
3668
  "button",
3650
3669
  {
3651
- className: `${styles_module_default6.colorBtn} ${settings.markerColor === c.value ? styles_module_default6.selected : ""}`,
3670
+ className: `${styles_module_default7.colorBtn} ${settings.markerColor === c.value ? styles_module_default7.selected : ""}`,
3652
3671
  style: { background: c.value },
3653
3672
  onClick: () => handleColorChange(c.value),
3654
3673
  title: c.label,
@@ -3665,8 +3684,8 @@ function SettingsPanel({ settings, onChange, onClose }) {
3665
3684
  }
3666
3685
 
3667
3686
  // src/components/debug-widget/styles.module.scss
3668
- var css7 = '.styles-module__markersLayer___VR1cD svg[fill=none],\n.styles-module__fixedMarkersLayer___wBuxm svg[fill=none] {\n fill: none !important;\n}\n.styles-module__markersLayer___VR1cD svg[fill=none] :not([fill]),\n.styles-module__fixedMarkersLayer___wBuxm svg[fill=none] :not([fill]) {\n fill: none !important;\n}\n\n@keyframes styles-module__fadeIn___PpRqy {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes styles-module__fadeOut___tZb9S {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes styles-module__hoverHighlightIn___ljC4F {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__hoverTooltipIn___tncNM {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@keyframes styles-module__fabEnter___9koyT {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n.styles-module__fab___6FrCF {\n position: fixed;\n bottom: 24px;\n right: 24px;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #18181b;\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n z-index: 99999;\n animation: styles-module__fabEnter___9koyT 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n touch-action: none;\n}\n.styles-module__fab___6FrCF svg {\n width: 20px;\n height: 20px;\n}\n.styles-module__fab___6FrCF:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.12);\n}\n.styles-module__fab___6FrCF:active {\n transform: scale(0.96);\n}\n.styles-module__fab___6FrCF.styles-module__active___X5PRD {\n background: #dc2626;\n}\n\n.styles-module__hoverHighlight___9kGLL {\n position: fixed;\n border: 2px solid rgba(0, 136, 255, 0.5);\n border-radius: 4px;\n background-color: rgba(0, 136, 255, 0.04);\n pointer-events: none !important;\n box-sizing: border-box;\n will-change: opacity;\n z-index: 99997;\n}\n.styles-module__hoverHighlight___9kGLL.styles-module__enter___jAi-c {\n animation: styles-module__hoverHighlightIn___ljC4F 0.12s ease-out forwards;\n}\n\n.styles-module__singleSelectOutline___2meUm {\n position: fixed;\n border: 2px solid rgba(0, 136, 255, 0.6);\n border-radius: 4px;\n pointer-events: none !important;\n background-color: rgba(0, 136, 255, 0.05);\n box-sizing: border-box;\n will-change: opacity;\n z-index: 99997;\n}\n.styles-module__singleSelectOutline___2meUm.styles-module__enter___jAi-c {\n animation: styles-module__fadeIn___PpRqy 0.15s ease-out forwards;\n}\n\n.styles-module__hoverTooltip___JE1Bs {\n position: fixed;\n font-size: 0.6875rem;\n font-weight: 500;\n color: #fff;\n background: rgba(0, 0, 0, 0.85);\n padding: 0.35rem 0.6rem;\n border-radius: 0.375rem;\n pointer-events: none !important;\n white-space: nowrap;\n max-width: 280px;\n overflow: hidden;\n text-overflow: ellipsis;\n z-index: 99999;\n}\n.styles-module__hoverTooltip___JE1Bs.styles-module__enter___jAi-c {\n animation: styles-module__hoverTooltipIn___tncNM 0.1s ease-out forwards;\n}\n\n.styles-module__hoverReactPath___wPGYi {\n font-size: 0.625rem;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 0.15rem;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__hoverElementName___lNqTP {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__markersLayer___VR1cD {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__markersLayer___VR1cD > * {\n pointer-events: auto;\n}\n\n.styles-module__fixedMarkersLayer___wBuxm {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__fixedMarkersLayer___wBuxm > * {\n pointer-events: auto;\n}\n\n.styles-module__contextMenu___nDXft {\n position: fixed;\n z-index: 2147483647;\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16), 0 1px 4px rgba(0, 0, 0, 0.08);\n padding: 4px;\n min-width: 140px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__fadeIn___PpRqy 0.1s ease-out;\n}\n\n.styles-module__contextMenuItem___69GKu {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font-size: 13px;\n color: #18181b;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n font-family: inherit;\n}\n.styles-module__contextMenuItem___69GKu:hover {\n background: #f4f4f5;\n}\n\n@keyframes styles-module__toastIn___V382h {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@keyframes styles-module__toastOut___zlqxG {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.styles-module__toast___gV3Sa {\n position: fixed;\n bottom: 80px;\n right: 24px;\n display: flex;\n align-items: center;\n gap: 8px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n color: #18181b;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n z-index: 100000;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__toastIn___V382h 0.2s ease-out, styles-module__toastOut___zlqxG 0.3s ease-in 2.7s forwards;\n max-width: 320px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.styles-module__toast___gV3Sa span {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.styles-module__toast___gV3Sa.styles-module__toastError___Q-8dn {\n border-color: #fecaca;\n background: #fef2f2;\n color: #991b1b;\n animation: styles-module__toastIn___V382h 0.2s ease-out, styles-module__toastOut___zlqxG 0.3s ease-in 3.7s forwards;\n}\n\n@keyframes styles-module__countdownPulse___ngZrL {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.15);\n }\n}\n.styles-module__countdownOverlay___GruQJ {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n z-index: 100002;\n pointer-events: auto;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__fadeIn___PpRqy 0.2s ease-out;\n}\n\n.styles-module__countdownNumber___VAmkI {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: rgba(24, 24, 27, 0.9);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 28px;\n font-weight: 700;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);\n animation: styles-module__countdownPulse___ngZrL 1s ease-in-out infinite;\n}\n\n.styles-module__countdownLabel___px-ao {\n font-size: 13px;\n font-weight: 500;\n color: #18181b;\n background: rgba(255, 255, 255, 0.95);\n padding: 6px 14px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.styles-module__countdownCancel___8cRgZ {\n font-size: 12px;\n color: #6b7280;\n background: rgba(255, 255, 255, 0.9);\n border: 1px solid #d1d5db;\n border-radius: 6px;\n padding: 4px 12px;\n cursor: pointer;\n font-family: inherit;\n transition: background 0.12s;\n}\n.styles-module__countdownCancel___8cRgZ:hover {\n background: #f3f4f6;\n}\n\nhtml.impakers-selecting {\n cursor: crosshair !important;\n}\nhtml.impakers-selecting * {\n cursor: crosshair !important;\n}';
3669
- var classNames7 = { "markersLayer": "styles-module__markersLayer___VR1cD", "fixedMarkersLayer": "styles-module__fixedMarkersLayer___wBuxm", "fab": "styles-module__fab___6FrCF", "fabEnter": "styles-module__fabEnter___9koyT", "active": "styles-module__active___X5PRD", "hoverHighlight": "styles-module__hoverHighlight___9kGLL", "enter": "styles-module__enter___jAi-c", "hoverHighlightIn": "styles-module__hoverHighlightIn___ljC4F", "singleSelectOutline": "styles-module__singleSelectOutline___2meUm", "fadeIn": "styles-module__fadeIn___PpRqy", "hoverTooltip": "styles-module__hoverTooltip___JE1Bs", "hoverTooltipIn": "styles-module__hoverTooltipIn___tncNM", "hoverReactPath": "styles-module__hoverReactPath___wPGYi", "hoverElementName": "styles-module__hoverElementName___lNqTP", "contextMenu": "styles-module__contextMenu___nDXft", "contextMenuItem": "styles-module__contextMenuItem___69GKu", "toast": "styles-module__toast___gV3Sa", "toastIn": "styles-module__toastIn___V382h", "toastOut": "styles-module__toastOut___zlqxG", "toastError": "styles-module__toastError___Q-8dn", "countdownOverlay": "styles-module__countdownOverlay___GruQJ", "countdownNumber": "styles-module__countdownNumber___VAmkI", "countdownPulse": "styles-module__countdownPulse___ngZrL", "countdownLabel": "styles-module__countdownLabel___px-ao", "countdownCancel": "styles-module__countdownCancel___8cRgZ", "fadeOut": "styles-module__fadeOut___tZb9S" };
3687
+ var css8 = '.styles-module__markersLayer___VR1cD svg[fill=none],\n.styles-module__fixedMarkersLayer___wBuxm svg[fill=none] {\n fill: none !important;\n}\n.styles-module__markersLayer___VR1cD svg[fill=none] :not([fill]),\n.styles-module__fixedMarkersLayer___wBuxm svg[fill=none] :not([fill]) {\n fill: none !important;\n}\n\n@keyframes styles-module__fadeIn___PpRqy {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes styles-module__fadeOut___tZb9S {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes styles-module__hoverHighlightIn___ljC4F {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__hoverTooltipIn___tncNM {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@keyframes styles-module__fabEnter___9koyT {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n.styles-module__fab___6FrCF {\n position: fixed;\n bottom: 24px;\n right: 24px;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #18181b;\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n z-index: 99999;\n animation: styles-module__fabEnter___9koyT 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n touch-action: none;\n}\n.styles-module__fab___6FrCF svg {\n width: 20px;\n height: 20px;\n}\n.styles-module__fab___6FrCF:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.12);\n}\n.styles-module__fab___6FrCF:active {\n transform: scale(0.96);\n}\n.styles-module__fab___6FrCF.styles-module__active___X5PRD {\n background: #dc2626;\n}\n\n.styles-module__hoverHighlight___9kGLL {\n position: fixed;\n border: 2px solid rgba(0, 136, 255, 0.5);\n border-radius: 4px;\n background-color: rgba(0, 136, 255, 0.04);\n pointer-events: none !important;\n box-sizing: border-box;\n will-change: opacity;\n z-index: 99997;\n}\n.styles-module__hoverHighlight___9kGLL.styles-module__enter___jAi-c {\n animation: styles-module__hoverHighlightIn___ljC4F 0.12s ease-out forwards;\n}\n\n.styles-module__singleSelectOutline___2meUm {\n position: fixed;\n border: 2px solid rgba(0, 136, 255, 0.6);\n border-radius: 4px;\n pointer-events: none !important;\n background-color: rgba(0, 136, 255, 0.05);\n box-sizing: border-box;\n will-change: opacity;\n z-index: 99997;\n}\n.styles-module__singleSelectOutline___2meUm.styles-module__enter___jAi-c {\n animation: styles-module__fadeIn___PpRqy 0.15s ease-out forwards;\n}\n\n.styles-module__hoverTooltip___JE1Bs {\n position: fixed;\n font-size: 0.6875rem;\n font-weight: 500;\n color: #fff;\n background: rgba(0, 0, 0, 0.85);\n padding: 0.35rem 0.6rem;\n border-radius: 0.375rem;\n pointer-events: none !important;\n white-space: nowrap;\n max-width: 280px;\n overflow: hidden;\n text-overflow: ellipsis;\n z-index: 99999;\n}\n.styles-module__hoverTooltip___JE1Bs.styles-module__enter___jAi-c {\n animation: styles-module__hoverTooltipIn___tncNM 0.1s ease-out forwards;\n}\n\n.styles-module__hoverReactPath___wPGYi {\n font-size: 0.625rem;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 0.15rem;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__hoverElementName___lNqTP {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__markersLayer___VR1cD {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__markersLayer___VR1cD > * {\n pointer-events: auto;\n}\n\n.styles-module__fixedMarkersLayer___wBuxm {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__fixedMarkersLayer___wBuxm > * {\n pointer-events: auto;\n}\n\n.styles-module__contextMenu___nDXft {\n position: fixed;\n z-index: 2147483647;\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16), 0 1px 4px rgba(0, 0, 0, 0.08);\n padding: 4px;\n min-width: 140px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__fadeIn___PpRqy 0.1s ease-out;\n}\n\n.styles-module__contextMenuItem___69GKu {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font-size: 13px;\n color: #18181b;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n font-family: inherit;\n}\n.styles-module__contextMenuItem___69GKu:hover {\n background: #f4f4f5;\n}\n\n@keyframes styles-module__toastIn___V382h {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@keyframes styles-module__toastOut___zlqxG {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.styles-module__toast___gV3Sa {\n position: fixed;\n bottom: 80px;\n right: 24px;\n display: flex;\n align-items: center;\n gap: 8px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n color: #18181b;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n z-index: 100000;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__toastIn___V382h 0.2s ease-out, styles-module__toastOut___zlqxG 0.3s ease-in 2.7s forwards;\n max-width: 320px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.styles-module__toast___gV3Sa span {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.styles-module__toast___gV3Sa.styles-module__toastError___Q-8dn {\n border-color: #fecaca;\n background: #fef2f2;\n color: #991b1b;\n animation: styles-module__toastIn___V382h 0.2s ease-out, styles-module__toastOut___zlqxG 0.3s ease-in 3.7s forwards;\n}\n\n@keyframes styles-module__countdownPulse___ngZrL {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.15);\n }\n}\n.styles-module__countdownOverlay___GruQJ {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n z-index: 100002;\n pointer-events: auto;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__fadeIn___PpRqy 0.2s ease-out;\n}\n\n.styles-module__countdownNumber___VAmkI {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: rgba(24, 24, 27, 0.9);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 28px;\n font-weight: 700;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);\n animation: styles-module__countdownPulse___ngZrL 1s ease-in-out infinite;\n}\n\n.styles-module__countdownLabel___px-ao {\n font-size: 13px;\n font-weight: 500;\n color: #18181b;\n background: rgba(255, 255, 255, 0.95);\n padding: 6px 14px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.styles-module__countdownCancel___8cRgZ {\n font-size: 12px;\n color: #6b7280;\n background: rgba(255, 255, 255, 0.9);\n border: 1px solid #d1d5db;\n border-radius: 6px;\n padding: 4px 12px;\n cursor: pointer;\n font-family: inherit;\n transition: background 0.12s;\n}\n.styles-module__countdownCancel___8cRgZ:hover {\n background: #f3f4f6;\n}\n\nhtml.impakers-selecting {\n cursor: crosshair !important;\n}\nhtml.impakers-selecting * {\n cursor: crosshair !important;\n}';
3688
+ var classNames8 = { "markersLayer": "styles-module__markersLayer___VR1cD", "fixedMarkersLayer": "styles-module__fixedMarkersLayer___wBuxm", "fab": "styles-module__fab___6FrCF", "fabEnter": "styles-module__fabEnter___9koyT", "active": "styles-module__active___X5PRD", "hoverHighlight": "styles-module__hoverHighlight___9kGLL", "enter": "styles-module__enter___jAi-c", "hoverHighlightIn": "styles-module__hoverHighlightIn___ljC4F", "singleSelectOutline": "styles-module__singleSelectOutline___2meUm", "fadeIn": "styles-module__fadeIn___PpRqy", "hoverTooltip": "styles-module__hoverTooltip___JE1Bs", "hoverTooltipIn": "styles-module__hoverTooltipIn___tncNM", "hoverReactPath": "styles-module__hoverReactPath___wPGYi", "hoverElementName": "styles-module__hoverElementName___lNqTP", "contextMenu": "styles-module__contextMenu___nDXft", "contextMenuItem": "styles-module__contextMenuItem___69GKu", "toast": "styles-module__toast___gV3Sa", "toastIn": "styles-module__toastIn___V382h", "toastOut": "styles-module__toastOut___zlqxG", "toastError": "styles-module__toastError___Q-8dn", "countdownOverlay": "styles-module__countdownOverlay___GruQJ", "countdownNumber": "styles-module__countdownNumber___VAmkI", "countdownPulse": "styles-module__countdownPulse___ngZrL", "countdownLabel": "styles-module__countdownLabel___px-ao", "countdownCancel": "styles-module__countdownCancel___8cRgZ", "fadeOut": "styles-module__fadeOut___tZb9S" };
3670
3689
  if (typeof document !== "undefined") {
3671
3690
  let style = document.getElementById("impakers-debug-styles-debug-widget-styles");
3672
3691
  if (!style) {
@@ -3674,12 +3693,12 @@ if (typeof document !== "undefined") {
3674
3693
  style.id = "impakers-debug-styles-debug-widget-styles";
3675
3694
  document.head.appendChild(style);
3676
3695
  }
3677
- style.textContent = css7;
3696
+ style.textContent = css8;
3678
3697
  }
3679
- var styles_module_default7 = classNames7;
3698
+ var styles_module_default8 = classNames8;
3680
3699
 
3681
3700
  // src/components/debug-widget/index.tsx
3682
- var import_jsx_runtime8 = require("react/jsx-runtime");
3701
+ var import_jsx_runtime9 = require("react/jsx-runtime");
3683
3702
  function deepElementFromPoint(x, y) {
3684
3703
  let element = document.elementFromPoint(x, y);
3685
3704
  if (!element) return null;
@@ -3798,6 +3817,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
3798
3817
  const [toastError, setToastError] = (0, import_react7.useState)(null);
3799
3818
  const [activeThread, setActiveThread] = (0, import_react7.useState)(null);
3800
3819
  const [threadComments, setThreadComments] = (0, import_react7.useState)({});
3820
+ const [threadLoading, setThreadLoading] = (0, import_react7.useState)(false);
3801
3821
  const [serverTasks, setServerTasks] = (0, import_react7.useState)([]);
3802
3822
  const [allServerTasks, setAllServerTasks] = (0, import_react7.useState)([]);
3803
3823
  const [showInbox, setShowInbox] = (0, import_react7.useState)(false);
@@ -3805,6 +3825,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
3805
3825
  const [settings, setSettings] = (0, import_react7.useState)(() => loadSettings());
3806
3826
  const [routePath, setRoutePath] = (0, import_react7.useState)(() => window.location.pathname);
3807
3827
  const [hasHydratedServerTasks, setHasHydratedServerTasks] = (0, import_react7.useState)(false);
3828
+ const [newNotiCount, setNewNotiCount] = (0, import_react7.useState)(0);
3808
3829
  const [delayCountdown, setDelayCountdown] = (0, import_react7.useState)(null);
3809
3830
  const delayTimerRef = (0, import_react7.useRef)(null);
3810
3831
  const popupRef = (0, import_react7.useRef)(null);
@@ -3904,6 +3925,16 @@ function DebugWidget({ endpoint, getUser, onHide }) {
3904
3925
  });
3905
3926
  return unsubscribe;
3906
3927
  }, [endpoint, routePath]);
3928
+ const LAST_SEEN_KEY = "impakers-debug-history-last-seen";
3929
+ (0, import_react7.useEffect)(() => {
3930
+ const lastSeen = localStorage.getItem(LAST_SEEN_KEY) || (/* @__PURE__ */ new Date(0)).toISOString();
3931
+ fetchHistory(endpoint, { since: lastSeen, limit: 100 }).then((events) => setNewNotiCount(events.length)).catch(() => {
3932
+ });
3933
+ }, [endpoint]);
3934
+ const handleHistoryViewed = (0, import_react7.useCallback)(() => {
3935
+ localStorage.setItem(LAST_SEEN_KEY, (/* @__PURE__ */ new Date()).toISOString());
3936
+ setNewNotiCount(0);
3937
+ }, []);
3907
3938
  (0, import_react7.useEffect)(() => {
3908
3939
  if (!hasHydratedServerTasks) return;
3909
3940
  const serverAnnotations = serverTasks.map(taskToAnnotation).filter((annotation) => annotation !== null);
@@ -4254,12 +4285,15 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4254
4285
  const cached = getCachedSnapshot(cacheKey);
4255
4286
  if (cached) {
4256
4287
  setThreadComments((prev) => ({ ...prev, [activeThread]: cached }));
4288
+ setThreadLoading(false);
4289
+ } else {
4290
+ setThreadLoading(true);
4257
4291
  }
4258
4292
  const unsubscribe = subscribeCache(cacheKey, (comments) => {
4259
4293
  setThreadComments((prev) => ({ ...prev, [activeThread]: comments }));
4294
+ setThreadLoading(false);
4260
4295
  });
4261
- fetchComments(endpoint, activeThread, { staleWhileRevalidate: true }).catch(() => {
4262
- });
4296
+ fetchComments(endpoint, activeThread, { staleWhileRevalidate: true }).then(() => setThreadLoading(false)).catch(() => setThreadLoading(false));
4263
4297
  return unsubscribe;
4264
4298
  }, [activeThread, endpoint]);
4265
4299
  const handleThreadReply = (0, import_react7.useCallback)(async (taskId, content, screenshot, file) => {
@@ -4328,31 +4362,31 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4328
4362
  id: "comment",
4329
4363
  label: "\uD53C\uB4DC\uBC31",
4330
4364
  active: isActive,
4331
- icon: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z" }) })
4365
+ icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z" }) })
4332
4366
  },
4333
4367
  {
4334
4368
  id: "delay-capture",
4335
4369
  label: "\uB51C\uB808\uC774 \uCEA1\uCC98",
4336
- icon: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4337
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
4338
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polyline", { points: "12 6 12 12 16 14" })
4370
+ icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4371
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
4372
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("polyline", { points: "12 6 12 12 16 14" })
4339
4373
  ] })
4340
4374
  },
4341
4375
  {
4342
4376
  id: "inbox",
4343
4377
  label: "Inbox",
4344
- badge: annotations.length || void 0,
4345
- icon: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4346
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }),
4347
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z" })
4378
+ badge: newNotiCount || void 0,
4379
+ icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4380
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }),
4381
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z" })
4348
4382
  ] })
4349
4383
  },
4350
4384
  {
4351
4385
  id: "settings",
4352
4386
  label: "\uC124\uC815",
4353
- icon: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4354
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("circle", { cx: "12", cy: "12", r: "3" }),
4355
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z" })
4387
+ icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4388
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "12", cy: "12", r: "3" }),
4389
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z" })
4356
4390
  ] })
4357
4391
  }
4358
4392
  ];
@@ -4381,8 +4415,8 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4381
4415
  const allInboxItems = serverTasks.map((t) => toInboxItem(t, currentPath));
4382
4416
  const allRouteItems = allServerTasks.map((t) => toInboxItem(t, ""));
4383
4417
  return (0, import_react_dom3.createPortal)(
4384
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { "data-impakers-debug": "", children: [
4385
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4418
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { "data-impakers-debug": "", children: [
4419
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4386
4420
  FabMenu,
4387
4421
  {
4388
4422
  items: fabItems,
@@ -4391,7 +4425,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4391
4425
  onDoubleTap: toggleActive
4392
4426
  }
4393
4427
  ),
4394
- showInbox && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4428
+ showInbox && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4395
4429
  InboxPanel,
4396
4430
  {
4397
4431
  pageItems: allInboxItems,
@@ -4401,10 +4435,12 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4401
4435
  endpoint,
4402
4436
  currentUserName: getUser?.()?.name ? String(getUser().name) : "\uC775\uBA85",
4403
4437
  currentUserId: getUser?.()?.id ? String(getUser().id) : void 0,
4404
- onClose: () => setShowInbox(false)
4438
+ onClose: () => setShowInbox(false),
4439
+ onHistoryViewed: handleHistoryViewed,
4440
+ newNotiCount
4405
4441
  }
4406
4442
  ),
4407
- showSettings && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4443
+ showSettings && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4408
4444
  SettingsPanel,
4409
4445
  {
4410
4446
  settings,
@@ -4412,11 +4448,11 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4412
4448
  onClose: () => setShowSettings(false)
4413
4449
  }
4414
4450
  ),
4415
- isActive && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
4416
- hoverInfo?.rect && !pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4451
+ isActive && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
4452
+ hoverInfo?.rect && !pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4417
4453
  "div",
4418
4454
  {
4419
- className: `${styles_module_default7.hoverHighlight} ${styles_module_default7.enter}`,
4455
+ className: `${styles_module_default8.hoverHighlight} ${styles_module_default8.enter}`,
4420
4456
  style: {
4421
4457
  left: hoverInfo.rect.left,
4422
4458
  top: hoverInfo.rect.top,
@@ -4425,24 +4461,24 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4425
4461
  }
4426
4462
  }
4427
4463
  ),
4428
- hoverInfo && !pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
4464
+ hoverInfo && !pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4429
4465
  "div",
4430
4466
  {
4431
- className: `${styles_module_default7.hoverTooltip} ${styles_module_default7.enter}`,
4467
+ className: `${styles_module_default8.hoverTooltip} ${styles_module_default8.enter}`,
4432
4468
  style: {
4433
4469
  left: Math.min(hoverPosition.x + 14, window.innerWidth - 200),
4434
4470
  top: hoverPosition.y + 14
4435
4471
  },
4436
4472
  children: [
4437
- hoverInfo.reactComponents && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.hoverReactPath, children: hoverInfo.reactComponents }),
4438
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.hoverElementName, children: hoverInfo.elementName })
4473
+ hoverInfo.reactComponents && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.hoverReactPath, children: hoverInfo.reactComponents }),
4474
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.hoverElementName, children: hoverInfo.elementName })
4439
4475
  ]
4440
4476
  }
4441
4477
  ),
4442
- hoveredRect && hoveredMarkerId && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4478
+ hoveredRect && hoveredMarkerId && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4443
4479
  "div",
4444
4480
  {
4445
- className: `${styles_module_default7.singleSelectOutline} ${styles_module_default7.enter}`,
4481
+ className: `${styles_module_default8.singleSelectOutline} ${styles_module_default8.enter}`,
4446
4482
  style: {
4447
4483
  left: hoveredRect.left,
4448
4484
  top: hoveredRect.top,
@@ -4453,16 +4489,16 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4453
4489
  ),
4454
4490
  pendingAnnotation?.targetElement && (() => {
4455
4491
  const r = pendingAnnotation.targetElement.getBoundingClientRect();
4456
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4492
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4457
4493
  "div",
4458
4494
  {
4459
- className: `${styles_module_default7.singleSelectOutline} ${styles_module_default7.enter}`,
4495
+ className: `${styles_module_default8.singleSelectOutline} ${styles_module_default8.enter}`,
4460
4496
  style: { left: r.left, top: r.top, width: r.width, height: r.height }
4461
4497
  }
4462
4498
  );
4463
4499
  })()
4464
4500
  ] }),
4465
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.markersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: visibleAnnotations.filter((a) => !a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4501
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.markersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: visibleAnnotations.filter((a) => !a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4466
4502
  AnnotationMarker,
4467
4503
  {
4468
4504
  annotation,
@@ -4480,8 +4516,8 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4480
4516
  },
4481
4517
  annotation.id
4482
4518
  )) }),
4483
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.fixedMarkersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: [
4484
- visibleAnnotations.filter((a) => a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4519
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: styles_module_default8.fixedMarkersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: [
4520
+ visibleAnnotations.filter((a) => a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4485
4521
  AnnotationMarker,
4486
4522
  {
4487
4523
  annotation,
@@ -4499,7 +4535,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4499
4535
  },
4500
4536
  annotation.id
4501
4537
  )),
4502
- pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4538
+ pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4503
4539
  PendingMarker,
4504
4540
  {
4505
4541
  x: pendingAnnotation.x,
@@ -4509,7 +4545,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4509
4545
  }
4510
4546
  )
4511
4547
  ] }),
4512
- pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4548
+ pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4513
4549
  AnnotationPopupCSS,
4514
4550
  {
4515
4551
  ref: popupRef,
@@ -4544,7 +4580,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4544
4580
  createdAt: taskData?.createdAt || new Date(annotation.timestamp).toISOString(),
4545
4581
  comments: threadComments[annotation.id] || []
4546
4582
  };
4547
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4583
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4548
4584
  CommentThread,
4549
4585
  {
4550
4586
  task,
@@ -4552,18 +4588,19 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4552
4588
  currentUserId: getUser?.()?.id ? String(getUser().id) : void 0,
4553
4589
  left: threadLeft,
4554
4590
  top: threadTop,
4591
+ loading: threadLoading,
4555
4592
  onClose: handleThreadClose,
4556
4593
  onReply: handleThreadReply
4557
4594
  }
4558
4595
  );
4559
4596
  })(),
4560
- delayCountdown !== null && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.countdownOverlay, "data-impakers-debug": "", children: [
4561
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.countdownNumber, children: delayCountdown }),
4562
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.countdownLabel, children: "\uD53C\uB4DC\uBC31 \uBAA8\uB4DC \uD65C\uC131\uD654\uAE4C\uC9C0..." }),
4563
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4597
+ delayCountdown !== null && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: styles_module_default8.countdownOverlay, "data-impakers-debug": "", children: [
4598
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.countdownNumber, children: delayCountdown }),
4599
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.countdownLabel, children: "\uD53C\uB4DC\uBC31 \uBAA8\uB4DC \uD65C\uC131\uD654\uAE4C\uC9C0..." }),
4600
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4564
4601
  "button",
4565
4602
  {
4566
- className: styles_module_default7.countdownCancel,
4603
+ className: styles_module_default8.countdownCancel,
4567
4604
  onClick: () => {
4568
4605
  if (delayTimerRef.current) clearTimeout(delayTimerRef.current);
4569
4606
  setDelayCountdown(null);
@@ -4573,17 +4610,17 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4573
4610
  }
4574
4611
  )
4575
4612
  ] }),
4576
- showToast && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.toast, "data-impakers-debug": "", children: [
4577
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "#16a34a", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("polyline", { points: "20 6 9 17 4 12" }) }),
4578
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "\uD0DC\uC2A4\uD06C \uC0DD\uC131\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4" })
4613
+ showToast && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: styles_module_default8.toast, "data-impakers-debug": "", children: [
4614
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "#16a34a", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("polyline", { points: "20 6 9 17 4 12" }) }),
4615
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "\uD0DC\uC2A4\uD06C \uC0DD\uC131\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4" })
4579
4616
  ] }),
4580
- toastError && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `${styles_module_default7.toast} ${styles_module_default7.toastError}`, "data-impakers-debug": "", children: [
4581
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "#ef4444", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4582
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
4583
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
4584
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
4617
+ toastError && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: `${styles_module_default8.toast} ${styles_module_default8.toastError}`, "data-impakers-debug": "", children: [
4618
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "#ef4444", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
4619
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
4620
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
4621
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
4585
4622
  ] }),
4586
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: toastError })
4623
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: toastError })
4587
4624
  ] })
4588
4625
  ] }),
4589
4626
  document.body
@@ -4593,7 +4630,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
4593
4630
  // src/ui/AuthPromptPortal.tsx
4594
4631
  var import_react8 = require("react");
4595
4632
  var import_react_dom4 = require("react-dom");
4596
- var import_jsx_runtime9 = require("react/jsx-runtime");
4633
+ var import_jsx_runtime10 = require("react/jsx-runtime");
4597
4634
  function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4598
4635
  const [code, setCode] = (0, import_react8.useState)("");
4599
4636
  const [loading, setLoading] = (0, import_react8.useState)(false);
@@ -4617,7 +4654,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4617
4654
  );
4618
4655
  if (typeof document === "undefined") return null;
4619
4656
  return (0, import_react_dom4.createPortal)(
4620
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { "data-impakers-debug": "", style: {
4657
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { "data-impakers-debug": "", style: {
4621
4658
  position: "fixed",
4622
4659
  inset: 0,
4623
4660
  zIndex: 2147483647,
@@ -4626,7 +4663,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4626
4663
  justifyContent: "center",
4627
4664
  fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif"
4628
4665
  }, children: [
4629
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4666
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4630
4667
  "div",
4631
4668
  {
4632
4669
  onClick: onClose,
@@ -4637,7 +4674,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4637
4674
  }
4638
4675
  }
4639
4676
  ),
4640
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: {
4677
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: {
4641
4678
  position: "relative",
4642
4679
  width: 360,
4643
4680
  background: "white",
@@ -4645,15 +4682,15 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4645
4682
  boxShadow: "0 16px 48px rgba(0,0,0,0.16)",
4646
4683
  overflow: "hidden"
4647
4684
  }, children: [
4648
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: {
4685
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: {
4649
4686
  display: "flex",
4650
4687
  alignItems: "center",
4651
4688
  justifyContent: "space-between",
4652
4689
  padding: "16px 20px",
4653
4690
  borderBottom: "1px solid #e5e5e5"
4654
4691
  }, children: [
4655
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { style: { fontSize: 15, fontWeight: 600, color: "#18181b", margin: 0 }, children: "\uD53C\uB4DC\uBC31 \uC704\uC82F \uC778\uC99D" }),
4656
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4692
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { style: { fontSize: 15, fontWeight: 600, color: "#18181b", margin: 0 }, children: "\uD53C\uB4DC\uBC31 \uC704\uC82F \uC778\uC99D" }),
4693
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4657
4694
  "button",
4658
4695
  {
4659
4696
  onClick: onClose,
@@ -4670,12 +4707,12 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4670
4707
  borderRadius: 6,
4671
4708
  color: "#71717a"
4672
4709
  },
4673
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) })
4710
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) })
4674
4711
  }
4675
4712
  )
4676
4713
  ] }),
4677
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: { padding: 20 }, children: [
4678
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { style: {
4714
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: { padding: 20 }, children: [
4715
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { style: {
4679
4716
  fontSize: 13,
4680
4717
  color: "#71717a",
4681
4718
  textAlign: "center",
@@ -4683,10 +4720,10 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4683
4720
  lineHeight: 1.5
4684
4721
  }, children: [
4685
4722
  "\uC11C\uBE44\uC2A4 \uC2DC\uD06C\uB9BF \uCF54\uB4DC\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
4686
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("br", {}),
4723
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("br", {}),
4687
4724
  "\uCF54\uB4DC\uB294 \uC784\uD328\uCEE4\uC2A4 OS\uC5D0\uC11C \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
4688
4725
  ] }),
4689
- error && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: {
4726
+ error && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: {
4690
4727
  background: "#fef2f2",
4691
4728
  border: "1px solid #fecaca",
4692
4729
  color: "#dc2626",
@@ -4695,8 +4732,8 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4695
4732
  fontSize: 13,
4696
4733
  marginBottom: 12
4697
4734
  }, children: error }),
4698
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("form", { onSubmit: handleSubmit, children: [
4699
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4735
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("form", { onSubmit: handleSubmit, children: [
4736
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4700
4737
  "input",
4701
4738
  {
4702
4739
  type: "text",
@@ -4723,7 +4760,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4723
4760
  }
4724
4761
  }
4725
4762
  ),
4726
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4763
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4727
4764
  "button",
4728
4765
  {
4729
4766
  type: "submit",
@@ -4753,7 +4790,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
4753
4790
  }
4754
4791
 
4755
4792
  // src/react.tsx
4756
- var import_jsx_runtime10 = require("react/jsx-runtime");
4793
+ var import_jsx_runtime11 = require("react/jsx-runtime");
4757
4794
  function ImpakersDebugProvider({ endpoint, getUser }) {
4758
4795
  const [authenticated, setAuthenticated] = (0, import_react9.useState)(false);
4759
4796
  const [showAuth, setShowAuth] = (0, import_react9.useState)(false);
@@ -4827,9 +4864,9 @@ function ImpakersDebugProvider({ endpoint, getUser }) {
4827
4864
  } catch {
4828
4865
  }
4829
4866
  }, []);
4830
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
4831
- authenticated && !hidden && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DebugWidget, { endpoint, getUser, onHide: handleHide }),
4832
- showAuth && !authenticated && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4867
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
4868
+ authenticated && !hidden && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DebugWidget, { endpoint, getUser, onHide: handleHide }),
4869
+ showAuth && !authenticated && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
4833
4870
  AuthPromptPortal,
4834
4871
  {
4835
4872
  endpoint,