feedback-vos 1.0.28 → 1.0.30

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.js CHANGED
@@ -75,19 +75,19 @@ function FeedbackTypeStep({ onFeedbackTypeChanged, language }) {
75
75
  const feedbackTypes = getFeedbackTypes(language);
76
76
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
77
77
  /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex items-center justify-between w-full gap-2", children: [
78
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl leading-6", children: t.form.header }),
78
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg md:text-xl leading-6", children: t.form.header }),
79
79
  /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { title: t.form.closeButton })
80
80
  ] }),
81
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex py-8 gap-2 w-full", children: Object.entries(feedbackTypes).map(([key, value]) => {
81
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex py-6 md:py-8 gap-2 md:gap-2 w-full justify-center md:justify-start flex-wrap", children: Object.entries(feedbackTypes).map(([key, value]) => {
82
82
  return /* @__PURE__ */ jsxRuntime.jsxs(
83
83
  "button",
84
84
  {
85
- className: "bg-zinc-800 rounded py-5 w-24 flex1 flex flex-col items-center gap-2 border-2 border-transparent hover:border-brand-500 focus:border-brand-500 focus:outline-none",
85
+ className: "bg-zinc-800 rounded py-4 md:py-5 flex-1 min-w-[80px] md:w-24 flex flex-col items-center gap-2 border-2 border-transparent hover:border-brand-500 focus:border-brand-500 focus:outline-none transition-colors",
86
86
  type: "button",
87
87
  onClick: () => onFeedbackTypeChanged(key),
88
88
  children: [
89
- /* @__PURE__ */ jsxRuntime.jsx("img", { src: value.image.source, alt: value.image.alt }),
90
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: value.title })
89
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: value.image.source, alt: value.image.alt, className: "w-5 h-5 md:w-6 md:h-6" }),
90
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs md:text-sm text-center", children: value.title })
91
91
  ]
92
92
  },
93
93
  key
