├── .gitignore
├── LICENSE
├── README.md
├── _config.yml
├── _data
└── navigation.yml
├── _includes
├── footer.html
├── header.html
└── topbar.html
├── _js
└── src
│ ├── app.js
│ ├── back-to-top.js
│ ├── magnific-popup.js
│ └── match-height.js
├── _layouts
├── default.html
├── home.html
└── page.html
├── _pages
├── 404.md
├── about.md
├── contact.md
├── domains.md
├── email.md
├── home.md
├── hosting.md
├── services.md
├── testimonials.md
└── websites.md
├── _scss
├── base
│ └── _global.scss
├── components
│ └── _navbar.scss
├── layout
│ ├── _footer.scss
│ ├── _header.scss
│ ├── _page-banner.scss
│ ├── _page.scss
│ └── _topbar.scss
├── main.scss
├── mixins
│ ├── _rem.scss
│ └── _transitions.scss
├── pages
│ └── _home-page.scss
└── typography
│ └── _headings.scss
├── css
└── main.css
├── feed.xml
├── fonts
└── FontAwesome
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ └── fontawesome-webfont.woff2
├── gulpfile.js
├── js
└── dist
│ └── app.bundle.js
├── package-lock.json
└── package.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # ignore node modules
2 | /node_modules/
3 | /.jekyll-cache/
4 |
5 | # ignore compiled site
6 | /_site/
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 David Malone
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Jekyll Bootstrap 5
2 | Jekyll + Gulp 4 + Browser-sync + Bootstrap 5 + Font-Awesome + Magnific popup
3 |
4 | ## Requirements
5 | ### https://jekyllrb.com/docs/installation/
6 | - Ruby (refer to jekyll documentation or sudo apt-get install ruby-full)
7 | - RubyGems (refer to jekyll documentation or sudo apt-get install jekyll)
8 | - NodeJS (sudo apt-get install nodejs)
9 | - NPM (sudo apt-get install npm)
10 | - Gulp (sudo npm install gulp -g)
11 |
12 | ## Installation
13 | 1. Clone or download this respository.
14 | 2. Run 'npm install' via cmd line to get all of the node dependancies, this will also install Gulp for compiling scss and js.
15 | 3. Run "gulp" via the cmd line to compile uncompressed sass and js as well as build the website in _site. It will also start Browsersync to watch for changes.
16 | 4. Copy _site contents to your live server.
17 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | # Site settings
2 | title: Your awesome title
3 | email: your-email@domain.com
4 | description: > # this means to ignore newlines until "baseurl:"
5 | Write an awesome description for your new site here. You can edit this
6 | line in _config.yml. It will appear in your document head meta (for
7 | Google search results) and in your feed.xml site description.
8 | baseurl: "" # the subpath of your site, e.g. /blog/
9 | url: "http://yourdomain.com" # the base hostname & protocol for your site
10 | twitter_username: jekyllrb
11 | github_username: jekyll
12 |
13 | # Build settings
14 | markdown: kramdown
15 |
16 | exclude:
17 | - package.json
18 | - node_modules
19 | - gulpfile.js
20 |
21 | keep_files:
22 | - _site/css
23 | - _site/js
24 |
25 | include: ['_pages']
26 |
--------------------------------------------------------------------------------
/_data/navigation.yml:
--------------------------------------------------------------------------------
1 | # example /_data/navigation.yml
2 | - title: "About"
3 | href: /about/
4 |
5 | - title: "Services"
6 | href: /services/
7 | subcategories:
8 | - subtitle: "Email"
9 | subhref: "/services/email/"
10 | - subtitle: "Domains"
11 | subhref: "/services/domains"
12 | - subtitle: "Hosting"
13 | subhref: "/services/hosting"
14 |
15 | - title: "Websites"
16 | href: /websites/
17 |
18 | - title: "Testimonials"
19 | href: /testimonials/
20 |
21 | - title: "Contact"
22 | href: /contact/
--------------------------------------------------------------------------------
/_includes/footer.html:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/_includes/header.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Company name
6 |
7 |
8 |
9 |
10 |
11 |
12 | {% for nav in site.data.navigation %}
13 |
14 | {{ nav.title }}
15 | {% if nav.subcategories != null %}
16 |
17 | {% endif %}
18 | {% if nav.subcategories != null %}
19 |
28 | {% endif %}
29 |
30 | {% endfor %}
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/_includes/topbar.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Trade and service in location, Country
4 |
027 123 4567
5 |
Email us
6 |
7 |
8 |
--------------------------------------------------------------------------------
/_js/src/app.js:
--------------------------------------------------------------------------------
1 | $('.dropdown-chevron-mobile').on('click', function(e) {
2 |
3 | e.preventDefault();
4 |
5 | // Toggles the arrow class on itself.
6 | $(this).toggleClass('open');
7 |
8 | // Get the parent list item and its id.
9 | var parent = $(e.target).parent('li');
10 | parent.children('ul').toggleClass('open');
11 |
12 | });
13 |
--------------------------------------------------------------------------------
/_js/src/back-to-top.js:
--------------------------------------------------------------------------------
1 | /* Back to top */
2 | $(window).scroll(function(){
3 | if ($(this).scrollTop() > 100) {
4 | $('.back-to-top').fadeIn();
5 | } else {
6 | $('.back-to-top').fadeOut();
7 | }
8 | });
9 |
10 | $('.back-to-top').click(function(){
11 | $("html, body").animate({ scrollTop: 0 }, 600);
12 | return false;
13 | });
14 |
--------------------------------------------------------------------------------
/_js/src/magnific-popup.js:
--------------------------------------------------------------------------------
1 | /* Magnific Popup */
2 | $('.image-link').magnificPopup({
3 | type:'image',
4 | gallery: {
5 | enabled: true
6 | }
7 | });
8 |
--------------------------------------------------------------------------------
/_js/src/match-height.js:
--------------------------------------------------------------------------------
1 | /* Match height */
2 | $('.pricing-card-features').matchHeight();
3 | $('.panel').matchHeight();
4 |
--------------------------------------------------------------------------------
/_layouts/default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}
8 |
9 |
10 |
11 |
12 |
13 | {% include topbar.html %}
14 | {% include header.html %}
15 | {{ content }}
16 | {% include footer.html %}
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/_layouts/home.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Introduction
11 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Consectetur adipiscing elit, sed do eiusmod.
12 |
13 | Nulla vitae elit libero
14 | Libero augue interdum
15 | Augue pharetra mollis
16 |
17 |
Contact page link
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
First slide label
33 |
Nulla vitae elit libero, a pharetra augue mollis interdum.
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
Second slide label
42 |
Nulla vitae elit libero, a pharetra augue mollis interdum.
43 |
44 |
45 |
46 |
47 |
48 |
Third slide label
49 |
Nulla vitae elit libero, a pharetra augue mollis interdum.
50 |
51 |
52 |
53 |
54 |
55 | Previous
56 |
57 |
58 |
59 | Next
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
109 |
--------------------------------------------------------------------------------
/_layouts/page.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 |
6 |
7 |
{{ page.title }}
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {{ content }}
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/_pages/404.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: About
4 | permalink: /about/
5 | ---
6 |
7 | We never thought of finding' a place where we belong. Don't have to stand alone, we'll never let you fall. Don't need permission to decide what you believe. You gotta learn something when we meet you after school. I said jump, down on Jump Street. I said jump, down on Jump Street. Your friends will be there when your back is to the wall. You'll find you'll need us cause there's no one else to call. When it was hopeless a decision is what you need. You'd better be ready cause' your runnin' outta time. Say jump, 21 Jump, Street.
8 |
--------------------------------------------------------------------------------
/_pages/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: About
4 | permalink: /about/
5 | ---
6 |
7 | About page content
8 |
--------------------------------------------------------------------------------
/_pages/contact.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Contact
4 | permalink: /contact/
5 | ---
6 |
7 | Contact page content
--------------------------------------------------------------------------------
/_pages/domains.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Domains
4 | permalink: /services/domains/
5 | ---
6 |
7 | Websites page content
--------------------------------------------------------------------------------
/_pages/email.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Email
4 | permalink: /services/email/
5 | ---
6 |
7 | Websites page content
--------------------------------------------------------------------------------
/_pages/home.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: home
3 | title: Home
4 | permalink: /
5 | ---
6 |
7 | Home page content
--------------------------------------------------------------------------------
/_pages/hosting.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Hosting
4 | permalink: /services/hosting/
5 | ---
6 |
7 | Websites page content
--------------------------------------------------------------------------------
/_pages/services.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Services
4 | permalink: /services/
5 | ---
6 |
7 | Services page content
8 |
--------------------------------------------------------------------------------
/_pages/testimonials.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Testimonials
4 | permalink: /testimonials/
5 | ---
6 |
7 | Testimonials page content
--------------------------------------------------------------------------------
/_pages/websites.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Websites
4 | permalink: /websites/
5 | ---
6 |
7 | Websites page content
--------------------------------------------------------------------------------
/_scss/base/_global.scss:
--------------------------------------------------------------------------------
1 | /* Global */
2 |
3 | * {
4 | box-sizing: border-box;
5 | }
6 |
7 | body,
8 | html {
9 | height: 100%;
10 | }
11 |
12 | body {
13 | font-size: 18px;
14 | line-height: 1.6;
15 | font-family: "arial", sans-serif;
16 | background-color: #333;
17 | }
18 |
19 | html {
20 | background-color: #ddd;
21 | }
22 |
23 | img {
24 | max-width: 100%;
25 | }
26 |
27 | @media (min-width: 1200px) {
28 | .container {
29 | width: 1250px;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/_scss/components/_navbar.scss:
--------------------------------------------------------------------------------
1 | /* Navigation */
2 |
3 | .navbar-toggler {
4 | cursor: pointer;
5 | }
6 |
7 | .subcategory {
8 | @include rem(padding, 8px 15px 8px 15px !important);
9 | list-style: none;
10 | margin: 0;
11 | padding: 0;
12 | position: absolute;
13 | width: 200px;
14 | z-index: 99;
15 | background-color: #eee;
16 | opacity: 0;
17 | border: 1px solid #ccc;
18 | &:before,
19 | &:after {
20 | position: absolute;
21 | left: 40px;
22 | content:'';
23 | width: 0;
24 | height: 0;
25 | border-left: 12px solid transparent;
26 | border-right: 12px solid transparent;
27 | }
28 | &:after {
29 | top: -12px;
30 | border-bottom: 12px solid #eee;
31 | }
32 | &:before {
33 | top: -14px;
34 | border-bottom: 13px solid #ccc;
35 | }
36 | @include transition(opacity, 1s, ease-in-out);
37 | @include media-breakpoint-down(md) {
38 | @include rem(padding, 0 !important);
39 | display: none;
40 | &:before,
41 | &:after {
42 | display: none;
43 | }
44 | background: transparent;
45 | opacity: 1;
46 | position: relative;
47 | width: 100%;
48 | padding: 0;
49 | border: 0;
50 | }
51 | }
52 |
53 | .nav-subitem {
54 | border-bottom: 1px solid #eee;
55 | }
56 |
57 | .nav-sublink {
58 | display: block;
59 | color: rgba(0, 0, 0, 0.5);
60 | &:hover {
61 | text-decoration: none;
62 | color: #555;
63 | }
64 | @include rem(padding, 4px 0 4px 0 !important);
65 | @include media-breakpoint-down(md) {
66 | @include rem(padding, 12px 0 12px 35px !important);
67 | }
68 | }
69 |
70 | .nav-item {
71 | &:hover {
72 | .subcategory {
73 | opacity: 1;
74 | }
75 | }
76 | position:relative;
77 | @include media-breakpoint-down(md) {
78 | border-bottom: 1px solid #eee;
79 | }
80 |
81 | }
82 |
83 | .nav-link {
84 | display: block;
85 | z-index: 1;
86 | @include rem(padding, 12px 16px 12px 16px !important);
87 | @include media-breakpoint-down(md) {
88 | @include rem(padding, 12px 0 12px 0 !important);
89 | }
90 | }
91 |
92 | .nav-link.has-subcat {
93 | @include media-breakpoint-down(md) {
94 | margin-right: 58px;
95 | }
96 | }
97 |
98 | .navbar-nav {
99 | li:last-child {
100 | .nav-link {
101 | @include rem(padding, 12px 30px 12px 30px !important);
102 | margin-left: 18px;
103 | background-color: #ddd;
104 | @include media-breakpoint-down(md) {
105 | @include rem(padding, 12px 0 12px 0 !important);
106 | margin-left: 0;
107 | background-color: transparent;
108 | }
109 | }
110 | }
111 | li:last-child {
112 | border-bottom: 0;
113 | }
114 | }
115 |
116 | .dropdown-chevron-desktop {
117 | @include media-breakpoint-down(md) {
118 | display: none;
119 | }
120 | }
121 |
122 | .dropdown-chevron-mobile {
123 | display: none;
124 | position: absolute;
125 | right: 0;
126 | top: 0;
127 | padding: 12px 20px 12px 20px;
128 | border-left: 1px solid #eee;
129 | cursor: pointer;
130 | @include media-breakpoint-down(md) {
131 | display: block;
132 | }
133 | &:after {
134 | font-family: FontAwesome;
135 | content: '\f078';
136 | font-size: 14px;
137 | }
138 | }
139 |
140 | .dropdown-chevron-mobile.open {
141 | &:after {
142 | content: '\f077';
143 | }
144 | }
145 |
146 | .subcategory.open {
147 | display: block;
148 | border-top:1px solid #eee;
149 | }
150 |
--------------------------------------------------------------------------------
/_scss/layout/_footer.scss:
--------------------------------------------------------------------------------
1 | /* Footer */
2 |
3 | footer {
4 | @include rem(padding, 30px 0 30px 0);
5 | background-color: #333;
6 | color: #888;
7 | a {
8 | color: #888;
9 | &:hover {
10 | color: #fff;
11 | }
12 | }
13 | }
14 |
15 | .footer-copyright {
16 | float: left;
17 | }
18 |
19 | .footer-facebook {
20 | float: right;
21 | font-size: 24px;
22 | }
23 |
24 | .footer-twitter {
25 | float: right;
26 | font-size: 24px;
27 | margin-right: 15px;
28 | }
29 |
30 | .footer-sitemap {
31 | float: right;
32 | }
33 |
34 | .footer-author {
35 | float: right;
36 | }
37 |
38 | .footer-divider {
39 | &:after {
40 | content:"-";
41 | color: #fff;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/_scss/layout/_header.scss:
--------------------------------------------------------------------------------
1 | /* Header */
2 |
3 | header {
4 | @include rem(padding, 25px 0 25px 0);
5 | background-color: #fff;
6 | border-bottom: 1px solid #ccc;
7 | .container {
8 | padding: 0;
9 | }
10 | }
11 |
12 | .navbar-brand {
13 | font-size: 32px;
14 | }
15 |
--------------------------------------------------------------------------------
/_scss/layout/_page-banner.scss:
--------------------------------------------------------------------------------
1 | /* Page banner */
2 |
3 | .page-banner-background {
4 | background-color: #eee;
5 | border-bottom: 1px solid #ddd;
6 | }
7 |
8 | .page-banner {
9 | @include rem(padding-top, 20px);
10 | @include rem(padding-bottom, 20px);
11 | h1 {
12 | margin: 0;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/_scss/layout/_page.scss:
--------------------------------------------------------------------------------
1 | /* Page */
2 |
3 | .page-background {
4 | background-color: #fff;
5 | }
6 |
7 | .page {
8 | @include rem(padding, 30px 0 30px 0);
9 | }
10 |
--------------------------------------------------------------------------------
/_scss/layout/_topbar.scss:
--------------------------------------------------------------------------------
1 | /* Top bar */
2 |
3 | .topbar {
4 | @include rem(padding, 9px 0 9px 0);
5 | background-color: #eee;
6 | h1 {
7 | display: inline;
8 | margin: 0;
9 | padding: 0;
10 | font-size: 16px;
11 | color: #777;
12 | }
13 | @include media-breakpoint-down(sm) {
14 | display: none;
15 | }
16 | }
17 |
18 | .phone,
19 | .email {
20 | position: relative;
21 | top: 3px;
22 | float: right;
23 | color: #777;
24 | font-size: 16px;
25 | }
26 |
27 | .email {
28 | @include rem(margin-right, 30px);
29 | color: #777;
30 | &:hover {
31 | text-decoration: none;
32 | color: #555;
33 | }
34 | i {
35 | font-size: 18px;
36 | position: relative;
37 | @include rem(margin-right, 2px);
38 | }
39 | }
40 |
41 | .phone {
42 | i {
43 | position: relative;
44 | font-size: 18px;
45 | top: 1px;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/_scss/main.scss:
--------------------------------------------------------------------------------
1 | /* Bootstrap */
2 | @import "../node_modules/bootstrap/scss/bootstrap";
3 |
4 | /* Font Awesome */
5 | $fa-font-path: "../fonts/FontAwesome";
6 | @import "../node_modules/font-awesome/scss/font-awesome";
7 |
8 | /* Mixins */
9 | @import "mixins/rem";
10 | @import "mixins/transitions";
11 |
12 | /* Global */
13 | @import "base/global";
14 |
15 | /* Page */
16 | @import "pages/home-page";
17 |
18 | /* Layout */
19 | @import "layout/topbar";
20 | @import "layout/header";
21 | @import "layout/page";
22 | @import "layout/page-banner";
23 | @import "layout/footer";
24 |
25 | /* Components */
26 | @import "components/navbar";
27 |
28 | /* Typography */
29 | @import "typography/headings";
30 |
--------------------------------------------------------------------------------
/_scss/mixins/_rem.scss:
--------------------------------------------------------------------------------
1 | // --------------------------------------------------
2 | // Rem units with fallback to px for older browsers
3 | // Simplified version of: https://github.com/ry5n/rem
4 | //
5 | // Examples:
6 | // These will output the same thing:
7 | // @include rem(font-size, 60px);
8 | // @include rem(font-size, 3.75rem);
9 | //
10 | // Can also use shorthand properties:
11 | // @include rem(margin, 20px 10px 0 5%);
12 | // Above will output the following:
13 | // margin: 20px 10px 0 5%;
14 | // margin: 1.25rem 0.625rem 0 5%;
15 | //
16 | // Note: This overrides Susy's rem mixin,to convert px grids to rem.
17 | // --------------------------------------------------
18 |
19 | // Base font size in pixels, if not already defined.
20 | // Should be the same as the font-size of the html element.
21 | $base-font-size: 16px !default;
22 | $rem-ratio: ($base-font-size / 1px) / 1rem;
23 |
24 | // Whether to output fallback values in px when outputting rems.
25 | $rem-with-px-fallback: true !default;
26 |
27 | // For the given property, use rem units with px as a fallback.
28 | //
29 | // $property - The css property name.
30 | // $values - The value (or space-separated list of values) for the property.
31 | //
32 | @mixin rem($property, $values) {
33 | // Create a couple of empty lists as output buffers.
34 | $px-values: ();
35 | $rem-values: ();
36 |
37 | // Ensure $values is a list.
38 | @if type-of($values) != 'list' {
39 | $values: join((), $values);
40 | }
41 |
42 | // Loop through the $values list
43 | @each $value in $values {
44 | // For each property value, if it's in rem or px, derive both rem and
45 | // px values for it and add those to the end of the appropriate buffer.
46 | // Ensure all pixel values are rounded to the nearest pixel.
47 | @if type-of($value) == number and not unitless($value) and (unit($value) == px or unit($value) == rem) {
48 | // unit is px
49 | @if unit($value) == px {
50 | $px-values: join($px-values, round($value));
51 | $rem-values: join($rem-values, $value / $base-font-size + rem);
52 | }
53 | // unit is rem
54 | @else {
55 | $px-values: join($px-values, round($value * $rem-ratio) + px);
56 | $rem-values: join($rem-values, $value);
57 | }
58 | }
59 | // Otherwise, pass non-px/rem values along to both outputs.
60 | @else {
61 | $px-values: join($px-values, $value);
62 | $rem-values: join($rem-values, $value);
63 | }
64 | }
65 |
66 | // Use pixel fallback for browsers that don't understand rem units.
67 | @if $rem-with-px-fallback {
68 | #{$property}: $px-values;
69 | }
70 |
71 | // Use rem values for everyone else (overrides pixel values).
72 | #{$property}: $rem-values;
73 | }
74 |
75 | // Override Susy's if-rem() mixin so it uses this simplified rem() mixin instead.
76 | @mixin if-rem($property, $values) {
77 | @include rem($property, $values);
78 | }
79 |
--------------------------------------------------------------------------------
/_scss/mixins/_transitions.scss:
--------------------------------------------------------------------------------
1 | /* Transitions */
2 |
3 | @mixin transition($var, $duration, $timing-function) {
4 | -webkit-transition: $var, $duration, $timing-function;
5 | -moz-transition: $var, $duration, $timing-function;
6 | -ms-transition: $var, $duration, $timing-function;
7 | -o-transition: $var, $duration, $timing-function;
8 | transition: $var, $duration, $timing-function;
9 | }
10 |
--------------------------------------------------------------------------------
/_scss/pages/_home-page.scss:
--------------------------------------------------------------------------------
1 | /* Home Page */
2 |
3 | .home-page-intro-container {
4 | background-color: #fff;
5 | }
6 |
7 | .home-intro {
8 | display: block;
9 | @include rem(padding, 40px 0 40px 0);
10 | @include media-breakpoint-down(sm) {
11 | padding-bottom: 0;
12 | .btn-success {
13 | width: 100%;
14 | }
15 | }
16 | }
17 |
18 | .home-carousel {
19 | @include rem(margin, 40px 0 40px 0);
20 | border: 1px solid #bbb;
21 | box-shadow: rgba(0,0,0,0.0980392) 0 1px 4px;
22 | img {
23 | height:100%;
24 | width:100%;
25 | }
26 | @include media-breakpoint-down(xs) {
27 | display: none;
28 | }
29 | }
30 |
31 | .home-page-cards-background {
32 | background-color: #ccc;
33 | @include rem(padding, 40px 0 40px 0);
34 | @include media-breakpoint-down(xs) {
35 | background-color: #fff;
36 | }
37 | }
38 |
39 | .home-card {
40 | background-color: #fff;
41 | float: left;
42 | width: 100%;
43 | border: 1px solid #bbb;
44 | box-shadow: rgba(0,0,0,0.0980392) 0 1px 4px;
45 | @include media-breakpoint-down(xs) {
46 | box-shadow: none;
47 | border: 0px;
48 | }
49 | img {
50 | &:hover {
51 | opacity: 0.9;
52 | }
53 | }
54 | @include media-breakpoint-down(md) {
55 | @include rem(margin-bottom, 40px);
56 | img {
57 | float: left;
58 | width: 50%;
59 | }
60 | }
61 | @include media-breakpoint-down(sm) {
62 | @include rem(padding, 0);
63 | img {
64 | float: left;
65 | width: 100%;
66 | @include rem(margin-bottom, 15px);
67 | }
68 | }
69 | .home-card-content {
70 | float: left;
71 | width: 100%;
72 | @include rem(padding, 30px);
73 | @include media-breakpoint-down(md) {
74 | width: 50%;
75 | }
76 | @include media-breakpoint-down(xs) {
77 | width: 100%;
78 | padding: 0;
79 | }
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/_scss/typography/_headings.scss:
--------------------------------------------------------------------------------
1 | /* Headings */
2 |
3 | h1 {
4 | font-size: 28px;
5 | }
6 |
7 | h2 {
8 | font-size: 24px;
9 | }
10 |
--------------------------------------------------------------------------------
/feed.xml:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 |
6 |
7 | {{ site.title | xml_escape }}
8 | {{ site.description | xml_escape }}
9 | {{ site.url }}{{ site.baseurl }}/
10 |
11 | {{ site.time | date_to_rfc822 }}
12 | {{ site.time | date_to_rfc822 }}
13 | Jekyll v{{ jekyll.version }}
14 | {% for post in site.posts limit:10 %}
15 | -
16 |
{{ post.title | xml_escape }}
17 | {{ post.content | xml_escape }}
18 | {{ post.date | date_to_rfc822 }}
19 | {{ post.url | prepend: site.baseurl | prepend: site.url }}
20 | {{ post.url | prepend: site.baseurl | prepend: site.url }}
21 | {% for tag in post.tags %}
22 | {{ tag | xml_escape }}
23 | {% endfor %}
24 | {% for cat in post.categories %}
25 | {{ cat | xml_escape }}
26 | {% endfor %}
27 |
28 | {% endfor %}
29 |
30 |
31 |
--------------------------------------------------------------------------------
/fonts/FontAwesome/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/soulroll/jekyll-bootstrap-5/ce7fe2c049953039e6886f4c4c50050341c31610/fonts/FontAwesome/FontAwesome.otf
--------------------------------------------------------------------------------
/fonts/FontAwesome/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/soulroll/jekyll-bootstrap-5/ce7fe2c049953039e6886f4c4c50050341c31610/fonts/FontAwesome/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/fonts/FontAwesome/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/soulroll/jekyll-bootstrap-5/ce7fe2c049953039e6886f4c4c50050341c31610/fonts/FontAwesome/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/fonts/FontAwesome/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/soulroll/jekyll-bootstrap-5/ce7fe2c049953039e6886f4c4c50050341c31610/fonts/FontAwesome/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/fonts/FontAwesome/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/soulroll/jekyll-bootstrap-5/ce7fe2c049953039e6886f4c4c50050341c31610/fonts/FontAwesome/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp');
2 | var sass = require('gulp-sass')(require('sass'));
3 | var cssnano = require('cssnano');
4 | var autoprefixer = require('autoprefixer');
5 | var sourcemaps = require('gulp-sourcemaps');
6 | var postcss = require('gulp-postcss');
7 | var cp = require('child_process');
8 | var jekyll = process.platform === 'win32' ? 'jekyll.bat' : 'jekyll';
9 | var concatjs = require('gulp-concat');
10 | var browserSync = require('browser-sync').create();
11 |
12 | var paths = {
13 | styles: {
14 | src: '_scss/**/*.scss',
15 | dest: '_site/css',
16 | destsecond: 'css'
17 | },
18 | scripts: {
19 | src: '_js/src/*.js',
20 | dest: '_site/js/dist/',
21 | destsecond: 'js/dist/'
22 | }
23 | };
24 |
25 | function jekyllBuild() {
26 | return cp.spawn( jekyll , ['build'], {stdio: 'inherit'})
27 | }
28 |
29 | function style() {
30 | return gulp.src(paths.styles.src)
31 | .pipe(sass({
32 | includePaths: ['scss'],
33 | outputStyle: 'expanded',
34 | onError: browserSync.notify
35 | }))
36 | .pipe(postcss([
37 | autoprefixer()
38 | ]))
39 | .pipe(gulp.dest(paths.styles.dest))
40 | .pipe(browserSync.reload({stream:true}))
41 | .pipe(gulp.dest(paths.styles.destsecond));
42 | }
43 |
44 | function js() {
45 | return gulp.src([
46 | './node_modules/jquery/dist/jquery.min.js',
47 | './node_modules/bootstrap/dist/js/bootstrap.bundle.js',
48 | './node_modules/jquery-match-height/dist/jquery.matchHeight-min.js',
49 | paths.scripts.src
50 | ])
51 | .pipe(concatjs('app.bundle.js'))
52 | .pipe(gulp.dest(paths.scripts.dest))
53 | .pipe(browserSync.reload({stream:true}))
54 | }
55 |
56 | function browserSyncServe(done) {
57 | browserSync.init({
58 | server: {
59 | baseDir: "_site"
60 | }
61 | })
62 | done();
63 | }
64 |
65 | function browserSyncReload(done) {
66 | browserSync.reload();
67 | done();
68 | }
69 |
70 | function watch() {
71 | gulp.watch(paths.styles.src, style)
72 | gulp.watch(paths.scripts.src, js)
73 | gulp.watch(
74 | [
75 | '*.html',
76 | '_layouts/*.html',
77 | '_pages/*',
78 | '_posts/*',
79 | '_data/*',
80 | '_includes/*'
81 | ],
82 | gulp.series(jekyllBuild, browserSyncReload));
83 | }
84 |
85 | gulp.task('default', gulp.parallel(jekyllBuild, browserSyncServe, watch))
86 |
--------------------------------------------------------------------------------
/js/dist/app.bundle.js:
--------------------------------------------------------------------------------
1 | !function o(s,a,l){function c(t,e){if(!a[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var i=new Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return c(s[t][1][e]||e)},r,r.exports,o,s,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;ethis._items.length-1||e<0))if(this._isSliding)O(this._element).one(z.SLID,function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right
',trigger:"hover focus",title:"",delay:0,html:!(ht={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"}),selector:!(pt={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"}),placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},vt="out",yt={HIDE:"hide"+ct,HIDDEN:"hidden"+ct,SHOW:(gt="show")+ct,SHOWN:"shown"+ct,INSERTED:"inserted"+ct,CLICK:"click"+ct,FOCUSIN:"focusin"+ct,FOCUSOUT:"focusout"+ct,MOUSEENTER:"mouseenter"+ct,MOUSELEAVE:"mouseleave"+ct},_t="fade",bt="show",wt=".tooltip-inner",Et=".arrow",Tt="hover",Ct="focus",xt="click",St="manual",At=function(){function i(e,t){if(void 0===u)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var e=i.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=st(e.currentTarget).data(t);n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),st(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(st(this.getTipElement()).hasClass(bt))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),st.removeData(this.element,this.constructor.DATA_KEY),st(this.element).off(this.constructor.EVENT_KEY),st(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&st(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===st(this.element).css("display"))throw new Error("Please use show on visible elements");var e=st.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){st(this.element).trigger(e);var n=st.contains(this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=En.getUID(this.constructor.NAME);i.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&st(i).addClass(_t);var o="function"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,s=this._getAttachment(o);this.addAttachmentClass(s);var a=!1===this.config.container?document.body:st(this.config.container);st(i).data(this.constructor.DATA_KEY,this),st.contains(this.element.ownerDocument.documentElement,this.tip)||st(i).appendTo(a),st(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,i,{placement:s,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Et},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){t._handlePopperPlacementChange(e)}}),st(i).addClass(bt),"ontouchstart"in document.documentElement&&st(document.body).children().on("mouseover",null,st.noop);var l=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,st(t.element).trigger(t.constructor.Event.SHOWN),e===vt&&t._leave(null,t)};if(st(this.tip).hasClass(_t)){var c=En.getTransitionDurationFromElement(this.tip);st(this.tip).one(En.TRANSITION_END,l).emulateTransitionEnd(c)}else l()}},e.hide=function(e){var t=this,n=this.getTipElement(),i=st.Event(this.constructor.Event.HIDE),r=function(){t._hoverState!==gt&&n.parentNode&&n.parentNode.removeChild(n),t._cleanTipClass(),t.element.removeAttribute("aria-describedby"),st(t.element).trigger(t.constructor.Event.HIDDEN),null!==t._popper&&t._popper.destroy(),e&&e()};if(st(this.element).trigger(i),!i.isDefaultPrevented()){if(st(n).removeClass(bt),"ontouchstart"in document.documentElement&&st(document.body).children().off("mouseover",null,st.noop),this._activeTrigger[xt]=!1,this._activeTrigger[Ct]=!1,this._activeTrigger[Tt]=!1,st(this.tip).hasClass(_t)){var o=En.getTransitionDurationFromElement(n);st(n).one(En.TRANSITION_END,r).emulateTransitionEnd(o)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(e){st(this.getTipElement()).addClass(ft+"-"+e)},e.getTipElement=function(){return this.tip=this.tip||st(this.config.template)[0],this.tip},e.setContent=function(){var e=st(this.getTipElement());this.setElementContent(e.find(wt),this.getTitle()),e.removeClass(_t+" "+bt)},e.setElementContent=function(e,t){var n=this.config.html;"object"==typeof t&&(t.nodeType||t.jquery)?n?st(t).parent().is(e)||e.empty().append(t):e.text(st(t).text()):e[n?"html":"text"](t)},e.getTitle=function(){var e=this.element.getAttribute("data-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),e},e._getAttachment=function(e){return ht[e.toUpperCase()]},e._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(e){if("click"===e)st(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(e){return i.toggle(e)});else if(e!==St){var t=e===Tt?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=e===Tt?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;st(i.element).on(t,i.config.selector,function(e){return i._enter(e)}).on(n,i.config.selector,function(e){return i._leave(e)})}st(i.element).closest(".modal").on("hide.bs.modal",function(){return i.hide()})}),this.config.selector?this.config=c({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var e=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==e)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||st(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),st(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusin"===e.type?Ct:Tt]=!0),st(t.getTipElement()).hasClass(bt)||t._hoverState===gt?t._hoverState=gt:(clearTimeout(t._timeout),t._hoverState=gt,t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){t._hoverState===gt&&t.show()},t.config.delay.show):t.show())},e._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||st(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),st(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusout"===e.type?Ct:Tt]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=vt,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){t._hoverState===vt&&t.hide()},t.config.delay.hide):t.hide())},e._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},e._getConfig=function(e){return"number"==typeof(e=c({},this.constructor.Default,st(this.element).data(),"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),En.typeCheckConfig(at,e,this.constructor.DefaultType),e},e._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},e._cleanTipClass=function(){var e=st(this.getTipElement()),t=e.attr("class").match(dt);null!==t&&0
'}),Ht=c({},In.DefaultType,{content:"(string|element|function)"}),Mt="fade",Ft=".popover-header",Wt=".popover-body",qt={HIDE:"hide"+Nt,HIDDEN:"hidden"+Nt,SHOW:(Rt="show")+Nt,SHOWN:"shown"+Nt,INSERTED:"inserted"+Nt,CLICK:"click"+Nt,FOCUSIN:"focusin"+Nt,FOCUSOUT:"focusout"+Nt,MOUSEENTER:"mouseenter"+Nt,MOUSELEAVE:"mouseleave"+Nt},Bt=function(e){var t,n;function i(){return e.apply(this,arguments)||this}n=e,(t=i).prototype=Object.create(n.prototype),(t.prototype.constructor=t).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(e){Dt(this.getTipElement()).addClass(jt+"-"+e)},r.getTipElement=function(){return this.tip=this.tip||Dt(this.config.template)[0],this.tip},r.setContent=function(){var e=Dt(this.getTipElement());this.setElementContent(e.find(Ft),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this.element)),this.setElementContent(e.find(Wt),t),e.removeClass(Mt+" "+Rt)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var e=Dt(this.getTipElement()),t=e.attr("class").match(Lt);null!==t&&0=this._offsets[r]&&(void 0===this._offsets[r+1]||e li > .active",yn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',_n=".dropdown-toggle",bn="> .dropdown-menu .active",wn=function(){function i(e){this._element=e}var e=i.prototype;return e.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&rn(this._element).hasClass(un)||rn(this._element).hasClass(fn))){var e,i,t=rn(this._element).closest(mn)[0],r=En.getSelectorFromElement(this._element);if(t){var o="UL"===t.nodeName?vn:gn;i=(i=rn.makeArray(rn(t).find(o)))[i.length-1]}var s=rn.Event(ln.HIDE,{relatedTarget:this._element}),a=rn.Event(ln.SHOW,{relatedTarget:i});if(i&&rn(i).trigger(s),rn(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=rn(r)[0]),this._activate(this._element,t);var l=function(){var e=rn.Event(ln.HIDDEN,{relatedTarget:n._element}),t=rn.Event(ln.SHOWN,{relatedTarget:i});rn(i).trigger(e),rn(n._element).trigger(t)};e?this._activate(e,e.parentNode,l):l()}}},e.dispose=function(){rn.removeData(this._element,on),this._element=null},e._activate=function(e,t,n){var i=this,r=("UL"===t.nodeName?rn(t).find(vn):rn(t).children(gn))[0],o=n&&r&&rn(r).hasClass(dn),s=function(){return i._transitionComplete(e,r,n)};if(r&&o){var a=En.getTransitionDurationFromElement(r);rn(r).one(En.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},e._transitionComplete=function(e,t,n){if(t){rn(t).removeClass(pn+" "+un);var i=rn(t.parentNode).find(bn)[0];i&&rn(i).removeClass(un),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}if(rn(e).addClass(un),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),En.reflow(e),rn(e).addClass(pn),e.parentNode&&rn(e.parentNode).hasClass(cn)){var r=rn(e).closest(hn)[0];r&&rn(r).find(_n).addClass(un),e.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var e=rn(this),t=e.data(on);if(t||(t=new i(this),e.data(on,t)),"string"==typeof n){if(void 0===t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.1.1"}}]),i}(),rn(document).on(ln.CLICK_DATA_API,yn,function(e){e.preventDefault(),wn._jQueryInterface.call(rn(this),"show")}),rn.fn.tab=wn._jQueryInterface,rn.fn.tab.Constructor=wn,rn.fn.tab.noConflict=function(){return rn.fn.tab=an,wn._jQueryInterface},wn);!function(e){if(void 0===e)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=e.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(t),e.Util=En,e.Alert=Tn,e.Button=Cn,e.Carousel=xn,e.Collapse=Sn,e.Dropdown=An,e.Modal=Dn,e.Popover=kn,e.Scrollspy=Nn,e.Tab=On,e.Tooltip=In,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof n&&void 0!==t?r(n,e("jquery"),e("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],r):r(i.bootstrap={},i.jQuery,i.Popper)},{jquery:4,"popper.js":6}],3:[function(t,n,e){!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):void 0!==n&&n.exports?n.exports=e(t("jquery")):e(jQuery)}(function(l){var i=-1,r=-1,c=function(e){return parseFloat(e)||0},u=function(e){var t=l(e),i=null,r=[];return t.each(function(){var e=l(this),t=e.offset().top-c(e.css("margin-top")),n=0r&&(r=e.outerHeight(!1)),t?e.attr("style",t):e.css("display","")})}n.each(function(){var e=l(this),t=0;o.target&&e.is(o.target)||("border-box"!==e.css("box-sizing")&&(t+=c(e.css("border-top-width"))+c(e.css("border-bottom-width")),t+=c(e.css("padding-top"))+c(e.css("padding-bottom"))),e.css(o.property,r-t+"px"))})}),a.each(function(){var e=l(this);e.attr("style",e.data("style-cache")||null)}),d._maintainScroll&&l(window).scrollTop(r/s*l("html").outerHeight(!0)),this},d._applyDataApi=function(){var n={};l("[data-match-height], [data-mh]").each(function(){var e=l(this),t=e.attr("data-mh")||e.attr("data-match-height");n[t]=t in n?n[t].add(e):e}),l.each(n,function(){this.matchHeight(!0)})};var o=function(e){d._beforeUpdate&&d._beforeUpdate(e,d._groups),l.each(d._groups,function(){d._apply(this.elements,this.options)}),d._afterUpdate&&d._afterUpdate(e,d._groups)};d._update=function(e,t){if(t&&"resize"===t.type){var n=l(window).width();if(n===i)return;i=n}e?-1===r&&(r=setTimeout(function(){o(t),r=-1},d._throttle)):o(t)},l(d._applyDataApi);var e=l.fn.on?"on":"bind";l(window)[e]("load",function(e){d._update(!1,e)}),l(window)[e]("resize orientationchange",function(e){d._update(!0,e)})})},{jquery:4}],4:[function(e,n,t){!function(e,t){"use strict";"object"==typeof n&&"object"==typeof n.exports?n.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(T,e){"use strict";var t=[],C=T.document,i=Object.getPrototypeOf,a=t.slice,m=t.concat,l=t.push,r=t.indexOf,n={},o=n.toString,g=n.hasOwnProperty,s=g.toString,c=s.call(Object),v={},y=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},_=function(e){return null!=e&&e===e.window},u={type:!0,src:!0,noModule:!0};function b(e,t,n){var i,r=(t=t||C).createElement("script");if(r.text=e,n)for(i in u)n[i]&&(r[i]=n[i]);t.head.appendChild(r).parentNode.removeChild(r)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var x=function(e,t){return new x.fn.init(e,t)},f=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!y(e)&&!_(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+H+")"+H+"*"),z=new RegExp("="+H+"*([^\\]'\"]*?)"+H+"*\\]","g"),K=new RegExp(F),$=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+H+"*(even|odd|(([+-]|)(\\d*)n|)"+H+"*(?:([+-]|)"+H+"*(\\d+)|))"+H+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+H+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+H+"*((?:-\\d)?\\d*)"+H+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,G=/^[^{]+\{\s*\[native \w/,X=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/[+~]/,J=new RegExp("\\\\([\\da-f]{1,6}"+H+"?|("+H+")|.)","ig"),ee=function(e,t,n){var i="0x"+t-65536;return i!=i||n?t:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){E()},re=ye(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{O.apply(t=j.call(y.childNodes),y.childNodes),t[y.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){N.apply(e,j.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function oe(e,t,n,i){var r,o,s,a,l,c,u,f=t&&t.ownerDocument,d=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==d&&9!==d&&11!==d)return n;if(!i&&((t?t.ownerDocument||t:y)!==T&&E(t),t=t||T,C)){if(11!==d&&(l=X.exec(e)))if(r=l[1]){if(9===d){if(!(s=t.getElementById(r)))return n;if(s.id===r)return n.push(s),n}else if(f&&(s=f.getElementById(r))&&v(t,s)&&s.id===r)return n.push(s),n}else{if(l[2])return O.apply(n,t.getElementsByTagName(e)),n;if((r=l[3])&&p.getElementsByClassName&&t.getElementsByClassName)return O.apply(n,t.getElementsByClassName(r)),n}if(p.qsa&&!A[e+" "]&&(!g||!g.test(e))){if(1!==d)f=t,u=e;else if("object"!==t.nodeName.toLowerCase()){for((a=t.getAttribute("id"))?a=a.replace(te,ne):t.setAttribute("id",a=x),o=(c=h(e)).length;o--;)c[o]="#"+a+" "+ve(c[o]);u=c.join(","),f=Z.test(e)&&me(t.parentNode)||t}if(u)try{return O.apply(n,f.querySelectorAll(u)),n}catch(e){}finally{a===x&&t.removeAttribute("id")}}}return m(e.replace(q,"$1"),t,n,i)}function se(){var i=[];return function e(t,n){return i.push(t+" ")>b.cacheLength&&delete e[i.shift()],e[t+" "]=n}}function ae(e){return e[x]=!0,e}function le(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split("|"),i=n.length;i--;)b.attrHandle[n[i]]=t}function ue(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function de(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function pe(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function he(s){return ae(function(o){return o=+o,ae(function(e,t){for(var n,i=s([],e.length,o),r=i.length;r--;)e[n=i[r]]&&(e[n]=!(t[n]=e[n]))})})}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in p=oe.support={},r=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},E=oe.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:y;return i!==T&&9===i.nodeType&&i.documentElement&&(s=(T=i).documentElement,C=!r(T),y!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ie,!1):n.attachEvent&&n.attachEvent("onunload",ie)),p.attributes=le(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=le(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=G.test(T.getElementsByClassName),p.getById=le(function(e){return s.appendChild(e).id=x,!T.getElementsByName||!T.getElementsByName(x).length}),p.getById?(b.filter.ID=function(e){var t=e.replace(J,ee);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(J,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&C){var n,i,r,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(r=t.getElementsByName(e),i=0;o=r[i++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=p.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},b.find.CLASS=p.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&C)return t.getElementsByClassName(e)},a=[],g=[],(p.qsa=G.test(T.querySelectorAll))&&(le(function(e){s.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+H+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+H+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+x+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+x+"+*").length||g.push(".#.+[+~]")}),le(function(e){e.innerHTML=" ";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+H+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),s.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(p.matchesSelector=G.test(u=s.matches||s.webkitMatchesSelector||s.mozMatchesSelector||s.oMatchesSelector||s.msMatchesSelector))&&le(function(e){p.disconnectedMatch=u.call(e,"*"),u.call(e,"[s!='']:x"),a.push("!=",F)}),g=g.length&&new RegExp(g.join("|")),a=a.length&&new RegExp(a.join("|")),t=G.test(s.compareDocumentPosition),v=t||G.test(s.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===y&&v(y,e)?-1:t===T||t.ownerDocument===y&&v(y,t)?1:l?L(l,e)-L(l,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!r||!o)return e===T?-1:t===T?1:r?-1:o?1:l?L(l,e)-L(l,t):0;if(r===o)return ue(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[i]===a[i];)i++;return i?ue(s[i],a[i]):s[i]===y?-1:a[i]===y?1:0}),T},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&E(e),t=t.replace(z,"='$1']"),p.matchesSelector&&C&&!A[t+" "]&&(!a||!a.test(t))&&(!g||!g.test(t)))try{var n=u.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(J,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(J,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&K.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(J,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=d[e+" "];return t||(t=new RegExp("(^|"+H+")"+e+"("+H+"|$)"))&&d(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,i,r){return function(e){var t=oe.attr(e,n);return null==t?"!="===i:!i||(t+="","="===i?t===r:"!="===i?t!==r:"^="===i?r&&0===t.indexOf(r):"*="===i?r&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function I(e,n,i){return y(n)?x.grep(e,function(e,t){return!!n.call(e,t,e)!==i}):n.nodeType?x.grep(e,function(e){return e===n!==i}):"string"!=typeof n?x.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(x.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:N.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),D.test(i[1])&&x.isPlainObject(t))for(i in t)y(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(r=C.getElementById(i[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(x):x.makeArray(e,this)}).prototype=x.fn,k=x(C);var O=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function L(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}x.fn.extend({has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]+)/i,ue=/^$|^module$|\/(?:java|ecma)script/i,fe={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function de(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?x.merge([e],n):n}function pe(e,t){for(var n=0,i=e.length;nx",v.noCloneChecked=!!he.cloneNode(!0).lastChild.defaultValue;var ye=C.documentElement,_e=/^key/,be=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,we=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Te(){return!1}function Ce(){try{return C.activeElement}catch(e){}}function xe(e,t,n,i,r,o){var s,a;if("object"==typeof t){for(a in"string"!=typeof n&&(i=i||n,n=void 0),t)xe(e,a,n,i,t[a],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),!1===r)r=Te;else if(!r)return e;return 1===o&&(s=r,(r=function(e){return x().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=x.guid++)),e.each(function(){x.event.add(this,t,r,i,n)})}x.event={global:{},add:function(t,e,n,i,r){var o,s,a,l,c,u,f,d,p,h,m,g=Y.get(t);if(g)for(n.handler&&(n=(o=n).handler,r=o.selector),r&&x.find.matchesSelector(ye,r),n.guid||(n.guid=x.guid++),(l=g.events)||(l=g.events={}),(s=g.handle)||(s=g.handle=function(e){return void 0!==x&&x.event.triggered!==e.type?x.event.dispatch.apply(t,arguments):void 0}),c=(e=(e||"").match(P)||[""]).length;c--;)p=m=(a=we.exec(e[c])||[])[1],h=(a[2]||"").split(".").sort(),p&&(f=x.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,f=x.event.special[p]||{},u=x.extend({type:p,origType:m,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&x.expr.match.needsContext.test(r),namespace:h.join(".")},o),(d=l[p])||((d=l[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,h,s)||t.addEventListener&&t.addEventListener(p,s)),f.add&&(f.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?d.splice(d.delegateCount++,0,u):d.push(u),x.event.global[p]=!0)},remove:function(e,t,n,i,r){var o,s,a,l,c,u,f,d,p,h,m,g=Y.hasData(e)&&Y.get(e);if(g&&(l=g.events)){for(c=(t=(t||"").match(P)||[""]).length;c--;)if(p=m=(a=we.exec(t[c])||[])[1],h=(a[2]||"").split(".").sort(),p){for(f=x.event.special[p]||{},d=l[p=(i?f.delegateType:f.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=d.length;o--;)u=d[o],!r&&m!==u.origType||n&&n.guid!==u.guid||a&&!a.test(u.namespace)||i&&i!==u.selector&&("**"!==i||!u.selector)||(d.splice(o,1),u.selector&&d.delegateCount--,f.remove&&f.remove.call(e,u));s&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,g.handle)||x.removeEvent(e,p,g.handle),delete l[p])}else for(p in l)x.event.remove(e,p+t[c],n,i,!0);x.isEmptyObject(l)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,i,r,o,s,a=x.event.fix(e),l=new Array(arguments.length),c=(Y.get(this,"events")||{})[a.type]||[],u=x.event.special[a.type]||{};for(l[0]=a,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/