minimal-music-project 0.0.3 → 0.0.7

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +49 -20
  4. data/_config.yml +11 -3
  5. data/_data/menu.yml +2 -2
  6. data/_data/metaData.yml +12 -1
  7. data/_includes/common-head.html +1 -1
  8. data/_includes/common.js +5 -0
  9. data/_includes/cookies.js +46 -12
  10. data/_includes/customizationsScripts.html +7 -0
  11. data/_includes/customizationsStyles.html +7 -0
  12. data/_includes/discography-entry-metadata.html +1 -1
  13. data/_includes/menu.html +10 -21
  14. data/_includes/music-player.html +5 -4
  15. data/_includes/pagination-buttons.html +14 -0
  16. data/_includes/read-more.html +2 -1
  17. data/_layouts/cookies.html +28 -0
  18. data/_layouts/default.html +9 -5
  19. data/_layouts/discography.html +3 -1
  20. data/_layouts/posts_feed.html +3 -2
  21. data/_sass/styles/_cookies.scss +27 -19
  22. data/_sass/styles/_defaults.scss +40 -9
  23. data/_sass/styles/_discography.scss +5 -5
  24. data/_sass/styles/_layout.scss +2 -2
  25. data/_sass/styles/_menu.scss +85 -8
  26. data/_sass/styles/{music-player.scss → _music-player.scss} +0 -0
  27. data/_sass/styles/_post.scss +1 -4
  28. data/_sass/styles/_posts_feed.scss +25 -1
  29. data/_sass/variables/_colors.scss +2 -1
  30. data/_sass/variables/_layout.scss +2 -1
  31. data/_sass/variables/_mixins.scss +14 -6
  32. data/assets/img/Experimental-Glitches-Cover.png +0 -0
  33. data/assets/img/YyY-Cover.png +0 -0
  34. data/assets/img/z-is-for-zero.png +0 -0
  35. data/pages/about.html +57 -3
  36. data/pages/cookies.html +9 -0
  37. data/pages/privacyPolicy.html +10 -0
  38. metadata +10 -5
  39. data/_includes/customizations.html +0 -15
  40. data/pages/collaborations.html +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7029cd275a130708b0e8907e9cbafafdd4db04d320d360cdd2981df5a1c27816
4
- data.tar.gz: 3ca7c7261be1e1235f55f9716f403fb935a3be00d9a43940ffd676f4ed83cc2a
3
+ metadata.gz: 83c6d910205c9328757cf56b0c2e50df907fedcd650966b0b9898cbd3fb51aaa
4
+ data.tar.gz: cc1222e1c478d9cb01840d7567b99b354251c5c29c7255446d8463c7293a602d
5
5
  SHA512:
6
- metadata.gz: 36fbe1c4792c2837c0c5e3c8830a95e8a699af3a92b42e389d7e6f28956420b2de1ec0ee6afc394bb82462e5854cb99496795c7678e0651b12917fd35bf4b671
7
- data.tar.gz: aa837c3aab72920f119f45477bfe5f1797044a2e162e2989a6c2fb15b175e1b67d69d133045aef525976572b6a12816bcd13c6593c1fb668e45b718928ec8109
6
+ metadata.gz: 3c2952ee9d4a34a6e3eabed59790d60a14937e5bbe8d95ca79a573fcd15aa70a84e9999eaa9ff499335fda3b418f8146f7bfb3f9f7ffb747e81761c255fba879
7
+ data.tar.gz: 99af8f826d34e242fc443712a3396bb7b511c3c405072bba1c2731cf766ddb0a981b9bef7725bd527598a58ebda18439f4943edc2959bcf011f244e8c60ef3e7
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2020 Patryk Bieszke
3
+ Copyright (c) 2021 Patryk Bieszke
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,40 +1,56 @@
1
- # [minimal-music-project Jekyll theme](https://github.com/ItsMeaga1n/minimal-music-project/)
1
+ <h1><a href="https://github.com/ItsMeaga1n/minimal-music-project/"><img src="https://raw.githubusercontent.com/ItsMeaga1n/minimal-music-project/master/assets/img/favicon.ico" height="21" alt="minimal-categorized logo" /> minimal-music-project Jekyll theme </h1></a>
2
2
 
