[TSC-3] Build responsive HTML structure with semantic markup
Create semantic HTML5 structure for calculator interface: - index.html: two labeled number inputs, four operation buttons, calculate/clear buttons, result <output>, and error <p role=alert> with aria-live regions for screen-reader accessibility - CLAUDE.md: updated project structure and architecture notes
This commit is contained in:
parent
15b0201696
commit
bca10fcd13
34
CLAUDE.md
Normal file
34
CLAUDE.md
Normal file
@ -0,0 +1,34 @@
|
||||
# Simple Calculator
|
||||
|
||||
Greenfield project. Implementation is driven by the Vexa AI-SDLC pipeline (Jira project TSC).
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
/
|
||||
├── index.html # Calculator UI (semantic HTML5)
|
||||
├── README.md # Project overview
|
||||
└── CLAUDE.md # This file
|
||||
```
|
||||
|
||||
## Build Commands
|
||||
|
||||
No build system has been configured yet. Update this section once a language/framework is chosen and dependencies are added.
|
||||
|
||||
## Test Commands
|
||||
|
||||
No test suite has been configured yet. Update this section once testing infrastructure is in place.
|
||||
|
||||
## Development Commands
|
||||
|
||||
No dev server or REPL is configured yet. Update this section once the implementation begins.
|
||||
|
||||
## Architecture Notes
|
||||
|
||||
- **Domain**: Simple Calculator — arithmetic operations (add, subtract, multiply, divide at minimum).
|
||||
- **Stack**: Plain HTML/CSS/JS — no framework or build step.
|
||||
- `index.html` contains the full UI structure: operand inputs, operation buttons, calculate/clear buttons, result `<output>`, and an error `<p role="alert">`.
|
||||
|
||||
## Code Style
|
||||
|
||||
No linter or formatter has been configured yet. Update this section once tooling is set up.
|
||||
54
index.html
Normal file
54
index.html
Normal file
@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Simple Calculator</title>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<h1>Simple Calculator</h1>
|
||||
|
||||
<form id="calculator-form" novalidate>
|
||||
<fieldset>
|
||||
<legend>Operands</legend>
|
||||
|
||||
<div>
|
||||
<label for="operand1">First Number</label>
|
||||
<input type="number" id="operand1" name="operand1" step="any" required aria-required="true" autocomplete="off">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="operand2">Second Number</label>
|
||||
<input type="number" id="operand2" name="operand2" step="any" required aria-required="true" autocomplete="off">
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Operation</legend>
|
||||
|
||||
<div role="group" aria-label="Select operation">
|
||||
<button type="button" name="operation" value="add" aria-pressed="false">Add (+)</button>
|
||||
<button type="button" name="operation" value="subtract" aria-pressed="false">Subtract (−)</button>
|
||||
<button type="button" name="operation" value="multiply" aria-pressed="false">Multiply (×)</button>
|
||||
<button type="button" name="operation" value="divide" aria-pressed="false">Divide (÷)</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div>
|
||||
<button type="submit" id="calculate-btn">Calculate</button>
|
||||
<button type="reset" id="clear-btn">Clear</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<section aria-live="polite" aria-atomic="true">
|
||||
<h2>Result</h2>
|
||||
<output id="result" for="operand1 operand2" aria-label="Calculation result"></output>
|
||||
</section>
|
||||
|
||||
<section aria-live="assertive" aria-atomic="true">
|
||||
<p id="error-message" role="alert" aria-label="Error message"></p>
|
||||
</section>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user