@@ -98,33 +98,338 @@ function FeedbackTypeStep({ onFeedbackTypeChanged, language }) {
98
98
  function Loading() {
99
99
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-4 h-4 flex items-center justify-center overflow-hidden ", children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.CircleNotch, { weight: "bold", className: "w-4 h-4 animate-spin" }) });
100
100
  }
101
+ function ScreenshotEditor({
102
+ screenshot,
103
+ onSave,
104
+ onCancel,
105
+ language
106
+ }) {
107
+ const canvasRef = react$1.useRef(null);
108
+ const [isDrawing, setIsDrawing] = react$1.useState(false);
109
+ const [color, setColor] = react$1.useState("#ef4444");
110
+ const [brushSize, setBrushSize] = react$1.useState(3);
111
+ const [image, setImage] = react$1.useState(null);
112
+ const t = {
113
+ en: {
114
+ save: "Save",
115
+ cancel: "Cancel",
116
+ clear: "Clear",
117
+ undo: "Undo"
118
+ },
119
+ nl: {
120
+ save: "Opslaan",
121
+ cancel: "Annuleren",
122
+ clear: "Wissen",
123
+ undo: "Ongedaan maken"
124
+ }
125
+ }[language];
126
+ const colors = [
127
+ "#ef4444",
128
+ // red-500
129
+ "#f59e0b",
130
+ // amber-500
131
+ "#eab308",
132
+ // yellow-500
133
+ "#22c55e",
134
+ // green-500
135
+ "#3b82f6",
136
+ // blue-500
137
+ "#8b5cf6",
138
+ // violet-500
139
+ "#ec4899",
140
+ // pink-500
141
+ "#ffffff",
142
+ // white
143
+ "#000000"
144
+ // black
145
+ ];
146
+ react$1.useEffect(() => {
147
+ const img = new Image();
148
+ img.onload = () => {
149
+ setImage(img);
150
+ if (canvasRef.current) {
151
+ const canvas = canvasRef.current;
152
+ canvas.width = img.width;
153
+ canvas.height = img.height;
154
+ const ctx = canvas.getContext("2d");
155
+ if (ctx) {
156
+ ctx.drawImage(img, 0, 0);
157
+ }
158
+ }
159
+ };
160
+ img.src = screenshot;
161
+ }, [screenshot]);
162
+ const getCoordinates = react$1.useCallback((e) => {
163
+ const canvas = canvasRef.current;
164
+ if (!canvas) return { x: 0, y: 0 };
165
+ const rect = canvas.getBoundingClientRect();
166
+ const scaleX = canvas.width / rect.width;
167
+ const scaleY = canvas.height / rect.height;
168
+ if ("touches" in e) {
169
+ const touch = e.touches[0] || e.changedTouches[0];
170
+ return {
171
+ x: (touch.clientX - rect.left) * scaleX,
172
+ y: (touch.clientY - rect.top) * scaleY
173
+ };
174
+ } else {
175
+ return {
176
+ x: (e.clientX - rect.left) * scaleX,
177
+ y: (e.clientY - rect.top) * scaleY
178
+ };
179
+ }
180
+ }, []);
181
+ const startDrawing = react$1.useCallback((e) => {
182
+ e.preventDefault();
183
+ const canvas = canvasRef.current;
184
+ if (!canvas) return;
185
+ const ctx = canvas.getContext("2d");
186
+ if (!ctx) return;
187
+ const { x, y } = getCoordinates(e);
188
+ setIsDrawing(true);
189
+ ctx.beginPath();
190
+ ctx.moveTo(x, y);
191
+ ctx.strokeStyle = color;
192
+ ctx.lineWidth = brushSize;
193
+ ctx.lineCap = "round";
194
+ ctx.lineJoin = "round";
195
+ }, [color, brushSize, getCoordinates]);
196
+ const draw = react$1.useCallback((e) => {
197
+ if (!isDrawing) return;
198
+ e.preventDefault();
199
+ const canvas = canvasRef.current;
200
+ if (!canvas) return;
201
+ const ctx = canvas.getContext("2d");
202
+ if (!ctx) return;
203
+ const { x, y } = getCoordinates(e);
204
+ ctx.lineTo(x, y);
205
+ ctx.stroke();
206
+ }, [isDrawing, getCoordinates]);
207
+ const stopDrawing = react$1.useCallback(() => {
208
+ setIsDrawing(false);
209
+ }, []);
210
+ const clearCanvas = () => {
211
+ const canvas = canvasRef.current;
212
+ if (!canvas || !image) return;
213
+ const ctx = canvas.getContext("2d");
214
+ if (!ctx) return;
215
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
216
+ ctx.drawImage(image, 0, 0);
217
+ };
218
+ const undo = () => {
219
+ const canvas = canvasRef.current;
220
+ if (!canvas || !image) return;
221
+ const ctx = canvas.getContext("2d");
222
+ if (!ctx) return;
223
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
224
+ ctx.drawImage(image, 0, 0);
225
+ };
226
+ const handleSave = () => {
227
+ const canvas = canvasRef.current;
228
+ if (!canvas) return;
229
+ const editedScreenshot = canvas.toDataURL("image/png");
230
+ onSave(editedScreenshot);
231
+ };
232
+ const maxWidth = 600;
233
+ const displayWidth = image ? Math.min(maxWidth, image.width) : maxWidth;
234
+ const displayHeight = image ? displayWidth / image.width * image.height : 400;
235
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-2 md:p-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-zinc-800 rounded-lg shadow-xl max-w-4xl w-full max-h-[95vh] md:max-h-[90vh] overflow-auto", children: [
236
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 bg-zinc-800 border-b border-zinc-700 p-2 md:p-4 flex items-center justify-between z-10 gap-2", children: [
237
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base md:text-lg font-semibold text-zinc-100 truncate", children: language === "nl" ? "Teken op screenshot" : "Draw on screenshot" }),
238
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1 md:gap-2 flex-shrink-0", children: [
239
+ /* @__PURE__ */ jsxRuntime.jsx(
240
+ "button",
241
+ {
242
+ type: "button",
243
+ onClick: undo,
244
+ className: "p-1.5 md:p-2 bg-zinc-700 hover:bg-zinc-600 rounded-md text-zinc-100 transition-colors touch-manipulation",
245
+ title: t.undo,
246
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.ArrowCounterClockwise, { weight: "bold", className: "w-4 h-4 md:w-5 md:h-5" })
247
+ }
248
+ ),
249
+ /* @__PURE__ */ jsxRuntime.jsx(
250
+ "button",
251
+ {
252
+ type: "button",
253
+ onClick: clearCanvas,
254
+ className: "p-1.5 md:p-2 bg-zinc-700 hover:bg-zinc-600 rounded-md text-zinc-100 transition-colors touch-manipulation",
255
+ title: t.clear,
256
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.Trash, { weight: "bold", className: "w-4 h-4 md:w-5 md:h-5" })
257
+ }
258
+ ),
259
+ /* @__PURE__ */ jsxRuntime.jsx(
260
+ "button",
261
+ {
262
+ type: "button",
263
+ onClick: onCancel,
264
+ className: "p-1.5 md:p-2 bg-zinc-700 hover:bg-zinc-600 rounded-md text-zinc-100 transition-colors touch-manipulation",
265
+ title: t.cancel,
266
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.X, { weight: "bold", className: "w-4 h-4 md:w-5 md:h-5" })
267
+ }
268
+ ),
269
+ /* @__PURE__ */ jsxRuntime.jsx(
270
+ "button",
271
+ {
272
+ type: "button",
273
+ onClick: handleSave,
274
+ className: "p-1.5 md:p-2 bg-brand-500 hover:bg-brand-400 rounded-md text-zinc-100 transition-colors touch-manipulation",
275
+ title: t.save,
276
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.Check, { weight: "bold", className: "w-4 h-4 md:w-5 md:h-5" })
277
+ }
278
+ )
279
+ ] })
280
+ ] }),
281
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3 md:p-4", children: [
282
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 md:mb-4 flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4", children: [
283
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs md:text-sm text-zinc-300 whitespace-nowrap", children: language === "nl" ? "Kleur:" : "Color:" }),
284
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1.5 md:gap-2 flex-wrap", children: colors.map((c) => /* @__PURE__ */ jsxRuntime.jsx(
285
+ "button",
286
+ {
287
+ type: "button",
288
+ onClick: () => setColor(c),
289
+ className: `w-7 h-7 md:w-8 md:h-8 rounded-full border-2 transition-all touch-manipulation ${color === c ? "border-zinc-100 scale-110" : "border-zinc-600 hover:border-zinc-500"}`,
290
+ style: { backgroundColor: c },
291
+ title: c
292
+ },
293
+ c
294
+ )) })
295
+ ] }),
296
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 md:mb-4 flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4", children: [
297
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs md:text-sm text-zinc-300 whitespace-nowrap", children: language === "nl" ? "Grootte:" : "Size:" }),
298
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full md:w-auto", children: [
299
+ /* @__PURE__ */ jsxRuntime.jsx(
300
+ "input",
301
+ {
302
+ type: "range",
303
+ min: "1",
304
+ max: "10",
305
+ value: brushSize,
306
+ onChange: (e) => setBrushSize(Number(e.target.value)),
307
+ className: "flex-1 md:flex-none md:max-w-xs"
308
+ }
309
+ ),
310
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs md:text-sm text-zinc-400 w-6 md:w-8 text-right", children: brushSize })
311
+ ] })
312
+ ] }),
313
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center bg-zinc-900 rounded-lg p-2 md:p-4 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
314
+ "canvas",
315
+ {
316
+ ref: canvasRef,
317
+ onMouseDown: startDrawing,
318
+ onMouseMove: draw,
319
+ onMouseUp: stopDrawing,
320
+ onMouseLeave: stopDrawing,
321
+ onTouchStart: startDrawing,
322
+ onTouchMove: draw,
323
+ onTouchEnd: stopDrawing,
324
+ className: "cursor-crosshair border border-zinc-700 rounded touch-none",
325
+ style: {
326
+ width: `${displayWidth}px`,
327
+ height: `${displayHeight}px`,
328
+ maxWidth: "100%",
329
+ maxHeight: "calc(95vh - 200px)"
330
+ }
331
+ }
332
+ ) })
333
+ ] })
334
+ ] }) });
335
+ }
101
336
  function ScreenshotButton({
102
337
  screenshot,
103
- onScreenshotTook
338
+ onScreenshotTook,
339
+ language = "en"
104
340
  }) {
105
341
  const [isTakenScreenshot, setIsTakenScreenShot] = react$1.useState(false);
342
+ const [showEditor, setShowEditor] = react$1.useState(false);
343
+ const [tempScreenshot, setTempScreenshot] = react$1.useState(null);
106
344
  async function handleTakeScreenshot() {
107
345
  setIsTakenScreenShot(true);
108
346
  const canvas = await html2canvas__default.default(document.querySelector("html"));
109
347
  const base64image = canvas.toDataURL("image/png");
110
- onScreenshotTook(base64image);
348
+ setTempScreenshot(base64image);
349
+ setShowEditor(true);
111
350
  setIsTakenScreenShot(false);
112
351
  }
352
+ function handleEditorSave(editedScreenshot) {
353
+ onScreenshotTook(editedScreenshot);
354
+ setShowEditor(false);
355
+ setTempScreenshot(null);
356
+ }
357
+ function handleEditorCancel() {
358
+ setShowEditor(false);
359
+ setTempScreenshot(null);
360
+ }
361
+ function handleEditScreenshot() {
362
+ if (screenshot) {
363
+ setTempScreenshot(screenshot);
364
+ setShowEditor(true);
365
+ }
366
+ }
367
+ if (showEditor && (tempScreenshot || screenshot)) {
368
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
369
+ /* @__PURE__ */ jsxRuntime.jsx(
370
+ ScreenshotEditor,
371
+ {
372
+ screenshot: tempScreenshot || screenshot,
373
+ onSave: handleEditorSave,
374
+ onCancel: handleEditorCancel,
375
+ language
376
+ }
377
+ ),
378
+ screenshot && !tempScreenshot ? /* @__PURE__ */ jsxRuntime.jsx(
379
+ "button",
380
+ {
381
+ type: "button",
382
+ className: "p-1 w-10 h-10 rounded-md border-transparent flex \n justify-end items-end text-zinc-400 hover:text-zinc-100 transition-colors",
383
+ onClick: () => onScreenshotTook(null),
384
+ style: {
385
+ backgroundImage: `url(${screenshot})`,
386
+ backgroundPosition: "right bottom",
387
+ backgroundSize: 180
388
+ },
389
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.Trash, { weight: "fill" })
390
+ }
391
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
392
+ "button",
393
+ {
394
+ type: "button",
395
+ className: "p-2 bg-zinc-800 rounded-md border-transparent hover:bg-zinc-700\n transitions-colors focus:outline-none focus:ring-2\n focus:ring-offset-2 focus:ring-offset-zinc-900 focus:ring-brand-500",
396
+ onClick: handleTakeScreenshot,
397
+ children: isTakenScreenshot ? /* @__PURE__ */ jsxRuntime.jsx(Loading, {}) : /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.Camera, { weight: "bold", className: "w-6 h-6" })
398
+ }
399
+ )
400
+ ] });
401
+ }
113
402
  if (screenshot) {
114
- return /* @__PURE__ */ jsxRuntime.jsx(
115
- "button",
116
- {
117
- type: "button",
118
- className: "p-1 w-10 h-10 rounded-md border-transparent flex \n justify-end items-end text-zinc-400 hover:text-zinc-100 transition-colors",
119
- onClick: () => onScreenshotTook(null),
120
- style: {
121
- backgroundImage: `url(${screenshot})`,
122
- backgroundPosition: "right bottom",
123
- backgroundSize: 180
124
- },
125
- children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.Trash, { weight: "fill" })
126
- }
127
- );
403
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative group", children: [
404
+ /* @__PURE__ */ jsxRuntime.jsx(
405
+ "button",
406
+ {
407
+ type: "button",
408
+ className: "p-1 w-10 h-10 rounded-md border-transparent flex \n justify-end items-end text-zinc-400 hover:text-zinc-100 transition-colors relative",
409
+ onClick: handleEditScreenshot,
410
+ style: {
411
+ backgroundImage: `url(${screenshot})`,
412
+ backgroundPosition: "right bottom",
413
+ backgroundSize: 180
414
+ },
415
+ title: language === "nl" ? "Klik om te bewerken" : "Click to edit",
416
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors rounded-md" })
417
+ }
418
+ ),
419
+ /* @__PURE__ */ jsxRuntime.jsx(
420
+ "button",
421
+ {
422
+ type: "button",
423
+ onClick: (e) => {
424
+ e.stopPropagation();
425
+ onScreenshotTook(null);
426
+ },
427
+ className: "absolute -top-1 -right-1 w-4 h-4 bg-red-500 hover:bg-red-600 rounded-full flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity z-10",
428
+ title: language === "nl" ? "Verwijderen" : "Delete",
429
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.X, { weight: "bold", className: "w-3 h-3 text-white" })
430
+ }
431
+ )
432
+ ] });
128
433
  }
