simple-material 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
[](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 %}
|