MAESTRO: disable analyse when input empty

This commit is contained in:
Mariusz Banach
2026-02-18 00:44:30 +01:00
parent 180084ad84
commit e669a16d02
2 changed files with 4 additions and 7 deletions

View File

@@ -40,7 +40,7 @@ Note: `npx vitest run src/__tests__/AnalyseButton.test.tsx` passes; Vitest emits
- [x] All vitest tests pass: `npx vitest run src/__tests__/HeaderInput.test.tsx src/__tests__/FileDropZone.test.tsx src/__tests__/AnalyseButton.test.tsx` - [x] All vitest tests pass: `npx vitest run src/__tests__/HeaderInput.test.tsx src/__tests__/FileDropZone.test.tsx src/__tests__/AnalyseButton.test.tsx`
- [x] User can paste text into the header input area - [x] User can paste text into the header input area
- [x] User can drop an EML/TXT file and see it auto-populate the input - [x] User can drop an EML/TXT file and see it auto-populate the input
- [ ] Analyse button is disabled when input is empty - [x] Analyse button is disabled when input is empty
- [ ] Ctrl+Enter keyboard shortcut triggers the analyse action - [ ] Ctrl+Enter keyboard shortcut triggers the analyse action
- [ ] Dark hacker theme is visible with correct colour palette - [ ] Dark hacker theme is visible with correct colour palette
- [ ] Validation shows user-friendly errors for empty and oversized input - [ ] Validation shows user-friendly errors for empty and oversized input

View File

@@ -2,11 +2,13 @@
import { useState } from "react"; import { useState } from "react";
import AnalyseButton from "../components/AnalyseButton";
import FileDropZone from "../components/FileDropZone"; import FileDropZone from "../components/FileDropZone";
import HeaderInput from "../components/HeaderInput"; import HeaderInput from "../components/HeaderInput";
export default function Home() { export default function Home() {
const [headerInput, setHeaderInput] = useState(""); const [headerInput, setHeaderInput] = useState("");
const hasHeaderInput = headerInput.trim().length > 0;
return ( return (
<main className="min-h-screen bg-background text-text"> <main className="min-h-screen bg-background text-text">
@@ -42,12 +44,7 @@ export default function Home() {
heuristics, and delivery path insights. heuristics, and delivery path insights.
</p> </p>
<div className="mt-4 flex flex-col gap-3 sm:flex-row sm:items-center"> <div className="mt-4 flex flex-col gap-3 sm:flex-row sm:items-center">
<button <AnalyseButton hasInput={hasHeaderInput} onAnalyse={() => undefined} />
type="button"
className="flex-1 rounded-full bg-accent px-5 py-3 text-sm font-semibold text-background transition hover:brightness-110 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info"
>
Analyse Headers
</button>
<div className="flex items-center gap-2 text-xs text-text/60"> <div className="flex items-center gap-2 text-xs text-text/60">
<kbd className="rounded-md border border-info/30 bg-background/40 px-2 py-1 font-mono"> <kbd className="rounded-md border border-info/30 bg-background/40 px-2 py-1 font-mono">
Ctrl Ctrl