simple-material 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +181 -0
  4. data/_includes/adsense_head.html +3 -0
  5. data/_includes/analytics_head.html +13 -0
  6. data/_includes/analytics_head_legacy.html +25 -0
  7. data/_includes/appbar.html +60 -0
  8. data/_includes/disqus.html +18 -0
  9. data/_includes/drawer.html +10 -0
  10. data/_includes/footer.html +64 -0
  11. data/_includes/github_head.html +6 -0
  12. data/_includes/list_blog_categories.html +26 -0
  13. data/_includes/list_blog_posts.html +74 -0
  14. data/_includes/list_posts.html +25 -0
  15. data/_includes/list_projects_featured.html +14 -0
  16. data/_includes/list_services.html +13 -0
  17. data/_includes/meta.html +47 -0
  18. data/_includes/nav_drawer.html +32 -0
  19. data/_includes/nav_footer.html +23 -0
  20. data/_includes/nav_social.html +71 -0
  21. data/_includes/pullquote.html +1 -0
  22. data/_includes/widget_feedback.html +15 -0
  23. data/_includes/widget_github.html +28 -0
  24. data/_includes/widget_goodreads.html +50 -0
  25. data/_includes/widget_search.html +15 -0
  26. data/_includes/widget_share.html +14 -0
  27. data/_layouts/default.html +190 -0
  28. data/_layouts/page.html +13 -0
  29. data/_layouts/post.html +35 -0
  30. data/_layouts/project.html +109 -0
  31. data/_sass/_code.scss +53 -0
  32. data/_sass/_colors.scss +124 -0
  33. data/_sass/_typography.scss +140 -0
  34. data/assets/images/icons/192.png +0 -0
  35. data/assets/images/logo.png +0 -0
  36. data/assets/raw/search.json +13 -0
  37. data/assets/scripts/navigation.js +54 -0
  38. data/assets/scripts/projects.js +72 -0
  39. data/assets/scripts/script.js +0 -0
  40. data/assets/scripts/service-worker.js +14 -0
  41. data/assets/scripts/simple-jekyll-search.min.js +6 -0
  42. data/assets/scripts/webapp.js +22 -0
  43. data/assets/styles/app.scss +1008 -0
  44. data/assets/styles/github.css +73 -0
  45. data/assets/styles/style.css +0 -0
  46. data/assets/vendors/isotope/isotope-min.js +12 -0
  47. data/pwabuilder-sw.js +23 -0
  48. metadata +204 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b520a79e5b73c585d4204d239124935000f91caa1a937f82b61ed62a7cb0dbad
