BillTracker/legacy/index.html

235 lines
9.1 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bill Tracker</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<div id="app">
<nav class="sidebar">
<div class="logo">
<span class="logo-icon">$</span>
<span class="logo-text">BillTracker</span>
</div>
<ul class="nav-links">
<li><a href="#tracker" class="nav-link active" data-page="tracker">
<span class="nav-icon">&#9776;</span> Tracker
</a></li>
<li><a href="#bills" class="nav-link" data-page="bills">
<span class="nav-icon">&#9679;</span> Bills
</a></li>
<li><a href="#categories" class="nav-link" data-page="categories">
<span class="nav-icon">&#9670;</span> Categories
</a></li>
<li><a href="#settings" class="nav-link" data-page="settings">
<span class="nav-icon">&#9881;</span> Settings
</a></li>
<li><a href="#status" class="nav-link" data-page="status">
<span class="nav-icon">&#9210;</span> Status
</a></li>
</ul>
<div class="sidebar-footer">
<span id="sidebar-username"></span>
<a href="#" id="sidebar-logout" class="nav-link sidebar-logout">
<span class="nav-icon">&#8592;</span> Sign Out
</a>
</div>
</nav>
<main class="main-content">
<div id="page-tracker" class="page active"></div>
<div id="page-bills" class="page"></div>
<div id="page-categories" class="page"></div>
<div id="page-settings" class="page"></div>
<div id="page-status" class="page"></div>
</main>
</div>
<!-- Bill Modal -->
<div id="bill-modal" class="modal hidden">
<div class="modal-overlay"></div>
<div class="modal-box">
<div class="modal-header">
<h2 id="bill-modal-title">Add Bill</h2>
<button class="modal-close" id="bill-modal-close">&times;</button>
</div>
<form id="bill-form" class="modal-form">
<input type="hidden" id="bill-id">
<div class="form-grid">
<div class="form-group">
<label for="bill-name">Name *</label>
<input type="text" id="bill-name" placeholder="e.g. Electricity" required>
</div>
<div class="form-group">
<label for="bill-category">Category</label>
<select id="bill-category">
<option value="">— none —</option>
</select>
</div>
<div class="form-group">
<label for="bill-due-day">Due Day (131) *</label>
<input type="number" id="bill-due-day" min="1" max="31" required>
</div>
<div class="form-group">
<label for="bill-expected">Expected Amount ($)</label>
<input type="number" id="bill-expected" min="0" step="0.01" placeholder="0.00">
</div>
<div class="form-group">
<label for="bill-interest-rate">Interest rate (APR %)</label>
<input type="number" id="bill-interest-rate" min="0" max="100" step="0.01" placeholder="Optional">
</div>
<div class="form-group">
<label for="bill-cycle">Billing Cycle</label>
<select id="bill-cycle">
<option value="monthly">Monthly</option>
<option value="quarterly">Quarterly</option>
<option value="annually">Annually</option>
<option value="irregular">Irregular</option>
</select>
</div>
<div class="form-group checkbox-group">
<label>
<input type="checkbox" id="bill-autopay"> Autopay / Autodraft
</label>
<label>
<input type="checkbox" id="bill-2fa"> Has 2FA
</label>
</div>
<div class="form-group">
<label for="bill-website">Website</label>
<input type="text" id="bill-website" placeholder="https://...">
</div>
<div class="form-group">
<label for="bill-username">Username / Email</label>
<input type="text" id="bill-username">
</div>
<div class="form-group">
<label for="bill-account-info">Account Info</label>
<input type="text" id="bill-account-info" placeholder="Last 4 digits, account #...">
</div>
<div class="form-group full-width">
<label for="bill-notes">Notes</label>
<textarea id="bill-notes" rows="2"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" id="bill-modal-cancel" class="btn btn-ghost">Cancel</button>
<button type="submit" class="btn btn-primary">Save Bill</button>
</div>
</form>
</div>
</div>
<!-- Payment Modal -->
<div id="payment-modal" class="modal hidden">
<div class="modal-overlay"></div>
<div class="modal-box modal-box-sm">
<div class="modal-header">
<h2 id="payment-modal-title">Edit Payment</h2>
<button class="modal-close" id="payment-modal-close">&times;</button>
</div>
<form id="payment-form" class="modal-form">
<input type="hidden" id="payment-bill-id">
<input type="hidden" id="payment-id">
<div class="form-group">
<label for="payment-amount">Amount ($) *</label>
<input type="number" id="payment-amount" min="0" step="0.01" required>
</div>
<div class="form-group">
<label for="payment-date">Paid Date *</label>
<input type="date" id="payment-date" required>
</div>
<div class="form-group">
<label for="payment-method">Method</label>
<select id="payment-method">
<option value=""></option>
<option value="bank">Bank Transfer</option>
<option value="card">Card</option>
<option value="autopay">Autopay</option>
<option value="check">Check</option>
<option value="cash">Cash</option>
</select>
</div>
<div class="form-group">
<label for="payment-notes">Notes</label>
<input type="text" id="payment-notes">
</div>
<!-- UPDATED FOOTER -->
<div class="modal-footer">
<button
type="button"
id="payment-delete"
class="btn btn-danger"
style="margin-right:auto"
title="Removes this payment record and marks the bill as unpaid. The bill itself is NOT deleted.">
Remove Payment
</button>
<button type="button" id="payment-modal-cancel" class="btn btn-ghost">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button>
</div>
<!-- Privacy notice — shown on first login -->
<div id="privacy-overlay" class="modal hidden">
<div class="modal-overlay"></div>
<div class="modal-box modal-box-sm" style="text-align:left">
<div style="font-size:22px;margin-bottom:12px">&#128274;</div>
<h2 style="font-size:17px;margin-bottom:12px">Your data is private</h2>
<p style="color:var(--text-muted);font-size:14px;line-height:1.6;margin-bottom:14px">
The <strong>admin account</strong> on this system can only:
</p>
<ul style="margin:0 0 16px 20px;color:var(--text-muted);font-size:14px;line-height:1.9">
<li>Create new user accounts</li>
<li>Reset your password if you're locked out</li>
</ul>
<p style="color:var(--text-muted);font-size:14px;line-height:1.6;margin-bottom:20px">
The admin <strong>cannot</strong> view, edit, or access your bills,
payments, or any financial data — by design.
</p>
<button class="btn btn-primary" id="privacy-ack-btn" style="width:100%">Got it, take me to my tracker</button>
</div>
</div>
<!-- Password change — shown when must_change_password is set -->
<div id="change-password-overlay" class="modal hidden">
<div class="modal-overlay"></div>
<div class="modal-box modal-box-sm">
<h2 style="margin-bottom:6px">Change Your Password</h2>
<p style="color:var(--text-muted);font-size:13px;margin-bottom:18px">
Your password was reset by the admin. Please set a new one to continue.
</p>
<form id="change-password-form">
<div class="form-group" style="margin-bottom:12px">
<label for="cp-new">New Password</label>
<input type="password" id="cp-new" minlength="8" required placeholder="At least 8 characters">
</div>
<div class="form-group" style="margin-bottom:16px">
<label for="cp-confirm">Confirm Password</label>
<input type="password" id="cp-confirm" minlength="8" required>
</div>
<div id="cp-error" style="color:var(--danger);font-size:13px;margin-bottom:10px;min-height:18px"></div>
<button type="submit" class="btn btn-primary" style="width:100%">Set New Password</button>
</form>
</div>
</div>
<script src="/js/api.js"></script>
<script src="/js/tracker.js"></script>
<script src="/js/bills.js"></script>
<script src="/js/categories.js"></script>
<script src="/js/settings.js"></script>
<script src="/js/status.js"></script>
<script src="/js/app.js"></script>
</body>
</html>