129
434
  return /* @__PURE__ */ jsxRuntime.jsx(
130
435
  "button",
@@ -260,18 +565,18 @@ function FileUploadButton({
260
565
  {
261
566
  src: uploadedFile.preview,
262
567
  alt: uploadedFile.file.name,
263
- className: "w-6 h-6 object-cover rounded"
568
+ className: "w-5 h-5 md:w-6 md:h-6 object-cover rounded flex-shrink-0"
264
569
  }
265
- ) : /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.Paperclip, { className: "w-4 h-4" }),
266
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-zinc-300 max-w-[100px] truncate", title: uploadedFile.file.name, children: uploadedFile.file.name }),
570
+ ) : /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.Paperclip, { className: "w-3 h-3 md:w-4 md:h-4 flex-shrink-0" }),
571
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-zinc-300 max-w-[80px] md:max-w-[100px] truncate", title: uploadedFile.file.name, children: uploadedFile.file.name }),
267
572
  /* @__PURE__ */ jsxRuntime.jsx(
268
573
  "button",
269
574
  {
270
575
  type: "button",
271
576
  onClick: () => handleRemoveFile(uploadedFile.id),
272
- className: "text-zinc-400 hover:text-zinc-100 transition-colors",
577
+ className: "text-zinc-400 hover:text-zinc-100 transition-colors flex-shrink-0 touch-manipulation",
273
578
  title: t.remove,
274
- children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.X, { weight: "bold", className: "w-4 h-4" })
579
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.X, { weight: "bold", className: "w-3 h-3 md:w-4 md:h-4" })
275
580
  }
