Setting up proper web application

This commit is contained in:
Tara Wilson 2025-02-04 16:30:32 -05:00
parent 7cac5b20c0
commit cf82be2b5f
62 changed files with 7564 additions and 186 deletions

13
.gitignore vendored
View File

@ -14,3 +14,16 @@
#macOS garbage
**/.DS_Store
**/node_modules/
**/.idea
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
**/source/.angular/cache

View File

@ -1,3 +0,0 @@
# web
Web site for Columbiana Troop 20

59
source/README.md Normal file
View File

@ -0,0 +1,59 @@
# Troop20web
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.0.2.
## Development server
To start a local development server, run:
```bash
ng serve
```
Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files.
## Code scaffolding
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
```bash
ng generate component component-name
```
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
```bash
ng generate --help
```
## Building
To build the project run:
```bash
ng build
```
This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed.
## Running unit tests
To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
```bash
ng test
```
## Running end-to-end tests
For end-to-end (e2e) testing, run:
```bash
ng e2e
```
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
## Additional Resources
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.

102
source/angular.json Normal file
View File

@ -0,0 +1,102 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"troop20web": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": "dist/troop20web",
"index": "src/index.html",
"browser": "src/main.ts",
"polyfills": [
"zone.js"
],
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "public"
}
],
"styles": [
"src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumError": "1MB"
},
{
"type": "anyComponentStyle",
"maximumWarning": "4kB",
"maximumError": "8kB"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "troop20web:build:production"
},
"development": {
"buildTarget": "troop20web:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": [
"zone.js",
"zone.js/testing"
],
"tsConfig": "tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "public"
}
],
"styles": [
"src/styles.scss"
],
"scripts": []
}
}
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@ -1,57 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Troop 20 - Columbiana, Ohio</title>
<link rel="icon" type="image/x-icon" href="./images/favicon.ico">
<link rel="stylesheet" href="./styles.css">
<body>
<script src="./scripts.js"></script>
<div class="parallax parallax-one">
<div class="caption">
<a href="https://www.scouting.org" target="_blank" rel="noopener noreferrer">
<img class="image" src="./images/bsa-logo.png" alt="Scouting BSA logo"/>
</a>
<a href="https://www.fortyandeight.org" target="_blank" rel="noopener noreferrer">
<img class="image" src="./images/fe-logo.png" alt="40 and 8s logo"/>
</a>
<br/> <br/>
<div class="glass">
<span class="border">Troop 20 Columbiana, Ohio</span>
</div>
</div>
</div>
<div class="spacer-block spacer-two">
Founded in 2020, and Chartered by 40 & 8s Voiture 273, Troop 20 proudly serves Columbiana, Leetonia, and East Palestine in Ohio by developing young people into tomorrow's leaders.
</div>
<div class="parallax parallax-three">
<div class="caption-lower">
<div class="glass">
<span class="border">Meetings are held on Thursdays At 7:30 PM</span>
</div>
</div>
</div>
<div class="spacer-block spacer-one">
The Troop has monthly outings which include Camping and Backpacking. The Troop also attends a week long Summer Camp Program.
</div>
<div id="last-parallax" class="parallax parallax-two">
<div class="caption-lower">
<div class="glass">
<span class="border">Join us for a new adventure!</span>
<br/>
<span class="border">44640 St RT 14, Columbiana, Ohio 44408</span>
</div>
</div>
</div>
<img id="scroll-image" class="scroll-image" src="./images/down.gif" alt="Scroll Down" />
</body>
</head>

38
source/package.json Normal file
View File

@ -0,0 +1,38 @@
{
"name": "troop20web",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test"
},
"private": true,
"dependencies": {
"@angular/animations": "^19.0.0",
"@angular/common": "^19.0.0",
"@angular/compiler": "^19.0.0",
"@angular/core": "^19.0.0",
"@angular/forms": "^19.0.0",
"@angular/platform-browser": "^19.0.0",
"@angular/platform-browser-dynamic": "^19.0.0",
"@angular/router": "^19.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.15.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^19.0.2",
"@angular/cli": "^19.0.2",
"@angular/compiler-cli": "^19.0.0",
"@types/jasmine": "~5.1.0",
"jasmine-core": "~5.4.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.6.2"
}
}

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 207 KiB

