Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 91 additions & 14 deletions projects/bmi/index.html
Original file line number Diff line number Diff line change
@@ -1,24 +1,101 @@
<!doctype html>
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BMI Calculator</title>
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="styles.css">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>

<body>
<main>
<h1>BMI Calculator</h1>
<form id="form"><input id="kg" name="kg" type="number" step="0.1" placeholder="Weight (kg)" required>
<input id="cm" name="cm" type="number" step="0.1" placeholder="Height (cm)" required>
<button type="submit">Calculate</button>
</form>
<div id="out" aria-live="polite"></div>
<p class="notes">Add validation and history with localStorage.</p>
</main>
<script type="module" src="./main.js"></script>
<div class="container">
<!-- Header -->
<div class="header">
<h1 class="main-title">BMI Calculator</h1>
<p class="subtitle">Track your Body Mass Index, monitor progress & stay healthy</p>
</div>

<!-- Main Calculator Card -->
<div class="card">
<h2 class="card-title">Calculate Your BMI</h2>

<!-- Unit Toggle -->
<div class="unit-toggle">
<button id="metricBtn" class="unit-btn active" type="button">Metric Units</button>
<button id="imperialBtn" class="unit-btn" type="button">Imperial Units</button>
</div>

<!-- Calculator Form -->
<form id="bmiForm" class="form" novalidate>
<div class="input-row">
<div class="input-group">
<label for="weightInput" class="input-label">Weight</label>
<div class="input-wrapper">
<input id="weightInput" type="number" step="0.1" placeholder="Enter weight" class="input"
aria-describedby="weightError" aria-required="true" aria-invalid="false">
<div class="input-arrows">
<div class="arrow-btn" id="weightUp">▲</div>
<div class="arrow-btn" id="weightDown">▼</div>
</div>
</div>
<div id="weightError" class="field-error" role="alert"></div>
</div>

<div class="input-group">
<label for="heightInput" class="input-label">Height</label>
<div class="input-wrapper">
<input id="heightInput" type="number" step="0.1" placeholder="Enter height" class="input"
aria-describedby="heightError" aria-required="true" aria-invalid="false">
<div class="input-arrows">
<div class="arrow-btn" id="heightUp">▲</div>
<div class="arrow-btn" id="heightDown">▼</div>
</div>
</div>
<div id="heightError" class="field-error" role="alert"></div>
</div>
</div>

<button type="submit" class="calculate-btn" id="submitBtn">Calculate</button>
</form>

<!-- Results -->
<div id="result" class="result" role="region" aria-live="polite">
<div class="result-label">Your BMI Result</div>
<div id="bmiDisplay" class="bmi-display">
<div class="bmi-content">
<div class="bmi-value" id="bmiValue"></div>
<div class="bmi-category" id="bmiCategory"></div>
<div class="bmi-range" id="bmiRange"></div>
<div class="bmi-advice" id="bmiAdvice"></div>
</div>
</div>
</div>
</div>

<!-- History Card -->
<div class="card">
<h2 class="history-title">History</h2>
<div class="history-header">
<div class="history-controls">
<div class="view-toggle">
<button id="listViewBtn" class="view-btn active" type="button">List</button>
<button id="chartViewBtn" class="view-btn" type="button">Chart</button>
</div>
<button id="clearHistory" class="clear-btn" type="button">Clear All</button>
</div>
</div>

<!-- History List View -->
<div id="historyList" class="history-list"></div>

<!-- Chart View -->
<div id="chartContainer" class="chart-container"></div>
</div>
</div>

<script src="main.js"></script>
</body>

</html>
Loading