@outcode/bug-reporter-native 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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/AnnotateToolbar.tsx","../src/AnnotateOverlay.tsx","../src/BugReporterCaptureRefContext.tsx","../src/BugReportForm.tsx","../src/captureView.ts","../src/SuccessCard.tsx","../src/BugReporterButton.tsx"],"names":["jsx","View","jsxs","ScrollView","ANNOTATION_TOOLS","TouchableOpacity","Svg","Path","ANNOTATION_COLORS","StyleSheet","useSafeAreaInsets","useRef","useState","useEffect","Image","Dimensions","useCallback","PanResponder","captureRef","Modal","styles","Text","TextInput","Polyline","Rect","G","Line","createContext","useContext","React","SEVERITIES","REPORT_TYPES","ActivityIndicator","InteractionManager","Platform","captureScreen","PixelRatio","Appearance","useMemo","resolveTheme","Animated","Easing","getReportQueue","normalizeContext","submitReport","Fragment","Circle"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Annotation toolbar (native) — tools, colors, undo/clear, Continue.\n * Mirrors the OC-BugReporter AnnotateToolbar design. Themed via the token object.\n */\n\nimport React from 'react';\n\nimport { ScrollView, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport Svg, { Path } from 'react-native-svg';\n\nimport {\n ANNOTATION_COLORS,\n ANNOTATION_TOOLS,\n type AnnotationTool,\n type BugReporterTheme,\n} from '@outcode/bug-reporter-core';\n\nexport interface AnnotateToolbarProps {\n t: BugReporterTheme;\n tool: AnnotationTool;\n color: string;\n onTool: (tool: AnnotationTool) => void;\n onColor: (c: string) => void;\n onUndo: () => void;\n}\n\nexport function AnnotateToolbar({ t, tool, color, onTool, onColor, onUndo }: AnnotateToolbarProps) {\n return (\n <View\n style={[\n styles.bar,\n { backgroundColor: t.panel, borderColor: t.border, shadowColor: '#000' },\n ]}\n >\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.row}>\n {ANNOTATION_TOOLS.map(tl => {\n const active = tool === tl.id;\n return (\n <TouchableOpacity\n key={tl.id}\n onPress={() => onTool(tl.id)}\n style={[styles.iconBtn, { backgroundColor: active ? t.ring : 'transparent' }]}\n >\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d={tl.iconPath} stroke={active ? t.accent : t.muted} strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </Svg>\n </TouchableOpacity>\n );\n })}\n\n <View style={[styles.divider, { backgroundColor: t.border }]} />\n\n {ANNOTATION_COLORS.map(c => {\n const active = color === c;\n return (\n <TouchableOpacity\n key={c}\n onPress={() => onColor(c)}\n style={{\n width: active ? 22 : 20,\n height: active ? 22 : 20,\n borderRadius: 11,\n marginHorizontal: 3,\n backgroundColor: c,\n borderWidth: 2,\n borderColor: active ? t.accent : t.border,\n }}\n />\n );\n })}\n\n <View style={[styles.divider, { backgroundColor: t.border }]} />\n\n <TouchableOpacity onPress={onUndo} style={styles.iconBtn}>\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d=\"M9 14L4 9l5-5M4 9h11a5 5 0 010 10h-3\" stroke={t.muted} strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </Svg>\n </TouchableOpacity>\n </ScrollView>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n bar: {\n borderWidth: 1,\n borderRadius: 14,\n paddingVertical: 7,\n paddingHorizontal: 7,\n shadowOffset: { width: 0, height: 12 },\n shadowOpacity: 0.28,\n shadowRadius: 24,\n elevation: 10,\n },\n row: { flexDirection: 'row', alignItems: 'center', gap: 2 },\n iconBtn: { width: 36, height: 36, borderRadius: 10, alignItems: 'center', justifyContent: 'center' },\n divider: { width: 1, height: 24, marginHorizontal: 6 },\n});\n","/**\n * Full-screen annotation editor (native) — mirrors the OC-BugReporter design.\n * Tools: pen, arrow, box, blur (opaque redaction), text. Static header keeps\n * Back / Delete / Continue always reachable; text is edited in a keyboard-safe\n * top bar (and tapping an existing label re-opens it). Flattened via captureRef.\n */\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport {\n Dimensions,\n Image,\n Modal,\n PanResponder,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport Svg, { G, Line, Polyline, Rect } from 'react-native-svg';\nimport { captureRef } from 'react-native-view-shot';\n\nimport {\n ANNOTATION_COLORS,\n type Annotation,\n type AnnotationTool,\n type BugReporterTheme,\n type Point,\n type TextAnnotation,\n} from '@outcode/bug-reporter-core';\n\nimport { AnnotateToolbar } from './AnnotateToolbar';\n\nexport interface AnnotateOverlayProps {\n t: BugReporterTheme;\n visible: boolean;\n src: string;\n onCancel: () => void;\n onContinue: (flattenedDataUrl: string, annotationCount: number) => void;\n}\n\nconst HEADER_H = 50;\n\nfunction pointsStr(points: Point[]): string {\n return points.map(p => `${p.x},${p.y}`).join(' ');\n}\n\n/** Approximate hit-test for tapping an existing text label (top-most first). */\nfunction hitTestText(shapes: Annotation[], p: Point): string | null {\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) return sh.id;\n }\n return null;\n}\n\nexport function AnnotateOverlay({ t, visible, src, onCancel, onContinue }: AnnotateOverlayProps) {\n const insets = useSafeAreaInsets();\n const stageContainerRef = useRef<View>(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: 320, height: 480 });\n\n const toolRef = useRef(tool);\n const colorRef = useRef(color);\n const shapesRef = useRef(shapes);\n const startRef = useRef<Point | null>(null);\n toolRef.current = tool;\n colorRef.current = color;\n shapesRef.current = shapes;\n\n useEffect(() => {\n if (!visible || !src) return;\n Image.getSize(\n src,\n (w, h) => {\n const win = Dimensions.get('window');\n const maxW = win.width - 32;\n const maxH = win.height - 230;\n const aspect = w / h || 0.6;\n let dw = maxW;\n let dh = Math.round(maxW / aspect);\n if (dh > maxH) {\n dh = maxH;\n dw = Math.round(maxH * aspect);\n }\n setDims({ width: dw, height: dh });\n },\n () => setDims({ width: Dimensions.get('window').width - 32, height: 480 })\n );\n }, [visible, src]);\n\n const startDraw = useCallback((x: number, y: number) => {\n const tl = toolRef.current;\n const c = colorRef.current;\n if (tl === 'text') {\n const hit = hitTestText(shapesRef.current, { x, y });\n if (hit) {\n setEditingId(hit);\n return;\n }\n const id = `s${++idRef.current}`;\n setShapes(s => [...s, { id, type: 'text', x, y, color: c, text: '' }]);\n setEditingId(id);\n return;\n }\n setEditingId(null);\n startRef.current = { x, y };\n setDraft(\n tl === 'pen'\n ? { id: `s${++idRef.current}`, type: 'pen', color: c, points: [{ x, y }] }\n : { id: `s${++idRef.current}`, type: tl, color: c, x0: x, y0: y, x1: x, y1: y }\n );\n }, []);\n\n const moveDraw = useCallback((x: number, y: number) => {\n setDraft(prev => {\n if (!prev) return prev;\n if (prev.type === 'pen') return { ...prev, points: [...prev.points, { x, y }] };\n if (prev.type === 'text') return prev;\n return { ...prev, x1: x, y1: y };\n });\n }, []);\n\n const endDraw = useCallback(() => {\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 startRef.current = null;\n }, []);\n\n const pan = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => true,\n onMoveShouldSetPanResponder: () => true,\n onPanResponderGrant: e => startDraw(e.nativeEvent.locationX, e.nativeEvent.locationY),\n onPanResponderMove: e => moveDraw(e.nativeEvent.locationX, e.nativeEvent.locationY),\n onPanResponderRelease: endDraw,\n onPanResponderTerminate: endDraw,\n })\n ).current;\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 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 commitText();\n const count = shapes.filter(sh => !(sh.type === 'text' && !sh.text.trim())).length;\n try {\n const uri = await captureRef(stageContainerRef, { format: 'png', result: 'data-uri', quality: 1 });\n onContinue(typeof uri === 'string' ? uri : src, count);\n } catch {\n onContinue(src, count);\n }\n };\n\n const all: Annotation[] = draft ? [...shapes, draft] : shapes;\n const editingShape = (editingId != null ? shapes.find(s => s.id === editingId) : undefined) as\n | TextAnnotation\n | undefined;\n\n return (\n <Modal visible={visible} animationType=\"fade\" transparent statusBarTranslucent onRequestClose={onCancel}>\n <View style={styles.screen}>\n {/* static header */}\n <View style={[styles.header, { paddingTop: insets.top + 8, height: HEADER_H + insets.top }]}>\n <TouchableOpacity onPress={onCancel} style={styles.hdrGhost}>\n <Text style={styles.hdrGhostText}>Back</Text>\n </TouchableOpacity>\n <Text style={styles.hdrTitle}>Annotate</Text>\n <View style={{ flexDirection: 'row', gap: 8 }}>\n <TouchableOpacity onPress={clearAll} style={styles.hdrGhost}>\n <Text style={[styles.hdrGhostText, { color: '#FF6B6B' }]}>Delete</Text>\n </TouchableOpacity>\n <TouchableOpacity onPress={handleContinue} style={[styles.hdrPrimary, { backgroundColor: t.accent }]}>\n <Text style={{ color: t.onAccent, fontWeight: '600', fontSize: 13.5 }}>Continue</Text>\n </TouchableOpacity>\n </View>\n </View>\n\n {/* keyboard-safe text editor bar */}\n {editingShape && (\n <View style={[styles.editBar, { top: HEADER_H + insets.top + 6, backgroundColor: t.panel, borderColor: t.border }]}>\n <TextInput\n key={editingShape.id}\n autoFocus\n value={editingShape.text}\n placeholder=\"Type a label, then Done\"\n placeholderTextColor={t.faint}\n onChangeText={v => updateText(editingShape.id, v)}\n onSubmitEditing={commitText}\n style={{ flex: 1, color: t.text, fontSize: 15, paddingVertical: 6 }}\n />\n <TouchableOpacity onPress={commitText} style={[styles.editDone, { backgroundColor: t.accent }]}>\n <Text style={{ color: t.onAccent, fontWeight: '600', fontSize: 13 }}>Done</Text>\n </TouchableOpacity>\n </View>\n )}\n\n {/* stage */}\n <View style={styles.stageWrap}>\n <View ref={stageContainerRef} collapsable={false} style={[styles.stage, { width: dims.width, height: dims.height }]}>\n <Image source={{ uri: src }} style={{ width: dims.width, height: dims.height }} resizeMode=\"contain\" />\n\n {/* opaque redaction boxes */}\n {all.map(sh => {\n if (sh.type !== 'blur') return null;\n return (\n <View\n key={sh.id}\n pointerEvents=\"none\"\n style={{\n position: 'absolute',\n left: Math.min(sh.x0, sh.x1),\n top: Math.min(sh.y0, sh.y1),\n width: Math.abs(sh.x1 - sh.x0),\n height: Math.abs(sh.y1 - sh.y0),\n backgroundColor: '#7A7D88',\n borderWidth: 1.5,\n borderColor: sh.color,\n borderRadius: 5,\n }}\n />\n );\n })}\n\n <Svg width={dims.width} height={dims.height} style={StyleSheet.absoluteFill} pointerEvents=\"none\">\n {all.map(sh => {\n if (sh.type === 'pen') {\n return <Polyline key={sh.id} points={pointsStr(sh.points)} fill=\"none\" stroke={sh.color} strokeWidth={3.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" />;\n }\n if (sh.type === 'rect') {\n return <Rect key={sh.id} x={Math.min(sh.x0, sh.x1)} y={Math.min(sh.y0, sh.y1)} width={Math.abs(sh.x1 - sh.x0)} height={Math.abs(sh.y1 - sh.y0)} rx={4} fill=\"none\" stroke={sh.color} strokeWidth={3} />;\n }\n 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 return (\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 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)}`} fill=\"none\" stroke={sh.color} strokeWidth={3.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </G>\n );\n }\n return null;\n })}\n </Svg>\n\n {/* text labels (render live, even while editing) */}\n {all.map(sh => {\n if (sh.type !== 'text' || !sh.text.trim()) return null;\n return (\n <View key={sh.id} pointerEvents=\"none\" style={{ position: 'absolute', left: sh.x, top: sh.y - 13, backgroundColor: sh.color, paddingHorizontal: 8, paddingVertical: 3, borderRadius: 6 }}>\n <Text style={{ color: '#fff', fontSize: 13, fontWeight: '600' }}>{sh.text}</Text>\n </View>\n );\n })}\n\n {/* draw surface */}\n <View style={StyleSheet.absoluteFill} {...pan.panHandlers} />\n </View>\n </View>\n\n {/* bottom toolbar: tools + colors + undo */}\n <View style={[styles.toolbarWrap, { bottom: insets.bottom + 18 }]}>\n <AnnotateToolbar t={t} tool={tool} color={color} onTool={setTool} onColor={setColor} onUndo={undo} />\n </View>\n </View>\n </Modal>\n );\n}\n\nconst styles = StyleSheet.create({\n screen: { flex: 1, backgroundColor: 'rgba(8,10,18,0.94)' },\n header: { position: 'absolute', top: 0, left: 0, right: 0, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', paddingHorizontal: 14, zIndex: 6 },\n hdrTitle: { color: '#fff', fontSize: 15, fontWeight: '600' },\n hdrGhost: { paddingHorizontal: 10, paddingVertical: 8 },\n hdrGhostText: { color: '#fff', fontSize: 14, fontWeight: '500' },\n hdrPrimary: { paddingHorizontal: 16, paddingVertical: 8, borderRadius: 10 },\n editBar: { position: 'absolute', left: 16, right: 16, flexDirection: 'row', alignItems: 'center', gap: 8, paddingLeft: 12, paddingRight: 6, paddingVertical: 4, borderRadius: 12, borderWidth: 1, zIndex: 7 },\n editDone: { paddingHorizontal: 14, paddingVertical: 7, borderRadius: 9 },\n stageWrap: { flex: 1, alignItems: 'center', justifyContent: 'center' },\n stage: { borderRadius: 10, overflow: 'hidden', backgroundColor: '#000' },\n toolbarWrap: { position: 'absolute', left: 16, right: 16, alignItems: 'center' },\n});\n","/**\n * Optional context so the current screen can register its root View for screenshot capture.\n * Use when capturing the app-level wrapper (e.g. around NavigationContainer) returns empty\n * or wrong content (e.g. on Android with native stack). Wrap screen content in\n * BugReporterScreenCaptureView or call useSetBugReporterCaptureRef(ref).\n */\n\nimport React, { createContext, useCallback, useContext, useRef, useState } from 'react';\n\nimport { View } from 'react-native';\n\nimport type { CaptureViewRef } from './captureView';\n\ntype SetCaptureRef = (ref: CaptureViewRef | null) => void;\n\nconst BugReporterCaptureRefContext = createContext<SetCaptureRef | null>(null);\n\nconst CurrentRefContext = createContext<CaptureViewRef | null>(null);\n\nexport function BugReporterCaptureRefProvider({ children }: { children: React.ReactNode }) {\n const [currentRef, setCurrentRef] = useState<CaptureViewRef | null>(null);\n const setRef = useCallback((ref: CaptureViewRef | null) => {\n setCurrentRef(() => ref);\n }, []);\n return (\n <BugReporterCaptureRefContext.Provider value={setRef}>\n <CurrentRefContext.Provider value={currentRef}>{children}</CurrentRefContext.Provider>\n </BugReporterCaptureRefContext.Provider>\n );\n}\n\n/** Call from the current screen to register its root View for capture. Unregisters on unmount. */\nexport function useSetBugReporterCaptureRef(ref: CaptureViewRef | null) {\n const setRef = useContext(BugReporterCaptureRefContext);\n React.useEffect(() => {\n setRef?.(ref);\n return () => setRef?.(null);\n }, [setRef, ref]);\n}\n\nexport function useBugReporterCaptureRef(): CaptureViewRef | null {\n return useContext(CurrentRefContext);\n}\n\n/** Wraps screen content so this view is used for bug report screenshots. Use inside screens when app-level capture is empty. */\nexport function BugReporterScreenCaptureView({\n children,\n style,\n}: {\n children: React.ReactNode;\n style?: React.ComponentProps<typeof View>['style'];\n}) {\n const ref = useRef<View>(null);\n useSetBugReporterCaptureRef(ref);\n return (\n <View ref={ref} collapsable={false} style={[{ flex: 1 }, style]}>\n {children}\n </View>\n );\n}\n","/**\n * Bug report form (native) — mirrors the OC-BugReporter BugReportForm design.\n * Rendered inside a bottom sheet by the orchestrator.\n */\n\nimport React, { useState } from 'react';\n\nimport {\n ActivityIndicator,\n Image,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport Svg, { Path } from 'react-native-svg';\n\nimport {\n REPORT_TYPES,\n SEVERITIES,\n type BugReporterTheme,\n type ReportSeverity,\n type ReportType,\n} from '@outcode/bug-reporter-core';\n\nexport interface MetaRow {\n label: string;\n value: string;\n flag?: 'err' | 'warn';\n}\n\nexport interface BugReportFormProps {\n t: BugReporterTheme;\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 { t } = props;\n const [metaOpen, setMetaOpen] = useState(true);\n const canSubmit = props.title.trim().length > 0 && !props.submitting;\n\n return (\n <View style={[styles.root, { backgroundColor: t.panel }]}>\n {/* header */}\n <View style={[styles.header, { borderBottomColor: t.border }]}>\n <TouchableOpacity onPress={props.onBack} style={[styles.hdrBtn, { borderColor: t.border, backgroundColor: t.surface }]}>\n <Svg width={14} height={14} viewBox=\"0 0 24 24\" fill=\"none\"><Path d=\"M15 5l-7 7 7 7\" stroke={t.muted} strokeWidth={2.2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></Svg>\n </TouchableOpacity>\n <View style={{ flex: 1 }}>\n <Text style={[styles.title, { color: t.text }]}>New bug report</Text>\n <Text style={[styles.subtitle, { color: t.muted }]}>Review &amp; describe the issue</Text>\n </View>\n <TouchableOpacity onPress={props.onClose} style={[styles.hdrBtn, { borderColor: t.border, backgroundColor: t.surface }]}>\n <Svg width={14} height={14} viewBox=\"0 0 24 24\" fill=\"none\"><Path d=\"M6 6l12 12M18 6L6 18\" stroke={t.muted} strokeWidth={2.2} strokeLinecap=\"round\" /></Svg>\n </TouchableOpacity>\n </View>\n\n <ScrollView style={{ flex: 1 }} contentContainerStyle={{ padding: 16, gap: 18 }} keyboardShouldPersistTaps=\"handled\">\n {/* screenshot */}\n <View style={[styles.shotRow, { borderColor: t.border, backgroundColor: t.surface }]}>\n <View style={{ width: 54, height: 38, borderRadius: 6, overflow: 'hidden', backgroundColor: t.canvas, borderWidth: 1, borderColor: t.border }}>\n {props.screenshotUrl ? <Image source={{ uri: props.screenshotUrl }} style={{ width: '100%', height: '100%' }} resizeMode=\"cover\" /> : null}\n </View>\n <View style={{ flex: 1 }}>\n <Text style={{ fontSize: 13, fontWeight: '500', color: t.text }}>Screenshot attached</Text>\n <Text style={{ fontSize: 12, color: t.muted, marginTop: 1 }}>{props.annotationCount} annotation{props.annotationCount === 1 ? '' : 's'}</Text>\n </View>\n <TouchableOpacity onPress={props.onEditAnnotations}>\n <Text style={{ fontSize: 12, fontWeight: '500', color: t.accent }}>Edit</Text>\n </TouchableOpacity>\n </View>\n\n {/* summary */}\n <View style={{ gap: 7 }}>\n <Text style={[styles.label, { color: t.muted }]}>Summary</Text>\n <TextInput\n value={props.title}\n onChangeText={props.onTitle}\n placeholder=\"Chart tooltip overflows on hover\"\n placeholderTextColor={t.faint}\n style={[styles.input, { color: t.text, backgroundColor: t.surface, borderColor: t.border }]}\n />\n </View>\n\n {/* description */}\n <View style={{ gap: 7 }}>\n <Text style={[styles.label, { color: t.muted }]}>What happened?</Text>\n <TextInput\n value={props.description}\n onChangeText={props.onDescription}\n placeholder=\"Steps to reproduce, expected vs actual…\"\n placeholderTextColor={t.faint}\n multiline\n style={[styles.input, styles.textArea, { color: t.text, backgroundColor: t.surface, borderColor: t.border }]}\n />\n </View>\n\n {/* severity */}\n <View style={{ gap: 8 }}>\n <Text style={[styles.label, { color: t.muted }]}>Severity</Text>\n <View style={{ flexDirection: 'row', gap: 6 }}>\n {SEVERITIES.map(s => {\n const active = props.severity === s.id;\n return (\n <TouchableOpacity\n key={s.id}\n onPress={() => props.onSeverity(s.id)}\n style={[styles.sev, { borderColor: active ? t.accent : t.border, backgroundColor: active ? t.ring : t.surface }]}\n >\n <View style={{ width: 9, height: 9, borderRadius: 5, backgroundColor: s.color, opacity: active ? 1 : 0.55 }} />\n <Text style={{ fontSize: 12, fontWeight: active ? '600' : '500', color: active ? t.text : t.muted }}>{s.label}</Text>\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n\n {/* type */}\n <View style={{ gap: 8 }}>\n <Text style={[styles.label, { color: t.muted }]}>Type</Text>\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 6 }}>\n {REPORT_TYPES.map(rt => {\n const active = props.type === rt.id;\n return (\n <TouchableOpacity\n key={rt.id}\n onPress={() => props.onType(rt.id)}\n style={{ paddingVertical: 7, paddingHorizontal: 13, borderRadius: 999, borderWidth: 1, borderColor: active ? t.accent : t.border, backgroundColor: active ? t.accent : t.surface }}\n >\n <Text style={{ fontSize: 12.5, fontWeight: active ? '600' : '500', color: active ? t.onAccent : t.muted }}>{rt.label}</Text>\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n\n {/* metadata */}\n {props.meta.length > 0 && (\n <View style={{ borderWidth: 1, borderColor: t.border, borderRadius: 10, overflow: 'hidden', backgroundColor: t.surface }}>\n <TouchableOpacity onPress={() => setMetaOpen(o => !o)} style={{ flexDirection: 'row', alignItems: 'center', gap: 8, padding: 11 }}>\n <Svg width={14} height={14} viewBox=\"0 0 24 24\" fill=\"none\"><Path d=\"M4 7h16M4 12h16M4 17h10\" stroke={t.muted} strokeWidth={2} strokeLinecap=\"round\" /></Svg>\n <Text style={{ flex: 1, fontSize: 12.5, fontWeight: '600', color: t.text }}>Auto-captured context</Text>\n <Text style={{ fontSize: 11, color: t.muted }}>{props.meta.length} fields</Text>\n <Text style={{ color: t.muted, fontSize: 11 }}>{metaOpen ? '▲' : '▼'}</Text>\n </TouchableOpacity>\n {metaOpen && (\n <View style={{ borderTopWidth: 1, borderTopColor: t.border, paddingHorizontal: 12, paddingBottom: 8 }}>\n {props.meta.map((m, i) => (\n <View key={i} style={{ flexDirection: 'row', alignItems: 'center', gap: 10, paddingVertical: 6, borderBottomWidth: 1, borderBottomColor: t.border }}>\n <Text style={{ color: t.muted, width: 64, fontSize: 11.5 }}>{m.label}</Text>\n <Text numberOfLines={1} style={{ flex: 1, textAlign: 'right', fontSize: 11.5, color: m.flag === 'err' ? '#E5484D' : m.flag === 'warn' ? '#F5A524' : t.text }}>{m.value}</Text>\n </View>\n ))}\n </View>\n )}\n </View>\n )}\n </ScrollView>\n\n {/* footer */}\n <View style={[styles.footer, { borderTopColor: t.border, backgroundColor: t.panel }]}>\n <View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>\n <Svg width={14} height={14} viewBox=\"0 0 24 24\" fill=\"none\"><Path d=\"M4 13l4 4L20 5\" stroke={t.ok} strokeWidth={2.4} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></Svg>\n <Text style={{ flex: 1, fontSize: 12, color: t.muted }}>Filing to <Text style={{ color: t.text, fontWeight: '600' }}>{props.backendName}</Text></Text>\n <View style={{ flexDirection: 'row', alignItems: 'center', gap: 5, backgroundColor: t.okBg, paddingHorizontal: 8, paddingVertical: 3, borderRadius: 999 }}>\n <View style={{ width: 6, height: 6, borderRadius: 3, backgroundColor: t.ok }} />\n <Text style={{ fontSize: 11, color: t.ok }}>connected</Text>\n </View>\n </View>\n {props.error ? <Text style={{ fontSize: 12.5, color: '#E5484D', fontWeight: '500' }}>{props.error}</Text> : null}\n <TouchableOpacity disabled={!canSubmit} onPress={props.onSubmit} style={[styles.submit, { backgroundColor: t.accent, opacity: canSubmit ? 1 : 0.85 }]}>\n {props.submitting ? <ActivityIndicator size=\"small\" color={t.onAccent} /> : <Text style={{ color: t.onAccent, fontSize: 14, fontWeight: '600' }}>Submit report</Text>}\n </TouchableOpacity>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: { flex: 1, overflow: 'hidden' },\n header: { flexDirection: 'row', alignItems: 'center', gap: 10, paddingHorizontal: 16, paddingTop: 16, paddingBottom: 14, borderBottomWidth: 1 },\n hdrBtn: { width: 30, height: 30, borderRadius: 8, borderWidth: 1, alignItems: 'center', justifyContent: 'center' },\n title: { fontSize: 15, fontWeight: '600' },\n subtitle: { fontSize: 12, marginTop: 1 },\n shotRow: { flexDirection: 'row', alignItems: 'center', gap: 12, padding: 10, borderWidth: 1, borderRadius: 10 },\n label: { fontSize: 12, fontWeight: '600' },\n input: { borderWidth: 1, borderRadius: 9, paddingHorizontal: 12, paddingVertical: 10, fontSize: 14 },\n textArea: { minHeight: 78, textAlignVertical: 'top' },\n sev: { flex: 1, alignItems: 'center', gap: 5, paddingVertical: 9, paddingHorizontal: 4, borderRadius: 9, borderWidth: 1 },\n footer: { borderTopWidth: 1, paddingHorizontal: 16, paddingTop: 12, paddingBottom: 14, gap: 11 },\n submit: { paddingVertical: 12, borderRadius: 10, alignItems: 'center', justifyContent: 'center' },\n});\n","/**\n * Capture a React Native view as base64 (for API) or data URI (for display).\n * Uses react-native-view-shot.\n * Prefers captureScreen() (full screen, no ref) when available; falls back to captureRef(view).\n */\n\nimport type { RefObject } from 'react';\n\nimport type { View } from 'react-native';\nimport { InteractionManager, Platform } from 'react-native';\n\nimport { captureRef, captureScreen } from 'react-native-view-shot';\n\nimport type { ScreenshotOptions } from '@outcode/bug-reporter-core';\n\nexport type CaptureViewRef = RefObject<View | null>;\n\n/** Delay (ms) after interactions before capture so the view is laid out and painted. */\nconst CAPTURE_DELAY_MS = 400;\n/** Max wait (ms) for native capture before giving up. */\nconst CAPTURE_TIMEOUT_MS = 8000;\n\ntype ResultType = 'data-uri' | 'base64' | 'tmpfile';\n\n/**\n * Build react-native-view-shot options from ScreenshotOptions.\n *\n * NOTE: `maxWidth` is intentionally NOT applied here. view-shot's `width`/`height`\n * are unreliable for `captureScreen` (a native hardware screenshot) and produce\n * blank/failed captures, so on native we only use the safe levers — `format` and\n * `quality`. Use `format: 'jpeg'` + `quality` to shrink reports. The web capture\n * honours `maxWidth` via canvas downscale.\n */\nfunction viewShotOptions(\n result: ResultType,\n options?: ScreenshotOptions\n): Record<string, unknown> {\n const format = options?.format === 'jpeg' ? 'jpg' : 'png';\n const quality = options?.quality ?? (format === 'jpg' ? 0.92 : 1);\n return { format, quality, result };\n}\n\nfunction waitForLayout(): Promise<void> {\n return new Promise(resolve => {\n InteractionManager.runAfterInteractions(() => {\n setTimeout(resolve, CAPTURE_DELAY_MS);\n });\n });\n}\n\nfunction doCapture(\n viewRef: CaptureViewRef,\n options?: ScreenshotOptions\n): Promise<string | undefined> {\n const view = viewRef?.current;\n if (!view) return Promise.resolve(undefined);\n return captureRef(viewRef, viewShotOptions('data-uri', options))\n .then(uri => (typeof uri === 'string' ? uri : undefined))\n .catch(() => undefined);\n}\n\n/**\n * Capture the given view as base64 string.\n * Pass the ref of the View that wraps the screen content (e.g. the navigator container).\n */\nexport async function captureViewBase64(\n viewRef: CaptureViewRef,\n options?: ScreenshotOptions\n): Promise<string | undefined> {\n await waitForLayout();\n if (!viewRef) return undefined;\n try {\n const base64 = await captureRef(viewRef, viewShotOptions('base64', options));\n return typeof base64 === 'string' ? base64 : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction withTimeout<T>(p: Promise<T>, ms: number): Promise<T> {\n return Promise.race([\n p,\n new Promise<T>((_, reject) => setTimeout(() => reject(new Error('Capture timeout')), ms)),\n ]);\n}\n\n/** Normalize URI for React Native Image: iOS uses raw path; Android needs file:// prefix. */\nfunction imageUriFromCapture(uri: string): string {\n if (uri.startsWith('data:')) return uri;\n if (uri.startsWith('file://')) return uri;\n if (uri.startsWith('/')) {\n return Platform.OS === 'android' ? 'file://' + uri : uri;\n }\n return uri;\n}\n\n/**\n * Capture the full screen. Returns data URI or file URI (both valid for Image source).\n * Tries data-uri first (displays reliably in Image); falls back to tmpfile.\n */\nexport async function captureScreenDataUri(\n options?: ScreenshotOptions\n): Promise<string | undefined> {\n await waitForLayout();\n for (const resultType of ['data-uri', 'tmpfile'] as const) {\n try {\n const uri = await withTimeout(\n captureScreen(viewShotOptions(resultType, options)),\n CAPTURE_TIMEOUT_MS\n );\n if (typeof uri === 'string' && uri.length > 0) {\n return imageUriFromCapture(uri);\n }\n } catch {\n // ignore capture failure and try next result type\n }\n }\n return undefined;\n}\n\n/**\n * Capture the current screen as data URI (for Image source).\n * Tries full-screen capture first (no ref needed), then ref-based if a ref is provided.\n */\nexport async function captureViewDataUri(\n viewRef?: CaptureViewRef | null,\n options?: ScreenshotOptions\n): Promise<string | undefined> {\n try {\n let dataUri = await captureScreenDataUri(options);\n if (!dataUri && viewRef?.current) {\n dataUri = await doCapture(viewRef, options);\n if (!dataUri) {\n await new Promise(r => setTimeout(r, 150));\n dataUri = await doCapture(viewRef, options);\n }\n }\n return dataUri;\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 * Success card (native) — mirrors the OC-BugReporter \"Report filed\" state.\n */\n\nimport React from 'react';\n\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport Svg, { Path } from 'react-native-svg';\n\nimport type { BugReporterTheme } from '@outcode/bug-reporter-core';\n\nexport interface SuccessCardProps {\n t: BugReporterTheme;\n ticket?: string;\n ticketTitle: string;\n backendName: string;\n onDone: () => void;\n}\n\nexport function SuccessCard({ t, ticket, ticketTitle, backendName, onDone }: SuccessCardProps) {\n return (\n <View style={styles.backdrop}>\n <View style={[styles.card, { backgroundColor: t.panel, borderColor: t.border }]}>\n <View style={[styles.check, { backgroundColor: t.okBg }]}>\n <Svg width={27} height={27} viewBox=\"0 0 24 24\" fill=\"none\"><Path d=\"M4 13l5 5L20 6\" stroke={t.ok} strokeWidth={2.6} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></Svg>\n </View>\n <Text style={[styles.title, { color: t.text }]}>Report filed</Text>\n <Text style={[styles.sub, { color: t.muted }]}>Tracked in {backendName} automatically.</Text>\n {ticket ? (\n <View style={[styles.ticket, { backgroundColor: t.surface, borderColor: t.border }]}>\n <Text style={{ color: t.accent, fontWeight: '600', fontSize: 13 }}>{ticket}</Text>\n <Text style={{ color: t.faint }}>·</Text>\n <Text numberOfLines={1} style={{ color: t.muted, fontSize: 13, flexShrink: 1 }}>{ticketTitle}</Text>\n </View>\n ) : null}\n <View style={{ flexDirection: 'row', gap: 8, marginTop: ticket ? 0 : 16 }}>\n <TouchableOpacity onPress={onDone} style={[styles.btn, { borderWidth: 1, borderColor: t.border, backgroundColor: t.surface }]}>\n <Text style={{ color: t.text, fontSize: 13.5, fontWeight: '600' }}>Done</Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: { flex: 1, alignItems: 'center', justifyContent: 'center', backgroundColor: 'rgba(8,10,18,0.55)', padding: 24 },\n card: { width: 312, maxWidth: '100%', borderWidth: 1, borderRadius: 18, padding: 26, alignItems: 'center' },\n check: { width: 54, height: 54, borderRadius: 27, alignItems: 'center', justifyContent: 'center', marginBottom: 15 },\n title: { fontSize: 17, fontWeight: '600' },\n sub: { fontSize: 13, marginTop: 5, textAlign: 'center', lineHeight: 19 },\n ticket: { flexDirection: 'row', alignItems: 'center', gap: 9, marginVertical: 16, paddingVertical: 11, paddingHorizontal: 11, borderWidth: 1, borderRadius: 10, alignSelf: 'stretch', justifyContent: 'center' },\n btn: { flex: 1, paddingVertical: 11, borderRadius: 10, alignItems: 'center' },\n});\n","/**\n * Bug reporter (native) — floating button + capture→annotate→form→done flow,\n * mirroring the OC-BugReporter design. Orchestrates the step state machine and\n * hosts the themed overlays (annotate editor, bottom-sheet form, success card).\n */\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n Animated,\n Appearance,\n Dimensions,\n Easing,\n Modal,\n PanResponder,\n PixelRatio,\n Platform,\n StyleSheet,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport Svg, { Circle, Path } from 'react-native-svg';\n\nimport type {\n BugReporterConfig,\n ReportSeverity,\n ReportType,\n SubmitReportOptions,\n} from '@outcode/bug-reporter-core';\nimport { getReportQueue, normalizeContext, resolveTheme, submitReport } from '@outcode/bug-reporter-core';\n\nimport { AnnotateOverlay } from './AnnotateOverlay';\nimport { useBugReporterCaptureRef } from './BugReporterCaptureRefContext';\nimport { BugReportForm, type MetaRow } from './BugReportForm';\nimport { captureViewDataUri, dataUrlToBase64, type CaptureViewRef } from './captureView';\nimport { SuccessCard } from './SuccessCard';\n\ntype Step = 'idle' | 'capturing' | 'annotate' | 'form' | 'submitting' | 'done';\n\nexport interface BugReporterButtonProps {\n config: BugReporterConfig;\n captureRef?: CaptureViewRef;\n label?: string;\n}\n\nfunction buildMeta(config: BugReporterConfig): MetaRow[] {\n const rows: MetaRow[] = [];\n rows.push({ label: 'Platform', value: `${Platform.OS} ${String(Platform.Version)}` });\n rows.push({ label: 'Release', value: config.appVersion ? `${config.appName}@${config.appVersion}` : config.appName });\n const di = (config.deviceInfo ?? {}) as Record<string, unknown>;\n if (di.model) rows.push({ label: 'Device', value: String(di.model) });\n const win = Dimensions.get('window');\n const scr = Dimensions.get('screen');\n rows.push({ label: 'Viewport', value: `${Math.round(win.width)} × ${Math.round(win.height)}` });\n rows.push({ label: 'Screen', value: `${Math.round(scr.width)} × ${Math.round(scr.height)} @${PixelRatio.get()}x` });\n rows.push({ label: 'Font scale', value: String(PixelRatio.getFontScale()) });\n rows.push({ label: 'Orientation', value: win.width > win.height ? 'landscape' : 'portrait' });\n const scheme = Appearance.getColorScheme();\n if (scheme) rows.push({ label: 'Scheme', value: scheme });\n try {\n const opts = Intl.DateTimeFormat().resolvedOptions();\n if (opts.locale) rows.push({ label: 'Language', value: opts.locale });\n if (opts.timeZone) rows.push({ label: 'Timezone', value: opts.timeZone });\n } catch {\n /* Intl unavailable */\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, captureRef, label = 'Report a bug' }: BugReporterButtonProps) {\n const theme = useMemo(() => resolveTheme(config.theme), [config.theme]);\n const backendName = config.backendName ?? 'ClickUp';\n const contextRef = useBugReporterCaptureRef();\n const effectiveRef = captureRef ?? contextRef;\n\n const [step, setStep] = useState<Step>('idle');\n const [flash, setFlash] = useState(false);\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 const ping = useRef(new Animated.Value(0)).current;\n useEffect(() => {\n const loop = Animated.loop(\n Animated.timing(ping, { toValue: 1, duration: 1900, easing: Easing.out(Easing.ease), useNativeDriver: true })\n );\n loop.start();\n return () => loop.stop();\n }, [ping]);\n\n // Draggable FAB (snaps to the nearest edge on release, like AssistiveTouch).\n const initial = Dimensions.get('window');\n const pan = useRef(new Animated.ValueXY({ x: initial.width - FAB_SIZE - 22, y: initial.height - FAB_SIZE - 120 })).current;\n const dragging = useRef(false);\n const openRef = useRef<() => void>(() => {});\n const fabPan = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => true,\n onMoveShouldSetPanResponder: (_e, g) => Math.abs(g.dx) > 5 || Math.abs(g.dy) > 5,\n onPanResponderGrant: () => {\n dragging.current = false;\n pan.extractOffset();\n },\n onPanResponderMove: (_e, g) => {\n if (Math.abs(g.dx) > 5 || Math.abs(g.dy) > 5) dragging.current = true;\n pan.setValue({ x: g.dx, y: g.dy });\n },\n onPanResponderRelease: () => {\n pan.flattenOffset();\n if (!dragging.current) {\n openRef.current();\n return;\n }\n const win = Dimensions.get('window');\n const cx = (pan.x as unknown as { _value: number })._value;\n const cy = (pan.y as unknown as { _value: number })._value;\n const targetX = cx + FAB_SIZE / 2 < win.width / 2 ? 22 : win.width - FAB_SIZE - 22;\n const targetY = Math.max(60, Math.min(cy, win.height - FAB_SIZE - 90));\n Animated.spring(pan, { toValue: { x: targetX, y: targetY }, useNativeDriver: false, friction: 7, tension: 40 }).start();\n },\n })\n ).current;\n\n useEffect(() => {\n void getReportQueue(config)?.flush(config);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const queue = getReportQueue(config);\n\n const reset = () => {\n setStep('idle');\n setFlash(false);\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 captureViewDataUri(effectiveRef ?? undefined, config.screenshot);\n setScreenshot(shot);\n setFlash(true);\n setTimeout(() => {\n setFlash(false);\n setStep('annotate');\n }, 220);\n };\n openRef.current = open;\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 (e.g. network type via expo-network/NetInfo).\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?.startsWith('data:') ? dataUrlToBase64(shot) : undefined,\n isReportingProblem: true,\n severity,\n type,\n context: meta.map(m => ({ label: m.label, value: m.value })),\n metadata: { platform: Platform.OS, osVersion: Platform.Version?.toString() },\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 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 pingStyle = {\n transform: [{ scale: ping.interpolate({ inputRange: [0, 1], outputRange: [1, 1.9] }) }],\n opacity: ping.interpolate({ inputRange: [0, 0.8, 1], outputRange: [0.55, 0, 0] }),\n };\n\n return (\n <>\n {/* FAB (draggable, snaps to edge) */}\n {step === 'idle' && (\n <Animated.View\n accessibilityRole=\"button\"\n accessibilityLabel={label}\n {...fabPan.panHandlers}\n style={[styles.fab, { backgroundColor: theme.accent, transform: pan.getTranslateTransform() }]}\n >\n <Animated.View style={[styles.ping, { borderColor: theme.accent }, pingStyle]} pointerEvents=\"none\" />\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 </Animated.View>\n )}\n\n {/* capture flash */}\n {flash && (\n <Modal transparent animationType=\"none\">\n <View style={styles.flash} pointerEvents=\"none\" />\n </Modal>\n )}\n\n {/* annotate */}\n {step === 'annotate' && screenshot && (\n <AnnotateOverlay t={theme} visible src={screenshot} onCancel={reset} onContinue={onContinue} />\n )}\n\n {/* form / submitting (bottom sheet) */}\n <Modal visible={step === 'form' || step === 'submitting'} transparent animationType=\"slide\" onRequestClose={reset}>\n <View style={styles.sheetBackdrop}>\n <TouchableOpacity style={StyleSheet.absoluteFill} activeOpacity={1} onPress={reset} />\n <View style={styles.sheet}>\n <BugReportForm\n t={theme}\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={step === '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 </View>\n </View>\n </Modal>\n\n {/* done */}\n <Modal visible={step === 'done'} transparent animationType=\"fade\" onRequestClose={reset}>\n <SuccessCard\n t={theme}\n ticket={ticket}\n ticketTitle={title.trim() || 'Untitled report'}\n backendName={backendName}\n onDone={reset}\n />\n </Modal>\n </>\n );\n}\n\nconst FAB_SIZE = 56;\nconst styles = StyleSheet.create({\n fab: { position: 'absolute', top: 0, left: 0, width: FAB_SIZE, height: FAB_SIZE, borderRadius: FAB_SIZE / 2, alignItems: 'center', justifyContent: 'center', shadowColor: '#000', shadowOffset: { width: 0, height: 10 }, shadowOpacity: 0.34, shadowRadius: 18, elevation: 8, zIndex: 9999 },\n ping: { position: 'absolute', width: FAB_SIZE, height: FAB_SIZE, borderRadius: FAB_SIZE / 2, borderWidth: 2 },\n flash: { flex: 1, backgroundColor: '#fff' },\n sheetBackdrop: { flex: 1, justifyContent: 'flex-end', backgroundColor: 'rgba(8,10,18,0.5)' },\n sheet: { height: '92%', borderTopLeftRadius: 26, borderTopRightRadius: 26, overflow: 'hidden' },\n});\n"]}