View File

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
source/public/titles/dc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

BIN
source/public/titles/pl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
source/public/titles/qm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
source/public/titles/sm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

View File

@ -1,18 +0,0 @@
// This script shows and hides the scroll indicator in the lower
// right hand corner of the page.
document.addEventListener('DOMContentLoaded', function() {
const image = document.getElementById('scroll-image');
const lastParallax = document.getElementById('last-parallax');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
image.style.display = 'none';
} else {
image.style.display = 'block'
}
});
});
observer.observe(lastParallax);
});

View File

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

View File

@ -0,0 +1,3 @@
<app-top-nav></app-top-nav>
<router-outlet></router-outlet>
<app-footer></app-footer>

View File

View File

@ -0,0 +1,19 @@
import {Component, inject} from '@angular/core';
import {RouterLink, RouterOutlet} from '@angular/router';
import {Title} from '@angular/platform-browser';
import {FooterComponent} from "./footer/footer.component";
import {TopNavComponent} from "./top-nav/top-nav.component";
@Component({
selector: 'app-root',
imports: [RouterOutlet, FooterComponent, TopNavComponent],
templateUrl: './app.component.html',
styleUrl: './app.component.scss'
})
export class AppComponent {
public titleService = inject(Title);
constructor() {
this.titleService.setTitle("Troop 20");
}
}

View File

@ -0,0 +1,8 @@
import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';
export const appConfig: ApplicationConfig = {
providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)]
};

View File

@ -0,0 +1,34 @@
import {Routes} from '@angular/router';
import {HomeComponent} from './home/home.component';
import {AboutComponent} from './about/about.component';
import {LeadershipComponent} from './leadership/leadership.component';
import {FormsComponent} from "./forms/forms.component";
import {CommitteeComponent} from "./committee/committee.component";
import {YouthLeadershipComponent} from "./youth-leadership/youth-leadership.component";
export const routes: Routes = [
{
path: '',
component: HomeComponent,
},
{
path: 'about',
component: AboutComponent,
},
{
path: 'leadership',
component: LeadershipComponent,
},
{
path: 'forms',
component: FormsComponent,
},
{
path: 'committee',
component: CommitteeComponent,
},
{
path: 'youth-leadership',
component: YouthLeadershipComponent
}
];

View File

@ -0,0 +1,62 @@
<article class="vh-100 dt w-100 bg-transparent">
<div class="dtc v-mid tc ph3 ph4-l">
<div class="dt dt--fixed">
<div class="dtc tc pv0 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/committee.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Committee">
<h1 class="f3 mb2">Richard Simpson</h1>
<h2 class="f5 fw4 gray mt0">Chartered Organization Rep</h2>
</div>
</article>
</div>
<div class="dtc tc pv0 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/committeechair.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Committee Chair">
<h1 class="f3 mb2">Rik Linebaugh</h1>
<h2 class="f5 fw4 gray mt0">Committee Chair</h2>
</div>
</article>
</div>
<div class="dtc tc pv0 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/sm.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Scoutmaster">
<h1 class="f3 mb2">Linda Linebaugh</h1>
<h2 class="f5 fw4 gray mt0">Scoutmaster</h2>
</div>
</article>
</div>
</div>
<div class="dt dt--fixed">
<div class="dtc tc pv0 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/committee.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Committee">
<h1 class="f3 mb2">Jaime Seidler</h1>
<h2 class="f5 fw4 gray mt0">Fundraising Chair</h2>
</div>
</article>
</div>
<div class="dtc tc pv0 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/committee.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Committee">
<h1 class="f3 mb2">Tara Wilson</h1>
<h2 class="f5 fw4 gray mt0">Advancement Chair</h2>
</div>
</article>
</div>
<div class="dtc tc pv0 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/committee.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Committee">
<h1 class="f3 mb2">Jessica Wilson</h1>
<h2 class="f5 fw4 gray mt0">Secretary</h2>
</div>
</article>
</div>
</div>
</div>
</article>

View File

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

