@outcode/bug-reporter-web 0.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/LICENSE +21 -0
- package/README.md +75 -0
- package/dist/index.d.mts +136 -0
- package/dist/index.d.ts +136 -0
- package/dist/index.js +1274 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1258 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme.ts","../src/AnnotateToolbar.tsx","../src/flatten.ts","../src/AnnotateOverlay.tsx","../src/BugReportForm.tsx","../src/captureViewport.ts","../src/storage.ts","../src/SuccessCard.tsx","../src/BugReporterButton.tsx"],"names":["ANNOTATION_COLORS","jsx","jsxs","useState","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Web theme helpers — turn resolved theme tokens into CSS custom properties so\n * the design's `var(--accent)` style strings work verbatim, and shared font stacks.\n */\n\nimport type { BugReporterTheme } from '@outcode/bug-reporter-core';\n\n/** CSS custom properties for a theme, to spread onto the reporter root element. */\nexport function cssVars(t: BugReporterTheme): Record<string, string> {\n return {\n '--canvas': t.canvas,\n '--surface': t.surface,\n '--panel': t.panel,\n '--border': t.border,\n '--border-strong': t.borderStrong,\n '--text': t.text,\n '--muted': t.muted,\n '--faint': t.faint,\n '--accent': t.accent,\n '--accent-press': t.accentPress,\n '--on-accent': t.onAccent,\n '--ring': t.ring,\n '--ok': t.ok,\n '--ok-bg': t.okBg,\n '--shadow': t.shadow,\n };\n}\n\nexport const FONT = \"'Geist','Geist Fallback',-apple-system,system-ui,sans-serif\";\nexport const MONO = \"'Geist Mono',ui-monospace,monospace\";\n\n/** Keyframes used across the reporter (injected once into the document head). */\nconst KEYFRAMES = `\n@keyframes ocbr-spin{to{transform:rotate(360deg);}}\n@keyframes ocbr-flash{0%{opacity:0;}18%{opacity:.92;}100%{opacity:0;}}\n@keyframes ocbr-ping{0%{transform:scale(1);opacity:.55;}80%,100%{transform:scale(1.9);opacity:0;}}\n@keyframes ocbr-float{0%,100%{transform:translateY(0);}50%{transform:translateY(-4px);}}\n@keyframes ocbr-panel-in{from{transform:translateX(24px);opacity:0;}to{transform:translateX(0);opacity:1;}}\n@keyframes ocbr-fade{from{opacity:0;}to{opacity:1;}}\n@keyframes ocbr-pop{from{transform:scale(.92);opacity:0;}to{transform:scale(1);opacity:1;}}\n`;\n\nlet injected = false;\n/** Inject the reporter keyframes once. Safe no-op on the server. */\nexport function ensureKeyframes(): void {\n if (injected || typeof document === 'undefined') return;\n injected = true;\n const el = document.createElement('style');\n el.setAttribute('data-ocbr', '');\n el.textContent = KEYFRAMES;\n document.head.appendChild(el);\n}\n","/**\n * Annotation toolbar (web) — tools, color palette, undo/clear, Continue.\n * Ported from the OC-BugReporter AnnotateToolbar design. Uses CSS vars from the\n * reporter root for theming.\n */\n\nimport React from 'react';\n\nimport { ANNOTATION_COLORS, ANNOTATION_TOOLS, type AnnotationTool } from '@outcode/bug-reporter-core';\n\nimport { FONT } from './theme';\n\nexport interface AnnotateToolbarProps {\n tool: AnnotationTool;\n color: string;\n onTool: (t: AnnotationTool) => void;\n onColor: (c: string) => void;\n onUndo: () => void;\n onClear: () => void;\n onContinue: () => void;\n}\n\nexport function AnnotateToolbar({\n tool,\n color,\n onTool,\n onColor,\n onUndo,\n onClear,\n onContinue,\n}: AnnotateToolbarProps) {\n return (\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: 7,\n background: 'var(--panel)',\n border: '1px solid var(--border)',\n borderRadius: 14,\n boxShadow: 'var(--shadow)',\n fontFamily: FONT,\n width: '100%',\n boxSizing: 'border-box',\n }}\n >\n {/* tools */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n {ANNOTATION_TOOLS.map(t => {\n const active = tool === t.id;\n return (\n <button\n key={t.id}\n type=\"button\"\n title={t.label}\n onClick={() => onTool(t.id)}\n style={{\n width: 36,\n height: 36,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: 'none',\n borderRadius: 10,\n background: active ? 'var(--ring)' : 'transparent',\n color: active ? 'var(--accent)' : 'var(--muted)',\n cursor: 'pointer',\n padding: 0,\n }}\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d={t.iconPath}\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n );\n })}\n </div>\n\n {/* colors */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 7,\n padding: '0 4px',\n borderLeft: '1px solid var(--border)',\n borderRight: '1px solid var(--border)',\n }}\n >\n {ANNOTATION_COLORS.map(c => {\n const active = color === c;\n return (\n <button\n key={c}\n type=\"button\"\n aria-label=\"color\"\n onClick={() => onColor(c)}\n style={{\n width: active ? 20 : 18,\n height: active ? 20 : 18,\n borderRadius: '50%',\n border: '2px solid var(--panel)',\n background: c,\n cursor: 'pointer',\n padding: 0,\n boxShadow: active ? '0 0 0 2px var(--accent)' : '0 0 0 1px var(--border)',\n }}\n />\n );\n })}\n </div>\n\n {/* actions */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n <button\n type=\"button\"\n title=\"Undo\"\n onClick={onUndo}\n style={iconBtn}\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M9 14L4 9l5-5M4 9h11a5 5 0 010 10h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button type=\"button\" title=\"Clear all\" onClick={onClear} style={iconBtn}>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M5 7h14M9 7V5h6v2M7 7l1 12h8l1-12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {/* continue */}\n <button\n type=\"button\"\n onClick={onContinue}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 7,\n height: 36,\n padding: '0 14px',\n border: 'none',\n borderRadius: 10,\n background: 'var(--accent)',\n color: 'var(--on-accent)',\n fontFamily: 'inherit',\n fontSize: 13.5,\n fontWeight: 600,\n cursor: 'pointer',\n }}\n >\n Continue\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M5 12h14M13 6l6 6-6 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n );\n}\n\nconst iconBtn: React.CSSProperties = {\n width: 36,\n height: 36,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: 'none',\n borderRadius: 10,\n background: 'transparent',\n color: 'var(--muted)',\n cursor: 'pointer',\n padding: 0,\n};\n","/**\n * Composite annotations onto the screenshot, producing a single PNG data URL.\n * Shapes are stored in display (stage) pixels; we scale them to the image's\n * natural pixel size so the exported image is full resolution.\n */\n\nimport type { Annotation, BoxAnnotation } from '@outcode/bug-reporter-core';\n\nfunction rectOf(b: BoxAnnotation, sx: number, sy: number) {\n const x = Math.min(b.x0, b.x1) * sx;\n const y = Math.min(b.y0, b.y1) * sy;\n const w = Math.abs(b.x1 - b.x0) * sx;\n const h = Math.abs(b.y1 - b.y0) * sy;\n return { x, y, w, h };\n}\n\nexport function flattenAnnotations(\n src: string,\n shapes: Annotation[],\n dispW: number,\n dispH: number\n): Promise<string> {\n return new Promise(resolve => {\n if (typeof document === 'undefined') return resolve(src);\n const img = new Image();\n img.onerror = () => resolve(src);\n img.onload = () => {\n const natW = img.naturalWidth || dispW;\n const natH = img.naturalHeight || dispH;\n const sx = dispW ? natW / dispW : 1;\n const sy = dispH ? natH / dispH : 1;\n const canvas = document.createElement('canvas');\n canvas.width = natW;\n canvas.height = natH;\n const ctx = canvas.getContext('2d');\n if (!ctx) return resolve(src);\n ctx.drawImage(img, 0, 0, natW, natH);\n\n // Redaction (blur) regions: fully cover so the underlying content is gone.\n shapes.forEach(s => {\n if (s.type !== 'blur') return;\n const { x, y, w, h } = rectOf(s, sx, sy);\n ctx.fillStyle = '#7A7D88';\n ctx.fillRect(x, y, w, h);\n });\n\n const lw = 3.5 * ((sx + sy) / 2);\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n\n shapes.forEach(s => {\n ctx.strokeStyle = s.color;\n ctx.fillStyle = s.color;\n ctx.lineWidth = lw;\n if (s.type === 'pen') {\n if (s.points.length < 2) return;\n ctx.beginPath();\n ctx.moveTo(s.points[0].x * sx, s.points[0].y * sy);\n s.points.slice(1).forEach(p => ctx.lineTo(p.x * sx, p.y * sy));\n ctx.stroke();\n } else if (s.type === 'rect') {\n const { x, y, w, h } = rectOf(s, sx, sy);\n ctx.strokeRect(x, y, w, h);\n } else if (s.type === 'arrow') {\n const x0 = s.x0 * sx;\n const y0 = s.y0 * sy;\n const x1 = s.x1 * sx;\n const y1 = s.y1 * sy;\n const ang = Math.atan2(y1 - y0, x1 - x0);\n const hl = 15 * ((sx + sy) / 2);\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(x1 - hl * Math.cos(ang - Math.PI / 7), y1 - hl * Math.sin(ang - Math.PI / 7));\n ctx.lineTo(x1, y1);\n ctx.lineTo(x1 - hl * Math.cos(ang + Math.PI / 7), y1 - hl * Math.sin(ang + Math.PI / 7));\n ctx.stroke();\n } else if (s.type === 'text' && s.text.trim()) {\n const fs = 13 * sy;\n ctx.font = `600 ${fs}px 'Geist',sans-serif`;\n const padX = 8 * sx;\n const padY = 4 * sy;\n const tw = ctx.measureText(s.text).width;\n const bx = s.x * sx;\n const by = s.y * sy - (fs + padY * 2) / 2;\n ctx.fillStyle = s.color;\n const r = 6 * sy;\n roundRect(ctx, bx, by, tw + padX * 2, fs + padY * 2, r);\n ctx.fill();\n ctx.fillStyle = '#ffffff';\n ctx.textBaseline = 'middle';\n ctx.fillText(s.text, bx + padX, by + (fs + padY * 2) / 2);\n }\n });\n\n resolve(canvas.toDataURL('image/png'));\n };\n img.src = src;\n });\n}\n\nfunction roundRect(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n w: number,\n h: number,\n r: number\n): void {\n const rad = Math.min(r, w / 2, h / 2);\n ctx.beginPath();\n ctx.moveTo(x + rad, y);\n ctx.arcTo(x + w, y, x + w, y + h, rad);\n ctx.arcTo(x + w, y + h, x, y + h, rad);\n ctx.arcTo(x, y + h, x, y, rad);\n ctx.arcTo(x, y, x + w, y, rad);\n ctx.closePath();\n}\n","/**\n * Full-screen annotation editor (web) — ported from the OC-BugReporter design.\n * Tools: pen, arrow, box, blur, text. Renders the captured screenshot fitted to\n * the viewport with a live SVG/visual overlay and the AnnotateToolbar on top.\n * On Continue, flattens annotations into a single PNG.\n */\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport {\n ANNOTATION_COLORS,\n type Annotation,\n type AnnotationTool,\n type Point,\n} from '@outcode/bug-reporter-core';\n\nimport { AnnotateToolbar } from './AnnotateToolbar';\nimport { flattenAnnotations } from './flatten';\nimport { FONT } from './theme';\n\nexport interface AnnotateOverlayProps {\n src: string;\n onCancel: () => void;\n /** Called with the flattened screenshot data URL and the annotation count. */\n onContinue: (flattenedDataUrl: string, annotationCount: number) => void;\n}\n\nconst PADDING = 24;\nconst TOP_RESERVE = 150; // hint + toolbar\nconst BOTTOM_RESERVE = 40;\n\nexport function AnnotateOverlay({ src, onCancel, onContinue }: AnnotateOverlayProps) {\n const stageRef = useRef<HTMLDivElement>(null);\n const idRef = useRef(0);\n const [shapes, setShapes] = useState<Annotation[]>([]);\n const [draft, setDraft] = useState<Annotation | null>(null);\n const [tool, setTool] = useState<AnnotationTool>('arrow');\n const [color, setColor] = useState<string>(ANNOTATION_COLORS[0]);\n const [editingId, setEditingId] = useState<string | null>(null);\n const [dims, setDims] = useState({ width: 800, height: 480 });\n\n const uid = () => `s${++idRef.current}`;\n\n const recompute = useCallback((natW: number, natH: number) => {\n const maxW = window.innerWidth - PADDING * 2;\n const maxH = window.innerHeight - TOP_RESERVE - BOTTOM_RESERVE - PADDING * 2;\n const aspect = natW / natH || 1.6;\n let w = maxW;\n let h = Math.round(maxW / aspect);\n if (h > maxH) {\n h = maxH;\n w = Math.round(maxH * aspect);\n }\n setDims({ width: w, height: h });\n }, []);\n\n useEffect(() => {\n const img = new Image();\n img.onload = () => recompute(img.naturalWidth, img.naturalHeight);\n img.onerror = () => recompute(1440, 900);\n img.src = src;\n }, [src, recompute]);\n\n const getPt = (e: React.PointerEvent): Point => {\n const r = stageRef.current!.getBoundingClientRect();\n return {\n x: Math.max(0, Math.min(r.width, e.clientX - r.left)),\n y: Math.max(0, Math.min(r.height, e.clientY - r.top)),\n };\n };\n\n const onDown = (e: React.PointerEvent) => {\n if (!stageRef.current) return;\n const p = getPt(e);\n if (tool === 'text') {\n // Re-open an existing label if tapped, else create a new one.\n for (let i = shapes.length - 1; i >= 0; i--) {\n const sh = shapes[i];\n if (sh.type !== 'text') continue;\n const w = Math.max(48, sh.text.length * 8 + 24);\n if (p.x >= sh.x - 8 && p.x <= sh.x + w && p.y >= sh.y - 20 && p.y <= sh.y + 10) {\n setEditingId(sh.id);\n return;\n }\n }\n const id = uid();\n setShapes(s => [...s, { id, type: 'text', x: p.x, y: p.y, color, text: '' }]);\n setEditingId(id);\n return;\n }\n try {\n e.currentTarget.setPointerCapture(e.pointerId);\n } catch {\n /* ignore */\n }\n const d: Annotation =\n tool === 'pen'\n ? { id: uid(), type: 'pen', color, points: [p] }\n : { id: uid(), type: tool, color, x0: p.x, y0: p.y, x1: p.x, y1: p.y };\n setDraft(d);\n setEditingId(null);\n };\n\n const onMove = (e: React.PointerEvent) => {\n setDraft(prev => {\n if (!prev) return prev;\n const p = getPt(e);\n if (prev.type === 'pen') return { ...prev, points: [...prev.points, p] };\n return { ...prev, x1: p.x, y1: p.y };\n });\n };\n\n const onUp = () => {\n setDraft(d => {\n if (!d) return null;\n const keep =\n d.type === 'pen'\n ? d.points.length > 1\n : d.type === 'text'\n ? false\n : Math.abs(d.x1 - d.x0) > 5 || Math.abs(d.y1 - d.y0) > 5;\n if (keep) setShapes(s => [...s, d]);\n return null;\n });\n };\n\n const undo = () => {\n setShapes(s => s.slice(0, -1));\n setDraft(null);\n };\n const clearAll = () => {\n setShapes([]);\n setDraft(null);\n setEditingId(null);\n };\n\n const updateText = (id: string, val: string) =>\n setShapes(s => s.map(sh => (sh.id === id && sh.type === 'text' ? { ...sh, text: val } : sh)));\n const commitText = () =>\n setShapes(s => {\n setEditingId(null);\n return s.filter(sh => !(sh.type === 'text' && !sh.text.trim()));\n });\n\n const handleContinue = async () => {\n const flattened = await flattenAnnotations(src, shapes, dims.width, dims.height);\n onContinue(flattened, shapes.length);\n };\n\n const all: Annotation[] = draft ? [...shapes, draft] : shapes;\n const svgEls: React.ReactNode[] = [];\n const blurEls: React.ReactNode[] = [];\n const labelEls: React.ReactNode[] = [];\n\n all.forEach(sh => {\n if (sh.type === 'blur') {\n const x = Math.min(sh.x0, sh.x1);\n const y = Math.min(sh.y0, sh.y1);\n const w = Math.abs(sh.x1 - sh.x0);\n const h = Math.abs(sh.y1 - sh.y0);\n blurEls.push(\n <div\n key={sh.id}\n style={{\n position: 'absolute',\n left: x,\n top: y,\n width: w,\n height: h,\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n background: '#7A7D88',\n border: `1.5px dashed ${sh.color}`,\n borderRadius: 5,\n }}\n />\n );\n } else if (sh.type === 'rect') {\n const x = Math.min(sh.x0, sh.x1);\n const y = Math.min(sh.y0, sh.y1);\n svgEls.push(\n <rect\n key={sh.id}\n x={x}\n y={y}\n width={Math.abs(sh.x1 - sh.x0)}\n height={Math.abs(sh.y1 - sh.y0)}\n rx={4}\n fill=\"none\"\n stroke={sh.color}\n strokeWidth={3}\n />\n );\n } else if (sh.type === 'pen') {\n svgEls.push(\n <polyline\n key={sh.id}\n points={sh.points.map(p => `${p.x},${p.y}`).join(' ')}\n fill=\"none\"\n stroke={sh.color}\n strokeWidth={3.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n );\n } else if (sh.type === 'arrow') {\n const { x0, y0, x1, y1 } = sh;\n const ang = Math.atan2(y1 - y0, x1 - x0);\n const hl = 15;\n svgEls.push(\n <g key={sh.id}>\n <line x1={x0} y1={y0} x2={x1} y2={y1} stroke={sh.color} strokeWidth={3.5} strokeLinecap=\"round\" />\n <polyline\n points={`${x1 - hl * Math.cos(ang - Math.PI / 7)},${y1 - hl * Math.sin(ang - Math.PI / 7)} ${x1},${y1} ${x1 - hl * Math.cos(ang + Math.PI / 7)},${y1 - hl * Math.sin(ang + Math.PI / 7)}`}\n fill=\"none\"\n stroke={sh.color}\n strokeWidth={3.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n );\n } else if (sh.type === 'text') {\n if (editingId === sh.id || !sh.text.trim()) return;\n labelEls.push(\n <div\n key={sh.id}\n style={{\n position: 'absolute',\n left: sh.x,\n top: sh.y,\n transform: 'translateY(-50%)',\n background: sh.color,\n color: '#fff',\n padding: '3px 8px',\n borderRadius: 6,\n fontSize: 13,\n fontWeight: 600,\n fontFamily: FONT,\n whiteSpace: 'nowrap',\n boxShadow: '0 1px 4px rgba(0,0,0,0.28)',\n }}\n >\n {sh.text}\n </div>\n );\n }\n });\n\n const editingShape =\n editingId != null ? shapes.find(s => s.id === editingId && s.type === 'text') : undefined;\n\n return (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 2147483000,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'rgba(8,10,18,0.92)',\n fontFamily: FONT,\n }}\n >\n {/* close */}\n <button\n type=\"button\"\n aria-label=\"Cancel\"\n onClick={onCancel}\n style={{\n position: 'absolute',\n top: 18,\n left: 18,\n width: 36,\n height: 36,\n borderRadius: 9,\n border: '1px solid rgba(255,255,255,0.18)',\n background: 'rgba(255,255,255,0.06)',\n color: '#fff',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n\n {/* hint pill */}\n <div\n style={{\n position: 'absolute',\n top: 24,\n left: '50%',\n transform: 'translateX(-50%)',\n background: 'rgba(8,10,18,0.82)',\n color: '#fff',\n fontSize: 12,\n fontWeight: 550,\n padding: '6px 13px',\n borderRadius: 999,\n backdropFilter: 'blur(6px)',\n }}\n >\n Mark up the screenshot — draw, point, box, or blur sensitive data\n </div>\n\n {/* toolbar */}\n <div style={{ position: 'absolute', top: 62, left: '50%', transform: 'translateX(-50%)', width: 600, maxWidth: '92vw', zIndex: 5 }}>\n <AnnotateToolbar\n tool={tool}\n color={color}\n onTool={setTool}\n onColor={setColor}\n onUndo={undo}\n onClear={clearAll}\n onContinue={handleContinue}\n />\n </div>\n\n {/* stage */}\n <div style={{ position: 'relative', width: dims.width, height: dims.height, marginTop: 70, borderRadius: 10, overflow: 'hidden', boxShadow: '0 24px 70px rgba(0,0,0,0.5)' }}>\n <img\n src={src}\n alt=\"Screenshot\"\n draggable={false}\n style={{ position: 'absolute', inset: 0, width: dims.width, height: dims.height, objectFit: 'contain', pointerEvents: 'none' }}\n />\n <div style={{ position: 'absolute', inset: 0, pointerEvents: 'none' }}>{blurEls}</div>\n <svg width=\"100%\" height=\"100%\" style={{ position: 'absolute', inset: 0, overflow: 'visible', pointerEvents: 'none' }}>\n {svgEls}\n </svg>\n <div style={{ position: 'absolute', inset: 0, pointerEvents: 'none' }}>{labelEls}</div>\n {editingShape && editingShape.type === 'text' && (\n <input\n ref={el => {\n if (el && document.activeElement !== el) el.focus();\n }}\n value={editingShape.text}\n placeholder=\"Label…\"\n onChange={e => updateText(editingShape.id, e.target.value)}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === 'Escape') {\n e.preventDefault();\n commitText();\n }\n }}\n onBlur={commitText}\n style={{\n position: 'absolute',\n left: editingShape.x,\n top: editingShape.y,\n transform: 'translateY(-50%)',\n background: editingShape.color,\n color: '#fff',\n padding: '3px 8px',\n borderRadius: 6,\n fontSize: 13,\n fontWeight: 600,\n fontFamily: FONT,\n border: 'none',\n outline: 'none',\n minWidth: 64,\n boxShadow: '0 0 0 2px rgba(255,255,255,0.7),0 2px 10px rgba(0,0,0,0.3)',\n zIndex: 30,\n }}\n />\n )}\n <div\n ref={stageRef}\n onPointerDown={onDown}\n onPointerMove={onMove}\n onPointerUp={onUp}\n onPointerCancel={onUp}\n style={{ position: 'absolute', inset: 0, touchAction: 'none', userSelect: 'none', cursor: tool === 'text' ? 'text' : 'crosshair' }}\n />\n </div>\n </div>\n );\n}\n","/**\n * Bug report form (web) — ported from the OC-BugReporter BugReportForm design.\n * Summary, description, severity, type, collapsible auto-captured context, and a\n * \"Filing to …\" footer. Rendered as a right slide-in panel by the orchestrator.\n */\n\nimport React, { useState } from 'react';\n\nimport {\n REPORT_TYPES,\n SEVERITIES,\n type ReportSeverity,\n type ReportType,\n} from '@outcode/bug-reporter-core';\n\nimport { FONT, MONO } from './theme';\n\nexport interface MetaRow {\n label: string;\n value: string;\n flag?: 'err' | 'warn';\n}\n\nexport interface BugReportFormProps {\n screenshotUrl?: string;\n annotationCount: number;\n title: string;\n description: string;\n severity: ReportSeverity;\n type: ReportType;\n meta: MetaRow[];\n backendName: string;\n submitting: boolean;\n error?: string;\n onTitle: (v: string) => void;\n onDescription: (v: string) => void;\n onSeverity: (s: ReportSeverity) => void;\n onType: (t: ReportType) => void;\n onBack: () => void;\n onClose: () => void;\n onEditAnnotations: () => void;\n onSubmit: () => void;\n}\n\nexport function BugReportForm(props: BugReportFormProps) {\n const [metaOpen, setMetaOpen] = useState(true);\n const {\n screenshotUrl,\n annotationCount,\n title,\n description,\n severity,\n type,\n meta,\n backendName,\n submitting,\n error,\n } = props;\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n width: '100%',\n background: 'var(--panel)',\n color: 'var(--text)',\n fontFamily: FONT,\n overflow: 'hidden',\n boxSizing: 'border-box',\n }}\n >\n {/* header */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '16px 16px 14px', borderBottom: '1px solid var(--border)', flexShrink: 0 }}>\n <button type=\"button\" aria-label=\"Back\" onClick={props.onBack} style={hdrBtn}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 5l-7 7 7 7\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n <div style={{ flex: 1 }}>\n <div style={{ fontSize: 15, fontWeight: 600, letterSpacing: '-0.01em' }}>New bug report</div>\n <div style={{ fontSize: 12, color: 'var(--muted)', marginTop: 1 }}>Review & describe the issue</div>\n </div>\n <button type=\"button\" aria-label=\"Close\" onClick={props.onClose} style={hdrBtn}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" /></svg>\n </button>\n </div>\n\n {/* body */}\n <div style={{ flex: 1, overflowY: 'auto', padding: 16, display: 'flex', flexDirection: 'column', gap: 18 }}>\n {/* attached screenshot */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 12, padding: 10, border: '1px solid var(--border)', borderRadius: 10, background: 'var(--surface)' }}>\n <div style={{ width: 54, height: 38, borderRadius: 6, background: 'var(--canvas)', border: '1px solid var(--border)', overflow: 'hidden', flexShrink: 0 }}>\n {screenshotUrl && <img src={screenshotUrl} alt=\"\" style={{ width: '100%', height: '100%', objectFit: 'cover' }} />}\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 13, fontWeight: 550 }}>Screenshot attached</div>\n <div style={{ fontSize: 12, color: 'var(--muted)', marginTop: 1, fontFamily: MONO }}>{annotationCount} annotation{annotationCount === 1 ? '' : 's'}</div>\n </div>\n <button type=\"button\" onClick={props.onEditAnnotations} style={{ fontSize: 12, fontWeight: 550, color: 'var(--accent)', background: 'none', border: 'none', cursor: 'pointer', padding: '6px 8px', borderRadius: 7 }}>Edit</button>\n </div>\n\n {/* summary */}\n <Field label=\"Summary\">\n <input\n value={title}\n onChange={e => props.onTitle(e.target.value)}\n placeholder=\"Chart tooltip overflows on hover\"\n style={inputStyle}\n />\n </Field>\n\n {/* description */}\n <Field label=\"What happened?\">\n <textarea\n value={description}\n onChange={e => props.onDescription(e.target.value)}\n placeholder=\"Steps to reproduce, expected vs actual…\"\n style={{ ...inputStyle, resize: 'none', minHeight: 78, lineHeight: 1.5 }}\n />\n </Field>\n\n {/* severity */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <Label>Severity</Label>\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(4,1fr)', gap: 6 }}>\n {SEVERITIES.map(s => {\n const active = severity === s.id;\n return (\n <button\n key={s.id}\n type=\"button\"\n onClick={() => props.onSeverity(s.id)}\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 5,\n padding: '9px 4px',\n borderRadius: 9,\n border: `1px solid ${active ? 'var(--accent)' : 'var(--border)'}`,\n background: active ? 'var(--ring)' : 'var(--surface)',\n cursor: 'pointer',\n fontFamily: 'inherit',\n }}\n >\n <span style={{ width: 9, height: 9, borderRadius: '50%', background: s.color, opacity: active ? 1 : 0.55, boxShadow: active ? `0 0 0 3px color-mix(in srgb,${s.color} 22%,transparent)` : 'none' }} />\n <span style={{ fontSize: 12, fontWeight: active ? 600 : 550, color: active ? 'var(--text)' : 'var(--muted)' }}>{s.label}</span>\n </button>\n );\n })}\n </div>\n </div>\n\n {/* type */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <Label>Type</Label>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 6 }}>\n {REPORT_TYPES.map(t => {\n const active = type === t.id;\n return (\n <button\n key={t.id}\n type=\"button\"\n onClick={() => props.onType(t.id)}\n style={{\n padding: '7px 13px',\n borderRadius: 999,\n border: `1px solid ${active ? 'var(--accent)' : 'var(--border)'}`,\n background: active ? 'var(--accent)' : 'var(--surface)',\n color: active ? 'var(--on-accent)' : 'var(--muted)',\n fontSize: 12.5,\n fontWeight: active ? 600 : 550,\n cursor: 'pointer',\n fontFamily: 'inherit',\n }}\n >\n {t.label}\n </button>\n );\n })}\n </div>\n </div>\n\n {/* auto-captured context */}\n {meta.length > 0 && (\n <div style={{ border: '1px solid var(--border)', borderRadius: 10, overflow: 'hidden', background: 'var(--surface)' }}>\n <button type=\"button\" onClick={() => setMetaOpen(o => !o)} style={{ width: '100%', display: 'flex', alignItems: 'center', gap: 8, padding: '11px 12px', background: 'none', border: 'none', cursor: 'pointer', fontFamily: 'inherit', color: 'var(--text)' }}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" style={{ color: 'var(--muted)' }}><path d=\"M4 7h16M4 12h16M4 17h10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>\n <span style={{ flex: 1, textAlign: 'left', fontSize: 12.5, fontWeight: 600 }}>Auto-captured context</span>\n <span style={{ fontSize: 11, color: 'var(--muted)', fontFamily: MONO }}>{meta.length} fields</span>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" style={{ color: 'var(--muted)', transform: metaOpen ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform .18s' }}><path d=\"M6 9l6 6 6-6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n {metaOpen && (\n <div style={{ borderTop: '1px solid var(--border)', padding: '4px 12px 8px' }}>\n {meta.map((m, i) => (\n <div key={i} style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '6px 0', borderBottom: '1px solid var(--border)', fontFamily: MONO, fontSize: 11.5 }}>\n <span style={{ color: 'var(--muted)', width: 62, flexShrink: 0 }}>{m.label}</span>\n <span style={{ flex: 1, color: m.flag === 'err' ? '#E5484D' : m.flag === 'warn' ? '#F5A524' : 'var(--text)', textAlign: 'right', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{m.value}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* footer */}\n <div style={{ flexShrink: 0, borderTop: '1px solid var(--border)', padding: '12px 16px 14px', display: 'flex', flexDirection: 'column', gap: 11, background: 'var(--panel)' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, fontSize: 12, color: 'var(--muted)' }}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" style={{ flexShrink: 0 }}><path d=\"M4 13l4 4L20 5\" stroke=\"var(--ok)\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n <span style={{ flex: 1 }}>Filing to <b style={{ color: 'var(--text)', fontWeight: 600 }}>{backendName}</b></span>\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 5, fontFamily: MONO, fontSize: 11, color: 'var(--ok)', background: 'var(--ok-bg)', padding: '3px 8px', borderRadius: 999 }}>\n <span style={{ width: 6, height: 6, borderRadius: '50%', background: 'var(--ok)' }} />connected\n </span>\n </div>\n {error && <div style={{ fontSize: 12.5, color: '#E5484D', fontWeight: 550 }}>{error}</div>}\n <button\n type=\"button\"\n disabled={submitting || !title.trim()}\n onClick={props.onSubmit}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 9,\n padding: 12,\n borderRadius: 10,\n border: 'none',\n background: 'var(--accent)',\n color: 'var(--on-accent)',\n fontSize: 14,\n fontWeight: 600,\n fontFamily: 'inherit',\n cursor: submitting || !title.trim() ? 'default' : 'pointer',\n opacity: submitting || !title.trim() ? 0.85 : 1,\n }}\n >\n {submitting && <span style={{ width: 15, height: 15, borderRadius: '50%', border: '2px solid var(--on-accent)', borderTopColor: 'transparent', animation: 'ocbr-spin .7s linear infinite', display: 'inline-block' }} />}\n {submitting ? 'Filing report…' : 'Submit report'}\n </button>\n </div>\n </div>\n );\n}\n\nfunction Field({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 7 }}>\n <Label>{label}</Label>\n {children}\n </div>\n );\n}\n\nfunction Label({ children }: { children: React.ReactNode }) {\n return <label style={{ fontSize: 12, fontWeight: 600, color: 'var(--muted)', letterSpacing: '0.01em' }}>{children}</label>;\n}\n\nconst hdrBtn: React.CSSProperties = {\n width: 30,\n height: 30,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: '1px solid var(--border)',\n background: 'var(--surface)',\n borderRadius: 8,\n cursor: 'pointer',\n color: 'var(--muted)',\n padding: 0,\n};\n\nconst inputStyle: React.CSSProperties = {\n width: '100%',\n boxSizing: 'border-box',\n padding: '10px 12px',\n fontSize: 14,\n fontFamily: 'inherit',\n color: 'var(--text)',\n background: 'var(--surface)',\n border: '1px solid var(--border)',\n borderRadius: 9,\n outline: 'none',\n};\n","/**\n * Captures the current viewport (visible screen) as a PNG/JPEG data URL.\n * Uses html2canvas; runs in browser only. Applies an optional size guard\n * (maxWidth downscale + format/quality) so large/retina screens don't produce\n * multi-megabyte uploads.\n */\n\nimport html2canvas from 'html2canvas';\n\nimport type { ScreenshotOptions } from '@outcode/bug-reporter-core';\n\nconst DEFAULTS: Required<ScreenshotOptions> = {\n maxWidth: 1280,\n format: 'png',\n quality: 0.92,\n};\n\n/** Downscale a canvas to maxWidth (aspect preserved). Returns the original if already small. */\nfunction downscale(source: HTMLCanvasElement, maxWidth: number): HTMLCanvasElement {\n if (source.width <= maxWidth) return source;\n const scale = maxWidth / source.width;\n const target = document.createElement('canvas');\n target.width = Math.round(source.width * scale);\n target.height = Math.round(source.height * scale);\n const ctx = target.getContext('2d');\n if (!ctx) return source;\n ctx.drawImage(source, 0, 0, target.width, target.height);\n return target;\n}\n\n/**\n * Capture the visible viewport as a data URL (for display and for API base64).\n */\nexport async function captureViewport(options?: ScreenshotOptions): Promise<string | undefined> {\n if (typeof document === 'undefined' || typeof window === 'undefined') return undefined;\n const { maxWidth, format, quality } = { ...DEFAULTS, ...options };\n try {\n const canvas = await html2canvas(document.body, {\n x: window.scrollX,\n y: window.scrollY,\n width: window.innerWidth,\n height: window.innerHeight,\n useCORS: true,\n allowTaint: true,\n logging: false,\n });\n const out = downscale(canvas, maxWidth);\n const mime = format === 'jpeg' ? 'image/jpeg' : 'image/png';\n return out.toDataURL(mime, format === 'jpeg' ? quality : undefined);\n } catch {\n return undefined;\n }\n}\n\n/** Strip data URL prefix to get raw base64 for API. */\nexport function dataUrlToBase64(dataUrl: string): string {\n return dataUrl.replace(/^data:image\\/\\w+;base64,/, '');\n}\n","/**\n * Default web storage adapter for the offline retry queue, backed by localStorage.\n * Returns undefined in non-browser / storage-disabled environments (SSR, private\n * mode with blocked storage), so callers can treat the queue as unavailable.\n */\n\nimport type { ReportQueueStorage } from '@outcode/bug-reporter-core';\n\nexport function getDefaultWebStorage(): ReportQueueStorage | undefined {\n try {\n if (typeof localStorage === 'undefined') return undefined;\n // Probe access (throws in some sandboxed iframes / blocked-storage modes).\n const probe = '__outcode_bug_reporter_probe__';\n localStorage.setItem(probe, '1');\n localStorage.removeItem(probe);\n return {\n getItem: key => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n removeItem: key => localStorage.removeItem(key),\n };\n } catch {\n return undefined;\n }\n}\n","/**\n * Success card (web) — ported from the OC-BugReporter \"Report filed\" state.\n */\n\nimport React from 'react';\n\nimport { FONT, MONO } from './theme';\n\nexport interface SuccessCardProps {\n ticket?: string;\n ticketTitle: string;\n backendName: string;\n onDone: () => void;\n}\n\nexport function SuccessCard({ ticket, ticketTitle, backendName, onDone }: SuccessCardProps) {\n return (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 2147483100,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'rgba(8,10,18,0.5)',\n animation: 'ocbr-fade .25s',\n fontFamily: FONT,\n }}\n >\n <div\n style={{\n width: 344,\n maxWidth: '90vw',\n background: 'var(--panel)',\n border: '1px solid var(--border)',\n borderRadius: 18,\n boxShadow: 'var(--shadow)',\n padding: 28,\n textAlign: 'center',\n color: 'var(--text)',\n animation: 'ocbr-pop .35s cubic-bezier(.2,1.1,.3,1)',\n }}\n >\n <div style={{ width: 56, height: 56, borderRadius: '50%', background: 'var(--ok-bg)', display: 'flex', alignItems: 'center', justifyContent: 'center', margin: '0 auto 16px' }}>\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M4 13l5 5L20 6\" stroke=\"var(--ok)\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </div>\n <div style={{ fontSize: 18, fontWeight: 660, letterSpacing: '-0.01em' }}>Report filed</div>\n <div style={{ fontSize: 13.5, color: 'var(--muted)', marginTop: 5, lineHeight: 1.45 }}>\n Tracked in {backendName} and routed to the right team automatically.\n </div>\n {ticket && (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: 9, margin: '18px 0', padding: 11, background: 'var(--surface)', border: '1px solid var(--border)', borderRadius: 10, fontFamily: MONO, fontSize: 13 }}>\n <span style={{ color: 'var(--accent)', fontWeight: 600 }}>{ticket}</span>\n <span style={{ color: 'var(--faint)' }}>·</span>\n <span style={{ color: 'var(--muted)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: 180 }}>{ticketTitle}</span>\n </div>\n )}\n <div style={{ display: 'flex', gap: 8, marginTop: ticket ? 0 : 18 }}>\n <button type=\"button\" onClick={onDone} style={{ flex: 1, padding: 11, borderRadius: 10, border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontFamily: 'inherit', fontSize: 13.5, fontWeight: 600, cursor: 'pointer' }}>Done</button>\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Bug reporter (web) — floating button + full capture→annotate→form→done flow,\n * matching the OC-BugReporter design. Orchestrates the step state machine and\n * hosts the themed overlays (annotate editor, slide-in form, success card).\n */\n\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport type { BugReporterConfig, ReportSeverity, ReportType, SubmitReportOptions } from '@outcode/bug-reporter-core';\nimport { normalizeContext, ReportQueue, resolveTheme, submitReport } from '@outcode/bug-reporter-core';\n\nimport { AnnotateOverlay } from './AnnotateOverlay';\nimport { BugReportForm, type MetaRow } from './BugReportForm';\nimport { captureViewport, dataUrlToBase64 } from './captureViewport';\nimport { getDefaultWebStorage } from './storage';\nimport { SuccessCard } from './SuccessCard';\nimport { cssVars, ensureKeyframes, FONT } from './theme';\n\ntype Step = 'idle' | 'capturing' | 'annotate' | 'form' | 'submitting' | 'done';\n\nexport interface BugReporterButtonProps {\n config: BugReporterConfig;\n /** Accessible label for the floating button. */\n label?: string;\n /** Override styles for the floating button. */\n style?: React.CSSProperties;\n}\n\nfunction shortUA(): string {\n if (typeof navigator === 'undefined') return '—';\n const ua = navigator.userAgent;\n const m = ua.match(/(Chrome|Firefox|Safari|Edg)\\/[\\d.]+/);\n const os = /Mac/.test(ua) ? 'macOS' : /Win/.test(ua) ? 'Windows' : /Linux/.test(ua) ? 'Linux' : '';\n return [m ? m[0].replace('Edg', 'Edge') : 'Browser', os].filter(Boolean).join(' · ');\n}\n\nfunction buildMeta(config: BugReporterConfig): MetaRow[] {\n const rows: MetaRow[] = [];\n if (typeof location !== 'undefined') rows.push({ label: 'Route', value: location.pathname + location.search });\n rows.push({ label: 'Browser', value: shortUA() });\n if (typeof window !== 'undefined') rows.push({ label: 'Viewport', value: `${window.innerWidth} × ${window.innerHeight} @${window.devicePixelRatio || 1}x` });\n if (typeof navigator !== 'undefined') {\n let tz = '';\n try {\n tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch {\n /* ignore */\n }\n rows.push({ label: 'Locale', value: [navigator.language, tz].filter(Boolean).join(' · ') });\n }\n rows.push({ label: 'Release', value: config.appVersion ? `${config.appName}@${config.appVersion}` : config.appName });\n\n if (typeof navigator !== 'undefined') {\n if (navigator.language) rows.push({ label: 'Language', value: navigator.language });\n // Network Information API (consent-free; Chromium/Android). WiFi vs cellular etc.\n const conn = (navigator as unknown as { connection?: { effectiveType?: string; type?: string; saveData?: boolean } }).connection;\n if (conn) {\n const parts = [conn.type, conn.effectiveType, conn.saveData ? 'data-saver' : undefined].filter(Boolean);\n if (parts.length) rows.push({ label: 'Connection', value: parts.join(' · ') });\n }\n if (typeof navigator.onLine === 'boolean') rows.push({ label: 'Online', value: navigator.onLine ? 'online' : 'offline' });\n const mem = (navigator as unknown as { deviceMemory?: number }).deviceMemory;\n if (mem) rows.push({ label: 'Memory', value: `${mem} GB` });\n if (navigator.hardwareConcurrency) rows.push({ label: 'CPU', value: `${navigator.hardwareConcurrency} cores` });\n }\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\n const dark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n rows.push({ label: 'Scheme', value: [dark ? 'dark' : 'light', reduced ? 'reduced-motion' : undefined].filter(Boolean).join(' · ') });\n }\n if (typeof screen !== 'undefined' && screen.width) {\n rows.push({ label: 'Screen', value: `${screen.width} × ${screen.height} · ${screen.colorDepth}-bit` });\n }\n\n const diag = config.collectDiagnostics?.();\n const crumbs = (diag?.breadcrumbs as { level?: string }[] | undefined) ?? [];\n const errs = crumbs.filter(b => b.level === 'error').length;\n const warns = crumbs.filter(b => b.level === 'warn').length;\n if (errs || warns) rows.push({ label: 'Console', value: `${errs} error${errs === 1 ? '' : 's'} · ${warns} warning${warns === 1 ? '' : 's'}`, flag: errs ? 'err' : 'warn' });\n if (diag?.lastFailedApiCall) rows.push({ label: 'Network', value: '1 failed request', flag: 'warn' });\n return rows;\n}\n\nexport function BugReporterButton({ config, label = 'Report a bug', style }: BugReporterButtonProps) {\n const theme = useMemo(() => resolveTheme(config.theme), [config.theme]);\n const backendName = config.backendName ?? 'ClickUp';\n\n const [step, setStep] = useState<Step>('idle');\n const [screenshot, setScreenshot] = useState<string | undefined>();\n const [edited, setEdited] = useState<string | undefined>();\n const [annCount, setAnnCount] = useState(0);\n const [title, setTitle] = useState('');\n const [desc, setDesc] = useState('');\n const [severity, setSeverity] = useState<ReportSeverity>('medium');\n const [type, setType] = useState<ReportType>('bug');\n const [ticket, setTicket] = useState<string | undefined>();\n const [error, setError] = useState<string | undefined>();\n const [meta, setMeta] = useState<MetaRow[]>([]);\n\n useEffect(() => {\n ensureKeyframes();\n const storage = config.storage ?? getDefaultWebStorage();\n if (storage) void new ReportQueue(storage).flush(config);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const queue = useMemo(() => {\n const storage = config.storage ?? getDefaultWebStorage();\n return storage ? new ReportQueue(storage) : undefined;\n }, [config.storage]);\n\n const reset = () => {\n setStep('idle');\n setScreenshot(undefined);\n setEdited(undefined);\n setAnnCount(0);\n setTitle('');\n setDesc('');\n setSeverity('medium');\n setType('bug');\n setTicket(undefined);\n setError(undefined);\n };\n\n const open = async () => {\n if (step !== 'idle') return;\n setStep('capturing');\n const shot = await captureViewport(config.screenshot);\n setScreenshot(shot);\n setStep('annotate');\n };\n\n const onContinue = (flattened: string, count: number) => {\n setEdited(flattened);\n setAnnCount(count);\n setMeta(buildMeta(config));\n setStep('form');\n // Append host-provided context (may be async) without blocking the form.\n if (config.collectContext) {\n void (async () => {\n try {\n const extra = normalizeContext(await config.collectContext!());\n if (extra.length) setMeta(m => [...m, ...extra]);\n } catch {\n /* ignore context failures */\n }\n })();\n }\n };\n\n const submit = async () => {\n if (!title.trim()) return;\n setStep('submitting');\n setError(undefined);\n const shot = edited ?? screenshot;\n const options: SubmitReportOptions = {\n title: title.trim(),\n description: desc.trim(),\n screenshotBase64: shot ? dataUrlToBase64(shot) : undefined,\n isReportingProblem: true,\n severity,\n type,\n context: meta.map(m => ({ label: m.label, value: m.value })),\n metadata: { platform: 'web', userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : undefined },\n };\n try {\n const res = await submitReport(config, options);\n if (res.success) {\n setTicket(res.id);\n setStep('done');\n } else if (queue) {\n await queue.enqueue(options);\n setTicket(undefined);\n setStep('done');\n } else {\n setError(res.message || 'Submission failed.');\n setStep('form');\n }\n } catch (e) {\n if (queue) {\n await queue.enqueue(options);\n setStep('done');\n } else {\n setError(e instanceof Error ? e.message : 'Submission failed.');\n setStep('form');\n }\n }\n };\n\n const submitting = step === 'submitting';\n\n return (\n <div style={{ ...(cssVars(theme) as React.CSSProperties), fontFamily: FONT }}>\n {/* idle: FAB + hint */}\n {step === 'idle' && (\n <>\n <div\n style={{\n position: 'fixed',\n bottom: 86,\n right: 26,\n background: 'var(--panel)',\n border: '1px solid var(--border)',\n borderRadius: 11,\n padding: '8px 13px',\n fontSize: 12.5,\n fontWeight: 600,\n color: 'var(--text)',\n boxShadow: 'var(--shadow)',\n zIndex: 2147482900,\n whiteSpace: 'nowrap',\n animation: 'ocbr-float 3s ease-in-out infinite',\n pointerEvents: 'none',\n }}\n >\n Spotted a bug? Tap →\n </div>\n <button\n type=\"button\"\n aria-label={label}\n onClick={open}\n style={{\n position: 'fixed',\n bottom: 26,\n right: 26,\n width: 56,\n height: 56,\n borderRadius: '50%',\n background: 'var(--accent)',\n border: 'none',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '0 10px 28px rgba(40,40,90,0.34)',\n zIndex: 2147482950,\n ...style,\n }}\n >\n <span style={{ position: 'absolute', inset: 0, borderRadius: '50%', border: '2px solid var(--accent)', animation: 'ocbr-ping 1.9s ease-out infinite' }} />\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M8 11a4 4 0 018 0v3a4 4 0 01-8 0z\" stroke=\"#fff\" strokeWidth=\"1.7\" />\n <circle cx=\"12\" cy=\"7.2\" r=\"2\" stroke=\"#fff\" strokeWidth=\"1.6\" />\n <path d=\"M10.4 5.6L9 4.2M13.6 5.6L15 4.2M8 12H5.4M8 15H5.6M16 12h2.6M16 15h2.4M8.4 17.6l-1.8 1.8M15.6 17.6l1.8 1.8\" stroke=\"#fff\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </>\n )}\n\n {/* capture flash */}\n {step === 'capturing' && (\n <div style={{ position: 'fixed', inset: 0, background: '#fff', zIndex: 2147483200, animation: 'ocbr-flash .7s ease-out forwards', pointerEvents: 'none' }} />\n )}\n\n {/* annotate */}\n {step === 'annotate' && screenshot && (\n <AnnotateOverlay src={screenshot} onCancel={reset} onContinue={onContinue} />\n )}\n\n {/* form (+ submitting) */}\n {(step === 'form' || step === 'submitting') && (\n <div style={{ position: 'fixed', inset: 0, zIndex: 2147483050, fontFamily: FONT }}>\n <div onClick={reset} style={{ position: 'absolute', inset: 0, background: 'rgba(8,10,18,0.5)', animation: 'ocbr-fade .25s' }}>\n {(edited ?? screenshot) && (\n <img src={edited ?? screenshot} alt=\"\" style={{ width: '100%', height: '100%', objectFit: 'cover', opacity: 0.25, filter: 'blur(1px)' }} />\n )}\n </div>\n <div\n style={{\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n width: 'min(400px, 100vw)',\n boxShadow: '-14px 0 44px rgba(10,12,30,0.20)',\n borderLeft: '1px solid var(--border)',\n animation: 'ocbr-panel-in .3s cubic-bezier(.2,.8,.2,1)',\n }}\n >\n <BugReportForm\n screenshotUrl={edited ?? screenshot}\n annotationCount={annCount}\n title={title}\n description={desc}\n severity={severity}\n type={type}\n meta={meta}\n backendName={backendName}\n submitting={submitting}\n error={error}\n onTitle={setTitle}\n onDescription={setDesc}\n onSeverity={setSeverity}\n onType={setType}\n onBack={() => setStep('annotate')}\n onClose={reset}\n onEditAnnotations={() => setStep('annotate')}\n onSubmit={submit}\n />\n </div>\n </div>\n )}\n\n {/* done */}\n {step === 'done' && (\n <SuccessCard\n ticket={ticket}\n ticketTitle={title.trim() || 'Untitled report'}\n backendName={backendName}\n onDone={reset}\n />\n )}\n </div>\n );\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@outcode/bug-reporter-web",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "In-app bug reporter for React (web): a floating button that captures the screen, lets users annotate it (draw, arrow, box, blur, text), set severity/type, and file to ClickUp or any custom backend.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"bug-reporter",
|
|
7
|
+
"bug-report",
|
|
8
|
+
"feedback",
|
|
9
|
+
"in-app-feedback",
|
|
10
|
+
"react",
|
|
11
|
+
"screenshot",
|
|
12
|
+
"annotate",
|
|
13
|
+
"html2canvas",
|
|
14
|
+
"clickup",
|
|
15
|
+
"issue-tracker"
|
|
16
|
+
],
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"author": "OutCode Software",
|
|
19
|
+
"homepage": "https://github.com/OutCode-Software/bug-reporter/tree/main/packages/web#readme",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/OutCode-Software/bug-reporter.git",
|
|
23
|
+
"directory": "packages/web"
|
|
24
|
+
},
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/OutCode-Software/bug-reporter/issues"
|
|
27
|
+
},
|
|
28
|
+
"sideEffects": false,
|
|
29
|
+
"main": "./dist/index.js",
|
|
30
|
+
"module": "./dist/index.mjs",
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"import": "./dist/index.mjs",
|
|
36
|
+
"require": "./dist/index.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsup",
|
|
42
|
+
"clean": "rm -rf dist",
|
|
43
|
+
"type-check": "tsc --noEmit",
|
|
44
|
+
"lint": "eslint src --ext .ts,.tsx",
|
|
45
|
+
"test": "vitest run --passWithNoTests",
|
|
46
|
+
"prepack": "yarn build"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@outcode/bug-reporter-core": "^0.1.0",
|
|
50
|
+
"html2canvas": "^1.4.1"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"react": ">=18",
|
|
54
|
+
"react-dom": ">=18"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/react": "~19.2.10",
|
|
58
|
+
"@types/react-dom": "~19.2.0",
|
|
59
|
+
"react": "19.2.0",
|
|
60
|
+
"react-dom": "19.2.0",
|
|
61
|
+
"vitest": "^1.0.0"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
}
|
|
66
|
+
}
|