aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2022-11-03 21:14:50 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2022-11-03 21:14:50 +0100
commit8282239d1cf73ed8e992dc121f45df29fcb2c872 (patch)
treee8345e8449c8a53942efd3eaff3300fe597aa5c2
parentbdc60d7d56b5384f13feaaccef28e63d77f15933 (diff)
downloadmitjafelicijan.com-8282239d1cf73ed8e992dc121f45df29fcb2c872.tar.gz
Move to Tailwind 3
-rwxr-xr-x.gitignore4
-rwxr-xr-x.vscode/settings.json6
-rwxr-xr-xMakefile21
-rw-r--r--package.json21
-rw-r--r--static/general/index.css1197
-rwxr-xr-xstatic/yap/feed.xml53
-rw-r--r--static/yap/images/2022-10-10 22-32-46.pngbin1611602 -> 0 bytes
-rwxr-xr-xstatic/yap/theme.xsl113
-rw-r--r--tailwind.config.js12
-rwxr-xr-xthemes/simple/layouts/partials/head.html6
-rwxr-xr-xthemes/simple/layouts/partials/tailwind.html235
-rw-r--r--themes/simple/static/css/tailwind.css233
12 files changed, 1493 insertions, 408 deletions
diff --git a/.gitignore b/.gitignore
index 07b13ad..b77ef62 100755
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,7 @@ hugo.linux
14 14
15# Openring build 15# Openring build
16themes/simple/layouts/partials/openring.html 16themes/simple/layouts/partials/openring.html
17
18# NodeJS
19node_modules/
20package-lock.json
diff --git a/.vscode/settings.json b/.vscode/settings.json
index ff1c838..2bf2809 100755
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -8,5 +8,9 @@
8 "[xsl]": { 8 "[xsl]": {
9 "editor.formatOnSave": false, 9 "editor.formatOnSave": false,
10 "editor.formatOnPaste": false 10 "editor.formatOnPaste": false
11 } 11 },
12 "[css]": {
13 "editor.formatOnSave": false,
14 "editor.formatOnPaste": false
15 },
12} 16}
diff --git a/Makefile b/Makefile
index 67c54b9..1bd84a3 100755
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,23 @@
1dev: openring 1MAKEFLAGS=-j4
2
3dev: tailwind-watch dev-server
4
5dev-server: openring
2 hugo server --bind=0.0.0.0 --buildDrafts 6 hugo server --bind=0.0.0.0 --buildDrafts
3 7
4deploy: openring 8tailwind-watch:
9 npx tailwindcss \
10 -i ./themes/simple/static/css/tailwind.css \
11 -o ./static/general/index.css \
12 --jit --minify --watch
13
14tailwind-build:
15 npx tailwindcss \
16 -i ./themes/simple/static/css/tailwind.css \
17 -o ./static/general/index.css \
18 --jit --minify
19
20deploy: openring tailwind-build
5 hugo --gc --minify 21 hugo --gc --minify
6 rsync -az --delete public/ root@165.22.87.180:/var/www/html/mitjafelicijan.com/ 22 rsync -az --delete public/ root@165.22.87.180:/var/www/html/mitjafelicijan.com/
7 ssh root@165.22.87.180 chown www-data:www-data /var/www/html/mitjafelicijan.com/ -Rf 23 ssh root@165.22.87.180 chown www-data:www-data /var/www/html/mitjafelicijan.com/ -Rf
@@ -18,6 +34,7 @@ openring:
18 > themes/simple/layouts/partials/openring.html 34 > themes/simple/layouts/partials/openring.html
19 35
20provision: 36provision:
37 npm install
21 cd ~/Junk \ 38 cd ~/Junk \
22 git clone https://git.sr.ht/~sircmpwn/openring \ 39 git clone https://git.sr.ht/~sircmpwn/openring \
23 cd openring \ 40 cd openring \
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..e09a1fd
--- /dev/null
+++ b/package.json
@@ -0,0 +1,21 @@
1{
2 "name": "mitjafelicijan.com",
3 "version": "1.0.0",
4 "description": "",
5 "main": "index.js",
6 "scripts": {
7 "test": "echo \"Error: no test specified\" && exit 1"
8 },
9 "repository": {
10 "type": "git",
11 "url": "git@git.mitjafelicijan.com:/home/git/mitjafelicijan.com.git"
12 },
13 "keywords": [],
14 "author": "",
15 "license": "ISC",
16 "devDependencies": {
17 "autoprefixer": "10.4.13",
18 "postcss": "8.4.18",
19 "tailwindcss": "3.2.1"
20 }
21}
diff --git a/static/general/index.css b/static/general/index.css
new file mode 100644
index 0000000..9c47e94
--- /dev/null
+++ b/static/general/index.css
@@ -0,0 +1,1197 @@
1/*
2! tailwindcss v3.2.1 | MIT License | https://tailwindcss.com
3*/
4
5/*
61. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
72. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
8*/
9
10*,
11::before,
12::after {
13 box-sizing: border-box;
14 /* 1 */
15 border-width: 0;
16 /* 2 */
17 border-style: solid;
18 /* 2 */
19 border-color: #e5e7eb;
20 /* 2 */
21}
22
23::before,
24::after {
25 --tw-content: '';
26}
27
28/*
291. Use a consistent sensible line-height in all browsers.
302. Prevent adjustments of font size after orientation changes in iOS.
313. Use a more readable tab size.
324. Use the user's configured `sans` font-family by default.
33*/
34
35html {
36 line-height: 1.5;
37 /* 1 */
38 -webkit-text-size-adjust: 100%;
39 /* 2 */
40 -moz-tab-size: 4;
41 /* 3 */
42 -o-tab-size: 4;
43 tab-size: 4;
44 /* 3 */
45 font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
46 /* 4 */
47}
48
49/*
501. Remove the margin in all browsers.
512. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
52*/
53
54body {
55 margin: 0;
56 /* 1 */
57 line-height: inherit;
58 /* 2 */
59}
60
61/*
621. Add the correct height in Firefox.
632. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
643. Ensure horizontal rules are visible by default.
65*/
66
67hr {
68 height: 0;
69 /* 1 */
70 color: inherit;
71 /* 2 */
72 border-top-width: 1px;
73 /* 3 */
74}
75
76/*
77Add the correct text decoration in Chrome, Edge, and Safari.
78*/
79
80abbr:where([title]) {
81 -webkit-text-decoration: underline dotted;
82 text-decoration: underline dotted;
83}
84
85/*
86Remove the default font size and weight for headings.
87*/
88
89h1,
90h2,
91h3,
92h4,
93h5,
94h6 {
95 font-size: inherit;
96 font-weight: inherit;
97}
98
99/*
100Reset links to optimize for opt-in styling instead of opt-out.
101*/
102
103a {
104 color: inherit;
105 text-decoration: inherit;
106}
107
108/*
109Add the correct font weight in Edge and Safari.
110*/
111
112b,
113strong {
114 font-weight: bolder;
115}
116
117/*
1181. Use the user's configured `mono` font family by default.
1192. Correct the odd `em` font sizing in all browsers.
120*/
121
122code,
123kbd,
124samp,
125pre {
126 font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
127 /* 1 */
128 font-size: 1em;
129 /* 2 */
130}
131
132/*
133Add the correct font size in all browsers.
134*/
135
136small {
137 font-size: 80%;
138}
139
140/*
141Prevent `sub` and `sup` elements from affecting the line height in all browsers.
142*/
143
144sub,
145sup {
146 font-size: 75%;
147 line-height: 0;
148 position: relative;
149 vertical-align: baseline;
150}
151
152sub {
153 bottom: -0.25em;
154}
155
156sup {
157 top: -0.5em;
158}
159
160/*
1611. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
1622. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
1633. Remove gaps between table borders by default.
164*/
165
166table {
167 text-indent: 0;
168 /* 1 */
169 border-color: inherit;
170 /* 2 */
171 border-collapse: collapse;
172 /* 3 */
173}
174
175/*
1761. Change the font styles in all browsers.
1772. Remove the margin in Firefox and Safari.
1783. Remove default padding in all browsers.
179*/
180
181button,
182input,
183optgroup,
184select,
185textarea {
186 font-family: inherit;
187 /* 1 */
188 font-size: 100%;
189 /* 1 */
190 font-weight: inherit;
191 /* 1 */
192 line-height: inherit;
193 /* 1 */
194 color: inherit;
195 /* 1 */
196 margin: 0;
197 /* 2 */
198 padding: 0;
199 /* 3 */
200}
201
202/*
203Remove the inheritance of text transform in Edge and Firefox.
204*/
205
206button,
207select {
208 text-transform: none;
209}
210
211/*
2121. Correct the inability to style clickable types in iOS and Safari.
2132. Remove default button styles.
214*/
215
216button,
217[type='button'],
218[type='reset'],
219[type='submit'] {
220 -webkit-appearance: button;
221 /* 1 */
222 background-color: transparent;
223 /* 2 */
224 background-image: none;
225 /* 2 */
226}
227
228/*
229Use the modern Firefox focus style for all focusable elements.
230*/
231
232:-moz-focusring {
233 outline: auto;
234}
235
236/*
237Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
238*/
239
240:-moz-ui-invalid {
241 box-shadow: none;
242}
243
244/*
245Add the correct vertical alignment in Chrome and Firefox.
246*/
247
248progress {
249 vertical-align: baseline;
250}
251
252/*
253Correct the cursor style of increment and decrement buttons in Safari.
254*/
255
256::-webkit-inner-spin-button,
257::-webkit-outer-spin-button {
258 height: auto;
259}
260
261/*
2621. Correct the odd appearance in Chrome and Safari.
2632. Correct the outline style in Safari.
264*/
265
266[type='search'] {
267 -webkit-appearance: textfield;
268 /* 1 */
269 outline-offset: -2px;
270 /* 2 */
271}
272
273/*
274Remove the inner padding in Chrome and Safari on macOS.
275*/
276
277::-webkit-search-decoration {
278 -webkit-appearance: none;
279}
280
281/*
2821. Correct the inability to style clickable types in iOS and Safari.
2832. Change font properties to `inherit` in Safari.
284*/
285
286::-webkit-file-upload-button {
287 -webkit-appearance: button;
288 /* 1 */
289 font: inherit;
290 /* 2 */
291}
292
293/*
294Add the correct display in Chrome and Safari.
295*/
296
297summary {
298 display: list-item;
299}
300
301/*
302Removes the default spacing and border for appropriate elements.
303*/
304
305blockquote,
306dl,
307dd,
308h1,
309h2,
310h3,
311h4,
312h5,
313h6,
314hr,
315figure,
316p,
317pre {
318 margin: 0;
319}
320
321fieldset {
322 margin: 0;
323 padding: 0;
324}
325
326legend {
327 padding: 0;
328}
329
330ol,
331ul,
332menu {
333 list-style: none;
334 margin: 0;
335 padding: 0;
336}
337
338/*
339Prevent resizing textareas horizontally by default.
340*/
341
342textarea {
343 resize: vertical;
344}
345
346/*
3471. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
3482. Set the default placeholder color to the user's configured gray 400 color.
349*/
350
351input::-moz-placeholder, textarea::-moz-placeholder {
352 opacity: 1;
353 /* 1 */
354 color: #9ca3af;
355 /* 2 */
356}
357
358input::placeholder,
359textarea::placeholder {
360 opacity: 1;
361 /* 1 */
362 color: #9ca3af;
363 /* 2 */
364}
365
366/*
367Set the default cursor for buttons.
368*/
369
370button,
371[role="button"] {
372 cursor: pointer;
373}
374
375/*
376Make sure disabled buttons don't get the pointer cursor.
377*/
378
379:disabled {
380 cursor: default;
381}
382
383/*
3841. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
3852. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
386 This can trigger a poorly considered lint error in some tools but is included by design.
387*/
388
389img,
390svg,
391video,
392canvas,
393audio,
394iframe,
395embed,
396object {
397 display: block;
398 /* 1 */
399 vertical-align: middle;
400 /* 2 */
401}
402
403/*
404Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
405*/
406
407img,
408video {
409 max-width: 100%;
410 height: auto;
411}
412
413/* Make elements with the HTML hidden attribute stay hidden by default */
414
415[hidden] {
416 display: none;
417}
418
419*, ::before, ::after {
420 --tw-border-spacing-x: 0;
421 --tw-border-spacing-y: 0;
422 --tw-translate-x: 0;
423 --tw-translate-y: 0;
424 --tw-rotate: 0;
425 --tw-skew-x: 0;
426 --tw-skew-y: 0;
427 --tw-scale-x: 1;
428 --tw-scale-y: 1;
429 --tw-pan-x: ;
430 --tw-pan-y: ;
431 --tw-pinch-zoom: ;
432 --tw-scroll-snap-strictness: proximity;
433 --tw-ordinal: ;
434 --tw-slashed-zero: ;
435 --tw-numeric-figure: ;
436 --tw-numeric-spacing: ;
437 --tw-numeric-fraction: ;
438 --tw-ring-inset: ;
439 --tw-ring-offset-width: 0px;
440 --tw-ring-offset-color: #fff;
441 --tw-ring-color: rgb(59 130 246 / 0.5);
442 --tw-ring-offset-shadow: 0 0 #0000;
443 --tw-ring-shadow: 0 0 #0000;
444 --tw-shadow: 0 0 #0000;
445 --tw-shadow-colored: 0 0 #0000;
446 --tw-blur: ;
447 --tw-brightness: ;
448 --tw-contrast: ;
449 --tw-grayscale: ;
450 --tw-hue-rotate: ;
451 --tw-invert: ;
452 --tw-saturate: ;
453 --tw-sepia: ;
454 --tw-drop-shadow: ;
455 --tw-backdrop-blur: ;
456 --tw-backdrop-brightness: ;
457 --tw-backdrop-contrast: ;
458 --tw-backdrop-grayscale: ;
459 --tw-backdrop-hue-rotate: ;
460 --tw-backdrop-invert: ;
461 --tw-backdrop-opacity: ;
462 --tw-backdrop-saturate: ;
463 --tw-backdrop-sepia: ;
464}
465
466::backdrop {
467 --tw-border-spacing-x: 0;
468 --tw-border-spacing-y: 0;
469 --tw-translate-x: 0;
470 --tw-translate-y: 0;
471 --tw-rotate: 0;
472 --tw-skew-x: 0;
473 --tw-skew-y: 0;
474 --tw-scale-x: 1;
475 --tw-scale-y: 1;
476 --tw-pan-x: ;
477 --tw-pan-y: ;
478 --tw-pinch-zoom: ;
479 --tw-scroll-snap-strictness: proximity;
480 --tw-ordinal: ;
481 --tw-slashed-zero: ;
482 --tw-numeric-figure: ;
483 --tw-numeric-spacing: ;
484 --tw-numeric-fraction: ;
485 --tw-ring-inset: ;
486 --tw-ring-offset-width: 0px;
487 --tw-ring-offset-color: #fff;
488 --tw-ring-color: rgb(59 130 246 / 0.5);
489 --tw-ring-offset-shadow: 0 0 #0000;
490 --tw-ring-shadow: 0 0 #0000;
491 --tw-shadow: 0 0 #0000;
492 --tw-shadow-colored: 0 0 #0000;
493 --tw-blur: ;
494 --tw-brightness: ;
495 --tw-contrast: ;
496 --tw-grayscale: ;
497 --tw-hue-rotate: ;
498 --tw-invert: ;
499 --tw-saturate: ;
500 --tw-sepia: ;
501 --tw-drop-shadow: ;
502 --tw-backdrop-blur: ;
503 --tw-backdrop-brightness: ;
504 --tw-backdrop-contrast: ;
505 --tw-backdrop-grayscale: ;
506 --tw-backdrop-hue-rotate: ;
507 --tw-backdrop-invert: ;
508 --tw-backdrop-opacity: ;
509 --tw-backdrop-saturate: ;
510 --tw-backdrop-sepia: ;
511}
512
513.mx-auto {
514 margin-left: auto;
515 margin-right: auto;
516}
517
518.mb-10 {
519 margin-bottom: 2.5rem;
520}
521
522.mb-6 {
523 margin-bottom: 1.5rem;
524}
525
526.mb-1 {
527 margin-bottom: 0.25rem;
528}
529
530.mb-12 {
531 margin-bottom: 3rem;
532}
533
534.mb-5 {
535 margin-bottom: 1.25rem;
536}
537
538.mb-2 {
539 margin-bottom: 0.5rem;
540}
541
542.mb-4 {
543 margin-bottom: 1rem;
544}
545
546.mt-4 {
547 margin-top: 1rem;
548}
549
550.ml-6 {
551 margin-left: 1.5rem;
552}
553
554.block {
555 display: block;
556}
557
558.flex {
559 display: flex;
560}
561
562.hidden {
563 display: none;
564}
565
566.h-full {
567 height: 100%;
568}
569
570.w-full {
571 width: 100%;
572}
573
574.flex-grow {
575 flex-grow: 1;
576}
577
578.list-disc {
579 list-style-type: disc;
580}
581
582.flex-col {
583 flex-direction: column;
584}
585
586.items-center {
587 align-items: center;
588}
589
590.gap-1 {
591 gap: 0.25rem;
592}
593
594.rounded {
595 border-radius: 0.25rem;
596}
597
598.border-2 {
599 border-width: 2px;
600}
601
602.border-0 {
603 border-width: 0px;
604}
605
606.border-gray-100 {
607 --tw-border-opacity: 1;
608 border-color: rgb(243 244 246 / var(--tw-border-opacity));
609}
610
611.bg-orange-600 {
612 --tw-bg-opacity: 1;
613 background-color: rgb(234 88 12 / var(--tw-bg-opacity));
614}
615
616.px-6 {
617 padding-left: 1.5rem;
618 padding-right: 1.5rem;
619}
620
621.px-1\.5 {
622 padding-left: 0.375rem;
623 padding-right: 0.375rem;
624}
625
626.px-1 {
627 padding-left: 0.25rem;
628 padding-right: 0.25rem;
629}
630
631.py-4 {
632 padding-top: 1rem;
633 padding-bottom: 1rem;
634}
635
636.px-2 {
637 padding-left: 0.5rem;
638 padding-right: 0.5rem;
639}
640
641.pb-12 {
642 padding-bottom: 3rem;
643}
644
645.text-2xl {
646 font-size: 1.5rem;
647 line-height: 2rem;
648}
649
650.text-sm {
651 font-size: 0.875rem;
652 line-height: 1.25rem;
653}
654
655.text-xs {
656 font-size: 0.75rem;
657 line-height: 1rem;
658}
659
660.text-4xl {
661 font-size: 2.25rem;
662 line-height: 2.5rem;
663}
664
665.text-xl {
666 font-size: 1.25rem;
667 line-height: 1.75rem;
668}
669
670.font-bold {
671 font-weight: 700;
672}
673
674.font-semibold {
675 font-weight: 600;
676}
677
678.font-medium {
679 font-weight: 500;
680}
681
682.font-extrabold {
683 font-weight: 800;
684}
685
686.leading-tight {
687 line-height: 1.25;
688}
689
690.leading-relaxed {
691 line-height: 1.625;
692}
693
694.text-gray-600 {
695 --tw-text-opacity: 1;
696 color: rgb(75 85 99 / var(--tw-text-opacity));
697}
698
699.text-gray-400 {
700 --tw-text-opacity: 1;
701 color: rgb(156 163 175 / var(--tw-text-opacity));
702}
703
704.text-white {
705 --tw-text-opacity: 1;
706 color: rgb(255 255 255 / var(--tw-text-opacity));
707}
708
709.underline {
710 text-decoration-line: underline;
711}
712
713.no-underline {
714 text-decoration-line: none;
715}
716
717/* Container */
718
719.container-blog {
720 max-width: 700px;
721}
722
723/* User text selection */
724
725::-moz-selection {
726 --tw-bg-opacity: 1;
727 background-color: rgb(254 249 195 / var(--tw-bg-opacity));
728 --tw-text-opacity: 1;
729 color: rgb(0 0 0 / var(--tw-text-opacity));
730}
731
732::selection {
733 --tw-bg-opacity: 1;
734 background-color: rgb(254 249 195 / var(--tw-bg-opacity));
735 --tw-text-opacity: 1;
736 color: rgb(0 0 0 / var(--tw-text-opacity));
737}
738
739::-moz-selection {
740 --tw-bg-opacity: 1;
741 background-color: rgb(254 249 195 / var(--tw-bg-opacity));
742 --tw-text-opacity: 1;
743 color: rgb(0 0 0 / var(--tw-text-opacity));
744}
745
746/* Headings */
747
748article.single h2 {
749 margin-bottom: 1rem;
750 margin-top: 2rem;
751 font-size: 1.5rem;
752 line-height: 2rem;
753 font-weight: 700;
754}
755
756article.single h3 {
757 margin-bottom: 1rem;
758 margin-top: 2rem;
759 font-size: 1.25rem;
760 line-height: 1.75rem;
761 font-weight: 700;
762}
763
764article.single h4 {
765 margin-bottom: 1rem;
766 margin-top: 2rem;
767 font-size: 1.125rem;
768 line-height: 1.75rem;
769 font-weight: 700;
770}
771
772/* Paragraph */
773
774article.single p {
775 margin-bottom: 1.25rem;
776}
777
778/* Links */
779
780article.single a {
781 text-decoration-line: underline;
782}
783
784article.single a:hover {
785 --tw-bg-opacity: 1;
786 background-color: rgb(254 249 195 / var(--tw-bg-opacity));
787}
788
789/* Blockquote */
790
791article.single blockquote {
792 background-image: url('/general/alert-light.svg');
793 background-size: 30px 30px;
794 background-repeat: no-repeat;
795 background-position: 0 5px;
796 margin-top: 2rem;
797 margin-bottom: 2rem;
798 padding-left: 3rem;
799}
800
801/* Media: Images, audio, video */
802
803article.single img {
804 margin-top: 2rem;
805 margin-bottom: 2rem;
806 width: 100%;
807 border-radius: 0.25rem;
808 --tw-bg-opacity: 1 !important;
809 background-color: rgb(249 250 251 / var(--tw-bg-opacity)) !important;
810}
811
812article.single video {
813 width: 100%;
814 border-radius: 0.25rem;
815 --tw-bg-opacity: 1 !important;
816 background-color: rgb(249 250 251 / var(--tw-bg-opacity)) !important;
817}
818
819article.single audio {
820 margin-bottom: 1.5rem;
821 width: 100%;
822}
823
824/* Code */
825
826article.single code {
827 border-radius: 0.25rem;
828 --tw-bg-opacity: 1;
829 background-color: rgb(254 249 195 / var(--tw-bg-opacity));
830 padding-left: 0.5rem;
831 padding-right: 0.5rem;
832 padding-top: 0.25rem;
833 padding-bottom: 0.25rem;
834 font-size: 0.75rem;
835 line-height: 1rem;
836 font-weight: 500;
837}
838
839article.single pre {
840 margin-bottom: 1.5rem;
841 overflow-x: auto;
842 border-radius: 0.25rem;
843 --tw-bg-opacity: 1 !important;
844 background-color: rgb(249 250 251 / var(--tw-bg-opacity)) !important;
845 padding: 1rem;
846 font-size: 0.75rem;
847 line-height: 1rem;
848}
849
850article.single pre code {
851 background: unset;
852 padding: unset;
853 line-height: 1.625;
854}
855
856/* Tables */
857
858article.single table {
859 margin-bottom: 1rem;
860 width: 100%;
861 border-collapse: collapse;
862 border-width: 1px;
863 --tw-border-opacity: 1;
864 border-color: rgb(0 0 0 / var(--tw-border-opacity));
865}
866
867article.single table tr,
868article.single table td,
869article.single table th {
870 border-width: 1px;
871 padding-left: 1rem;
872 padding-right: 1rem;
873 padding-top: 0.5rem;
874 padding-bottom: 0.5rem;
875 text-align: left;
876}
877
878/* Unordered list */
879
880article.single ul {
881 margin-bottom: 1.5rem;
882 list-style-type: disc;
883 padding-left: 1.5rem;
884}
885
886@media (min-width: 768px) {
887 article.single ul {
888 padding-left: 2.5rem;
889 }
890}
891
892/* Ordered list */
893
894article.single ol {
895 list-style-type: decimal;
896 padding-left: 2rem;
897}
898
899@media (min-width: 768px) {
900 article.single ol {
901 padding-left: 2.5rem;
902 }
903}
904
905/* Katex */
906
907article.single .katex-display {
908 margin-top: 2.5rem;
909 margin-bottom: 2.5rem;
910}
911
912/* Lazy loading of iframes */
913
914article.single .ll-iframe {
915 border-radius: 0.25rem;
916 --tw-bg-opacity: 1;
917 background-color: rgb(243 244 246 / var(--tw-bg-opacity));
918}
919
920article.single .ll-iframe::before {
921 display: flex;
922 height: 100%;
923}
924
925@keyframes pulse {
926 50% {
927 opacity: .5;
928 }
929}
930
931article.single .ll-iframe::before {
932 animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
933 cursor: pointer;
934 align-items: center;
935 justify-content: center;
936 border-radius: 0.25rem;
937 border-width: 2px;
938 --tw-border-opacity: 1;
939 border-color: rgb(209 213 219 / var(--tw-border-opacity));
940 font-size: 0.875rem;
941 line-height: 1.25rem;
942 font-weight: 500;
943 content: 'Click here to load resource…';
944}
945
946article.single .ll-iframe.empty::before {
947 content: none;
948}
949
950/* Cactus Comments */
951
952.comments img {
953 max-width: auto !important;
954 max-width: unset !important;
955 max-width: inherit !important;
956}
957
958.cactus-container .cactus-editor-textarea {
959 margin-bottom: 0.5rem;
960 height: 8rem;
961 width: 100%;
962 border-radius: 0.25rem;
963 border-width: 1px;
964 padding-left: 0.75rem;
965 padding-right: 0.75rem;
966 padding-top: 0.5rem;
967 padding-bottom: 0.5rem;
968 outline: 2px solid transparent;
969 outline-offset: 2px;
970}
971
972.cactus-container .cactus-editor-name input {
973 margin-bottom: 0.5rem;
974 width: 100%;
975 border-radius: 0.25rem;
976 border-width: 1px;
977 padding-left: 0.75rem;
978 padding-right: 0.75rem;
979 padding-top: 0.5rem;
980 padding-bottom: 0.5rem;
981 outline: 2px solid transparent;
982 outline-offset: 2px;
983}
984
985.cactus-container .cactus-editor-name {
986 margin-bottom: 0.25rem;
987}
988
989/* Cactus: Buttons */
990
991.cactus-editor-buttons {
992 display: flex;
993 gap: 0.5rem;
994}
995
996.cactus-container .cactus-button {
997 border-radius: 0.25rem;
998 --tw-bg-opacity: 1;
999 background-color: rgb(229 231 235 / var(--tw-bg-opacity));
1000 padding-left: 1.5rem;
1001 padding-right: 1.5rem;
1002 padding-top: 0.5rem;
1003 padding-bottom: 0.5rem;
1004 font-size: 1rem;
1005 line-height: 1.5rem;
1006 font-weight: 500;
1007}
1008
1009.cactus-container .cactus-button:hover {
1010 --tw-bg-opacity: 1;
1011 background-color: rgb(209 213 219 / var(--tw-bg-opacity));
1012}
1013
1014.cactus-container .cactus-editor {
1015 margin-bottom: 2.5rem;
1016}
1017
1018/* Cactus: Comment List */
1019
1020.cactus-container .cactus-comments-list {
1021 display: flex;
1022 flex-direction: column;
1023 gap: 2rem;
1024}
1025
1026.cactus-container .cactus-comment {
1027 display: flex;
1028 gap: 1rem;
1029}
1030
1031.cactus-container .cactus-comment .cactus-comment-avatar img {
1032 height: 2rem;
1033 width: 2rem;
1034 border-radius: 9999px;
1035}
1036
1037.cactus-container .cactus-comment .cactus-comment-avatar-placeholder {
1038 height: 2rem;
1039 width: 2rem;
1040 border-radius: 9999px;
1041 --tw-bg-opacity: 1;
1042 background-color: rgb(209 213 219 / var(--tw-bg-opacity));
1043}
1044
1045.cactus-container .cactus-comment .cactus-comment-header {
1046 display: flex;
1047 align-items: center;
1048 gap: 0.5rem;
1049}
1050
1051.cactus-container .cactus-comment .cactus-comment-header .cactus-comment-displayname {
1052 font-weight: 600;
1053}
1054
1055.cactus-container .cactus-comment .cactus-comment-header .cactus-comment-time {
1056 font-size: 0.875rem;
1057 line-height: 1.25rem;
1058 --tw-text-opacity: 1;
1059 color: rgb(156 163 175 / var(--tw-text-opacity));
1060}
1061
1062.cactus-container .cactus-comment .cactus-message-text code {
1063 border-radius: 0.25rem;
1064 --tw-bg-opacity: 1;
1065 background-color: rgb(254 249 195 / var(--tw-bg-opacity));
1066 padding-left: 0.5rem;
1067 padding-right: 0.5rem;
1068 padding-top: 0.25rem;
1069 padding-bottom: 0.25rem;
1070 font-size: 0.75rem;
1071 line-height: 1rem;
1072 font-weight: 500;
1073}
1074
1075/* Unordered list */
1076
1077.cactus-container .cactus-comment .cactus-message-text ul {
1078 list-style-type: disc;
1079 padding-left: 0.5rem;
1080}
1081
1082@media (min-width: 768px) {
1083 .cactus-container .cactus-comment .cactus-message-text ul {
1084 padding-left: 1.5rem;
1085 }
1086}
1087
1088/* Ordered list */
1089
1090.cactus-container .cactus-comment .cactus-message-text ol {
1091 list-style-type: decimal;
1092 padding-left: 0.5rem;
1093}
1094
1095@media (min-width: 768px) {
1096 .cactus-container .cactus-comment .cactus-message-text ol {
1097 padding-left: 1.5rem;
1098 }
1099}
1100
1101/* Cactus: Login */
1102
1103.cactus-container .cactus-login-form-wrapper {
1104 position: relative;
1105 margin-bottom: 1.5rem;
1106 border-radius: 0.25rem;
1107 border-width: 1px;
1108 padding: 0.75rem;
1109}
1110
1111.cactus-container .cactus-login-form .cactus-login-close {
1112 position: absolute;
1113 right: 0.75rem;
1114 top: 0.75rem;
1115 height: 1rem;
1116 width: 1rem;
1117}
1118
1119.cactus-container .cactus-login-form .cactus-login-title {
1120 margin-bottom: 1rem;
1121 margin-top: 0px;
1122 padding-top: 0px;
1123 font-weight: 700;
1124}
1125
1126/* Cactus: Login with a button */
1127
1128.cactus-container .cactus-login-form .cactus-login-client {
1129 margin-bottom: 1.5rem;
1130}
1131
1132.cactus-container .cactus-login-form .cactus-login-client-title {
1133 margin-bottom: 0.5rem;
1134 font-weight: 600;
1135}
1136
1137/* Cactus: Login with credentials */
1138
1139.cactus-container .cactus-login-form .cactus-login-credentials {
1140}
1141
1142.cactus-container .cactus-login-form .cactus-login-credentials-title {
1143 margin-bottom: 0.25rem;
1144 font-weight: 600;
1145}
1146
1147.cactus-container .cactus-login-form .cactus-login-field {
1148 margin-bottom: 0.5rem;
1149 display: flex;
1150 align-items: center;
1151 gap: 1rem;
1152}
1153
1154.cactus-container .cactus-login-form .cactus-login-label {
1155 width: 5rem;
1156}
1157
1158.cactus-container .cactus-login-form input {
1159 border-radius: 0.25rem;
1160 border-width: 1px;
1161 padding-left: 0.5rem;
1162 padding-right: 0.5rem;
1163 padding-top: 0.25rem;
1164 padding-bottom: 0.25rem;
1165}
1166
1167.hover\:bg-yellow-100:hover {
1168 --tw-bg-opacity: 1;
1169 background-color: rgb(254 249 195 / var(--tw-bg-opacity));
1170}
1171
1172.hover\:text-gray-800:hover {
1173 --tw-text-opacity: 1;
1174 color: rgb(31 41 55 / var(--tw-text-opacity));
1175}
1176
1177.hover\:underline:hover {
1178 text-decoration-line: underline;
1179}
1180
1181@media (min-width: 768px) {
1182 .md\:mb-0 {
1183 margin-bottom: 0px;
1184 }
1185
1186 .md\:block {
1187 display: block;
1188 }
1189
1190 .md\:flex-row {
1191 flex-direction: row;
1192 }
1193
1194 .md\:p-0 {
1195 padding: 0px;
1196 }
1197}
diff --git a/static/yap/feed.xml b/static/yap/feed.xml
deleted file mode 100755
index 0f00861..0000000
--- a/static/yap/feed.xml
+++ /dev/null
@@ -1,53 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<?xml-stylesheet type="text/xsl" href="theme.xsl"?>
3<rss version="2.0">
4 <channel>
5
6 <title>Microblog - Mitja Felicijan</title>
7 <pageTitle>Mitja Felicijan</pageTitle>
8 <link>https://mitjafelicijan.com/yap/feed.xml</link>
9 <description>You do not learn by relaxing. You learn by violently assaulting your problem until it surrenders its mysteries to you.</description>
10 <managingEditor>m@mitjafelicijan.com (Mitja Felicijan)</managingEditor>
11 <generator>YapYap</generator>
12
13 <!-- RFC 2882 generator: https://epochtimestamp.com/ -->
14
15 <!-- October, 2022 -->
16
17 <item>
18 <title>I have started playing Torchlight 2 again. Forgot how much fun this game actually is. Since I am working on my own game in my spare time, it's interesting to see how they managed to keep their systems simple, yet interesting. Still have no idea if there is end-game, but leveling up is for sure fun.</title>
19 <pubDate>Mon, 10 Oct 2022 22:37:24 +02:00</pubDate>
20 </item>
21
22 <item>
23 <title>Managing all the requirements for Gtk4 development looked more and more like a huge pain, so I moved to Gnome Builder for development of desktop apps. Builder is really impressive piece of software! 👀</title>
24 <pubDate>Sat, 08 Oct 2022 22:53:08 +02:00</pubDate>
25 </item>
26
27 <item>
28 <title>Gtk4 is really missing some quality Python documentation! All that you can find is examples for Gtk3, and it is not really completely compatible with v4. This makes working with it extremely frustrating. 😠</title>
29 <pubDate>Sat, 08 Oct 2022 02:42:52 +02:00</pubDate>
30 </item>
31
32 <item>
33 <title>I started work on a hobby project that uses Gtk4 to display various data like CSV, SQLite, MySQL and Redis. Essentially, a data exploration tool with some plotting features.</title>
34 <pubDate>Sat, 08 Oct 2022 02:22:04 +02:00</pubDate>
35 </item>
36
37 <item>
38 <title>An interesting use-case for this type of blogging is also that it is by default RSS reader friendly, making subscribing to these feeds incredibly convenient.</title>
39 <pubDate>Sat, 08 Oct 2022 01:47:47 +02:00</pubDate>
40 </item>
41
42 <item>
43 <title>I added comments to my site finally. I choose https://cactus.chat/. Really simple implementation and uses Matrix protocol, which makes it even more cool. 🎉</title>
44 <pubDate>Sat, 08 Oct 2022 00:38:18 +02:00</pubDate>
45 </item>
46
47 <item>
48 <title>I have been testing ideas how to implement microblogging as a replacement for Twitter. Using XSL and XML is an interesting idea that is supported through major browser. View the source of this page and check it out in action.</title>
49 <pubDate>Sat, 07 Oct 2022 01:38:18 +02:00</pubDate>
50 </item>
51
52 </channel>
53</rss>
diff --git a/static/yap/images/2022-10-10 22-32-46.png b/static/yap/images/2022-10-10 22-32-46.png
deleted file mode 100644
index e49532c..0000000
--- a/static/yap/images/2022-10-10 22-32-46.png
+++ /dev/null
Binary files differ
diff --git a/static/yap/theme.xsl b/static/yap/theme.xsl
deleted file mode 100755
index 4706f95..0000000
--- a/static/yap/theme.xsl
+++ /dev/null
@@ -1,113 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3 <xsl:template match="/">
4
5 <html>
6
7 <head>
8
9 <meta charset="utf-8" />
10 <meta name="theme-color" content="#ffffff" />
11 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12 <meta http-equiv="X-UA-Compatible" content="ie=edge" />
13
14 <title>Microblog - Mitja Felicijan</title>
15 <link rel="icon" type="image/gif" href="/general/favicon.gif" />
16
17 <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet" />
18
19 <style>
20 .container-blog {
21 max-width: 700px;
22 }
23 </style>
24
25 <script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
26 <script>
27 window.addEventListener('load', () => {
28 document.querySelectorAll('time').forEach(el => {
29 const formattedDate = dayjs(el.getAttribute('datetime')).format('dddd, MMMM D, YYYY h:mm A');
30 el.innerText = formattedDate;
31 });
32 });
33 </script>
34
35 <!--
36 Examples:
37
38 <item>
39 <guid>1</guid>
40 <title>Example of Image post</title>
41 <pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate>
42 <enclosure url="https://placeimg.com/550/300/tech" />
43 </item>
44 <item>
45 <title>Example of Text post</title>
46 <pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate>
47 </item>
48 -->
49
50 </head>
51
52 <body>
53
54 <header class="container-blog mx-auto px-6 md:p-0">
55 <div class="flex py-4 mt-4 mb-6 items-center gap-2">
56 <h1>
57 <a href="/" class="text-xl font-bold hover:bg-yellow-100">
58 <xsl:value-of select="rss/channel/pageTitle" />
59 </a>
60 </h1>
61 </div>
62 </header>
63
64 <main class="container-blog mx-auto px-6 md:p-0 mb-32">
65
66 <xsl:for-each select="rss/channel/item">
67 <xsl:sort select="guid" data-type="number" order="descending" />
68
69 <article class="flex flex-col md:flex-row gap-4 mb-10">
70
71 <xsl:if test="enclosure/@url">
72 <a class="w-full md:w-90 block" target="_blank">
73 <xsl:attribute name="href">
74 <xsl:value-of select="enclosure/@url" />
75 </xsl:attribute>
76
77 <img class="rounded w-full object-contain md:object-fill">
78 <xsl:attribute name="src">
79 <xsl:value-of select="enclosure/@url" />
80 </xsl:attribute>
81 </img>
82 </a>
83 </xsl:if>
84
85 <section>
86 <xsl:if test="pubDate">
87 <div class="text-gray-400 text-xs font-medium mb-1">
88 <time>
89 <xsl:attribute name="datetime">
90 <xsl:value-of select="pubDate" />
91 </xsl:attribute>
92 <xsl:value-of select="pubDate" />
93 </time>
94 </div>
95 </xsl:if>
96
97 <xsl:if test="title">
98 <div>
99 <xsl:value-of select="title" />
100 </div>
101 </xsl:if>
102 </section>
103
104 </article>
105 </xsl:for-each>
106
107 </main>
108
109 </body>
110 </html>
111
112 </xsl:template>
113</xsl:stylesheet>
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..a7c7dc5
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,12 @@
1/** @type {import('tailwindcss').Config} */
2module.exports = {
3 content: [
4 "./content/**/*.{html,js}",
5 "./layouts/**/*.{html,js}",
6 "./themes/**/*.{html,js}"
7 ],
8 theme: {
9 extend: {},
10 },
11 plugins: [],
12}
diff --git a/themes/simple/layouts/partials/head.html b/themes/simple/layouts/partials/head.html
index 256608d..d7fbec6 100755
--- a/themes/simple/layouts/partials/head.html
+++ b/themes/simple/layouts/partials/head.html
@@ -4,6 +4,8 @@
4 4
5<link rel="alternate" type="application/rss+xml" href="/index.xml" title="{{ .Site.Author.name }}"> 5<link rel="alternate" type="application/rss+xml" href="/index.xml" title="{{ .Site.Author.name }}">
6 6
7<link rel="stylesheet" href="/general/index.css">
8
7<link 9<link
8 href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL69vf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv76+/8LBwQkAAAAAAAAAAAAAAAC+vb3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+9vf/Bv78JAAAAAAAAAAAAAAAAu7q6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ubr/vr29CAAAAAAAAAAAy8nJAZ6foP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnqGj/6GipAoAAAAAHLjU/xcXHf/BwsL/I8XY/yPK3v8XGiD/IbjL/yPF2f8XGiD/Fxkf/yLF2f8gnK3/Fxog/62ztv8fwNf/FRcd/x271v8mz93/GRsi/xkXHf8p097/GiIp/xobIv8p0t3/KdPe/xocIv8fYmr/KNPe/xoZH/8aHCL/J87c/xy81/8VFxz/IsPZ/8zS0/8XGiD/Ir/R/yPH2/8XGiD/Fxkf/yPH2/8dd4T/GBog/yPJ3f8jyNr/uru9/xcUGv8cudb/EhITDKi5vRKlvMP/RUpOERwcHRAdOj4QHTk8EBwdHRAdNTgQHTo/EBwcHRAcHB0QSGduEKW4vf+koqQfHzg+EBqz0ewSFRv7EyMr/xq51vsTERb7ExUb+xq41fsau9j7ExUb+xiPp/sZudb7ExUb+xMVG/sZuNX/GKvI/BIUGfMdvdn/IrfL/xcaIP8n1eb/J9Dh/xkcIf8ZGR7/J8/f/xxCSv8ZGyH/J9Dg/ybQ4P8ZHCL/FSQs/yPK3/8UExj/GE1b/ybS5P8ZGB7/Ghwj/ynW5P8p2Ob/Ghwi/yWrtv8p1eH/Ghwi/xocIv8p1uT/J8XT/xkcIv8m1un/Hb7d/xUYH/8hzOr/HtHu/xcaIf8XGB//I8vi/xgxOv8XGSD/I8rg/yPK4P8XGiD/GUFL/yPP6f8SERj/Fhkh/x3A4f8AAAAAJ2f9/ydr//8mZPH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlYu38J2v//ydo/f8AAAAAAAAAAAd8/fkFqf//Iob8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMY39awWr//8FfP3/AAAAAAAAAAAFm/7/SfD//wR+/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB/f9B7v//BaX+/wAAAAAAAAAAQ878SAyZ/v9n1v4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu9v8DDJb+/z3N/XgAAAAA3/sAAN/7AADf+wAA3/sAAAAAAAAAAAAAAAAAAN/7AAAAAAAAAAAAAAAAAAAAAAAAj/EAAI/5AACP8QAA3/sAAA==" 10 href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL69vf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv76+/8LBwQkAAAAAAAAAAAAAAAC+vb3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+9vf/Bv78JAAAAAAAAAAAAAAAAu7q6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ubr/vr29CAAAAAAAAAAAy8nJAZ6foP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnqGj/6GipAoAAAAAHLjU/xcXHf/BwsL/I8XY/yPK3v8XGiD/IbjL/yPF2f8XGiD/Fxkf/yLF2f8gnK3/Fxog/62ztv8fwNf/FRcd/x271v8mz93/GRsi/xkXHf8p097/GiIp/xobIv8p0t3/KdPe/xocIv8fYmr/KNPe/xoZH/8aHCL/J87c/xy81/8VFxz/IsPZ/8zS0/8XGiD/Ir/R/yPH2/8XGiD/Fxkf/yPH2/8dd4T/GBog/yPJ3f8jyNr/uru9/xcUGv8cudb/EhITDKi5vRKlvMP/RUpOERwcHRAdOj4QHTk8EBwdHRAdNTgQHTo/EBwcHRAcHB0QSGduEKW4vf+koqQfHzg+EBqz0ewSFRv7EyMr/xq51vsTERb7ExUb+xq41fsau9j7ExUb+xiPp/sZudb7ExUb+xMVG/sZuNX/GKvI/BIUGfMdvdn/IrfL/xcaIP8n1eb/J9Dh/xkcIf8ZGR7/J8/f/xxCSv8ZGyH/J9Dg/ybQ4P8ZHCL/FSQs/yPK3/8UExj/GE1b/ybS5P8ZGB7/Ghwj/ynW5P8p2Ob/Ghwi/yWrtv8p1eH/Ghwi/xocIv8p1uT/J8XT/xkcIv8m1un/Hb7d/xUYH/8hzOr/HtHu/xcaIf8XGB//I8vi/xgxOv8XGSD/I8rg/yPK4P8XGiD/GUFL/yPP6f8SERj/Fhkh/x3A4f8AAAAAJ2f9/ydr//8mZPH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlYu38J2v//ydo/f8AAAAAAAAAAAd8/fkFqf//Iob8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMY39awWr//8FfP3/AAAAAAAAAAAFm/7/SfD//wR+/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB/f9B7v//BaX+/wAAAAAAAAAAQ878SAyZ/v9n1v4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu9v8DDJb+/z3N/XgAAAAA3/sAAN/7AADf+wAA3/sAAAAAAAAAAAAAAAAAAN/7AAAAAAAAAAAAAAAAAAAAAAAAj/EAAI/5AACP8QAA3/sAAA=="
9 rel="icon" type="image/x-icon" /> 11 rel="icon" type="image/x-icon" />
@@ -16,7 +18,3 @@
16<meta property="og:description" content="{{ if .Summary }}{{ .Summary }}{{ else }}{{ .Site.Params.Description }}{{ end }}"> 18<meta property="og:description" content="{{ if .Summary }}{{ .Summary }}{{ else }}{{ .Site.Params.Description }}{{ end }}">
17<meta property="og:url" content="https://mitjafelicijan.com/{{ .Params.url }}"> 19<meta property="og:url" content="https://mitjafelicijan.com/{{ .Params.url }}">
18<meta property="og:image" content="https://mitjafelicijan.com/general/og.jpg"> 20<meta property="og:image" content="https://mitjafelicijan.com/general/og.jpg">
19
20<script src="https://cdn.tailwindcss.com"></script>
21
22{{ partial "tailwind.html" . }}
diff --git a/themes/simple/layouts/partials/tailwind.html b/themes/simple/layouts/partials/tailwind.html
deleted file mode 100755
index b6fd763..0000000
--- a/themes/simple/layouts/partials/tailwind.html
+++ /dev/null
@@ -1,235 +0,0 @@
1<style type="text/tailwindcss">
2 @layer utilities {
3
4 /* Container */
5 .container-blog {
6 max-width: 700px;
7 }
8
9 /* User text selection */
10 ::selection {
11 @apply bg-yellow-100 text-black;
12 }
13
14 ::-moz-selection {
15 @apply bg-yellow-100 text-black;
16 }
17
18 /* Headings */
19 article.single h2 {
20 @apply text-2xl font-bold mb-4 mt-8;
21 }
22
23 article.single h3 {
24 @apply text-xl font-bold mb-4 mt-8;
25 }
26
27 article.single h4 {
28 @apply text-lg font-bold mb-4 mt-8;
29 }
30
31 /* Paragraph */
32 article.single p {
33 @apply mb-5;
34 }
35
36 /* Links */
37 article.single a {
38 @apply underline hover:bg-yellow-100;
39 }
40
41 /* Blockquote */
42 article.single blockquote {
43 background-image: url('/general/alert-light.svg');
44 background-size: 30px 30px;
45 background-repeat: no-repeat;
46 background-position: 0 5px;
47 @apply pl-12 my-8;
48 }
49
50 /* Media: Images, audio, video */
51 article.single img {
52 @apply rounded w-full !bg-gray-50 my-8;
53 }
54
55 article.single video {
56 @apply rounded w-full !bg-gray-50;
57 }
58
59 article.single audio {
60 @apply w-full mb-6;
61 }
62
63 /* Code */
64 article.single code {
65 @apply bg-yellow-100 rounded px-2 py-1 text-xs font-medium;
66 }
67
68 article.single pre {
69 @apply !bg-gray-50 rounded text-xs p-4 mb-6 overflow-x-auto;
70 }
71
72 article.single pre code {
73 background: unset;
74 padding: unset;
75 @apply leading-relaxed;
76 }
77
78 /* Tables */
79 article.single table {
80 @apply w-full border border-black border-collapse mb-4;
81 }
82
83 article.single table tr,
84 article.single table td,
85 article.single table th {
86 @apply px-4 py-2 border text-left;
87 }
88
89 /* Unordered list */
90 article.single ul {
91 @apply list-disc pl-6 md:pl-10 mb-6;
92 }
93
94 /* Ordered list */
95 article.single ol {
96 @apply list-decimal pl-8 md:pl-10;
97 }
98
99 /* Katex */
100 article.single .katex-display {
101 @apply my-10;
102 }
103
104 /* Lazy loading of iframes */
105 article.single .ll-iframe {
106 @apply bg-gray-100 rounded;
107 }
108
109 article.single .ll-iframe::before {
110 @apply h-full flex border-2 border-gray-300 rounded justify-center items-center font-medium text-sm cursor-pointer animate-pulse;
111 content: 'Click here to load resource…';
112 }
113
114 article.single .ll-iframe.empty::before {
115 content: none;
116 }
117
118 /* Cactus Comments */
119 .comments img {
120 max-width: auto !important;
121 max-width: unset !important;
122 max-width: inherit !important;
123 }
124 .cactus-container .cactus-editor-textarea {
125 @apply border w-full h-32 px-3 py-2 outline-none rounded mb-2;
126 }
127
128 .cactus-container .cactus-editor-name input {
129 @apply border w-full px-3 py-2 mb-2 outline-none rounded;
130 }
131
132 .cactus-container .cactus-editor-name {
133 @apply mb-1;
134 }
135
136 /* Cactus: Buttons */
137 .cactus-editor-buttons {
138 @apply flex gap-2;
139 }
140
141 .cactus-container .cactus-button {
142 @apply text-base bg-gray-200 hover:bg-gray-300 font-medium px-6 py-2 rounded;
143 }
144
145 .cactus-container .cactus-editor {
146 @apply mb-10;
147 }
148
149 /* Cactus: Comment List */
150 .cactus-container .cactus-comments-list {
151 @apply flex flex-col gap-8;
152 }
153
154 .cactus-container .cactus-comment {
155 @apply flex gap-4;
156 }
157
158 .cactus-container .cactus-comment .cactus-comment-avatar img {
159 @apply w-8 h-8 rounded-full;
160 }
161
162 .cactus-container .cactus-comment .cactus-comment-avatar-placeholder {
163 @apply w-8 h-8 rounded-full bg-gray-300;
164 }
165
166 .cactus-container .cactus-comment .cactus-comment-header {
167 @apply flex gap-2 items-center;
168 }
169
170 .cactus-container .cactus-comment .cactus-comment-header .cactus-comment-displayname {
171 @apply font-semibold;
172 }
173
174 .cactus-container .cactus-comment .cactus-comment-header .cactus-comment-time {
175 @apply text-gray-400 text-sm;
176 }
177
178 .cactus-container .cactus-comment .cactus-message-text code {
179 @apply bg-yellow-100 rounded px-2 py-1 text-xs font-medium;
180 }
181
182 /* Unordered list */
183 .cactus-container .cactus-comment .cactus-message-text ul {
184 @apply list-disc pl-2 md:pl-6;
185 }
186
187 /* Ordered list */
188 .cactus-container .cactus-comment .cactus-message-text ol {
189 @apply list-decimal pl-2 md:pl-6;
190 }
191
192 /* Cactus: Login */
193 .cactus-container .cactus-login-form-wrapper {
194 @apply border mb-6 p-3 relative rounded;
195 }
196
197 .cactus-container .cactus-login-form .cactus-login-close {
198 @apply absolute right-3 top-3 w-4 h-4;
199 }
200
201 .cactus-container .cactus-login-form .cactus-login-title {
202 @apply font-bold mb-4 mt-0 pt-0;
203 }
204
205 /* Cactus: Login with a button */
206 .cactus-container .cactus-login-form .cactus-login-client {
207 @apply mb-6;
208 }
209
210 .cactus-container .cactus-login-form .cactus-login-client-title {
211 @apply font-semibold mb-2;
212 }
213
214 /* Cactus: Login with credentials */
215 .cactus-container .cactus-login-form .cactus-login-credentials {
216 }
217
218 .cactus-container .cactus-login-form .cactus-login-credentials-title {
219 @apply font-semibold mb-1;
220 }
221
222 .cactus-container .cactus-login-form .cactus-login-field {
223 @apply flex gap-4 mb-2 items-center;
224 }
225
226 .cactus-container .cactus-login-form .cactus-login-label {
227 @apply w-20;
228 }
229
230 .cactus-container .cactus-login-form input {
231 @apply border px-2 py-1 rounded;
232 }
233
234 }
235</style>
diff --git a/themes/simple/static/css/tailwind.css b/themes/simple/static/css/tailwind.css
new file mode 100644
index 0000000..199f1c6
--- /dev/null
+++ b/themes/simple/static/css/tailwind.css
@@ -0,0 +1,233 @@
1@tailwind base;
2@tailwind components;
3@tailwind utilities;
4
5/* Container */
6.container-blog {
7 max-width: 700px;
8}
9
10/* User text selection */
11::selection {
12 @apply bg-yellow-100 text-black;
13}
14
15::-moz-selection {
16 @apply bg-yellow-100 text-black;
17}
18
19/* Headings */
20article.single h2 {
21 @apply text-2xl font-bold mb-4 mt-8;
22}
23
24article.single h3 {
25 @apply text-xl font-bold mb-4 mt-8;
26}
27
28article.single h4 {
29 @apply text-lg font-bold mb-4 mt-8;
30}
31
32/* Paragraph */
33article.single p {
34 @apply mb-5;
35}
36
37/* Links */
38article.single a {
39 @apply underline hover:bg-yellow-100;
40}
41
42/* Blockquote */
43article.single blockquote {
44 background-image: url('/general/alert-light.svg');
45 background-size: 30px 30px;
46 background-repeat: no-repeat;
47 background-position: 0 5px;
48 @apply pl-12 my-8;
49}
50
51/* Media: Images, audio, video */
52article.single img {
53 @apply rounded w-full !bg-gray-50 my-8;
54}
55
56article.single video {
57 @apply rounded w-full !bg-gray-50;
58}
59
60article.single audio {
61 @apply w-full mb-6;
62}
63
64/* Code */
65article.single code {
66 @apply bg-yellow-100 rounded px-2 py-1 text-xs font-medium;
67}
68
69article.single pre {
70 @apply !bg-gray-50 rounded text-xs p-4 mb-6 overflow-x-auto;
71}
72
73article.single pre code {
74 background: unset;
75 padding: unset;
76 @apply leading-relaxed;
77}
78
79/* Tables */
80article.single table {
81 @apply w-full border border-black border-collapse mb-4;
82}
83
84article.single table tr,
85article.single table td,
86article.single table th {
87 @apply px-4 py-2 border text-left;
88}
89
90/* Unordered list */
91article.single ul {
92 @apply list-disc pl-6 md:pl-10 mb-6;
93}
94
95/* Ordered list */
96article.single ol {
97 @apply list-decimal pl-8 md:pl-10;
98}
99
100/* Katex */
101article.single .katex-display {
102 @apply my-10;
103}
104
105/* Lazy loading of iframes */
106article.single .ll-iframe {
107 @apply bg-gray-100 rounded;
108}
109
110article.single .ll-iframe::before {
111 @apply h-full flex border-2 border-gray-300 rounded justify-center items-center font-medium text-sm cursor-pointer animate-pulse;
112 content: 'Click here to load resource…';
113}
114
115article.single .ll-iframe.empty::before {
116 content: none;
117}
118
119/* Cactus Comments */
120.comments img {
121 max-width: auto !important;
122 max-width: unset !important;
123 max-width: inherit !important;
124}
125
126.cactus-container .cactus-editor-textarea {
127 @apply border w-full h-32 px-3 py-2 outline-none rounded mb-2;
128}
129
130.cactus-container .cactus-editor-name input {
131 @apply border w-full px-3 py-2 mb-2 outline-none rounded;
132}
133
134.cactus-container .cactus-editor-name {
135 @apply mb-1;
136}
137
138/* Cactus: Buttons */
139.cactus-editor-buttons {
140 @apply flex gap-2;
141}
142
143.cactus-container .cactus-button {
144 @apply text-base bg-gray-200 hover:bg-gray-300 font-medium px-6 py-2 rounded;
145}
146
147.cactus-container .cactus-editor {
148 @apply mb-10;
149}
150
151/* Cactus: Comment List */
152.cactus-container .cactus-comments-list {
153 @apply flex flex-col gap-8;
154}
155
156.cactus-container .cactus-comment {
157 @apply flex gap-4;
158}
159
160.cactus-container .cactus-comment .cactus-comment-avatar img {
161 @apply w-8 h-8 rounded-full;
162}
163
164.cactus-container .cactus-comment .cactus-comment-avatar-placeholder {
165 @apply w-8 h-8 rounded-full bg-gray-300;
166}
167
168.cactus-container .cactus-comment .cactus-comment-header {
169 @apply flex gap-2 items-center;
170}
171
172.cactus-container .cactus-comment .cactus-comment-header .cactus-comment-displayname {
173 @apply font-semibold;
174}
175
176.cactus-container .cactus-comment .cactus-comment-header .cactus-comment-time {
177 @apply text-gray-400 text-sm;
178}
179
180.cactus-container .cactus-comment .cactus-message-text code {
181 @apply bg-yellow-100 rounded px-2 py-1 text-xs font-medium;
182}
183
184/* Unordered list */
185.cactus-container .cactus-comment .cactus-message-text ul {
186 @apply list-disc pl-2 md:pl-6;
187}
188
189/* Ordered list */
190.cactus-container .cactus-comment .cactus-message-text ol {
191 @apply list-decimal pl-2 md:pl-6;
192}
193
194/* Cactus: Login */
195.cactus-container .cactus-login-form-wrapper {
196 @apply border mb-6 p-3 relative rounded;
197}
198
199.cactus-container .cactus-login-form .cactus-login-close {
200 @apply absolute right-3 top-3 w-4 h-4;
201}
202
203.cactus-container .cactus-login-form .cactus-login-title {
204 @apply font-bold mb-4 mt-0 pt-0;
205}
206
207/* Cactus: Login with a button */
208.cactus-container .cactus-login-form .cactus-login-client {
209 @apply mb-6;
210}
211
212.cactus-container .cactus-login-form .cactus-login-client-title {
213 @apply font-semibold mb-2;
214}
215
216/* Cactus: Login with credentials */
217.cactus-container .cactus-login-form .cactus-login-credentials {}
218
219.cactus-container .cactus-login-form .cactus-login-credentials-title {
220 @apply font-semibold mb-1;
221}
222
223.cactus-container .cactus-login-form .cactus-login-field {
224 @apply flex gap-4 mb-2 items-center;
225}
226
227.cactus-container .cactus-login-form .cactus-login-label {
228 @apply w-20;
229}
230
231.cactus-container .cactus-login-form input {
232 @apply border px-2 py-1 rounded;
233}