View File

@ -0,0 +1,30 @@
<div class="footer">
<footer class="pv4 ph3 ph5-m ph6-l bg-near-black">
<small class="f6 db tc white">
© 2025
<b class="ttu">
Troop 2020G - Columbiana
</b>
</small>
<div class="tc mt3">
<a href="https://www.scouting.org"
target="_blank"
title="Scouting America"
class="f6 dib ph2 link white dim">
Scouting America
</a>
<a href="https://www.buckeyecouncil.org"
target="_blank"
title="Terms"
class="f6 dib ph2 link white dim">
Buckeye Council
</a>
<a href="https://www.fortyandeight.org"
target="_blank"
title="Privacy"
class="f6 dib ph2 link white dim">
40 & 8
</a>
</div>
</footer>
</div>

View File

@ -0,0 +1,6 @@
.footer {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
}

View File

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

View File

@ -0,0 +1,46 @@
<article class="vh-100 dt w-100 bg-transparent">
<div class="dtc v-mid tc ph3 ph4-l">
<article class="center mw5 mw6-ns hidden ba mv4">
<h1 class="f4 bg-near-black white mv0 pv2 ph3">Youth Application</h1>
<div class="pa3 bt bg-light-blue">
<p class="f6 f5-ns lh-copy measure mv0">
<a href="https://filestore.scouting.org/filestore/pdf/524-406.pdf?_gl=1*wtt3bs*_ga*MTM2MjI3NzIuMTY3NTI3NDg5MQ..*_ga_20G0JHESG4*MTY3OTUyNDgwMi4xMDAuMS4xNjc5NTI1MzM5LjU2LjAuMA..&_ga=2.6189623.583820647.1679520579-13622772.1675274891" target="_blank">
Download and fill out the form
</a>
</p>
</div>
</article>
<article class="center mw5 mw6-ns hidden ba mv4">
<h1 class="f4 bg-near-black white mv0 pv2 ph3">Adult Leader Application</h1>
<div class="pa3 bt bg-light-blue">
<p class="f6 f5-ns lh-copy measure mv0">
<a href="https://filestore.scouting.org/filestore/pdf/524-501.pdf" target="_blank">
Download and fill out the form
</a>
</p>
</div>
</article>
<article class="center mw5 mw6-ns hidden ba mv4">
<h1 class="f4 bg-near-black white mv0 pv2 ph3">Merit Badge Councilor Application</h1>
<div class="pa3 bt bg-light-blue">
<p class="f6 f5-ns lh-copy measure mv0">
<a href="https://filestore.scouting.org/filestore/pdf/34405.pdf?_gl=1*1hlrsjt*_ga*MTM2MjI3NzIuMTY3NTI3NDg5MQ..*_ga_20G0JHESG4*MTY3OTUyNDgwMi4xMDAuMS4xNjc5NTI1NDE2LjYwLjAuMA..&_ga=2.61297192.583820647.1679520579-13622772.1675274891" target="_blank">
Download and fill out the form
</a>
</p>
</div>
</article>
<article class="center mw5 mw6-ns hidden ba mv4">
<h1 class="f4 bg-near-black white mv0 pv2 ph3">BSA Medical Form</h1>
<div class="pa3 bt bg-light-blue">
<p class="f6 f5-ns lh-copy measure mv0">
<a href="https://filestore.scouting.org/filestore/healthsafety/pdf/680-001_abc.pdf" target="_blank">
Download and fill out the form
</a>
<br/>
Forms A, B, and C are required for Summer Camp
</p>
</div>
</article>
</div>
</article>

View File

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

View File

@ -0,0 +1,6 @@
<article class="vh-100 dt w-100 bg-transparent">
<div class="dtc v-mid tc ph3 ph4-l">
<img ngSrc="bsa-logo.png" priority height="336" width="294" alt="Scouting USA Logo"/>
<h1 class="f3 f2-m f1-l fw2 white mv3">Prepared. For life.</h1>
</div>
</article>

View File

View File

