diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2022-11-03 21:14:50 +0100 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2022-11-03 21:14:50 +0100 |
| commit | 8282239d1cf73ed8e992dc121f45df29fcb2c872 (patch) | |
| tree | e8345e8449c8a53942efd3eaff3300fe597aa5c2 | |
| parent | bdc60d7d56b5384f13feaaccef28e63d77f15933 (diff) | |
| download | mitjafelicijan.com-8282239d1cf73ed8e992dc121f45df29fcb2c872.tar.gz | |
Move to Tailwind 3
| -rwxr-xr-x | .gitignore | 4 | ||||
| -rwxr-xr-x | .vscode/settings.json | 6 | ||||
| -rwxr-xr-x | Makefile | 21 | ||||
| -rw-r--r-- | package.json | 21 | ||||
| -rw-r--r-- | static/general/index.css | 1197 | ||||
| -rwxr-xr-x | static/yap/feed.xml | 53 | ||||
| -rw-r--r-- | static/yap/images/2022-10-10 22-32-46.png | bin | 1611602 -> 0 bytes | |||
| -rwxr-xr-x | static/yap/theme.xsl | 113 | ||||
| -rw-r--r-- | tailwind.config.js | 12 | ||||
| -rwxr-xr-x | themes/simple/layouts/partials/head.html | 6 | ||||
| -rwxr-xr-x | themes/simple/layouts/partials/tailwind.html | 235 | ||||
| -rw-r--r-- | themes/simple/static/css/tailwind.css | 233 |
12 files changed, 1493 insertions, 408 deletions
| @@ -14,3 +14,7 @@ hugo.linux | |||
| 14 | 14 | ||
| 15 | # Openring build | 15 | # Openring build |
| 16 | themes/simple/layouts/partials/openring.html | 16 | themes/simple/layouts/partials/openring.html |
| 17 | |||
| 18 | # NodeJS | ||
| 19 | node_modules/ | ||
| 20 | package-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 | } |
| @@ -1,7 +1,23 @@ | |||
| 1 | dev: openring | 1 | MAKEFLAGS=-j4 |
| 2 | |||
| 3 | dev: tailwind-watch dev-server | ||
| 4 | |||
| 5 | dev-server: openring | ||
| 2 | hugo server --bind=0.0.0.0 --buildDrafts | 6 | hugo server --bind=0.0.0.0 --buildDrafts |
| 3 | 7 | ||
| 4 | deploy: openring | 8 | tailwind-watch: |
| 9 | npx tailwindcss \ | ||
| 10 | -i ./themes/simple/static/css/tailwind.css \ | ||
| 11 | -o ./static/general/index.css \ | ||
| 12 | --jit --minify --watch | ||
| 13 | |||
| 14 | tailwind-build: | ||
| 15 | npx tailwindcss \ | ||
| 16 | -i ./themes/simple/static/css/tailwind.css \ | ||
| 17 | -o ./static/general/index.css \ | ||
| 18 | --jit --minify | ||
| 19 | |||
| 20 | deploy: 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 | ||
| 20 | provision: | 36 | provision: |
| 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 | /* | ||
| 6 | 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) | ||
| 7 | 2. 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 | /* | ||
| 29 | 1. Use a consistent sensible line-height in all browsers. | ||
| 30 | 2. Prevent adjustments of font size after orientation changes in iOS. | ||
| 31 | 3. Use a more readable tab size. | ||
| 32 | 4. Use the user's configured `sans` font-family by default. | ||
| 33 | */ | ||
| 34 | |||
| 35 | html { | ||
| 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 | /* | ||
| 50 | 1. Remove the margin in all browsers. | ||
| 51 | 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. | ||
| 52 | */ | ||
| 53 | |||
| 54 | body { | ||
| 55 | margin: 0; | ||
| 56 | /* 1 */ | ||
| 57 | line-height: inherit; | ||
| 58 | /* 2 */ | ||
| 59 | } | ||
| 60 | |||
| 61 | /* | ||
| 62 | 1. Add the correct height in Firefox. | ||
| 63 | 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) | ||
| 64 | 3. Ensure horizontal rules are visible by default. | ||
| 65 | */ | ||
| 66 | |||
| 67 | hr { | ||
| 68 | height: 0; | ||
| 69 | /* 1 */ | ||
| 70 | color: inherit; | ||
| 71 | /* 2 */ | ||
| 72 | border-top-width: 1px; | ||
| 73 | /* 3 */ | ||
| 74 | } | ||
| 75 | |||
| 76 | /* | ||
| 77 | Add the correct text decoration in Chrome, Edge, and Safari. | ||
| 78 | */ | ||
| 79 | |||
| 80 | abbr:where([title]) { | ||
| 81 | -webkit-text-decoration: underline dotted; | ||
| 82 | text-decoration: underline dotted; | ||
| 83 | } | ||
| 84 | |||
| 85 | /* | ||
| 86 | Remove the default font size and weight for headings. | ||
| 87 | */ | ||
| 88 | |||
| 89 | h1, | ||
| 90 | h2, | ||
| 91 | h3, | ||
| 92 | h4, | ||
| 93 | h5, | ||
| 94 | h6 { | ||
| 95 | font-size: inherit; | ||
| 96 | font-weight: inherit; | ||
| 97 | } | ||
| 98 | |||
| 99 | /* | ||
| 100 | Reset links to optimize for opt-in styling instead of opt-out. | ||
| 101 | */ | ||
| 102 | |||
| 103 | a { | ||
| 104 | color: inherit; | ||
| 105 | text-decoration: inherit; | ||
| 106 | } | ||
| 107 | |||
| 108 | /* | ||
| 109 | Add the correct font weight in Edge and Safari. | ||
| 110 | */ | ||
| 111 | |||
| 112 | b, | ||
| 113 | strong { | ||
| 114 | font-weight: bolder; | ||
| 115 | } | ||
| 116 | |||
| 117 | /* | ||
| 118 | 1. Use the user's configured `mono` font family by default. | ||
| 119 | 2. Correct the odd `em` font sizing in all browsers. | ||
| 120 | */ | ||
| 121 | |||
| 122 | code, | ||
| 123 | kbd, | ||
| 124 | samp, | ||
| 125 | pre { | ||
| 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 | /* | ||
| 133 | Add the correct font size in all browsers. | ||
| 134 | */ | ||
| 135 | |||
| 136 | small { | ||
| 137 | font-size: 80%; | ||
| 138 | } | ||
| 139 | |||
| 140 | /* | ||
| 141 | Prevent `sub` and `sup` elements from affecting the line height in all browsers. | ||
| 142 | */ | ||
| 143 | |||
| 144 | sub, | ||
| 145 | sup { | ||
| 146 | font-size: 75%; | ||
| 147 | line-height: 0; | ||
| 148 | position: relative; | ||
| 149 | vertical-align: baseline; | ||
| 150 | } | ||
| 151 | |||
| 152 | sub { | ||
| 153 | bottom: -0.25em; | ||
| 154 | } | ||
| 155 | |||
| 156 | sup { | ||
| 157 | top: -0.5em; | ||
| 158 | } | ||
| 159 | |||
| 160 | /* | ||
| 161 | 1. 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) | ||
| 162 | 2. 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) | ||
| 163 | 3. Remove gaps between table borders by default. | ||
| 164 | */ | ||
| 165 | |||
| 166 | table { | ||
| 167 | text-indent: 0; | ||
| 168 | /* 1 */ | ||
| 169 | border-color: inherit; | ||
| 170 | /* 2 */ | ||
| 171 | border-collapse: collapse; | ||
| 172 | /* 3 */ | ||
| 173 | } | ||
| 174 | |||
| 175 | /* | ||
| 176 | 1. Change the font styles in all browsers. | ||
| 177 | 2. Remove the margin in Firefox and Safari. | ||
| 178 | 3. Remove default padding in all browsers. | ||
| 179 | */ | ||
| 180 | |||
| 181 | button, | ||
| 182 | input, | ||
| 183 | optgroup, | ||
| 184 | select, | ||
| 185 | textarea { | ||
| 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 | /* | ||
| 203 | Remove the inheritance of text transform in Edge and Firefox. | ||
| 204 | */ | ||
| 205 | |||
| 206 | button, | ||
| 207 | select { | ||
| 208 | text-transform: none; | ||
| 209 | } | ||
| 210 | |||
| 211 | /* | ||
| 212 | 1. Correct the inability to style clickable types in iOS and Safari. | ||
| 213 | 2. Remove default button styles. | ||
| 214 | */ | ||
| 215 | |||
| 216 | button, | ||
| 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 | /* | ||
| 229 | Use the modern Firefox focus style for all focusable elements. | ||
| 230 | */ | ||
| 231 | |||
| 232 | :-moz-focusring { | ||
| 233 | outline: auto; | ||
| 234 | } | ||
| 235 | |||
| 236 | /* | ||
| 237 | Remove 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 | /* | ||
| 245 | Add the correct vertical alignment in Chrome and Firefox. | ||
| 246 | */ | ||
| 247 | |||
| 248 | progress { | ||
| 249 | vertical-align: baseline; | ||
| 250 | } | ||
| 251 | |||
| 252 | /* | ||
| 253 | Correct 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 | /* | ||
| 262 | 1. Correct the odd appearance in Chrome and Safari. | ||
| 263 | 2. 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 | /* | ||
| 274 | Remove the inner padding in Chrome and Safari on macOS. | ||
| 275 | */ | ||
| 276 | |||
| 277 | ::-webkit-search-decoration { | ||
| 278 | -webkit-appearance: none; | ||
| 279 | } | ||
| 280 | |||
| 281 | /* | ||
| 282 | 1. Correct the inability to style clickable types in iOS and Safari. | ||
| 283 | 2. 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 | /* | ||
| 294 | Add the correct display in Chrome and Safari. | ||
| 295 | */ | ||
| 296 | |||
| 297 | summary { | ||
| 298 | display: list-item; | ||
| 299 | } | ||
| 300 | |||
| 301 | /* | ||
| 302 | Removes the default spacing and border for appropriate elements. | ||
| 303 | */ | ||
| 304 | |||
| 305 | blockquote, | ||
| 306 | dl, | ||
| 307 | dd, | ||
| 308 | h1, | ||
| 309 | h2, | ||
| 310 | h3, | ||
| 311 | h4, | ||
| 312 | h5, | ||
| 313 | h6, | ||
| 314 | hr, | ||
| 315 | figure, | ||
| 316 | p, | ||
| 317 | pre { | ||
| 318 | margin: 0; | ||
| 319 | } | ||
| 320 | |||
| 321 | fieldset { | ||
| 322 | margin: 0; | ||
| 323 | padding: 0; | ||
| 324 | } | ||
| 325 | |||
| 326 | legend { | ||
| 327 | padding: 0; | ||
| 328 | } | ||
| 329 | |||
| 330 | ol, | ||
| 331 | ul, | ||
| 332 | menu { | ||
| 333 | list-style: none; | ||
| 334 | margin: 0; | ||
| 335 | padding: 0; | ||
| 336 | } | ||
| 337 | |||
| 338 | /* | ||
| 339 | Prevent resizing textareas horizontally by default. | ||
| 340 | */ | ||
| 341 | |||
| 342 | textarea { | ||
| 343 | resize: vertical; | ||
| 344 | } | ||
| 345 | |||
| 346 | /* | ||
| 347 | 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) | ||
| 348 | 2. Set the default placeholder color to the user's configured gray 400 color. | ||
| 349 | */ | ||
| 350 | |||
| 351 | input::-moz-placeholder, textarea::-moz-placeholder { | ||
| 352 | opacity: 1; | ||
| 353 | /* 1 */ | ||
| 354 | color: #9ca3af; | ||
| 355 | /* 2 */ | ||
| 356 | } | ||
| 357 | |||
| 358 | input::placeholder, | ||
| 359 | textarea::placeholder { | ||
| 360 | opacity: 1; | ||
| 361 | /* 1 */ | ||
| 362 | color: #9ca3af; | ||
| 363 | /* 2 */ | ||
| 364 | } | ||
| 365 | |||
| 366 | /* | ||
| 367 | Set the default cursor for buttons. | ||
| 368 | */ | ||
| 369 | |||
| 370 | button, | ||
| 371 | [role="button"] { | ||
| 372 | cursor: pointer; | ||
| 373 | } | ||
| 374 | |||
| 375 | /* | ||
| 376 | Make sure disabled buttons don't get the pointer cursor. | ||
| 377 | */ | ||
| 378 | |||
| 379 | :disabled { | ||
| 380 | cursor: default; | ||
| 381 | } | ||
| 382 | |||
| 383 | /* | ||
| 384 | 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) | ||
| 385 | 2. 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 | |||
| 389 | img, | ||
| 390 | svg, | ||
| 391 | video, | ||
| 392 | canvas, | ||
| 393 | audio, | ||
| 394 | iframe, | ||
| 395 | embed, | ||
| 396 | object { | ||
| 397 | display: block; | ||
| 398 | /* 1 */ | ||
| 399 | vertical-align: middle; | ||
| 400 | /* 2 */ | ||
| 401 | } | ||
| 402 | |||
| 403 | /* | ||
| 404 | Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) | ||
| 405 | */ | ||
| 406 | |||
| 407 | img, | ||
| 408 | video { | ||
| 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 | |||
| 748 | article.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 | |||
| 756 | article.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 | |||
| 764 | article.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 | |||
| 774 | article.single p { | ||
| 775 | margin-bottom: 1.25rem; | ||
| 776 | } | ||
| 777 | |||
| 778 | /* Links */ | ||
| 779 | |||
| 780 | article.single a { | ||
| 781 | text-decoration-line: underline; | ||
| 782 | } | ||
| 783 | |||
| 784 | article.single a:hover { | ||
| 785 | --tw-bg-opacity: 1; | ||
| 786 | background-color: rgb(254 249 195 / var(--tw-bg-opacity)); | ||
| 787 | } | ||
| 788 | |||
| 789 | /* Blockquote */ | ||
| 790 | |||
| 791 | article.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 | |||
| 803 | article.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 | |||
| 812 | article.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 | |||
| 819 | article.single audio { | ||
| 820 | margin-bottom: 1.5rem; | ||
| 821 | width: 100%; | ||
| 822 | } | ||
| 823 | |||
| 824 | /* Code */ | ||
| 825 | |||
| 826 | article.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 | |||
| 839 | article.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 | |||
| 850 | article.single pre code { | ||
| 851 | background: unset; | ||
| 852 | padding: unset; | ||
| 853 | line-height: 1.625; | ||
| 854 | } | ||
| 855 | |||
| 856 | /* Tables */ | ||
| 857 | |||
| 858 | article.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 | |||
| 867 | article.single table tr, | ||
| 868 | article.single table td, | ||
| 869 | article.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 | |||
| 880 | article.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 | |||
| 894 | article.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 | |||
| 907 | article.single .katex-display { | ||
| 908 | margin-top: 2.5rem; | ||
| 909 | margin-bottom: 2.5rem; | ||
| 910 | } | ||
| 911 | |||
| 912 | /* Lazy loading of iframes */ | ||
| 913 | |||
| 914 | article.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 | |||
| 920 | article.single .ll-iframe::before { | ||
| 921 | display: flex; | ||
| 922 | height: 100%; | ||
| 923 | } | ||
| 924 | |||
| 925 | @keyframes pulse { | ||
| 926 | 50% { | ||
| 927 | opacity: .5; | ||
| 928 | } | ||
| 929 | } | ||
| 930 | |||
| 931 | article.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 | |||
| 946 | article.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} */ | ||
| 2 | module.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 */ | ||
| 20 | article.single h2 { | ||
| 21 | @apply text-2xl font-bold mb-4 mt-8; | ||
| 22 | } | ||
| 23 | |||
| 24 | article.single h3 { | ||
| 25 | @apply text-xl font-bold mb-4 mt-8; | ||
| 26 | } | ||
| 27 | |||
| 28 | article.single h4 { | ||
| 29 | @apply text-lg font-bold mb-4 mt-8; | ||
| 30 | } | ||
| 31 | |||
| 32 | /* Paragraph */ | ||
| 33 | article.single p { | ||
| 34 | @apply mb-5; | ||
| 35 | } | ||
| 36 | |||
| 37 | /* Links */ | ||
| 38 | article.single a { | ||
| 39 | @apply underline hover:bg-yellow-100; | ||
| 40 | } | ||
| 41 | |||
| 42 | /* Blockquote */ | ||
| 43 | article.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 */ | ||
| 52 | article.single img { | ||
| 53 | @apply rounded w-full !bg-gray-50 my-8; | ||
| 54 | } | ||
| 55 | |||
| 56 | article.single video { | ||
| 57 | @apply rounded w-full !bg-gray-50; | ||
| 58 | } | ||
| 59 | |||
| 60 | article.single audio { | ||
| 61 | @apply w-full mb-6; | ||
| 62 | } | ||
| 63 | |||
| 64 | /* Code */ | ||
| 65 | article.single code { | ||
| 66 | @apply bg-yellow-100 rounded px-2 py-1 text-xs font-medium; | ||
| 67 | } | ||
| 68 | |||
| 69 | article.single pre { | ||
| 70 | @apply !bg-gray-50 rounded text-xs p-4 mb-6 overflow-x-auto; | ||
| 71 | } | ||
| 72 | |||
| 73 | article.single pre code { | ||
| 74 | background: unset; | ||
| 75 | padding: unset; | ||
| 76 | @apply leading-relaxed; | ||
| 77 | } | ||
| 78 | |||
| 79 | /* Tables */ | ||
| 80 | article.single table { | ||
| 81 | @apply w-full border border-black border-collapse mb-4; | ||
| 82 | } | ||
| 83 | |||
| 84 | article.single table tr, | ||
| 85 | article.single table td, | ||
| 86 | article.single table th { | ||
| 87 | @apply px-4 py-2 border text-left; | ||
| 88 | } | ||
| 89 | |||
| 90 | /* Unordered list */ | ||
| 91 | article.single ul { | ||
| 92 | @apply list-disc pl-6 md:pl-10 mb-6; | ||
| 93 | } | ||
| 94 | |||
| 95 | /* Ordered list */ | ||
| 96 | article.single ol { | ||
| 97 | @apply list-decimal pl-8 md:pl-10; | ||
| 98 | } | ||
| 99 | |||
| 100 | /* Katex */ | ||
| 101 | article.single .katex-display { | ||
| 102 | @apply my-10; | ||
| 103 | } | ||
| 104 | |||
| 105 | /* Lazy loading of iframes */ | ||
| 106 | article.single .ll-iframe { | ||
| 107 | @apply bg-gray-100 rounded; | ||
| 108 | } | ||
| 109 | |||
| 110 | article.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 | |||
| 115 | article.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 | } | ||
