deepnova-help-widget 0.0.0-stage → 1.1.0
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/index.d.mts +68 -0
- package/dist/index.d.ts +68 -0
- package/dist/index.global.js +1342 -0
- package/dist/index.global.js.map +1 -0
- package/dist/index.js +1279 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1279 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +41 -6
- package/README.md +0 -3
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,1279 @@
|
|
|
1
|
+
var B=Object.defineProperty;var E=(b,m)=>()=>(b&&(m=b(b=0)),m);var z=(b,m)=>{for(var e in m)B(b,e,{get:m[e],enumerable:!0})};var L,_=E(()=>{L=`:host {\r
|
|
2
|
+
--hw-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\r
|
|
3
|
+
font-family: var(--hw-font);\r
|
|
4
|
+
display: inline-block;\r
|
|
5
|
+
\r
|
|
6
|
+
/* Theme Tokens - Dark (Default) */\r
|
|
7
|
+
--hw-bg-sidebar: #0e1320;\r
|
|
8
|
+
--hw-bg-glass: rgba(14, 19, 32, 0.85);\r
|
|
9
|
+
--hw-border-glass: rgba(255, 255, 255, 0.08);\r
|
|
10
|
+
--hw-text-primary: #f8fafc;\r
|
|
11
|
+
--hw-text-secondary: #94a3b8;\r
|
|
12
|
+
--hw-text-muted: #64748b;\r
|
|
13
|
+
--hw-accent: #5d4fff;\r
|
|
14
|
+
--hw-accent-glow: rgba(93, 79, 255, 0.45);\r
|
|
15
|
+
--hw-accent-hover: #4c3fe0;\r
|
|
16
|
+
--hw-surface: #1e293b;\r
|
|
17
|
+
--hw-surface-hover: #334155;\r
|
|
18
|
+
--hw-input-bg: rgba(255, 255, 255, 0.04);\r
|
|
19
|
+
--hw-input-border: rgba(255, 255, 255, 0.1);\r
|
|
20
|
+
--hw-input-focus: #5d4fff;\r
|
|
21
|
+
--hw-bg-tabs: rgba(0, 0, 0, 0.15);\r
|
|
22
|
+
--hw-bg-faq-content: rgba(0, 0, 0, 0.1);\r
|
|
23
|
+
\r
|
|
24
|
+
/* Status Colors */\r
|
|
25
|
+
--hw-color-open: #38bdf8;\r
|
|
26
|
+
--hw-color-progress: #fbbf24;\r
|
|
27
|
+
--hw-color-pending: #c084fc;\r
|
|
28
|
+
--hw-color-resolved: #34d399;\r
|
|
29
|
+
--hw-color-closed: #94a3b8;\r
|
|
30
|
+
\r
|
|
31
|
+
--hw-bg-open: rgba(56, 189, 248, 0.1);\r
|
|
32
|
+
--hw-bg-progress: rgba(251, 191, 36, 0.1);\r
|
|
33
|
+
--hw-bg-pending: rgba(192, 132, 252, 0.1);\r
|
|
34
|
+
--hw-bg-resolved: rgba(52, 211, 153, 0.1);\r
|
|
35
|
+
--hw-bg-closed: rgba(148, 163, 184, 0.1);\r
|
|
36
|
+
}\r
|
|
37
|
+
\r
|
|
38
|
+
:host([theme="light"]) {\r
|
|
39
|
+
--hw-bg-sidebar: #ffffff;\r
|
|
40
|
+
--hw-bg-glass: rgba(255, 255, 255, 0.9);\r
|
|
41
|
+
--hw-border-glass: rgba(0, 0, 0, 0.08);\r
|
|
42
|
+
--hw-text-primary: #0f172a;\r
|
|
43
|
+
--hw-text-secondary: #475569;\r
|
|
44
|
+
--hw-text-muted: #94a3b8;\r
|
|
45
|
+
--hw-accent: #5d4fff;\r
|
|
46
|
+
--hw-accent-glow: rgba(93, 79, 255, 0.2);\r
|
|
47
|
+
--hw-accent-hover: #4c3fe0;\r
|
|
48
|
+
--hw-surface: #f1f5f9;\r
|
|
49
|
+
--hw-surface-hover: #e2e8f0;\r
|
|
50
|
+
--hw-input-bg: #ffffff;\r
|
|
51
|
+
--hw-input-border: #cbd5e1;\r
|
|
52
|
+
--hw-input-focus: #5d4fff;\r
|
|
53
|
+
--hw-bg-tabs: #f1f5f9;\r
|
|
54
|
+
--hw-bg-faq-content: #f8fafc;\r
|
|
55
|
+
}\r
|
|
56
|
+
\r
|
|
57
|
+
@media (prefers-color-scheme: light) {\r
|
|
58
|
+
:host(:not([theme="dark"])) {\r
|
|
59
|
+
--hw-bg-sidebar: #ffffff;\r
|
|
60
|
+
--hw-bg-glass: rgba(255, 255, 255, 0.9);\r
|
|
61
|
+
--hw-border-glass: rgba(0, 0, 0, 0.08);\r
|
|
62
|
+
--hw-text-primary: #0f172a;\r
|
|
63
|
+
--hw-text-secondary: #475569;\r
|
|
64
|
+
--hw-text-muted: #94a3b8;\r
|
|
65
|
+
--hw-accent: #5d4fff;\r
|
|
66
|
+
--hw-accent-glow: rgba(93, 79, 255, 0.2);\r
|
|
67
|
+
--hw-accent-hover: #4c3fe0;\r
|
|
68
|
+
--hw-surface: #f1f5f9;\r
|
|
69
|
+
--hw-surface-hover: #e2e8f0;\r
|
|
70
|
+
--hw-input-bg: #ffffff;\r
|
|
71
|
+
--hw-input-border: #cbd5e1;\r
|
|
72
|
+
--hw-input-focus: #5d4fff;\r
|
|
73
|
+
--hw-bg-tabs: #f1f5f9;\r
|
|
74
|
+
--hw-bg-faq-content: #f8fafc;\r
|
|
75
|
+
}\r
|
|
76
|
+
}\r
|
|
77
|
+
\r
|
|
78
|
+
/* Trigger Button Styling */\r
|
|
79
|
+
.hw-trigger-btn {\r
|
|
80
|
+
display: flex;\r
|
|
81
|
+
align-items: center;\r
|
|
82
|
+
justify-content: center;\r
|
|
83
|
+
width: 36px;\r
|
|
84
|
+
height: 36px;\r
|
|
85
|
+
border-radius: 10px;\r
|
|
86
|
+
border: 1px solid var(--hw-border-glass);\r
|
|
87
|
+
background: var(--hw-input-bg);\r
|
|
88
|
+
color: var(--hw-text-secondary);\r
|
|
89
|
+
font-size: 16px;\r
|
|
90
|
+
cursor: pointer;\r
|
|
91
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r
|
|
92
|
+
box-sizing: border-box;\r
|
|
93
|
+
outline: none;\r
|
|
94
|
+
}\r
|
|
95
|
+
\r
|
|
96
|
+
.hw-trigger-btn:hover {\r
|
|
97
|
+
background: var(--hw-surface);\r
|
|
98
|
+
color: var(--hw-accent);\r
|
|
99
|
+
border-color: var(--hw-accent);\r
|
|
100
|
+
box-shadow: 0 0 10px var(--hw-accent-glow);\r
|
|
101
|
+
transform: scale(1.03);\r
|
|
102
|
+
}\r
|
|
103
|
+
\r
|
|
104
|
+
.hw-trigger-btn.minimal {\r
|
|
105
|
+
border: none;\r
|
|
106
|
+
background: transparent;\r
|
|
107
|
+
width: auto;\r
|
|
108
|
+
height: auto;\r
|
|
109
|
+
padding: 6px;\r
|
|
110
|
+
}\r
|
|
111
|
+
\r
|
|
112
|
+
.hw-trigger-btn.hidden {\r
|
|
113
|
+
display: none;\r
|
|
114
|
+
}\r
|
|
115
|
+
\r
|
|
116
|
+
/* Backdrop Overlay */\r
|
|
117
|
+
.hw-backdrop {\r
|
|
118
|
+
position: fixed;\r
|
|
119
|
+
top: 0;\r
|
|
120
|
+
left: 0;\r
|
|
121
|
+
width: 100vw;\r
|
|
122
|
+
height: 100vh;\r
|
|
123
|
+
background: rgba(4, 7, 13, 0.4);\r
|
|
124
|
+
backdrop-filter: blur(8px);\r
|
|
125
|
+
-webkit-backdrop-filter: blur(8px);\r
|
|
126
|
+
z-index: 99998;\r
|
|
127
|
+
opacity: 0;\r
|
|
128
|
+
pointer-events: none;\r
|
|
129
|
+
transition: opacity 0.3s ease;\r
|
|
130
|
+
}\r
|
|
131
|
+
\r
|
|
132
|
+
.hw-backdrop.open {\r
|
|
133
|
+
opacity: 1;\r
|
|
134
|
+
pointer-events: auto;\r
|
|
135
|
+
}\r
|
|
136
|
+
\r
|
|
137
|
+
/* Sidebar Panel Drawer */\r
|
|
138
|
+
.hw-sidebar {\r
|
|
139
|
+
position: fixed;\r
|
|
140
|
+
top: 0;\r
|
|
141
|
+
right: -420px;\r
|
|
142
|
+
width: 100%;\r
|
|
143
|
+
max-width: 400px;\r
|
|
144
|
+
height: 100vh;\r
|
|
145
|
+
background: var(--hw-bg-sidebar);\r
|
|
146
|
+
border-left: 1px solid var(--hw-border-glass);\r
|
|
147
|
+
z-index: 99999;\r
|
|
148
|
+
box-shadow: -10px 0 30px rgba(0, 0, 0, 0.25);\r
|
|
149
|
+
transition: right 0.35s cubic-bezier(0.16, 1, 0.3, 1);\r
|
|
150
|
+
display: flex;\r
|
|
151
|
+
flex-direction: column;\r
|
|
152
|
+
box-sizing: border-box;\r
|
|
153
|
+
}\r
|
|
154
|
+
\r
|
|
155
|
+
.hw-sidebar.open {\r
|
|
156
|
+
right: 0;\r
|
|
157
|
+
}\r
|
|
158
|
+
\r
|
|
159
|
+
/* Sidebar Header */\r
|
|
160
|
+
.hw-header {\r
|
|
161
|
+
display: flex;\r
|
|
162
|
+
align-items: center;\r
|
|
163
|
+
justify-content: space-between;\r
|
|
164
|
+
padding: 20px;\r
|
|
165
|
+
border-bottom: 1px solid var(--hw-border-glass);\r
|
|
166
|
+
}\r
|
|
167
|
+
\r
|
|
168
|
+
.hw-header-title {\r
|
|
169
|
+
font-size: 18px;\r
|
|
170
|
+
font-weight: 700;\r
|
|
171
|
+
color: var(--hw-text-primary);\r
|
|
172
|
+
margin: 0;\r
|
|
173
|
+
display: flex;\r
|
|
174
|
+
align-items: center;\r
|
|
175
|
+
gap: 8px;\r
|
|
176
|
+
}\r
|
|
177
|
+
\r
|
|
178
|
+
.hw-close-btn {\r
|
|
179
|
+
background: transparent;\r
|
|
180
|
+
border: none;\r
|
|
181
|
+
color: var(--hw-text-secondary);\r
|
|
182
|
+
font-size: 18px;\r
|
|
183
|
+
cursor: pointer;\r
|
|
184
|
+
width: 32px;\r
|
|
185
|
+
height: 32px;\r
|
|
186
|
+
display: flex;\r
|
|
187
|
+
align-items: center;\r
|
|
188
|
+
justify-content: center;\r
|
|
189
|
+
border-radius: 8px;\r
|
|
190
|
+
transition: all 0.15s;\r
|
|
191
|
+
}\r
|
|
192
|
+
\r
|
|
193
|
+
.hw-close-btn:hover {\r
|
|
194
|
+
background: var(--hw-surface);\r
|
|
195
|
+
color: #ef4444;\r
|
|
196
|
+
}\r
|
|
197
|
+
\r
|
|
198
|
+
/* Tabs Navigation */\r
|
|
199
|
+
.hw-tabs {\r
|
|
200
|
+
display: flex;\r
|
|
201
|
+
padding: 12px 16px;\r
|
|
202
|
+
gap: 4px;\r
|
|
203
|
+
background: var(--hw-bg-tabs);\r
|
|
204
|
+
border-bottom: 1px solid var(--hw-border-glass);\r
|
|
205
|
+
}\r
|
|
206
|
+
\r
|
|
207
|
+
.hw-tab-btn {\r
|
|
208
|
+
flex: 1;\r
|
|
209
|
+
padding: 8px 4px;\r
|
|
210
|
+
background: transparent;\r
|
|
211
|
+
border: none;\r
|
|
212
|
+
color: var(--hw-text-secondary);\r
|
|
213
|
+
font-size: 12px;\r
|
|
214
|
+
font-weight: 600;\r
|
|
215
|
+
cursor: pointer;\r
|
|
216
|
+
border-radius: 8px;\r
|
|
217
|
+
transition: all 0.2s;\r
|
|
218
|
+
text-align: center;\r
|
|
219
|
+
white-space: nowrap;\r
|
|
220
|
+
}\r
|
|
221
|
+
\r
|
|
222
|
+
.hw-tab-btn:hover {\r
|
|
223
|
+
background: var(--hw-surface);\r
|
|
224
|
+
color: var(--hw-text-primary);\r
|
|
225
|
+
}\r
|
|
226
|
+
\r
|
|
227
|
+
.hw-tab-btn.active {\r
|
|
228
|
+
background: var(--hw-accent);\r
|
|
229
|
+
color: #ffffff;\r
|
|
230
|
+
box-shadow: 0 2px 8px var(--hw-accent-glow);\r
|
|
231
|
+
}\r
|
|
232
|
+
\r
|
|
233
|
+
/* Sidebar Body Viewport */\r
|
|
234
|
+
.hw-body {\r
|
|
235
|
+
flex: 1;\r
|
|
236
|
+
overflow-y: auto;\r
|
|
237
|
+
padding: 20px;\r
|
|
238
|
+
box-sizing: border-box;\r
|
|
239
|
+
display: flex;\r
|
|
240
|
+
flex-direction: column;\r
|
|
241
|
+
}\r
|
|
242
|
+
\r
|
|
243
|
+
.hw-tab-panel {\r
|
|
244
|
+
display: none;\r
|
|
245
|
+
flex-direction: column;\r
|
|
246
|
+
height: 100%;\r
|
|
247
|
+
}\r
|
|
248
|
+
\r
|
|
249
|
+
.hw-tab-panel.active {\r
|
|
250
|
+
display: flex;\r
|
|
251
|
+
animation: fadeIn 0.25s ease-out;\r
|
|
252
|
+
}\r
|
|
253
|
+
\r
|
|
254
|
+
@keyframes fadeIn {\r
|
|
255
|
+
from {\r
|
|
256
|
+
opacity: 0;\r
|
|
257
|
+
transform: translateY(6px);\r
|
|
258
|
+
}\r
|
|
259
|
+
\r
|
|
260
|
+
to {\r
|
|
261
|
+
opacity: 1;\r
|
|
262
|
+
transform: translateY(0);\r
|
|
263
|
+
}\r
|
|
264
|
+
}\r
|
|
265
|
+
\r
|
|
266
|
+
/* Help Guide Accordion */\r
|
|
267
|
+
.hw-faq-item {\r
|
|
268
|
+
border: 1px solid var(--hw-border-glass);\r
|
|
269
|
+
border-radius: 12px;\r
|
|
270
|
+
margin-bottom: 12px;\r
|
|
271
|
+
background: rgba(255, 255, 255, 0.01);\r
|
|
272
|
+
overflow: hidden;\r
|
|
273
|
+
transition: border-color 0.2s;\r
|
|
274
|
+
}\r
|
|
275
|
+
\r
|
|
276
|
+
.hw-faq-item:hover {\r
|
|
277
|
+
border-color: var(--hw-accent-glow);\r
|
|
278
|
+
}\r
|
|
279
|
+
\r
|
|
280
|
+
.hw-faq-header {\r
|
|
281
|
+
display: flex;\r
|
|
282
|
+
justify-content: space-between;\r
|
|
283
|
+
align-items: center;\r
|
|
284
|
+
padding: 12px 14px;\r
|
|
285
|
+
cursor: pointer;\r
|
|
286
|
+
user-select: none;\r
|
|
287
|
+
}\r
|
|
288
|
+
\r
|
|
289
|
+
.hw-faq-icon {\r
|
|
290
|
+
font-size: 11px;\r
|
|
291
|
+
color: var(--hw-text-muted);\r
|
|
292
|
+
transition: transform 0.2s;\r
|
|
293
|
+
}\r
|
|
294
|
+
\r
|
|
295
|
+
.hw-faq-item.open .hw-faq-icon {\r
|
|
296
|
+
transform: rotate(180deg);\r
|
|
297
|
+
}\r
|
|
298
|
+
\r
|
|
299
|
+
.hw-faq-content {\r
|
|
300
|
+
max-height: 0;\r
|
|
301
|
+
overflow: hidden;\r
|
|
302
|
+
transition: max-height 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r
|
|
303
|
+
background: var(--hw-bg-faq-content);\r
|
|
304
|
+
}\r
|
|
305
|
+
\r
|
|
306
|
+
.hw-faq-inner {\r
|
|
307
|
+
padding: 14px 16px;\r
|
|
308
|
+
border-top: 1px solid var(--hw-border-glass);\r
|
|
309
|
+
}\r
|
|
310
|
+
\r
|
|
311
|
+
/* Dynamic Step & Image Framework Styling */\r
|
|
312
|
+
.hw-guide-main-title {\r
|
|
313
|
+
font-size: 13px;\r
|
|
314
|
+
font-weight: 500;\r
|
|
315
|
+
color: var(--hw-text-secondary);\r
|
|
316
|
+
margin: 0 0 16px 0;\r
|
|
317
|
+
line-height: 1.5;\r
|
|
318
|
+
}\r
|
|
319
|
+
\r
|
|
320
|
+
.hw-process-title {\r
|
|
321
|
+
font-size: 12px;\r
|
|
322
|
+
font-weight: 700;\r
|
|
323
|
+
text-transform: uppercase;\r
|
|
324
|
+
letter-spacing: 0.05em;\r
|
|
325
|
+
color: var(--hw-text-primary);\r
|
|
326
|
+
margin: 24px 0 12px 0;\r
|
|
327
|
+
padding-bottom: 6px;\r
|
|
328
|
+
border-bottom: 1px solid var(--hw-border-glass);\r
|
|
329
|
+
line-height: 1.4;\r
|
|
330
|
+
display: flex;\r
|
|
331
|
+
align-items: center;\r
|
|
332
|
+
gap: 8px;\r
|
|
333
|
+
}\r
|
|
334
|
+
\r
|
|
335
|
+
.hw-process-title:first-of-type {\r
|
|
336
|
+
margin-top: 0;\r
|
|
337
|
+
}\r
|
|
338
|
+
\r
|
|
339
|
+
.hw-process-title::before {\r
|
|
340
|
+
content: "";\r
|
|
341
|
+
display: inline-block;\r
|
|
342
|
+
width: 4px;\r
|
|
343
|
+
height: 12px;\r
|
|
344
|
+
background: var(--hw-accent);\r
|
|
345
|
+
border-radius: 2px;\r
|
|
346
|
+
}\r
|
|
347
|
+
\r
|
|
348
|
+
.hw-step-header-left {\r
|
|
349
|
+
display: flex;\r
|
|
350
|
+
align-items: center;\r
|
|
351
|
+
gap: 10px;\r
|
|
352
|
+
}\r
|
|
353
|
+
\r
|
|
354
|
+
.hw-step-number {\r
|
|
355
|
+
display: flex;\r
|
|
356
|
+
align-items: center;\r
|
|
357
|
+
justify-content: center;\r
|
|
358
|
+
width: 24px;\r
|
|
359
|
+
height: 24px;\r
|
|
360
|
+
border-radius: 50%;\r
|
|
361
|
+
background: var(--hw-accent);\r
|
|
362
|
+
color: #ffffff;\r
|
|
363
|
+
font-size: 11px;\r
|
|
364
|
+
font-weight: 700;\r
|
|
365
|
+
box-shadow: 0 0 8px var(--hw-accent-glow);\r
|
|
366
|
+
flex-shrink: 0;\r
|
|
367
|
+
}\r
|
|
368
|
+
\r
|
|
369
|
+
.hw-step-title {\r
|
|
370
|
+
font-size: 13px;\r
|
|
371
|
+
font-weight: 600;\r
|
|
372
|
+
color: var(--hw-text-primary);\r
|
|
373
|
+
line-height: 1.4;\r
|
|
374
|
+
}\r
|
|
375
|
+
\r
|
|
376
|
+
.hw-step-desc {\r
|
|
377
|
+
margin: 0 0 12px 0;\r
|
|
378
|
+
font-size: 12px;\r
|
|
379
|
+
line-height: 1.6;\r
|
|
380
|
+
color: var(--hw-text-secondary);\r
|
|
381
|
+
}\r
|
|
382
|
+
\r
|
|
383
|
+
.hw-step-images-list {\r
|
|
384
|
+
display: flex;\r
|
|
385
|
+
flex-direction: column;\r
|
|
386
|
+
gap: 12px;\r
|
|
387
|
+
margin-top: 12px;\r
|
|
388
|
+
}\r
|
|
389
|
+
\r
|
|
390
|
+
.hw-step-image-wrap {\r
|
|
391
|
+
border: 2px solid #0ea5e9;\r
|
|
392
|
+
border-radius: 12px;\r
|
|
393
|
+
padding: 4px;\r
|
|
394
|
+
background: rgba(14, 165, 233, 0.04);\r
|
|
395
|
+
box-shadow: 0 0 12px rgba(14, 165, 233, 0.2);\r
|
|
396
|
+
overflow: hidden;\r
|
|
397
|
+
transition: transform 0.2s, box-shadow 0.2s;\r
|
|
398
|
+
}\r
|
|
399
|
+
\r
|
|
400
|
+
.hw-step-image-wrap:hover {\r
|
|
401
|
+
transform: scale(1.01);\r
|
|
402
|
+
box-shadow: 0 0 16px rgba(14, 165, 233, 0.35);\r
|
|
403
|
+
}\r
|
|
404
|
+
\r
|
|
405
|
+
.hw-step-img {\r
|
|
406
|
+
width: 100%;\r
|
|
407
|
+
height: auto;\r
|
|
408
|
+
display: block;\r
|
|
409
|
+
border-radius: 8px;\r
|
|
410
|
+
object-fit: contain;\r
|
|
411
|
+
cursor: zoom-in;\r
|
|
412
|
+
}\r
|
|
413
|
+
\r
|
|
414
|
+
.hw-step-note {\r
|
|
415
|
+
display: flex;\r
|
|
416
|
+
gap: 8px;\r
|
|
417
|
+
background: rgba(59, 130, 246, 0.08);\r
|
|
418
|
+
border: 1px solid rgba(59, 130, 246, 0.2);\r
|
|
419
|
+
border-radius: 8px;\r
|
|
420
|
+
padding: 10px 12px;\r
|
|
421
|
+
margin-top: 12px;\r
|
|
422
|
+
align-items: flex-start;\r
|
|
423
|
+
box-sizing: border-box;\r
|
|
424
|
+
}\r
|
|
425
|
+
\r
|
|
426
|
+
.hw-note-icon {\r
|
|
427
|
+
color: #3b82f6;\r
|
|
428
|
+
flex-shrink: 0;\r
|
|
429
|
+
margin-top: 2px;\r
|
|
430
|
+
}\r
|
|
431
|
+
\r
|
|
432
|
+
.hw-note-desc {\r
|
|
433
|
+
margin: 0;\r
|
|
434
|
+
font-size: 11px;\r
|
|
435
|
+
line-height: 1.5;\r
|
|
436
|
+
color: var(--hw-text-secondary);\r
|
|
437
|
+
text-align: left;\r
|
|
438
|
+
}\r
|
|
439
|
+
\r
|
|
440
|
+
.hw-step-important {\r
|
|
441
|
+
display: flex;\r
|
|
442
|
+
gap: 8px;\r
|
|
443
|
+
background: rgba(245, 158, 11, 0.08);\r
|
|
444
|
+
border: 1px solid rgba(245, 158, 11, 0.2);\r
|
|
445
|
+
border-radius: 8px;\r
|
|
446
|
+
padding: 10px 12px;\r
|
|
447
|
+
margin-top: 12px;\r
|
|
448
|
+
align-items: flex-start;\r
|
|
449
|
+
box-sizing: border-box;\r
|
|
450
|
+
text-align: left;\r
|
|
451
|
+
}\r
|
|
452
|
+
\r
|
|
453
|
+
.hw-important-icon {\r
|
|
454
|
+
color: #f59e0b;\r
|
|
455
|
+
flex-shrink: 0;\r
|
|
456
|
+
margin-top: 2px;\r
|
|
457
|
+
}\r
|
|
458
|
+
\r
|
|
459
|
+
.hw-important-title {\r
|
|
460
|
+
margin: 0 0 2px 0;\r
|
|
461
|
+
font-size: 11px;\r
|
|
462
|
+
font-weight: 700;\r
|
|
463
|
+
color: #f59e0b;\r
|
|
464
|
+
}\r
|
|
465
|
+
\r
|
|
466
|
+
.hw-important-desc {\r
|
|
467
|
+
margin: 0;\r
|
|
468
|
+
font-size: 11px;\r
|
|
469
|
+
line-height: 1.5;\r
|
|
470
|
+
color: var(--hw-text-secondary);\r
|
|
471
|
+
}\r
|
|
472
|
+
\r
|
|
473
|
+
/* Support & Feedback Form */\r
|
|
474
|
+
.hw-field {\r
|
|
475
|
+
margin-bottom: 16px;\r
|
|
476
|
+
}\r
|
|
477
|
+
\r
|
|
478
|
+
.hw-label {\r
|
|
479
|
+
display: block;\r
|
|
480
|
+
font-size: 11px;\r
|
|
481
|
+
font-weight: 600;\r
|
|
482
|
+
color: var(--hw-text-secondary);\r
|
|
483
|
+
text-transform: uppercase;\r
|
|
484
|
+
letter-spacing: 0.05em;\r
|
|
485
|
+
margin-bottom: 6px;\r
|
|
486
|
+
}\r
|
|
487
|
+
\r
|
|
488
|
+
.hw-input,\r
|
|
489
|
+
.hw-textarea,\r
|
|
490
|
+
.hw-select {\r
|
|
491
|
+
width: 100%;\r
|
|
492
|
+
padding: 10px 12px;\r
|
|
493
|
+
border-radius: 8px;\r
|
|
494
|
+
font-size: 13px;\r
|
|
495
|
+
background: var(--hw-input-bg);\r
|
|
496
|
+
border: 1px solid var(--hw-input-border);\r
|
|
497
|
+
color: var(--hw-text-primary);\r
|
|
498
|
+
outline: none;\r
|
|
499
|
+
box-sizing: border-box;\r
|
|
500
|
+
transition: all 0.2s;\r
|
|
501
|
+
}\r
|
|
502
|
+
\r
|
|
503
|
+
.hw-input:focus,\r
|
|
504
|
+
.hw-textarea:focus,\r
|
|
505
|
+
.hw-select:focus {\r
|
|
506
|
+
border-color: var(--hw-input-focus);\r
|
|
507
|
+
box-shadow: 0 0 0 2px var(--hw-accent-glow);\r
|
|
508
|
+
}\r
|
|
509
|
+
\r
|
|
510
|
+
.hw-textarea {\r
|
|
511
|
+
resize: vertical;\r
|
|
512
|
+
min-height: 90px;\r
|
|
513
|
+
}\r
|
|
514
|
+
\r
|
|
515
|
+
.hw-select option {\r
|
|
516
|
+
background: var(--hw-bg-sidebar);\r
|
|
517
|
+
color: var(--hw-text-primary);\r
|
|
518
|
+
}\r
|
|
519
|
+
\r
|
|
520
|
+
/* Upload Zone */\r
|
|
521
|
+
.hw-upload-zone {\r
|
|
522
|
+
width: 100%;\r
|
|
523
|
+
border-radius: 8px;\r
|
|
524
|
+
box-sizing: border-box;\r
|
|
525
|
+
border: 1px dashed var(--hw-input-border);\r
|
|
526
|
+
display: flex;\r
|
|
527
|
+
flex-direction: column;\r
|
|
528
|
+
align-items: center;\r
|
|
529
|
+
gap: 6px;\r
|
|
530
|
+
padding: 16px 12px;\r
|
|
531
|
+
transition: all 0.2s;\r
|
|
532
|
+
cursor: pointer;\r
|
|
533
|
+
}\r
|
|
534
|
+
\r
|
|
535
|
+
.hw-upload-zone.dragover {\r
|
|
536
|
+
border-color: var(--hw-accent);\r
|
|
537
|
+
background: var(--hw-accent-glow);\r
|
|
538
|
+
}\r
|
|
539
|
+
\r
|
|
540
|
+
.hw-upload-zone svg {\r
|
|
541
|
+
color: var(--hw-text-muted);\r
|
|
542
|
+
}\r
|
|
543
|
+
\r
|
|
544
|
+
.hw-upload-hint {\r
|
|
545
|
+
font-size: 12px;\r
|
|
546
|
+
color: var(--hw-text-secondary);\r
|
|
547
|
+
margin: 0;\r
|
|
548
|
+
text-align: center;\r
|
|
549
|
+
}\r
|
|
550
|
+
\r
|
|
551
|
+
.hw-upload-sub {\r
|
|
552
|
+
font-size: 10px;\r
|
|
553
|
+
color: var(--hw-text-muted);\r
|
|
554
|
+
margin: 0;\r
|
|
555
|
+
}\r
|
|
556
|
+
\r
|
|
557
|
+
.hw-upload-actions {\r
|
|
558
|
+
display: flex;\r
|
|
559
|
+
gap: 6px;\r
|
|
560
|
+
margin-top: 4px;\r
|
|
561
|
+
}\r
|
|
562
|
+
\r
|
|
563
|
+
.hw-btn-paste,\r
|
|
564
|
+
.hw-btn-browse {\r
|
|
565
|
+
display: flex;\r
|
|
566
|
+
align-items: center;\r
|
|
567
|
+
gap: 5px;\r
|
|
568
|
+
padding: 4px 10px;\r
|
|
569
|
+
border-radius: 6px;\r
|
|
570
|
+
font-size: 11px;\r
|
|
571
|
+
font-weight: 600;\r
|
|
572
|
+
cursor: pointer;\r
|
|
573
|
+
border: 1px solid var(--hw-input-border);\r
|
|
574
|
+
background: var(--hw-surface);\r
|
|
575
|
+
color: var(--hw-text-secondary);\r
|
|
576
|
+
transition: all 0.15s;\r
|
|
577
|
+
}\r
|
|
578
|
+
\r
|
|
579
|
+
.hw-btn-paste:hover,\r
|
|
580
|
+
.hw-btn-browse:hover {\r
|
|
581
|
+
background: var(--hw-surface-hover);\r
|
|
582
|
+
color: var(--hw-text-primary);\r
|
|
583
|
+
}\r
|
|
584
|
+
\r
|
|
585
|
+
.hw-file-input {\r
|
|
586
|
+
display: none;\r
|
|
587
|
+
}\r
|
|
588
|
+
\r
|
|
589
|
+
.hw-preview-wrap {\r
|
|
590
|
+
position: relative;\r
|
|
591
|
+
}\r
|
|
592
|
+
\r
|
|
593
|
+
.hw-preview-img {\r
|
|
594
|
+
width: 100%;\r
|
|
595
|
+
max-height: 120px;\r
|
|
596
|
+
object-fit: cover;\r
|
|
597
|
+
border-radius: 8px;\r
|
|
598
|
+
border: 1px solid var(--hw-input-border);\r
|
|
599
|
+
display: block;\r
|
|
600
|
+
cursor: zoom-in;\r
|
|
601
|
+
}\r
|
|
602
|
+
\r
|
|
603
|
+
.hw-preview-remove {\r
|
|
604
|
+
position: absolute;\r
|
|
605
|
+
top: 6px;\r
|
|
606
|
+
right: 6px;\r
|
|
607
|
+
background: rgba(0, 0, 0, 0.7);\r
|
|
608
|
+
border: none;\r
|
|
609
|
+
border-radius: 6px;\r
|
|
610
|
+
color: #ef4444;\r
|
|
611
|
+
cursor: pointer;\r
|
|
612
|
+
padding: 3px 6px;\r
|
|
613
|
+
font-size: 10px;\r
|
|
614
|
+
font-weight: 700;\r
|
|
615
|
+
transition: background 0.15s;\r
|
|
616
|
+
}\r
|
|
617
|
+
\r
|
|
618
|
+
.hw-preview-remove:hover {\r
|
|
619
|
+
background: rgba(0, 0, 0, 0.9);\r
|
|
620
|
+
}\r
|
|
621
|
+
\r
|
|
622
|
+
.hw-preview-name {\r
|
|
623
|
+
font-size: 11px;\r
|
|
624
|
+
color: var(--hw-text-muted);\r
|
|
625
|
+
margin-top: 4px;\r
|
|
626
|
+
text-align: center;\r
|
|
627
|
+
text-overflow: ellipsis;\r
|
|
628
|
+
overflow: hidden;\r
|
|
629
|
+
white-space: nowrap;\r
|
|
630
|
+
}\r
|
|
631
|
+
\r
|
|
632
|
+
/* Submit button */\r
|
|
633
|
+
.hw-btn-submit {\r
|
|
634
|
+
width: 100%;\r
|
|
635
|
+
padding: 11px;\r
|
|
636
|
+
border-radius: 8px;\r
|
|
637
|
+
font-size: 13px;\r
|
|
638
|
+
font-weight: 700;\r
|
|
639
|
+
background: var(--hw-accent);\r
|
|
640
|
+
border: none;\r
|
|
641
|
+
color: #ffffff;\r
|
|
642
|
+
cursor: pointer;\r
|
|
643
|
+
transition: all 0.2s;\r
|
|
644
|
+
box-shadow: 0 4px 12px var(--hw-accent-glow);\r
|
|
645
|
+
}\r
|
|
646
|
+
\r
|
|
647
|
+
.hw-btn-submit:hover {\r
|
|
648
|
+
background: var(--hw-accent-hover);\r
|
|
649
|
+
box-shadow: 0 4px 18px var(--hw-accent-glow);\r
|
|
650
|
+
transform: translateY(-1px);\r
|
|
651
|
+
}\r
|
|
652
|
+
\r
|
|
653
|
+
.hw-btn-submit:disabled {\r
|
|
654
|
+
opacity: 0.5;\r
|
|
655
|
+
cursor: not-allowed;\r
|
|
656
|
+
transform: none;\r
|
|
657
|
+
box-shadow: none;\r
|
|
658
|
+
}\r
|
|
659
|
+
\r
|
|
660
|
+
/* Status Notifications */\r
|
|
661
|
+
.hw-status-msg {\r
|
|
662
|
+
padding: 10px;\r
|
|
663
|
+
border-radius: 8px;\r
|
|
664
|
+
font-size: 12px;\r
|
|
665
|
+
font-weight: 500;\r
|
|
666
|
+
text-align: center;\r
|
|
667
|
+
margin-bottom: 12px;\r
|
|
668
|
+
animation: slideDown 0.2s ease;\r
|
|
669
|
+
}\r
|
|
670
|
+
\r
|
|
671
|
+
@keyframes slideDown {\r
|
|
672
|
+
from {\r
|
|
673
|
+
transform: translateY(-8px);\r
|
|
674
|
+
opacity: 0;\r
|
|
675
|
+
}\r
|
|
676
|
+
\r
|
|
677
|
+
to {\r
|
|
678
|
+
transform: translateY(0);\r
|
|
679
|
+
opacity: 1;\r
|
|
680
|
+
}\r
|
|
681
|
+
}\r
|
|
682
|
+
\r
|
|
683
|
+
.hw-status-msg.success {\r
|
|
684
|
+
background: rgba(52, 211, 153, 0.15);\r
|
|
685
|
+
color: #34d399;\r
|
|
686
|
+
border: 1px solid rgba(52, 211, 153, 0.25);\r
|
|
687
|
+
}\r
|
|
688
|
+
\r
|
|
689
|
+
.hw-status-msg.error {\r
|
|
690
|
+
background: rgba(239, 68, 68, 0.15);\r
|
|
691
|
+
color: #f87171;\r
|
|
692
|
+
border: 1px solid rgba(239, 68, 68, 0.25);\r
|
|
693
|
+
}\r
|
|
694
|
+
\r
|
|
695
|
+
/* Ticket Status Listing */\r
|
|
696
|
+
.hw-ticket-list {\r
|
|
697
|
+
display: flex;\r
|
|
698
|
+
flex-direction: column;\r
|
|
699
|
+
gap: 10px;\r
|
|
700
|
+
flex: 1;\r
|
|
701
|
+
}\r
|
|
702
|
+
\r
|
|
703
|
+
.hw-ticket-card {\r
|
|
704
|
+
background: rgba(255, 255, 255, 0.02);\r
|
|
705
|
+
border: 1px solid var(--hw-border-glass);\r
|
|
706
|
+
border-radius: 12px;\r
|
|
707
|
+
padding: 14px;\r
|
|
708
|
+
transition: all 0.2s;\r
|
|
709
|
+
}\r
|
|
710
|
+
\r
|
|
711
|
+
.hw-ticket-card:hover {\r
|
|
712
|
+
border-color: var(--hw-border-glass);\r
|
|
713
|
+
background: rgba(255, 255, 255, 0.04);\r
|
|
714
|
+
transform: translateY(-1px);\r
|
|
715
|
+
}\r
|
|
716
|
+
\r
|
|
717
|
+
.hw-ticket-card-header {\r
|
|
718
|
+
display: flex;\r
|
|
719
|
+
justify-content: space-between;\r
|
|
720
|
+
align-items: flex-start;\r
|
|
721
|
+
gap: 8px;\r
|
|
722
|
+
margin-bottom: 6px;\r
|
|
723
|
+
}\r
|
|
724
|
+
\r
|
|
725
|
+
.hw-ticket-card-number {\r
|
|
726
|
+
font-size: 11px;\r
|
|
727
|
+
font-family: monospace;\r
|
|
728
|
+
color: var(--hw-text-muted);\r
|
|
729
|
+
font-weight: 600;\r
|
|
730
|
+
}\r
|
|
731
|
+
\r
|
|
732
|
+
.hw-ticket-card-badge {\r
|
|
733
|
+
font-size: 10px;\r
|
|
734
|
+
font-weight: 700;\r
|
|
735
|
+
text-transform: uppercase;\r
|
|
736
|
+
padding: 2px 8px;\r
|
|
737
|
+
border-radius: 9999px;\r
|
|
738
|
+
letter-spacing: 0.05em;\r
|
|
739
|
+
}\r
|
|
740
|
+
\r
|
|
741
|
+
.hw-badge-open {\r
|
|
742
|
+
color: var(--hw-color-open);\r
|
|
743
|
+
background: var(--hw-bg-open);\r
|
|
744
|
+
}\r
|
|
745
|
+
\r
|
|
746
|
+
.hw-badge-progress {\r
|
|
747
|
+
color: var(--hw-color-progress);\r
|
|
748
|
+
background: var(--hw-bg-progress);\r
|
|
749
|
+
}\r
|
|
750
|
+
\r
|
|
751
|
+
.hw-badge-pending {\r
|
|
752
|
+
color: var(--hw-color-pending);\r
|
|
753
|
+
background: var(--hw-bg-pending);\r
|
|
754
|
+
}\r
|
|
755
|
+
\r
|
|
756
|
+
.hw-badge-resolved {\r
|
|
757
|
+
color: var(--hw-color-resolved);\r
|
|
758
|
+
background: var(--hw-bg-resolved);\r
|
|
759
|
+
}\r
|
|
760
|
+
\r
|
|
761
|
+
.hw-badge-closed {\r
|
|
762
|
+
color: var(--hw-color-closed);\r
|
|
763
|
+
background: var(--hw-bg-closed);\r
|
|
764
|
+
}\r
|
|
765
|
+
\r
|
|
766
|
+
.hw-ticket-card-subject {\r
|
|
767
|
+
font-size: 13px;\r
|
|
768
|
+
font-weight: 600;\r
|
|
769
|
+
color: var(--hw-text-primary);\r
|
|
770
|
+
margin: 0 0 6px 0;\r
|
|
771
|
+
line-height: 1.4;\r
|
|
772
|
+
}\r
|
|
773
|
+
\r
|
|
774
|
+
.hw-ticket-card-footer {\r
|
|
775
|
+
display: flex;\r
|
|
776
|
+
justify-content: space-between;\r
|
|
777
|
+
font-size: 10px;\r
|
|
778
|
+
color: var(--hw-text-muted);\r
|
|
779
|
+
}\r
|
|
780
|
+
\r
|
|
781
|
+
/* Utility Empty & Loader States */\r
|
|
782
|
+
.hw-empty-state {\r
|
|
783
|
+
display: flex;\r
|
|
784
|
+
flex-direction: column;\r
|
|
785
|
+
align-items: center;\r
|
|
786
|
+
justify-content: center;\r
|
|
787
|
+
gap: 8px;\r
|
|
788
|
+
color: var(--hw-text-muted);\r
|
|
789
|
+
font-size: 12px;\r
|
|
790
|
+
text-align: center;\r
|
|
791
|
+
padding: 40px 20px;\r
|
|
792
|
+
flex: 1;\r
|
|
793
|
+
}\r
|
|
794
|
+
\r
|
|
795
|
+
.hw-empty-state svg {\r
|
|
796
|
+
color: var(--hw-text-muted);\r
|
|
797
|
+
opacity: 0.5;\r
|
|
798
|
+
}\r
|
|
799
|
+
\r
|
|
800
|
+
.hw-loader {\r
|
|
801
|
+
width: 24px;\r
|
|
802
|
+
height: 24px;\r
|
|
803
|
+
border: 2px solid var(--hw-border-glass);\r
|
|
804
|
+
border-top-color: var(--hw-accent);\r
|
|
805
|
+
border-radius: 50%;\r
|
|
806
|
+
animation: hw-spin 0.6s linear infinite;\r
|
|
807
|
+
margin: 40px auto;\r
|
|
808
|
+
}\r
|
|
809
|
+
\r
|
|
810
|
+
@keyframes hw-spin {\r
|
|
811
|
+
to {\r
|
|
812
|
+
transform: rotate(360deg);\r
|
|
813
|
+
}\r
|
|
814
|
+
}\r
|
|
815
|
+
\r
|
|
816
|
+
.hw-list-header {\r
|
|
817
|
+
display: flex;\r
|
|
818
|
+
justify-content: space-between;\r
|
|
819
|
+
align-items: center;\r
|
|
820
|
+
margin-bottom: 12px;\r
|
|
821
|
+
}\r
|
|
822
|
+
\r
|
|
823
|
+
.hw-list-title {\r
|
|
824
|
+
font-size: 12px;\r
|
|
825
|
+
font-weight: 700;\r
|
|
826
|
+
text-transform: uppercase;\r
|
|
827
|
+
color: var(--hw-text-secondary);\r
|
|
828
|
+
letter-spacing: 0.05em;\r
|
|
829
|
+
margin: 0;\r
|
|
830
|
+
}\r
|
|
831
|
+
\r
|
|
832
|
+
.hw-btn-refresh {\r
|
|
833
|
+
background: transparent;\r
|
|
834
|
+
border: none;\r
|
|
835
|
+
color: var(--hw-accent);\r
|
|
836
|
+
font-size: 11px;\r
|
|
837
|
+
font-weight: 600;\r
|
|
838
|
+
cursor: pointer;\r
|
|
839
|
+
display: flex;\r
|
|
840
|
+
align-items: center;\r
|
|
841
|
+
gap: 3px;\r
|
|
842
|
+
padding: 2px 6px;\r
|
|
843
|
+
border-radius: 4px;\r
|
|
844
|
+
transition: all 0.15s;\r
|
|
845
|
+
}\r
|
|
846
|
+
\r
|
|
847
|
+
.hw-btn-refresh:hover {\r
|
|
848
|
+
background: var(--hw-surface);\r
|
|
849
|
+
color: var(--hw-accent-hover);\r
|
|
850
|
+
}\r
|
|
851
|
+
\r
|
|
852
|
+
/* Lightbox Fullscreen Modal Overlay */\r
|
|
853
|
+
.hw-lightbox {\r
|
|
854
|
+
position: fixed;\r
|
|
855
|
+
top: 0;\r
|
|
856
|
+
left: 0;\r
|
|
857
|
+
width: 100vw;\r
|
|
858
|
+
height: 100vh;\r
|
|
859
|
+
background: rgba(4, 7, 13, 0.88);\r
|
|
860
|
+
backdrop-filter: blur(8px);\r
|
|
861
|
+
-webkit-backdrop-filter: blur(8px);\r
|
|
862
|
+
z-index: 1000000;\r
|
|
863
|
+
display: flex;\r
|
|
864
|
+
align-items: center;\r
|
|
865
|
+
justify-content: center;\r
|
|
866
|
+
opacity: 0;\r
|
|
867
|
+
pointer-events: none;\r
|
|
868
|
+
transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);\r
|
|
869
|
+
}\r
|
|
870
|
+
\r
|
|
871
|
+
.hw-lightbox.open {\r
|
|
872
|
+
opacity: 1;\r
|
|
873
|
+
pointer-events: auto;\r
|
|
874
|
+
}\r
|
|
875
|
+
\r
|
|
876
|
+
.hw-lightbox-img {\r
|
|
877
|
+
max-width: 90%;\r
|
|
878
|
+
max-height: 85%;\r
|
|
879
|
+
object-fit: contain;\r
|
|
880
|
+
border-radius: 12px;\r
|
|
881
|
+
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6);\r
|
|
882
|
+
border: 1px solid rgba(255, 255, 255, 0.1);\r
|
|
883
|
+
transform: scale(0.95);\r
|
|
884
|
+
transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\r
|
|
885
|
+
background: #000;\r
|
|
886
|
+
}\r
|
|
887
|
+
\r
|
|
888
|
+
.hw-lightbox.open .hw-lightbox-img {\r
|
|
889
|
+
transform: scale(1);\r
|
|
890
|
+
}\r
|
|
891
|
+
\r
|
|
892
|
+
.hw-lightbox-close {\r
|
|
893
|
+
position: absolute;\r
|
|
894
|
+
top: 24px;\r
|
|
895
|
+
right: 24px;\r
|
|
896
|
+
background: rgba(255, 255, 255, 0.08);\r
|
|
897
|
+
border: 1px solid rgba(255, 255, 255, 0.1);\r
|
|
898
|
+
border-radius: 50%;\r
|
|
899
|
+
width: 44px;\r
|
|
900
|
+
height: 44px;\r
|
|
901
|
+
color: #ffffff;\r
|
|
902
|
+
font-size: 22px;\r
|
|
903
|
+
cursor: pointer;\r
|
|
904
|
+
display: flex;\r
|
|
905
|
+
align-items: center;\r
|
|
906
|
+
justify-content: center;\r
|
|
907
|
+
transition: all 0.2s;\r
|
|
908
|
+
outline: none;\r
|
|
909
|
+
}\r
|
|
910
|
+
\r
|
|
911
|
+
.hw-lightbox-close:hover {\r
|
|
912
|
+
background: rgba(255, 255, 255, 0.18);\r
|
|
913
|
+
transform: scale(1.05);\r
|
|
914
|
+
color: #f43f5e;\r
|
|
915
|
+
}\r
|
|
916
|
+
\r
|
|
917
|
+
/* Ticket Comments Section styling */\r
|
|
918
|
+
.hw-ticket-comments-section {\r
|
|
919
|
+
margin-top: 10px;\r
|
|
920
|
+
border-top: 1px solid var(--hw-border-glass);\r
|
|
921
|
+
padding-top: 10px;\r
|
|
922
|
+
width: 100%;\r
|
|
923
|
+
}\r
|
|
924
|
+
\r
|
|
925
|
+
.hw-comments-toggle-btn {\r
|
|
926
|
+
display: flex;\r
|
|
927
|
+
align-items: center;\r
|
|
928
|
+
gap: 6px;\r
|
|
929
|
+
background: transparent;\r
|
|
930
|
+
border: none;\r
|
|
931
|
+
color: var(--hw-text-secondary);\r
|
|
932
|
+
font-size: 11px;\r
|
|
933
|
+
font-weight: 600;\r
|
|
934
|
+
cursor: pointer;\r
|
|
935
|
+
padding: 4px 8px;\r
|
|
936
|
+
border-radius: 6px;\r
|
|
937
|
+
transition: all 0.2s ease;\r
|
|
938
|
+
width: fit-content;\r
|
|
939
|
+
}\r
|
|
940
|
+
\r
|
|
941
|
+
.hw-comments-toggle-btn:hover {\r
|
|
942
|
+
background: var(--hw-surface);\r
|
|
943
|
+
color: var(--hw-text-primary);\r
|
|
944
|
+
}\r
|
|
945
|
+
\r
|
|
946
|
+
.hw-comments-toggle-chevron {\r
|
|
947
|
+
font-size: 9px;\r
|
|
948
|
+
color: var(--hw-text-muted);\r
|
|
949
|
+
transition: transform 0.25s ease;\r
|
|
950
|
+
margin-left: 2px;\r
|
|
951
|
+
}\r
|
|
952
|
+
\r
|
|
953
|
+
.hw-comments-toggle-btn.open .hw-comments-toggle-chevron {\r
|
|
954
|
+
transform: rotate(180deg);\r
|
|
955
|
+
}\r
|
|
956
|
+
\r
|
|
957
|
+
.hw-comments-list-wrapper {\r
|
|
958
|
+
max-height: 0;\r
|
|
959
|
+
overflow: hidden;\r
|
|
960
|
+
transition: max-height 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r
|
|
961
|
+
}\r
|
|
962
|
+
\r
|
|
963
|
+
.hw-comments-list {\r
|
|
964
|
+
display: flex;\r
|
|
965
|
+
flex-direction: column;\r
|
|
966
|
+
gap: 8px;\r
|
|
967
|
+
padding: 8px 4px 4px 4px;\r
|
|
968
|
+
}\r
|
|
969
|
+
\r
|
|
970
|
+
.hw-comment-item {\r
|
|
971
|
+
background: rgba(255, 255, 255, 0.015);\r
|
|
972
|
+
border: 1px solid var(--hw-border-glass);\r
|
|
973
|
+
border-radius: 8px;\r
|
|
974
|
+
padding: 10px;\r
|
|
975
|
+
box-sizing: border-box;\r
|
|
976
|
+
}\r
|
|
977
|
+
\r
|
|
978
|
+
/* Highlights the staff's response with accent color */\r
|
|
979
|
+
.hw-comment-item.staff {\r
|
|
980
|
+
background: rgba(93, 79, 255, 0.04);\r
|
|
981
|
+
border-left: 3px solid var(--hw-accent);\r
|
|
982
|
+
}\r
|
|
983
|
+
\r
|
|
984
|
+
.hw-comment-meta {\r
|
|
985
|
+
display: flex;\r
|
|
986
|
+
justify-content: space-between;\r
|
|
987
|
+
align-items: center;\r
|
|
988
|
+
margin-bottom: 6px;\r
|
|
989
|
+
font-size: 10px;\r
|
|
990
|
+
}\r
|
|
991
|
+
\r
|
|
992
|
+
.hw-comment-author {\r
|
|
993
|
+
font-weight: 700;\r
|
|
994
|
+
color: var(--hw-text-primary);\r
|
|
995
|
+
display: flex;\r
|
|
996
|
+
align-items: center;\r
|
|
997
|
+
gap: 6px;\r
|
|
998
|
+
}\r
|
|
999
|
+
\r
|
|
1000
|
+
.hw-comment-staff-badge {\r
|
|
1001
|
+
background: var(--hw-accent);\r
|
|
1002
|
+
color: #ffffff;\r
|
|
1003
|
+
font-size: 8px;\r
|
|
1004
|
+
padding: 1px 5px;\r
|
|
1005
|
+
border-radius: 4px;\r
|
|
1006
|
+
text-transform: uppercase;\r
|
|
1007
|
+
font-weight: 800;\r
|
|
1008
|
+
letter-spacing: 0.03em;\r
|
|
1009
|
+
}\r
|
|
1010
|
+
\r
|
|
1011
|
+
.hw-comment-date {\r
|
|
1012
|
+
color: var(--hw-text-muted);\r
|
|
1013
|
+
}\r
|
|
1014
|
+
\r
|
|
1015
|
+
.hw-comment-text {\r
|
|
1016
|
+
margin: 0;\r
|
|
1017
|
+
font-size: 11px;\r
|
|
1018
|
+
line-height: 1.5;\r
|
|
1019
|
+
color: var(--hw-text-secondary);\r
|
|
1020
|
+
word-break: break-word;\r
|
|
1021
|
+
}`});var S={};z(S,{HelpSidebarWidgetElement:()=>x});var M,x,y=E(()=>{"use strict";_();M=`
|
|
1022
|
+
<button class="hw-trigger-btn" id="hw-trigger-btn" title="Open Help & Support" aria-label="Help and Support">
|
|
1023
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round">
|
|
1024
|
+
<circle cx="12" cy="12" r="10"/>
|
|
1025
|
+
<path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>
|
|
1026
|
+
<line x1="12" y1="17" x2="12.01" y2="17"/>
|
|
1027
|
+
</svg>
|
|
1028
|
+
</button>
|
|
1029
|
+
|
|
1030
|
+
<div class="hw-backdrop" id="hw-backdrop"></div>
|
|
1031
|
+
|
|
1032
|
+
<div class="hw-lightbox" id="hw-lightbox">
|
|
1033
|
+
<button class="hw-lightbox-close" id="hw-lightbox-close" aria-label="Close image preview">\u2715</button>
|
|
1034
|
+
<img class="hw-lightbox-img" id="hw-lightbox-img" src="" alt="Enlarged screenshot" />
|
|
1035
|
+
</div>
|
|
1036
|
+
|
|
1037
|
+
<div class="hw-sidebar" id="hw-sidebar">
|
|
1038
|
+
<div class="hw-header">
|
|
1039
|
+
<h2 class="hw-header-title">
|
|
1040
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
|
|
1041
|
+
<circle cx="12" cy="12" r="10"/>
|
|
1042
|
+
<path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>
|
|
1043
|
+
<line x1="12" y1="17" x2="12.01" y2="17"/>
|
|
1044
|
+
</svg>
|
|
1045
|
+
Help & Support
|
|
1046
|
+
</h2>
|
|
1047
|
+
<button class="hw-close-btn" id="hw-close-btn" aria-label="Close sidebar">\u2715</button>
|
|
1048
|
+
</div>
|
|
1049
|
+
|
|
1050
|
+
<div class="hw-tabs">
|
|
1051
|
+
<button class="hw-tab-btn active" data-tab="guide">Help Guide</button>
|
|
1052
|
+
<button class="hw-tab-btn" data-tab="feedback">Support & Feedback</button>
|
|
1053
|
+
<button class="hw-tab-btn" data-tab="status">Ticket Status</button>
|
|
1054
|
+
</div>
|
|
1055
|
+
|
|
1056
|
+
<div class="hw-body">
|
|
1057
|
+
<!-- 1. HELP GUIDE PANEL -->
|
|
1058
|
+
<div class="hw-tab-panel active" id="hw-panel-guide">
|
|
1059
|
+
<div id="hw-guide-loading" class="hw-loader"></div>
|
|
1060
|
+
<div id="hw-guide-container"></div>
|
|
1061
|
+
</div>
|
|
1062
|
+
|
|
1063
|
+
<!-- 2. SUPPORT & FEEDBACK PANEL -->
|
|
1064
|
+
<div class="hw-tab-panel" id="hw-panel-feedback">
|
|
1065
|
+
<div id="hw-form-status" style="display:none"></div>
|
|
1066
|
+
|
|
1067
|
+
<div class="hw-field">
|
|
1068
|
+
<label class="hw-label" for="hw-name">Full Name *</label>
|
|
1069
|
+
<input class="hw-input" id="hw-name" type="text" placeholder="Your name" required />
|
|
1070
|
+
</div>
|
|
1071
|
+
|
|
1072
|
+
<div class="hw-field">
|
|
1073
|
+
<label class="hw-label" for="hw-email">Email Address *</label>
|
|
1074
|
+
<input class="hw-input" id="hw-email" type="email" placeholder="your.email@domain.com" required />
|
|
1075
|
+
</div>
|
|
1076
|
+
|
|
1077
|
+
<div id="hw-custom-fields-container"></div>
|
|
1078
|
+
|
|
1079
|
+
<div class="hw-field">
|
|
1080
|
+
<label class="hw-label" for="hw-subject">Subject *</label>
|
|
1081
|
+
<input class="hw-input" id="hw-subject" type="text" placeholder="Brief summary of your request" required />
|
|
1082
|
+
</div>
|
|
1083
|
+
|
|
1084
|
+
<div class="hw-field">
|
|
1085
|
+
<label class="hw-label" for="hw-category">Category *</label>
|
|
1086
|
+
<select class="hw-select" id="hw-category">
|
|
1087
|
+
<option value="bug">Bug Report \u{1F41B}</option>
|
|
1088
|
+
<option value="feature">Feature Request \u{1F4A1}</option>
|
|
1089
|
+
<option value="support">General Support \u2754</option>
|
|
1090
|
+
<option value="other">Other \u{1F4DD}</option>
|
|
1091
|
+
</select>
|
|
1092
|
+
</div>
|
|
1093
|
+
|
|
1094
|
+
<div class="hw-field">
|
|
1095
|
+
<label class="hw-label" for="hw-description">Description *</label>
|
|
1096
|
+
<textarea class="hw-textarea" id="hw-description" placeholder="Describe your request in detail..." required></textarea>
|
|
1097
|
+
</div>
|
|
1098
|
+
|
|
1099
|
+
<div class="hw-field">
|
|
1100
|
+
<label class="hw-label">Screenshot (optional)</label>
|
|
1101
|
+
<input class="hw-file-input" id="hw-file" type="file" accept="image/*" />
|
|
1102
|
+
<div class="hw-upload-zone" id="hw-upload-zone" tabindex="0">
|
|
1103
|
+
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
1104
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
1105
|
+
<circle cx="8.5" cy="8.5" r="1.5"/>
|
|
1106
|
+
<polyline points="21 15 16 10 5 21"/>
|
|
1107
|
+
</svg>
|
|
1108
|
+
<p class="hw-upload-hint">Drag & drop image here, or paste</p>
|
|
1109
|
+
<p class="hw-upload-sub">PNG, JPG, GIF up to 10MB</p>
|
|
1110
|
+
<div class="hw-upload-actions">
|
|
1111
|
+
<button class="hw-btn-paste" id="hw-paste-btn" type="button">
|
|
1112
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
|
|
1113
|
+
<rect x="8" y="2" width="8" height="4" rx="1"/>
|
|
1114
|
+
<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/>
|
|
1115
|
+
</svg>
|
|
1116
|
+
Paste (Ctrl+V)
|
|
1117
|
+
</button>
|
|
1118
|
+
<button class="hw-btn-browse" id="hw-browse-btn" type="button">
|
|
1119
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
|
|
1120
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
|
|
1121
|
+
<polyline points="17 8 12 3 7 8"/>
|
|
1122
|
+
<line x1="12" y1="3" x2="12" y2="15"/>
|
|
1123
|
+
</svg>
|
|
1124
|
+
Browse
|
|
1125
|
+
</button>
|
|
1126
|
+
</div>
|
|
1127
|
+
</div>
|
|
1128
|
+
<div id="hw-preview" style="display:none"></div>
|
|
1129
|
+
</div>
|
|
1130
|
+
|
|
1131
|
+
<div style="margin-top:auto; padding-top:16px;">
|
|
1132
|
+
<button class="hw-btn-submit" id="hw-submit-btn">Submit Request</button>
|
|
1133
|
+
</div>
|
|
1134
|
+
</div>
|
|
1135
|
+
|
|
1136
|
+
<!-- 3. TICKET STATUS PANEL -->
|
|
1137
|
+
<div class="hw-tab-panel" id="hw-panel-status">
|
|
1138
|
+
<div class="hw-list-header">
|
|
1139
|
+
<h3 class="hw-list-title">Your Submitted Tickets</h3>
|
|
1140
|
+
<button class="hw-btn-refresh" id="hw-refresh-btn" type="button">
|
|
1141
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
1142
|
+
<path d="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"/>
|
|
1143
|
+
</svg>
|
|
1144
|
+
Refresh Status
|
|
1145
|
+
</button>
|
|
1146
|
+
</div>
|
|
1147
|
+
|
|
1148
|
+
<div id="hw-tickets-loading" class="hw-loader" style="display:none"></div>
|
|
1149
|
+
<div class="hw-ticket-list" id="hw-ticket-list"></div>
|
|
1150
|
+
</div>
|
|
1151
|
+
</div>
|
|
1152
|
+
</div>
|
|
1153
|
+
`,x=class extends HTMLElement{constructor(){super();this._screenshotFile=null;this._guideData=null;this._customFields=[];this._shadow=this.attachShadow({mode:"open"})}static get observedAttributes(){return["user-name","user-email","button-style","theme","user-role","custom-fields"]}get userRole(){return this.getAttribute("user-role")||""}set userRole(e){this.setAttribute("user-role",e)}get customFields(){return this._customFields}set customFields(e){typeof e=="string"?this._parseCustomFieldsAttribute(e):Array.isArray(e)?this._customFields=e:this._customFields=[],this._renderCustomFields()}_parseCustomFieldsAttribute(e){if(e)try{let i=JSON.parse(e);Array.isArray(i)&&(this._customFields=i)}catch(i){console.warn("Failed to parse custom-fields attribute JSON:",i)}}_getCustomFieldsList(){if(this._customFields&&this._customFields.length>0)return this._customFields;let e=this.getAttribute("custom-fields");if(e)try{let i=JSON.parse(e);if(Array.isArray(i))return i}catch{}return[]}_renderCustomFields(){let e=this._shadow?.getElementById("hw-custom-fields-container");if(!e)return;let i={};e.querySelectorAll(".hw-custom-input").forEach(c=>{let o=c.dataset.customId;o&&c.value&&(i[o]=c.value)});let a=this._getCustomFieldsList();if(!a||a.length===0){e.innerHTML="";return}let n="";a.forEach(c=>{let o=`hw-custom-${c.id}`,r=c.required?" *":"",p=c.required?"required":"",s=c.type||"text",h=c.placeholder||"",l=i[c.id]!==void 0?i[c.id]:c.defaultValue||"";s==="textarea"?n+=`
|
|
1154
|
+
<div class="hw-field">
|
|
1155
|
+
<label class="hw-label" for="${o}">${c.label}${r}</label>
|
|
1156
|
+
<textarea
|
|
1157
|
+
class="hw-textarea hw-custom-input"
|
|
1158
|
+
data-custom-id="${c.id}"
|
|
1159
|
+
id="${o}"
|
|
1160
|
+
placeholder="${h}"
|
|
1161
|
+
${p}
|
|
1162
|
+
>${l}</textarea>
|
|
1163
|
+
</div>
|
|
1164
|
+
`:n+=`
|
|
1165
|
+
<div class="hw-field">
|
|
1166
|
+
<label class="hw-label" for="${o}">${c.label}${r}</label>
|
|
1167
|
+
<input
|
|
1168
|
+
class="hw-input hw-custom-input"
|
|
1169
|
+
data-custom-id="${c.id}"
|
|
1170
|
+
id="${o}"
|
|
1171
|
+
type="${s}"
|
|
1172
|
+
placeholder="${h}"
|
|
1173
|
+
value="${l}"
|
|
1174
|
+
${p}
|
|
1175
|
+
/>
|
|
1176
|
+
</div>
|
|
1177
|
+
`}),e.innerHTML=n}attributeChangedCallback(e,i,t){if(this._shadow){if(e==="user-name"){let a=this._shadow.getElementById("hw-name");a&&(a.value=t||"")}if(e==="user-email"){let a=this._shadow.getElementById("hw-email");a&&(a.value=t||"")}e==="user-role"&&this._guideData&&this._renderHelpGuide(this._guideData),e==="custom-fields"&&(this._parseCustomFieldsAttribute(t),this._renderCustomFields())}}connectedCallback(){if(this._shadow.innerHTML=`<style>${L}</style>${M}`,!document.getElementById("hw-font-link")){let t=document.createElement("link");t.id="hw-font-link",t.rel="stylesheet",t.href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",document.head.appendChild(t)}this._applyAttributes(),this._bindEvents(),this._parseCustomFieldsAttribute(this.getAttribute("custom-fields")),this._renderCustomFields();let e=this.getAttribute("user-name");if(e){let t=this._shadow.getElementById("hw-name");t&&(t.value=e)}let i=this.getAttribute("user-email");if(i){let t=this._shadow.getElementById("hw-email");t&&(t.value=i)}this._loadLocalHelpGuide()}_applyAttributes(){let e=this._shadow.getElementById("hw-trigger-btn");if(!e)return;let i=this.getAttribute("button-style");i==="minimal"?e.classList.add("minimal"):i==="hidden"&&e.classList.add("hidden")}_bindEvents(){let e=this._shadow;e.getElementById("hw-trigger-btn")?.addEventListener("click",()=>this.openSidebar()),e.getElementById("hw-close-btn")?.addEventListener("click",()=>this.closeSidebar()),e.getElementById("hw-backdrop")?.addEventListener("click",()=>this.closeSidebar());let i=e.querySelectorAll(".hw-tab-btn");i.forEach(r=>{r.addEventListener("click",()=>{i.forEach(h=>h.classList.remove("active")),e.querySelectorAll(".hw-tab-panel").forEach(h=>h.classList.remove("active")),r.classList.add("active");let p=r,s=`hw-panel-${p.dataset.tab}`;e.getElementById(s)?.classList.add("active"),p.dataset.tab==="status"&&this._loadTicketsStatus()})});let t=e.getElementById("hw-guide-container");t&&t.addEventListener("click",r=>{let s=r.target.closest(".hw-faq-header");if(!s)return;let h=s.parentElement;if(!h)return;let l=h.querySelector(".hw-faq-content");if(!l)return;let u=h.classList.contains("open");t.querySelectorAll(".hw-faq-item").forEach(d=>{d.classList.remove("open");let g=d.querySelector(".hw-faq-content");g&&(g.style.maxHeight="0px")}),u||(h.classList.add("open"),l.style.maxHeight=l.scrollHeight+"px")});let a=e.getElementById("hw-file");e.getElementById("hw-browse-btn")?.addEventListener("click",r=>{r.stopPropagation(),a?.click()}),a?.addEventListener("change",()=>{a.files&&a.files[0]&&this._handleFile(a.files[0])}),e.getElementById("hw-paste-btn")?.addEventListener("click",r=>{r.stopPropagation(),this._pasteFromClipboard()}),e.getElementById("hw-sidebar")?.addEventListener("paste",r=>{let p=r.clipboardData?.items||[];for(let s of p)if(s.type.startsWith("image/")){let h=s.getAsFile();if(h){this._handleFile(h);break}}});let n=e.getElementById("hw-upload-zone");n?.addEventListener("dragover",r=>{r.preventDefault(),n.classList.add("dragover")}),n?.addEventListener("dragleave",()=>n.classList.remove("dragover")),n?.addEventListener("drop",r=>{r.preventDefault(),n.classList.remove("dragover");let p=r.dataTransfer.files[0];p&&p.type.startsWith("image/")&&this._handleFile(p)}),e.getElementById("hw-submit-btn")?.addEventListener("click",()=>this._submitTicket()),e.getElementById("hw-refresh-btn")?.addEventListener("click",()=>this._loadTicketsStatus());let c=e.getElementById("hw-ticket-list");c&&c.addEventListener("click",r=>{let s=r.target.closest(".hw-comments-toggle-btn");if(!s)return;let h=s.dataset.ticket,l=c.querySelector(`#comments-list-${h}`);if(!l)return;s.classList.contains("open")?(s.classList.remove("open"),l.style.maxHeight="0px"):(s.classList.add("open"),l.style.maxHeight=l.scrollHeight+"px")}),t&&t.addEventListener("click",r=>{let p=r.target;if(p.classList.contains("hw-step-img")){let s=p.src;this._openLightbox(s)}});let o=e.getElementById("hw-preview");o&&o.addEventListener("click",r=>{let p=r.target;if(p.classList.contains("hw-preview-img")){let s=p.src;this._openLightbox(s)}}),e.getElementById("hw-lightbox-close")?.addEventListener("click",()=>this._closeLightbox()),e.getElementById("hw-lightbox")?.addEventListener("click",r=>{r.target===e.getElementById("hw-lightbox")&&this._closeLightbox()})}openSidebar(){this._shadow.getElementById("hw-sidebar")?.classList.add("open"),this._shadow.getElementById("hw-backdrop")?.classList.add("open")}closeSidebar(){this._shadow.getElementById("hw-sidebar")?.classList.remove("open"),this._shadow.getElementById("hw-backdrop")?.classList.remove("open"),this._hideStatus()}_openLightbox(e){let i=this._shadow.getElementById("hw-lightbox"),t=this._shadow.getElementById("hw-lightbox-img");i&&t&&(t.src=e,i.classList.add("open"))}_closeLightbox(){let e=this._shadow.getElementById("hw-lightbox");e&&e.classList.remove("open")}async _pasteFromClipboard(){try{let e=await navigator.clipboard.read();for(let i of e){let t=i.types.find(a=>a.startsWith("image/"));if(t){let a=await i.getType(t);this._handleFile(new File([a],"screenshot.png",{type:t}));return}}this._showStatus("No image found in clipboard. Copy a screenshot first, then paste.","error")}catch{this._showStatus("Press Ctrl+V inside this sidebar to paste a screenshot.","error")}}_handleFile(e){if(!e.type.startsWith("image/")){this._showStatus("Please upload an image file (PNG, JPG, GIF).","error");return}if(e.size>10*1024*1024){this._showStatus("Screenshot must be smaller than 10MB.","error");return}this._screenshotFile=e,this._hideStatus();let i=URL.createObjectURL(e),t=this._shadow.getElementById("hw-upload-zone"),a=this._shadow.getElementById("hw-preview");t&&(t.style.display="none"),a&&(a.style.display="block",a.innerHTML=`
|
|
1178
|
+
<div class="hw-preview-wrap">
|
|
1179
|
+
<img class="hw-preview-img" src="${i}" alt="Screenshot preview" />
|
|
1180
|
+
<button class="hw-preview-remove" id="hw-remove-ss-btn" type="button">\u2715 Remove</button>
|
|
1181
|
+
</div>
|
|
1182
|
+
<p class="hw-preview-name">${e.name}</p>
|
|
1183
|
+
`,a.querySelector("#hw-remove-ss-btn")?.addEventListener("click",()=>this._removeFile()))}_removeFile(){this._screenshotFile=null;let e=this._shadow.getElementById("hw-file");e&&(e.value="");let i=this._shadow.getElementById("hw-upload-zone");i&&(i.style.display="flex");let t=this._shadow.getElementById("hw-preview");t&&(t.style.display="none",t.innerHTML="")}_resetForm(){let e=this._shadow.getElementById("hw-name"),i=this._shadow.getElementById("hw-email"),t=this._shadow.getElementById("hw-subject"),a=this._shadow.getElementById("hw-description"),n=this._shadow.getElementById("hw-category");e&&(e.value=""),i&&(i.value=""),t&&(t.value=""),a&&(a.value=""),n&&(n.value="bug"),this._shadow.querySelectorAll(".hw-custom-input").forEach(r=>{r.value=""}),this._removeFile(),this._hideStatus();let o=this._shadow.getElementById("hw-submit-btn");o&&(o.disabled=!1,o.textContent="Submit Request")}async _submitTicket(){let e=this._shadow.getElementById("hw-name")?.value.trim()||"",i=this._shadow.getElementById("hw-email")?.value.trim()||"",t=this._shadow.getElementById("hw-subject")?.value.trim()||"",a=this._shadow.getElementById("hw-description")?.value.trim()||"",n=this._shadow.getElementById("hw-category")?.value||"bug";if(!e||!i||!t||!a){this._showStatus("Please fill in all required fields.","error");return}let c=this._getCustomFieldsList(),o={};for(let u of c){let d=this._shadow.querySelector(`[data-custom-id="${u.id}"]`),g=d?d.value.trim():"";if(u.required&&!g){this._showStatus(`Please fill in required field: ${u.label}`,"error");return}g&&(o[u.id]=g)}let r=(this.getAttribute("base-url")||"").replace(/\/$/,""),p=this.getAttribute("embed-key")||"";if(!r||!p){this._showStatus("Widget is misconfigured. Missing base-url or embed-key.","error");return}let s=this._shadow.getElementById("hw-submit-btn");s&&(s.disabled=!0,s.textContent="Submitting Request...");let h=a;if(Object.keys(o).length>0){let u=c.filter(d=>o[d.id]).map(d=>`${d.label}: ${o[d.id]}`);u.length>0&&(h+=`
|
|
1184
|
+
|
|
1185
|
+
--- Additional Information ---
|
|
1186
|
+
`+u.join(`
|
|
1187
|
+
`))}let l=new FormData;if(l.append("submitter_name",e),l.append("submitter_email",i),l.append("subject",t),l.append("description",h),l.append("category",n),l.append("embed_key",p),l.append("source_url",window.location.href),l.append("browser_metadata",JSON.stringify({userAgent:navigator.userAgent,resolution:`${screen.width}x${screen.height}`,viewport:`${window.innerWidth}x${window.innerHeight}`,language:navigator.language})),Object.keys(o).length>0){l.append("custom_fields",JSON.stringify(o));for(let[u,d]of Object.entries(o))l.append(u,d)}this._screenshotFile&&l.append("screenshot",this._screenshotFile,this._screenshotFile.name);try{let u=await fetch(`${r}/api/tickets/widget-submit/`,{method:"POST",body:l});if(u.ok)this._showStatus("Support request submitted successfully!","success"),setTimeout(()=>{this._resetForm();let d=this._shadow.querySelector('.hw-tab-btn[data-tab="status"]');d&&d.click()},1800);else{let d=await u.json().catch(()=>({}));this._showStatus(d.detail||d.error||"Failed to submit request. Please try again.","error"),s&&(s.disabled=!1,s.textContent="Submit Request")}}catch(u){console.error("Error submitting support request:",u),this._showStatus("Network error. Please check your internet connection.","error"),s&&(s.disabled=!1,s.textContent="Submit Request")}}async _loadTicketsStatus(){let e=(this.getAttribute("base-url")||"").replace(/\/$/,""),i=this.getAttribute("embed-key")||"",t=this._shadow.getElementById("hw-ticket-list"),a=this._shadow.getElementById("hw-tickets-loading");if(t){if(!e||!i){t.innerHTML='<div class="hw-empty-state">Widget configuration error (missing URL or key)</div>';return}a&&(a.style.display="block"),t.style.opacity="0.5";try{let n=await fetch(`${e}/api/tickets/widget-status/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({embed_key:i})});if(n.ok){let c=await n.json(),r=(c.data||c).tickets||[];if(r.length===0){t.innerHTML=`
|
|
1188
|
+
<div class="hw-empty-state">
|
|
1189
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
1190
|
+
<path d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"/>
|
|
1191
|
+
<path d="M12 8v4"/>
|
|
1192
|
+
<path d="M12 16h.01"/>
|
|
1193
|
+
</svg>
|
|
1194
|
+
<p style="margin: 0; font-weight:600;">No support tickets yet</p>
|
|
1195
|
+
<p style="margin: 0; font-size:11px;">Any bug reports or tickets you or your teammates submit will appear here to let everyone track their real-time progress.</p>
|
|
1196
|
+
</div>
|
|
1197
|
+
`;return}let p="";r.forEach(s=>{let h=s.status||"open",l=s.ticket_number||"TKT-PENDING",u=new Date(s.created_at).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}),d="hw-badge-open";h==="in_progress"?d="hw-badge-progress":h==="pending"?d="hw-badge-pending":h==="resolved"?d="hw-badge-resolved":h==="closed"&&(d="hw-badge-closed");let g="",w=s.comments||[];w.length>0&&(g+=`
|
|
1198
|
+
<div class="hw-ticket-comments-section">
|
|
1199
|
+
<button class="hw-comments-toggle-btn" data-ticket="${l}">
|
|
1200
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" style="margin-right: 4px;">
|
|
1201
|
+
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
|
1202
|
+
</svg>
|
|
1203
|
+
<span>Replies (${w.length})</span>
|
|
1204
|
+
<span class="hw-comments-toggle-chevron">\u25BC</span>
|
|
1205
|
+
</button>
|
|
1206
|
+
<div class="hw-comments-list-wrapper" id="comments-list-${l}" style="max-height: 0px;">
|
|
1207
|
+
<div class="hw-comments-list">
|
|
1208
|
+
`,w.forEach(f=>{let v=new Date(f.created_at).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}),k=f.is_staff||!1,T=k?"hw-comment-item staff":"hw-comment-item",H=k?'<span class="hw-comment-staff-badge">Staff</span>':"";g+=`
|
|
1209
|
+
<div class="${T}">
|
|
1210
|
+
<div class="hw-comment-meta">
|
|
1211
|
+
<span class="hw-comment-author">${f.author_name||"Anonymous"} ${H}</span>
|
|
1212
|
+
<span class="hw-comment-date">${v}</span>
|
|
1213
|
+
</div>
|
|
1214
|
+
<p class="hw-comment-text">${f.content}</p>
|
|
1215
|
+
</div>
|
|
1216
|
+
`}),g+=`
|
|
1217
|
+
</div>
|
|
1218
|
+
</div>
|
|
1219
|
+
</div>
|
|
1220
|
+
`),p+=`
|
|
1221
|
+
<div class="hw-ticket-card">
|
|
1222
|
+
<div class="hw-ticket-card-header">
|
|
1223
|
+
<span class="hw-ticket-card-number">${l}</span>
|
|
1224
|
+
<span class="hw-ticket-card-badge ${d}">${h.replace("_"," ")}</span>
|
|
1225
|
+
</div>
|
|
1226
|
+
<h4 class="hw-ticket-card-subject">${s.subject||"No Subject"}</h4>
|
|
1227
|
+
<div class="hw-ticket-card-footer" style="flex-direction: column; align-items: flex-start; gap: 4px;">
|
|
1228
|
+
<div style="display: flex; justify-content: space-between; width: 100%;">
|
|
1229
|
+
<span>Category: ${s.category.toUpperCase()}</span>
|
|
1230
|
+
<span>${u}</span>
|
|
1231
|
+
</div>
|
|
1232
|
+
<div style="font-size: 11px; color: #888; display: flex; align-items: center; gap: 4px; margin-top: 4px; border-top: 1px solid rgba(255,255,255,0.05); padding-top: 4px; width: 100%;">
|
|
1233
|
+
<span>\u{1F464} By: <strong>${s.submitter_name||"Anonymous"}</strong> (${s.submitter_email||"no-email"})</span>
|
|
1234
|
+
</div>
|
|
1235
|
+
</div>
|
|
1236
|
+
${g}
|
|
1237
|
+
</div>
|
|
1238
|
+
`}),t.innerHTML=p}else throw new Error("Server status fetch failed")}catch(n){console.error("Failed to pull live ticket status:",n),t.innerHTML=`
|
|
1239
|
+
<div class="hw-empty-state">
|
|
1240
|
+
<p style="margin: 0; font-weight:600; color: #f43f5e;">Failed to load tickets</p>
|
|
1241
|
+
<p style="margin: 0; font-size:11px;">A connection error occurred. Click "Refresh Status" to retry.</p>
|
|
1242
|
+
</div>
|
|
1243
|
+
`}finally{a&&(a.style.display="none"),t.style.opacity="1"}}}_showStatus(e,i){let t=this._shadow.getElementById("hw-form-status");t&&(t.textContent=e,t.className=`hw-status-msg ${i}`,t.style.display="block")}_hideStatus(){let e=this._shadow.getElementById("hw-form-status");e&&(e.style.display="none")}async _loadLocalHelpGuide(){let e=this._shadow.getElementById("hw-guide-container"),i=this._shadow.getElementById("hw-guide-loading"),t=this.getAttribute("guide-url")||"/help-guide.json";try{let a=await fetch(t);if(a.ok){let n=await a.json();this._guideData=n,this._renderHelpGuide(n)}else throw new Error("Guide file not found")}catch{console.warn(`Dynamic help guide not found at ${t}. Falling back to default FAQs.`);let n=this._getDefaultHelpGuide();this._guideData=n,this._renderHelpGuide(n)}finally{i&&(i.style.display="none")}}_getDefaultHelpGuide(){return{processes:[{title:"Help Guide & FAQs",steps:[{step_number:1,title:"What is ThriveX AI Dashboard?",description:"ThriveX AI is an intelligent project workspace and agile issue tracking platform. You can manage tasks in Kanban boards, set priorities, assign developers, and aggregate support requests in one beautiful console."},{step_number:2,title:"How do I submit feedback / bugs?",description:"Click on the <strong>Support & Feedback</strong> tab in this sidebar, select your category, enter your subject and description, paste or attach an optional screenshot, and click submit."},{step_number:3,title:"How do I track my ticket status?",description:"Any ticket you submit from this browser will be listed under the <strong>Ticket Status</strong> tab. We use secure, unguessable ticket UUIDs saved locally to fetch live real-time statuses directly from the project server."},{step_number:4,title:"How do I invite members to my project?",description:"Go to the Workspace page inside the dashboard, select your project, click on <strong>Manage Members</strong> on the top-right, search for your team members by their username or email, and add them."}]}]}}_renderHelpGuide(e){let i=this._shadow.getElementById("hw-guide-container");if(!i)return;let t="",a=e.processes;if(!a&&e.steps&&(a=[{title:e.title||"Help Guide",steps:e.steps}]),!a||a.length===0){i.innerHTML='<div class="hw-empty-state">No guides available</div>';return}let n=(this.getAttribute("user-role")||"").trim().toLowerCase(),c=a.map(r=>{if(!(!(Array.isArray(r.roles)&&r.roles.length>0)||n&&r.roles.some(d=>typeof d=="string"&&d.trim().toLowerCase()===n)))return null;let h=r.steps||[],l=h.length,u=h.filter(d=>!(Array.isArray(d.roles)&&d.roles.length>0)||n&&d.roles.some(w=>typeof w=="string"&&w.trim().toLowerCase()===n));return l>0&&u.length===0?null:{...r,steps:u}}).filter(r=>r!==null);if(c.length===0){i.innerHTML='<div class="hw-empty-state">No guides available for your role</div>';return}let o=0;c.forEach(r=>{r.title&&(t+=`<h3 class="hw-process-title">${r.title}</h3>`),(r.steps||[]).forEach((s,h)=>{let l=s.step_number||s.number||h+1,u=o===0?"open":"",d=o===0?'style="max-height: 1000px;"':'style="max-height: 0px;"';o++;let g="";Array.isArray(s.images)&&s.images.length>0&&(g='<div class="hw-step-images-list">',s.images.forEach(v=>{g+=`
|
|
1244
|
+
<div class="hw-step-image-wrap">
|
|
1245
|
+
<img class="hw-step-img" src="${v}" alt="Step ${l} screenshot" />
|
|
1246
|
+
</div>
|
|
1247
|
+
`}),g+="</div>");let w="";s.note&&(w=`
|
|
1248
|
+
<div class="hw-step-note flex gap-2">
|
|
1249
|
+
<svg class="hw-note-icon text-blue-500" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="color: #3b82f6;"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>
|
|
1250
|
+
<p class="hw-note-desc">${s.note}</p>
|
|
1251
|
+
</div>
|
|
1252
|
+
`);let f="";s.importantNote&&(f=`
|
|
1253
|
+
<div class="hw-step-important flex gap-2">
|
|
1254
|
+
<svg class="hw-important-icon text-amber-500" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="color: #f59e0b;"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
|
|
1255
|
+
<div>
|
|
1256
|
+
<p class="hw-important-title">Important Note</p>
|
|
1257
|
+
<p class="hw-important-desc">${s.importantNote}</p>
|
|
1258
|
+
</div>
|
|
1259
|
+
</div>
|
|
1260
|
+
`),t+=`
|
|
1261
|
+
<div class="hw-faq-item ${u}">
|
|
1262
|
+
<div class="hw-faq-header">
|
|
1263
|
+
<div class="hw-step-header-left">
|
|
1264
|
+
<span class="hw-step-number">${l}</span>
|
|
1265
|
+
<span class="hw-step-title">${s.title}</span>
|
|
1266
|
+
</div>
|
|
1267
|
+
<span class="hw-faq-icon">\u25BC</span>
|
|
1268
|
+
</div>
|
|
1269
|
+
<div class="hw-faq-content" ${d}>
|
|
1270
|
+
<div class="hw-faq-inner">
|
|
1271
|
+
<p class="hw-step-desc">${s.description}</p>
|
|
1272
|
+
${g}
|
|
1273
|
+
${w}
|
|
1274
|
+
${f}
|
|
1275
|
+
</div>
|
|
1276
|
+
</div>
|
|
1277
|
+
</div>
|
|
1278
|
+
`})}),i.innerHTML=t}};typeof window<"u"&&!customElements.get("help-sidebar-widget")&&customElements.define("help-sidebar-widget",x)});import{useEffect as I,useRef as $,useState as A}from"react";import{jsx as C}from"react/jsx-runtime";function P({baseUrl:b,embedKey:m,theme:e="auto",buttonStyle:i="navbar",userName:t="",userEmail:a="",guideUrl:n="",userRole:c="",customFields:o}){let[r,p]=A(!1),s=$(null);return I(()=>{Promise.resolve().then(()=>(y(),S)).then(()=>{p(!0)})},[]),I(()=>{s.current&&o&&(s.current.customFields=o)},[r,o]),r?C("help-sidebar-widget",{ref:s,"base-url":b,"embed-key":m,theme:e,"button-style":i,"user-name":t,"user-email":a,"guide-url":n,"user-role":c,"custom-fields":o&&o.length>0?JSON.stringify(o):void 0}):null}y();export{P as HelpSidebarWidget,x as HelpSidebarWidgetElement};
|
|
1279
|
+
//# sourceMappingURL=index.mjs.map
|