insights4you-jekyll-theme 0.1.1 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0415748d22dacd4f5199419335aa1b7ee7200af2f830edd4b977cffcd2491b8
4
- data.tar.gz: e0c264681a60d3cede7e351ca65e04a85e9440d1c2e310116b2806ee5a18c59e
3
+ metadata.gz: 3b1fb0a09c09bea65e66d227a87d457a2c07a1992ecf990704baa0f2b3a72cc4
4
+ data.tar.gz: d837a99c62fcfe008bea93d44cac410ddad97c901980f5a6503c257e1a4ab48c
5
5
  SHA512:
6
- metadata.gz: f82fb6a43394d5edbd5cd728c70feb7e253ae0c766a9837a87c924ad4176144f190ede139efb54b2ce132b1af50bab26bbd020c617970b2b330b0fe89db498f9
7
- data.tar.gz: a43f3f5cbb2828a437e8dbbb138c1d3b0b621795b7280cb8a23d181f733e1e6aeea3e5eb38e75f43656a3a23de589fbbf0faf1bc1276f1e244d263f1e28c163c
6
+ metadata.gz: 5d97e2a13ac71bc6bf9e2e3a63e17c2981cd52e2651ace5a17fc509c75e7765b81fac3478126ff7605f7111fe92ed2eca194b085b0e961b9c76b69b6204e616e
7
+ data.tar.gz: f3e86d977c3b267eb161580660c0eed529c95a4a849b16f8028adb09171ac35900979a2b7377f8c3cf75691c8f0722ee2601477f73bc2119bc305ed5526ad2cd
data/README.md CHANGED
@@ -4,17 +4,51 @@
4
4
  <!-- markdownlint-disable-next-line -->
5
5
  # Insights4YOU Jekyll Theme
6
6
 
