simple-material 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +181 -0
- data/_includes/adsense_head.html +3 -0
- data/_includes/analytics_head.html +13 -0
- data/_includes/analytics_head_legacy.html +25 -0
- data/_includes/appbar.html +60 -0
- data/_includes/disqus.html +18 -0
- data/_includes/drawer.html +10 -0
- data/_includes/footer.html +64 -0
- data/_includes/github_head.html +6 -0
- data/_includes/list_blog_categories.html +26 -0
- data/_includes/list_blog_posts.html +74 -0
- data/_includes/list_posts.html +25 -0
- data/_includes/list_projects_featured.html +14 -0
- data/_includes/list_services.html +13 -0
- data/_includes/meta.html +47 -0
- data/_includes/nav_drawer.html +32 -0
- data/_includes/nav_footer.html +23 -0
- data/_includes/nav_social.html +71 -0
- data/_includes/pullquote.html +1 -0
- data/_includes/widget_feedback.html +15 -0
- data/_includes/widget_github.html +28 -0
- data/_includes/widget_goodreads.html +50 -0
- data/_includes/widget_search.html +15 -0
- data/_includes/widget_share.html +14 -0
- data/_layouts/default.html +190 -0
- data/_layouts/page.html +13 -0
- data/_layouts/post.html +35 -0
- data/_layouts/project.html +109 -0
- data/_sass/_code.scss +53 -0
- data/_sass/_colors.scss +124 -0
- data/_sass/_typography.scss +140 -0
- data/assets/images/icons/192.png +0 -0
- data/assets/images/logo.png +0 -0
- data/assets/raw/search.json +13 -0
- data/assets/scripts/navigation.js +54 -0
- data/assets/scripts/projects.js +72 -0
- data/assets/scripts/script.js +0 -0
- data/assets/scripts/service-worker.js +14 -0
- data/assets/scripts/simple-jekyll-search.min.js +6 -0
- data/assets/scripts/webapp.js +22 -0
- data/assets/styles/app.scss +1008 -0
- data/assets/styles/github.css +73 -0
- data/assets/styles/style.css +0 -0
- data/assets/vendors/isotope/isotope-min.js +12 -0
- data/pwabuilder-sw.js +23 -0
- 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. | ✓ | - |
|
84
|
+
| `icons` | List of one or more app icons. | ✓ | - |
|
85
|
+
| `description`| Short description of the site. | ? | - |
|
86
|
+
| `short_name` | Used in app launchers | ✗ | - |
|
87
|
+
| `tagline` | Your site's tagline. | ✗ | - |
|
88
|
+
| `categories` | List of website categories. | ✗ | - |
|
89
|
+
| `lang` | ISO code of primary language of your site. | ✗ | en-US |
|
90
|
+
| `theme_color`| Hex value of your site's primary color. | ✗ | #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,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 © {{ 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 %} | {% 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: '//', '/' }}">« Prev</a>
|
52
|
+
{% else %}
|
53
|
+
<span>« 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 »</a>
|
68
|
+
{% else %}
|
69
|
+
<span>Next »</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
|
+
{{ 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>
|
data/_includes/meta.html
ADDED
@@ -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 %}
|