3
- [![LICENSE](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://raw.githubusercontent.com/mmistakes/minimal-mistakes/master/LICENSE)
3
+ [![LICENSE](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://raw.githubusercontent.com/itsmeaga1n/minimal-music-project/master/LICENSE.txt)
4
4
  [![Jekyll](https://img.shields.io/badge/jekyll-%3E%3D%203.9-blue.svg)](https://jekyllrb.com/)
5
5
  [![Gem Version](https://badge.fury.io/rb/minimal-music-project.svg)](https://badge.fury.io/rb/minimal-music-project)
6
+ <a href="https://ko-fi.com/itsmeaga1n">
7
+ <img height="20" src="https://www.ko-fi.com/img/githubbutton_sm.svg"
8
+ alt="Donate (Ko-fi)" />
9
+ </a>
6
10
 
7
- minimal-music-project is a flexible Jekyll theme, designed for sites with content easily aggregated into categories. Demo is available [here](https://itsmeaga1n.github.io/minimal-music-project/).
11
+ minimal-music-project is a flexible, extendable Jekyll theme. With this theme it's plain simple to create a good looking website for a music band with all the required components to list all releases and news. Demo is available [here](https://minimal-music-project.netlify.app/).
8
12
 
9
- ![layout examples](screenshot.png)
13
+ ![layout examples](https://raw.githubusercontent.com/ItsMeaga1n/minimal-music-project/master/screenshot.png)
10
14
 
11
15
  ## Installation
12
16
 
13
- Add this line to your Jekyll site's `Gemfile`:
17
+ There are three ways to install:
14
18
 
15
- ```ruby
16
- gem "minimal-music-project"
17
- ```
19
+ * As a ruby gem theme:
18
20
 
19
- And add this line to your Jekyll site's `_config.yml`:
21
+ Add this line to your Jekyll site's `Gemfile`:
20
22
 
21
- ```yaml
22
- theme: minimal-music-project
23
- ```
23
+ ```ruby
24
+ gem "minimal-categorized"
25
+ ```
24
26
 
25
- And then execute:
27
+ And add this line to your Jekyll site's `_config.yml`:
26
28
 
27
- $ bundle
29
+ ```yaml
30
+ theme: minimal-categorized
31
+ ```
28
32
 
29
- Or install it yourself as:
33
+ And then execute:
30
34
 
31
- $ gem install minimal-music-project
35
+ $ bundle
32
36
 
33
- ## Usage
37
+ Or install it yourself as:
38
+
39
+ $ gem install minimal-categorized
34
40
 
35
- This theme is based on separating content into categories, which is later shown on separated sites designated to the specific content type.
41
+ * As a remote theme (GitHub Pages compatible)
42
+
43
+ In your Jekyll site's _config.yml remove other themes and add this entry:
44
+ ```
45
+ remote_theme: ItsMeaga1n/minimal-categorized
46
+ ```
36
47
 
37
- As for now, theme allows to use two main categories that will be displayed on home screen and more categories displayed only in menu to further separate content. Those are defined in `_data/menu.yml`.
48
+ * Forking/directly copying all of the theme files into your project.
49
+
50
+ ## Usage
51
+ This theme uses pager plugin `jekyll-paginate-v2` for pagination and `jekyll-seo-tag` for seo tags. It can be configured in main _config file.
52
+
53
+ Configuration via .yml files
38
54
 
39
55
  Structure of `_data/menu.yml`:
40
56
  * menu_pages: a list of items in menu. Each item contains information:
@@ -42,14 +58,27 @@ Structure of `_data/menu.yml`:
42
58
  * url: URL for href
43
59
  * category: unique identifier of category. Used to determine which menu item is selected
44
60
  * tooltip: Tooltip for menu item
61
+ * menu_contacts: a list of items to be displayed for a contact section in menu
62
+ * faicon: FavIcon to be displayed in menu
63
+ * url: URL for href
64
+ * target: target value of \<a> tag
65
+
45
66
 
46
67
  Structure of `_data/metaData.yml`:
47
68
  * author: Site Author name
48
- * logo: URL for logo image (displayed on top of menu)
69
+ * logo: relative url to the logo
49
70
  * cookies: customize information about site cookies
50
71
  * enabled: determine if should show cookies pop-up
51
72
  * message: text on cookie pop-up
52
73
  * agreeButtonText: text on agree button
74
+ * disagreeButtonText: text on disagree button
75
+ * agreeButtonFnName: function in the `window` scope to execute on cookie agree
76
+ * disagreeButtonFnName: function in the `window` scope to execute on cookie disagree
77
+ * header: title of the pop-up window
78
+ * consent: list of objects that will be rendered on a site with "cookies" layout for acceptance. Each object needs to have:
79
+ * name: bolded on render
80
+ * description: description of the cookie
81
+ * cookieName: under what name it will be saved in the local storage (selected checkbox as "true", unselected as "false")
53
82
 
54
83
  Structure of `_data/customs.yml`:
55
84
  * custom-css: a list of urls to custom css files
data/_config.yml CHANGED
@@ -5,7 +5,6 @@ description: >-
5
5
  This website was created as a demonstration for Jekyll custom theme
6
6
  named minimal-music-project. Its main feature is to make it easy to create
7
7
  websites for music projects
8
- baseurl: "/minimal-music-project" # the subpath of your site, e.g. /blog
9
8
  url: "https://itsmeaga1n.github.io" # the base hostname & protocol for your site, e.g. http://example.com
10
9
  author: itsmeaga1n
11
10
  twitter:
@@ -14,11 +13,20 @@ twitter:
14
13
  plugins:
15
14
  - jekyll-seo-tag
16
15
  - jekyll-feed
16
+ - jekyll-sitemap
17
+ - jekyll-paginate-v2
17
18
  # Build settings
18
19
  markdown: kramdown
19
20
  remote_theme: ItsMeaga1n/minimal-music-project
20
- # Exclude these files from production site
21
- exclude:
21
+ permalink: /:title.html
22
+ pagination:
23
+ enabled: true
24
+ per_page: 4
25
+ limit: 0
26
+ sort_field: 'date'
27
+ sort_reverse: true
28
+
29
+ exclude:
22
30
  - CHANGELOG.md
23
31
  - CNAME
24
32
  - Gemfile
data/_data/menu.yml CHANGED
@@ -4,12 +4,12 @@ menu_pages:
4
4
  category: home
5
5
 
6
6
  - title: Discography
7
- url: /discography.html
7
+ url: /discography/
8
8
  category: discography
9
9
  tooltip: Discography tooltip
10
10
 
11
11
  - title: Collaborations
12
- url: /collaborations.html
12
+ url: /collaborations/
13
13
  category: collaborations
14
14
  tooltip: Collaborations tooltip
15
15
 
data/_data/metaData.yml CHANGED
@@ -3,4 +3,15 @@ logo: assets/img/band_logo.png
3
3
  cookies:
4
4
  enabled: True
5
5
  message: This site might be using cookies! Customize your message or disable cookies in metaData.yml!
6
- agreeButtonText: Agree
6
+ agreeButtonText: Yes, I agree
7
+ disagreeButtonText: No, take me to settings
8
+ agreeButtonFnName: cookiesAcceptDefaultFn
9
+ disagreeButtonFnName: cookiesDisagreeDefaultFn
10
+ header: Ask your users if they agree to cookies
11
+ consent:
12
+ - name: Google Analytics
13
+ description: some description describing the purpose of this consent as well as what it will collect and where send
14
+ cookieName: GA
15
+ - name: Some other cookie
16
+ description: some description describing the purpose of this consent as well as what it will collect and where send
17
+ cookieName: SA
@@ -18,5 +18,5 @@
18
18
  <!-- feed -->
19
19
  <link rel="alternate" type="application/atom+xml" title="{{ site.title }}" href="{{ "feed.xml" | relative_url }}">
20
20
 
21
- {% include customizations.html %}
21
+ {% include customizationsStyles.html %}
22
22
  {% seo %}
@@ -0,0 +1,5 @@
1
+ (function () {
2
+ window.toggleExpander = function toggleExpander(x) {
3
+ document.getElementsByClassName("menu")[0].classList.toggle("expanded");
4
+ }
5
+ })();
data/_includes/cookies.js CHANGED
@@ -1,27 +1,61 @@
1
+
1
2
  (function() {
2
- const consentPropName = "cookies_consent";
3
+ const interactedWithCookiesBanner = "interacted_with_cookies_banner";
3
4
  const storageType = localStorage;
5
+ const cookieContainerId = "cookieContainer";
6
+
7
+ acceptAllCookieConsent = () => {
8
+ {% for consent in site.data.metaData.cookies.consent %}
9
+ eval("storageType.setItem('{{consent.cookieName}}', true);");
10
+ {% endfor %}
11
+ }
4
12
 
5
- shouldShowCookieConsent = () => !storageType.getItem(consentPropName);
6
- acceptCookieConsent = () => storageType.setItem(consentPropName, true);
13
+ window.cookiesAcceptDefaultFn = () => {
14
+ const cookieContainer = document.getElementById(cookieContainerId);
15
+ cookieContainer.classList.add("hidden");
16
+ window.setTimeout(cookieContainer.remove.bind(cookieContainer), 1000);
17
+ storageType.setItem(interactedWithCookiesBanner, true);
18
+ acceptAllCookieConsent();
19
+ }
20
+ window.cookiesDisagreeDefaultFn = () => {
21
+ const cookieContainer = document.getElementById(cookieContainerId);
22
+ cookieContainer.classList.add("hidden");
23
+ window.setTimeout(cookieContainer.remove.bind(cookieContainer), 1000);
24
+ storageType.setItem(interactedWithCookiesBanner, true);
25
+ window.location = "cookies";
26
+ }
27
+
7
28
  window.addEventListener("load", () => {
8
- if(!shouldShowCookieConsent()) {
29
+ if(storageType.getItem(interactedWithCookiesBanner) === "true" || window.location.href.indexOf("cookies") !== -1) {
9
30
  return;
10
31
  }
11
32
  const cookieContainer = document.createElement("div");
33
+ cookieContainer.setAttribute("id", cookieContainerId);
12
34
  cookieContainer.classList.add("hidden");
35
+
36
+ const cookieHeader = document.createElement("h2");
37
+ const cookieHeaderContent = document.createTextNode("{{ site.data.metaData.cookies.header }}");
38
+
13
39
  const cookieParagraph = document.createElement("p");
14
- const cookieContent = document.createTextNode("{{ site.data.metaData.cookies.message }}");
40
+ const cookieParagraphContent = document.createTextNode("{{ site.data.metaData.cookies.message }}");
41
+
42
+ const cookieButtonsContainer = document.createElement("div");
43
+ cookieButtonsContainer.classList.add("cookie-container--buttons");
44
+
15
45
  const cookieAgreeButton = document.createElement("button");
16
46
  const cookieButtonContent = document.createTextNode("{{ site.data.metaData.cookies.agreeButtonText }}");
17
47
  cookieAgreeButton.appendChild(cookieButtonContent);
18
- cookieAgreeButton.onclick = () => {
19
- acceptCookieConsent();
20
- cookieContainer.classList.add("hidden");
21
- window.setTimeout(cookieContainer.remove.bind(cookieContainer), 1000);
22
- }
23
- cookieParagraph.append(cookieContent);
24
- cookieContainer.append(cookieParagraph, cookieAgreeButton);
48
+ eval("cookieAgreeButton.onclick = {{ site.data.metaData.cookies.agreeButtonFnName }};");
49
+
50
+ const cookieButtonDisagree = document.createElement("button");
51
+ const cookieButtonDisagreeContent = document.createTextNode("{{ site.data.metaData.cookies.disagreeButtonText }}");
52
+ cookieButtonDisagree.append(cookieButtonDisagreeContent);
53
+ eval("cookieButtonDisagree.onclick = {{ site.data.metaData.cookies.disagreeButtonFnName }};");
54
+
55
+ cookieHeader.append(cookieHeaderContent);
56
+ cookieParagraph.append(cookieParagraphContent);
57
+ cookieButtonsContainer.append(cookieAgreeButton, cookieButtonDisagree)
58
+ cookieContainer.append(cookieHeader, cookieParagraph, cookieButtonsContainer);
25
59
  cookieContainer.classList.add("cookie-container")
26
60
  document.body.appendChild(cookieContainer);
27
61
  window.setTimeout(() => cookieContainer.classList.remove("hidden"));
@@ -0,0 +1,7 @@
1
+ {% for javascript in page.custom-js %}
2
+ <script src="{{ javascript | relative_url }}"></script>
3
+ {% endfor %}
4
+
5
+ {% for javascript in site.data.customs.custom-js %}
6
+ <script src="{{ javascript | relative_url }}"></script>
7
+ {% endfor %}
@@ -0,0 +1,7 @@
1
+ {% for css in page.custom-css %}
2
+ <link href="{{ css | relative_url }}" rel="stylesheet">
3
+ {% endfor %}
4
+
5
+ {% for css in site.data.customs.custom-css %}
6
+ <link href="{{ css | relative_url }}" rel="stylesheet">
7
+ {% endfor %}
@@ -66,7 +66,7 @@
66
66
  <iframe width="100%" height="110" scrolling="no" frameborder="no" allow="autoplay"
67
67
  src="{{ include.currPost.play_soundcloud_embed.src }}"></iframe>
68
68
  <div
69
- style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;">
69
+ style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;">
70
70
  <a href="{{ include.currPost.play_soundcloud_embed.artist_href }}" title="{{ include.currPost.play_soundcloud_embed.artist_title }}" target="_blank"
71
71
  style="color: #cccccc; text-decoration: none;">{{ include.currPost.play_soundcloud_embed.artist_title }}</a> · <a
72
72
  href="{{ include.currPost.play_soundcloud_embed.song_href }}"
data/_includes/menu.html CHANGED
@@ -5,10 +5,19 @@
5
5
  <img src="{{ site.data.metaData.logo | relative_url }}" alt="Logo" onerror="this.style.display='none'">
6
6
  </a>
7
7
  </div>
8
+ <div class="menu-top_expand" onclick="toggleExpander(this)">
9
+ <div class="bar_top"></div>
10
+ <div class="bar_middle"></div>
11
+ <div class="bar_bottom"></div>
12
+ </div>
8
13
  <ul class="navigation">
9
14
  {% for menu_item in site.data.menu.menu_pages %}
10
15
  <li>
11
- <a href="{{ menu_item.url | relative_url }}" category="{{ menu_item.category }}" title="{{ menu_item.tooltip }}">
16
+ <a href="{{ menu_item.url | relative_url }}" category="{{ menu_item.category }}" title="{{ menu_item.tooltip }}"
17
+ {% if menu_item.category == page.category or page.categories contains menu_item.category %}
18
+ class="selected"
19
+ {% endif %}
20
+ >
12
21
  <span>{{ menu_item.title }}</span>
13
22
  </a>
14
23
  </li>
@@ -24,23 +33,3 @@
24
33
  {% endfor %}
25
34
  </div>
26
35
  </aside>
27
-
28
- <script>
29
- (function() {
30
- window.addEventListener("load", () => {
31
- const navigation = document.getElementsByClassName("navigation")[0];
32
- const selectedCategory = navigation.getElementsByTagName("a");
33
- const currCategory = "{{ page.category }}";
34
- const currCategories = "{{ page.categories }}";
35
-
36
- for(const menuItem of selectedCategory) {
37
- const menuCategory = menuItem.getAttribute("category")
38
- if(menuCategory === currCategory ||
39
- menuCategory === currCategories) {
40
- menuItem.classList.add("selected");
41
- return;
42
- }
43
- }
44
- });
45
- })();
46
- </script>
@@ -26,6 +26,11 @@
26
26
  </div>
27
27
 
28
28
  <script>
29
+ // Copyright (c) 2021 by EmNudge (https://codepen.io/EmNudge/pen/rRbLJQ)
30
+ // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
31
+ // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
32
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
+
29
34
  const audioPlayer = document.getElementById("{{ include.audioData.src }}");
30
35
  const audio = new Audio(
31
36
  {% if include.audioData.is_relative_url %}
@@ -102,11 +107,7 @@
102
107
  volumeEl.classList.add("fa-volume-up");
103
108
  }
104
109
  });
105
-
106
110
 
107
- /**
108
- * turn 128 seconds into 2:08
109
- **/
110
111
  function getTimeCodeFromNum(num) {
111
112
  let seconds = parseInt(num);
112
113
  let minutes = parseInt(seconds / 60);
@@ -0,0 +1,14 @@
1
+ {% if paginator.total_pages > 1 %}
2
+ <ul class="pager">
3
+ {% if paginator.previous_page %}
4
+ <li class="previous">
5
+ <a href="{{ paginator.previous_page_path | relative_url | replace: '//', '/' }}">&larr; Newer Posts</a>
6
+ </li>
7
+ {% endif %}
8
+ {% if paginator.next_page %}
9
+ <li class="next">
10
+ <a href="{{ paginator.next_page_path | relative_url | replace: '//', '/' }}">Older Posts &rarr;</a>
11
+ </li>
12
+ {% endif %}
13
+ </ul>
14
+ {% endif %}
@@ -3,7 +3,8 @@
3
3
  <a href="{{ include.currPost.external_url | relative_url }}" target="_blank">
4
4
  {% else %}
5
5
  <a href="{{ include.currPost.url | relative_url }}">
6
- {% endif %} {% if include.currPost.external_name %}
6
+ {% endif %}
7
+ {% if include.currPost.external_name %}
7
8
  Read more on {{ include.currPost.external_name }} &rarr;
8
9
  {% else %}
9
10
  More info &rarr;
@@ -0,0 +1,28 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ <div class="content-container cookies">
5
+ {{ content }}
6
+ <hr />
7
+ <h2>Consents</h2>
8
+ {% for consent in site.data.metaData.cookies.consent %}
9
+ <fieldset>
10
+ <input type="checkbox" id="{{ consent.name }}">
11
+ <label for="{{ consent.name }}">
12
+ <strong>{{ consent.name }}</strong>
13
+ {{ consent.description }}
14
+ </label>
15
+ </fieldset>
16
+ {% endfor %}
17
+ </div>
18
+ <script>
19
+ const storageType = localStorage;
20
+ const consents = eval('{{ site.data.metaData.cookies.consent | jsonify }}');
21
+ consents.forEach(consent => {
22
+ const element = document.getElementById(consent.name);
23
+ element.checked = storageType.getItem(consent.cookieName) === "true";
24
+ element.addEventListener("click", () => {
25
+ storageType.setItem(consent.cookieName, element.checked);
26
+ });
27
+ });
28
+ </script>
@@ -1,11 +1,6 @@
1
1
  <!doctype html>
2
2
  <html>
3
3
  <head>
4
- {% if site.data.metaData.cookies.enabled %}
5
- <script>
6
- {% include cookies.js %}
7
- </script>
8
- {% endif %}
9
4
  {% include common-head.html %}
10
5
  </head>
11
6
  <body>
@@ -14,5 +9,14 @@
14
9
  {{ content }}
15
10
  {% include footer.html %}
16
11
  </main>
12
+ {% if site.data.metaData.cookies.enabled %}
13
+ <script>
14
+ {% include cookies.js %}
15
+ </script>
16
+ {% endif %}
17
+ <script>
18
+ {% include common.js %}
19
+ </script>
20
+ {% include customizationsScripts.html %}
17
21
  </body>
18
22
  </html>
@@ -4,11 +4,13 @@ layout: default
4
4
  <div class="content-container">
5
5
  <div class="discography">
6
6
  {{ content }}
7
- {% for post in site.posts %}
7
+ {% for post in paginator.posts %}
8
8
  {% if post.categories contains page.category %}
9
9
  <hr>
10
10
  {% include discography-entry.html currPost=post %}
11
11
  {% endif %}
12
12
  {% endfor %}
13
+
14
+ {% include pagination-buttons.html %}
13
15
  </div>
14
16
  </div>
@@ -5,7 +5,7 @@ category: home
5
5
  <div class="content-container">
6
6
  <div class="post-feed">
7
7
  {{ content }}
8
- {% for post in site.posts %}
8
+ {% for post in paginator.posts %}
9
9
  {% if post.categories contains page.category %}
10
10
  <hr>
11
11
  <article>
@@ -29,7 +29,7 @@ category: home
29
29
  {{ post.description }}
30
30
  </p>
31
31
  </section>
32
- {% include read-more.html currPost=include.currPost %}
32
+ {% include read-more.html currPost=post %}
33
33
  </article>
34
34
  {% else %}
35
35
  <hr>
@@ -51,5 +51,6 @@ category: home
51
51
 
52
52
  {% endif %}
53
53
  {% endfor %}
54
+ {% include pagination-buttons.html %}
54
55
  </div>
55
56
  </div>
@@ -8,9 +8,9 @@
8
8
  opacity: 0.95;
9
9
  -webkit-transition: opacity 800ms, visibility 800ms;
10
10
  transition: opacity 800ms, visibility 800ms;
11
- bottom: 30px;
12
- left: 40px;
13
- max-width: 300px;
11
+ bottom: 40px;
12
+ left: 50px;
13
+ max-width: 40vw;
14
14
  border-radius: 3px;
15
15
  border: 3px solid $black;
16
16
 
@@ -23,22 +23,30 @@
23
23
  opacity: 0;
24
24
  visibility: hidden;
25
25
  }
26
- button {
27
- line-height: 1.4;
28
- font-weight: 700;
29
- display: inline-block;
30
- padding: 10px 20px;
31
- background-color: $white;
32
- color: $p_text;
33
- border: 1px solid;
34
- border-radius: 3px;
35
- text-decoration: none;
36
- cursor: pointer;
37
- -webkit-transition: background-color 200ms;
38
- transition: background-color 200ms;
39
- &:hover {
40
- background-color: rgb(168, 168, 168);
41
- }
26
+ &--buttons {
27
+ display: flex;
28
+ button {
29
+ line-height: 1.4;
30
+ font-weight: 700;
31
+ display: inline-block;
32
+ padding: 10px 20px;
33
+ background-color: $white;
34
+ color: $p_text;
35
+ border: 1px solid;
36
+ border-radius: 3px;
37
+ text-decoration: none;
38
+ cursor: pointer;
39
+ -webkit-transition: background-color 200ms;
40
+ transition: background-color 200ms;
41
+ &:hover {
42
+ background-color: rgb(168, 168, 168);
43
+ }
44
+ width: calc(50% - 10px);
45
+ &:last-of-type {
46
+ margin-left: 10px;
47
+ }
48
+ }
49
+
42
50
  }
43
51
  @include mobile {
44
52
  bottom: 0;
@@ -9,8 +9,8 @@ h1 {
9
9
  padding: 0.5em;
10
10
  }
11
11
 
12
- h2, h2, h3 a {
13
- font-weight: 600;
12
+ h2, h3 a {
13
+ font-weight: 500;
14
14
  font-size: 1.4em;
15
15
  line-height: 1.4em;
16
16
  color: $black;
@@ -30,12 +30,12 @@ body {
30
30
  }
31
31
  main {
32
32
  .content-container {
33
- margin: 3.5em auto 0 auto;
33
+ margin: 3.5em auto 0 0;
34
34
  width: 90%;
35
35
  padding: 0px 18px 24px;
36
36
  flex-grow: 1;
37
37
  position: relative;
38
- p {
38
+ p, li {
39
39
  @include hyperlink-convention();
40
40
  }
41
41
  .content-separator {
@@ -46,18 +46,49 @@ main {
46
46
  margin: $gap auto 0 auto;
47
47
  }
48
48
  }
49
+ fieldset {
50
+ border: none;
51
+ padding: 0;
52
+ margin-bottom: 1em;
53
+ }
54
+ }
55
+
56
+ .pager {
57
+ margin-top: 40px;
58
+ height: 60px;
59
+ width: 100%;
60
+ li {
61
+ position: absolute;
62
+ display: inline;
63
+ padding: 8px;
64
+ margin: 10px;
65
+ &.previous {
66
+ left: 0;
67
+ }
68
+ &.next {
69
+ right: 0;
70
+ }
71
+ & > a {
72
+ color: $p_text;
73
+ @include underline-on-hover($black);
74
+ }
75
+ }
49
76
  }
50
77
  }
78
+
51
79
  a {
52
80
  text-decoration-line: none;
53
81
  color: inherit;
54
82
  transition: all 0.4s ease-in-out 0s;
55
83
  }
56
-
57
84
  a, p, li {
58
85
  font-size: 1.1em;
59
86
  }
60
87
 
88
+ li {
89
+ margin-left: 1em;
90
+ }
91
+
61
92
  hr {
62
93
  margin-top: 2em;
63
94
  margin-bottom: 0.5em;
@@ -70,6 +101,7 @@ img {
70
101
  display: inline-block;
71
102
  margin: 0;
72
103
  vertical-align: top;
104
+ object-fit: cover;
73
105
  }
74
106
 
75
107
  @include mobile {
@@ -83,6 +115,7 @@ img {
83
115
  .content-container {
84
116
  width: 100%;
85
117
  padding: 0px 9px 12px;
118
+ margin-top: 0;
86
119
  }
87
120
  }
88
121
  }
@@ -101,8 +134,6 @@ audio {
101
134
  color: #000000;
102
135
  a {
103
136
  font-size: 0.9em;
104
- &:hover {
105
- text-decoration: underline;
106
- }
137
+ @include underline-on-hover($black);
107
138
  }
108
- }
139
+ }
@@ -8,6 +8,8 @@
8
8
  width: 20vw;
9
9
  height: 20vw;
10
10
  border: 1px solid #CCC;
11
+ max-width: 500px;
12
+ max-height: 500px;
11
13
  &-wrapper {
12
14
  display: block;
13
15
  margin-right: 0.5em;
@@ -20,8 +22,8 @@
20
22
  padding-bottom: 0.5em;
21
23
  color: $p_text;
22
24
  }
23
- a:hover {
24
- text-decoration: underline $p_text;
25
+ a {
26
+ @include underline-on-hover($p_text);
25
27
  }
26
28
  section {
27
29
  width: 100%;
@@ -31,9 +33,7 @@
31
33
  margin-top: 3vw;
32
34
  font-size: 2em;
33
35
  margin-bottom: 0.6em;
34
- &:hover {
35
- text-decoration: underline;
36
- }
36
+ @include underline-on-hover($p_text);
37
37
  }
38
38
 
39
39
  &_summary {
@@ -13,10 +13,10 @@ main {
13
13
  left: $menu-size;
14
14
  top: 0;
15
15
  @include mobile {
16
- top: $menu-size;
16
+ top: $mobile-menu-height;
17
17
  left: 0;
18
18
  width: 100%;
19
- height: calc(100% - #{$menu-size});
19
+ height: calc(100% - #{$mobile-menu-height});
20
20
  }
21
21
  &.no-menu {
22
22
  width: 100%;
@@ -13,29 +13,89 @@
13
13
  width: $menu-size;
14
14
  box-sizing: border-box;
15
15
  padding: 8px 0 0 22px;
16
-
16
+ overflow: hidden;
17
+ @include mobile {
18
+ flex-direction: row;
19
+ width: 100%;
20
+ max-height: $mobile-menu-height;
21
+ }
22
+ &.expanded {
23
+ z-index: 10;
24
+ .menu-top_expand {
25
+ .bar_top {
26
+ -webkit-transform: rotate(-45deg) translate(-8px, 8px);
27
+ transform: rotate(-45deg) translate(-8px, 8px);
28
+ }
29
+
30
+ .bar_middle {opacity: 0;}
31
+
32
+ .bar_bottom {
33
+ -webkit-transform: rotate(45deg) translate(-8px, -8px);
34
+ transform: rotate(45deg) translate(-8px, -8px);
35
+ }
36
+ }
37
+ .navigation {
38
+ @include mobile {
39
+ display: block;
40
+ position: fixed;
41
+ left: 0;
42
+ top: $mobile-menu-height;
43
+ height: calc(100% - #{$mobile-menu-height});
44
+ width: 100%;
45
+ background-color: $white;
46
+ padding-left: 2em;
47
+ }
48
+ }
49
+ .menu-contact {
50
+ display: flex;
51
+ position: fixed;
52
+ bottom: 0.5em;
53
+ left: 1em;
54
+ }
55
+ }
17
56
  &-top {
18
57
  box-sizing: border-box;
19
58
  height: 100%;
20
59
  flex-grow: 1;
21
- padding-left: 3px;
22
60
  padding-right: 3px;
23
-
24
61
  &_logo {
25
62
  max-width: 100px;
63
+ margin-bottom: 1em;
26
64
  a {
27
65
  color: #000000;
28
66
  img {
29
- max-height: 100%;
67
+ max-height: 100px;
68
+ @include mobile {
69
+ max-height: calc(#{$mobile-menu-height} - 15px);
70
+ }
30
71
  width: auto;
31
72
  max-width: 100%;
32
73
  border: 0;
33
74
  }
34
75
  }
35
76
  }
77
+ &_expand {
78
+ display: none;
79
+ @include mobile {
80
+ display: inline-block;
81
+ }
82
+ cursor: pointer;
83
+ flex-grow: 0;
84
+ position: absolute;
85
+ right: 10px;
86
+ top: 15px;
87
+ .bar_top, .bar_middle, .bar_bottom {
88
+ width: 35px;
89
+ height: 5px;
90
+ background-color: #333;
91
+ margin: 6px 0;
92
+ transition: 0.4s;
93
+ }
94
+ }
36
95
  }
37
96
  ul, ol, dl {
38
97
  li, dt {
98
+ margin-left: 0;
39
99
  list-style: none;
40
100
  margin-bottom: 8px;
41
101
  margin-top: 8px;
@@ -47,10 +107,11 @@
47
107
  display: flex;
48
108
  font-weight: 400;
49
109
  letter-spacing: 3px;
50
-
110
+ font-size: 1em;
51
111
  &:hover {
52
- color: $black;
53
-
112
+ transition: all 0.3s ease-in-out 0s;
113
+ color: $p_light;
114
+ text-decoration: none;
54
115
  }
55
116
  &.selected {
56
117
  font-weight: 600;
@@ -59,15 +120,29 @@
59
120
  i {
60
121
  margin-right: 5px;
61
122
  }
123
+
124
+ span {
125
+ max-width: 100%;
126
+ hyphens: auto;
127
+ }
62
128
  }
63
129
  }
64
130
  }
65
131
 
132
+ .navigation {
133
+ @include mobile {
134
+ display: none;
135
+ }
136
+ }
137
+
66
138
  &-contact {
67
139
  display:flex;
68
140
  justify-content:left;
69
- margin-bottom: 1em;
141
+ margin-bottom: 0.6em;
70
142
  flex-wrap: wrap;
143
+ @include mobile {
144
+ display: none;
145
+ }
71
146
  a {
72
147
  color: $p_text;
73
148
  cursor:pointer;
@@ -82,4 +157,6 @@
82
157
  }
83
158
  }
84
159
  }
160
+
161
+
85
162
  }
@@ -67,9 +67,7 @@
67
67
  }
68
68
  a {
69
69
  color: $p_text;
70
- &:hover {
71
- text-decoration: underline $p_text;
72
- }
70
+ @include underline-on-hover($p_text);
73
71
  }
74
72
  }
75
73
 
@@ -87,7 +85,6 @@
87
85
  }
88
86
 
89
87
  a {
90
- color: #19005e;
91
88
  font-size: 1em;
92
89
  }
93
90
  }
@@ -7,6 +7,13 @@ $image-dim: 192px;
7
7
  justify-content: flex-start;
8
8
  align-items: flex-start;
9
9
  color: $p_text;
10
+ hr {
11
+ @include mobile {
12
+ &:first-of-type {
13
+ margin-top: 0;
14
+ }
15
+ }
16
+ }
10
17
  article {
11
18
  width: 100%;
12
19
  position: relative;
@@ -22,8 +29,15 @@ $image-dim: 192px;
22
29
  }
23
30
  a {
24
31
  line-height: 1.1em;
32
+ text-decoration: underline;
33
+ text-decoration-color: transparent;
34
+ transition: 0.4s;
35
+ -webkit-text-decoration-color: transparent;
36
+ -moz-text-decoration-color: transparent;
25
37
  &:hover {
26
- text-decoration: underline $black;
38
+ text-decoration-color: $black;
39
+ -webkit-text-decoration-color: $black;
40
+ -moz-text-decoration-color: $black;
27
41
  }
28
42
  }
29
43
  .article-date {
@@ -46,4 +60,14 @@ $image-dim: 192px;
46
60
  border: 0;
47
61
  margin: auto;
48
62
  }
63
+
64
+
65
+ .discography-album {
66
+ &_title {
67
+ display: none;
68
+ }
69
+ &_summary {
70
+ margin-top: 3vw;;
71
+ }
72
+ }
49
73
  }
@@ -1,4 +1,5 @@
1
1
  $black: #000000;
2
2
  $white: #FFF;
3
- $hyperlink: #4400ff;
3
+ $hyperlink: #290099;
4
4
  $p_text: #000000;
5
+ $p_light: #888888;
@@ -1,6 +1,7 @@
1
1
  $tablet-width: 768px;
2
2
  $desktop-width: 1024px;
3
- $menu-size: 200px;
3
+ $menu-size: 240px;
4
+ $mobile-menu-height: 75px;
4
5
  $minimal-menu-size: 50px;
5
6
  $gap: 30px;
6
7
  $pop-ups-z-1: 100;
@@ -1,3 +1,16 @@
1
+ @mixin underline-on-hover($underline-color) {
2
+ text-decoration: underline;
3
+ text-decoration-color: transparent;
4
+ transition: 0.4s;
5
+ -webkit-text-decoration-color: transparent;
6
+ -moz-text-decoration-color: transparent;
7
+ &:hover {
8
+ text-decoration-color: $underline-color;
9
+ -webkit-text-decoration-color: $underline-color;
10
+ -moz-text-decoration-color: $underline-color;
11
+ }
12
+ }
13
+
1
14
  @mixin tooltip {
2
15
  position: relative;
3
16
  &:hover .tooltip {
@@ -35,13 +48,8 @@
35
48
 
36
49
  @mixin hyperlink-convention {
37
50
  a {
38
- transition: all 300ms ease 0s;
39
51
  cursor: pointer;
40
- text-decoration-line: none;
52
+ @include underline-on-hover($hyperlink);
41
53
  color: $hyperlink;
42
- &:hover {
43
- text-decoration: underline $hyperlink;
44
-
45
- }
46
54
  }
47
55
  }
Binary file
Binary file
data/pages/about.html CHANGED
@@ -3,9 +3,63 @@ layout: default
3
3
  title: About
4
4
  permalink: about.html
5
5
  category: about
6
-
7
6
  ---
8
7
  <div class="content-container about">
9
8
  <h1>About</h1>
10
- It's a good place to write something about the project!
11
- </div>
9
+ It's a good place to write something about the project. This projects repository is located on <a
10
+ href="https://github.com/ItsMeaga1n/minimal-music-project" target="_blank">GitHub</a>. Since you are here, feel
11
+ free to check out my other stuff either on <a href="https://github.com/ItsMeaga1n" target="_blank">GitHub</a> or on
12
+ my <a href="http://itsmeaga1n.github.io" target="_blank">blog</a>!
13
+
14
+ <hr />
15
+ <p>
16
+ Listen and get music from this example project at:
17
+ <ul>
18
+ <li>
19
+ <a>
20
+ YouTube
21
+ <i class="fab fa-youtube"></i>
22
+ </a>
23
+ </li>
24
+ <li>
25
+ <a>
26
+ SoundCloud
27
+ <i class="fab fa-soundcloud"></i>
28
+ </a>
29
+ </li>
30
+ <li>
31
+ <a>
32
+ BandCamp
33
+ <i class="fab fa-bandcamp"></i>
34
+ </a>
35
+ </li>
36
+ </ul>
37
+ </p>
38
+ <hr />
39
+ <a href="/privacy-policy">
40
+ Privacy Policy
41
+ </a>
42
+ /
43
+ <a href="/cookies">
44
+ Cookies
45
+ </a>
46
+ </div>
47
+
48
+ <style>
49
+ a {
50
+ text-decoration: underline;
51
+ text-decoration-color: transparent;
52
+ transition: 0.4s;
53
+ -webkit-text-decoration-color: transparent;
54
+ -moz-text-decoration-color: transparent;
55
+ cursor: pointer;
56
+ color: #290099;
57
+ }
58
+
59
+ a:hover {
60
+ text-decoration-color: #290099;
61
+ transition: 0.4s;
62
+ -webkit-text-decoration-color: #290099;
63
+ -moz-text-decoration-color: #290099;
64
+ }
65
+ </style>
@@ -0,0 +1,9 @@
1
+ ---
2
+ layout: cookies
3
+ title: Manage your data
4
+ permalink: cookies
5
+ category: about
6
+ ---
7
+ <h1>Manage your data</h1>
8
+ <p>This website uses cookies to provide you with the best user experience.</p>
9
+ <p>Below are checkboxes, that you need to confirm in order to enable/disable specific data collection. Some of them might be needed for specific functionalities on site.</p>
@@ -0,0 +1,10 @@
1
+ ---
2
+ layout: default
3
+ title: Privacy Policy
4
+ permalink: privacy-policy
5
+ category: about
6
+ ---
7
+ <div class="content-container about">
8
+ <h1>Privacy Policy</h1>
9
+ Put your privacy policy here
10
+ </div>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minimal-music-project
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patryk Bieszke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-31 00:00:00.000000000 Z
11
+ date: 2021-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -39,14 +39,18 @@ files:
39
39
  - _data/menu.yml
40
40
  - _data/metaData.yml
41
41
  - _includes/common-head.html
42
+ - _includes/common.js
42
43
  - _includes/cookies.js
43
- - _includes/customizations.html
44
+ - _includes/customizationsScripts.html
45
+ - _includes/customizationsStyles.html
44
46
  - _includes/discography-entry-metadata.html
45
47
  - _includes/discography-entry.html
46
48
  - _includes/footer.html
47
49
  - _includes/menu.html
48
50
  - _includes/music-player.html
51
+ - _includes/pagination-buttons.html
49
52
  - _includes/read-more.html
53
+ - _layouts/cookies.html
50
54
  - _layouts/default.html
51
55
  - _layouts/discography.html
52
56
  - _layouts/post.html
@@ -58,9 +62,9 @@ files:
58
62
  - _sass/styles/_index.scss
59
63
  - _sass/styles/_layout.scss
60
64
  - _sass/styles/_menu.scss
65
+ - _sass/styles/_music-player.scss
61
66
  - _sass/styles/_post.scss
62
67
  - _sass/styles/_posts_feed.scss
63
- - _sass/styles/music-player.scss
64
68
  - _sass/variables/_colors.scss
65
69
  - _sass/variables/_index.scss
66
70
  - _sass/variables/_layout.scss
@@ -83,7 +87,8 @@ files:
83
87
  - assets/img/z-is-for-zero.png
84
88
  - assets/styles/styles.scss
85
89
  - pages/about.html
86
- - pages/collaborations.html
90
+ - pages/cookies.html
91
+ - pages/privacyPolicy.html
87
92
  homepage: https://github.com/ItsMeaga1n/minimal-music-project
88
93
  licenses:
89
94
  - MIT
@@ -1,15 +0,0 @@
1
- {% for javascript in page.custom-js %}
2
- <script src="{{ javascript }}"></script>
3
- {% endfor %}
4
-
5
- {% for javascript in site.data.customs.custom-js %}
6
- <script src="{{ javascript }}"></script>
7
- {% endfor %}
8
-
9
- {% for css in page.custom-css %}
10
- <link href="{{ css }}" rel="stylesheet">
11
- {% endfor %}
12
-
13
- {% for css in site.data.customs.custom-css %}
14
- <link href="{{ css }}" rel="stylesheet">
15
- {% endfor %}
@@ -1,7 +0,0 @@
1
- ---
2
- layout: discography
3
- title: Collaborations
4
- permalink: collaborations.html
5
- category: collaborations
6
- ---
7
- Content of a custom page. Under the content will be a list of posts of a chosen category.