page scaffolding and theme change

This commit is contained in:
Joe Arndt 2026-02-23 22:39:10 -06:00
parent 598377d8d0
commit 3443a39ab3
20 changed files with 95 additions and 39 deletions

View file

@ -1,7 +1,11 @@
<div class="app-container"> <div class="app-container">
<header class="app-header"> <header class="app-header">
<h1>Common Cents</h1> <h1>Common Cents</h1>
<h2>The common sense expense tracker.</h2> <div class="app-navigation">
@for (link of navLinks(); track link) {
<a matButton [href]="link.href">{{ link.text }}</a>
}
</div>
<app-divider /> <app-divider />
</header> </header>

View file

@ -1,6 +1,8 @@
import { Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { ExpensePage } from './pages/expenses/expense-page.component'; import { ExpensePage } from './pages/expenses/expense-page.component';
import { HomePage } from './pages/home/home-page.component'; import { HomePage } from './pages/home/home-page.component';
import { MetadataPageComponent } from './pages/metadata/metadata-page.component';
import { SettingsPageComponent } from './pages/settings/settings-page.component';
export const routes: Routes = [ export const routes: Routes = [
{ {
@ -10,5 +12,13 @@ export const routes: Routes = [
{ {
path: 'expenses', path: 'expenses',
component: ExpensePage component: ExpensePage
},
{
path: 'metadata',
component: MetadataPageComponent
},
{
path: 'settings',
component: SettingsPageComponent
} }
]; ];

View file

@ -14,19 +14,13 @@
} }
h1 { h1 {
font-size: 3.125rem; font-size: 2.5rem;
line-height: 100%; line-height: 100%;
letter-spacing: -0.125rem; letter-spacing: -0.125rem;
font-weight: 500; font-weight: 400;
margin: 0; margin: 0;
font-family: sans-serif;
} }
h2 { .app-navigation {
font-size: 1.2rem; display: flex;
line-height: 100%;
font-weight: 500;
margin: 0;
font-family: sans-serif;
font-style: italic;
} }

View file

@ -1,11 +1,36 @@
import { Component } from '@angular/core'; import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router'; import { RouterOutlet } from '@angular/router';
import { Divider } from './components/divider/divider'; import { DividerComponent } from './components/divider/divider.component';
import { MatButton } from '@angular/material/button';
interface NavLink {
text: string;
href: string;
}
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
imports: [RouterOutlet, Divider], imports: [RouterOutlet, DividerComponent, MatButton],
templateUrl: './app.html', templateUrl: './app.html',
styleUrl: './app.scss' styleUrl: './app.scss'
}) })
export class App { } export class App {
public navLinks = signal<NavLink[]>([
{
text: 'Home',
href: '/'
},
{
text: 'Expenses',
href: '/expenses'
},
{
text: 'Metadata',
href: '/metadata'
},
{
text: 'Settings',
href: '/settings'
}
]);
}

View file

@ -0,0 +1,9 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-divider',
imports: [],
templateUrl: './divider.component.html',
styleUrl: './divider.component.scss'
})
export class DividerComponent { }

View file

@ -1,9 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-divider',
imports: [],
templateUrl: './divider.html',
styleUrl: './divider.scss'
})
export class Divider { }

View file

@ -12,9 +12,8 @@
p { p {
font-size: 1.8rem; font-size: 1.8rem;
line-height: 100%; line-height: 100%;
font-weight: 200; font-weight: 400;
margin: 0; margin: 0;
font-family: sans-serif;
} }
app-divider { app-divider {

View file

@ -3,11 +3,11 @@ import { ExpenseService } from '../../services/expense.service';
import { MatTableModule } from '@angular/material/table'; import { MatTableModule } from '@angular/material/table';
import { MatCardModule } from '@angular/material/card'; import { MatCardModule } from '@angular/material/card';
import { ExpenseComponent } from '../expense/expense.component'; import { ExpenseComponent } from '../expense/expense.component';
import {Divider} from '../divider/divider'; import { DividerComponent } from '../divider/divider.component';
@Component({ @Component({
selector: 'app-expense-list', selector: 'app-expense-list',
imports: [MatTableModule, MatCardModule, ExpenseComponent, Divider], imports: [MatTableModule, MatCardModule, ExpenseComponent, DividerComponent],
templateUrl: './expense-list.component.html', templateUrl: './expense-list.component.html',
styleUrl: './expense-list.component.scss' styleUrl: './expense-list.component.scss'
}) })

View file

@ -1,7 +1,3 @@
<div class="home-container"> <div class="home-container">
<ul> <h2>The common sense expense tracker.</h2>
<li>
<a routerLink="expenses">ExpenseService</a>
</li>
</ul>
</div> </div>

View file

@ -0,0 +1,7 @@
h2 {
font-size: 1.3rem;
line-height: 100%;
font-weight: 500;
margin: 0;
font-family: sans-serif;
}

View file

@ -1,12 +1,9 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
@Component({ @Component({
selector: 'app-home', selector: 'app-home',
imports: [ imports: [],
RouterLink
],
templateUrl: './home-page.component.html', templateUrl: './home-page.component.html',
styleUrl: './home-page.component.scss', styleUrl: './home-page.component.scss'
}) })
export class HomePage { } export class HomePage { }

View file

@ -0,0 +1,3 @@
<div class="metadata-container">
Metadata page
</div>

View file

@ -0,0 +1,9 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-metadata',
imports: [],
templateUrl: './metadata-page.component.html',
styleUrl: './metadata-page.component.scss'
})
export class MetadataPageComponent { }

View file

@ -0,0 +1,3 @@
<div class="settings-container">
Settings page
</div>

View file

@ -0,0 +1,9 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-settings',
imports: [],
templateUrl: './settings-page.component.html',
styleUrl: './settings-page.component.scss'
})
export class SettingsPageComponent { }

View file

@ -10,7 +10,7 @@ html {
height: 100%; height: 100%;
@include mat.theme(( @include mat.theme((
color: ( color: (
primary: mat.$cyan-palette, primary: mat.$azure-palette,
tertiary: mat.$orange-palette, tertiary: mat.$orange-palette,
), ),
typography: Roboto, typography: Roboto,