7
- A sleek and modern Jekyll theme inspired by the [Tabler Admin Dashboard](https://github.com/tabler), designed to bring a clean, professional, and responsive interface to your Jekyll-powered websites and GitHub Pages. This theme is perfect for developers, content creators, or businesses looking to create documentation sites, admin panels, or project showcases with minimal effort.
7
+ A sleek and modern Jekyll theme inspired by the [Tabler Admin Dashboard](https://github.com/tabler). This theme offers a clean, professional, and responsive interface, making it ideal for developers, content creators, and businesses. Whether you're building documentation sites, admin panels, or project showcases, this theme provides a minimal-effort solution with customizable layouts and modern design elements.
8
8
 
9
- [![GitHub license](https://img.shields.io/github/license/marciopaiva/insights4you-jekyll-theme?color=goldenrod)][license]&nbsp;
10
- [![Codacy Badge](https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy)][codacy]&nbsp;
11
- [![Gem Version](https://img.shields.io/gem/v/insights4you-jekyll-theme?&logo=RubyGems&logoColor=ghostwhite&label=gem&color=orange)][gem]&nbsp;
9
+ ![Theme Preview](https://via.placeholder.com/800x400?text=Insights4You+Theme+Preview)
10
+
11
+ [![last commit](https://img.shields.io/github/last-commit/marciopaiva/insights4you-jekyll-theme?logo=github)][repo]&nbsp;
12
+ [![gem build](https://github.com/marciopaiva/insights4you-jekyll-theme/actions/workflows/gem-build.yml/badge.svg)][build]&nbsp;
13
+ [![codacy badge](https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy)][codacy]&nbsp;
14
+ [![gem version](https://img.shields.io/gem/v/insights4you-jekyll-theme?&logo=rubygems&logocolor=ghostwhite&label=gem&color=orange)][gem]&nbsp;
15
+ [![downloads](https://img.shields.io/gem/dt/insights4you-jekyll-theme?logo=rubygems&color=blue)][gem]&nbsp;
16
+ [![ruby version](https://img.shields.io/badge/ruby-~%3E%203.1-red?logo=ruby)][gem]
17
+ [![github license](https://img.shields.io/github/license/marciopaiva/insights4you-jekyll-theme?color=goldenrod)][license]&nbsp;
12
18
  </div>
13
19
 
14
20
  ## Features
15
21
 
16
- - Dark and Light Themes.
22
+ - 🌙 **Dark and Light Themes**: Switch between dark and light modes for a personalized experience.
23
+ - 📱 **Responsive Design**: Fully optimized for mobile, tablet, and desktop devices.
24
+ - 🔧 **Customizable Layouts**: Easily modify layouts to suit your needs.
25
+ - 🚀 **SEO Optimized**: Built-in support for Jekyll SEO tags to improve search engine visibility.
26
+ - 📦 **Gem-Based Installation**: Simple installation via RubyGems.
27
+ - 📝 **Markdown Support**: Write content using Markdown for simplicity and flexibility.
28
+ - 🎨 **Modern Design**: Inspired by the Tabler Admin Dashboard for a sleek and professional look.
29
+ - 📊 **Analytics Ready**: Add analytics scripts easily for tracking user interactions.
30
+
31
+ ## Example Site
32
+
33
+ To see the theme in action, check out the included example site:
34
+
35
+ ```bash
36
+ # Clone the repository
37
+ git clone https://github.com/marciopaiva/insights4you-jekyll-theme.git
38
+
39
+ # Navigate to example directory
40
+ cd insights4you-jekyll-theme/example-site
41
+
42
+ # Install dependencies
43
+ bundle install
44
+
45
+ # Serve the site locally
46
+ bundle exec jekyll serve
47
+ ```
17
48
 
18
49
  [gem]: https://rubygems.org/gems/insights4you-jekyll-theme
19
50
  [codacy]: https://app.codacy.com/gh/marciopaiva/insights4you-jekyll-theme/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
20
51
  [license]: https://github.com/marciopaiva/insights4you-jekyll-theme/blob/master/LICENSE
52
+ [build]: https://github.com/marciopaiva/insights4you-jekyll-theme/actions/workflows/gem-build.yml
53
+ [repo]: https://github.com/marciopaiva/insights4you-jekyll-theme
54
+ [issues]: https://github.com/marciopaiva/insights4you-jekyll-theme/issues
@@ -4,13 +4,13 @@
4
4
  <div class="row text-center align-items-center flex-row-reverse">
5
5
  <div class="col-lg-auto ms-lg-auto">
6
6
  <ul class="list-inline list-inline-dots mb-0">
7
- <li class="list-inline-item"><a href="https://tabler.io/docs" target="_blank" class="link-secondary" rel="noopener">Documentation</a></li>
8
- <li class="list-inline-item"><a href="./license.html" class="link-secondary">License</a></li>
7
+ <li class="list-inline-item"><a href="https://github.com/marciopaiva/insights4you-jekyll-theme/wiki" target="_blank" class="link-secondary" rel="noopener">Documentation</a></li>
8
+ <li class="list-inline-item"><a href="https://github.com/marciopaiva/insights4you-jekyll-theme?tab=MIT-1-ov-file" class="link-secondary">License</a></li>
9
9
  <li class="list-inline-item">
10
- <a href="https://github.com/tabler/tabler" target="_blank" class="link-secondary" rel="noopener">Source code</a>
10
+ <a href="https://github.com/marciopaiva/insights4you-jekyll-theme" target="_blank" class="link-secondary" rel="noopener">Source code</a>
11
11
  </li>
12
12
  <li class="list-inline-item">
13
- <a href="https://github.com/sponsors/codecalm" target="_blank" class="link-secondary" rel="noopener">
13
+ <a href="https://github.com/sponsors/marciopaiva" target="_blank" class="link-secondary" rel="noopener">
14
14
  <!-- Download SVG icon from http://tabler.io/icons/icon/heart -->
15
15
  <svg
16
16
  xmlns="http://www.w3.org/2000/svg"
@@ -35,10 +35,7 @@
35
35
  <ul class="list-inline list-inline-dots mb-0">
36
36
  <li class="list-inline-item">
37
37
  Copyright &copy; 2025
38
- <a href="." class="link-secondary">Tabler</a>. All rights reserved.
39
- </li>
40
- <li class="list-inline-item">
41
- <a href="./changelog.html" class="link-secondary" rel="noopener"> v1.1.1 </a>
38
+ <a href="." class="link-secondary">Insights4YOU</a>. All rights reserved.
42
39
  </li>
43
40
  </ul>
44
41
  </div>
@@ -0,0 +1,63 @@
1
+ <!-- head.html -->
2
+ <head>
3
+ <!-- Dynamic Variables -->
4
+ {% assign title = page.title | default: site.title | escape %}
5
+ {% assign description = page.description | default: site.description | strip_html | strip_newlines | truncate: 160 %}
6
+ {% assign image = page.image | default: site.author.image %}
7
+
8
+ {% if page.name and page.collection == 'projects' %}
9
+ {% assign title = page.name | escape %}
10
+ {% endif %}
11
+
12
+ <!-- Basic Meta Tags -->
13
+ <meta charset="utf-8">
14
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
15
+ <meta name="viewport" content="width=device-width, initial-scale=1">
16
+ <meta name="theme-color" content="#ffffff">
17
+ <meta name="robots" content="index, follow">
18
+
19
+ <!-- Open Graph Meta Tags -->
20
+ <meta property="og:type" content="website">
21
+ <meta property="og:title" content="{{ title }}">
22
+ <meta property="og:description" content="{{ description }}">
23
+ <meta property="og:image" content="{{ image }}">
24
+ <meta property="og:url" content="{{ page.url | absolute_url }}">
25
+
26
+ <!-- Twitter Meta Tags -->
27
+ <meta name="twitter:card" content="summary_large_image">
28
+ <meta name="twitter:title" content="{{ title }}">
29
+ <meta name="twitter:description" content="{{ description }}">
30
+ <meta name="twitter:image" content="{{ image }}">
31
+
32
+ <!-- Canonical URL -->
33
+ <link rel="canonical" href="{{ page.url | absolute_url }}">
34
+
35
+ <!-- Favicon -->
36
+ <link rel="shortcut icon" type="image/x-icon" href="{{ '/assets/images/favicon.ico' | relative_url }}">
37
+ <link rel="apple-touch-icon" sizes="180x180" href="{{ '/assets/images/apple-touch-icon.png' | relative_url }}">
38
+ <link rel="icon" type="image/png" sizes="32x32" href="{{ '/assets/images/favicon-32x32.png' | relative_url }}">
39
+ <link rel="icon" type="image/png" sizes="16x16" href="{{ '/assets/images/favicon-16x16.png' | relative_url }}">
40
+ <link rel="manifest" href="{{ '/assets/images/site.webmanifest' | relative_url }}">
41
+
42
+ <!-- Preload External Resources -->
43
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@1.1.1/dist/css/tabler.min.css" />
44
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@1.1.1/dist/css/tabler-flags.min.css" />
45
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@1.1.1/dist/css/tabler-payments.min.css" />
46
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@1.1.1/dist/css/tabler-social.min.css" />
47
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@1.1.1/dist/css/tabler-vendors.min.css" />
48
+ {% if site.useIconfont %}
49
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.31.0/dist/tabler-icons.min.css" />
50
+ {% endif %}
51
+
52
+ <!-- Google Fonts -->
53
+ <link rel="preconnect" href="https://fonts.googleapis.com">
54
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
55
+ <link href="https://fonts.googleapis.com/css2?family=Akronim&family=DynaPuff:wght@400..700&family=Nova+Square&family=Syne+Mono&display=swap" rel="stylesheet">
56
+
57
+ <!-- Stylesheets -->
58
+ <link rel="stylesheet" href="{{ '/assets/css/theme.min.css' | relative_url }}">
59
+
60
+ <!-- Title and Description -->
61
+ <title>{{ page.title }} | {{ site.title }}</title>
62
+ <meta name="description" content="{{ description }}">
63
+ </head>
@@ -0,0 +1,179 @@
1
+ <!-- BEGIN NAVBAR -->
2
+ <header class="navbar navbar-expand-md d-print-none">
3
+ <div class="container-xl">
4
+ <!-- BEGIN NAVBAR TOGGLER -->
5
+ <button
6
+ class="navbar-toggler"
7
+ type="button"
8
+ data-bs-toggle="collapse"
9
+ data-bs-target="#navbar-menu"
10
+ aria-controls="navbar-menu"
11
+ aria-expanded="false"
12
+ aria-label="Toggle navigation"
13
+ title="Toggle Menu"
14
+ >
15
+ <span class="navbar-toggler-icon"></span>
16
+ </button>
17
+ <!-- END NAVBAR TOGGLER -->
18
+
19
+ <!-- BEGIN NAVBAR LOGO (SVG com fallback) -->
20
+ <div class="navbar-brand navbar-brand-autodark d-none-navbar-horizontal pe-0 pe-md-3">
21
+ <a href="{{ '/' | relative_url }}">
22
+ {% include header-svg.html %}
23
+ </a>
24
+ </div>
25
+ <!-- END NAVBAR LOGO -->
26
+
27
+ <!-- BEGIN NAVBAR ICONS -->
28
+ <div class="navbar-nav flex-row order-md-last">
29
+ <!-- Botão do GitHub -->
30
+ <div class="nav-item d-none d-md-flex me-3">
31
+ <a
32
+ href="https://github.com/marciopaiva/insights4you-jekyll-theme"
33
+ class="btn btn-5"
34
+ target="_blank"
35
+ rel="noopener noreferrer"
36
+ aria-label="View Source Code on GitHub"
37
+ >
38
+ <svg
39
+ xmlns="http://www.w3.org/2000/svg"
40
+ width="24"
41
+ height="24"
42
+ viewBox="0 0 24 24"
43
+ stroke="currentColor"
44
+ fill="none"
45
+ class="icon icon-tabler icon-tabler-brand-github"
46
+ >
47
+ <path stroke="none" d="M0 0h24v24H0z" />
48
+ <path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" />
49
+ </svg>
50
+ Source code
51
+ </a>
52
+ </div>
53
+
54
+ <!-- Botões de Tema -->
55
+ <div class="nav-item d-none d-md-flex">
56
+ <a
57
+ href="?theme=dark"
58
+ class="nav-link px-0 hide-theme-dark"
59
+ title="Dark Mode"
60
+ onclick="toggleTheme('dark')"
61
+ aria-label="Dark Mode"
62
+ >
63
+ <svg
64
+ xmlns="http://www.w3.org/2000/svg"
65
+ width="24"
66
+ height="24"
67
+ viewBox="0 0 24 24"
68
+ stroke="currentColor"
69
+ fill="none"
70
+ class="icon icon-1"
71
+ >
72
+ <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
73
+ </svg>
74
+ </a>
75
+ <a
76
+ href="?theme=light"
77
+ class="nav-link px-0 hide-theme-light"
78
+ title="Light Mode"
79
+ onclick="toggleTheme('light')"
80
+ aria-label="Light Mode"
81
+ >
82
+ <svg
83
+ xmlns="http://www.w3.org/2000/svg"
84
+ width="24"
85
+ height="24"
86
+ viewBox="0 0 24 24"
87
+ stroke="currentColor"
88
+ fill="none"
89
+ class="icon icon-1"
90
+ >
91
+ <path d="M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" />
92
+ <path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7" />
93
+ </svg>
94
+ </a>
95
+ </div>
96
+
97
+ <!-- Notificações Estáticas -->
98
+ <div class="nav-item dropdown d-none d-md-flex me-3">
99
+ <a
100
+ href="#"
101
+ class="nav-link px-0"
102
+ data-bs-toggle="dropdown"
103
+ aria-label="Show Notifications"
104
+ >
105
+ <svg class="icon icon-1" width="24" height="24" viewBox="0 0 24 24" stroke="currentColor" fill="none">
106
+ <path d="M10 5a2 2 0 1 1 4 0a7 7 0 0 1 4 6v3a4 4 0 0 0 2 3h-16a4 4 0 0 0 2 -3v-3a7 7 0 0 1 4 -6" />
107
+ <path d="M9 17v1a3 3 0 0 0 6 0v-1" />
108
+ </svg>
109
+ <span id="notification-badge" class="badge bg-red"></span>
110
+ </a>
111
+ <div class="dropdown-menu dropdown-menu-arrow dropdown-menu-end dropdown-menu-card">
112
+ <div class="card">
113
+ <div class="card-header">
114
+ <h3 class="card-title">Last Updates</h3>
115
+ </div>
116
+ <div id="notifications-list" class="list-group list-group-flush"></div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </header>
123
+
124
+ <!-- Script para Carregar Notificações -->
125
+
126
+ <script>
127
+ document.addEventListener('DOMContentLoaded', async () => {
128
+ const notificationsList = document.getElementById('notifications-list');
129
+ const badge = document.getElementById('notification-badge');
130
+
131
+ if (!notificationsList || !badge) return;
132
+
133
+ // Dados locais (via Jekyll)
134
+ const localNotifications = {{ site.data.notifications | jsonify }};
135
+
136
+ // Busca notificações remotas (YAML do GitHub)
137
+ let remoteNotifications = [];
138
+ try {
139
+ const response = await fetch('https://raw.githubusercontent.com/marciopaiva/insights4you-jekyll-theme/main/_data/notifications.yml');
140
+ if (response.ok) {
141
+ const yamlText = await response.text();
142
+ remoteNotifications = jsyaml.load(yamlText) || [];
143
+ }
144
+ } catch (error) {
145
+ console.error('Erro ao buscar notificações remotas:', error);
146
+ }
147
+
148
+ // Combina e ordena (remoto + local)
149
+ const allNotifications = [...remoteNotifications, ...localNotifications]
150
+ .sort((a, b) => new Date(b.date) - new Date(a.date)) // Ordena por data
151
+ .slice(0, 5); // Limita a 5 notificações
152
+
153
+ // Renderiza
154
+ badge.textContent = allNotifications.length;
155
+ allNotifications.forEach(notification => {
156
+ const item = `
157
+ <div class="list-group-item">
158
+ <div class="row align-items-center">
159
+ <div class="col-auto">
160
+ <span class="status-dot bg-${notification.color || 'blue'} d-block"></span>
161
+ </div>
162
+ <div class="col text-truncate">
163
+ <a href="${notification.link}" class="text-body d-block">${notification.title}</a>
164
+ <div class="text-secondary">${notification.description}</div>
165
+ </div>
166
+ <div class="col-auto">
167
+ <a href="${notification.link}" class="list-group-item-actions" target="_blank">
168
+ <svg class="icon text-muted icon-2" viewBox="0 0 24 24" stroke="currentColor" fill="none">
169
+ <path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z" />
170
+ </svg>
171
+ </a>
172
+ </div>
173
+ </div>
174
+ </div>
175
+ `;
176
+ notificationsList.innerHTML += item;
177
+ });
178
+ });
179
+ </script>
@@ -0,0 +1,69 @@
1
+ <!-- BEGIN NAVBAR -->
2
+ <header class="navbar-expand-md">
3
+ <div class="collapse navbar-collapse" id="navbar-menu">
4
+ <div class="navbar">
5
+ <div class="container-xl">
6
+ <div class="row flex-fill align-items-center">
7
+ <div class="col">
8
+ <!-- BEGIN NAVBAR MENU -->
9
+ <ul class="navbar-nav page-center">
10
+ <li class="nav-item active">
11
+ <a class="nav-link" href="./">
12
+ <span class="nav-link-icon d-md-none d-lg-inline-block">
13
+ <!-- Download SVG icon from http://tabler.io/icons/icon/home -->
14
+ <svg
15
+ xmlns="http://www.w3.org/2000/svg"
16
+ width="24"
17
+ height="24"
18
+ viewBox="0 0 24 24"
19
+ fill="none"
20
+ stroke="currentColor"
21
+ stroke-width="2"
22
+ stroke-linecap="round"
23
+ stroke-linejoin="round"
24
+ class="icon icon-1"
25
+ >
26
+ <path d="M5 12l-2 0l9 -9l9 9l-2 0" />
27
+ <path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" />
28
+ <path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" />
29
+ </svg>
30
+ </span>
31
+ <span class="nav-link-title"> Home </span>
32
+ </a>
33
+ </li>
34
+ <li class="nav-item">
35
+ <a class="nav-link" href="./">
36
+ <span class="nav-link-icon d-md-none d-lg-inline-block">
37
+ <svg
38
+ xmlns="http://www.w3.org/2000/svg"
39
+ width="24"
40
+ height="24"
41
+ viewBox="0 0 24 24"
42
+ fill="none"
43
+ stroke="currentColor"
44
+ stroke-width="2"
45
+ stroke-linecap="round"
46
+ stroke-linejoin="round"
47
+ class="icon icon-tabler icons-tabler-outline icon-tabler-shield-heart"
48
+ >
49
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
50
+ <path
51
+ d="M12 21a12 12 0 0 1 -8.5 -15a12 12 0 0 0 8.5 -3a12 12 0 0 0 8.5 3a12.01 12.01 0 0 1 .378 5"
52
+ />
53
+ <path
54
+ d="M18 22l3.35 -3.284a2.143 2.143 0 0 0 .005 -3.071a2.242 2.242 0 0 0 -3.129 -.006l-.224 .22l-.223 -.22a2.242 2.242 0 0 0 -3.128 -.006a2.143 2.143 0 0 0 -.006 3.071l3.355 3.296z"
55
+ />
56
+ </svg>
57
+ </span>
58
+ <span class="nav-link-title"> Projetos </span>
59
+ </a>
60
+ </li>
61
+ </ul>
62
+ <!-- END NAVBAR MENU -->
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </header>
69
+ <!-- END NAVBAR -->
@@ -0,0 +1,39 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 4000 500"
4
+ width="300"
5
+ height="50"
6
+ style="color: transparent;"
7
+ >
8
+ <rect
9
+ x="153.607"
10
+ y="155.37"
11
+ fill="null"
12
+ width="201.275"
13
+ height="201.275"
14
+ />
15
+ <g>
16
+ <path
17
+ fill="#d63939"
18
+ d="M354.876,371.827H153.604c-8.388,0-15.191-6.802-15.191-15.191V155.364c0-8.388,6.802-15.191,15.191-15.191h201.272c8.388,0,15.191,6.802,15.191,15.191v201.272C370.067,365.026,363.266,371.827,354.876,371.827z M168.795,341.445h170.891V170.555H168.795V341.445z"
19
+ />
20
+ <path
21
+ fill="#78c3e0"
22
+ d="M421.337,407.906H102.334V104.094h72.915c2.576,0,4.999-0.647,7.124-1.777c6.646-1.621,11.584-7.598,11.584-14.742V16.95c0-8.388-6.802-15.191-15.191-15.191c-8.388,0-15.191,6.802-15.191,15.191v56.763H87.144c-8.388,0-15.191,6.802-15.191,15.191v72.915H15.191C6.802,161.818,0,168.621,0,177.009S6.802,192.2,15.191,192.2h56.763v48.61H45.591c-8.388,0-15.191,6.802-15.191,15.191s6.802,15.191,15.191,15.191h26.362v48.61H15.191C6.802,319.8,0,326.603,0,334.991s6.802,15.191,15.191,15.191h56.763v72.915c0,8.388,6.802,15.191,15.191,15.191h72.915v56.763c0,8.388,6.802,15.191,15.191,15.191c8.388,0,15.191-6.802,15.191-15.191v-56.763h48.61v26.362c0,8.388,6.802,15.191,15.191,15.191c8.388,0,15.191-6.802,15.191-15.191v-26.362h48.61v56.763c0,8.388,6.802,15.191,15.191,15.191s15.191-6.802,15.191-15.191v-56.763h72.915c8.388,0,15.191-6.802,15.191-15.191S429.726,407.906,421.337,407.906z"
23
+ />
24
+ <path
25
+ fill="#1e7eeb"
26
+ d="M496.809,319.8h-56.763v-48.61h26.362c8.388,0,15.191-6.802,15.191-15.191s-6.802-15.191-15.191-15.191h-26.362V192.2h56.763c8.388,0,15.191-6.802,15.191-15.191c0-8.388-6.802-15.191-15.191-15.191h-56.763V88.904c0-8.388-6.802-15.191-15.191-15.191h-72.915V16.95c0-8.388-6.802-15.191-15.191-15.191S321.56,8.562,321.56,16.95v56.763h-48.61V47.351c0-8.388-6.802-15.191-15.191-15.191s-15.191,6.802-15.191,15.191v40.223c0,0.225,0.024,0.444,0.033,0.665c-0.009,0.222-0.033,0.441-0.033,0.665c0,8.388,6.802,15.191,15.191,15.191h151.906v223.285c-1.429,2.241-2.189,4.835-2.189,7.612c0,8.388,6.802,15.191,15.191,15.191h70.624c8.388,0,15.191-6.802,15.191-15.191S501.68,319.8,496.809,319.8z"
27
+ />
28
+ </g>
29
+ <text
30
+ x="600"
31
+ y="400"
32
+ font-family="Nova Square, sans-serif"
33
+ font-size="300"
34
+ font-weight="bold"
35
+ fill="#d63939"
36
+ >
37
+ {{ site.title }}
38
+ </text>
39
+ </svg>
@@ -0,0 +1,30 @@
1
+ {% assign spinner-class = false %}
2
+
3
+ {% assign color = include.color %}
4
+ {% if include.color == false %}
5
+ {% assign color = null %}
6
+ {% endif %}
7
+
8
+ {% assign provider = include.provider | default: 'fe' %}
9
+ {% if include.text %}{% assign spinner-class="me-2" %}{% endif %}
10
+
11
+ {% assign href = '#' %}
12
+ {% if include.href %}
13
+ {% if include.external %}
14
+ {% assign href = include.href %}
15
+ {% else %}
16
+ {% assign href = site.base | append: '/' | append: include.href %}
17
+ {% endif %}
18
+ {% endif %}
19
+
20
+ {% assign e = include.element | default: 'a' %}
21
+ <{{ e }}{% if e == 'a' %} href="{{ href }}"{% endif %}{% if include.type %} type="{{ include.type }}"{% endif %} class="btn{% if include.height %} btn-{{ include.height }}{% endif %}{% if color %} btn-{% if include.outline %}outline-{% elsif include.ghost %}ghost-{% endif %}{{ color }}{% endif %}{% if include.disabled %} disabled{% endif %}{% if include.square %} btn-square{% endif %}{% if include.loading %} btn-loading{% endif %}{% if include.pill %} btn-pill{% endif %}{% if include['size'] %} btn-{{ include['size'] }}{% endif %}{% if include.class %} {{ include.class }}{% endif %}{% if include.block %} w-100{% endif %}{% if include.link %} btn-link{% endif %}{% if include.icon-only %} btn-icon{% endif %}"{% if include.external %} target="_blank" rel="noreferrer"{% endif %}{% if include.modal-id %} data-bs-toggle="modal" data-bs-target="#modal-{{ include.modal-id }}"{% endif %}{% if include.toast-id %} data-bs-toggle="toast" data-bs-target="#toast-{{ include.toast-id }}"{% endif %}{% if include.icon-only %} aria-label="{{ include.text | default: "Button" }}"{% endif %}{% if include.dismiss %} data-bs-dismiss="modal"{% endif %}>
22
+ {% if include.spinner %}
23
+ {% include ui/spinner.html color=false size="sm" class=spinner-class element="span" %}
24
+ {% endif %}
25
+ {% if include.icon %}{% include ui/icon.html icon=include.icon color=include.icon-color %}{% endif %}
26
+ {% unless include.icon-only %}
27
+ {{ include.text | default: "Button" }}{% if include.dots %}<span class="animated-dots"></span>{% endif %}
28
+ {% if include.icon-right %}{% include ui/icon.html icon=include.icon-right class="icon-right" %}{% endif %}
29
+ {% endunless %}
30
+ </{{ e }}>
@@ -0,0 +1,23 @@
1
+ {% assign icon = include.icon | default: "mood-sad" %}
2
+ <div class="empty{% if include.bordered %} empty-bordered{% endif %}{% if include.class %} {{ include.class }}{% endif %}">
3
+
4
+ {% if include.illustration %}
5
+ {% assign illustration = include.illustration | default: 'boy-girl.svg' %}
6
+ <div class="empty-img">{% include ui/illustration.html image=illustration height="256" %}</div>
7
+ {% elsif include.icon-text %}
8
+ <div class="empty-header">{{ include.icon-text }}</div>
9
+ {% else %}
10
+ <div class="empty-icon">{% include ui/icon.html icon=icon %}</div>
11
+ {% endif %}
12
+
13
+
14
+ <p class="empty-title">{{ include.title | default: "No results found" }}</p>
15
+ <p class="empty-subtitle text-secondary">
16
+ {{ include.subtitle | default: "Try adjusting your search or filter to find what you're looking for." }}
17
+ </p>
18
+ <div class="empty-action">
19
+ {% assign button-text = include.button-text | default: "Search again" %}
20
+ {% assign button-icon = include.button-icon | default: "search" %}
21
+ {% include ui/button.html text=button-text color="primary" icon=button-icon href="." %}
22
+ </div>
23
+ </div>
@@ -0,0 +1,33 @@
1
+ {% assign icon-name = include.icon | default: "question-mark" %}
2
+ {% assign icon-type = include.type | default: "outline" %}
3
+
4
+ {% assign replace-to = "icon" %}
5
+
6
+ {% if include.class %}
7
+ {% assign replace-to = replace-to | append: ' ' | append: include.class %}
8
+ {% endif %}
9
+
10
+ {% if include.color %}
11
+ {% assign replace-to = replace-to | append: ' text-' | append: include.color %}
12
+ {% endif %}
13
+
14
+ {% if include.inline %}
15
+ {% assign replace-to = replace-to | append: ' icon-inline' %}
16
+ {% endif %}
17
+
18
+ {% if include['size'] %}
19
+ {% assign replace-to = replace-to | append: ' icon-' | append: include['size'] %}
20
+ {% endif %}
21
+
22
+ {% assign replace-to = 'class="' | append: replace-to | append: '"' %}
23
+
24
+ {% if site.useIconfont %}
25
+ <i class="icon ti ti-{{ icon-name }}{% if include.color %} {{ include.color }}{% endif %}{% if include.class %} {{ include.class }}{% endif %}"></i>
26
+ {% elsif site.data.i4y-icons[icon-name] %}
27
+ {% assign svg-icon = site.data.i4y-icons[icon-name].svg[icon-type] | default: '' %}
28
+ {% assign svg-icon = svg-icon | replace: '<path stroke="none" d="M0 0h24v24H0z" fill="none"/>', '' %}
29
+ {{ svg-icon | replace: 'class="icon"', replace-to }}
30
+ {% else %}
31
+ {% assign error_message = "Error: Icon '" | append: icon-name | append: "' not found or useIconfont is disabled." %}
32
+ <div class="error">{{ error_message }}</div>
33
+ {% endif %}
@@ -0,0 +1,20 @@
1
+ {% assign image = include.image | replace: '.svg', '' %}
2
+ {% assign height = include.height | default: 128 %}
3
+ {% assign width = include.width | default: 128 %}
4
+
5
+ {% assign illustration = site.data.i4y-illustrations.autodark[image] %}
6
+
7
+ {% unless illustration %}
8
+ {% assign error_message = "Error: Illustration '" | append: image | append: "' not found in '_data/i4y-illustrations.json'." %}
9
+ <div class="error">{{ error_message }}</div>
10
+ {% else %}
11
+ {% assign replace-to = '<svg class="img' %}
12
+ {% if include.class %}{% assign replace-to = replace-to | append: ' ' | append: include.class %}{% endif %}
13
+ {% assign replace-to = replace-to | append: '" ' %}
14
+ {% assign illustration = illustration | replace: '<svg ', replace-to %}
15
+
16
+ {% assign replace-to-dimensions = 'width="' | append: width | append: '" height="' | append: height | append: '"' %}
17
+ {% assign illustration = illustration | replace: 'width="800" height="600"', replace-to-dimensions %}
18
+
19
+ {{ illustration }}
20
+ {% endunless %}
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ {% include head.html %}
5
+
6
+ <body{% if layout.body-class or body-class %} class="{% if layout.body-class %} {{ layout.body-class }}{% endif %}{% if body-class %} {{ body-class }}{% endif %}"{% endif %}>
7
+
8
+ {{ content }}
9
+
10
+
11
+ <!-- Tabler JS -->
12
+ <script src="https://cdn.jsdelivr.net/npm/@tabler/core@1.1.1/dist/js/tabler.min.js" defer ></script>
13
+
14
+ <!-- Custom Theme JS -->
15
+ <script src="{{ '/assets/js/theme.js' | relative_url }}" defer></script>
16
+ </body>
17
+ </html>
@@ -0,0 +1,12 @@
1
+ ---
2
+ layout: default
3
+ body-class: border-top-wide border-primary
4
+ ---
5
+
6
+ <div class="page page-center">
7
+ <div class="container-tight py-4">
8
+ {% assign error = errors[page-error] %}
9
+ {% assign header = error.header | default: 'Oops… You just found an error page' %}
10
+ {% include ui/empty.html icon="settings" illustration=error.illustration icon-text=error.title title=header subtitle=error.description button-icon="arrow-left" button-text="Take me home" %}
11
+ </div>
12
+ </div>
@@ -0,0 +1,19 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <!-- Header Include -->
6
+ {% include header-logo.html %}
7
+ {% include header-navbar.html %}
8
+
9
+ <!-- Page Wrapper -->
10
+ <div class="page-wrapper" role="main">
11
+ <div class="page-body">
12
+ <main class="container-xl" role="main" aria-label="Main Content">
13
+ {{ content }}
14
+ </main>
15
+ </div>
16
+ </div>
17
+
18
+ <!-- Footer Include -->
19
+ {% include footer.html %}