4
+ data.tar.gz: 9e65eeb42ddce9d3b87e0e5bcc2c1f2c3bcb550e14a2c9937c90c64355de4483
5
+ SHA512:
6
+ metadata.gz: fa71e7527e691bb31c5241905ed896c8ccbcad8cc3e7815b19b137f3a82a71f776d2b4d9d7d64f5b5f779c92e1bac323e453cd1a234e9dc68628b014b1bf3e01
7
+ data.tar.gz: 5eca8d8e0bdbe18c4c918c5eda170a79c65d17959dcae8618ed87f6f3d2ca9469406ab36378d49ff374f091471332975b0ec70fd9a04c6c1031457f8ccbda136
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Amit Merchant
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,181 @@
1
+ ---
2
+ title: Getting Started
3
+ icon: /assets/images/icons/192.png
4
+ description: Simple Material is a Jekyll-powered theme with a clean design following Google's Material Design guidelines.
5
+ categories: blog-theme, portfolio-theme, material-design, github-pages
6
+ device: Jekyll Theme
7
+ permalink: /getting-started/
8
+ layout: page
9
+ drawer: false
10
+ ---
11
+
12
+ Simple Material is a Jekyll-powered theme with a clean design following Google's Material Design guidelines.
13
+
14
+ It provides a a beautiful, clean and mobile-first fully-responsive interface for building your next website with minimal code. This is a plug-and-play Jekyll theme best suited to use on [GitHub Pages](https://pages.github.com) without even setting up a local environment.
15
+
16
+ ## Table of Contents
17
+ 1. [Key Features](#features)
18
+ 2. [Installation](#install)
19
+ - 2.1. [In a Jekyll Site](#install-jekyll)
20
+ - 2.2. [On GitHub Pages](#install-gh-pages)
21
+ 3. [Customizing the Theme](#customize)
22
+ - 3.1. [Setting up an Installable Web App](#webapp)
23
+ 4. [Layouts](#layouts)
24
+ 5. [Widgets](#widgets)
25
+ - 5.1. [Goodreads Books](#widget_goodreads)
26
+ - 5.2. [GitHub Contributions](#widget_github)
27
+ - 5.2. [Feedback](#widget_feedback)
28
+ 6. [Using Categories](#categories)
29
+
30
+ ## <i id="features"></i>Key Features
31
+
32
+ <!-- TODO: Write a list of theme's key features -->
33
+
34
+ ## <i id='install'></i>Installation
35
+
36
+ [![Gem Version](https://badge.fury.io/rb/simple-material.svg)](https://badge.fury.io/rb/simple-material)
37
+
38
+ ### <i id='install-jekyll'></i>In a Jekyll site
39
+
40
+ Step 1: Create a new Jekyll site
41
+ ```
42
+ jekyll new my-awesome-site
43
+ cd ./my-awesome-site
44
+ ```
45
+
46
+ Replace `my-awesome-site` with the name of your site.
47
+
48
+ Step 2: Add the following lines in the `Gemfile`
49
+ ```
50
+ source "https://rubygems.org"
51
+
52
+ gem "jekyll", "~> 4.2.0"
53
+ gem "simple-material", "~> 0.0.1"
54
+ ```
55
+
56
+ And run `bundle install` to install the theme.
57
+
58
+ Use the latest version of the theme (see top of this page) instead of `0.0.1`.
59
+
60
+ Step 3: Set theme in the site's `_config.yml`
61
+ ```
62
+ theme: simple-material
63
+ ```
64
+
65
+ Now, you can build and run your website with `bundle exec jekyll serve --watch`.
66
+
67
+ ### <i id='install-gh-pages'></i>On GitHub Pages
68
+
69
+ Simple Material can be used with GitHub Pages without any need to set up a local environment. To do this, simply add the following line in your site's `_config.yml`.
70
+
71
+ ```
72
+ remote_theme: saifkhichi96/simple-material
73
+ ```
74
+
75
+ You can also fork the [saifkhichi96/simple-material-demo](https://github.com/saifkhichi96/simple-material-demo) repository as a starting point if you are unable to set it up on your own.
76
+
77
+ ## <i id='customize'></i>Customizing the Theme
78
+
79
+ Create a `manifest.json` file inside the `_data/` directory in your project root, and provide the following details:
80
+
81
+ | Property | Description | Required | Default |
82
+ | -----------: | ---------------------------------------------- | :------: | :-----: |
83
+ | `name` | The name of the site as displayed to the user. | &#x2713; | - |
84
+ | `icons` | List of one or more app icons. | &#x2713; | - |
85
+ | `description`| Short description of the site. | &#x3F; | - |
86
+ | `short_name` | Used in app launchers | &#x2717; | - |
87
+ | `tagline` | Your site's tagline. | &#x2717; | - |
88
+ | `categories` | List of website categories. | &#x2717; | - |
89
+ | `lang` | ISO code of primary language of your site. | &#x2717; | en-US |
90
+ | `theme_color`| Hex value of your site's primary color. | &#x2717; | #854fee |
91
+
92
+ <br>
93
+ You must provide the `name` of your site, and at least one icon in the [`icons`](https://developer.mozilla.org/en-US/docs/Web/Manifest/icons) list, preferably at least 192x192 pixel in size. The `description` tag is not required but recommended because it is used in your site's metadata description, and in case of PWAs, in store fronts and install dialogs.
94
+
95
+ You can see a full example of a [`manifest.json` here](https://github.com/saifkhichi96/simple-material-demo/blob/main/_data/manifest.json).
96
+
97
+ ### <i id="webapp"></i>Setting up an [Installable Web App](https://www.pwabuilder.com)
98
+
99
+ If you also provide values for the `background_color` and `start_url` fields, your site can be installed as a Progressive Web App. For a list of all supported fields, [see this page](https://developer.mozilla.org/en-US/docs/Web/Manifest/). A service worker and install buttons are automatically added to your site.
100
+
101
+ Next, create a file called `pwabuilder-sw.js` in your site's root and copy the following code there:
102
+
103
+ ```
104
+ const CACHE = "pwabuilder-offline";
105
+
106
+ importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');
107
+
108
+ self.addEventListener("message", (event) => {
109
+ if (event.data && event.data.type === "SKIP_WAITING") {
110
+ self.skipWaiting();
111
+ }
112
+ });
113
+
114
+ workbox.routing.registerRoute(
115
+ new RegExp('/*'),
116
+ new workbox.strategies.StaleWhileRevalidate({
117
+ cacheName: CACHE
118
+ })
119
+ );
120
+
121
+ ```
122
+
123
+ You can now install your website as a PWA on any device.
124
+
125
+ ## <i id="layouts"></i>Layouts
126
+
127
+ Simple Material contains the following layouts:
128
+
129
+ | Name | Description |
130
+ | --------: | --------------------------------------------------------------------------- |
131
+ | `default` | Base layout of the theme. |
132
+ | `page` | Layout for top-level or standalone pages in the website. |
133
+ | `post` | Layout for blog posts. |
134
+ | `project` | Layout for project pages to show details of a single portfolio item. |
135
+
136
+ <br>
137
+ To define a page layout, use `layout: name` in the page's YAML front matter. If none specified, `default` is used.
138
+
139
+ ## <i id="widgets"></i>Widgets
140
+
141
+ Simple Material defines some view elements as reusable 'widgets'. If you are using a local Jekyll environment, you can include these widgets anywhere in your pages using the {% raw %}`{% include widget_name.html %}`{% endraw %} directive. Some of them are also used in the built-in layouts of the theme.
142
+
143
+ ### <i id="widget_goodreads"></i>Goodreads Books (`widget_goodreads`)
144
+
145
+ Shows the recently read books of the specified Goodreads user. To link your profile, add your Goodreads user ID (an 8-digit number) in the `_config.yml` file.
146
+
147
+ ```
148
+ menu_social:
149
+ goodreads: goodreads-user-id
150
+ ```
151
+
152
+ {% include widget_goodreads.html %}
153
+
154
+ ### <i id="widget_github"></i>GitHub Contributions (`widget_github`)
155
+
156
+ Shows the GitHub contribution chart of the specified GitHub user. To specify the user, add your GitHub username in the social menu in `_config.yml` file.
157
+
158
+ ```
159
+ menu_social:
160
+ github: github-username
161
+ ```
162
+
163
+ {% include widget_github.html %}
164
+
165
+ ### <i id="widget_feedback"></i>Feedback (`widget_feedback`)
166
+
167
+ If your site's is open-source and hosted on GitHub, you can allow visitors to contribute to your site's source code or report issues using this widget. To use this,
168
+
169
+ 1. Include the widget in your page layout.
170
+ 2. Check that your project folder contains a `git` repository (i.e. `.git/` folder exists).
171
+ 3. Check that the `remote` is set to project's GitHub repository (use `git remote -v`), which must be owned by you.
172
+ 4. Get a [personal access token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-token) from GitHub with the `repo` scope.
173
+ 5. Set the `JEKYLL_GITHUB_TOKEN` environment variable before building the Jekyll website. For example, by running `JEKYLL_GITHUB_TOKEN=token bundle exec jekyll build` where `token` is the PAT you created in Step 4 above.
174
+
175
+ ## <i id='categories'></i>Using Categories
176
+
177
+ You can categorize your content based on categories. For this, you just need to add categories in front matter like below:
178
+
179
+ For adding single category: `categories: JavaScript`
180
+
181
+ For adding multiple categories: `categories: [PHP, Laravel]`
@@ -0,0 +1,3 @@
1
+ {% if site.google_adsense %}
2
+ <script data-ad-client="{{ site.google_adsense }}" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
3
+ {% endif %}
@@ -0,0 +1,13 @@
1
+ {% if site.google_analytics_ga4 %}
2
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics_ga4 }}"></script>
3
+ <script>
4
+ window.dataLayer = window.dataLayer || [];
5
+
6
+ function gtag() {
7
+ dataLayer.push(arguments);
8
+ }
9
+ gtag('js', new Date());
10
+ gtag('config', '{{ site.google_analytics_ga4 }}');
11
+ </script>
12
+ {% endif %}
13
+ {% include analytics_head_legacy.html %}
@@ -0,0 +1,25 @@
1
+ {% if site.google_analytics %}
2
+ <!-- Google Analytics -->
3
+ <script>
4
+ (function(i, s, o, g, r, a, m) {
5
+ i['GoogleAnalyticsObject'] = r;
6
+ i[r] = i[r] || function() {
7
+ (i[r].q = i[r].q || []).push(arguments)
8
+ }, i[r].l = 1 * new Date();
9
+ a = s.createElement(o),
10
+ m = s.getElementsByTagName(o)[0];
11
+ a.async = 1;
12
+ a.src = g;
13
+ m.parentNode.insertBefore(a, m)
14
+ })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
15
+
16
+ ga('create', '{{ site.google_analytics }}', 'auto');
17
+ ga('send', 'pageview', {
18
+ 'page': '{{ site.baseurl }}{{ page.url }}',
19
+ 'title': '{{ page.title | replace: "'
20
+ ", "\\
21
+ '" }}'
22
+ });
23
+ </script>
24
+ <!-- End Google Analytics -->
25
+ {% endif %}
@@ -0,0 +1,60 @@
1
+ <!-- Top App Bar -->
2
+ <header class="mdc-top-app-bar">
3
+ <div class="mdc-top-app-bar__row">
4
+ <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-start">
5
+ {% unless page.drawer %}
6
+ <button class="material-icons mdc-icon-button"
7
+ aria-label="Go to previous page."
8
+ onclick="back();">arrow_back</button>
9
+ {% endunless %}
10
+
11
+ {% if page.drawer %}
12
+ {% if site.menu_main %}
13
+ <button class="material-icons mdc-top-app-bar__navigation-icon mdc-icon-button"
14
+ aria-label="Open navigation menu">menu</button>
15
+ {% else %}
16
+ <button class="material-icons mdc-icon-button"
17
+ aria-label="Go to home page."
18
+ onclick="window.location.href='{{ site.baseurl }}/'">home</button>
19
+ {% endif %}
20
+ {% endif %}
21
+ <span class="mdc-top-app-bar__title">
22
+ <a href="{{ site.baseurl }}/">
23
+ {% if site.logo %}
24
+ <img src="{{ site.baseurl }}{{ site.logo }}" alt="{{ site.data.manifest.name }}" height="32" />
25
+ {% elsif site.data.manifest.short_name %}
26
+ {{ site.data.manifest.short_name }}
27
+ {% else %}
28
+ {{ site.data.manifest.name }}
29
+ {% endif %}
30
+ </a>
31
+ </span>
32
+ </section>
33
+ <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-end" role="toolbar">
34
+ {% if page.menuitem %}
35
+ {% if page.menuaction %}
36
+ <div class="mdc-touch-target-wrapper">
37
+ <button class="mdc-top-app-bar__action-item {% if page.menuicon %}mdc-icon-button{% else %}mdc-button mdc-button--outlined{% endif %}" onclick="{{ page.menuaction }}" aria-label="Download Transcript">
38
+ <span class="mdc-button__ripple"></span>
39
+ <span class="mdc-button__label">
40
+ {% if page.menuicon %}
41
+ <i class="material-icons">{{ page.menuicon }}</i>
42
+ {% else %}
43
+ {{ page.menuitem }}
44
+ {% endif %}
45
+ </span>
46
+ <span class="mdc-button__touch"></span>
47
+ </button>
48
+ </div>
49
+ {% endif %}
50
+ {% endif %}
51
+ <div class="mdc-touch-target-wrapper">
52
+ <pwa-install id="a2hs" installbuttontext="Install" manifestpath="{{ site.baseurl }}/manifest.json">
53
+ <span class="mdc-button__ripple"></span>
54
+ <i class="fas fa-arrow-circle-down"></i>
55
+ <span class="mdc-button__touch"></span>
56
+ </pwa-install>
57
+ </div>
58
+ </section>
59
+ </div>
60
+ </header>
@@ -0,0 +1,18 @@
1
+ {% if site.disqus %}
2
+ <section class="comments">
3
+ <h2>Leave a Comment</h2>
4
+ <div id="disqus_thread"></div>
5
+ <script type="text/javascript">
6
+ var disqus_shortname = '{{ site.disqus }}';
7
+
8
+ (function() {
9
+ var dsq = document.createElement('script');
10
+ dsq.type = 'text/javascript';
11
+ dsq.async = true;
12
+ dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
13
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
14
+ })();
15
+ </script>
16
+ <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
17
+ </section>
18
+ {% endif %}
@@ -0,0 +1,10 @@
1
+ <aside class="mdc-drawer mdc-drawer--modal">
2
+ <div class="mdc-drawer__header">
3
+ <h3 class="mdc-drawer__title">{{ site.data.manifest.name }}</h3>
4
+ <h6 class="mdc-drawer__subtitle">{{ site.data.manifest.tagline }}</h6>
5
+ </div>
6
+ <div class="mdc-drawer__content">
7
+ {% include nav_drawer.html %}
8
+ </div>
9
+ </aside>
10
+ <div class="mdc-drawer-scrim"></div>
@@ -0,0 +1,64 @@
1
+ <footer>
2
+ <div class="footnote">
3
+ {% if page.license.content or page.license.code %}
4
+ <p>
5
+ Except as otherwise noted,
6
+ {% if page.license.content and page.license.code %}
7
+
8
+ {% if page.license.content.name == page.license.code.name %}
9
+
10
+ the content and code samples on this page are licensed under <a href="{{ page.license.content.url }}" target="_blank">{{ page.license.content.name }}</a>.
11
+
12
+ {% else %}
13
+
14
+ the content of this page is licensed under <a href="{{ page.license.content.url }}" target="_blank">{{ page.license.content.name }}</a>, and the code samples are licensed under <a href="{{ page.license.code.url }}" target="_blank">{{ page.license.code.name }}</a>.
15
+
16
+ {% endif %}
17
+
18
+ {% elsif page.license.content %}
19
+
20
+ the content of this page is licensed under <a href="{{ page.license.content.url }}" target="_blank">{{ page.license.content.name }}</a>.
21
+
22
+ {% elsif page.license.code %}
23
+
24
+ the code samples on this page are licensed under <a href="{{ page.license.code.url }}" target="_blank">{{ page.license.code.name }}</a>.
25
+
26
+ {% endif %}
27
+ </p>
28
+ {% endif %}
29
+ <p>
30
+ Last updated <span id="last-modified"></span>
31
+ </p>
32
+ </div>
33
+
34
+ <div class="footer">
35
+ {% if site.data.manifest.name %}
36
+ {% assign title = site.data.manifest.name %}
37
+ {% else %}
38
+ {% assign title = site.title %}
39
+ {% endif %}
40
+ <p>
41
+ <a href="{{ site.baseurl }}/">
42
+ {% if site.logo %}
43
+ <img src="{{ site.baseurl }}{{ site.logo }}" alt="{{ title }}" height="32" />
44
+ {% elsif site.data.manifest.short_name %}
45
+ {{ site.data.manifest.short_name }}
46
+ {% else %}
47
+ {{ title }}
48
+ {% endif %}
49
+ </a>
50
+ </p>
51
+ <div class="text-left">
52
+ {% include nav_social.html %}
53
+ </div>
54
+ {% include nav_footer.html %}
55
+ <hr class="mdc-list-divider" />
56
+ <span class="copyright">
57
+ <p>
58
+ Copyright &copy; {{ title }} {{ site.time | date: '%Y' }}. All rights reserved.<br>
59
+ <small>This site uses the <a href="https://github.com/saifkhichi96/simple-material">Simple Material</a> theme by <a href="https://github.com/saifkhichi96">saifkhichi96</a></small>
60
+ </p>
61
+ {% if site.terms %}<a href="{{ site.baseurl }}{{ site.terms }}" class="muted">Terms</a> {% if site.privacy %}&nbsp;|&nbsp;{% endif %}{% endif %} {% if site.privacy %}<a href="{{ site.baseurl }}{{ site.privacy }}" class="muted">Privacy</a>{% endif %}
62
+ </span>
63
+ </div>
64
+ </footer>
@@ -0,0 +1,6 @@
1
+ {% if site.menu_social.github and page.github_stats %}
2
+ <!-- Prepare a container for your calendar. -->
3
+ <script src="https://unpkg.com/github-calendar@latest/dist/github-calendar.min.js"></script>
4
+ <link rel="stylesheet" href="https://unpkg.com/github-calendar@latest/dist/github-calendar-responsive.css" />
5
+ <link href="{{ site.baseurl }}/assets/styles/github.css" rel="stylesheet">
6
+ {% endif %}
@@ -0,0 +1,26 @@
1
+ {% assign categories = site.categories | sort %}
2
+ {% for category in categories %}
3
+ <section class="mdc-card mdc-card--outlined">
4
+ <details class="mdc-card__content">
5
+ {% capture category_name %}{{ category | first }}{% endcapture %}
6
+ <summary>{{ category_name }}</summary>
7
+ <i id="#{{ category_name | slugify }}"></i>
8
+ <a name="{{ category_name | slugify }}"></a>
9
+
10
+ <ol class="mdc-list mdc-list--two-line">
11
+ {% for post in site.categories[category_name] %}
12
+ <li class="mdc-list-item">
13
+ <span class="mdc-list-item__ripple"></span>
14
+ <span class="mdc-list-item__text">
15
+ <span class="mdc-list-item__primary-text">
16
+ <a href="{{ site.baseurl }}{{ post.url }}">{% if post.title and post.title != "" %}{{post.title}}{% else %}{{post.excerpt |strip_html}}{%endif%}</a>
17
+ </span>
18
+ <span class="mdc-list-item__secondary-text">{{post.excerpt | strip_html | strip | slice: 0, 200 }}...</span>
19
+ </span>
20
+ </li>
21
+ <br>
22
+ {% endfor %}
23
+ </ol>
24
+ </details>
25
+ </section>
26
+ {% endfor %}
@@ -0,0 +1,74 @@
1
+ {% if paginator.posts %}
2
+ {% assign posts = paginator.posts %}
3
+ {% else %}
4
+ {% assign posts = site.posts %}
5
+ {% endif %}
6
+
7
+ {% for post in posts %}
8
+ {% assign categories = post.categories %}
9
+ <section class="post-container">
10
+ <div class="post">
11
+ {% if post.cover %}
12
+ {% assign post_image = post.cover %}
13
+ {% else %}
14
+ {% assign post_image = '/assets/images/blog/default.png' %}
15
+ {% endif %}
16
+
17
+ {% if post_image contains '://' %}
18
+ {% assign image_url = post_image %}
19
+ {% else %}
20
+ {% assign image_url = post_image | relative_url %}
21
+ {% endif %}
22
+ <div class="post-img" style="background-image: url('{{ image_url }}')"></div>
23
+ <div class="post-details">
24
+ <div class="project-tags">
25
+ {% assign categories = post.categories %}
26
+ {% for category in categories %}
27
+ <a href="{{site.baseurl}}/categories/#{{category|slugize|replace:",",""}}"><span class="project-tag"><i class="material-icons">sell</i>{{ category | replace: ",", "" }}</span></a>
28
+ {% endfor %}
29
+ </div>
30
+ <div class="post-date">{{ post.date | date: "%B %e, %Y" }}</div>
31
+ <h2 class="post-title">{{ post.title }}</h2>
32
+ <p class="post-excerpt">{{ post.description }}</p>
33
+ <div class="mdc-touch-target-wrapper">
34
+ <a class="mdc-button mdc-button--unelevated" href="{{ site.baseurl }}{{ post.url }}">
35
+ <span class="mdc-button__ripple"></span>
36
+ <span class="mdc-button__label">Read More</span>
37
+ <span class="mdc-button__touch"></span>
38
+ </a>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </section>
43
+ {% endfor %}
44
+
45
+ {% if paginator %}
46
+ <!-- pagination -->
47
+ {% if paginator.total_pages > 1 %}
48
+ <ul class="pagination" style="display: flex; width: 100%; justify-content: space-evenly;">
49
+ <li>
50
+ {% if paginator.previous_page %}
51
+ <a href="{{ paginator.previous_page_path | prepend: site.baseurl | replace: '//', '/' }}">&laquo; Prev</a>
52
+ {% else %}
53
+ <span>&laquo; Prev</span>
54
+ {% endif %}
55
+ </li>
56
+
57
+ {% if paginator.page_trail %}
58
+ {% for trail in paginator.page_trail %}
59
+ <li {% if page.url == trail.path %}class="selected"{% endif %}>
60
+ <a href="{{ trail.path | prepend: site.baseurl }}" title="{{trail.title}}">{{ trail.num }}</a>
61
+ </li>
62
+ {% endfor %}
63
+ {% endif %}
64
+
65
+ <li>
66
+ {% if paginator.next_page %}
67
+ <a href="{{ paginator.next_page_path | prepend: site.baseurl | replace: '//', '/' }}">Next &raquo;</a>
68
+ {% else %}
69
+ <span>Next &raquo;</span>
70
+ {% endif %}
71
+ </li>
72
+ </ul>
73
+ {% endif %}
74
+ {% endif %}
@@ -0,0 +1,25 @@
1
+ {% assign posts = site.posts %}
2
+ {% if posts.size > 0 %}
3
+ <section>
4
+ {% include widget_search.html %}
5
+
6
+ <h2>Recent posts</h2>
7
+ <div class="mdc-list mdc-list--two-line">
8
+ {% for post in posts limit:5 %}
9
+ {% assign categories = post.categories %}
10
+ <a class="mdc-list-item" href="{{ site.baseurl }}{{ post.url }}">
11
+ <span class="mdc-list-item__ripple"></span>
12
+ <span class="mdc-list-item__text">
13
+ <span class="mdc-list-item__primary-text">{{ post.title }}</span>
14
+ <span class="mdc-list-item__secondary-text">
15
+ {% for cat in categories limit:1 %}
16
+ <span class="project-tag">{{ cat | replace: ",", "" }}</span>
17
+ {% endfor %}
18
+ &nbsp; {{ post.date | date: "%B %e, %Y" }}</span>
19
+ </span>
20
+ </a>
21
+ {% endfor %}
22
+
23
+ </div>
24
+ </section>
25
+ {% endif %}
@@ -0,0 +1,14 @@
1
+ <div>
2
+ {% for page in site.projects %}
3
+ {% assign categories = page.categories %}
4
+ {% if categories contains 'featured' %}
5
+ <section class="project-summary" style="display: flex;">
6
+ <img class="project-logo-featured" src="{{ site.baseurl}}{{ page.icon }}" alt="{{ page.title | slice: 0 }}" />
7
+ <div style="width: calc(100% - 72px)">
8
+ <h3 class="project-title"><a href="{{ site.baseurl }}{{ page.url }}">{{ page.title }}</a></h3>
9
+ <div>{{ page.description }}</div>
10
+ </div>
11
+ </section>
12
+ {% endif %}
13
+ {% endfor %}
14
+ </div>
@@ -0,0 +1,13 @@
1
+ <section class="mdc-layout-grid">
2
+ <div class="mdc-layout-grid__inner">
3
+ {% for service in site.services %}
4
+ <div class="mdc-layout-grid__cell mdc-card mdc-card--outlined service-item">
5
+ {% if service.icon %}
6
+ <span class="material-icons">{{ service.icon }}</span>
7
+ {% endif %}
8
+ <h2><a href="{{ site.baseurl }}{{ service.url }}">{{ service.title }}</a></h2>
9
+ <p>{{ service.description }}</p>
10
+ </div>
11
+ {% endfor %}
12
+ </div>
13
+ </section>
@@ -0,0 +1,47 @@
1
+ {% if page.title %}
2
+ <meta property="og:title" content="{{ page.title }}" />
3
+ <meta property="twitter:title" content="{{ page.title }}" />
4
+ {% endif %}
5
+
6
+ {% assign keywords = '' %}
7
+
8
+ {% if page.keywords %}
9
+ {% assign keywords = keywords | append: page.keywords | append: ', ' %}
10
+ {% endif %}
11
+
12
+ {% if page.categories %}
13
+ {% for category in page.categories %}
14
+ {% assign keywords = keywords | append: category | append: ', ' %}
15
+ {% endfor %}
16
+ {% endif %}
17
+
18
+ {% for category in site.data.manifest.categories %}
19
+ {% assign keywords = keywords | append: category | append: ', ' %}
20
+ {% endfor %}
21
+
22
+ <meta name="keywords" content="{{ keywords }}">
23
+ <meta property="og:keywords" content="{{ keywords }}" />
24
+ <meta property="twitter:keywords" content="{{ keywords }}" />
25
+
26
+ {% if page.cover %}
27
+ {% if page.cover contains '://' %}
28
+ {% assign cover_url = page.cover %}
29
+ {% else %}
30
+ {% assign cover_url = page.cover | absolute_url %}
31
+ {% endif %}
32
+ <meta property="og:image" content="{{ cover_url }}" />
33
+ <meta property="twitter:image" content="{{ cover_url }}" />
34
+
35
+ {% elsif page.icon %}
36
+ {% if page.icon contains '://' %}
37
+ {% assign icon_url = page.icon %}
38
+ {% else %}
39
+ {% assign icon_url = page.icon | absolute_url %}
40
+ {% endif %}
41
+ <meta property="og:image" content="{{ icon_url }}" />
42
+ <meta property="twitter:image" content="{{ icon_url }}" />
43
+
44
+ {% else %}
45
+ <meta property="og:image" content="{{ site.logo | absolute_url }}" />
46
+ <meta property="twitter:image" content="{{ site.logo | absolute_url }}" />
47
+ {% endif %}
@@ -0,0 +1,32 @@
1
+ {% if site.menu_main %}
2
+ <nav>
3
+ <ul class="mdc-list mdc-list--icon-list">
4
+ {% for item in site.menu_main %}
5
+ {% if item.url contains '://' %}
6
+ {% assign url = item.url %}
7
+ {% else %}
8
+ {% assign url = item.url | relative_url %}
9
+ {% endif %}
10
+
11
+ {% if item.url == page.url %}
12
+ <li class="mdc-list-item mdc-list-item--activated" aria-current="page">
13
+ {% else %}
14
+ <li class="mdc-list-item" {% if item.url %}onclick="window.location.href='{{ url }}'"{% endif %}>
15
+ {% endif %}
16
+ {% if item.title %}
17
+ <span class="mdc-list-item__ripple"></span>
18
+ <span class="mdc-list-item__text">
19
+ <i class="material-icons" style="opacity: 0.75; position: relative; top: 6px;">{{ item.icon }}</i>
20
+ {{ item.title }}
21
+ </span>
22
+ {% endif %}
23
+ </li>
24
+
25
+ {% endfor %}
26
+ <li class="mdc-list-item mdc-list-item--activated" style="opacity: 0;">
27
+ <span class="mdc-list-item__ripple"></span>
28
+ <span class="mdc-list-item__text"></span>
29
+ </li>
30
+ </ul>
31
+ </nav>
32
+ {% endif %}