diff --git a/src/pages/Viewer.tsx b/src/pages/Viewer.tsx index 3c4cd17..a20eb74 100644 --- a/src/pages/Viewer.tsx +++ b/src/pages/Viewer.tsx @@ -144,6 +144,8 @@ const Viewer = () => { type="file" accept={ACCEPTED_EXTENSIONS} className="hidden" + title="Selecionar arquivo de maquete para upload" + placeholder="Upload de maquete" onChange={handleFileUpload} /> @@ -256,7 +258,7 @@ const Viewer = () => { ); }; -function InfoItem({ icon: Icon, label, value }: { icon: any; label: string; value: string }) { +function InfoItem({ icon: Icon, label, value }: { icon: React.ComponentType<{ className?: string }>; label: string; value: string }) { return (
diff --git a/src/pages/XRSession.tsx b/src/pages/XRSession.tsx index cac2c2d..de7d61d 100644 --- a/src/pages/XRSession.tsx +++ b/src/pages/XRSession.tsx @@ -841,7 +841,7 @@ const XRSession = () => { {/* Floating DOM HUD overlay — only visible OUTSIDE passthrough. Inside AR, the DOM is occluded by the headset compositor; the in-world XRHudInWorld replaces it. */} -
+
setFreeMove(!freeMove)} @@ -857,7 +857,7 @@ const XRSession = () => { {/* Hidden ShareButton instance — registers window.__trackSteelStartLive so the in-world Share tab can trigger broadcasts. Also keeps live state in sync with the in-XR HUD. */} -
+
setLiveCode(h?.code ?? null)} onViewerCountChange={setLiveViewers}