276
581
  )
277
582
  ]
@@ -847,34 +1152,34 @@ function FeedbackContentStep({
847
1152
  }
848
1153
  }
849
1154
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
850
- /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "relative w-full pr-8", children: [
1155
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "relative w-full pr-8 md:pr-8", children: [
851
1156
  /* @__PURE__ */ jsxRuntime.jsx(
852
1157
  "button",
853
1158
  {
854
1159
  type: "button",
855
- className: "absolute top-5 left-5 text-zinc-400 hover:text-zinc-100 z-10",
1160
+ className: "absolute top-3 md:top-5 left-3 md:left-5 text-zinc-400 hover:text-zinc-100 z-10 p-1",
856
1161
  onClick: onFeedbackRestartRequest,
857
- children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.ArrowLeft, { weight: "bold", className: "w-4 h-4" })
1162
+ children: /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.ArrowLeft, { weight: "bold", className: "w-4 h-4 md:w-4 md:h-4" })
858
1163
  }
859
1164
  ),
860
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xl leading-6 flex items-center gap-2 mt-2 pl-10", children: [
1165
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-lg md:text-xl leading-6 flex items-center gap-2 mt-2 pl-8 md:pl-10", children: [
861
1166
  /* @__PURE__ */ jsxRuntime.jsx(
862
1167
  "img",
863
1168
  {
864
1169
  src: feedbackTypeData.image.source,
865
1170
  alt: feedbackTypeData.image.alt,
866
- className: "w-6 h-6"
1171
+ className: "w-5 h-5 md:w-6 md:h-6"
867
1172
  }
868
1173
  ),