@ -0,0 +1,14 @@
import { Component } from '@angular/core';
import {NgOptimizedImage} from "@angular/common";
@Component({
selector: 'app-home',
imports: [
NgOptimizedImage
],
templateUrl: './home.component.html',
styleUrl: './home.component.scss'
})
export class HomeComponent {
}

View File

@ -0,0 +1,51 @@
<article class="vh-100 dt w-100 bg-transparent">
<div class="dtc v-mid tc ph3 ph4-l">
<div class="dt dt--fixed">
<div class="dtc tc pv4 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/sm.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Scoutmaster">
<h1 class="f4">Linda Linebaugh</h1>
<h2 class="f5">Scoutmaster</h2>
<hr class="mw3 bb bw1 b--black-10">
</div>
<p class="lh-copy measure center f6 black-70">
Linda founded Troop 20 - then Troop 40 - in 2020. She received the
<a href="https://www.scouting.org/training/resources-for-program-trainers-training-committees/woodbadge/">Wood Badge</a>
in 2025. She also finds time to be a Den Leader for Pack 16 in Columbiana where she is developing the next generation of Scouts.
</p>
</article>
</div>
<div class="dtc tc pv4 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/asm.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Assistant Scoutmaster">
<h1 class="f4">Jaime Seidler</h1>
<h2 class="f5">Assistant Scoutmaster</h2>
<hr class="mw3 bb bw1 b--black-10">
</div>
<p class="lh-copy measure center f6 black-70">
Jaime joined Troop 20 in 2023 when her daughter crossed over from Cub Scouts.
She has taken several leadership trainings and has participated in the summer camp program.
She has also accompanied the scouts on several outings, including polar bears.
</p>
</article>
</div>
<div class="dtc tc pv4 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/asm.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Assistant Scoutmaster">
<h1 class="f4">Tara Wilson</h1>
<h2 class="f5">Assistant Scoutmaster</h2>
<hr class="mw3 bb bw1 b--black-10">
</div>
<p class="lh-copy measure center f6 black-70">
Tara is a lifelong Scout, starting her journey back in the early 1990s as a Cub Scout and progressed all the way to Life Scout.
She went to the 2001 National Jamboree at Fort AP Hill, Virginia and holds a 5th year Pipestone.
She joined Troop 20 in 2025 when her daughter crossed over from Cub Scouts.
</p>
</article>
</div>
</div>
</div>
</article>

View File

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

View File

@ -0,0 +1,11 @@
<header class="bg-black-90 fixed w-100 ph3 pv3 pv4-ns ph4-m ph5-l">
<nav class="f6 fw6 ttu tracked">
<a class="link dim white dib mr3" [routerLink]="['/']" title="Home">Home</a>
<a class="link dim white dib mr3" [routerLink]="['/about']" title="About">About</a>
<a class="link dim white dib mr3" [routerLink]="['/youth-leadership']" title="Youth Leadership">Youth Leadership</a>
<a class="link dim white dib mr3" [routerLink]="['/leadership']" title="Leaders">Adult Leadership</a>
<a class="link dim white dib mr3" [routerLink]="['/committee']" title="Committee">Committee</a>
<a class="link dim white dib mr3" [routerLink]="['forms']" title="Forms">Forms</a>
<a class="link dim white dib mr3" href="mailto:troop2020g@gmail.com" title="Contact Us">Contact Us</a>
</nav>
</header>

View File

@ -0,0 +1,14 @@
import {Component} from '@angular/core';
import {RouterLink} from "@angular/router";
@Component({
selector: 'app-top-nav',
imports: [
RouterLink
],
templateUrl: './top-nav.component.html',
styleUrl: './top-nav.component.scss'
})
export class TopNavComponent {
}

View File

