From 8a1caf8c7a8a1cbe2201d0a24247b9dbf23b3fad Mon Sep 17 00:00:00 2001 From: bmen Date: Sat, 10 Oct 2020 10:35:47 +0200 Subject: [PATCH] =?UTF-8?q?Alle=20Remoterepo=20Dateien=20eingef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 8 +- _config.yml | 4 +- _includes/404.html | 139 +++++++++++ _includes/about/skills.html | 11 + _includes/about/timeline.html | 13 ++ _includes/analytics.html | 11 + _includes/blog/disqus.html | 14 ++ _includes/blog/index.html | 7 + _includes/blog/post-card.html | 49 ++++ _includes/blog/search.html | 25 ++ _includes/blog/tags.html | 31 +++ _includes/elements/button.html | 9 + _includes/elements/carousel.html | 40 ++++ _includes/elements/figure.html | 6 + _includes/elements/github-edit-footer.html | 4 + _includes/elements/highlight.html | 1 + _includes/elements/list.html | 19 ++ _includes/elements/video.html | 3 + _includes/head.html | 23 ++ _includes/landing.html | 15 ++ _includes/navbar.html | 61 +++++ _includes/projects/index.html | 55 +++++ _includes/projects/project-card.html | 21 ++ _includes/scripts.html | 22 ++ _includes/social.html | 20 ++ _layouts/default.html | 26 +++ _layouts/element.html | 141 +++++++++++ _layouts/page.html | 7 + _layouts/post.html | 37 +++ _sass/_404.scss | 257 +++++++++++++++++++++ _sass/_base.scss | 11 + _sass/_blog.scss | 144 ++++++++++++ _sass/_footer.scss | 21 ++ _sass/_landing.scss | 28 +++ _sass/_navbar.scss | 35 +++ _sass/_projects.scss | 16 ++ _sass/_skills.scss | 73 ++++++ _sass/_timeline.scss | 47 ++++ _sass/_variables.scss | 10 + _sass/autumn.scss | 67 ++++++ _sass/portfolYOU.scss | 17 ++ assets/favicon.ico | Bin 0 -> 15406 bytes assets/js/remote-projects.js | 24 ++ 43 files changed, 1567 insertions(+), 5 deletions(-) create mode 100644 _includes/404.html create mode 100644 _includes/about/skills.html create mode 100644 _includes/about/timeline.html create mode 100644 _includes/analytics.html create mode 100644 _includes/blog/disqus.html create mode 100644 _includes/blog/index.html create mode 100644 _includes/blog/post-card.html create mode 100644 _includes/blog/search.html create mode 100644 _includes/blog/tags.html create mode 100644 _includes/elements/button.html create mode 100644 _includes/elements/carousel.html create mode 100644 _includes/elements/figure.html create mode 100644 _includes/elements/github-edit-footer.html create mode 100644 _includes/elements/highlight.html create mode 100644 _includes/elements/list.html create mode 100644 _includes/elements/video.html create mode 100644 _includes/head.html create mode 100644 _includes/landing.html create mode 100644 _includes/navbar.html create mode 100644 _includes/projects/index.html create mode 100644 _includes/projects/project-card.html create mode 100644 _includes/scripts.html create mode 100644 _includes/social.html create mode 100644 _layouts/default.html create mode 100644 _layouts/element.html create mode 100644 _layouts/page.html create mode 100644 _layouts/post.html create mode 100644 _sass/_404.scss create mode 100644 _sass/_base.scss create mode 100644 _sass/_blog.scss create mode 100644 _sass/_footer.scss create mode 100644 _sass/_landing.scss create mode 100644 _sass/_navbar.scss create mode 100644 _sass/_projects.scss create mode 100644 _sass/_skills.scss create mode 100644 _sass/_timeline.scss create mode 100644 _sass/_variables.scss create mode 100644 _sass/autumn.scss create mode 100644 _sass/portfolYOU.scss create mode 100644 assets/favicon.ico create mode 100644 assets/js/remote-projects.js diff --git a/Gemfile b/Gemfile index d31a967..8cf7906 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,8 @@ source "https://rubygems.org" -gem 'jemoji', '~> 0.12.0' -gem 'wdm', '>= 0.1.0' if Gem.win_platform? \ No newline at end of file +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' \ No newline at end of file diff --git a/_config.yml b/_config.yml index e1a6af0..0803829 100644 --- a/_config.yml +++ b/_config.yml @@ -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 .github.io directly -repository : "" -remote_theme : YoussefRaafatNasry/portfolYOU +baseurl : "/" ### Plugins ### diff --git a/_includes/404.html b/_includes/404.html new file mode 100644 index 0000000..0d24e81 --- /dev/null +++ b/_includes/404.html @@ -0,0 +1,139 @@ + + + + + + +{% include head.html %} + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Page not Found!

