Alle Remoterepo Dateien eingefügt
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
This commit is contained in:
parent
687def8975
commit
8a1caf8c7a
8
Gemfile
8
Gemfile
|
@ -1,4 +1,8 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem 'jemoji', '~> 0.12.0'
|
||||
gem 'wdm', '>= 0.1.0' if Gem.win_platform?
|
||||
gem 'jekyll', '~> 3.8'
|
||||
gem 'jekyll-default-layout', '~> 0.1.4'
|
||||
gem 'jekyll-gist', '~> 1.5'
|
||||
gem 'jekyll-github-metadata', '~> 2.12'
|
||||
gem 'jekyll-include-cache', '~> 0.1'
|
||||
gem 'jemoji', '~> 0.11'
|
|
@ -3,9 +3,7 @@ title : bmen
|
|||
description : >-
|
||||
Zwischen neuesten Technologien und
|
||||
traditionellem Handwerk einzuordnen.
|
||||
baseurl : "/" # Change to empty quotes if you are hosting your site at <your-username>.github.io directly
|
||||
repository : ""
|
||||
remote_theme : YoussefRaafatNasry/portfolYOU
|
||||
baseurl : "/"
|
||||
|
||||
|
||||
### Plugins ###
|
||||
|
|
|
@ -0,0 +1,139 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<!-- 404 page by https://codepen.io/gxash/pen/rrJYwm -->
|
||||
|
||||
<html lang="en">
|
||||
|
||||
{% include head.html %}
|
||||
|
||||
<body class="container">
|
||||
|
||||
<div class="wrapper p-5 text-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 1080">
|
||||
|
||||
<g id="Layer_12 yellow-back-fig" data-name="Layer 12">
|
||||
<path class="cls-1" d="M600.87,872H156a4,4,0,0,0-3.78,4.19h0a4,4,0,0,0,3.78,4.19H600.87a4,4,0,0,0,3.78-4.19h0A4,4,0,0,0,600.87,872Z"/>
|
||||
<rect class="cls-1" x="680.91" y="871.98" width="513.38" height="8.39" rx="4.19" ry="4.19"/>
|
||||
<path class="cls-1" d="M1480,876.17h0c0,2.32,2.37,4.19,5.3,4.19h350.61c2.93,0,5.3-1.88,5.3-4.19h0c0-2.32-2.37-4.19-5.3-4.19H1485.26C1482.33,872,1480,873.86,1480,876.17Z"/>
|
||||
<rect class="cls-1" x="492.21" y="920.64" width="249.8" height="8.39" rx="4.19" ry="4.19"/>
|
||||
<path class="cls-1" d="M1549.14,924.84h0a4.19,4.19,0,0,0-4.19-4.19H1067.46a14.66,14.66,0,0,1,.35,3.21v1A4.19,4.19,0,0,0,1072,929h472.94A4.19,4.19,0,0,0,1549.14,924.84Z"/>
|
||||
<path class="cls-1" d="M865.5,924.84h0a4.19,4.19,0,0,0,4.19,4.19h82.37a12.28,12.28,0,0,1-.19-2v-2.17a4.19,4.19,0,0,0-4.19-4.19h-78A4.19,4.19,0,0,0,865.5,924.84Z"/>
|
||||
<rect class="cls-1" x="915.6" y="981.47" width="54.72" height="8.39" rx="4.19" ry="4.19"/>
|
||||
<path class="cls-1" d="M730.33,985.67h0c0,2.32,4.23,4.19,9.44,4.19h104.3c5.22,0,9.44-1.88,9.44-4.19h0c0-2.32-4.23-4.19-9.44-4.19H739.78C734.56,981.47,730.33,983.35,730.33,985.67Z"/>
|
||||
<rect class="cls-1" x="997.06" y="981.47" width="78.11" height="8.39" rx="4.19" ry="4.19"/>
|
||||
|
||||
<g id="round-conf">
|
||||
<path class="cls-1 circle c1" d="M536.41,155.14a17.77,17.77,0,1,0,17.77,17.77A17.77,17.77,0,0,0,536.41,155.14Zm0,28.68a10.9,10.9,0,1,1,10.9-10.9A10.9,10.9,0,0,1,536.41,183.81Z"/>
|
||||
<path class="cls-1 circle c2" d="M1345.09,82.44a17.77,17.77,0,1,0,17.77,17.77A17.77,17.77,0,0,0,1345.09,82.44Zm0,28.68a10.9,10.9,0,1,1,10.9-10.9A10.9,10.9,0,0,1,1345.09,111.12Z"/>
|
||||
<path class="cls-1 circle c3" d="M70.12,363A17.77,17.77,0,1,0,87.89,380.8,17.77,17.77,0,0,0,70.12,363Zm0,28.68A10.9,10.9,0,1,1,81,380.8,10.9,10.9,0,0,1,70.12,391.7Z"/>
|
||||
<path class="cls-1 circle c4" d="M170.47,751.82a17.77,17.77,0,1,0,17.77,17.77A17.77,17.77,0,0,0,170.47,751.82Zm0,28.68a10.9,10.9,0,1,1,10.9-10.9A10.9,10.9,0,0,1,170.47,780.5Z"/>
|
||||
<path class="cls-1 circle c5" d="M1457.34,762.73a17.77,17.77,0,1,0,17.77,17.77A17.77,17.77,0,0,0,1457.34,762.73Zm0,28.68a10.9,10.9,0,1,1,10.9-10.9A10.9,10.9,0,0,1,1457.34,791.4Z"/>
|
||||
<path class="cls-1 circle c6" d="M1829.15,407.49a17.77,17.77,0,1,0,17.77,17.77A17.77,17.77,0,0,0,1829.15,407.49Zm0,28.68a10.9,10.9,0,1,1,10.9-10.9A10.9,10.9,0,0,1,1829.15,436.17Z"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="fortyfour" data-name="Layer 2">
|
||||
<g class="four a">
|
||||
<rect class="cls-2" x="233.74" y="391.14" width="120.71" height="466.29" rx="57.1" ry="57.1" transform="translate(918.39 330.19) rotate(90)"/>
|
||||
<rect class="cls-3" x="333.83" y="475.1" width="120.71" height="396.88" rx="60.36" ry="60.36"/>
|
||||
<rect class="cls-3" x="197.13" y="122.89" width="120.71" height="604.75" rx="60.36" ry="60.36" transform="translate(290.49 -70.78) rotate(35)"/>
|
||||
</g>
|
||||
<g class="four b">
|
||||
<rect class="cls-2" x="1558.84" y="391.91" width="120.71" height="466.29" rx="57.1" ry="57.1" transform="translate(2244.26 -994.14) rotate(90)"/>
|
||||
<rect class="cls-3" x="1658.92" y="475.87" width="120.71" height="396.88" rx="60.36" ry="60.36"/>
|
||||
<rect class="cls-3" x="1522.22" y="123.66" width="120.71" height="604.75" rx="60.36" ry="60.36" transform="translate(530.57 -830.68) rotate(35)"/>
|
||||
</g>
|
||||
<path class="cls-3" id="ou" d="M956.54,168.2c-194.34,0-351.89,157.55-351.89,351.89S762.19,872,956.54,872s351.89-157.55,351.89-351.89S1150.88,168.2,956.54,168.2Zm0,584.49c-128.46,0-232.6-104.14-232.6-232.6s104.14-232.6,232.6-232.6,232.6,104.14,232.6,232.6S1085,752.69,956.54,752.69Z"/>
|
||||
</g>
|
||||
|
||||
<g id="umbrella" data-name="Layer 3">
|
||||
<g>
|
||||
<circle class="cls-4" cx="1187.53" cy="240.3" r="7.66" transform="translate(236.36 990.8) rotate(-49.71)"/>
|
||||
<g>
|
||||
<path class="cls-5" d="M1219.56,359.67l55,100.52c32.7-48.48-6.87-142.43-91.75-214.38-84.41-71.55-183-95.33-225.81-56l114.21,44.14Z"/>
|
||||
<path class="cls-6" d="M1182.79,245.81c-84.41-71.55-183-95.33-225.81-56l114.21,44.14Z"/>
|
||||
<polygon class="cls-7" points="1182.79 245.81 1071.19 233.91 1219.56 359.67 1182.79 245.81"/>
|
||||
</g>
|
||||
<polygon class="cls-8" points="1180.91 409.02 1274.54 460.19 1219.56 359.67 1071.19 233.91 956.98 189.76 1021.95 274.29 1180.91 409.02"/>
|
||||
<g>
|
||||
<rect class="cls-4" x="997.45" y="358.35" width="175.58" height="5.1" transform="translate(108.21 955.38) rotate(-49.71)"/>
|
||||
<rect class="cls-4" x="1028.09" y="399.36" width="21.46" height="32.27" rx="10.73" ry="10.73" transform="translate(515.04 -573.16) rotate(40.29)"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="pillow" data-name="Layer 4">
|
||||
<path class="cls-1" d="M754,627.07c7,.54,12.92-2.82,13.35-7.59s-4.95-9.24-12-9.87a18.55,18.55,0,0,0-2.17,0l-74.9-81.64c0-.1,0-.19,0-.29,0-7.09-4-12.83-8.8-12.81s-8.75,5.77-8.73,12.87c0,0,0,.09,0,.13l-50.21,46.07h-.09c-7.06-.63-13.14,2.77-13.57,7.59s4.87,9.16,11.85,9.84l76.08,82.92s0,0,0,.06c0,7.09,4,12.83,8.8,12.81s8.65-5.66,8.71-12.65Z"/>
|
||||
<path class="cls-9" d="M669.46,514.82c-4.77-.83-8.75,5.77-8.73,12.87,0,0,0,.09,0,.13l-50.21,46.07h-.09c-7.06-.63-13.14,2.77-13.57,7.59s4.87,9.16,11.85,9.84l76.08,82.92s0,0,0,.06c0,7.09,4,12.83,8.8,12.81s8.65-5.66,8.71-12.65C570.55,573,702.07,520.47,669.46,514.82Z"/>
|
||||
</g>
|
||||
|
||||
<g id="cup" data-name="Layer 7">
|
||||
<polygon class="cls-1" points="1173.69 748.21 1140.52 715.42 1195.79 647.35 1241.13 692.16 1173.69 748.21"/>
|
||||
<polygon class="cls-8" points="1173.69 748.21 1140.52 715.42 1143.93 711.27 1177.81 744.75 1173.69 748.21"/>
|
||||
<polygon class="cls-5" points="1194.68 731.46 1157.04 694.24 1183.8 661.7 1226.91 704.32 1194.68 731.46"/>
|
||||
<g class="cls-10">
|
||||
<path class="cls-8" d="M1176.32,667.78h0a4.19,4.19,0,0,1,4.19,4.19v33.54a0,0,0,0,1,0,0h-8.38a0,0,0,0,1,0,0V672a4.19,4.19,0,0,1,4.19-4.19Z" transform="translate(822.53 -628.67) rotate(44.67)"/>
|
||||
<path class="cls-8" d="M1172.73,709.7l23.58-23.85a4.19,4.19,0,0,1,5.92,0h0a4.19,4.19,0,0,1,0,5.92l-23.58,23.85Z"/>
|
||||
<path class="cls-8" d="M1185.11,722.09l23.58-23.85a4.19,4.19,0,0,1,5.92,0h0a4.19,4.19,0,0,1,0,5.92L1191.06,728Z"/>
|
||||
</g>
|
||||
<path class="cls-5" d="M1197.85,660.5h45.69a5.7,5.7,0,0,1,5.7,5.7v8.32a0,0,0,0,1,0,0h-57.09a0,0,0,0,1,0,0v-8.32A5.7,5.7,0,0,1,1197.85,660.5Z" transform="translate(829.53 -667.66) rotate(45)"/>
|
||||
<path class="cls-8" d="M1191.49,664.74h53.94a5.25,5.25,0,0,1,5.25,5.25v4.79a0,0,0,0,1,0,0h-64.44a0,0,0,0,1,0,0V670a5.25,5.25,0,0,1,5.25-5.25Z" transform="translate(822.83 -663.17) rotate(44.67)"/>
|
||||
</g>
|
||||
|
||||
<g id="clock" data-name="Layer 8">
|
||||
<circle class="cls-5" cx="847.7" cy="247.59" r="74.66" transform="translate(-32.91 314.05) rotate(-20.6)"/>
|
||||
<circle class="cls-1" cx="847.7" cy="247.59" r="63.44" transform="translate(-32.91 314.05) rotate(-20.6)"/>
|
||||
<rect class="cls-3 clock-hand-1" x="845" y="189.5" width="6.04" height="58" rx="3.02" ry="3.02" />
|
||||
<rect class="cls-3 clock-hand-2" x="845" y="209.5" width="6.04" height="38" rx="3.02" ry="3.02" transform="translate(1611.22 -230.4) rotate(130.4)"/>
|
||||
<circle class="cls-3" cx="847.7" cy="247.59" transform="translate(-32.91 314.05) rotate(-20.6)" r="3" />
|
||||
</g>
|
||||
|
||||
<g id="box" data-name="Layer 9">
|
||||
<g id="box-top"><polygon class="cls-8" points="569.71 382.28 653.74 329.39 747.13 320.1 679.2 369.85 569.71 382.28"></polygon>
|
||||
<polygon class="cls-5" points="691.95 367.2 570.87 392.34 565.32 383.35 687.8 357.45 691.95 367.2"></polygon>
|
||||
<polygon class="cls-5" points="661.54 337.48 570.87 392.34 562.42 378.92 652.25 322.38 658.12 321.34 661.54 337.48"></polygon><polygon class="cls-7" points="661.54 337.48 570.87 392.34 562.42 378.92 652.25 322.38 658.12 321.34 661.54 337.48"></polygon><polygon class="cls-5" points="747.13 320.1 661.54 337.48 652.25 322.38 738.4 307.1 747.13 320.1"></polygon>
|
||||
</g>
|
||||
<path class="cls-5" d="M588.28,420.26s3.44,5.2,5.19,8l43.1,68.48,158.81-100-43.1-68.48q-2.63-4.17-5.47-8Z"></path>
|
||||
<path class="cls-7" d="M588.28,420.26s3.44,5.2,5.19,8l43.1,68.48,158.81-100-43.1-68.48q-2.63-4.17-5.47-8Z"></path>
|
||||
<rect class="cls-5" x="693.73" y="335.51" width="83.99" height="90.58" transform="translate(-89.78 450.43) rotate(-32.19)"></rect>
|
||||
</g>
|
||||
|
||||
<g id="rucksack" data-name="Layer 6">
|
||||
<g id="stripe"><path class="cls-12" d="M1200.32,473.91h0a13.74,13.74,0,0,0-18.41,7.44l-55,129.86a14.82,14.82,0,0,0,7.13,19.21h0a13.74,13.74,0,0,0,18.41-7.44l55-129.86A14.82,14.82,0,0,0,1200.32,473.91Z"/>
|
||||
<path class="cls-13" d="M1202.18,606.34h0a14,14,0,0,0-16.18-11.8l-48.83,9c-7.59,1.4-12.66,9-11.31,16.89h0a14,14,0,0,0,16.18,11.8l48.83-9C1198.46,621.82,1203.53,614.26,1202.18,606.34Z"/>
|
||||
</g>
|
||||
<path class="cls-8" d="M1300.86,603l-122.93,22.74-15.44-90.91c-5.75-33.86,15.89-66.17,48.34-72.18l11.58-2.08c32.45-6,57.26,17.66,63,51.51Z"/>
|
||||
<path class="cls-1" d="M1307,601.91l-112.32,20.78-15.9-93.61c-5.5-32.36,15.19-63.25,46.2-69h0c31-5.74,60.62,15.85,66.12,48.21Z"/>
|
||||
<path class="cls-8" d="M1296.76,603.8,1215,618.92l-4.89-28.77c-2.11-12.42,5.83-24.27,17.73-26.47l38.67-7.15c11.9-2.2,23.26,6.08,25.37,18.5Z"/>
|
||||
<path class="cls-5" d="M1296.76,603.8l-73.41,13.58-4.92-29c-2-11.62,5.45-22.72,16.6-24.78l33.07-6.12c11.14-2.06,21.77,5.69,23.75,17.32Z"/>
|
||||
<path class="cls-4" d="M1231.77,469.69l-13.42,2.48a10.25,10.25,0,0,0-8,11.92l2.38,14a9.9,9.9,0,0,0,11.42,8.33l13.42-2.48a10.25,10.25,0,0,0,8-11.92l-2.38-14A9.9,9.9,0,0,0,1231.77,469.69Zm7.17,20.84a6.39,6.39,0,0,1-5,7.43l-8.36,1.55a6.17,6.17,0,0,1-7.12-5.19l-1.48-8.73a6.39,6.39,0,0,1,5-7.43l8.36-1.55a6.17,6.17,0,0,1,7.12,5.19Z"/>
|
||||
<path class="cls-14" d="M1233.74,471.13l-13.42,2.48a10.25,10.25,0,0,0-8,11.92l2.38,14a9.9,9.9,0,0,0,11.42,8.33l13.42-2.48a10.25,10.25,0,0,0,8-11.92l-2.38-14A9.9,9.9,0,0,0,1233.74,471.13Zm7.17,20.84a6.39,6.39,0,0,1-5,7.43l-8.36,1.55a6.17,6.17,0,0,1-7.12-5.19L1219,487a6.39,6.39,0,0,1,5-7.43l8.36-1.55a6.17,6.17,0,0,1,7.12,5.19Z"/>
|
||||
</g>
|
||||
|
||||
<g id="bike" data-name="Layer 5">
|
||||
<path class="cls-8 wheel" d="M1139.82,780.44a76.59,76.59,0,1,0-57.9,91.53A76.59,76.59,0,0,0,1139.82,780.44Zm-28.12,6.33a47.59,47.59,0,0,1,.83,15.8c-30.14-6.28-47.68-21.65-54.39-52.52A47.73,47.73,0,0,1,1111.69,786.77Zm-70.46-30.9c10.35,26.88,10.14,50.4-13.73,70.77a47.67,47.67,0,0,1,13.73-70.77Zm34.35,88a47.55,47.55,0,0,1-34.94-5.62c16.8-20.36,41.71-25.94,67.09-19.46A47.66,47.66,0,0,1,1075.58,843.85Z"/>
|
||||
<path class="cls-8 wheel" d="M864.89,789.69a76.59,76.59,0,1,0-66.13,85.78A76.59,76.59,0,0,0,864.89,789.69Zm-28.59,3.7a47.59,47.59,0,0,1-.64,15.81c-29.43-9-45.47-26-49.3-57.33A47.73,47.73,0,0,1,836.3,793.39ZM769,756.1c7.82,27.72,5.43,51.12-20.22,69.2A47.67,47.67,0,0,1,769,756.1Zm26.06,90.78a47.55,47.55,0,0,1-34.27-8.83c18.61-18.72,43.93-22,68.6-13.16A47.66,47.66,0,0,1,795.06,846.88Z"/>
|
||||
<g>
|
||||
<rect class="cls-1" x="871.39" y="693.37" width="12.87" height="53.21" transform="translate(-165.97 273.38) rotate(-16.19)"/>
|
||||
<path class="cls-5" d="M813.93,679.35c-3.72-5.2,2.24-18.5,9.16-16.13,33.43,11.46,73.85,10.45,73.85,10.45,8.84.15,14.44,10.34,7.27,15.48-14.36,8.79-33.13,17-56.35,9.76C830.17,693.41,819.83,687.6,813.93,679.35Z"/>
|
||||
<path class="cls-7" d="M813.93,679.35c-3.72-5.2,2.24-18.5,9.16-16.13,33.43,11.46,73.85,10.45,73.85,10.45,8.84.15,14.44,10.34,7.27,15.48-14.36,8.79-33.13,17-56.35,9.76C830.17,693.41,819.83,687.6,813.93,679.35Z"/>
|
||||
<path class="cls-5" d="M817.15,680.06c-3.59-5,1.69-16.51,8.37-14.22,32.3,11.09,71.41,7.83,71.41,7.83,8.54.14,17.45,9.94,7.43,15.88-13.87,8.51-32,16.44-54.44,9.44C832.84,693.67,822.85,688,817.15,680.06Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<circle class="cls-9" cx="1022.66" cy="599.55" r="11.57" transform="translate(-4.86 8.38) rotate(-0.47)"/>
|
||||
<path class="cls-1" d="M1069.76,792.37l-34.89-96.74,1.93-.8-1.71-4.15-1.74.72-13.26-36.76,1.27-.42-2.25-6.76,5.94-2-2.57-7.72-9.7,3.22c-11.55-22.55,2-36.33,15-41.86l-5.57-8.81c-23,10.29-29.61,28.75-19.53,54l-9.38,3.12,2.56,7.72,5.47-1.82,2.25,6.76,2.36-.78,13.62,37.76-2.35,1,1.71,4.15,2.16-.89,34.65,96.09a7.47,7.47,0,0,0,9.56,4.49h0A7.47,7.47,0,0,0,1069.76,792.37Z"/>
|
||||
<circle class="cls-11" cx="1027.9" cy="587.94" r="12.99" transform="translate(-4.77 8.42) rotate(-0.47)"/>
|
||||
</g>
|
||||
<path class="cls-5" d="M1021.29,654l-17.73,6.15,1.72,5.59-31.41,82.36c-19.35,32.53-66.3,36.72-75.56,16.68l-7.09-21.5L879,747.1l3.28,10.09-94.65,33.95c-11.49,2.29-11.85,15.79-2.61,17.84,0,0,39.11,3.66,103,9.5a92.75,92.75,0,0,0,40.89-5.29c44.32-16.56,57.73-50.67,57.73-50.67l26.82-67.26a1.37,1.37,0,0,1,2.53,0l1.42,3.33,17.75-7.62Z"/>
|
||||
<path class="cls-7" d="M1021.29,654l-17.73,6.15,1.72,5.59-31.41,82.36c-19.35,32.53-66.3,36.72-75.56,16.68l-7.09-21.5L879,747.1l3.28,10.09-94.65,33.95c-11.49,2.29-11.85,15.79-2.61,17.84,0,0,39.11,3.66,103,9.5a92.75,92.75,0,0,0,40.89-5.29c44.32-16.56,57.73-50.67,57.73-50.67l26.82-67.26a1.37,1.37,0,0,1,2.53,0l1.42,3.33,17.75-7.62Z"/>
|
||||
</g>
|
||||
|
||||
</svg>
|
||||
|
||||
<h3>Page not Found!</h3>
|
||||
<a class="btn btn-outline-primary mt-1" href="{{ site.baseurl }}/">Go Back Home</a>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,11 @@
|
|||
<div class="col-lg">
|
||||
<h2 class="mb-3">{{ include.title }}</h2>
|
||||
{% for skill in include.source %}
|
||||
<div class="skill">
|
||||
<p>{{ skill.name }}</p>
|
||||
<div class="skill-bar skill-bar-{{ skill.color }} skill-{{ skill.percentage }} wow animated slideInLeft" data-wow-delay="{{ forloop.index | divided_by: 20.0 }}">
|
||||
<span>{{ skill.percentage }}%</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
|
@ -0,0 +1,13 @@
|
|||
<div class="col mt-4">
|
||||
<div class="timeline-body">
|
||||
{% for item in site.data.timeline %}
|
||||
<div class="timeline-item">
|
||||
<div class="content">
|
||||
<h2>{{ item.title }}</h2>
|
||||
<h6 class="date">{{ item.from }} — {{ item.to }}</h6>
|
||||
<p>{{ item.description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,11 @@
|
|||
{%- if jekyll.environment == 'production' and site.analytics.enabled == true -%}
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.tracking_id }}"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', '{{ site.analytics.google.tracking_id }}');
|
||||
</script>
|
||||
{%- endif -%}
|
|
@ -0,0 +1,14 @@
|
|||
{%- if site.disqus -%}
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
var disqus_shortname = '{{ site.disqus }}';
|
||||
(function() {
|
||||
var disqus = document.createElement('script');
|
||||
disqus.type = 'text/javascript';
|
||||
disqus.async = true;
|
||||
disqus.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(disqus);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
{%- endif -%}
|
|
@ -0,0 +1,7 @@
|
|||
<div class="card-group mt-2">
|
||||
|
||||
{% for post in site.posts %}
|
||||
{% include blog/post-card.html %}
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
|
@ -0,0 +1,49 @@
|
|||
{%- comment -%} Default Styles {%- endcomment -%}
|
||||
{%- assign card_style = '' -%}
|
||||
{%- assign text_style = 'text-dark' -%}
|
||||
{%- assign badge_style = 'badge-dark' -%}
|
||||
|
||||
{%- comment -%} Update Styles {%- endcomment -%}
|
||||
{%- if post.style == 'fill' -%}
|
||||
{%- assign card_style = post.color | prepend: 'bg-' -%}
|
||||
{%- if post.color != 'light' -%}
|
||||
{%- assign text_style = 'text-white' -%}
|
||||
{%- assign badge_style = 'badge-light text-' -%}
|
||||
{%- assign badge_style = badge_style | append: post.color -%}
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- assign card_style = post.color | prepend: 'border border-' -%}
|
||||
{%- if post.color -%}
|
||||
{%- assign badge_style = post.color | prepend: 'badge-' -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- comment -%} Determine Post URL {%- endcomment -%}
|
||||
{%- if post.external_url -%}
|
||||
{%- assign post_url = post.external_url -%}
|
||||
{%- else -%}
|
||||
{%- assign post_url = post.url | relative_url -%}
|
||||
{%- endif -%}
|
||||
|
||||
<div class="col-lg-6 my-3 wow animated fadeIn" data-wow-delay=".15s">
|
||||
<a href="{{ post_url }}" class="post card {{ card_style }}">
|
||||
<div class="card-body {{ text_style }}">
|
||||
<h3 class="card-title">{{ post.title }}</h3>
|
||||
<p class="card-text">
|
||||
{% for tag in post.tags %}
|
||||
<span class="badge {{ badge_style }}">{{ tag }}</span>
|
||||
{% endfor %}
|
||||
</p>
|
||||
<p class="card-text">
|
||||
{%- if post.description -%}
|
||||
{{ post.description }}
|
||||
{%- else -%}
|
||||
{{ post.content | truncatewords: 25, "<small><i> read more...</i></small>" }}
|
||||
{%- endif -%}
|
||||
</p>
|
||||
</div>
|
||||
<div class="card-footer {{ text_style }}">
|
||||
{{ post.date | date_to_long_string }}
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
|
@ -0,0 +1,25 @@
|
|||
<!-- Simple-Jekyll-Search https://github.com/christian-fei/Simple-Jekyll-Search -->
|
||||
|
||||
<div class="input-group mt-5 px-3">
|
||||
<input id="search-input" type="text" class="form-control search-box" placeholder="Search posts..">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text border border-primary bg-primary text-white">
|
||||
<i class="fas fa-search"></i>
|
||||
</span>
|
||||
</div>
|
||||
<button class="btn btn-outline-primary ml-1" onclick="location.href = '{{ '/blog/tags' | relative_url }}';">
|
||||
<i class="fas fa-tags"></i>
|
||||
</button>
|
||||
</div>
|
||||
<ul class="px-3" id="results-container"></ul>
|
||||
|
||||
<script src="https://cdn.rawgit.com/christian-fei/Simple-Jekyll-Search/master/dest/simple-jekyll-search.min.js"></script>
|
||||
<script>
|
||||
var sjs = SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('results-container'),
|
||||
searchResultTemplate: '<a href="{url}" class="list-group-item list-group-item-action">{title}</a>',
|
||||
noResultsText: '<li class="list-group-item">No results found</li>',
|
||||
json: '{{ '/search.json' | relative_url }}'
|
||||
})
|
||||
</script>
|
|
@ -0,0 +1,31 @@
|
|||
<!-- Collect tags from all posts -->
|
||||
{%- assign tags = blank -%}
|
||||
{%- for post in site.posts -%}
|
||||
{%- assign post_tags = post.tags | join:'|' | append:'|' -%}
|
||||
{%- if post_tags != '|' -%}
|
||||
{%- assign tags = tags | append:post_tags -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- assign tags = tags | split:'|' | uniq | sort -%}
|
||||
|
||||
<!-- List tags & related posts -->
|
||||
{% for tag in tags %}
|
||||
<div class="py-3">
|
||||
<h4 id="{{ tag | slugify }}">{{ tag }}</h4>
|
||||
<ol>
|
||||
{% for post in site.posts %}
|
||||
{%- if post.tags contains tag -%}
|
||||
{%- if post.external_url -%}
|
||||
{%- assign url = post.external_url -%}
|
||||
{%- else -%}
|
||||
{%- assign url = post.url | relative_url -%}
|
||||
{%- endif -%}
|
||||
<a href="{{ url }}"><li>{{ post.title }}</li></a>
|
||||
<small class="text-muted"> - {{ post.date | date_to_long_string }}</small>
|
||||
<br/>
|
||||
{%- endif -%}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</div>
|
||||
<hr class="bg-light">
|
||||
{% endfor %}
|
|
@ -0,0 +1,9 @@
|
|||
{% if include.block %}
|
||||
{%- assign block_style = "btn-block" -%}
|
||||
{%- else -%}
|
||||
{%- assign block_style = "" -%}
|
||||
{%- endif -%}
|
||||
|
||||
<a class="m-1 btn btn-{{ include.style | default: 'outline-primary' }} btn-{{ include.size | default: 'md' }} {{ block_style }}" href="{{ include.link | default: '#' }}">
|
||||
{{ include.text | default: "Button" }}
|
||||
</a>
|
|
@ -0,0 +1,40 @@
|
|||
{%- assign images = carousel_images | strip | newline_to_br | split: '<br />' -%}
|
||||
|
||||
<div id="carouselExampleIndicators" class="carousel slide" data-ride="false">
|
||||
|
||||
<ol class="carousel-indicators">
|
||||
{% for image in images %}
|
||||
{%- if forloop.first -%}
|
||||
<li data-target="#carouselExampleIndicators" data-slide-to="{{forloop.index0}}" class="active"></li>
|
||||
{%- else -%}
|
||||
<li data-target="#carouselExampleIndicators" data-slide-to="{{forloop.index0}}"></li>
|
||||
{%- endif -%}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
|
||||
<div class="carousel-inner">
|
||||
{% for image in images %}
|
||||
{%- if forloop.first -%}
|
||||
<div class="carousel-item active">
|
||||
<img src="{{ image }}" class="d-block w-100">
|
||||
</div>
|
||||
{%- else -%}
|
||||
<div class="carousel-item">
|
||||
<img src="{{ image }}" class="d-block w-100">
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
|
||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</a>
|
||||
|
||||
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
|
||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<figure class="figure w-100">
|
||||
<img src="{{ include.image }}" class="figure-img img-fluid rounded" alt="{{ include.alt | default: include.caption }}">
|
||||
{%- if include.caption -%}
|
||||
<figcaption class="figure-caption text-center">{{ include.caption }}</figcaption>
|
||||
{%- endif -%}
|
||||
</figure>
|
|
@ -0,0 +1,4 @@
|
|||
<footer>
|
||||
This page is <b>open source</b>. Noticed a typo? <br />
|
||||
Or something unclear? {% github_edit_link "Improve it on GitHub" %}.
|
||||
</footer>
|
|
@ -0,0 +1 @@
|
|||
<mark class="px-2">{{ include.text }}</mark>
|
|
@ -0,0 +1,19 @@
|
|||
{%- assign items = list_items | strip | newline_to_br | split: '<br />' -%}
|
||||
|
||||
<div class="list-group my-3">
|
||||
|
||||
{%- if include.title -%}
|
||||
<a class="list-group-item list-group-item-action active disabled text-white">{{ include.title }}</a>
|
||||
{%- endif -%}
|
||||
|
||||
{% for item in items %}
|
||||
{%- if include.type == "toc" -%}
|
||||
<a class="list-group-item list-group-item-action" href="#{{ item | slugify }}">{{ item }}</a>
|
||||
{%- else -%}
|
||||
{%- assign item_object = item | split: ',' -%}
|
||||
<a class="list-group-item list-group-item-action" href="{{ item_object[1] }}">{{ item_object[0] }}</a>
|
||||
{%- endif -%}
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<div class="video">
|
||||
<iframe src="https://www.youtube.com/embed/{{ include.id }}" frameborder="0" allowfullscreen></iframe>
|
||||
</div>
|
|
@ -0,0 +1,23 @@
|
|||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="{{ site.description }}">
|
||||
|
||||
<title>{{ site.title }}</title>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="{{ '/assets/favicon.ico' | relative_url }}">
|
||||
|
||||
<!-- Font Awesome CDN -->
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.10.0/css/all.css">
|
||||
|
||||
<!-- Bootstrap CSS CDN -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
|
||||
|
||||
<!-- Animate CSS CDN -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.css" type="text/css"/>
|
||||
|
||||
<!-- Custom CSS -->
|
||||
<link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}" type="text/css">
|
||||
|
||||
</head>
|
|
@ -0,0 +1,15 @@
|
|||
<div class="row justify-content-center align-items-center p-4">
|
||||
<div class="col-lg-4 col-md-6 text-center mt-4">
|
||||
|
||||
<!-- Fine Circle Responsive Image -->
|
||||
<div id="container" class="my-2">
|
||||
<div id="dummy"></div>
|
||||
<div id="element">
|
||||
<img src="{{ site.author.image }}" alt="{{ site.title }}" class="circle-image wow animated zoomIn" data-wow-delay=".1s">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="text-muted wow animated slideInUp" data-wow-delay=".15s">{{ site.description }}</p>
|
||||
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,61 @@
|
|||
<nav class="navbar navbar-expand-lg navbar-light">
|
||||
|
||||
<a class="navbar-brand" href="{{ site.baseurl }}/"><h5><b>{{ site.title }}</b></h5></a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
|
||||
<div class="navbar-nav ml-auto">
|
||||
|
||||
{%- assign html_pages = site.html_pages | sort: 'weight' -%}
|
||||
{%- assign filtered_pages = "" | split: "" -%}
|
||||
|
||||
{%- for html_page in html_pages -%}
|
||||
|
||||
{%- assign exclude = false -%}
|
||||
|
||||
{%- for exclude_path in site.nav_exclude -%}
|
||||
|
||||
{%- if exclude_path == html_page.path -%}
|
||||
{%- assign exclude = true -%}
|
||||
{%- break -%}
|
||||
{%- elsif exclude_path contains '**' -%}
|
||||
{%- assign match = exclude_path | remove: '**' -%}
|
||||
{%- if html_page.path contains match -%}
|
||||
{%- assign exclude = true -%}
|
||||
{%- break -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
{%- unless exclude -%}
|
||||
{%- assign filtered_pages = filtered_pages | push: html_page -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
{% for html_page in filtered_pages %}
|
||||
|
||||
{%- if page.url contains html_page.url -%}
|
||||
{%- assign active_status = "active" -%}
|
||||
{%- else -%}
|
||||
{%- assign active_status = "" -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if html_page.external_url -%}
|
||||
{%- assign url = html_page.external_url -%}
|
||||
{%- else -%}
|
||||
{%- assign url = html_page.url | relative_url -%}
|
||||
{%- endif -%}
|
||||
|
||||
<a class="nav-item nav-link {{ active_status }}" href="{{ url }}">{{ html_page.title }}</a>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
|
@ -0,0 +1,55 @@
|
|||
<!-- Remote Projects JS -->
|
||||
<script src="{{ '/assets/js/remote-projects.js' | relative_url }}"></script>
|
||||
|
||||
<div class="card-columns m-3 mt-5">
|
||||
|
||||
<!-- Remote Projects -->
|
||||
{% for remote_project in page.remote_projects %}
|
||||
|
||||
{%- for repo in site.github.public_repositories -%}
|
||||
{%- if remote_project == repo.name -%}
|
||||
{%- assign project = repo -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
|
||||
{%- assign words = project.name | split: '-' -%}
|
||||
{%- capture titlecase -%}
|
||||
{%- for word in words -%}
|
||||
{{ word | capitalize | append: ' ' }}
|
||||
{%- endfor -%}
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- assign project_type = "remote" -%}
|
||||
{%- assign project_id = project.name -%}
|
||||
{%- assign project_img = false -%}
|
||||
{%- assign project_name = titlecase | strip -%}
|
||||
{%- assign project_desc = project.description -%}
|
||||
{%- assign project_url = project.html_url -%}
|
||||
|
||||
{% include projects/project-card.html %}
|
||||
|
||||
<script>get_tools("{{ site.github.owner_name }}/{{ remote_project }}")</script>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
<!-- Local Projects -->
|
||||
{% for project in site.projects %}
|
||||
|
||||
{%- assign project_type = "local" -%}
|
||||
{%- assign project_id = project.name | slugify -%}
|
||||
{%- assign project_img = project.image -%}
|
||||
{%- assign project_name = project.name -%}
|
||||
{%- assign project_desc = project.description -%}
|
||||
{%- assign project_tools = project.tools -%}
|
||||
|
||||
{%- if project.external_url -%}
|
||||
{%- assign project_url = project.external_url -%}
|
||||
{%- else -%}
|
||||
{%- assign project_url = project.url | relative_url -%}
|
||||
{%- endif -%}
|
||||
|
||||
{% include projects/project-card.html %}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
|
@ -0,0 +1,21 @@
|
|||
<div class="wow animated fadeIn" data-wow-delay=".15s">
|
||||
<a href="{{ project_url }}" class="project card text-dark">
|
||||
{%- if project_img -%}
|
||||
<img id="{{ project_id }}-img" class="card-img-top" src="{{ project_img }}" alt="{{ project_name }}" />
|
||||
{%- endif -%}
|
||||
<div class="card-body">
|
||||
<h5 id="{{ project_id }}-name" class="card-title">
|
||||
{%- if project_type == "remote" -%}
|
||||
<i class="fab fa-github" data-toggle="tooltip" data-placement="bottom" data-delay="250" title="GitHub Repository"></i> |
|
||||
{%- endif -%}
|
||||
{{ project_name }}
|
||||
</h5>
|
||||
<p id="{{ project_id }}-desc" class="card-text">{{ project_desc }}</p>
|
||||
<p id="{{ project_id }}-tools" class="card-text">
|
||||
{%- for tool in project_tools -%}
|
||||
<span class="badge badge-pill text-primary border border-primary ml-1">{{ tool }}</span>
|
||||
{%- endfor -%}
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
|
@ -0,0 +1,22 @@
|
|||
<!-- GitHub Buttons -->
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
|
||||
<!-- jQuery CDN -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||
|
||||
<!-- Popper.js CDN -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
|
||||
|
||||
<!-- Bootstrap JS CDN -->
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||
|
||||
<!-- wow.js CDN & Activation -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.js"></script>
|
||||
<script> new WOW().init(); </script>
|
||||
|
||||
<!-- Initialize all tooltips -->
|
||||
<script>
|
||||
$(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip()
|
||||
})
|
||||
</script>
|
|
@ -0,0 +1,20 @@
|
|||
<div class="container-fluid justify-content-center">
|
||||
|
||||
{%- assign unfocused_color = "6c757d" -%}
|
||||
|
||||
{% for account in site.author %}
|
||||
|
||||
{%- assign service_name = account[0] -%}
|
||||
{%- assign service_data = site.data.social-media[service_name] -%}
|
||||
{%- if service_data -%}
|
||||
<a class="social mx-1" href="{{ service_data.url }}{{ account[1] }}"
|
||||
style="color: #{{ unfocused_color }}"
|
||||
onMouseOver="this.style.color='#{{ service_data.color }}'"
|
||||
onMouseOut="this.style.color='#{{ unfocused_color }}'">
|
||||
<i class="{{ service_data.icon }} fa-1x"></i>
|
||||
</a>
|
||||
{%- endif -%}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<!--
|
||||
portfolYOU Jekyll theme by Youssef Raafat
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/YoussefRaafatNasry/portfolYOU
|
||||
-->
|
||||
|
||||
<html lang="en" class="h-100">
|
||||
|
||||
{% include head.html %}
|
||||
|
||||
<body class="d-flex flex-column h-100">
|
||||
|
||||
<main class="flex-shrink-0 container mt-5">
|
||||
{% include navbar.html %}
|
||||
{{ content }}
|
||||
</main>
|
||||
|
||||
{% include footer.html %}
|
||||
{% include analytics.html %}
|
||||
{% include scripts.html %}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,141 @@
|
|||
{% assign page_title = page.title | slice: 2, page.title.size %}
|
||||
<h2 id="{{ page_title | slugify }}">{{ page_title }}</h2>
|
||||
|
||||
{%- assign code = content | strip -%}
|
||||
|
||||
{%- if code contains '{% ' -%}
|
||||
|
||||
{%- assign code = code | newline_to_br | split: '<br />' -%}
|
||||
|
||||
{%- assign start_capture = false -%}
|
||||
{%- assign captured_text = '' -%}
|
||||
{%- assign captured_var = '' -%}
|
||||
{%- assign includes = '' | split: '' -%}
|
||||
|
||||
{%- for line in code -%}
|
||||
|
||||
{%- if line contains '{% endcapture' -%}
|
||||
{%- assign start_capture = false -%}
|
||||
{%- elsif start_capture == true -%}
|
||||
{%- assign captured_text = captured_text | append: line -%}
|
||||
{%- elsif line contains '{% capture' -%}
|
||||
{%- assign temp = line | split: ' ' -%}
|
||||
{%- assign captured_var = temp[2] -%}
|
||||
{%- assign start_capture = true -%}
|
||||
{%- elsif line contains '{% include' -%}
|
||||
{%- assign includes = includes | push: line -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
{%- assign list_items = nil -%}
|
||||
{%- assign carousel_images = nil -%}
|
||||
|
||||
{%- case captured_var -%}
|
||||
{%- when 'list_items' -%}
|
||||
{%- assign list_items = captured_text -%}
|
||||
{%- when 'carousel_images' -%}
|
||||
{%- assign carousel_images = captured_text -%}
|
||||
{%- endcase -%}
|
||||
|
||||
{%- for include in includes -%}
|
||||
|
||||
{%- assign incl = include | strip -%}
|
||||
{%- assign incl = incl | remove: '{% include ' -%}
|
||||
{%- assign incl = incl | remove: ' %' | remove: '}' -%}
|
||||
{%- assign incl = incl | replace_first: ' ', '" ' -%}
|
||||
{%- assign temp = incl | split: '" ' -%}
|
||||
|
||||
{%- assign file = temp | first -%}
|
||||
{%- assign params = temp | shift -%}
|
||||
|
||||
{%- assign alt = nil -%}
|
||||
{%- assign block = nil -%}
|
||||
{%- assign caption = nil -%}
|
||||
{%- assign id = nil -%}
|
||||
{%- assign image = nil -%}
|
||||
{%- assign link = nil -%}
|
||||
{%- assign size = nil -%}
|
||||
{%- assign style = nil -%}
|
||||
{%- assign title = nil -%}
|
||||
{%- assign text = nil -%}
|
||||
{%- assign type = nil -%}
|
||||
|
||||
{%- for param in params -%}
|
||||
|
||||
{%- assign pair = param | split: '=' -%}
|
||||
{%- assign key = pair[0] -%}
|
||||
{%- assign value = pair[1] | remove: '"' -%}
|
||||
|
||||
{%- case key -%}
|
||||
{%- when 'alt' -%}
|
||||
{%- assign alt = value -%}
|
||||
{%- when 'block' -%}
|
||||
{%- assign block = value -%}
|
||||
{%- when 'caption' -%}
|
||||
{%- assign caption = value -%}
|
||||
{%- when 'id' -%}
|
||||
{%- assign id = value -%}
|
||||
{%- when 'image' -%}
|
||||
{%- assign image = value -%}
|
||||
{%- when 'link' -%}
|
||||
{%- assign link = value -%}
|
||||
{%- when 'size' -%}
|
||||
{%- assign size = value -%}
|
||||
{%- when 'style' -%}
|
||||
{%- assign style = value -%}
|
||||
{%- when 'title' -%}
|
||||
{%- assign title = value -%}
|
||||
{%- when 'text' -%}
|
||||
{%- assign text = value -%}
|
||||
{%- when 'type' -%}
|
||||
{%- assign type = value -%}
|
||||
{%- endcase -%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
|
||||
{%- include {{ file }}
|
||||
alt=alt
|
||||
block=block
|
||||
caption=caption
|
||||
id=id
|
||||
image=image
|
||||
link=link
|
||||
size=size
|
||||
style=style
|
||||
title=title
|
||||
text=text
|
||||
type=type
|
||||
-%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
{%- else -%}
|
||||
{{ code | markdownify }}
|
||||
{%- endif -%}
|
||||
|
||||
<details>
|
||||
|
||||
<summary class="text-monospace">View Code...</summary>
|
||||
{%- highlight liquid -%}
|
||||
{%- if code contains 'gist.github' -%}
|
||||
{%- assign parts = code | split: '/' -%}
|
||||
{%- assign id = parts[3] | split: '.' | first -%}
|
||||
{%- assign gist = id | prepend: '{%- gist ' -%}
|
||||
{%- assign gist = gist | append: ' %' -%}
|
||||
{%- assign gist = gist | append: '}' -%}
|
||||
{{ gist }}
|
||||
{%- else -%}
|
||||
{{ code }}
|
||||
{%- endif -%}
|
||||
{%- endhighlight -%}
|
||||
|
||||
|
||||
{%- for tip in page.tips -%}
|
||||
<blockquote>
|
||||
{{ tip | markdownify }}
|
||||
</blockquote>
|
||||
{%- endfor -%}
|
||||
|
||||
</details>
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<div class="col-lg-10 mx-auto mt-5 post">
|
||||
{{ content }}
|
||||
</div>
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
layout: page
|
||||
---
|
||||
|
||||
<h1><b>{{ page.title }}</b></h1>
|
||||
|
||||
<p class="post-metadata text-muted">
|
||||
{{ page.date | date_to_long_string }} -
|
||||
<b>
|
||||
{%- assign words = content | number_of_words -%}
|
||||
{%- if words < 360 -%}
|
||||
less than 1 min read time
|
||||
{%- else -%}
|
||||
{{ words | divided_by: 180 }} mins read time
|
||||
{%- endif -%}
|
||||
</b>
|
||||
|
||||
<br>
|
||||
|
||||
{%- if page.tags != empty -%}
|
||||
Tags:
|
||||
{% for tag in page.tags %}
|
||||
<a class="text-decoration-none no-underline" href="{{ tag | slugify | prepend:'/blog/tags#' | relative_url }}">
|
||||
<span class="tag badge badge-pill text-primary border border-primary">{{ tag }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
{%- endif -%}
|
||||
|
||||
</p>
|
||||
|
||||
{{ content }}
|
||||
|
||||
{% if page.comments %}
|
||||
<div class="pt-5">
|
||||
{% include blog/disqus.html %}
|
||||
</div>
|
||||
{% endif %}
|
|
@ -0,0 +1,257 @@
|
|||
.cls-1 {
|
||||
fill: #ffc541;
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
fill: #4e4066;
|
||||
}
|
||||
|
||||
.cls-3 {
|
||||
fill: #6f5b92;
|
||||
}
|
||||
|
||||
.cls-4 {
|
||||
fill: #f78d5e;
|
||||
}
|
||||
|
||||
.cls-5 {
|
||||
fill: #fa976c;
|
||||
}
|
||||
|
||||
.cls-6 {
|
||||
fill: #b65c32;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.cls-7 {
|
||||
fill: #b65c32;
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
.cls-8 {
|
||||
fill: #b65c32;
|
||||
}
|
||||
|
||||
.cls-9 {
|
||||
fill: #f4b73b;
|
||||
}
|
||||
|
||||
.cls-10 {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.cls-11 {
|
||||
fill: #f9c358;
|
||||
}
|
||||
|
||||
.cls-12 {
|
||||
fill: #9b462c;
|
||||
}
|
||||
|
||||
.cls-13 {
|
||||
fill: #aa512e;
|
||||
}
|
||||
|
||||
.cls-14 {
|
||||
fill: #7d6aa5;
|
||||
}
|
||||
|
||||
/* animations */
|
||||
|
||||
.wheel {
|
||||
animation: wheel-rotate 6s ease infinite;
|
||||
transform-origin: center;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes wheel-rotate {
|
||||
50% {
|
||||
transform: rotate(360deg);
|
||||
animation-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(960deg);
|
||||
}
|
||||
}
|
||||
|
||||
.clock-hand-1 {
|
||||
animation: clock-rotate 3s linear infinite;
|
||||
transform-origin: bottom;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
.clock-hand-2 {
|
||||
animation: clock-rotate 6s linear infinite;
|
||||
transform-origin: bottom;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes clock-rotate {
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
#box-top {
|
||||
animation: box-top-anim 2s linear infinite;
|
||||
transform-origin: right top;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes box-top-anim {
|
||||
50% {
|
||||
transform: rotate(-5deg);
|
||||
}
|
||||
}
|
||||
|
||||
#umbrella {
|
||||
animation: umbrella-anim 6s linear infinite;
|
||||
transform-origin: center;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes umbrella-anim {
|
||||
25% {
|
||||
transform: translateY(10px) rotate(5deg);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(-5deg);
|
||||
}
|
||||
}
|
||||
|
||||
#cup {
|
||||
animation: cup-rotate 3s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
|
||||
transform-origin: top left;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes cup-rotate {
|
||||
50% {
|
||||
transform: rotate(-5deg);
|
||||
}
|
||||
}
|
||||
|
||||
#pillow {
|
||||
animation: pillow-anim 3s linear infinite;
|
||||
transform-origin: center;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes pillow-anim {
|
||||
25% {
|
||||
transform: rotate(10deg) translateY(5px);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(-10deg);
|
||||
}
|
||||
}
|
||||
|
||||
#stripe {
|
||||
animation: stripe-anim 3s linear infinite;
|
||||
transform-origin: center;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes stripe-anim {
|
||||
25% {
|
||||
transform: translate(10px, 0) rotate(-10deg);
|
||||
}
|
||||
75% {
|
||||
transform: translateX(10px);
|
||||
}
|
||||
}
|
||||
|
||||
#bike {
|
||||
animation: bike-anim 6s ease infinite;
|
||||
}
|
||||
|
||||
@keyframes bike-anim {
|
||||
0% {
|
||||
transform: translateX(-1300px);
|
||||
}
|
||||
50% {
|
||||
transform: translateX(0);
|
||||
animation-timing-function: cubic-bezier(0.47, 0, 0.745, 0.715);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(1300px);
|
||||
}
|
||||
}
|
||||
|
||||
#rucksack {
|
||||
animation: ruck-anim 3s linear infinite;
|
||||
transform-origin: top;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes ruck-anim {
|
||||
50% {
|
||||
transform: rotate(5deg);
|
||||
}
|
||||
}
|
||||
|
||||
.circle {
|
||||
animation: circle-anim ease infinite;
|
||||
transform-origin: center;
|
||||
transform-box: fill-box;
|
||||
perspective: 0px;
|
||||
}
|
||||
|
||||
.circle.c1 {
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
.circle.c2 {
|
||||
animation-duration: 3s;
|
||||
}
|
||||
|
||||
.circle.c3 {
|
||||
animation-duration: 1s;
|
||||
}
|
||||
|
||||
.circle.c4 {
|
||||
animation-duration: 1s;
|
||||
}
|
||||
|
||||
.circle.c5 {
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
.circle.c6 {
|
||||
animation-duration: 3s;
|
||||
}
|
||||
|
||||
@keyframes circle-anim {
|
||||
50% {
|
||||
transform: scale(0.2) rotateX(360deg) rotateY(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.four,
|
||||
#ou {
|
||||
animation: four-anim cubic-bezier(0.39, 0.575, 0.565, 1) infinite;
|
||||
}
|
||||
|
||||
.four.a {
|
||||
transform-origin: bottom left;
|
||||
animation-duration: 3s;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
.four.b {
|
||||
transform-origin: bottom right;
|
||||
animation-duration: 3s;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
#ou {
|
||||
animation-duration: 6s;
|
||||
transform-origin: center;
|
||||
transform-box: fill-box;
|
||||
}
|
||||
|
||||
@keyframes four-anim {
|
||||
50% {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
html{
|
||||
padding-left: calc(100vw - 100%);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Poppins", sans-serif;
|
||||
}
|
||||
|
||||
.badge {
|
||||
font-weight: 500;
|
||||
}
|
|
@ -0,0 +1,144 @@
|
|||
.search-box {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.post.card {
|
||||
border-radius: $rounded-borders;
|
||||
text-decoration: none !important;
|
||||
padding: 15px;
|
||||
height: 100%;
|
||||
|
||||
.card-footer {
|
||||
font-size: 14px;
|
||||
margin: 0 -15px -15px -15px;
|
||||
padding: 15px 35px;
|
||||
}
|
||||
}
|
||||
|
||||
.post {
|
||||
.post-metadata {
|
||||
font-size: 14px;
|
||||
margin-top: -6px;
|
||||
}
|
||||
|
||||
.tag:hover {
|
||||
background-color: $primary;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
footer {
|
||||
font-size: 10px;
|
||||
color: #6c757d;
|
||||
text-decoration: underline;
|
||||
text-decoration-color: yellow;
|
||||
text-align: right;
|
||||
margin-top: 4em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2 {
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
hr {
|
||||
background: $secondary;
|
||||
}
|
||||
|
||||
img:not(.emoji) {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
|
||||
.video {
|
||||
position: relative;
|
||||
padding-bottom: 56.25%;
|
||||
margin-bottom: 1rem;
|
||||
width: 100%;
|
||||
iframe {
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
a:not(.btn):not([class^="carousel-"]):not([class^="list-"]):not(.no-underline) {
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
color: $primary;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
display: block;
|
||||
height: 0.15em;
|
||||
margin-top: -0.15em;
|
||||
width: 0;
|
||||
background: $primary;
|
||||
transition: width 0.35s;
|
||||
}
|
||||
|
||||
&:hover::after {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
background: $light;
|
||||
border: 1px solid #ddd;
|
||||
color: $dark;
|
||||
font-family: monospace;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
margin-bottom: 1.6em;
|
||||
max-width: 100%;
|
||||
padding: 1em 1.5em;
|
||||
display: block;
|
||||
page-break-inside: avoid;
|
||||
overflow: auto;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
code.highlighter-rouge {
|
||||
background-color: $light;
|
||||
color: $dark;
|
||||
border-radius: 3px;
|
||||
margin: 0;
|
||||
padding: 0.2em 0.65em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 0.25em solid $primary;
|
||||
color: $secondary;
|
||||
padding: 0 1em;
|
||||
}
|
||||
|
||||
table {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
margin: 1rem 0;
|
||||
|
||||
td {
|
||||
border: 1px solid #ddd;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
|
||||
th {
|
||||
@extend td;
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
font-weight: 500;
|
||||
text-align: left;
|
||||
background-color: $primary;
|
||||
color: white;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: $light;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
.social {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
#attribution {
|
||||
opacity: 0.5;
|
||||
a {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
#attribution {
|
||||
writing-mode: vertical-rl;
|
||||
transform: rotate(180deg);
|
||||
position: fixed;
|
||||
bottom: 56px;
|
||||
right: 22px;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
// Fine Circle Responsive Image
|
||||
// Inspired by https://stackoverflow.com/a/6615994/10194811
|
||||
|
||||
#container {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#dummy {
|
||||
padding-top: 100%; /* 1:1 aspect ratio */
|
||||
}
|
||||
|
||||
#element {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.circle-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
.link-after {
|
||||
content: "";
|
||||
display: block;
|
||||
height: 0.15em;
|
||||
background: $primary;
|
||||
}
|
||||
|
||||
.nav-link,
|
||||
.navbar-brand {
|
||||
&::after {
|
||||
@extend .link-after;
|
||||
width: 0;
|
||||
transition: width 0.35s;
|
||||
}
|
||||
|
||||
&:hover::after {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-item.active {
|
||||
font-weight: bold;
|
||||
|
||||
&::after {
|
||||
@extend .link-after;
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
margin-bottom: -14px;
|
||||
&::after {
|
||||
margin-top: -0.25em;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
.project.card {
|
||||
border-radius: $rounded-borders;
|
||||
text-decoration: none !important;
|
||||
margin: 10px auto;
|
||||
|
||||
.card-img-top {
|
||||
border-radius: $rounded-borders $rounded-borders 0 0;
|
||||
}
|
||||
|
||||
transition: transform 400ms;
|
||||
|
||||
&:hover:not(.post) {
|
||||
transform: translateY(-8px);
|
||||
box-shadow: -2px 8px 40px -12px rgba(0, 0, 0, 0.24);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
.skill {
|
||||
margin-bottom: 35px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
> p {
|
||||
margin: 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
&:before {
|
||||
width: 100%;
|
||||
height: 5px;
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
background: $light;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.skill-bar {
|
||||
width: 100%;
|
||||
height: 5px;
|
||||
background: $primary;
|
||||
display: block;
|
||||
position: relative;
|
||||
|
||||
span {
|
||||
position: absolute;
|
||||
border-top: 5px solid inherit;
|
||||
top: -30px;
|
||||
padding: 0;
|
||||
font-size: 18px;
|
||||
padding: 3px 0;
|
||||
font-weight: 500;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.skill-bar.skill-bar-secondary {
|
||||
background: $secondary;
|
||||
}
|
||||
|
||||
.skill-bar.skill-bar-success {
|
||||
background: $success;
|
||||
}
|
||||
|
||||
.skill-bar.skill-bar-info {
|
||||
background: $info;
|
||||
}
|
||||
|
||||
.skill-bar.skill-bar-warning {
|
||||
background: $warning;
|
||||
}
|
||||
|
||||
.skill-bar.skill-bar-danger {
|
||||
background: $danger;
|
||||
}
|
||||
|
||||
.skill-bar.skill-bar-light {
|
||||
background: $light;
|
||||
}
|
||||
|
||||