@ -0,0 +1,88 @@
<article class="vh-100 dt w-100 bg-transparent">
<div class="dtc v-mid tc ph3 ph4-l">
<div class="cf">
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/spl.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Juliahna Seidler</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/aspl.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Kenzie Witherow</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/oeg.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Carlie Sorrell</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/qm.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Ella Mercer</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/scribe.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Nora Wilson</h1>
</div>
</article>
</div>
</div>
<div class="cf">
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/pl.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Avery Elliot</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/pl.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Locklyn Linebaugh</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/historian.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Natalie Sorrell</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/librarian.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Kenzie Elliot</h1>
</div>
</article>
</div>
<div class="fl w-20 tc pv1 bg-transparent">
<article class="mw5 center bg-light-blue br3 pa3 pa4-ns mv3 ba b--black-10">
<div class="tc">
<img src="titles/dc.png" class="br-100 h4 w4 dib ba b--black-05 pa2" title="Senior Patrol Leader">
<h1 class="f3 mb2">Locklyn Linebaugh</h1>
</div>
</article>
</div>
</div>
</div>
</article>

View File

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

14
source/src/index.html Normal file
View File

@ -0,0 +1,14 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Troop20web</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://unpkg.com/tachyons@4.12.0/css/tachyons.min.css"/>
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root></app-root>
</body>
</html>

6
source/src/main.ts Normal file
View File

@ -0,0 +1,6 @@
import { bootstrapApplication } from '@angular/platform-browser';
import { appConfig } from './app/app.config';
import { AppComponent } from './app/app.component';
bootstrapApplication(AppComponent, appConfig)
.catch((err) => console.error(err));

7
source/src/styles.scss Normal file
View File

@ -0,0 +1,7 @@
/* You can add global styles to this file, and also import other style files */
body, html {
height: 100%;
margin: 0;
background-image: url('https://images.unsplash.com/photo-1505490096310-204ef067fe6b?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D');
}

View File

@ -1,108 +0,0 @@
.parallax {
/* Create the parallax scrolling effect */
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
height: 100%;
}
.parallax-one {
background-image: url('https://images.unsplash.com/photo-1505490096310-204ef067fe6b?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D');
}
.parallax-two {
background-image: url('https://images.unsplash.com/photo-1566679056462-2075774c8c07?q=80&w=3130&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D');
}
.parallax-three {
background-image: url('https://images.unsplash.com/photo-1469433791803-c2719135f970?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D');
}
.glass {
backdrop-filter: blur(6px) saturate(200%);
-webkit-backdrop-filter: blur(6px) saturate(200%);
background-color: rgba(17, 25, 40, 0.6);
border: 0px solid rgba(255, 255, 255, 0.125);
}
.spacer-block {
position: relative;
font-size: 25px;
text-align: center;
padding: 10px;
}
.spacer-one {
background-color: #B39475;
}
.spacer-two {
background-color: #9AB3D5;
}
.image {
height: 250px;
width: auto;
}
.scroll-image {
position: fixed;
right: 0px;
bottom: 0px;
margin-bottom: 5px;
margin-right: 5px;
display: block;
}
.glass {
backdrop-filter: blur(6px) saturate(200%);
-webkit-backdrop-filter: blur(6px) saturate(200%);
background-color: rgba(0, 0, 0, 0.65);
border: 1px solid rgba(255, 255, 255, 0.125);
}
.caption {
position: relative;
left: 0;
top: 25%;
width: 100%;
text-align: center;
text-wrap: inherit;
}
.caption-lower {
position: relative;
left: 0;
top: 45%;
width: 100%;
text-align: center;
text-wrap: inherit;
}
.caption span.border {
font-size: 25px;
text-wrap: inherit;
color: #fff;
}
.caption-lower span.border {
font-size: 25px;
text-wrap: inherit;
color: #fff;
}
body, html {
height: 100%;
margin: 0;
}
@media only screen and (max-device-width: 500px) {
.parallax {
background-attachment: scroll;
}
.caption {
top: 5%;
}
}

15
source/tsconfig.app.json Normal file
View File

@ -0,0 +1,15 @@
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
},
"files": [
"src/main.ts"
],
"include": [
"src/**/*.d.ts"
]
}

27
source/tsconfig.json Normal file
View File

@ -0,0 +1,27 @@
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"isolatedModules": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"moduleResolution": "bundler",
"importHelpers": true,
"target": "ES2022",
"module": "ES2022"
},
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
}
}

15
source/tsconfig.spec.json Normal file
View File

@ -0,0 +1,15 @@
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine"
]
},
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

6810
source/yarn.lock Normal file

File diff suppressed because it is too large Load Diff