+ Go Back Home + +
+ + + \ No newline at end of file diff --git a/_includes/about/skills.html b/_includes/about/skills.html new file mode 100644 index 0000000..1e89c85 --- /dev/null +++ b/_includes/about/skills.html @@ -0,0 +1,11 @@ +
+

{{ include.title }}

+ {% for skill in include.source %} +
+

{{ skill.name }}

+
+ {{ skill.percentage }}% +
+
+ {% endfor %} +
\ No newline at end of file diff --git a/_includes/about/timeline.html b/_includes/about/timeline.html new file mode 100644 index 0000000..555ae5c --- /dev/null +++ b/_includes/about/timeline.html @@ -0,0 +1,13 @@ +
+
+ {% for item in site.data.timeline %} +
+
+

{{ item.title }}

+
{{ item.from }} — {{ item.to }}
+

{{ item.description }}

+
+
+ {% endfor %} +
+
\ No newline at end of file diff --git a/_includes/analytics.html b/_includes/analytics.html new file mode 100644 index 0000000..c35a74f --- /dev/null +++ b/_includes/analytics.html @@ -0,0 +1,11 @@ +{%- if jekyll.environment == 'production' and site.analytics.enabled == true -%} + + + +{%- endif -%} \ No newline at end of file diff --git a/_includes/blog/disqus.html b/_includes/blog/disqus.html new file mode 100644 index 0000000..5a10786 --- /dev/null +++ b/_includes/blog/disqus.html @@ -0,0 +1,14 @@ +{%- if site.disqus -%} +
+ + +{%- endif -%} \ No newline at end of file diff --git a/_includes/blog/index.html b/_includes/blog/index.html new file mode 100644 index 0000000..d86f152 --- /dev/null +++ b/_includes/blog/index.html @@ -0,0 +1,7 @@ +
+ + {% for post in site.posts %} + {% include blog/post-card.html %} + {% endfor %} + +
\ No newline at end of file diff --git a/_includes/blog/post-card.html b/_includes/blog/post-card.html new file mode 100644 index 0000000..7359625 --- /dev/null +++ b/_includes/blog/post-card.html @@ -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 -%} + + \ No newline at end of file diff --git a/_includes/blog/search.html b/_includes/blog/search.html new file mode 100644 index 0000000..bbd5c40 --- /dev/null +++ b/_includes/blog/search.html @@ -0,0 +1,25 @@ + + +
+ +
+ + + +
+ +
+ + + + \ No newline at end of file diff --git a/_includes/blog/tags.html b/_includes/blog/tags.html new file mode 100644 index 0000000..23e6608 --- /dev/null +++ b/_includes/blog/tags.html @@ -0,0 +1,31 @@ + +{%- 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 -%} + + +{% for tag in tags %} +
+

{{ tag }}

+
    + {% 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 -%} +
  1. {{ post.title }}
  2. + - {{ post.date | date_to_long_string }} +
    + {%- endif -%} + {% endfor %} +
