- Sponsor
-
Notifications
You must be signed in to change notification settings - Fork 473
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
0 parents
commit 4988779
Showing
129 changed files
with
8,120 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
*.gem | ||
.bundle | ||
.jekyll-cache | ||
.sass-cache | ||
_site | ||
Gemfile.lock |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
layout: default | ||
title: 404 | ||
permalink: /404.html | ||
--- | ||
<div class="text-center"> | ||
<h1 class="mt-5"><span class="badge badge-dark font-weight-normal">404</span></h1> | ||
<h1 class="display-1 mt-4 mb-4"> Page not found!</h1> | ||
<p>Please use the search bar from the bottom left or visit our <a href="{{site.baseurl}}/">homepage</a>!</p> | ||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# frozen_string_literal: true | ||
|
||
source "https://rubygems.org" | ||
|
||
|
||
# Hello! This is where you manage which Jekyll version is used to run. | ||
# When you want to use a different version, change it below, save the | ||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: | ||
# | ||
# bundle exec jekyll serve | ||
# | ||
|
||
# If you have any plugins, put them here! | ||
gem 'wdm', '>= 0.1.0' if Gem.win_platform? | ||
group :jekyll_plugins do | ||
gem 'jekyll-feed' | ||
gem 'jekyll-sitemap' | ||
gem 'jekyll-paginate' | ||
gem 'jekyll-seo-tag' | ||
gem 'jekyll-archives' | ||
gem 'tzinfo-data' | ||
gem 'tzinfo' | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
The MIT License (MIT) | ||
|
||
Copyright (c) 2021 wowthemesnet | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in | ||
all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Affiliates - Free Jekyll Theme | ||
|
||
[Live Demo](https://github.com/wowthemesnet/affiliates-jekyll-theme) | [Docs & Download](https://bootstrapstarter.com/template-affiliates-bootstrap-jekyll/) | [Buy me a coffee](https://www.wowthemes.net/donate/) | ||
|
||
 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
title: "Affiliates" | ||
email: [email protected] | ||
timezone: UTC | ||
baseurl: "" | ||
permalink: "/:title/" | ||
logo: 'assets/images/logo.png' | ||
favicon: 'assets/images/favicon.ico' | ||
author: Sal | ||
paginate: 30 | ||
disqus: 'demowebsite' | ||
locale: en_us | ||
lang: en_us | ||
feed_items: 10 | ||
feed_update_period: daily | ||
feed_update_frequency: 1 | ||
markdown: kramdown | ||
kramdown: | ||
syntax_highlighter_opts: | ||
disable: true | ||
sass: | ||
sass_dir: _sass | ||
style: :compressed | ||
ganalytics: UA-113961478-1 | ||
|
||
# Authors | ||
authors: | ||
sal: | ||
name: Sal | ||
display_name: Sal | ||
avatar: 'assets/images/sal.png' | ||
email: [email protected] | ||
web: https://www.wowthemes.net/category/jekyll-themes/ | ||
twitter: https://twitter.com/wowthemesnet | ||
description: "Author of Affiliates, a template available for WordPress, HTML, Ghost and Jekyll. You are currently previewing Jekyll template demo." | ||
john: | ||
name: John | ||
display_name: John | ||
avatar: 'assets/images/john.png' | ||
email: [email protected] | ||
web: https://www.wowthemes.net/category/jekyll-themes/ | ||
twitter: https://twitter.com/wowthemesnet | ||
description: "This is the author box. Write a short description of the author here. You are currently previewing Affiliates theme demo, a Jekyll template compatible with Github pages." | ||
|
||
# Social | ||
social: | ||
instagram: https://www.instagram.com/bootstrapstarter/ | ||
facebook: https://www.facebook.com/bootstrapstartercom-346329609045284 | ||
twitter: https://twitter.com/bstartercom | ||
|
||
# Plugins | ||
plugins: | ||
- jekyll-paginate | ||
- jekyll-sitemap | ||
- jekyll-feed | ||
- jekyll-seo-tag | ||
- jekyll-archives |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Top Menu | ||
topmenu: | ||
|
||
- title: Home | ||
url: "" | ||
|
||
- title: About | ||
url: "about/" | ||
|
||
- title: Contact | ||
url: "contact/" | ||
|
||
- title: Get this theme | ||
url: https://bootstrapstarter.com/template-affiliates-bootstrap-jekyll/ | ||
class: "ml-2 btn btn-dark text-white px-3" | ||
external: true | ||
|
||
# Footer Menu | ||
footermenu: | ||
|
||
- title: Home | ||
url: "" | ||
|
||
- title: Privacy Policy | ||
url: "privacy-policy/" | ||
|
||
- title: Contact | ||
url: "contact/" | ||
|
||
- title: Download | ||
url: https://bootstrapstarter.com/template-affiliates-bootstrap-jekyll/ | ||
external: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<section class="disqus"> | ||
<div id="disqus_thread"></div> | ||
<script type="text/javascript"> | ||
var disqus_shortname = '{{site.disqus}}'; | ||
var disqus_developer = 0; | ||
(function() { | ||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; | ||
dsq.src = window.location.protocol + '//' + disqus_shortname + '.disqus.com/embed.js'; | ||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); | ||
})(); | ||
</script> | ||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> | ||
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> | ||
</section> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<!-- Go to your Mailchimp account/Lists/Sign Up Forms/Embedded forms and replace the code below with your own --> | ||
|
||
<!-- Begin MailChimp Signup Form --> | ||
<link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css"> | ||
<style type="text/css"> | ||
#mc_embed_signup{background:#fff; clear:left; } | ||
/* Add your own MailChimp form style overrides in your site stylesheet or in this style block. | ||
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */ | ||
</style> | ||
<div id="mc_embed_signup"> | ||
<form action="https://wowthemes.us11.list-manage.com/subscribe/post?u=8aeb20a530e124561927d3bd8&id=8c3d2d214b" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> | ||
<div id="mc_embed_signup_scroll"> | ||
<h2>Sign up to get our weekly free guide to selling digital downloads</h2> | ||
|
||
<div class="mc-field-group"> | ||
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" placeholder="E-mail Address"> | ||
</div> | ||
<div id="mce-responses" class="clear"> | ||
<div class="response" id="mce-error-response" style="display:none"></div> | ||
<div class="response" id="mce-success-response" style="display:none"></div> | ||
</div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--> | ||
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_8aeb20a530e124561927d3bd8_8c3d2d214b" tabindex="-1" value=""></div> | ||
<div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div> | ||
</div> | ||
</form> | ||
</div> | ||
<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script><script type='text/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[3]='MMERGE3';ftypes[3]='text';fnames[1]='MMERGE1';ftypes[1]='text';fnames[2]='MMERGE2';ftypes[2]='text';fnames[4]='MMERGE4';ftypes[4]='text';fnames[5]='MMERGE5';ftypes[5]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script> | ||
<!--End mc_embed_signup--> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<nav class="pagination" role="pagination"> | ||
{% if paginator.previous_page %} | ||
{% if paginator.previous_page == 1 %} | ||
<a class="newer-posts" href="{{site.baseurl}}/" title="Previous Page">« Newer</a> | ||
{% else %} | ||
<a class="newer-posts" href="{{ paginator.previous_page_path | prepend: site.baseurl | replace: '//', '/' }}" title="Previous Page">« Newer </a> | ||
{% endif %} | ||
{% endif %} | ||
<span class="page-number d-none"> Page {{paginator.page}} of {{paginator.total_pages}} </span> | ||
{% if paginator.next_page %} | ||
<a class="older-posts" href="{{ paginator.next_page_path | prepend: site.baseurl | replace: '//', '/' }}" title="Next Page">Older »</a> | ||
{% endif %} | ||
</nav> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<!-- begin post --> | ||
{% assign author = site.authors[post.author] %} | ||
<div class="card"> | ||
<a href="{{ post.url | absolute_url }}"> | ||
{% if post.image %} <img class="rounded mb-4" src="{{ site.baseurl }}/{{ post.image }}" alt="{{ post.title }}"> {% endif %} | ||
</a> | ||
<div class="card-block"> | ||
<h2 class="card-title h4 serif-font"><a href="{{ post.url | absolute_url }}">{{ post.title }}</a></h2> | ||
<p class="card-text text-muted">{{ post.excerpt | strip_html | truncatewords:15 }}</p> | ||
<div class="metafooter"> | ||
<div class="wrapfooter small d-flex align-items-center"> | ||
<span class="author-meta"> | ||
By <span class="post-name"> {% if post.author %}{{ author.display_name }}{% else %}{{ site.author }}{% endif %}, </span> | ||
on <span class="post-date">{{ post.date | date_to_string }}</span> | ||
</span> | ||
<div class="clearfix"></div> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
<!-- end post --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<div class="sidebar sticky-top"> | ||
<div class="sidebar-section"> | ||
<h5><span>Newsletter</span></h5> | ||
{% include newsletter.html %} | ||
</div> | ||
<div class="sidebar-section"> | ||
<h5><span>Your Ad Here</span></h5> | ||
<img src="{{site.baseurl}}/assets/images/ad.png"> | ||
</div> | ||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
--- | ||
title: "Categories" | ||
layout: default | ||
permalink: "/categories.html" | ||
--- | ||
{% for category in site.categories %} | ||
<h4 class="mt-5 mb-4 pb-2 border-bottom" id="{{ category[0] | replace: " ","-" }}"><span class="text-capitalize small font-weight-bold">In "{{ category[0] }}"</span></h4> | ||
<div class="row"> | ||
{% assign pages_list = category[1] %} | ||
{% for post in pages_list %} | ||
{% if post.title != null %} | ||
{% if group == null or group == post.group %} | ||
<div class="col-md-4 mb-5"> | ||
{% include postbox.html %} | ||
</div> | ||
{% endif %} | ||
{% endif %} | ||
{% endfor %} | ||
{% assign pages_list = nil %} | ||
{% assign group = nil %} | ||
</div> | ||
{% endfor %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="utf-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | ||
<link rel="icon" href="{{ site.baseurl }}/{{site.favicon}}"> | ||
|
||
<title>{{ page.title }} | {{site.title}}</title> | ||
|
||
{% seo %} | ||
|
||
<link href="{{ site.baseurl }}/assets/css/theme.css" rel="stylesheet"> | ||
|
||
<!-- custom CSS - Remove this if you don't use it or choose to customize the stylesheet with sass--> | ||
<link href="{{ site.baseurl }}/assets/css/custom.css" rel="stylesheet"> | ||
<!-- custom CSS end--> | ||
|
||
{% if jekyll.environment == "production" %} | ||
<!-- Global site tag (gtag.js) - Google Analytics --> | ||
<script async src="https://www.googletagmanager.com/gtag/js?id={{site.ganalytics}}"></script> | ||
<script> | ||
window.dataLayer = window.dataLayer || []; | ||
function gtag(){dataLayer.push(arguments);} | ||
gtag('js', new Date()); | ||
gtag('config', '{{site.ganalytics}}'); | ||
</script> | ||
{% endif %} | ||
|
||
</head> | ||
|
||
{% capture layout %}{% if page.layout %}layout-{{ page.layout }}{% endif %}{% endcapture %} | ||
<body class="{{ layout }}"> | ||
|
||
|
||
<!-- Menu Navigation | ||
================================================== --> | ||
<div class="navigation-wrap start-header start-style"> | ||
<nav class="navbar navbar-expand-lg"> | ||
<div class="container"> | ||
|
||
<a class="navbar-brand text-dark font-weight-bold big d-flex align-items-center" href="/"> | ||
{% if site.logo %} | ||
<img class="mr-2" src="{{site.baseurl}}/{{site.logo}}" alt="logo"> | ||
{% else %} | ||
<span class="d-none d-md-inline-block">{{ site.title }}</span> | ||
{% endif %} | ||
</a> | | ||
|
||
|
||
<div class="d-flex align-items-center"> | ||
|
||
<span class="ml-3 text-muted small">Follow</span> | ||
|
||
<a class="d-inline-block social-icon" target="_blank" href="{{site.social.twitter}}"> | ||
<svg xmlns="http://www.w3.org/2000/svg" width="19" height="19" fill="currentColor" class="bi bi-twitter" viewBox="0 0 16 16"> | ||
<path d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z"/> | ||
</svg> | ||
</a> | ||
|
||
<a class="d-inline-block social-icon" target="_blank" href="{{site.social.instagram}}"> | ||
<svg xmlns="http://www.w3.org/2000/svg" width="19" height="19" 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> | ||
|
||
<a class="d-inline-block social-icon" target="_blank" href="{{site.social.facebook}}"> | ||
<svg xmlns="http://www.w3.org/2000/svg" width="19" height="19" fill="currentColor" class="bi bi-facebook" viewBox="0 0 16 16"> | ||
<path d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z"/> | ||
</svg> | ||
</a> | ||
|
||
</div> | ||
|
||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"> | ||
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" fill="currentColor" class="bi bi-three-dots-vertical" viewBox="0 0 16 16"> | ||
<path d="M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/> | ||
</svg> | ||
</button> | ||
|
||
<div class="collapse navbar-collapse" id="navbarResponsive"> | ||
<ul class="navbar-nav ml-auto font-weight-bold d-flex align-items-center"> | ||
{% for item in site.data.menus.topmenu %} | ||
<li class="nav-item"> | ||
<a class="nav-link px-3 {% if item.class %}{{item.class}}{% endif %}" href="{% unless item.external %}{{site.baseurl}}/{% endunless %}{{item.url}}" alt="{{item.title}}">{{item.title}}</a> | ||
</li> | ||
{% endfor %} | ||
</ul> | ||
</div> | ||
|
||
</div> | ||
</nav> | ||
</div> | ||
|
||
|
||
<!-- Container | ||
================================================== --> | ||
<main class="container"> | ||
{{ content }} | ||
</main> | ||
|
||
<!-- Footer | ||
================================================== --> | ||
<footer class="footer container text-center"> | ||
|
||
<!-- CREDITS BEGIN.--> | ||
<!-- If you want to support my work, please donate to remove the credits. This helps me keep it up and running: https://www.wowthemes.net/donate/ --> | ||
<div class="credits mx-auto text-center mb-3"> | ||
<a class="hover-opacity font-weight-bold" href="https://bootstrapstarter.com/template-affiliates-bootstrap-jekyll/"> | ||
<img src="{{site.baseurl}}/assets/images/credits.png" alt="powered by WowThemes"> | ||
</a> | ||
</div> | ||
<!-- CREDITS END --> | ||
|
||
<ul class="p-0 mb-1 small"> | ||
{% for item in site.data.menus.footermenu %} | ||
<li> | ||
<a href="{% unless item.external %}{{site.baseurl}}/{% endunless %}{{item.url}}" alt="{{item.title}}">{{item.title}}</a> | ||
</li> | ||
{% endfor %} | ||
</ul> | ||
<div class="copyright small"> | ||
Copyright © {{site.title}}. All rights reserved. | ||
</div> | ||
</footer> | ||
|
||
<!-- JavaScript | ||
================================================== --> | ||
<script src="{{ site.baseurl }}/assets/js/jquery.min.js"></script> | ||
<script src="{{ site.baseurl }}/assets/js/bootstrap.min.js"></script> | ||
<script src="{{ site.baseurl }}/assets/js/theme.js"></script> | ||
|
||
</body> | ||
|
||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
layout: default | ||
--- | ||
<!-- Post Featured Image --> | ||
{% if page.image %} | ||
<div class="text-center mx-auto mb-5"> | ||
<img class="featured-image text-center mx-auto rounded" src="{{ site.baseurl }}/{{ page.image }}" alt="{{ page.title }}"> | ||
</div> | ||
{% endif %} | ||
<!-- End Featured Image --> | ||
|
||
<div class="col-lg-8 mx-auto"> | ||
|
||
<div class="mainheading"> | ||
<h1 class="posttitle">{{ page.title }}</h1> | ||
</div> | ||
|
||
<div class="article-post serif-font"> | ||
{{content}} | ||
</div> | ||
|
||
{% if page.comments == true %} | ||
<div id="comments"> | ||
{% include disqus.html %} | ||
</div> | ||
{% endif %} | ||
|
||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
--- | ||
layout: default | ||
disqus: false | ||
archive: false | ||
post_class: post-template | ||
--- | ||
|
||
<!-- Begin Article | ||
================================================== --> | ||
|
||
<div class="row"> | ||
|
||
|
||
<!-- Post --> | ||
{% assign author = site.authors[page.author] %} | ||
|
||
<div class="col-sm-8"> | ||
<!-- Post Featured Image --> | ||
{% if page.image %}<img class="featured-image img-fluid rounded" src="{{ site.baseurl }}/{{ page.image }}" alt="{{ page.title }}">{% endif %} | ||
<!-- End Featured Image --> | ||
<div class="mainheading"> | ||
|
||
<!-- Post Categories --> | ||
<div class="after-post-tags"> | ||
<ul class="tags"> | ||
{% assign sortedCategories = page.categories | sort %} | ||
{% for category in sortedCategories %} | ||
<li> | ||
<a href="{{ site.baseurl }}/categories#{{ category | slugify }}">{{ category }}</a> | ||
</li> | ||
{% endfor %} | ||
</ul> | ||
</div> | ||
<!-- End Categories --> | ||
|
||
<!-- Post Title --> | ||
<h1 class="posttitle">{{ page.title }}</h1> | ||
|
||
</div> | ||
|
||
|
||
|
||
<!-- Post Content --> | ||
<div class="article-post serif-font"> | ||
{{content}} | ||
<div class="clearfix"></div> | ||
</div> | ||
|
||
<!-- Post Date --> | ||
<p> | ||
<small> | ||
<span class="post-date"><time class="post-date" datetime="{{ page.date | date:"%Y-%m-%d" }}">{{ page.date | date_to_string }}</time></span> | ||
{% if page.last_modified_at %} | ||
(Updated: <time datetime="{{ page.last_modified_at | date_to_xmlschema }}" itemprop="dateModified">{{ page.last_modified_at | date: "%b %-d, %Y" }}</time>) | ||
{% endif %} | ||
</small> | ||
</p> | ||
|
||
|
||
|
||
<!-- Prev/Next --> | ||
<div class="row PageNavigation mt-4 prevnextlinks d-flex justify-content-between"> | ||
{% if page.previous.url %} | ||
<div class="col-md-6 rightborder pl-0"> | ||
<a class="thepostlink" href="{{page.previous.url | absolute_url}}">« {{page.previous.title}}</a> | ||
</div> | ||
{% endif %} | ||
{% if page.next.url %} | ||
<div class="col-md-6 text-right pr-0"> | ||
<a class="thepostlink" href="{{page.next.url | absolute_url}}">{{page.next.title}} »</a> | ||
</div> | ||
{% endif %} | ||
</div> | ||
<!-- End Prev/Next --> | ||
|
||
|
||
<!-- Author Box --> | ||
{% if page.author %} | ||
<div class="row post-top-meta"> | ||
<div class="col-md-2"> | ||
<img class="author-thumb" src="{{site.baseurl}}/{{author.avatar}}" alt="{{ author.display_name }}"> | ||
</div> | ||
<div class="col-md-10"> | ||
<a target="_blank" class="link-dark" href="{{ author.web }}">{{ author.display_name }}</a><a target="_blank" href="{{ author.twitter }}" class="btn follow">Follow</a> | ||
<span class="author-description">{{ author.description }}</span> | ||
</div> | ||
</div> | ||
{% endif %} | ||
|
||
|
||
<!-- Begin Comments | ||
================================================== --> | ||
<section> | ||
<div id="comments"> | ||
{% include disqus.html %} | ||
</div> | ||
</section> | ||
<!--End Comments | ||
================================================== --> | ||
|
||
|
||
|
||
</div> | ||
<!-- End Post --> | ||
|
||
|
||
|
||
|
||
<!-- Sidebar --> | ||
<div class="col-sm-4"> | ||
{% include sidebar.html %} | ||
</div> | ||
|
||
|
||
|
||
</div> | ||
|
||
<!-- End Article | ||
================================================== --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
--- | ||
layout: post | ||
title: "Tree of Codes" | ||
author: sal | ||
categories: [ Jekyll, tutorial ] | ||
image: assets/images/2.jpg | ||
--- | ||
The first mass-produced book to deviate from a rectilinear format, at least in the United States, is thought to be this 1863 edition of Red Riding Hood, cut into the shape of the protagonist herself with the troublesome wolf curled at her feet. Produced by the Boston-based publisher Louis Prang, this is the first in their “Doll Series”, a set of five “die-cut” books, known also as shape books — the other titles being Robinson Crusoe, Goody Two-Shoes (also written by Red Riding Hood author Lydia Very), Cinderella, and King Winter. | ||
|
||
As for this particular rendition of Charles Perrault’s classic tale, the text and design is by Lydia Very (1823-1901), sister of Transcendentalist poet Jones Very. The gruesome ending of the original — which sees Little Red Riding Hood being gobbled up as well as her grandmother — is avoided here, the gore giving way to the less bloody aims of the morality tale, and the lesson that one should not disobey one’s mother. | ||
|
||
> It would seem the claim could also extend to die cut books in general, as we can’t find anything sooner, but do let us know in the comments if you have further light to shed on this! Such books are, of course, still popular in children’s publishing today, though the die cutting is not now limited to mere outlines, as evidenced in a beautiful 2014 version of the same Little Red Riding Hood story. | ||
|
||
An 1868 Prang catalogue would later claim that such “books in the shape of a regular paper Doll… originated with us”. | ||
|
||
The die cut has also been employed in the non-juvenile sphere as well, a recent example being Jonathan Safran Foer’s ambitious Tree of Codes. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
layout: post | ||
title: "Is Intelligence Enough" | ||
author: sal | ||
categories: [ Jekyll, tutorial ] | ||
image: assets/images/5.jpg | ||
--- | ||
Education must also train one for quick, resolute and effective thinking. To think incisively and to think for one's self is very difficult. | ||
|
||
> We are prone to let our mental life become invaded by legions of half truths, prejudices, and propaganda. At this point, I often wonder whether or not education is fulfilling its purpose. A great majority of the so-called educated people do not think logically and scientifically. | ||
Even the press, the classroom, the platform, and the pulpit in many instances do not give us objective and unbiased truths. To save man from the morass of propaganda, in my opinion, is one of the chief aims of education. Education must enable one to sift and weigh evidence, to discern the true from the false, the real from the unreal, and the facts from the fiction. | ||
|
||
The function of education, therefore, is to teach one to think intensively and to think critically. But education which stops with efficiency may prove the greatest menace to society. The most dangerous criminal may be the man gifted with reason, but with no morals. | ||
|
||
The late Eugene Talmadge, in my opinion, possessed one of the better minds of Georgia, or even America. Moreover, he wore the Phi Beta Kappa key. By all measuring rods, Mr. Talmadge could think critically and intensively; yet he contends that I am an inferior being. Are those the types of men we call educated? | ||
|
||
We must remember that intelligence is not enough. Intelligence plus character--that is the goal of true education. The complete education gives one not only power of concentration, but worthy objectives upon which to concentrate. The broad education will, therefore, transmit to one not only the accumulated knowledge of the race but also the accumulated experience of social living. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
--- | ||
layout: post | ||
title: "Markdown Example" | ||
author: john | ||
categories: [ Jekyll, tutorial ] | ||
image: assets/images/6.jpg | ||
--- | ||
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. Something. | ||
|
||
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. | ||
|
||
Jekyll also offers powerful support for code snippets: | ||
|
||
{% highlight ruby %} | ||
def print_hi(name) | ||
puts "Hi, #{name}" | ||
end | ||
print_hi('Tom') | ||
#=> prints 'Hi, Tom' to STDOUT. | ||
{% endhighlight %} | ||
|
||
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. | ||
|
||
[jekyll-docs]: http://jekyllrb.com/docs/home | ||
[jekyll-gh]: https://github.com/jekyll/jekyll | ||
[jekyll-talk]: https://talk.jekyllrb.com/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
layout: post | ||
title: "Powerful things you can do with the Markdown editor" | ||
author: sal | ||
categories: [ Jekyll, tutorial ] | ||
image: assets/images/4.jpg | ||
--- | ||
There are lots of powerful things you can do with the Markdown editor | ||
|
||
If you've gotten pretty comfortable with writing in Markdown, then you may enjoy some more advanced tips about the types of things you can do with Markdown! | ||
|
||
As with the last post about the editor, you'll want to be actually editing this post as you read it so that you can see all the Markdown code we're using. | ||
|
||
|
||
## Special formatting | ||
|
||
As well as bold and italics, you can also use some other special formatting in Markdown when the need arises, for example: | ||
|
||
+ ~~strike through~~ | ||
+ ==highlight== | ||
+ \*escaped characters\* | ||
|
||
|
||
## Writing code blocks | ||
|
||
There are two types of code elements which can be inserted in Markdown, the first is inline, and the other is block. Inline code is formatted by wrapping any word or words in back-ticks, `like this`. Larger snippets of code can be displayed across multiple lines using triple back ticks: | ||
|
||
``` | ||
.my-link { | ||
text-decoration: underline; | ||
} | ||
``` | ||
|
||
If you want to get really fancy, you can even add syntax highlighting using Rouge. | ||
|
||
|
||
 | ||
|
||
## Reference lists | ||
|
||
The quick brown jumped over the lazy. | ||
|
||
Another way to insert links in markdown is using reference lists. You might want to use this style of linking to cite reference material in a Wikipedia-style. All of the links are listed at the end of the document, so you can maintain full separation between content and its source or reference. | ||
|
||
## Full HTML | ||
|
||
Perhaps the best part of Markdown is that you're never limited to just Markdown. You can write HTML directly in the Markdown editor and it will just work as HTML usually does. No limits! Here's a standard YouTube embed code as an example: | ||
|
||
<p><iframe style="width:100%;" height="315" src="https://www.youtube.com/embed/Cniqsc9QfDo?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe></p> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
--- | ||
layout: post | ||
title: "Red Riding Hood" | ||
author: sal | ||
categories: [ Jekyll, tutorial ] | ||
image: assets/images/3.jpg | ||
--- | ||
The first mass-produced book to deviate from a rectilinear format, at least in the United States, is thought to be this 1863 edition of Red Riding Hood, cut into the shape of the protagonist herself with the troublesome wolf curled at her feet. Produced by the Boston-based publisher Louis Prang, this is the first in their “Doll Series”, a set of five “die-cut” books, known also as shape books — the other titles being Robinson Crusoe, Goody Two-Shoes (also written by Red Riding Hood author Lydia Very), Cinderella, and King Winter. | ||
|
||
An 1868 Prang catalogue would later claim that such “books in the shape of a regular paper Doll… originated with us”. | ||
|
||
> It would seem the claim could also extend to die cut books in general, as we can’t find anything sooner, but do let us know in the comments if you have further light to shed on this! Such books are, of course, still popular in children’s publishing today, though the die cutting is not now limited to mere outlines, as evidenced in a beautiful 2014 version of the same Little Red Riding Hood story. | ||
The die cut has also been employed in the non-juvenile sphere as well, a recent example being Jonathan Safran Foer’s ambitious Tree of Codes. | ||
|
||
As for this particular rendition of Charles Perrault’s classic tale, the text and design is by Lydia Very (1823-1901), sister of Transcendentalist poet Jones Very. The gruesome ending of the original — which sees Little Red Riding Hood being gobbled up as well as her grandmother — is avoided here, the gore giving way to the less bloody aims of the morality tale, and the lesson that one should not disobey one’s mother. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
--- | ||
layout: post | ||
title: "We all wait for summer" | ||
categories: [ Jekyll, tutorial ] | ||
image: assets/images/1.jpg | ||
--- | ||
This is changed. As I engage in the so-called "bull sessions" around and about the school, I too often find that most college men have a misconception of the purpose of education. Most of the "brethren" think that <a href="#">education should equip</a> them with the proper instruments of exploitation so that they can forever trample over the masses. Still others think that education should furnish them with noble ends rather than means to an end. | ||
|
||
It seems to me that education has a two-fold function to perform in the life of man and in society: the one is utility and the other is culture. Education must enable a man to become more efficient, to achieve with increasing facility the ligitimate goals of his life. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
// | ||
// Base styles | ||
// | ||
|
||
.alert { | ||
position: relative; | ||
padding: $alert-padding-y $alert-padding-x; | ||
margin-bottom: $alert-margin-bottom; | ||
border: $alert-border-width solid transparent; | ||
@include border-radius($alert-border-radius); | ||
} | ||
|
||
// Headings for larger alerts | ||
.alert-heading { | ||
// Specified to prevent conflicts of changing $headings-color | ||
color: inherit; | ||
} | ||
|
||
// Provide class for links that match alerts | ||
.alert-link { | ||
font-weight: $alert-link-font-weight; | ||
} | ||
|
||
|
||
// Dismissible alerts | ||
// | ||
// Expand the right padding and account for the close button's positioning. | ||
|
||
.alert-dismissible { | ||
padding-right: ($close-font-size + $alert-padding-x * 2); | ||
|
||
// Adjust close link position | ||
.close { | ||
position: absolute; | ||
top: 0; | ||
right: 0; | ||
padding: $alert-padding-y $alert-padding-x; | ||
color: inherit; | ||
} | ||
} | ||
|
||
|
||
// Alternate styles | ||
// | ||
// Generate contextual modifier classes for colorizing the alert. | ||
|
||
@each $color, $value in $theme-colors { | ||
.alert-#{$color} { | ||
@include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// Base class | ||
// | ||
// Requires one of the contextual, color modifier classes for `color` and | ||
// `background-color`. | ||
|
||
.badge { | ||
display: inline-block; | ||
padding: $badge-padding-y $badge-padding-x; | ||
font-size: $badge-font-size; | ||
font-weight: $badge-font-weight; | ||
line-height: 1; | ||
text-align: center; | ||
white-space: nowrap; | ||
vertical-align: baseline; | ||
@include border-radius($badge-border-radius); | ||
|
||
// Empty badges collapse automatically | ||
&:empty { | ||
display: none; | ||
} | ||
} | ||
|
||
// Quick fix for badges in buttons | ||
.btn .badge { | ||
position: relative; | ||
top: -1px; | ||
} | ||
|
||
// Pill badges | ||
// | ||
// Make them extra rounded with a modifier to replace v3's badges. | ||
|
||
.badge-pill { | ||
padding-right: $badge-pill-padding-x; | ||
padding-left: $badge-pill-padding-x; | ||
@include border-radius($badge-pill-border-radius); | ||
} | ||
|
||
// Colors | ||
// | ||
// Contextual variations (linked badges get darker on :hover). | ||
|
||
@each $color, $value in $theme-colors { | ||
.badge-#{$color} { | ||
@include badge-variant($value); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
.breadcrumb { | ||
display: flex; | ||
flex-wrap: wrap; | ||
padding: $breadcrumb-padding-y $breadcrumb-padding-x; | ||
margin-bottom: $breadcrumb-margin-bottom; | ||
list-style: none; | ||
background-color: $breadcrumb-bg; | ||
@include border-radius($border-radius); | ||
} | ||
|
||
.breadcrumb-item { | ||
// The separator between breadcrumbs (by default, a forward-slash: "/") | ||
+ .breadcrumb-item::before { | ||
display: inline-block; // Suppress underlining of the separator in modern browsers | ||
padding-right: $breadcrumb-item-padding; | ||
padding-left: $breadcrumb-item-padding; | ||
color: $breadcrumb-divider-color; | ||
content: "#{$breadcrumb-divider}"; | ||
} | ||
|
||
// IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built | ||
// without `<ul>`s. The `::before` pseudo-element generates an element | ||
// *within* the .breadcrumb-item and thereby inherits the `text-decoration`. | ||
// | ||
// To trick IE into suppressing the underline, we give the pseudo-element an | ||
// underline and then immediately remove it. | ||
+ .breadcrumb-item:hover::before { | ||
text-decoration: underline; | ||
} | ||
// stylelint-disable-next-line no-duplicate-selectors | ||
+ .breadcrumb-item:hover::before { | ||
text-decoration: none; | ||
} | ||
|
||
&.active { | ||
color: $breadcrumb-active-color; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,166 @@ | ||
// stylelint-disable selector-no-qualifying-type | ||
|
||
// Make the div behave like a button | ||
.btn-group, | ||
.btn-group-vertical { | ||
position: relative; | ||
display: inline-flex; | ||
vertical-align: middle; // match .btn alignment given font-size hack above | ||
|
||
> .btn { | ||
position: relative; | ||
flex: 0 1 auto; | ||
|
||
// Bring the hover, focused, and "active" buttons to the front to overlay | ||
// the borders properly | ||
@include hover { | ||
z-index: 1; | ||
} | ||
&:focus, | ||
&:active, | ||
&.active { | ||
z-index: 1; | ||
} | ||
} | ||
|
||
// Prevent double borders when buttons are next to each other | ||
.btn + .btn, | ||
.btn + .btn-group, | ||
.btn-group + .btn, | ||
.btn-group + .btn-group { | ||
margin-left: -$btn-border-width; | ||
} | ||
} | ||
|
||
// Optional: Group multiple button groups together for a toolbar | ||
.btn-toolbar { | ||
display: flex; | ||
flex-wrap: wrap; | ||
justify-content: flex-start; | ||
|
||
.input-group { | ||
width: auto; | ||
} | ||
} | ||
|
||
.btn-group { | ||
> .btn:first-child { | ||
margin-left: 0; | ||
} | ||
|
||
// Reset rounded corners | ||
> .btn:not(:last-child):not(.dropdown-toggle), | ||
> .btn-group:not(:last-child) > .btn { | ||
@include border-right-radius(0); | ||
} | ||
|
||
> .btn:not(:first-child), | ||
> .btn-group:not(:first-child) > .btn { | ||
@include border-left-radius(0); | ||
} | ||
} | ||
|
||
// Sizing | ||
// | ||
// Remix the default button sizing classes into new ones for easier manipulation. | ||
|
||
.btn-group-sm > .btn { @extend .btn-sm; } | ||
.btn-group-lg > .btn { @extend .btn-lg; } | ||
|
||
|
||
// | ||
// Split button dropdowns | ||
// | ||
|
||
.dropdown-toggle-split { | ||
padding-right: $btn-padding-x * .75; | ||
padding-left: $btn-padding-x * .75; | ||
|
||
&::after { | ||
margin-left: 0; | ||
} | ||
} | ||
|
||
.btn-sm + .dropdown-toggle-split { | ||
padding-right: $btn-padding-x-sm * .75; | ||
padding-left: $btn-padding-x-sm * .75; | ||
} | ||
|
||
.btn-lg + .dropdown-toggle-split { | ||
padding-right: $btn-padding-x-lg * .75; | ||
padding-left: $btn-padding-x-lg * .75; | ||
} | ||
|
||
|
||
// The clickable button for toggling the menu | ||
// Set the same inset shadow as the :active state | ||
.btn-group.show .dropdown-toggle { | ||
@include box-shadow($btn-active-box-shadow); | ||
|
||
// Show no shadow for `.btn-link` since it has no other button styles. | ||
&.btn-link { | ||
@include box-shadow(none); | ||
} | ||
} | ||
|
||
|
||
// | ||
// Vertical button groups | ||
// | ||
|
||
.btn-group-vertical { | ||
flex-direction: column; | ||
align-items: flex-start; | ||
justify-content: center; | ||
|
||
.btn, | ||
.btn-group { | ||
width: 100%; | ||
} | ||
|
||
> .btn + .btn, | ||
> .btn + .btn-group, | ||
> .btn-group + .btn, | ||
> .btn-group + .btn-group { | ||
margin-top: -$btn-border-width; | ||
margin-left: 0; | ||
} | ||
|
||
// Reset rounded corners | ||
> .btn:not(:last-child):not(.dropdown-toggle), | ||
> .btn-group:not(:last-child) > .btn { | ||
@include border-bottom-radius(0); | ||
} | ||
|
||
> .btn:not(:first-child), | ||
> .btn-group:not(:first-child) > .btn { | ||
@include border-top-radius(0); | ||
} | ||
} | ||
|
||
|
||
// Checkbox and radio options | ||
// | ||
// In order to support the browser's form validation feedback, powered by the | ||
// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use | ||
// `display: none;` or `visibility: hidden;` as that also hides the popover. | ||
// Simply visually hiding the inputs via `opacity` would leave them clickable in | ||
// certain cases which is prevented by using `clip` and `pointer-events`. | ||
// This way, we ensure a DOM element is visible to position the popover from. | ||
// | ||
// See https://github.com/twbs/bootstrap/pull/12794 and | ||
// https://github.com/twbs/bootstrap/pull/14559 for more information. | ||
|
||
.btn-group-toggle { | ||
> .btn, | ||
> .btn-group > .btn { | ||
margin-bottom: 0; // Override default `<label>` value | ||
|
||
input[type="radio"], | ||
input[type="checkbox"] { | ||
position: absolute; | ||
clip: rect(0, 0, 0, 0); | ||
pointer-events: none; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
// stylelint-disable selector-no-qualifying-type | ||
|
||
// | ||
// Base styles | ||
// | ||
|
||
.btn { | ||
display: inline-block; | ||
font-weight: $btn-font-weight; | ||
text-align: center; | ||
white-space: nowrap; | ||
vertical-align: middle; | ||
user-select: none; | ||
border: $btn-border-width solid transparent; | ||
@include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $btn-line-height, $btn-border-radius); | ||
@include transition($btn-transition); | ||
|
||
// Share hover and focus styles | ||
@include hover-focus { | ||
text-decoration: none; | ||
} | ||
|
||
&:focus, | ||
&.focus { | ||
outline: 0; | ||
box-shadow: $btn-focus-box-shadow; | ||
} | ||
|
||
// Disabled comes first so active can properly restyle | ||
&.disabled, | ||
&:disabled { | ||
opacity: $btn-disabled-opacity; | ||
@include box-shadow(none); | ||
} | ||
|
||
// Opinionated: add "hand" cursor to non-disabled .btn elements | ||
&:not(:disabled):not(.disabled) { | ||
cursor: pointer; | ||
} | ||
|
||
&:not(:disabled):not(.disabled):active, | ||
&:not(:disabled):not(.disabled).active { | ||
background-image: none; | ||
@include box-shadow($btn-active-box-shadow); | ||
|
||
&:focus { | ||
@include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow); | ||
} | ||
} | ||
} | ||
|
||
// Future-proof disabling of clicks on `<a>` elements | ||
a.btn.disabled, | ||
fieldset:disabled a.btn { | ||
pointer-events: none; | ||
} | ||
|
||
|
||
// | ||
// Alternate buttons | ||
// | ||
|
||
@each $color, $value in $theme-colors { | ||
.btn-#{$color} { | ||
@include button-variant($value, $value); | ||
} | ||
} | ||
|
||
@each $color, $value in $theme-colors { | ||
.btn-outline-#{$color} { | ||
@include button-outline-variant($value); | ||
} | ||
} | ||
|
||
|
||
// | ||
// Link buttons | ||
// | ||
|
||
// Make a button look and behave like a link | ||
.btn-link { | ||
font-weight: $font-weight-normal; | ||
color: $link-color; | ||
background-color: transparent; | ||
|
||
@include hover { | ||
color: $link-hover-color; | ||
text-decoration: $link-hover-decoration; | ||
background-color: transparent; | ||
border-color: transparent; | ||
} | ||
|
||
&:focus, | ||
&.focus { | ||
text-decoration: $link-hover-decoration; | ||
border-color: transparent; | ||
box-shadow: none; | ||
} | ||
|
||
&:disabled, | ||
&.disabled { | ||
color: $btn-link-disabled-color; | ||
} | ||
|
||
// No need for an active state here | ||
} | ||
|
||
|
||
// | ||
// Button Sizes | ||
// | ||
|
||
.btn-lg { | ||
@include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $btn-line-height-lg, $btn-border-radius-lg); | ||
} | ||
|
||
.btn-sm { | ||
@include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $btn-line-height-sm, $btn-border-radius-sm); | ||
} | ||
|
||
|
||
// | ||
// Block button | ||
// | ||
|
||
.btn-block { | ||
display: block; | ||
width: 100%; | ||
|
||
// Vertically space out multiple block buttons | ||
+ .btn-block { | ||
margin-top: $btn-block-spacing-y; | ||
} | ||
} | ||
|
||
// Specificity overrides | ||
input[type="submit"], | ||
input[type="reset"], | ||
input[type="button"] { | ||
&.btn-block { | ||
width: 100%; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,270 @@ | ||
// | ||
// Base styles | ||
// | ||
|
||
.card { | ||
position: relative; | ||
display: flex; | ||
flex-direction: column; | ||
min-width: 0; | ||
word-wrap: break-word; | ||
background-color: $card-bg; | ||
background-clip: border-box; | ||
border: $card-border-width solid $card-border-color; | ||
@include border-radius($card-border-radius); | ||
|
||
> hr { | ||
margin-right: 0; | ||
margin-left: 0; | ||
} | ||
|
||
> .list-group:first-child { | ||
.list-group-item:first-child { | ||
@include border-top-radius($card-border-radius); | ||
} | ||
} | ||
|
||
> .list-group:last-child { | ||
.list-group-item:last-child { | ||
@include border-bottom-radius($card-border-radius); | ||
} | ||
} | ||
} | ||
|
||
.card-body { | ||
// Enable `flex-grow: 1` for decks and groups so that card blocks take up | ||
// as much space as possible, ensuring footers are aligned to the bottom. | ||
flex: 1 1 auto; | ||
padding: $card-spacer-x; | ||
} | ||
|
||
.card-title { | ||
margin-bottom: $card-spacer-y; | ||
} | ||
|
||
.card-subtitle { | ||
margin-top: -($card-spacer-y / 2); | ||
margin-bottom: 0; | ||
} | ||
|
||
.card-text:last-child { | ||
margin-bottom: 0; | ||
} | ||
|
||
.card-link { | ||
@include hover { | ||
text-decoration: none; | ||
} | ||
|
||
+ .card-link { | ||
margin-left: $card-spacer-x; | ||
} | ||
} | ||
|
||
// | ||
// Optional textual caps | ||
// | ||
|
||
.card-header { | ||
padding: $card-spacer-y $card-spacer-x; | ||
margin-bottom: 0; // Removes the default margin-bottom of <hN> | ||
background-color: $card-cap-bg; | ||
border-bottom: $card-border-width solid $card-border-color; | ||
|
||
&:first-child { | ||
@include border-radius($card-inner-border-radius $card-inner-border-radius 0 0); | ||
} | ||
|
||
+ .list-group { | ||
.list-group-item:first-child { | ||
border-top: 0; | ||
} | ||
} | ||
} | ||
|
||
.card-footer { | ||
padding: $card-spacer-y $card-spacer-x; | ||
background-color: $card-cap-bg; | ||
border-top: $card-border-width solid $card-border-color; | ||
|
||
&:last-child { | ||
@include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius); | ||
} | ||
} | ||
|
||
|
||
// | ||
// Header navs | ||
// | ||
|
||
.card-header-tabs { | ||
margin-right: -($card-spacer-x / 2); | ||
margin-bottom: -$card-spacer-y; | ||
margin-left: -($card-spacer-x / 2); | ||
border-bottom: 0; | ||
} | ||
|
||
.card-header-pills { | ||
margin-right: -($card-spacer-x / 2); | ||
margin-left: -($card-spacer-x / 2); | ||
} | ||
|
||
// Card image | ||
.card-img-overlay { | ||
position: absolute; | ||
top: 0; | ||
right: 0; | ||
bottom: 0; | ||
left: 0; | ||
padding: $card-img-overlay-padding; | ||
} | ||
|
||
.card-img { | ||
width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch | ||
@include border-radius($card-inner-border-radius); | ||
} | ||
|
||
// Card image caps | ||
.card-img-top { | ||
width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch | ||
@include border-top-radius($card-inner-border-radius); | ||
} | ||
|
||
.card-img-bottom { | ||
width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch | ||
@include border-bottom-radius($card-inner-border-radius); | ||
} | ||
|
||
|
||
// Card deck | ||
|
||
.card-deck { | ||
display: flex; | ||
flex-direction: column; | ||
|
||
.card { | ||
margin-bottom: $card-deck-margin; | ||
} | ||
|
||
@include media-breakpoint-up(sm) { | ||
flex-flow: row wrap; | ||
margin-right: -$card-deck-margin; | ||
margin-left: -$card-deck-margin; | ||
|
||
.card { | ||
display: flex; | ||
// Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored | ||
flex: 1 0 0%; | ||
flex-direction: column; | ||
margin-right: $card-deck-margin; | ||
margin-bottom: 0; // Override the default | ||
margin-left: $card-deck-margin; | ||
} | ||
} | ||
} | ||
|
||
|
||
// | ||
// Card groups | ||
// | ||
|
||
.card-group { | ||
display: flex; | ||
flex-direction: column; | ||
|
||
// The child selector allows nested `.card` within `.card-group` | ||
// to display properly. | ||
> .card { | ||
margin-bottom: $card-group-margin; | ||
} | ||
|
||
@include media-breakpoint-up(sm) { | ||
flex-flow: row wrap; | ||
// The child selector allows nested `.card` within `.card-group` | ||
// to display properly. | ||
> .card { | ||
// Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored | ||
flex: 1 0 0%; | ||
margin-bottom: 0; | ||
|
||
+ .card { | ||
margin-left: 0; | ||
border-left: 0; | ||
} | ||
|
||
// Handle rounded corners | ||
@if $enable-rounded { | ||
&:first-child { | ||
@include border-right-radius(0); | ||
|
||
.card-img-top, | ||
.card-header { | ||
border-top-right-radius: 0; | ||
} | ||
.card-img-bottom, | ||
.card-footer { | ||
border-bottom-right-radius: 0; | ||
} | ||
} | ||
|
||
&:last-child { | ||
@include border-left-radius(0); | ||
|
||
.card-img-top, | ||
.card-header { | ||
border-top-left-radius: 0; | ||
} | ||
.card-img-bottom, | ||
.card-footer { | ||
border-bottom-left-radius: 0; | ||
} | ||
} | ||
|
||
&:only-child { | ||
@include border-radius($card-border-radius); | ||
|
||
.card-img-top, | ||
.card-header { | ||
@include border-top-radius($card-border-radius); | ||
} | ||
.card-img-bottom, | ||
.card-footer { | ||
@include border-bottom-radius($card-border-radius); | ||
} | ||
} | ||
|
||
&:not(:first-child):not(:last-child):not(:only-child) { | ||
@include border-radius(0); | ||
|
||
.card-img-top, | ||
.card-img-bottom, | ||
.card-header, | ||
.card-footer { | ||
@include border-radius(0); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
|
||
// | ||
// Columns | ||
// | ||
|
||
.card-columns { | ||
.card { | ||
margin-bottom: $card-columns-margin; | ||
} | ||
|
||
@include media-breakpoint-up(sm) { | ||
column-count: $card-columns-count; | ||
column-gap: $card-columns-gap; | ||
|
||
.card { | ||
display: inline-block; // Don't let them vertically span multiple columns | ||
width: 100%; // Don't let their width change | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,191 @@ | ||
// Wrapper for the slide container and indicators | ||
.carousel { | ||
position: relative; | ||
} | ||
|
||
.carousel-inner { | ||
position: relative; | ||
width: 100%; | ||
overflow: hidden; | ||
} | ||
|
||
.carousel-item { | ||
position: relative; | ||
display: none; | ||
align-items: center; | ||
width: 100%; | ||
@include transition($carousel-transition); | ||
backface-visibility: hidden; | ||
perspective: 1000px; | ||
} | ||
|
||
.carousel-item.active, | ||
.carousel-item-next, | ||
.carousel-item-prev { | ||
display: block; | ||
} | ||
|
||
.carousel-item-next, | ||
.carousel-item-prev { | ||
position: absolute; | ||
top: 0; | ||
} | ||
|
||
// CSS3 transforms when supported by the browser | ||
.carousel-item-next.carousel-item-left, | ||
.carousel-item-prev.carousel-item-right { | ||
transform: translateX(0); | ||
|
||
@supports (transform-style: preserve-3d) { | ||
transform: translate3d(0, 0, 0); | ||
} | ||
} | ||
|
||
.carousel-item-next, | ||
.active.carousel-item-right { | ||
transform: translateX(100%); | ||
|
||
@supports (transform-style: preserve-3d) { | ||
transform: translate3d(100%, 0, 0); | ||
} | ||
} | ||
|
||
.carousel-item-prev, | ||
.active.carousel-item-left { | ||
transform: translateX(-100%); | ||
|
||
@supports (transform-style: preserve-3d) { | ||
transform: translate3d(-100%, 0, 0); | ||
} | ||
} | ||
|
||
|
||
// | ||
// Left/right controls for nav | ||
// | ||
|
||
.carousel-control-prev, | ||
.carousel-control-next { | ||
position: absolute; | ||
top: 0; | ||
bottom: 0; | ||
// Use flex for alignment (1-3) | ||
display: flex; // 1. allow flex styles | ||
align-items: center; // 2. vertically center contents | ||
justify-content: center; // 3. horizontally center contents | ||
width: $carousel-control-width; | ||
color: $carousel-control-color; | ||
text-align: center; | ||
opacity: $carousel-control-opacity; | ||
// We can't have a transition here because WebKit cancels the carousel | ||
// animation if you trip this while in the middle of another animation. | ||
|
||
// Hover/focus state | ||
@include hover-focus { | ||
color: $carousel-control-color; | ||
text-decoration: none; | ||
outline: 0; | ||
opacity: .9; | ||
} | ||
} | ||
.carousel-control-prev { | ||
left: 0; | ||
@if $enable-gradients { | ||
background: linear-gradient(90deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001)); | ||
} | ||
} | ||
.carousel-control-next { | ||
right: 0; | ||
@if $enable-gradients { | ||
background: linear-gradient(270deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001)); | ||
} | ||
} | ||
|
||
// Icons for within | ||
.carousel-control-prev-icon, | ||
.carousel-control-next-icon { | ||
display: inline-block; | ||
width: $carousel-control-icon-width; | ||
height: $carousel-control-icon-width; | ||
background: transparent no-repeat center center; | ||
background-size: 100% 100%; | ||
} | ||
.carousel-control-prev-icon { | ||
background-image: $carousel-control-prev-icon-bg; | ||
} | ||
.carousel-control-next-icon { | ||
background-image: $carousel-control-next-icon-bg; | ||
} | ||
|
||
|
||
// Optional indicator pips | ||
// | ||
// Add an ordered list with the following class and add a list item for each | ||
// slide your carousel holds. | ||
|
||
.carousel-indicators { | ||
position: absolute; | ||
right: 0; | ||
bottom: 10px; | ||
left: 0; | ||
z-index: 15; | ||
display: flex; | ||
justify-content: center; | ||
padding-left: 0; // override <ol> default | ||
// Use the .carousel-control's width as margin so we don't overlay those | ||
margin-right: $carousel-control-width; | ||
margin-left: $carousel-control-width; | ||
list-style: none; | ||
|
||
li { | ||
position: relative; | ||
flex: 0 1 auto; | ||
width: $carousel-indicator-width; | ||
height: $carousel-indicator-height; | ||
margin-right: $carousel-indicator-spacer; | ||
margin-left: $carousel-indicator-spacer; | ||
text-indent: -999px; | ||
background-color: rgba($carousel-indicator-active-bg, .5); | ||
|
||
// Use pseudo classes to increase the hit area by 10px on top and bottom. | ||
&::before { | ||
position: absolute; | ||
top: -10px; | ||
left: 0; | ||
display: inline-block; | ||
width: 100%; | ||
height: 10px; | ||
content: ""; | ||
} | ||
&::after { | ||
position: absolute; | ||
bottom: -10px; | ||
left: 0; | ||
display: inline-block; | ||
width: 100%; | ||
height: 10px; | ||
content: ""; | ||
} | ||
} | ||
|
||
.active { | ||
background-color: $carousel-indicator-active-bg; | ||
} | ||
} | ||
|
||
|
||
// Optional captions | ||
// | ||
// | ||
|
||
.carousel-caption { | ||
position: absolute; | ||
right: ((100% - $carousel-caption-width) / 2); | ||
bottom: 20px; | ||
left: ((100% - $carousel-caption-width) / 2); | ||
z-index: 10; | ||
padding-top: 20px; | ||
padding-bottom: 20px; | ||
color: $carousel-caption-color; | ||
text-align: center; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
.close { | ||
float: right; | ||
font-size: $close-font-size; | ||
font-weight: $close-font-weight; | ||
line-height: 1; | ||
color: $close-color; | ||
text-shadow: $close-text-shadow; | ||
opacity: .5; | ||
|
||
@include hover-focus { | ||
color: $close-color; | ||
text-decoration: none; | ||
opacity: .75; | ||
} | ||
|
||
// Opinionated: add "hand" cursor to non-disabled .close elements | ||
&:not(:disabled):not(.disabled) { | ||
cursor: pointer; | ||
} | ||
} | ||
|
||
// Additional properties for button version | ||
// iOS requires the button element instead of an anchor tag. | ||
// If you want the anchor version, it requires `href="#"`. | ||
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile | ||
|
||
// stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type | ||
button.close { | ||
padding: 0; | ||
background-color: transparent; | ||
border: 0; | ||
-webkit-appearance: none; | ||
} | ||
// stylelint-enable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// Inline and block code styles | ||
code, | ||
kbd, | ||
pre, | ||
samp { | ||
font-family: $font-family-monospace; | ||
} | ||
|
||
// Inline code | ||
code { | ||
font-size: $code-font-size; | ||
color: $code-color; | ||
word-break: break-word; | ||
|
||
// Streamline the style when inside anchors to avoid broken underline and more | ||
a > & { | ||
color: inherit; | ||
} | ||
} | ||
|
||
// User input typically entered via keyboard | ||
kbd { | ||
padding: $kbd-padding-y $kbd-padding-x; | ||
font-size: $kbd-font-size; | ||
color: $kbd-color; | ||
background-color: $kbd-bg; | ||
@include border-radius($border-radius-sm); | ||
@include box-shadow($kbd-box-shadow); | ||
|
||
kbd { | ||
padding: 0; | ||
font-size: 100%; | ||
font-weight: $nested-kbd-font-weight; | ||
@include box-shadow(none); | ||
} | ||
} | ||
|
||
// Blocks of code | ||
pre { | ||
display: block; | ||
font-size: $code-font-size; | ||
color: $pre-color; | ||
|
||
// Account for some code outputs that place code tags in pre tags | ||
code { | ||
font-size: inherit; | ||
color: inherit; | ||
word-break: normal; | ||
} | ||
} | ||
|
||
// Enable scrollable blocks of code | ||
.pre-scrollable { | ||
max-height: $pre-scrollable-max-height; | ||
overflow-y: scroll; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,297 @@ | ||
// Embedded icons from Open Iconic. | ||
// Released under MIT and copyright 2014 Waybury. | ||
// https://useiconic.com/open | ||
|
||
|
||
// Checkboxes and radios | ||
// | ||
// Base class takes care of all the key behavioral aspects. | ||
|
||
.custom-control { | ||
position: relative; | ||
display: block; | ||
min-height: (1rem * $line-height-base); | ||
padding-left: $custom-control-gutter; | ||
} | ||
|
||
.custom-control-inline { | ||
display: inline-flex; | ||
margin-right: $custom-control-spacer-x; | ||
} | ||
|
||
.custom-control-input { | ||
position: absolute; | ||
z-index: -1; // Put the input behind the label so it doesn't overlay text | ||
opacity: 0; | ||
|
||
&:checked ~ .custom-control-label::before { | ||
color: $custom-control-indicator-checked-color; | ||
@include gradient-bg($custom-control-indicator-checked-bg); | ||
@include box-shadow($custom-control-indicator-checked-box-shadow); | ||
} | ||
|
||
&:focus ~ .custom-control-label::before { | ||
// the mixin is not used here to make sure there is feedback | ||
box-shadow: $custom-control-indicator-focus-box-shadow; | ||
} | ||
|
||
&:active ~ .custom-control-label::before { | ||
color: $custom-control-indicator-active-color; | ||
background-color: $custom-control-indicator-active-bg; | ||
@include box-shadow($custom-control-indicator-active-box-shadow); | ||
} | ||
|
||
&:disabled { | ||
~ .custom-control-label { | ||
color: $custom-control-label-disabled-color; | ||
|
||
&::before { | ||
background-color: $custom-control-indicator-disabled-bg; | ||
} | ||
} | ||
} | ||
} | ||
|
||
// Custom control indicators | ||
// | ||
// Build the custom controls out of psuedo-elements. | ||
|
||
.custom-control-label { | ||
margin-bottom: 0; | ||
|
||
// Background-color and (when enabled) gradient | ||
&::before { | ||
position: absolute; | ||
top: (($line-height-base - $custom-control-indicator-size) / 2); | ||
left: 0; | ||
display: block; | ||
width: $custom-control-indicator-size; | ||
height: $custom-control-indicator-size; | ||
pointer-events: none; | ||
content: ""; | ||
user-select: none; | ||
background-color: $custom-control-indicator-bg; | ||
@include box-shadow($custom-control-indicator-box-shadow); | ||
} | ||
|
||
// Foreground (icon) | ||
&::after { | ||
position: absolute; | ||
top: (($line-height-base - $custom-control-indicator-size) / 2); | ||
left: 0; | ||
display: block; | ||
width: $custom-control-indicator-size; | ||
height: $custom-control-indicator-size; | ||
content: ""; | ||
background-repeat: no-repeat; | ||
background-position: center center; | ||
background-size: $custom-control-indicator-bg-size; | ||
} | ||
} | ||
|
||
|
||
// Checkboxes | ||
// | ||
// Tweak just a few things for checkboxes. | ||
|
||
.custom-checkbox { | ||
.custom-control-label::before { | ||
@include border-radius($custom-checkbox-indicator-border-radius); | ||
} | ||
|
||
.custom-control-input:checked ~ .custom-control-label { | ||
&::before { | ||
@include gradient-bg($custom-control-indicator-checked-bg); | ||
} | ||
&::after { | ||
background-image: $custom-checkbox-indicator-icon-checked; | ||
} | ||
} | ||
|
||
.custom-control-input:indeterminate ~ .custom-control-label { | ||
&::before { | ||
@include gradient-bg($custom-checkbox-indicator-indeterminate-bg); | ||
@include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow); | ||
} | ||
&::after { | ||
background-image: $custom-checkbox-indicator-icon-indeterminate; | ||
} | ||
} | ||
|
||
.custom-control-input:disabled { | ||
&:checked ~ .custom-control-label::before { | ||
background-color: $custom-control-indicator-checked-disabled-bg; | ||
} | ||
&:indeterminate ~ .custom-control-label::before { | ||
background-color: $custom-control-indicator-checked-disabled-bg; | ||
} | ||
} | ||
} | ||
|
||
// Radios | ||
// | ||
// Tweak just a few things for radios. | ||
|
||
.custom-radio { | ||
.custom-control-label::before { | ||
border-radius: $custom-radio-indicator-border-radius; | ||
} | ||
|
||
.custom-control-input:checked ~ .custom-control-label { | ||
&::before { | ||
@include gradient-bg($custom-control-indicator-checked-bg); | ||
} | ||
&::after { | ||
background-image: $custom-radio-indicator-icon-checked; | ||
} | ||
} | ||
|
||
.custom-control-input:disabled { | ||
&:checked ~ .custom-control-label::before { | ||
background-color: $custom-control-indicator-checked-disabled-bg; | ||
} | ||
} | ||
} | ||
|
||
|
||
// Select | ||
// | ||
// Replaces the browser default select with a custom one, mostly pulled from | ||
// http://primercss.io. | ||
// | ||
|
||
.custom-select { | ||
display: inline-block; | ||
width: 100%; | ||
height: $custom-select-height; | ||
padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x; | ||
line-height: $custom-select-line-height; | ||
color: $custom-select-color; | ||
vertical-align: middle; | ||
background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center; | ||
background-size: $custom-select-bg-size; | ||
border: $custom-select-border-width solid $custom-select-border-color; | ||
@if $enable-rounded { | ||
border-radius: $custom-select-border-radius; | ||
} @else { | ||
border-radius: 0; | ||
} | ||
appearance: none; | ||
|
||
&:focus { | ||
border-color: $custom-select-focus-border-color; | ||
outline: 0; | ||
box-shadow: $custom-select-focus-box-shadow; | ||
|
||
&::-ms-value { | ||
// For visual consistency with other platforms/browsers, | ||
// suppress the default white text on blue background highlight given to | ||
// the selected option text when the (still closed) <select> receives focus | ||
// in IE and (under certain conditions) Edge. | ||
// See https://github.com/twbs/bootstrap/issues/19398. | ||
color: $input-color; | ||
background-color: $input-bg; | ||
} | ||
} | ||
|
||
&[multiple], | ||
&[size]:not([size="1"]) { | ||
height: auto; | ||
padding-right: $custom-select-padding-x; | ||
background-image: none; | ||
} | ||
|
||
&:disabled { | ||
color: $custom-select-disabled-color; | ||
background-color: $custom-select-disabled-bg; | ||
} | ||
|
||
// Hides the default caret in IE11 | ||
&::-ms-expand { | ||
opacity: 0; | ||
} | ||
} | ||
|
||
.custom-select-sm { | ||
height: $custom-select-height-sm; | ||
padding-top: $custom-select-padding-y; | ||
padding-bottom: $custom-select-padding-y; | ||
font-size: $custom-select-font-size-sm; | ||
} | ||
|
||
.custom-select-lg { | ||
height: $custom-select-height-lg; | ||
padding-top: $custom-select-padding-y; | ||
padding-bottom: $custom-select-padding-y; | ||
font-size: $custom-select-font-size-lg; | ||
} | ||
|
||
|
||
// File | ||
// | ||
// Custom file input. | ||
|
||
.custom-file { | ||
position: relative; | ||
display: inline-block; | ||
width: 100%; | ||
height: $custom-file-height; | ||
margin-bottom: 0; | ||
} | ||
|
||
.custom-file-input { | ||
position: relative; | ||
z-index: 2; | ||
width: 100%; | ||
height: $custom-file-height; | ||
margin: 0; | ||
opacity: 0; | ||
|
||
&:focus ~ .custom-file-control { | ||
border-color: $custom-file-focus-border-color; | ||
box-shadow: $custom-file-focus-box-shadow; | ||
|
||
&::before { | ||
border-color: $custom-file-focus-border-color; | ||
} | ||
} | ||
|
||
@each $lang, $value in $custom-file-text { | ||
&:lang(#{$lang}) ~ .custom-file-label::after { | ||
content: $value; | ||
} | ||
} | ||
} | ||
|
||
.custom-file-label { | ||
position: absolute; | ||
top: 0; | ||
right: 0; | ||
left: 0; | ||
z-index: 1; | ||
height: $custom-file-height; | ||
padding: $custom-file-padding-y $custom-file-padding-x; | ||
line-height: $custom-file-line-height; | ||
color: $custom-file-color; | ||
background-color: $custom-file-bg; | ||
border: $custom-file-border-width solid $custom-file-border-color; | ||
@include border-radius($custom-file-border-radius); | ||
@include box-shadow($custom-file-box-shadow); | ||
|
||
&::after { | ||
position: absolute; | ||
top: 0; | ||
right: 0; | ||
bottom: 0; | ||
z-index: 3; | ||
display: block; | ||
height: calc(#{$custom-file-height} - #{$custom-file-border-width} * 2); | ||
padding: $custom-file-padding-y $custom-file-padding-x; | ||
line-height: $custom-file-line-height; | ||
color: $custom-file-button-color; | ||
content: "Browse"; | ||
@include gradient-bg($custom-file-button-bg); | ||
border-left: $custom-file-border-width solid $custom-file-border-color; | ||
@include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
// The dropdown wrapper (`<div>`) | ||
.dropup, | ||
.dropdown { | ||
position: relative; | ||
} | ||
|
||
.dropdown-toggle { | ||
// Generate the caret automatically | ||
@include caret; | ||
} | ||
|
||
// The dropdown menu | ||
.dropdown-menu { | ||
position: absolute; | ||
top: 100%; | ||
left: 0; | ||
z-index: $zindex-dropdown; | ||
display: none; // none by default, but block on "open" of the menu | ||
float: left; | ||
min-width: $dropdown-min-width; | ||
padding: $dropdown-padding-y 0; | ||
margin: $dropdown-spacer 0 0; // override default ul | ||
font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues | ||
color: $body-color; | ||
text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) | ||
list-style: none; | ||
background-color: $dropdown-bg; | ||
background-clip: padding-box; | ||
border: $dropdown-border-width solid $dropdown-border-color; | ||
@include border-radius($dropdown-border-radius); | ||
@include box-shadow($dropdown-box-shadow); | ||
} | ||
|
||
// Allow for dropdowns to go bottom up (aka, dropup-menu) | ||
// Just add .dropup after the standard .dropdown class and you're set. | ||
.dropup { | ||
.dropdown-menu { | ||
margin-top: 0; | ||
margin-bottom: $dropdown-spacer; | ||
} | ||
|
||
.dropdown-toggle { | ||
@include caret(up); | ||
} | ||
} | ||
|
||
.dropright { | ||
.dropdown-menu { | ||
margin-top: 0; | ||
margin-left: $dropdown-spacer; | ||
} | ||
|
||
.dropdown-toggle { | ||
@include caret(right); | ||
&::after { | ||
vertical-align: 0; | ||
} | ||
} | ||
} | ||
|
||
.dropleft { | ||
.dropdown-menu { | ||
margin-top: 0; | ||
margin-right: $dropdown-spacer; | ||
} | ||
|
||
.dropdown-toggle { | ||
@include caret(left); | ||
&::before { | ||
vertical-align: 0; | ||
} | ||
} | ||
} | ||
|
||
// Dividers (basically an `<hr>`) within the dropdown | ||
.dropdown-divider { | ||
@include nav-divider($dropdown-divider-bg); | ||
} | ||
|
||
// Links, buttons, and more within the dropdown menu | ||
// | ||
// `<button>`-specific styles are denoted with `// For <button>s` | ||
.dropdown-item { | ||
display: block; | ||
width: 100%; // For `<button>`s | ||
padding: $dropdown-item-padding-y $dropdown-item-padding-x; | ||
clear: both; | ||
font-weight: $font-weight-normal; | ||
color: $dropdown-link-color; | ||
text-align: inherit; // For `<button>`s | ||
white-space: nowrap; // prevent links from randomly breaking onto new lines | ||
background-color: transparent; // For `<button>`s | ||
border: 0; // For `<button>`s | ||
|
||
@include hover-focus { | ||
color: $dropdown-link-hover-color; | ||
text-decoration: none; | ||
@include gradient-bg($dropdown-link-hover-bg); | ||
} | ||
|
||
&.active, | ||
&:active { | ||
color: $dropdown-link-active-color; | ||
text-decoration: none; | ||
@include gradient-bg($dropdown-link-active-bg); | ||
} | ||
|
||
&.disabled, | ||
&:disabled { | ||
color: $dropdown-link-disabled-color; | ||
background-color: transparent; | ||
// Remove CSS gradients if they're enabled | ||
@if $enable-gradients { | ||
background-image: none; | ||
} | ||
} | ||
} | ||
|
||
.dropdown-menu.show { | ||
display: block; | ||
} | ||
|
||
// Dropdown section headers | ||
.dropdown-header { | ||
display: block; | ||
padding: $dropdown-padding-y $dropdown-item-padding-x; | ||
margin-bottom: 0; // for use with heading elements | ||
font-size: $font-size-sm; | ||
color: $dropdown-header-color; | ||
white-space: nowrap; // as with > li > a | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,333 @@ | ||
// stylelint-disable selector-no-qualifying-type | ||
|
||
// | ||
// Textual form controls | ||
// | ||
|
||
.form-control { | ||
display: block; | ||
width: 100%; | ||
padding: $input-padding-y $input-padding-x; | ||
font-size: $font-size-base; | ||
line-height: $input-line-height; | ||
color: $input-color; | ||
background-color: $input-bg; | ||
background-clip: padding-box; | ||
border: $input-border-width solid $input-border-color; | ||
|
||
// Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS. | ||
@if $enable-rounded { | ||
// Manually use the if/else instead of the mixin to account for iOS override | ||
border-radius: $input-border-radius; | ||
} @else { | ||
// Otherwise undo the iOS default | ||
border-radius: 0; | ||
} | ||
|
||
@include box-shadow($input-box-shadow); | ||
@include transition($input-transition); | ||
|
||
// Unstyle the caret on `<select>`s in IE10+. | ||
&::-ms-expand { | ||
background-color: transparent; | ||
border: 0; | ||
} | ||
|
||
// Customize the `:focus` state to imitate native WebKit styles. | ||
@include form-control-focus(); | ||
|
||
// Placeholder | ||
&::placeholder { | ||
color: $input-placeholder-color; | ||
// Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526. | ||
opacity: 1; | ||
} | ||
|
||
// Disabled and read-only inputs | ||
// | ||
// HTML5 says that controls under a fieldset > legend:first-child won't be | ||
// disabled if the fieldset is disabled. Due to implementation difficulty, we | ||
// don't honor that edge case; we style them as disabled anyway. | ||
&:disabled, | ||
&[readonly] { | ||
background-color: $input-disabled-bg; | ||
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655. | ||
opacity: 1; | ||
} | ||
} | ||
|
||
select.form-control { | ||
&:not([size]):not([multiple]) { | ||
height: $input-height; | ||
} | ||
|
||
&:focus::-ms-value { | ||
// Suppress the nested default white text on blue background highlight given to | ||
// the selected option text when the (still closed) <select> receives focus | ||
// in IE and (under certain conditions) Edge, as it looks bad and cannot be made to | ||
// match the appearance of the native widget. | ||
// See https://github.com/twbs/bootstrap/issues/19398. | ||
color: $input-color; | ||
background-color: $input-bg; | ||
} | ||
} | ||
|
||
// Make file inputs better match text inputs by forcing them to new lines. | ||
.form-control-file, | ||
.form-control-range { | ||
display: block; | ||
width: 100%; | ||
} | ||
|
||
|
||
// | ||
// Labels | ||
// | ||
|
||
// For use with horizontal and inline forms, when you need the label (or legend) | ||
// text to align with the form controls. | ||
.col-form-label { | ||
padding-top: calc(#{$input-padding-y} + #{$input-border-width}); | ||
padding-bottom: calc(#{$input-padding-y} + #{$input-border-width}); | ||
margin-bottom: 0; // Override the `<label>/<legend>` default | ||
font-size: inherit; // Override the `<legend>` default | ||
line-height: $input-line-height; | ||
} | ||
|
||
.col-form-label-lg { | ||
padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width}); | ||
padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width}); | ||
font-size: $font-size-lg; | ||
line-height: $input-line-height-lg; | ||
} | ||
|
||
.col-form-label-sm { | ||
padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width}); | ||
padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width}); | ||
font-size: $font-size-sm; | ||
line-height: $input-line-height-sm; | ||
} | ||
|
||
|
||
// Readonly controls as plain text | ||
// | ||
// Apply class to a readonly input to make it appear like regular plain | ||
// text (without any border, background color, focus indicator) | ||
|
||
.form-control-plaintext { | ||
display: block; | ||
width: 100%; | ||
padding-top: $input-padding-y; | ||
padding-bottom: $input-padding-y; | ||
margin-bottom: 0; // match inputs if this class comes on inputs with default margins | ||
line-height: $input-line-height; | ||
background-color: transparent; | ||
border: solid transparent; | ||
border-width: $input-border-width 0; | ||
|
||
&.form-control-sm, | ||
&.form-control-lg { | ||
padding-right: 0; | ||
padding-left: 0; | ||
} | ||
} | ||
|
||
|
||
// Form control sizing | ||
// | ||
// Build on `.form-control` with modifier classes to decrease or increase the | ||
// height and font-size of form controls. | ||
// | ||
// The `.form-group-* form-control` variations are sadly duplicated to avoid the | ||
// issue documented in https://github.com/twbs/bootstrap/issues/15074. | ||
|
||
.form-control-sm { | ||
padding: $input-padding-y-sm $input-padding-x-sm; | ||
font-size: $font-size-sm; | ||
line-height: $input-line-height-sm; | ||
@include border-radius($input-border-radius-sm); | ||
} | ||
|
||
select.form-control-sm { | ||
&:not([size]):not([multiple]) { | ||
height: $input-height-sm; | ||
} | ||
} | ||
|
||
.form-control-lg { | ||
padding: $input-padding-y-lg $input-padding-x-lg; | ||
font-size: $font-size-lg; | ||
line-height: $input-line-height-lg; | ||
@include border-radius($input-border-radius-lg); | ||
} | ||
|
||
select.form-control-lg { | ||
&:not([size]):not([multiple]) { | ||
height: $input-height-lg; | ||
} | ||
} | ||
|
||
|
||
// Form groups | ||
// | ||
// Designed to help with the organization and spacing of vertical forms. For | ||
// horizontal forms, use the predefined grid classes. | ||
|
||
.form-group { | ||
margin-bottom: $form-group-margin-bottom; | ||
} | ||
|
||
.form-text { | ||
display: block; | ||
margin-top: $form-text-margin-top; | ||
} | ||
|
||
|
||
// Form grid | ||
// | ||
// Special replacement for our grid system's `.row` for tighter form layouts. | ||
|
||
.form-row { | ||
display: flex; | ||
flex-wrap: wrap; | ||
margin-right: -5px; | ||
margin-left: -5px; | ||
|
||
> .col, | ||
> [class*="col-"] { | ||
padding-right: 5px; | ||
padding-left: 5px; | ||
} | ||
} | ||
|
||
|
||
// Checkboxes and radios | ||
// | ||
// Indent the labels to position radios/checkboxes as hanging controls. | ||
|
||
.form-check { | ||
position: relative; | ||
display: block; | ||
padding-left: $form-check-input-gutter; | ||
} | ||
|
||
.form-check-input { | ||
position: absolute; | ||
margin-top: $form-check-input-margin-y; | ||
margin-left: -$form-check-input-gutter; | ||
|
||
&:disabled ~ .form-check-label { | ||
color: $text-muted; | ||
} | ||
} | ||
|
||
.form-check-label { | ||
margin-bottom: 0; // Override default `<label>` bottom margin | ||
} | ||
|
||
.form-check-inline { | ||
display: inline-flex; | ||
align-items: center; | ||
padding-left: 0; // Override base .form-check | ||
margin-right: $form-check-inline-margin-x; | ||
|
||
// Undo .form-check-input defaults and add some `margin-right`. | ||
.form-check-input { | ||
position: static; | ||
margin-top: 0; | ||
margin-right: $form-check-inline-input-margin-x; | ||
margin-left: 0; | ||
} | ||
} | ||
|
||
|
||
// Form validation | ||
// | ||
// Provide feedback to users when form field values are valid or invalid. Works | ||
// primarily for client-side validation via scoped `:invalid` and `:valid` | ||
// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for | ||
// server side validation. | ||
|
||
@include form-validation-state("valid", $form-feedback-valid-color); | ||
@include form-validation-state("invalid", $form-feedback-invalid-color); | ||
|
||
// Inline forms | ||
// | ||
// Make forms appear inline(-block) by adding the `.form-inline` class. Inline | ||
// forms begin stacked on extra small (mobile) devices and then go inline when | ||
// viewports reach <768px. | ||
// | ||
// Requires wrapping inputs and labels with `.form-group` for proper display of | ||
// default HTML form controls and our custom form controls (e.g., input groups). | ||
|
||
.form-inline { | ||
display: flex; | ||
flex-flow: row wrap; | ||
align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height) | ||
|
||
// Because we use flex, the initial sizing of checkboxes is collapsed and | ||
// doesn't occupy the full-width (which is what we want for xs grid tier), | ||
// so we force that here. | ||
.form-check { | ||
width: 100%; | ||
} | ||
|
||
// Kick in the inline | ||
@include media-breakpoint-up(sm) { | ||
label { | ||
display: flex; | ||
align-items: center; | ||
justify-content: center; | ||
margin-bottom: 0; | ||
} | ||
|
||
// Inline-block all the things for "inline" | ||
.form-group { | ||
display: flex; | ||
flex: 0 0 auto; | ||
flex-flow: row wrap; | ||
align-items: center; | ||
margin-bottom: 0; | ||
} | ||
|
||
// Allow folks to *not* use `.form-group` | ||
.form-control { | ||
display: inline-block; | ||
width: auto; // Prevent labels from stacking above inputs in `.form-group` | ||
vertical-align: middle; | ||
} | ||
|
||
// Make static controls behave like regular ones | ||
.form-control-plaintext { | ||
display: inline-block; | ||
} | ||
|
||
.input-group { | ||
width: auto; | ||
} | ||
|
||
// Remove default margin on radios/checkboxes that were used for stacking, and | ||
// then undo the floating of radios and checkboxes to match. | ||
.form-check { | ||
display: flex; | ||
align-items: center; | ||
justify-content: center; | ||
width: auto; | ||
padding-left: 0; | ||
} | ||
.form-check-input { | ||
position: relative; | ||
margin-top: 0; | ||
margin-right: $form-check-input-margin-x; | ||
margin-left: 0; | ||
} | ||
|
||
.custom-control { | ||
align-items: center; | ||
justify-content: center; | ||
} | ||
.custom-control-label { | ||
margin-bottom: 0; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
// Bootstrap functions | ||
// | ||
// Utility mixins and functions for evalutating source code across our variables, maps, and mixins. | ||
|
||
// Ascending | ||
// Used to evaluate Sass maps like our grid breakpoints. | ||
@mixin _assert-ascending($map, $map-name) { | ||
$prev-key: null; | ||
$prev-num: null; | ||
@each $key, $num in $map { | ||
@if $prev-num == null { | ||
// Do nothing | ||
} @else if not comparable($prev-num, $num) { | ||
@warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !"; | ||
} @else if $prev-num >= $num { | ||
@warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !"; | ||
} | ||
$prev-key: $key; | ||
$prev-num: $num; | ||
} | ||
} | ||
|
||
// Starts at zero | ||
// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0. | ||
@mixin _assert-starts-at-zero($map) { | ||
$values: map-values($map); | ||
$first-value: nth($values, 1); | ||
@if $first-value != 0 { | ||
@warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}."; | ||
} | ||
} | ||
|
||
// Replace `$search` with `$replace` in `$string` | ||
// Used on our SVG icon backgrounds for custom forms. | ||
// | ||
// @author Hugo Giraudel | ||
// @param {String} $string - Initial string | ||
// @param {String} $search - Substring to replace | ||
// @param {String} $replace ('') - New value | ||
// @return {String} - Updated string | ||
@function str-replace($string, $search, $replace: "") { | ||
$index: str-index($string, $search); | ||
|
||
@if $index { | ||
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); | ||
} | ||
|
||
@return $string; | ||
} | ||
|
||
// Color contrast | ||
@function color-yiq($color) { | ||
$r: red($color); | ||
$g: green($color); | ||
$b: blue($color); | ||
|
||
$yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000; | ||
|
||
@if ($yiq >= $yiq-contrasted-threshold) { | ||
@return $yiq-text-dark; | ||
} @else { | ||
@return $yiq-text-light; | ||
} | ||
} | ||
|
||
// Retrieve color Sass maps | ||
@function color($key: "blue") { | ||
@return map-get($colors, $key); | ||
} | ||
|
||
@function theme-color($key: "primary") { | ||
@return map-get($theme-colors, $key); | ||
} | ||
|
||
@function gray($key: "100") { | ||
@return map-get($grays, $key); | ||
} | ||
|
||
// Request a theme color level | ||
@function theme-color-level($color-name: "primary", $level: 0) { | ||
$color: theme-color($color-name); | ||
$color-base: if($level > 0, #000, #fff); | ||
$level: abs($level); | ||
|
||
@return mix($color-base, $color, $level * $theme-color-interval); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
// Container widths | ||
// | ||
// Set the container width, and override it for fixed navbars in media queries. | ||
|
||
@if $enable-grid-classes { | ||
.container { | ||
@include make-container(); | ||
@include make-container-max-widths(); | ||
} | ||
} | ||
|
||
// Fluid container | ||
// | ||
// Utilizes the mixin meant for fixed width containers, but with 100% width for | ||
// fluid, full width layouts. | ||
|
||
@if $enable-grid-classes { | ||
.container-fluid { | ||
@include make-container(); | ||
} | ||
} | ||
|
||
// Row | ||
// | ||
// Rows contain and clear the floats of your columns. | ||
|
||
@if $enable-grid-classes { | ||
.row { | ||
@include make-row(); | ||
} | ||
|
||
// Remove the negative margin from default .row, then the horizontal padding | ||
// from all immediate children columns (to prevent runaway style inheritance). | ||
.no-gutters { | ||
margin-right: 0; | ||
margin-left: 0; | ||
|
||
> .col, | ||
> [class*="col-"] { | ||
padding-right: 0; | ||
padding-left: 0; | ||
} | ||
} | ||
} | ||
|
||
// Columns | ||
// | ||
// Common styles for small and large grid columns | ||
|
||
@if $enable-grid-classes { | ||
@include make-grid-columns(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// Responsive images (ensure images don't scale beyond their parents) | ||
// | ||
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s. | ||
// We previously tried the "images are responsive by default" approach in Bootstrap v2, | ||
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps) | ||
// which weren't expecting the images within themselves to be involuntarily resized. | ||
// See also https://github.com/twbs/bootstrap/issues/18178 | ||
.img-fluid { | ||
@include img-fluid; | ||
} | ||
|
||
|
||
// Image thumbnails | ||
.img-thumbnail { | ||
padding: $thumbnail-padding; | ||
background-color: $thumbnail-bg; | ||
border: $thumbnail-border-width solid $thumbnail-border-color; | ||
@include border-radius($thumbnail-border-radius); | ||
@include box-shadow($thumbnail-box-shadow); | ||
|
||
// Keep them at most 100% wide | ||
@include img-fluid; | ||
} | ||
|
||
// | ||
// Figures | ||
// | ||
|
||
.figure { | ||
// Ensures the caption's text aligns with the image. | ||
display: inline-block; | ||
} | ||
|
||
.figure-img { | ||
margin-bottom: ($spacer / 2); | ||
line-height: 1; | ||
} | ||
|
||
.figure-caption { | ||
font-size: $figure-caption-font-size; | ||
color: $figure-caption-color; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
// stylelint-disable selector-no-qualifying-type | ||
|
||
// | ||
// Base styles | ||
// | ||
|
||
.input-group { | ||
position: relative; | ||
display: flex; | ||
flex-wrap: wrap; // For form validation feedback | ||
align-items: stretch; | ||
width: 100%; | ||
|
||
> .form-control, | ||
> .custom-select, | ||
> .custom-file { | ||
position: relative; // For focus state's z-index | ||
flex: 1 1 auto; | ||
// Add width 1% and flex-basis auto to ensure that button will not wrap out | ||
// the column. Applies to IE Edge+ and Firefox. Chrome does not require this. | ||
width: 1%; | ||
margin-bottom: 0; | ||
|
||
// Bring the "active" form control to the top of surrounding elements | ||
&:focus { | ||
z-index: 3; | ||
} | ||
|
||
+ .form-control, | ||
+ .custom-select, | ||
+ .custom-file { | ||
margin-left: -$input-border-width; | ||
} | ||
} | ||
|
||
> .form-control, | ||
> .custom-select { | ||
&:not(:last-child) { @include border-right-radius(0); } | ||
&:not(:first-child) { @include border-left-radius(0); } | ||
} | ||
|
||
// Custom file inputs have more complex markup, thus requiring different | ||
// border-radius overrides. | ||
> .custom-file { | ||
display: flex; | ||
align-items: center; | ||
|
||
&:not(:last-child) .custom-file-label, | ||
&:not(:last-child) .custom-file-label::before { @include border-right-radius(0); } | ||
&:not(:first-child) .custom-file-label, | ||
&:not(:first-child) .custom-file-label::before { @include border-left-radius(0); } | ||
} | ||
} | ||
|
||
|
||
// Prepend and append | ||
// | ||
// While it requires one extra layer of HTML for each, dedicated prepend and | ||
// append elements allow us to 1) be less clever, 2) simplify our selectors, and | ||
// 3) support HTML5 form validation. | ||
|
||
.input-group-prepend, | ||
.input-group-append { | ||
display: flex; | ||
|
||
// Ensure buttons are always above inputs for more visually pleasing borders. | ||
// This isn't needed for `.input-group-text` since it shares the same border-color | ||
// as our inputs. | ||
.btn { | ||
position: relative; | ||
z-index: 2; | ||
} | ||
|
||
.btn + .btn, | ||
.btn + .input-group-text, | ||
.input-group-text + .input-group-text, | ||
.input-group-text + .btn { | ||
margin-left: -$input-border-width; | ||
} | ||
} | ||
|
||
.input-group-prepend { margin-right: -$input-border-width; } | ||
.input-group-append { margin-left: -$input-border-width; } | ||
|
||
|
||
// Textual addons | ||
// | ||
// Serves as a catch-all element for any text or radio/checkbox input you wish | ||
// to prepend or append to an input. | ||
|
||
.input-group-text { | ||
display: flex; | ||
align-items: center; | ||
padding: $input-padding-y $input-padding-x; | ||
margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom | ||
font-size: $font-size-base; // Match inputs | ||
font-weight: $font-weight-normal; | ||
line-height: $input-line-height; | ||
color: $input-group-addon-color; | ||
text-align: center; | ||
white-space: nowrap; | ||
background-color: $input-group-addon-bg; | ||
border: $input-border-width solid $input-group-addon-border-color; | ||
@include border-radius($input-border-radius); | ||
|
||
// Nuke default margins from checkboxes and radios to vertically center within. | ||
input[type="radio"], | ||
input[type="checkbox"] { | ||
margin-top: 0; | ||
} | ||
} | ||
|
||
|
||
// Sizing | ||
// | ||
// Remix the default form control sizing classes into new ones for easier | ||
// manipulation. | ||
|
||
.input-group-lg > .form-control, | ||
.input-group-lg > .input-group-prepend > .input-group-text, | ||
.input-group-lg > .input-group-append > .input-group-text, | ||
.input-group-lg > .input-group-prepend > .btn, | ||
.input-group-lg > .input-group-append > .btn { | ||
@extend .form-control-lg; | ||
} | ||
|
||
.input-group-sm > .form-control, | ||
.input-group-sm > .input-group-prepend > .input-group-text, | ||
.input-group-sm > .input-group-append > .input-group-text, | ||
.input-group-sm > .input-group-prepend > .btn, | ||
.input-group-sm > .input-group-append > .btn { | ||
@extend .form-control-sm; | ||
} | ||
|
||
|
||
// Prepend and append rounded corners | ||
// | ||
// These rulesets must come after the sizing ones to properly override sm and lg | ||
// border-radius values when extending. They're more specific than we'd like | ||
// with the `.input-group >` part, but without it, we cannot override the sizing. | ||
|
||
|
||
.input-group > .input-group-prepend > .btn, | ||
.input-group > .input-group-prepend > .input-group-text, | ||
.input-group > .input-group-append:not(:last-child) > .btn, | ||
.input-group > .input-group-append:not(:last-child) > .input-group-text, | ||
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), | ||
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { | ||
@include border-right-radius(0); | ||
} | ||
|
||
.input-group > .input-group-append > .btn, | ||
.input-group > .input-group-append > .input-group-text, | ||
.input-group > .input-group-prepend:not(:first-child) > .btn, | ||
.input-group > .input-group-prepend:not(:first-child) > .input-group-text, | ||
.input-group > .input-group-prepend:first-child > .btn:not(:first-child), | ||
.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { | ||
@include border-left-radius(0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
.jumbotron { | ||
padding: $jumbotron-padding ($jumbotron-padding / 2); | ||
margin-bottom: $jumbotron-padding; | ||
background-color: $jumbotron-bg; | ||
@include border-radius($border-radius-lg); | ||
|
||
@include media-breakpoint-up(sm) { | ||
padding: ($jumbotron-padding * 2) $jumbotron-padding; | ||
} | ||
} | ||
|
||
.jumbotron-fluid { | ||
padding-right: 0; | ||
padding-left: 0; | ||
@include border-radius(0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
// Base class | ||
// | ||
// Easily usable on <ul>, <ol>, or <div>. | ||
|
||
.list-group { | ||
display: flex; | ||
flex-direction: column; | ||
|
||
// No need to set list-style: none; since .list-group-item is block level | ||
padding-left: 0; // reset padding because ul and ol | ||
margin-bottom: 0; | ||
} | ||
|
||
|
||
// Interactive list items | ||
// | ||
// Use anchor or button elements instead of `li`s or `div`s to create interactive | ||
// list items. Includes an extra `.active` modifier class for selected items. | ||
|
||
.list-group-item-action { | ||
width: 100%; // For `<button>`s (anchors become 100% by default though) | ||
color: $list-group-action-color; | ||
text-align: inherit; // For `<button>`s (anchors inherit) | ||
|
||
// Hover state | ||
@include hover-focus { | ||
color: $list-group-action-hover-color; | ||
text-decoration: none; | ||
background-color: $list-group-hover-bg; | ||
} | ||
|
||
&:active { | ||
color: $list-group-action-active-color; | ||
background-color: $list-group-action-active-bg; | ||
} | ||
} | ||
|
||
|
||
// Individual list items | ||
// | ||
// Use on `li`s or `div`s within the `.list-group` parent. | ||
|
||
.list-group-item { | ||
position: relative; | ||
display: block; | ||
padding: $list-group-item-padding-y $list-group-item-padding-x; | ||
// Place the border on the list items and negative margin up for better styling | ||
margin-bottom: -$list-group-border-width; | ||
background-color: $list-group-bg; | ||
border: $list-group-border-width solid $list-group-border-color; | ||
|
||
&:first-child { | ||
@include border-top-radius($list-group-border-radius); | ||
} | ||
|
||
&:last-child { | ||
margin-bottom: 0; | ||
@include border-bottom-radius($list-group-border-radius); | ||
} | ||
|
||
@include hover-focus { | ||
z-index: 1; // Place hover/active items above their siblings for proper border styling | ||
text-decoration: none; | ||
} | ||
|
||
&.disabled, | ||
&:disabled { | ||
color: $list-group-disabled-color; | ||
background-color: $list-group-disabled-bg; | ||
} | ||
|
||
// Include both here for `<a>`s and `<button>`s | ||
&.active { | ||
z-index: 2; // Place active items above their siblings for proper border styling | ||
color: $list-group-active-color; | ||
background-color: $list-group-active-bg; | ||
border-color: $list-group-active-border-color; | ||
} | ||
} | ||
|
||
|
||
// Flush list items | ||
// | ||
// Remove borders and border-radius to keep list group items edge-to-edge. Most | ||
// useful within other components (e.g., cards). | ||
|
||
.list-group-flush { | ||
.list-group-item { | ||
border-right: 0; | ||
border-left: 0; | ||
@include border-radius(0); | ||
} | ||
|
||
&:first-child { | ||
.list-group-item:first-child { | ||
border-top: 0; | ||
} | ||
} | ||
|
||
&:last-child { | ||
.list-group-item:last-child { | ||
border-bottom: 0; | ||
} | ||
} | ||
} | ||
|
||
|
||
// Contextual variants | ||
// | ||
// Add modifier classes to change text and background color on individual items. | ||
// Organizationally, this must come after the `:hover` states. | ||
|
||
@each $color, $value in $theme-colors { | ||
@include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6)); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
.media { | ||
display: flex; | ||
align-items: flex-start; | ||
} | ||
|
||
.media-body { | ||
flex: 1; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// Toggles | ||
// | ||
// Used in conjunction with global variables to enable certain theme features. | ||
|
||
// Utilities | ||
@import "mixins/breakpoints"; | ||
@import "mixins/hover"; | ||
@import "mixins/image"; | ||
@import "mixins/badge"; | ||
@import "mixins/resize"; | ||
@import "mixins/screen-reader"; | ||
@import "mixins/size"; | ||
@import "mixins/reset-text"; | ||
@import "mixins/text-emphasis"; | ||
@import "mixins/text-hide"; | ||
@import "mixins/text-truncate"; | ||
@import "mixins/visibility"; | ||
|
||
// // Components | ||
@import "mixins/alert"; | ||
@import "mixins/buttons"; | ||
@import "mixins/caret"; | ||
@import "mixins/pagination"; | ||
@import "mixins/lists"; | ||
@import "mixins/list-group"; | ||
@import "mixins/nav-divider"; | ||
@import "mixins/forms"; | ||
@import "mixins/table-row"; | ||
|
||
// // Skins | ||
@import "mixins/background-variant"; | ||
@import "mixins/border-radius"; | ||
@import "mixins/box-shadow"; | ||
@import "mixins/gradients"; | ||
@import "mixins/transition"; | ||
|
||
// // Layout | ||
@import "mixins/clearfix"; | ||
// @import "mixins/navbar-align"; | ||
@import "mixins/grid-framework"; | ||
@import "mixins/grid"; | ||
@import "mixins/float"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
// .modal-open - body class for killing the scroll | ||
// .modal - container to scroll within | ||
// .modal-dialog - positioning shell for the actual modal | ||
// .modal-content - actual modal w/ bg and corners and stuff | ||
|
||
|
||
// Kill the scroll on the body | ||
.modal-open { | ||
overflow: hidden; | ||
} | ||
|
||
// Container that the modal scrolls within | ||
.modal { | ||
position: fixed; | ||
top: 0; | ||
right: 0; | ||
bottom: 0; | ||
left: 0; | ||
z-index: $zindex-modal; | ||
display: none; | ||
overflow: hidden; | ||
// Prevent Chrome on Windows from adding a focus outline. For details, see | ||
// https://github.com/twbs/bootstrap/pull/10951. | ||
outline: 0; | ||
// We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a | ||
// gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342 | ||
// See also https://github.com/twbs/bootstrap/issues/17695 | ||
|
||
.modal-open & { | ||
overflow-x: hidden; | ||
overflow-y: auto; | ||
} | ||
} | ||
|
||
// Shell div to position the modal with bottom padding | ||
.modal-dialog { | ||
position: relative; | ||
width: auto; | ||
margin: $modal-dialog-margin; | ||
// allow clicks to pass through for custom click handling to close modal | ||
pointer-events: none; | ||
|
||
// When fading in the modal, animate it to slide down | ||
.modal.fade & { | ||
@include transition($modal-transition); | ||
transform: translate(0, -25%); | ||
} | ||
.modal.show & { | ||
transform: translate(0, 0); | ||
} | ||
} | ||
|
||
.modal-dialog-centered { | ||
display: flex; | ||
align-items: center; | ||
min-height: calc(100% - (#{$modal-dialog-margin} * 2)); | ||
} | ||
|
||
// Actual modal | ||
.modal-content { | ||
position: relative; | ||
display: flex; | ||
flex-direction: column; | ||
width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog` | ||
// counteract the pointer-events: none; in the .modal-dialog | ||
pointer-events: auto; | ||
background-color: $modal-content-bg; | ||
background-clip: padding-box; | ||
border: $modal-content-border-width solid $modal-content-border-color; | ||
@include border-radius($border-radius-lg); | ||
@include box-shadow($modal-content-box-shadow-xs); | ||
// Remove focus outline from opened modal | ||
outline: 0; | ||
} | ||
|
||
// Modal background | ||
.modal-backdrop { | ||
position: fixed; | ||
top: 0; | ||
right: 0; | ||
bottom: 0; | ||
left: 0; | ||
z-index: $zindex-modal-backdrop; | ||
background-color: $modal-backdrop-bg; | ||
|
||
// Fade for backdrop | ||
&.fade { opacity: 0; } | ||
&.show { opacity: $modal-backdrop-opacity; } | ||
} | ||
|
||
// Modal header | ||
// Top section of the modal w/ title and dismiss | ||
.modal-header { | ||
display: flex; | ||
align-items: flex-start; // so the close btn always stays on the upper right corner | ||
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends | ||
padding: $modal-header-padding; | ||
border-bottom: $modal-header-border-width solid $modal-header-border-color; | ||
@include border-top-radius($border-radius-lg); | ||
|
||
.close { | ||
padding: $modal-header-padding; | ||
// auto on the left force icon to the right even when there is no .modal-title | ||
margin: (-$modal-header-padding) (-$modal-header-padding) (-$modal-header-padding) auto; | ||
} | ||
} | ||
|
||
// Title text within header | ||
.modal-title { | ||
margin-bottom: 0; | ||
line-height: $modal-title-line-height; | ||
} | ||
|
||
// Modal body | ||
// Where all modal content resides (sibling of .modal-header and .modal-footer) | ||
.modal-body { | ||
position: relative; | ||
// Enable `flex-grow: 1` so that the body take up as much space as possible | ||
// when should there be a fixed height on `.modal-dialog`. | ||
flex: 1 1 auto; | ||
padding: $modal-inner-padding; | ||
} | ||
|
||
// Footer (for actions) | ||
.modal-footer { | ||
display: flex; | ||
align-items: center; // vertically center | ||
justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items | ||
padding: $modal-inner-padding; | ||
border-top: $modal-footer-border-width solid $modal-footer-border-color; | ||
|
||
// Easily place margin between footer elements | ||
> :not(:first-child) { margin-left: .25rem; } | ||
> :not(:last-child) { margin-right: .25rem; } | ||
} | ||
|
||
// Measure scrollbar width for padding body during modal show/hide | ||
.modal-scrollbar-measure { | ||
position: absolute; | ||
top: -9999px; | ||
width: 50px; | ||
height: 50px; | ||
overflow: scroll; | ||
} | ||
|
||
// Scale up the modal | ||
@include media-breakpoint-up(sm) { | ||
// Automatically set modal's width for larger viewports | ||
.modal-dialog { | ||
max-width: $modal-md; | ||
margin: $modal-dialog-margin-y-sm-up auto; | ||
} | ||
|
||
.modal-dialog-centered { | ||
min-height: calc(100% - (#{$modal-dialog-margin-y-sm-up} * 2)); | ||
} | ||
|
||
.modal-content { | ||
@include box-shadow($modal-content-box-shadow-sm-up); | ||
} | ||
|
||
.modal-sm { max-width: $modal-sm; } | ||
|
||
} | ||
|
||
@include media-breakpoint-up(lg) { | ||
.modal-lg { max-width: $modal-lg; } | ||
} |
Oops, something went wrong.