869
1174
  feedbackTypeData.title
870
1175
  ] }),
871
- /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { className: "absolute top-5 right-5", title: t.form.closeButton })
1176
+ /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { className: "absolute top-3 md:top-5 right-3 md:right-5", title: t.form.closeButton })
872
1177
  ] }),
873
- /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmitFeedback, className: "my-4 w-full", children: [
1178
+ /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmitFeedback, className: "my-3 md:my-4 w-full", children: [
874
1179
  /* @__PURE__ */ jsxRuntime.jsx(
875
1180
  "textarea",
876
1181
  {
877
- className: "min-w-[384px] w-full min-h-[112px] text-sm \n placeholder-zinc-400 text-zinc-100 border-zinc-600 bg-transparent rounded-md \n focus:border-brand-500 focus:ring-brand-500 focus:ring-1 resize-none focus:outline-none\n scrollbar-thumb-zinc-700 scrollbar-track-transparent scrollbar-thin",
1182
+ className: "w-full min-h-[100px] md:min-h-[112px] text-sm \n placeholder-zinc-400 text-zinc-100 border border-zinc-600 bg-transparent rounded-md p-2 md:p-3\n focus:border-brand-500 focus:ring-brand-500 focus:ring-1 resize-none focus:outline-none\n scrollbar-thumb-zinc-700 scrollbar-track-transparent scrollbar-thin",
878
1183
  placeholder: t.content.placeholder,
879
1184
  onChange: (e) => setComment(e.target.value)
880
1185
  }
@@ -887,12 +1192,13 @@ function FeedbackContentStep({
887
1192
  language
888
1193
  }
889
1194
  ) }),
890
- /* @__PURE__ */ jsxRuntime.jsxs("footer", { className: " flex gap-2 mt-2", children: [
1195
+ /* @__PURE__ */ jsxRuntime.jsxs("footer", { className: "flex gap-2 mt-3", children: [
891
1196
  /* @__PURE__ */ jsxRuntime.jsx(
892
1197
  ScreenshotButton,
893
1198
  {
894
1199
  screenshot,
895
- onScreenshotTook: setScreenshot
1200
+ onScreenshotTook: setScreenshot,
1201
+ language
896
1202
  }
897
1203
  ),
898
1204
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -900,7 +1206,7 @@ function FeedbackContentStep({
900
1206
  {
901
1207
  type: "submit",
902
1208
  disabled: comment.length === 0 || isSendingFeedback,
903
- className: "p-2 bg-brand-500 rounded-md border-transparent flex-1 justify-center\n items-center text-sm hover:bg-brand-300 focus:outline-none focus:ring-2\n focus:ring-offset-2 focus:ring-offset-zinc-900 focus:ring-brand-500\n transition-colors disabled:opacity-50 disabled:cursor-not-allowed\n disabled:hover:bg-brand-500",
1209
+ className: "p-2 bg-brand-500 rounded-md border-transparent flex-1 justify-center\n items-center text-sm hover:bg-brand-300 focus:outline-none focus:ring-2\n focus:ring-offset-2 focus:ring-offset-zinc-900 focus:ring-brand-500\n transition-colors disabled:opacity-50 disabled:cursor-not-allowed\n disabled:hover:bg-brand-500 flex",
904
1210
  children: isSendingFeedback ? /* @__PURE__ */ jsxRuntime.jsx(Loading, {}) : t.content.sendButton
905
1211
  }
906
1212
  )
@@ -912,12 +1218,12 @@ function FeedbackSuccessStep({ onFeedbackRestartRequest, language }) {
912
1218
  const t = getTranslations(language);
913
1219
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
914
1220
  /* @__PURE__ */ jsxRuntime.jsx("header", { children: /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { title: t.form.closeButton }) }),
915
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center py-10 w-[304px]", children: [
916
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "41", height: "40", viewBox: "0 0 41 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
1221
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center py-8 md:py-10 w-full max-w-[304px] px-2", children: [
1222
+ /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "41", height: "40", viewBox: "0 0 41 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "w-10 h-10 md:w-[41px] md:h-[40px]", children: [
917
1223
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M38.5 34C38.5 36.209 36.709 38 34.5 38H6.5C4.291 38 2.5 36.209 2.5 34V6C2.5 3.791 4.291 2 6.5 2H34.5C36.709 2 38.5 3.791 38.5 6V34Z", fill: "#77B255" }),
918
1224
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M31.78 8.36202C30.624 7.61102 29.076 7.94002 28.322 9.09802L17.436 25.877L12.407 21.227C11.393 20.289 9.81103 20.352 8.87403 21.365C7.93703 22.379 7.99903 23.961 9.01303 24.898L16.222 31.564C16.702 32.009 17.312 32.229 17.918 32.229C18.591 32.229 19.452 31.947 20.017 31.09C20.349 30.584 32.517 11.82 32.517 11.82C33.268 10.661 32.938 9.11302 31.78 8.36202Z", fill: "white" })
919
1225
  ] }),
920
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl mt-2", children: t.success.message }),
1226
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg md:text-xl mt-2 text-center", children: t.success.message }),
921
1227
  /* @__PURE__ */ jsxRuntime.jsx(
922
1228
  "button",
923
1229
  {
@@ -963,7 +1269,7 @@ function WidgetForm({ integration, githubConfig, language }) {
963
1269
  setFeedbackSent(false);
964
1270
  setFeedbackType(null);
965
1271
  }
966
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-zinc-900 p-4 relative rounded-2xl mb-4 flex flex-col items-center shadow-lg w-[calc(100vw-2rem)] md:w-auto", children: [
1272
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-zinc-900 p-3 md:p-4 relative rounded-2xl mb-4 flex flex-col items-center shadow-lg w-[calc(100vw-2rem)] md:w-auto max-w-md", children: [
967
1273
  feedbackSent ? /* @__PURE__ */ jsxRuntime.jsx(FeedbackSuccessStep, { onFeedbackRestartRequest: handleRestartFeedback, language }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: !feedbackType ? /* @__PURE__ */ jsxRuntime.jsx(FeedbackTypeStep, { onFeedbackTypeChanged: setFeedbackType, language }) : /* @__PURE__ */ jsxRuntime.jsx(
968
1274
  FeedbackContentStep,
969
1275
  {
@@ -975,7 +1281,7 @@ function WidgetForm({ integration, githubConfig, language }) {
975
1281
  language
976
1282
  }
977
1283
  ) }),
978
- /* @__PURE__ */ jsxRuntime.jsx("footer", { className: "text-xs text-neutral-400", children: /* @__PURE__ */ jsxRuntime.jsx(
1284
+ /* @__PURE__ */ jsxRuntime.jsx("footer", { className: "text-xs text-neutral-400 mt-2", children: /* @__PURE__ */ jsxRuntime.jsx(
979
1285
  "a",
980
1286
  {
981
1287
  className: "underline underline-offset-2",
@@ -1017,9 +1323,9 @@ function Widget({
1017
1323
  language: finalLanguage
1018
1324
  }
1019
1325
  ) }),
1020
- /* @__PURE__ */ jsxRuntime.jsxs(react.Popover.Button, { className: "bg-brand-500 rounded-full px-3 h-12 text-white flex items-center group focus:outline-none", children: [
1021
- /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.ChatTeardropDots, { className: "w-6 h-6" }),
1022
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "max-w-0 overflow-hidden group-hover:max-w-xs transition-all duration-500 ease-linear", children: [
1326
+ /* @__PURE__ */ jsxRuntime.jsxs(react.Popover.Button, { className: "bg-brand-500 rounded-full px-3 md:px-3 h-12 text-white flex items-center group focus:outline-none shadow-lg hover:shadow-xl transition-shadow", children: [
1327
+ /* @__PURE__ */ jsxRuntime.jsx(phosphorReact.ChatTeardropDots, { className: "w-6 h-6 flex-shrink-0" }),
1328
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "max-w-0 overflow-hidden group-hover:max-w-xs md:group-hover:max-w-xs transition-all duration-500 ease-linear hidden md:block", children: [
1023
1329
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pl-2" }),
1024
1330
  t.widget.button
1025
1331
  ] })