commiting
This commit is contained in:
49
all_paw_care/templates/contact-me.html
Normal file
49
all_paw_care/templates/contact-me.html
Normal file
@@ -0,0 +1,49 @@
|
||||
{% extends "jinja/types/page.html" %}
|
||||
|
||||
{% set title %}Contact me{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<h4>If you have any questions, the
|
||||
<a href="../faq.html">FAQ</a>
|
||||
page may have an answer. Contacting me directly by
|
||||
<a href="mailto: bryant.caregiving@fastmail.com">email</a> or
|
||||
<a href="tel:+14102799125">text</a> message is welcome.
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div class="row mt-2">
|
||||
<div class="col-6">
|
||||
<h3 class="text-center text-primary">
|
||||
Contact me directly!
|
||||
</h3>
|
||||
|
||||
<a href="tel::+14102799125" class="mr-8">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" fill="currentColor" class="bi bi-telephone-fill" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z"/>
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<a href="mailto: bryant.caregiving@fastmail.com">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" fill="currentColor" class="bi bi-envelope-fill" viewBox="0 0 16 16">
|
||||
<path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414.05 3.555ZM0 4.697v7.104l5.803-3.558L0 4.697ZM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586l-1.239-.757Zm3.436-.586L16 11.801V4.697l-5.803 3.546Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<h3 class="text-center text-primary">
|
||||
Follow me!
|
||||
</h3>
|
||||
|
||||
<a href="https://www.instagram.com/awkawb" target="_blank">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" fill="currentColor" class="bi bi-instagram" viewBox="0 0 16 16">
|
||||
<path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z"/>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
39
all_paw_care/templates/faq.html
Normal file
39
all_paw_care/templates/faq.html
Normal file
@@ -0,0 +1,39 @@
|
||||
{% extends "jinja/types/page.html" %}
|
||||
|
||||
{% set title %}FAQ{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row text-center">
|
||||
<h2 class="text-primary">Do you accept more than one animal?</h2>
|
||||
</div>
|
||||
|
||||
<div class="row text-center pb-3">
|
||||
<h5 class="text-secondary">
|
||||
I do but all services are priced for one animal. For more than
|
||||
one pet I charge $8 per additional animal for walking and house
|
||||
sitting services.
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="row text-center">
|
||||
<h2 class="text-primary">What types of payments do you accept?</h2>
|
||||
</div>
|
||||
|
||||
<div class="row text-center pb-3">
|
||||
<h5 class="text-secondary">
|
||||
I accept all major credit cards, bank transfers, and Paypal. Invoices are sent after service is rendered.
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="row text-center">
|
||||
<h2 class="text-primary">Can you clean up my yard, my dog has made it a mess?</h2>
|
||||
</div>
|
||||
|
||||
<div class="row text-center">
|
||||
<h5 class="text-secondary">
|
||||
I offer poop clean up as an additional add-on service. If you
|
||||
decide to schedule a walk or house sitting, I will gladly
|
||||
remove the poop.
|
||||
</h5>
|
||||
</div>
|
||||
{% endblock %}
|
||||
49
all_paw_care/templates/index.html
Normal file
49
all_paw_care/templates/index.html
Normal file
@@ -0,0 +1,49 @@
|
||||
{% extends "jinja/types/page.html" %}
|
||||
|
||||
{% set title %}About me{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row pb-3">
|
||||
<div class="col-8 text-center">
|
||||
Welcome to All Paw Care!
|
||||
</div>
|
||||
|
||||
<div class="col-4">
|
||||
<img class="img-fluid"
|
||||
src="/static/img/about_me_1_md.jpg"
|
||||
srcset="/static/img/about_me_1_sm.jpg 540w, /static/img/about_me_1_md.jpg 720w, /static/img/about_me_1_lg.jpg 960w"
|
||||
sizes="50vw">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pb-3">
|
||||
<div class="col-4">
|
||||
<img class="img-fluid" src="/static/img/about_me_2_lg.jpg"
|
||||
srcset="/static/img/about_me_2_sm.jpg 540w, /static/img/about_me_2_md.jpg 720w, /static/img/about_me_2_lg.jpg 960w"
|
||||
sizes="50vw">
|
||||
</div>
|
||||
|
||||
<div class="col-8 text-center">
|
||||
<p>
|
||||
I've been providing professional animal caretaking
|
||||
services in the Baltimore area for over 4 years. I
|
||||
provide services for paws of all shapes and sizes.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-8 text-center">
|
||||
<p>
|
||||
I specialize in dog and cat care. Animals add so much
|
||||
to our lives so caring for them is just as important.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="col-4">
|
||||
<img class="img-fluid" src="/static/img/about_me_3_lg.jpg"
|
||||
srcset="/static/img/about_me_3_sm.jpg 540w, /static/img/about_me_3_md.jpg 720w, /static/img/about_me_3_lg.jpg 960w"
|
||||
sizes="50vw">
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -1,10 +1,14 @@
|
||||
<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>
|
||||
<footer class="footer mt-5 bg-tertiary">
|
||||
<div class="container">
|
||||
<nav class="navbar navbar-expand-sm text-light">
|
||||
<div class="container">
|
||||
<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>
|
||||
{% include "jinja/menu.html" %}
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-md sticky-top navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
{% include "jinja/menu.html" %}
|
||||
<nav class="navbar navbar-expand-sm sticky-top bg-light" data-bs-theme="light">
|
||||
<div class="container">
|
||||
<button class="navbar-toggler" type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#menu-bar-items"
|
||||
aria-controls="menu-bar-items"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle menu bar">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="menu-bar-items">
|
||||
{% include "jinja/menu.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
19
all_paw_care/templates/jinja/menu (copy).html
Normal file
19
all_paw_care/templates/jinja/menu (copy).html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% for page in pages %}
|
||||
<li>
|
||||
{% if title == page %}
|
||||
<a href="{{ pages[page] }}" class="nav-link text-secondary">
|
||||
<svg class="bi d-block mx-auto mb-1" width="24" height="24">
|
||||
<use xlink:href="#home"></use>
|
||||
</svg>
|
||||
{{ page }}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ pages[page] }}" class="nav-link text-white">
|
||||
<svg class="bi d-block mx-auto mb-1" width="24" height="24">
|
||||
<use xlink:href="#home"></use>
|
||||
</svg>
|
||||
{{ page }}
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
@@ -1,30 +1,30 @@
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('pages.home') }}" class="nav-link text-secondary">
|
||||
<a href="{{ url_for('pages.home') }}" class="nav-link link-white">
|
||||
Home
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('pages.faq') }}" class="nav-link text-secondary">
|
||||
<a href="{{ url_for('pages.faq') }}" class="nav-link link-white">
|
||||
FAQ
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('pages.services') }}" class="nav-link text-secondary">
|
||||
<a href="{{ url_for('pages.services') }}" class="nav-link link-white">
|
||||
Services
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('users.user_login') }}" class="nav-link text-secondary">
|
||||
<a href="{{ url_for('users.user_login') }}" class="nav-link link-white">
|
||||
Login
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for('users.user_create') }}" class="nav-link text-secondary">
|
||||
<a href="{{ url_for('users.user_create') }}" class="nav-link link-white">
|
||||
Create account
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
<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">
|
||||
<link href="{{ url_for('static', filename="css/custom.css") }}" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
{% include "jinja/header.html" %}
|
||||
|
||||
@@ -4,15 +4,12 @@
|
||||
<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">
|
||||
|
||||
<link href="{{ url_for('static', filename="css/custom.css") }}" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<body class="bg-white">
|
||||
{% include "jinja/header.html" %}
|
||||
|
||||
<main>
|
||||
<hr class="invisible pb-3">
|
||||
|
||||
<div class="container">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
||||
96
all_paw_care/templates/meet-and-greet.html
Normal file
96
all_paw_care/templates/meet-and-greet.html
Normal file
@@ -0,0 +1,96 @@
|
||||
{% 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" required>
|
||||
<label class="btn btn-primary" for="visit-type-walk">
|
||||
Walk
|
||||
</label>
|
||||
|
||||
<input class="btn-check" type="radio"
|
||||
name="visit-type" id="visit-type-sitting">
|
||||
<label class="btn btn-primary" for="visit-type-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="email" required>
|
||||
<label class="btn btn-primary" for="email">
|
||||
Email
|
||||
</label>
|
||||
|
||||
<input class="btn-check" type="radio"
|
||||
name="contact-type" id="phone">
|
||||
<label class="btn btn-primary" for="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 %}
|
||||
|
||||
@@ -9,28 +9,25 @@
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="d-grid gap-3 btn-group-vertical" role="group" id="faq-group">
|
||||
{% for faq in page.get_content() %}
|
||||
<div class="row">
|
||||
<div class="col-1">
|
||||
</div>
|
||||
<button class="btn btn-secondary text-light text-center"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#{{ page.get_content()[faq]['tag'] }}"
|
||||
aria-expanded="true"
|
||||
aria-controls="{{ page.get_content()[faq]['tag'] }}">
|
||||
<h2 class="accordion-header">
|
||||
{{ faq }}
|
||||
</h2>
|
||||
</button>
|
||||
|
||||
<a class="btn btn-primary text-center" data-bs-toggle="collapse"
|
||||
href="#{{ page.get_content()[faq]['tag'] }}" role="button" aria-expanded="false"
|
||||
aria-controls="{{ page.get_content()[faq]['tag'] }}">
|
||||
<h2>{{ faq }}</h2>
|
||||
</a>
|
||||
|
||||
<div class="collapse" id="{{ page.get_content()[faq]['tag'] }}">
|
||||
<div class="card card-body text-center">
|
||||
{{ page.get_content()[faq]['answer'] }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-1">
|
||||
<div class="collapse" id="{{ page.get_content()[faq]['tag'] }}">
|
||||
<div class="card card-body text-center text-secondary">
|
||||
{{ page.get_content()[faq]['answer']|safe }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="invisible">
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
@@ -9,30 +9,39 @@
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
{% for row in page.get_content() %}
|
||||
<div class="row pb-3">
|
||||
<div class="col-sm-8 text-center {{ loop.cycle('order-first','order-last') }}">
|
||||
<p class="text-secondary lead">
|
||||
{{ page.get_content()[row]['content'] }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4 {{ loop.cycle('order-last','order-first') }}">
|
||||
<picture>
|
||||
{% for img in page.get_content()[row]['images'] %}
|
||||
{% if not loop.last %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% else %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="d-grid gap-3">
|
||||
{% for section in page.get_content() %}
|
||||
<div class="card border-0 d-flex rounded-1 bg-dark">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-8 {{ loop.cycle('order-first','order-last') }}">
|
||||
<div class="card-text text-light text-center lead">
|
||||
{{ section['content']|safe }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4 {{ loop.cycle('order-last','order-first') }}">
|
||||
<div class="card-img">
|
||||
<picture>
|
||||
{% for img in section['images'] %}
|
||||
{% if not loop.last %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% else %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<img class="img-fluid"
|
||||
src="{{ url_for('static', filename=page.get_content()[row]['images'][1]) }}">
|
||||
</picture>
|
||||
<img class="img-fluid rounded-1"
|
||||
src="{{ url_for('static', filename=section['images'][1]) }}">
|
||||
</picture>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
@@ -11,60 +11,59 @@
|
||||
|
||||
<hr>
|
||||
|
||||
{% for section in page.get_content() %}
|
||||
<div class="row text-center">
|
||||
<h2 class="text-secondary display-3">
|
||||
{{ section }}
|
||||
</h2>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<h2 class="text-secondary display-3">
|
||||
Primary Services
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 pb-4">
|
||||
{% for service in page.get_content()[section] %}
|
||||
<div class="col-sm-4">
|
||||
<div class="card">
|
||||
<picture>
|
||||
{% for img in service['images'] %}
|
||||
{% if not loop.last %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% else %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
{% endif %}
|
||||
<div class="row pt-2 pb-4">
|
||||
{% for service in page.get_primary_service_cards() %}
|
||||
<div class="col-sm-4">
|
||||
<div class="card">
|
||||
<picture>
|
||||
{% for img in service.get_images() %}
|
||||
{% if not loop.last %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
|
||||
{% else %}
|
||||
<source srcset="{{ url_for('static', filename=img) }}"
|
||||
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
|
||||
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<img class="img-fluid card-img-top"
|
||||
src="{{ url_for('static', filename=service.get_default_image()) }}">
|
||||
</picture>
|
||||
<div class="card-body">
|
||||
<h1 class="card-title text-center text-primary">{{ service.get_title() }}</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 class="text-success text-center">
|
||||
{{ service.get_price() }}
|
||||
</h2>
|
||||
|
||||
<hr class="invisible">
|
||||
|
||||
<p class="text-secondary">
|
||||
Service includes:
|
||||
<ul>
|
||||
{% for included in service.get_included() %}
|
||||
<li>{{ included }}</li>
|
||||
{% endfor %}
|
||||
|
||||
<img class="img-fluid card-img-top"
|
||||
src="{{ url_for('static', filename=service['images'][1]) }}">
|
||||
</picture>
|
||||
<div class="card-body">
|
||||
<h1 class="card-title text-center text-primary">{{ service['title'] }}</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 class="text-success text-center">
|
||||
{{ service['price'] }}
|
||||
</h2>
|
||||
|
||||
<hr class="invisible">
|
||||
|
||||
<p class="text-secondary">
|
||||
Service includes:
|
||||
<ul>
|
||||
{% for included in service['included'] %}
|
||||
<li>{{ included }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="row">
|
||||
<div class="btn btn-primary">
|
||||
<a class="link-light" href="{{ url_for('forms.meet_and_greet') }}">
|
||||
<a class="link-light" id="request-meet-greet" href="{{ url_for('forms.meet_and_greet') }}">
|
||||
Request meet & greet
|
||||
</a>
|
||||
</div>
|
||||
|
||||
69
all_paw_care/templates/services.html
Normal file
69
all_paw_care/templates/services.html
Normal file
@@ -0,0 +1,69 @@
|
||||
{% extends "jinja/types/page.html" %}
|
||||
|
||||
{% set title %}Services{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row pt-2 pb-4">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<img class="img-fluid" class="card-img-top"
|
||||
src="../static/img/services_dog_walking_card_lg.png"
|
||||
srcset="../static/img/services_dog_walking_card_sm.png 540w,
|
||||
../static/img/services_dog_walking_card_md.png 720w,
|
||||
../static/img/services_dog_walking_card_lg.png 960w,
|
||||
../static/img/services_dog_walking_card_xl.png 1140w"
|
||||
sizes="50vw" alt="Woman walking dog">
|
||||
<div class="card-body">
|
||||
<h1 class="card-title text-center text-primary">Walking</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 class="text-success text-center">$20+/visit</h2>
|
||||
|
||||
<hr class="invisible">
|
||||
|
||||
<p class="text-secondary">
|
||||
Service includes 30 minute walk for your pet. Bags for poop
|
||||
clean-up are included.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<img class="img-fluid" class="card-img-top"
|
||||
src="../static/img/services_house_sitting_card_lg.png"
|
||||
srcset="../static/img/services_house_sitting_card_sm.png 540w,
|
||||
../static/img/services_house_sitting_card_md.png 720w,
|
||||
../static/img/services_house_sitting_card_lg.png 960w,
|
||||
../static/img/services_house_sitting_card_xl.png 1140w"
|
||||
sizes="50vw" alt="Dog eating from food bowl">
|
||||
<div class="card-body">
|
||||
<h1 class="card-title text-center text-primary">
|
||||
House sitting
|
||||
</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 class="text-success text-center">$38+/night</h2>
|
||||
|
||||
<hr class="invisible">
|
||||
|
||||
<p class="text-secondary">
|
||||
Service includes in-home overnight stays and animal care.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center">
|
||||
<a href="{{ url_for('forms.meet_and_greet') }}">
|
||||
<button class="btn btn-primary text-light">
|
||||
Request meet & greet
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user