Skip to content

Commit 8a55a43

Browse files
committed
Clone project template
1 parent f32627d commit 8a55a43

11 files changed

Lines changed: 858 additions & 0 deletions

File tree

Gemfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Gemfile
2+
3+
source 'https://rubygems.org'
4+
5+
gem "jekyll", "~> 4.4"
6+
7+
group :jekyll_plugins do
8+
gem "jekyll-github-metadata"
9+
gem "jekyll-liquify"
10+
end

LICENSE

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
Creative Commons Legal Code
2+
3+
CC0 1.0 Universal
4+
5+
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6+
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7+
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8+
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9+
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10+
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11+
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12+
HEREUNDER.
13+
14+
Statement of Purpose
15+
16+
The laws of most jurisdictions throughout the world automatically confer
17+
exclusive Copyright and Related Rights (defined below) upon the creator
18+
and subsequent owner(s) (each and all, an "owner") of an original work of
19+
authorship and/or a database (each, a "Work").
20+
21+
Certain owners wish to permanently relinquish those rights to a Work for
22+
the purpose of contributing to a commons of creative, cultural and
23+
scientific works ("Commons") that the public can reliably and without fear
24+
of later claims of infringement build upon, modify, incorporate in other
25+
works, reuse and redistribute as freely as possible in any form whatsoever
26+
and for any purposes, including without limitation commercial purposes.
27+
These owners may contribute to the Commons to promote the ideal of a free
28+
culture and the further production of creative, cultural and scientific
29+
works, or to gain reputation or greater distribution for their Work in
30+
part through the use and efforts of others.
31+
32+
For these and/or other purposes and motivations, and without any
33+
expectation of additional consideration or compensation, the person
34+
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35+
is an owner of Copyright and Related Rights in the Work, voluntarily
36+
elects to apply CC0 to the Work and publicly distribute the Work under its
37+
terms, with knowledge of his or her Copyright and Related Rights in the
38+
Work and the meaning and intended legal effect of CC0 on those rights.
39+
40+
1. Copyright and Related Rights. A Work made available under CC0 may be
41+
protected by copyright and related or neighboring rights ("Copyright and
42+
Related Rights"). Copyright and Related Rights include, but are not
43+
limited to, the following:
44+
45+
i. the right to reproduce, adapt, distribute, perform, display,
46+
communicate, and translate a Work;
47+
ii. moral rights retained by the original author(s) and/or performer(s);
48+
iii. publicity and privacy rights pertaining to a person's image or
49+
likeness depicted in a Work;
50+
iv. rights protecting against unfair competition in regards to a Work,
51+
subject to the limitations in paragraph 4(a), below;
52+
v. rights protecting the extraction, dissemination, use and reuse of data
53+
in a Work;
54+
vi. database rights (such as those arising under Directive 96/9/EC of the
55+
European Parliament and of the Council of 11 March 1996 on the legal
56+
protection of databases, and under any national implementation
57+
thereof, including any amended or successor version of such
58+
directive); and
59+
vii. other similar, equivalent or corresponding rights throughout the
60+
world based on applicable law or treaty, and any national
61+
implementations thereof.
62+
63+
2. Waiver. To the greatest extent permitted by, but not in contravention
64+
of, applicable law, Affirmer hereby overtly, fully, permanently,
65+
irrevocably and unconditionally waives, abandons, and surrenders all of
66+
Affirmer's Copyright and Related Rights and associated claims and causes
67+
of action, whether now known or unknown (including existing as well as
68+
future claims and causes of action), in the Work (i) in all territories
69+
worldwide, (ii) for the maximum duration provided by applicable law or
70+
treaty (including future time extensions), (iii) in any current or future
71+
medium and for any number of copies, and (iv) for any purpose whatsoever,
72+
including without limitation commercial, advertising or promotional
73+
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74+
member of the public at large and to the detriment of Affirmer's heirs and
75+
successors, fully intending that such Waiver shall not be subject to
76+
revocation, rescission, cancellation, termination, or any other legal or
77+
equitable action to disrupt the quiet enjoyment of the Work by the public
78+
as contemplated by Affirmer's express Statement of Purpose.
79+
80+
3. Public License Fallback. Should any part of the Waiver for any reason
81+
be judged legally invalid or ineffective under applicable law, then the
82+
Waiver shall be preserved to the maximum extent permitted taking into
83+
account Affirmer's express Statement of Purpose. In addition, to the
84+
extent the Waiver is so judged Affirmer hereby grants to each affected
85+
person a royalty-free, non transferable, non sublicensable, non exclusive,
86+
irrevocable and unconditional license to exercise Affirmer's Copyright and
87+
Related Rights in the Work (i) in all territories worldwide, (ii) for the
88+
maximum duration provided by applicable law or treaty (including future
89+
time extensions), (iii) in any current or future medium and for any number
90+
of copies, and (iv) for any purpose whatsoever, including without
91+
limitation commercial, advertising or promotional purposes (the
92+
"License"). The License shall be deemed effective as of the date CC0 was
93+
applied by Affirmer to the Work. Should any part of the License for any
94+
reason be judged legally invalid or ineffective under applicable law, such
95+
partial invalidity or ineffectiveness shall not invalidate the remainder
96+
of the License, and in such case Affirmer hereby affirms that he or she
97+
will not (i) exercise any of his or her remaining Copyright and Related
98+
Rights in the Work or (ii) assert any associated claims and causes of
99+
action with respect to the Work, in either case contrary to Affirmer's
100+
express Statement of Purpose.
101+
102+
4. Limitations and Disclaimers.
103+
104+
a. No trademark or patent rights held by Affirmer are waived, abandoned,
105+
surrendered, licensed or otherwise affected by this document.
106+
b. Affirmer offers the Work as-is and makes no representations or
107+
warranties of any kind concerning the Work, express, implied,
108+
statutory or otherwise, including without limitation warranties of
109+
title, merchantability, fitness for a particular purpose, non
110+
infringement, or the absence of latent or other defects, accuracy, or
111+
the present or absence of errors, whether or not discoverable, all to
112+
the greatest extent permissible under applicable law.
113+
c. Affirmer disclaims responsibility for clearing rights of other persons
114+
that may apply to the Work or any use thereof, including without
115+
limitation any person's Copyright and Related Rights in the Work.
116+
Further, Affirmer disclaims responsibility for obtaining any necessary
117+
consents, permissions or other rights required for any use of the
118+
Work.
119+
d. Affirmer understands and acknowledges that Creative Commons is not a
120+
party to this document and has no duty or obligation with respect to
121+
this CC0 or use of the Work.

_config.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Welcome to Jekyll!
2+
#
3+
# This config file is meant for settings that affect your project, values
4+
# which you are expected to set up once and rarely edit after that. If you find
5+
# yourself editing this file very often, consider using Jekyll's data files
6+
# feature for the data you need to update frequently.
7+
#
8+
# For technical reasons, this file is *NOT* reloaded automatically when you use
9+
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10+
11+
# Site settings
12+
# These are used to personalize your new site. If you look in the HTML files,
13+
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
14+
# You can create any custom variable you would like, and they will be accessible
15+
# in the templates via {{ site.myvariable }}.
16+
17+
# Build settings
18+
markdown: kramdown
19+
20+
# Exclude from processing.
21+
# The following items will not be processed, by default. Create a custom list
22+
# to override the default setting.
23+
exclude:
24+
- Gemfile
25+
- Gemfile.lock
26+
# - node_modules
27+
# - vendor/bundle/
28+
# - vendor/cache/
29+
# - vendor/gems/
30+
# - vendor/ruby/
31+
32+
defaults:
33+
- scope:
34+
path: ""
35+
type: "pages"
36+
values:
37+
layout: "project_page"
38+
accent: '#ff6600'
39+
40+
# Variables
41+
image_base_path: /assets/images/

_includes/carousel.html

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
{% assign letterstring = "a,b,c,d,e,f,g,h,i,j,k,l,m,n" %}
2+
{% assign letters = letterstring | split: ',' %}
3+
{% assign number = include.number | minus: 1 %}
4+
<div class="carousel__holder">
5+
<div id="carousel{{ number }}" class="carousel">
6+
{% for item in page.carousels[number].images %}
7+
<input class="carousel__activator" type="radio" name="carousel{{ number }}" id="{{ number }}{{ letters[forloop.index0] }}" {% if forloop.first %}checked="checked"{% endif %} />
8+
{% endfor %}
9+
{% for item in page.carousels[number].images %}
10+
{% if forloop.index == forloop.length %}
11+
{% assign nextindex = 0 %}
12+
{% else %}
13+
{% assign nextindex = forloop.index0 | plus: 1 %}
14+
{% endif %}
15+
{% assign nextletter = letters[nextindex] %}
16+
{% if forloop.index0 == 0 %}
17+
{% assign previndex = forloop.length | minus: 1 %}
18+
{% else %}
19+
{% assign previndex = forloop.index0 | minus: 1 %}
20+
{% endif %}
21+
{% assign prevletter = letters[previndex] %}
22+
<div class="carousel__controls">
23+
<label class="carousel__control carousel__control--backward" for="{{ number }}{{ prevletter }}"></label>
24+
<label class="carousel__control carousel__control--forward" for="{{ number }}{{ nextletter }}"></label>
25+
</div>
26+
{% endfor %}
27+
<div class="carousel__track">
28+
<ul>
29+
{% for item in page.carousels[number].images %}
30+
<li class="carousel__slide" style="background-image: url('{{ site.image_base_path | append: item.image | absolute_url }}');"></li>
31+
{% endfor %}
32+
</ul>
33+
</div>
34+
<div class="carousel__indicators">
35+
{% for item in page.carousels[number].images %}
36+
<label class="carousel__indicator" for="{{ number }}{{ letters[forloop.index0] }}"></label>
37+
{% endfor %}
38+
</div>
39+
</div>
40+
</div>
41+
42+
<style>
43+
.carousel__holder {width: 100%; position: relative; padding-bottom: {{ include.height }}{{ include.unit }}; margin: 1rem 0 1rem;}
44+
.carousel {
45+
height: 100%;
46+
width: 100%;
47+
overflow: hidden;
48+
text-align: center;
49+
position: absolute;
50+
padding: 0;
51+
}
52+
.carousel__controls,
53+
.carousel__activator {
54+
display: none;
55+
}
56+
{% for item in page.carousels[number].images %}
57+
.carousel__activator:nth-of-type({{ forloop.index }}):checked ~ .carousel__track {
58+
-webkit-transform: translateX(-{{ forloop.index0 }}00%);
59+
transform: translateX(-{{ forloop.index0 }}00%);
60+
}
61+
.carousel__activator:nth-of-type({{ forloop.index }}):checked ~ .carousel__slide:nth-of-type({{ forloop.index }}) {
62+
transition: opacity 0.5s, -webkit-transform 0.5s;
63+
transition: opacity 0.5s, transform 0.5s;
64+
transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
65+
top: 0;
66+
left: 0;
67+
right: 0;
68+
opacity: 1;
69+
-webkit-transform: scale(1);
70+
transform: scale(1);
71+
}
72+
.carousel__activator:nth-of-type({{ forloop.index }}):checked ~ .carousel__controls:nth-of-type({{ forloop.index }}) {
73+
display: block;
74+
opacity: 1;
75+
}
76+
.carousel__activator:nth-of-type({{ forloop.index }}):checked ~ .carousel__indicators .carousel__indicator:nth-of-type({{ forloop.index }}) {
77+
opacity: 1;
78+
}
79+
{% endfor %}
80+
81+
.carousel__control {
82+
height: 30px;
83+
width: 30px;
84+
margin-top: -15px;
85+
top: 50%;
86+
position: absolute;
87+
display: block;
88+
cursor: pointer;
89+
border-width: 5px 5px 0 0;
90+
border-style: solid;
91+
border-color: #fafafa;
92+
opacity: 0.35;
93+
opacity: 1;
94+
outline: 0;
95+
z-index: 3;
96+
}
97+
.carousel__control:hover {
98+
opacity: 1;
99+
}
100+
.carousel__control--backward {
101+
left: 20px;
102+
-webkit-transform: rotate(-135deg);
103+
transform: rotate(-135deg);
104+
}
105+
.carousel__control--forward {
106+
right: 20px;
107+
-webkit-transform: rotate(45deg);
108+
transform: rotate(45deg);
109+
}
110+
.carousel__indicators {
111+
position: absolute;
112+
bottom: 20px;
113+
width: 100%;
114+
text-align: center;
115+
}
116+
.carousel__indicator {
117+
height: 15px;
118+
width: 15px;
119+
border-radius: 100%;
120+
display: inline-block;
121+
z-index: 2;
122+
cursor: pointer;
123+
opacity: 0.35;
124+
margin: 0 2.5px 0 2.5px;
125+
}
126+
.carousel__indicator:hover {
127+
opacity: 0.75;
128+
}
129+
.carousel__track {
130+
position: absolute;
131+
top: 0;
132+
right: 0;
133+
bottom: 0;
134+
left: 0;
135+
padding: 0;
136+
margin: 0;
137+
transition: -webkit-transform 0.5s ease 0s;
138+
transition: transform 0.5s ease 0s;
139+
transition: transform 0.5s ease 0s, -webkit-transform 0.5s ease 0s;
140+
}
141+
.carousel__track .carousel__slide {
142+
display: block;
143+
top: 0;
144+
left: 0;
145+
right: 0;
146+
opacity: 1;
147+
}
148+
{% for item in page.carousels[number].images %}
149+
.carousel__track .carousel__slide:nth-of-type({{ forloop.index }}) {
150+
-webkit-transform: translateX({{ forloop.index0 }}00%);
151+
transform: translateX({{ forloop.index0 }}00%);
152+
}
153+
{% endfor %}
154+
155+
.carousel--scale .carousel__slide {
156+
-webkit-transform: scale(0);
157+
transform: scale(0);
158+
}
159+
.carousel__slide {
160+
height: 100%;
161+
position: absolute;
162+
opacity: 0;
163+
overflow: hidden;
164+
}
165+
.carousel__slide .overlay {height: 100%;}
166+
.carousel--thumb .carousel__indicator {
167+
height: 30px;
168+
width: 30px;
169+
}
170+
.carousel__indicator {
171+
background-color: #fafafa;
172+
}
173+
{% for item in page.carousels[number].images %}
174+
.carousel__slide:nth-of-type({{ forloop.index }}),
175+
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type({{ forloop.index }}) {
176+
background-size: cover;
177+
background-position: center;
178+
}
179+
{% endfor %}
180+
</style>
181+
182+
<script>
183+
function isVisible(el) {
184+
while (el) {
185+
if (el === document) {
186+
return true;
187+
}
188+
189+
var $style = window.getComputedStyle(el, null);
190+
191+
if (!el) {
192+
return false;
193+
} else if (!$style) {
194+
return false;
195+
} else if ($style.display === 'none') {
196+
return false;
197+
} else if ($style.visibility === 'hidden') {
198+
return false;
199+
} else if (+$style.opacity === 0) {
200+
return false;
201+
} else if (($style.display === 'block' || $style.display === 'inline-block') &&
202+
$style.height === '0px' && $style.overflow === 'hidden') {
203+
return false;
204+
} else {
205+
return $style.position === 'fixed' || isVisible(el.parentNode);
206+
}
207+
}
208+
}
209+
{% if include.duration %}
210+
setInterval(function(){
211+
var j=0;
212+
var elements = document.querySelectorAll('#carousel{{ number}} .carousel__control--forward');
213+
for(i=(elements.length - 1);i>-1;i--) {
214+
if(isVisible(elements[i])) j=i;
215+
}
216+
elements[j].click();
217+
},{{ include.duration }}000);
218+
{% endif %}
219+
</script>

0 commit comments

Comments
 (0)