+
+
+{% endfor %} \ No newline at end of file diff --git a/_includes/elements/button.html b/_includes/elements/button.html new file mode 100644 index 0000000..dbb6817 --- /dev/null +++ b/_includes/elements/button.html @@ -0,0 +1,9 @@ +{% if include.block %} + {%- assign block_style = "btn-block" -%} +{%- else -%} + {%- assign block_style = "" -%} +{%- endif -%} + + + {{ include.text | default: "Button" }} + \ No newline at end of file diff --git a/_includes/elements/carousel.html b/_includes/elements/carousel.html new file mode 100644 index 0000000..d0c8114 --- /dev/null +++ b/_includes/elements/carousel.html @@ -0,0 +1,40 @@ +{%- assign images = carousel_images | strip | newline_to_br | split: '
' -%} + + + diff --git a/_includes/elements/figure.html b/_includes/elements/figure.html new file mode 100644 index 0000000..537c0fb --- /dev/null +++ b/_includes/elements/figure.html @@ -0,0 +1,6 @@ +
+ {{ include.alt | default: include.caption }} + {%- if include.caption -%} +
{{ include.caption }}
+ {%- endif -%} +
\ No newline at end of file diff --git a/_includes/elements/github-edit-footer.html b/_includes/elements/github-edit-footer.html new file mode 100644 index 0000000..f6bc271 --- /dev/null +++ b/_includes/elements/github-edit-footer.html @@ -0,0 +1,4 @@ +
+ This page is open source. Noticed a typo?
+ Or something unclear? {% github_edit_link "Improve it on GitHub" %}. +
\ No newline at end of file diff --git a/_includes/elements/highlight.html b/_includes/elements/highlight.html new file mode 100644 index 0000000..b0359f6 --- /dev/null +++ b/_includes/elements/highlight.html @@ -0,0 +1 @@ +{{ include.text }} \ No newline at end of file diff --git a/_includes/elements/list.html b/_includes/elements/list.html new file mode 100644 index 0000000..21f6503 --- /dev/null +++ b/_includes/elements/list.html @@ -0,0 +1,19 @@ +{%- assign items = list_items | strip | newline_to_br | split: '
' -%} + +
+ + {%- if include.title -%} + {{ include.title }} + {%- endif -%} + + {% for item in items %} + {%- if include.type == "toc" -%} + {{ item }} + {%- else -%} + {%- assign item_object = item | split: ',' -%} + {{ item_object[0] }} + {%- endif -%} + {% endfor %} + +
+ diff --git a/_includes/elements/video.html b/_includes/elements/video.html new file mode 100644 index 0000000..1503a90 --- /dev/null +++ b/_includes/elements/video.html @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..cf4573c --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,23 @@ + + + + + + + + {{ site.title }} + + + + + + + + + + + + + + + diff --git a/_includes/landing.html b/_includes/landing.html new file mode 100644 index 0000000..7c559c6 --- /dev/null +++ b/_includes/landing.html @@ -0,0 +1,15 @@ +
+
+ + +
+
+
+ {{ site.title }} +
+
+ +

{{ site.description }}

+ +
+
\ No newline at end of file diff --git a/_includes/navbar.html b/_includes/navbar.html new file mode 100644 index 0000000..36f6b63 --- /dev/null +++ b/_includes/navbar.html @@ -0,0 +1,61 @@ + \ No newline at end of file diff --git a/_includes/projects/index.html b/_includes/projects/index.html new file mode 100644 index 0000000..aa3c972 --- /dev/null +++ b/_includes/projects/index.html @@ -0,0 +1,55 @@ + + + +
+ + + {% 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 %} + + + + {% endfor %} + + + {% 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 %} + +
\ No newline at end of file diff --git a/_includes/projects/project-card.html b/_includes/projects/project-card.html new file mode 100644 index 0000000..cf8d75a --- /dev/null +++ b/_includes/projects/project-card.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/_includes/scripts.html b/_includes/scripts.html new file mode 100644 index 0000000..14d92b8 --- /dev/null +++ b/_includes/scripts.html @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_includes/social.html b/_includes/social.html new file mode 100644 index 0000000..3c9f3bc --- /dev/null +++ b/_includes/social.html @@ -0,0 +1,20 @@ +
+ + {%- 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 -%} + + {%- endif -%} + + {% endfor %} + +
\ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..464f57a --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,26 @@ + + + + + + +{% include head.html %} + + + +
+ {% include navbar.html %} + {{ content }} +
+ + {% include footer.html %} + {% include analytics.html %} + {% include scripts.html %} + + + + \ No newline at end of file diff --git a/_layouts/element.html b/_layouts/element.html new file mode 100644 index 0000000..7cbce0a --- /dev/null +++ b/_layouts/element.html @@ -0,0 +1,141 @@ +{% assign page_title = page.title | slice: 2, page.title.size %} +

{{ page_title }}

+ +{%- assign code = content | strip -%} + +{%- if code contains '{% ' -%} + + {%- assign code = code | newline_to_br | split: '
' -%} + + {%- 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 -%} + +
+ + View Code... + {%- 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 -%} +
+ {{ tip | markdownify }} +
+ {%- endfor -%} + +
diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..c912c80 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,7 @@ +--- +layout: default +--- + +
+ {{ content }} +
\ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..ef1fcfc --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,37 @@ +--- +layout: page +--- + +

{{ page.title }}

+ + + +{{ content }} + +{% if page.comments %} +
+ {% include blog/disqus.html %} +
+{% endif %} \ No newline at end of file diff --git a/_sass/_404.scss b/_sass/_404.scss new file mode 100644 index 0000000..276cb01 --- /dev/null +++ b/_sass/_404.scss @@ -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); + } +} diff --git a/_sass/_base.scss b/_sass/_base.scss new file mode 100644 index 0000000..1771917 --- /dev/null +++ b/_sass/_base.scss @@ -0,0 +1,11 @@ +html{ + padding-left: calc(100vw - 100%); +} + +body { + font-family: "Poppins", sans-serif; +} + +.badge { + font-weight: 500; +} diff --git a/_sass/_blog.scss b/_sass/_blog.scss new file mode 100644 index 0000000..ea53bcd --- /dev/null +++ b/_sass/_blog.scss @@ -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; + } + } +} diff --git a/_sass/_footer.scss b/_sass/_footer.scss new file mode 100644 index 0000000..e2b17db --- /dev/null +++ b/_sass/_footer.scss @@ -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; + } +} diff --git a/_sass/_landing.scss b/_sass/_landing.scss new file mode 100644 index 0000000..9473720 --- /dev/null +++ b/_sass/_landing.scss @@ -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; +} diff --git a/_sass/_navbar.scss b/_sass/_navbar.scss new file mode 100644 index 0000000..fec04ef --- /dev/null +++ b/_sass/_navbar.scss @@ -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; + } +} diff --git a/_sass/_projects.scss b/_sass/_projects.scss new file mode 100644 index 0000000..24c2324 --- /dev/null +++ b/_sass/_projects.scss @@ -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); + } +} diff --git a/_sass/_skills.scss b/_sass/_skills.scss new file mode 100644 index 0000000..69cdd48 --- /dev/null +++ b/_sass/_skills.scss @@ -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; +} + +.skill-bar.skill-bar-dark { + background: $dark; +} + +@for $i from 0 through 100 { + .skill-#{$i} { + width: percentage($i/100); + } +} diff --git a/_sass/_timeline.scss b/_sass/_timeline.scss new file mode 100644 index 0000000..f86a655 --- /dev/null +++ b/_sass/_timeline.scss @@ -0,0 +1,47 @@ +.timeline-body { + position: relative; + background-color: $light; + border-radius: 0 $rounded-borders $rounded-borders 0; + padding: 5px 0; + + &:after { + // Left Border + content: ""; + width: 4px; + height: 100%; + background-color: $primary; + position: absolute; + left: -4px; + top: 0; + } + + .timeline-item { + position: relative; + + &:after { + // Circle + content: ""; + width: 20px; + height: 20px; + border-radius: 50%; + border: 4px solid $primary; + background-color: $light; + position: absolute; + left: -12px; + top: 8px; + z-index: 10; + } + + .content { + margin: 40px; + padding-bottom: 20px; + border-bottom: 1px dashed $dark; + + .date { + margin-top: -5px; + margin-bottom: 15px; + color: #6c757d; + } + } + } +} diff --git a/_sass/_variables.scss b/_sass/_variables.scss new file mode 100644 index 0000000..c7178c4 --- /dev/null +++ b/_sass/_variables.scss @@ -0,0 +1,10 @@ +$primary: #007bff; +$secondary: #6c757d; +$success: #28a745; +$info: #17a2b8; +$warning: #ffc107; +$danger: #dc3545; +$light: #f8f9fa; +$dark: #343a40; + +$rounded-borders: 15px; \ No newline at end of file diff --git a/_sass/autumn.scss b/_sass/autumn.scss new file mode 100644 index 0000000..218232e --- /dev/null +++ b/_sass/autumn.scss @@ -0,0 +1,67 @@ +// Syntax highlighting for code blocks +// Get it from here https://github.com/richleland/pygments-css + +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .k { color: #0000aa } /* Keyword */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #aa5500 } /* Literal.String */ +.highlight .c { color: #aaaaaa; font-style: italic } /* Comment */ +.highlight .cp { color: #4c8317 } /* Comment.Preproc */ +.highlight .gd { color: #aa0000 } /* Generic.Deleted */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gi { color: #00aa00 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { color: #0000aa } /* Keyword.Constant */ +.highlight .kd { color: #0000aa } /* Keyword.Declaration */ +.highlight .kn { color: #0000aa } /* Keyword.Namespace */ +.highlight .kp { color: #0000aa } /* Keyword.Pseudo */ +.highlight .kr { color: #0000aa } /* Keyword.Reserved */ +.highlight .kt { color: #00aaaa } /* Keyword.Type */ +.highlight .na { color: #1e90ff } /* Name.Attribute */ +.highlight .nb { color: #00aaaa } /* Name.Builtin */ +.highlight .nc { color: #00aa00 } /* Name.Class */ +.highlight .no { color: #aa0000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .nf { color: #00aa00 } /* Name.Function */ +.highlight .nn { color: #00aaaa } /* Name.Namespace */ +.highlight .nv { color: #aa0000 } /* Name.Variable */ +.highlight .ow { color: #0000aa } /* Operator.Word */ +.highlight .mb { color: #009999 } /* Literal.Number.Bin */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sa { color: #aa5500 } /* Literal.String.Affix */ +.highlight .sb { color: #aa5500 } /* Literal.String.Backtick */ +.highlight .sc { color: #aa5500 } /* Literal.String.Char */ +.highlight .dl { color: #aa5500 } /* Literal.String.Delimiter */ +.highlight .sd { color: #aa5500 } /* Literal.String.Doc */ +.highlight .s2 { color: #aa5500 } /* Literal.String.Double */ +.highlight .se { color: #aa5500 } /* Literal.String.Escape */ +.highlight .sh { color: #aa5500 } /* Literal.String.Heredoc */ +.highlight .si { color: #aa5500 } /* Literal.String.Interpol */ +.highlight .sx { color: #aa5500 } /* Literal.String.Other */ +.highlight .sr { color: #009999 } /* Literal.String.Regex */ +.highlight .s1 { color: #aa5500 } /* Literal.String.Single */ +.highlight .ss { color: #0000aa } /* Literal.String.Symbol */ +.highlight .bp { color: #00aaaa } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #00aa00 } /* Name.Function.Magic */ +.highlight .vc { color: #aa0000 } /* Name.Variable.Class */ +.highlight .vg { color: #aa0000 } /* Name.Variable.Global */ +.highlight .vi { color: #aa0000 } /* Name.Variable.Instance */ +.highlight .vm { color: #aa0000 } /* Name.Variable.Magic */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #0000aa; font-style: italic } /* Comment.Special */ +.highlight .ch { color: #aaaaaa; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */ +.highlight .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */ +.highlight .err { color: #FF0000 } /* Error */ +.highlight .cpf { color: #aaaaaa; font-style: italic } /* Comment.PreprocFile */ \ No newline at end of file diff --git a/_sass/portfolYOU.scss b/_sass/portfolYOU.scss new file mode 100644 index 0000000..b9e1aee --- /dev/null +++ b/_sass/portfolYOU.scss @@ -0,0 +1,17 @@ +@charset "utf-8"; + +// Custom Fonts +@import url('https://fonts.googleapis.com/css?family=Poppins'); + +// Import partials from `sass_dir` (defaults to `_sass`) +@import "variables", + "404", + "autumn", + "base", + "blog", + "footer", + "landing", + "navbar", + "projects", + "skills", + "timeline"; \ No newline at end of file diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..99f7d0c056fe697b609b90375ad231e41dd24e81 GIT binary patch literal 15406 zcmeHOX>3(R6do3hD662MsH7?oqNqg;28~)06MkU)WBh?J!Ve{gQ6h`lKET#WKmxd+ zENN5R2muWsDEkru2(h3n!2-&r2o%|uN-6E}`|jN7yZ80>y?bx(>kEdPoHuuwIp>=* zXXcz)o>I+J3)Q~8LYl3Hwp6N*QYt%JKlkjQR4Lx&LFKI%u!NRFy@%*Y6<3`;xa*E99Al{52qHfNHEf$m`@{m5r(O4V3ZXwVq`R4_j_L z-_J8eKD;yj?1cwdSsrC`>S3-tBl2mllr=8$G*avHbj(L}vCCnS77? zn^RW2jof)y{?G=Ieal2n{*L>NA``RRc{Cs0zD}OJcj0d)viWn7^2OfeH3s)LS9$RJ zthdO&XWe-y$JkX;`N%i#MUmsXyvkF5-tG6paFIFBi>%BSx%iLBSI;Jvx7yFP0orZ+ z`xex9+ia1or6TJ-5c%Z(_&1Z!wjZlJZNCxrTgM}0|6zG^)!Ag+Hmd6M3|*OgQKcMb zvO&2Zj!%uf{l_Z|`@^ zTf(x2PtepJHz%WhR|3d&<73%;HQ6~P`oRGmc0;*cq2(s(guKAhr|jO4dm=K~aV#f* zp?5M2R=v|B+q4TYcXdEa@R3FzmYu|PRiDr4gJNCt z2G;+Uten?3*rbum)aqlY>^xfeSDbwlw#NRQyk1et*Ro2ix^rCfGqyx8|5DwUnyT*n z9=&`)Uohi&a^0s(zVRhN>c4%C$gZko!5c#?n*8e@WL!|VX zhU9p^H$F6o{9nElVGKoL{WpCK+c=={)YgbB9O5m@ONQ~^Uf&YmC9}V=H)tG0arKJG zw1@m*(DE5Oq|TpAzEvLaFym=n)R7;a)IVbxKY3HiM;#WwuH`ef_rp`iQH-Zj=l3I@ zzJb^IW2yO3Ci@@9fT-lJ9;f9W+3HU|Wk)ss7Pb*Nb4bfySL8>&HU3&Ypt1gE%Dr*h zyHFuAzLOvMmj4Ote>s2r^=nN#=ZPFC6REkX>wWQr$c#RzWz*Lu#Kykk4=u_4d+DT} zi%#gATDG=3SNvh=fOEBEG4G7WL`t4^)2t^%rgRe-)7+n2E!#8xvM@02&QSbG`Ml5{ zGZueq1Qv#j%|GfeXnV-W{L5fqYQ@GGn14DkSU55?|4zj5e|zRS2^U`mgQ8d`0h@Z4 zfHnGc2Ya41K=RahjCD&f*6abD!M$EbiK%mV-iPPqph?L09Hc`{mcrfo)57vOyyd>13-`gOXn8@|=(7i(Zs zxsAnd_0O0Z0_y#k;A#SJIaJv;p$<1@^yvVds2iVi!$C?bBVC zQ^3_fSv$x(svYty1omWmnsJV|J>eCJHUSo2L}H>iP+6m zR+3))S~v7{d0zO@$GZZ1FyGYl_^G4wiGJFSXWV;=erzE#_*sWc1BFIgc9`O81$zAIi^D6QFy>^})s+li#U-p7}Vk%|Tcz zKDNlJ ztPShLeL1cXJMjd)*VyR`!trtHKUMt3eT*&BMXE09_Nc+09?v@!v?aj| z$|F|pOL8xe*To8)HG8-*_|HQ3yPHJ+rj0-95#MvC9jz`1kDu#&`D#&<;%7bfuF(4D z?;oqet4&<>B$uf90ts(FRQ$Ke+J2Cm7obk`i;i8USMa7CiQ+tRUl$ z!Nxr`o>Mi~zUATY$J8;zZrz(aex3@yWzI#g4y(q5!*9pW)*L2Jy^1!x9Jn2W>YwK+ z))Zo2w_0nTetO!2Ves?(VS!moK_9pe&j-_oA7?PecNF=4n8SZzZ<_nng{{NjKQ3=u z$Lg)6h)Cw|JLe-Fzf=0f$p;Gd0Y(loKNpYdKxMBt9XWn>rCaK b#mHA^uNh~-SGI|we7 literal 0 HcmV?d00001 diff --git a/assets/js/remote-projects.js b/assets/js/remote-projects.js new file mode 100644 index 0000000..c7ba0b3 --- /dev/null +++ b/assets/js/remote-projects.js @@ -0,0 +1,24 @@ +function get_tools(repo) { + fetch(`https://api.github.com/repos/${repo}/topics`, { + headers: { + Accept: "application/vnd.github.mercy-preview+json" + } + }) + .then(response => response.json()) + .then(data => { + var name = repo.split("/")[1]; + var parent = document.getElementById(`${name}-tools`); + parse_tools(data.names).forEach(t => parent.appendChild(t)); + }); +} + +function parse_tools(tools) { + var classes = "badge badge-pill text-primary border border-primary ml-1"; + var classesArr = classes.split(" "); + return tools.map(tool => { + var span = document.createElement("span"); + span.classList.add(...classesArr); + span.innerHTML = tool; + return span; + }); +}