2025-10-11 18:32:05 +00:00

354 lines
7.1 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Invoice {{invoiceNumber}}</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Poppins', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
padding: 40px;
color: #1a1a1a;
line-height: 1.6;
max-width: 900px;
margin: 0 auto;
background-color: #fff;
}
.header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 48px;
padding-bottom: 24px;
border-bottom: 3px solid #002366; /* navy blue */
}
.company-info {
flex: 1;
}
.company-name {
font-size: 28px;
font-weight: 700;
color: #002366;
margin-bottom: 8px;
}
.company-details {
font-size: 13px;
color: #666;
line-height: 1.8;
}
.invoice-title {
text-align: right;
flex: 1;
font-family: 'Poppins', sans-serif;
}
.invoice-title h1 {
font-size: 32px; /* slightly smaller than before */
font-weight: 700;
color: #002366;
margin-bottom: 8px;
}
.invoice-number {
font-size: 16px;
color: #666;
font-weight: 500;
}
.invoice-meta {
display: flex;
justify-content: space-between;
margin-bottom: 40px;
gap: 24px;
}
.meta-section {
flex: 1;
}
.meta-section h3 {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 1px;
color: #999;
margin-bottom: 12px;
font-weight: 600;
}
.meta-content {
font-size: 14px;
color: #333;
}
.meta-content div {
margin-bottom: 4px;
}
.customer-name {
font-weight: 600;
font-size: 16px;
color: #1a1a1a;
margin-bottom: 6px;
}
.dates-section {
text-align: right;
}
.date-item {
margin-bottom: 8px;
}
.date-label {
font-size: 12px;
color: #999;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.date-value {
font-size: 14px;
color: #333;
font-weight: 500;
text-transform: capitalize; /* titlecase for status */
}
.items-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 32px;
}
.items-table thead {
background-color: #e6f0ff; /* lighter navy */
}
.items-table th {
padding: 14px 12px;
text-align: left;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 1px;
color: #666;
font-weight: 600;
border-bottom: 2px solid #002366;
}
.items-table th:last-child,
.items-table td:last-child {
text-align: right;
}
.items-table tbody tr {
border-bottom: 1px solid #eee;
}
.items-table tbody tr:hover {
background-color: #fafafa;
}
.items-table td {
padding: 16px 12px;
font-size: 14px;
color: #333;
}
.item-description {
font-weight: 500;
color: #1a1a1a;
}
.totals-section {
margin-left: auto;
width: 350px;
padding: 24px;
background-color: #f9f9f9;
border-radius: 8px;
}
.total-row {
display: flex;
justify-content: space-between;
padding: 10px 0;
font-size: 14px;
}
.total-row.subtotal {
color: #666;
border-bottom: 1px solid #ddd;
}
.total-row.grand-total {
font-size: 20px;
font-weight: 700;
color: #002366;
border-top: 2px solid #002366;
padding-top: 16px;
margin-top: 8px;
}
.footer {
margin-top: 48px;
padding-top: 24px;
border-top: 1px solid #eee;
font-size: 12px;
color: #999;
text-align: center;
}
.notes-section {
margin-top: 32px;
padding: 20px;
background-color: #f9f9f9;
border-left: 4px solid #002366;
border-radius: 4px;
}
.notes-section h3 {
font-size: 14px;
text-transform: uppercase;
letter-spacing: 1px;
color: #666;
margin-bottom: 8px;
font-weight: 600;
}
.notes-section p {
font-size: 13px;
color: #555;
line-height: 1.7;
}
@media print {
body {
padding: 20px;
}
.items-table tbody tr:hover {
background-color: transparent;
}
}
</style>
</head>
<body>
<div class="header">
<div class="company-info">
<div class="company-name">{{companyName}}</div>
<div class="company-details">
{{#companyAddress}}
<div>{{companyAddress}}</div>
{{/companyAddress}}
{{#companyEmail}}
<div>{{companyEmail}}</div>
{{/companyEmail}}
{{#companyPhone}}
<div>{{companyPhone}}</div>
{{/companyPhone}}
</div>
</div>
<div class="invoice-title">
<h1><strong>Invoice</strong></h1>
<div class="invoice-number">#{{invoiceNumber}}</div>
</div>
</div>
<div class="invoice-meta">
<div class="meta-section">
<h3>Bill To</h3>
<div class="meta-content">
<div class="customer-name">{{customerName}}</div>
{{#customerAddress}}
<div>{{customerAddress}}</div>
{{/customerAddress}}
{{#customerEmail}}
<div>{{customerEmail}}</div>
{{/customerEmail}}
</div>
</div>
<div class="meta-section dates-section">
<div class="date-item">
<div class="date-label">Issue Date</div>
<div class="date-value">{{issueDate}}</div>
</div>
{{#dueDate}}
<div class="date-item">
<div class="date-label">Due Date</div>
<div class="date-value">{{dueDate}}</div>
</div>
{{/dueDate}}
{{#status}}
<div class="date-item">
<div class="date-label">Status</div>
<div class="date-value">{{status}}</div>
</div>
{{/status}}
</div>
</div>
<table class="items-table">
<thead>
<tr>
<th>Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
{{#items}}
<tr>
<td class="item-description">{{description}}</td>
<td>{{quantity}}</td>
<td>{{unitPrice}}</td>
<td>{{lineTotal}}</td>
</tr>
{{/items}}
</tbody>
</table>
<div class="totals-section">
{{#subtotal}}
<div class="total-row subtotal">
<span>Subtotal</span>
<span>{{subtotal}}</span>
</div>
{{/subtotal}}
{{#tax}}
<div class="total-row">
<span>Tax</span>
<span>{{tax}}</span>
</div>
{{/tax}}
<div class="total-row grand-total">
<span>Total</span>
<span>{{total}} {{currency}}</span>
</div>
</div>
{{#notes}}
<div class="notes-section">
<h3>Notes</h3>
<p>{{notes}}</p>
</div>
{{/notes}}
<div class="footer">
<p>Thank you for your business!</p>
<p>{{companyName}} Generated on {{issueDate}}</p>
</div>
</body>
</html>