Initial commit
This commit is contained in:
102
all_paw_care/templates/forms/meet-and-greet.html
Normal file
102
all_paw_care/templates/forms/meet-and-greet.html
Normal file
@@ -0,0 +1,102 @@
|
||||
{% extends "jinja/types/form.html" %}
|
||||
|
||||
{% set title %}Request meet and greet{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<form method="POST">
|
||||
<h1 class="text-success text-center my-4">Meet & greet</h1>
|
||||
|
||||
<div class="d-flex flex-row justify-content-center px-4">
|
||||
<div class="input-group mx-2">
|
||||
<span class="input-group-text">Pet name(s)</span>
|
||||
<input class="form-control" type="text"
|
||||
placeholder="Tabby, Curly" name="client-pets" id="client-pets" required>
|
||||
</div>
|
||||
|
||||
<div class="input-group mx-2">
|
||||
<span class="input-group-text">Name</span>
|
||||
<input class="form-control" type="text"
|
||||
placeholder="Kasey" name="client-name" id="client-name" required>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="d-flex flex-row justify-content-center input-group m-2">
|
||||
<span class="input-group-text">Visit type</span>
|
||||
|
||||
<input class="btn-check" type="radio"
|
||||
name="visit-type" id="visit-type-walk" value="walk" required>
|
||||
<label class="btn btn-primary" for="visit-type-walk">
|
||||
Walk
|
||||
</label>
|
||||
|
||||
<input class="btn-check" type="radio"
|
||||
name="visit-type" id="visit-type-drop-in" value="drop-in" required>
|
||||
<label class="btn btn-primary" for="visit-type-drop-in">
|
||||
Drop-in
|
||||
</label>
|
||||
|
||||
<input class="btn-check" type="radio"
|
||||
name="visit-type" id="visit-type-house-sitting" value="house-sitting" required>
|
||||
<label class="btn btn-primary" for="visit-type-house-sitting">
|
||||
House sitting
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="d-flex flex-row justify-content-center m-2">
|
||||
<div class="col-4 pe-1">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Date</span>
|
||||
<input type="date" id="date"
|
||||
name="meet-greet-date" class="form-control"
|
||||
placeholder="mm/dd/yyyy" value="" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-4 ps-1">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text" id="time">Time</span>
|
||||
<input type="time" id="meet-greet-time"
|
||||
name="meet-greet-time" class="form-control"
|
||||
min="09:00" max="16:00" value="09:00" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex flex-row justify-content-center mx-4 mb-2">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Contact</span>
|
||||
|
||||
<input class="btn-check" type="radio"
|
||||
name="contact-type" id="contact-type-email" value="email" required>
|
||||
<label class="btn btn-primary" for="contact-type-email">
|
||||
Email
|
||||
</label>
|
||||
|
||||
<input class="btn-check" type="radio"
|
||||
name="contact-type" id="contact-type-phone" value="phone" required>
|
||||
<label class="btn btn-primary" for="contact-type-phone">
|
||||
Phone
|
||||
</label>
|
||||
|
||||
<input type="text" class="form-control" name="contact"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex flex-row justify-content-center mx-4 mb-2">
|
||||
<span class="input-group-text">Additional notes</span>
|
||||
<textarea class="form-control" rows="5" for="notes"
|
||||
id="notes" name="notes">
|
||||
</textarea>
|
||||
</div>
|
||||
|
||||
<div class="row m-2">
|
||||
<button class="btn btn-primary" type="submit"
|
||||
action="{{ url_for('forms.meet_and_greet') }}" method="post">
|
||||
Book it
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
10
all_paw_care/templates/jinja/footer.html
Normal file
10
all_paw_care/templates/jinja/footer.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<footer class="d-flex flex-wrap justify-content-between align-items-center py-3 my-4 border-top">
|
||||
<p class="col-md-4 mb-0 text-muted">
|
||||
© {{ current_year }} Andrew Bryant
|
||||
</p>
|
||||
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
{% include "jinja/menu.html" %}
|
||||
</nav>
|
||||
</footer>
|
||||
|
||||
8
all_paw_care/templates/jinja/header.html
Normal file
8
all_paw_care/templates/jinja/header.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-md sticky-top navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
{% include "jinja/menu.html" %}
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
32
all_paw_care/templates/jinja/menu.html
Normal file
32
all_paw_care/templates/jinja/menu.html
Normal file
@@ -0,0 +1,32 @@
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('pages.home') }}" class="nav-link text-secondary">
|
||||
Home
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('pages.faq') }}" class="nav-link text-secondary">
|
||||
FAQ
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('pages.services') }}" class="nav-link text-secondary">
|
||||
Services
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('users.user_login') }}" class="nav-link text-secondary">
|
||||
Login
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('users.user_create') }}" class="nav-link text-secondary">
|
||||
Create account
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
29
all_paw_care/templates/jinja/types/form.html
Normal file
29
all_paw_care/templates/jinja/types/form.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>
|
||||
{% block title %}{% endblock %}
|
||||
</title>
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
|
||||
</head>
|
||||
<body>
|
||||
{% include "jinja/header.html" %}
|
||||
|
||||
<main>
|
||||
<div class="container pt-5">
|
||||
<div class="rounded border b-5">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{% include "jinja/footer.html" %}
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
27
all_paw_care/templates/jinja/types/page.html
Normal file
27
all_paw_care/templates/jinja/types/page.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{{ title }}</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
{% include "jinja/header.html" %}
|
||||
|
||||
<main>
|
||||
<hr class="invisible pb-3">
|
||||
|
||||
<div class="container">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{% include "jinja/footer.html" %}
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
36
all_paw_care/templates/pages/faq.html
Normal file
36
all_paw_care/templates/pages/faq.html
Normal file
@@ -0,0 +1,36 @@
|
||||
{% extends "jinja/types/page.html" %}
|
||||
|
||||
{% set title %}FAQ{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row text-center mb-2">
|
||||
<h1 class="text-primary display-1">
|
||||
Frequently asked questions
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
{% for faq in config.FAQS.items() %}
|
||||
<div class="row">
|
||||
<div class="col-1">
|
||||
</div>
|
||||
|
||||
<a class="btn btn-primary text-center" data-bs-toggle="collapse"
|
||||
href="#{{ faq[1][0] }}" role="button" aria-expanded="false"
|
||||
aria-controls="{{ faq[1][0] }}">
|
||||
<h2>{{ faq[0] }}</h2>
|
||||
</a>
|
||||
|
||||
<div class="collapse" id="{{ faq[1][0] }}">
|
||||
<div class="card card-body text-center">
|
||||
{{ faq[1][1] }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-1">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="invisible">
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
37
all_paw_care/templates/pages/index.html
Normal file
37
all_paw_care/templates/pages/index.html
Normal file
@@ -0,0 +1,37 @@
|
||||
{% extends "jinja/types/page.html" %}
|
||||
|
||||
{% set title %}About me{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row text-center">
|
||||
<h1 class="text-primary display-1">
|
||||
About me
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
{% for row in config.ABOUT_ME %}
|
||||
<div class="row pb-3">
|
||||
<div class="col-8 text-center {{ loop.cycle('order-first','order-last') }}">
|
||||
<p class="text-secondary lead">
|
||||
{{ row[1] }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="col-4 {{ loop.cycle('order-last','order-first') }}">
|
||||
<picture>
|
||||
{% for img in row[0] %}
|
||||
{% if not loop.last %}
|
||||
<source srcset="{{ img }}"
|
||||
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% else %}
|
||||
<source srcset="{{ img }}"
|
||||
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<img class="img-fluid" src="{{ row[0][1] }}">
|
||||
</picture>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
121
all_paw_care/templates/pages/services.html
Normal file
121
all_paw_care/templates/pages/services.html
Normal file
@@ -0,0 +1,121 @@
|
||||
{% extends "jinja/types/page.html" %}
|
||||
|
||||
{% set title %}Services{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row text-center pb-2">
|
||||
<h1 class="text-primary display-1">
|
||||
Services & Pricing
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<h2 class="text-secondary display-2">
|
||||
Primary services:
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 pb-4">
|
||||
{% for service in config.SERVICES.items() %}
|
||||
<div class="col-4">
|
||||
<div class="card">
|
||||
<picture>
|
||||
{% for img in service[1][0] %}
|
||||
{% if not loop.last %}
|
||||
<source srcset="{{ img }}"
|
||||
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% else %}
|
||||
<source srcset="{{ img }}"
|
||||
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<img class="img-fluid card-img-top"
|
||||
src="{{ service[1][0][1] }}">
|
||||
</picture>
|
||||
<div class="card-body">
|
||||
<h1 class="card-title text-center text-primary">{{ service[0] }}</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 class="text-success text-center">
|
||||
{{ service[1][1] }}
|
||||
</h2>
|
||||
|
||||
<hr class="invisible">
|
||||
|
||||
<p class="text-secondary">
|
||||
{{ service[1][2] }}
|
||||
|
||||
<ul>
|
||||
{% for included in service[1][3] %}
|
||||
<li>{{ included }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<h2 class="text-secondary">
|
||||
Add-on services:
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 pb-4">
|
||||
{% for service in config.SERVICES.items() %}
|
||||
<div class="col-4">
|
||||
<div class="card">
|
||||
<picture>
|
||||
{% for img in service[1][0] %}
|
||||
{% if not loop.last %}
|
||||
<source srcset="{{ img }}"
|
||||
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% else %}
|
||||
<source srcset="{{ img }}"
|
||||
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<img class="img-fluid" class="card-img-top"
|
||||
src="{{ service[1][0][1] }}"
|
||||
alt="Woman walking dog">
|
||||
</picture>
|
||||
<div class="card-body">
|
||||
<h1 class="card-title text-center text-primary">{{ service[0] }}</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 class="text-success text-center">
|
||||
{{ service[1][1] }}
|
||||
</h2>
|
||||
|
||||
<hr class="invisible">
|
||||
|
||||
<p class="text-secondary">
|
||||
{{ service[1][2] }}
|
||||
|
||||
<ul>
|
||||
{% for included in service[1][3] %}
|
||||
<li>{{ included }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="btn btn-primary">
|
||||
<a class="link-light" href="{{ url_for('forms.meet_and_greet') }}">
|
||||
Request meet & greet
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
29
all_paw_care/templates/user/user_create.html
Normal file
29
all_paw_care/templates/user/user_create.html
Normal file
@@ -0,0 +1,29 @@
|
||||
{% extends "jinja/types/form.html" %}
|
||||
|
||||
{% set title %}Create user account{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<form method="POST">
|
||||
<div class="row text-center my-4">
|
||||
<h1 class="text-primary">
|
||||
Create user account
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-group mx-2">
|
||||
<span class="input-group-text">Username</span>
|
||||
<input class="form-control" type="text"
|
||||
name="username" id="username" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row m-2">
|
||||
<button class="btn btn-primary" type="submit"
|
||||
action="{{ url_for('users.user_create') }}" method="post">
|
||||
Login
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
29
all_paw_care/templates/user/user_login.html
Normal file
29
all_paw_care/templates/user/user_login.html
Normal file
@@ -0,0 +1,29 @@
|
||||
{% extends "jinja/types/form.html" %}
|
||||
|
||||
{% set title %}Login{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<form method="POST">
|
||||
<div class="row text-center my-4">
|
||||
<h1 class="text-primary">
|
||||
User login
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-group mx-2">
|
||||
<span class="input-group-text">Username</span>
|
||||
<input class="form-control" type="text"
|
||||
name="username" id="username" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row m-2">
|
||||
<button class="btn btn-primary" type="submit"
|
||||
action="{{ url_for('users.user_login') }}" method="post">
|
||||
Login
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user