From c420e19f089ac3bae36c3de2eb000d8c4b048309 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Tue, 14 Jul 2026 18:37:05 +0100 Subject: [PATCH] Replace abandoned spatie/commonmark-highlighter with tempest/highlight Swap the syntax highlighting library and its CSS theme (zenburn -> nord, matching tempest's class names), add padding to code blocks, and commit the missing compressed winter.js assets from the earlier asset rename. Co-Authored-By: Claude Sonnet 5 --- app/Models/Article.php | 8 +- app/Models/Note.php | 8 +- composer.json | 4 +- composer.lock | 196 ++++++++---------------- public/assets/css/app.css | 2 +- public/assets/css/app.css.br | Bin 1216 -> 1233 bytes public/assets/css/app.css.map | 2 +- public/assets/css/app.css.zst | Bin 1463 -> 1479 bytes public/assets/highlight/nord.css | 87 +++++++++++ public/assets/highlight/nord.css.br | Bin 0 -> 307 bytes public/assets/highlight/nord.css.zst | Bin 0 -> 405 bytes public/assets/highlight/zenburn.css | 80 ---------- public/assets/highlight/zenburn.css.br | Bin 342 -> 0 bytes public/assets/highlight/zenburn.css.zst | Bin 439 -> 0 bytes public/assets/js/winter.js.br | Bin 0 -> 1117 bytes public/assets/js/winter.js.zst | Bin 0 -> 1329 bytes resources/css/layout.css | 9 ++ resources/views/master.blade.php | 2 +- resources/views/notes/show.blade.php | 2 +- 19 files changed, 167 insertions(+), 233 deletions(-) create mode 100644 public/assets/highlight/nord.css create mode 100644 public/assets/highlight/nord.css.br create mode 100644 public/assets/highlight/nord.css.zst delete mode 100644 public/assets/highlight/zenburn.css delete mode 100644 public/assets/highlight/zenburn.css.br delete mode 100644 public/assets/highlight/zenburn.css.zst create mode 100644 public/assets/js/winter.js.br create mode 100644 public/assets/js/winter.js.zst diff --git a/app/Models/Article.php b/app/Models/Article.php index ea215757..ab0602d1 100644 --- a/app/Models/Article.php +++ b/app/Models/Article.php @@ -14,11 +14,8 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use League\CommonMark\Environment\Environment; use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; -use League\CommonMark\Extension\CommonMark\Node\Block\FencedCode; -use League\CommonMark\Extension\CommonMark\Node\Block\IndentedCode; use League\CommonMark\MarkdownConverter; -use Spatie\CommonMarkHighlighter\FencedCodeRenderer; -use Spatie\CommonMarkHighlighter\IndentedCodeRenderer; +use Tempest\Highlight\CommonMark\HighlightExtension; #[Table('articles')] #[Fillable(['url', 'title', 'main', 'published'])] @@ -53,8 +50,7 @@ class Article extends Model get: function () { $environment = new Environment; $environment->addExtension(new CommonMarkCoreExtension); - $environment->addRenderer(FencedCode::class, new FencedCodeRenderer); - $environment->addRenderer(IndentedCode::class, new IndentedCodeRenderer); + $environment->addExtension(new HighlightExtension); $markdownConverter = new MarkdownConverter($environment); return $markdownConverter->convert($this->main)->getContent(); diff --git a/app/Models/Note.php b/app/Models/Note.php index 5bf2ad71..af7d2c3d 100644 --- a/app/Models/Note.php +++ b/app/Models/Note.php @@ -25,14 +25,11 @@ use Laravel\Scout\Searchable; use League\CommonMark\Environment\Environment; use League\CommonMark\Extension\Autolink\AutolinkExtension; use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; -use League\CommonMark\Extension\CommonMark\Node\Block\FencedCode; -use League\CommonMark\Extension\CommonMark\Node\Block\IndentedCode; use League\CommonMark\Extension\Mention\Mention; use League\CommonMark\Extension\Mention\MentionExtension; use League\CommonMark\MarkdownConverter; use Normalizer; -use Spatie\CommonMarkHighlighter\FencedCodeRenderer; -use Spatie\CommonMarkHighlighter\IndentedCodeRenderer; +use Tempest\Highlight\CommonMark\HighlightExtension; #[Table('notes')] #[Fillable(['note', 'in_reply_to', 'client_id'])] @@ -354,9 +351,8 @@ class Note extends Model $environment->addExtension(new CommonMarkCoreExtension); $environment->addExtension(new AutolinkExtension); $environment->addExtension(new MentionExtension); + $environment->addExtension(new HighlightExtension); $environment->addRenderer(Mention::class, new MentionRenderer); - $environment->addRenderer(FencedCode::class, new FencedCodeRenderer); - $environment->addRenderer(IndentedCode::class, new IndentedCodeRenderer); $markdownConverter = new MarkdownConverter($environment); return $markdownConverter->convert($note)->getContent(); diff --git a/composer.json b/composer.json index 3cfde5e1..1b94abe8 100644 --- a/composer.json +++ b/composer.json @@ -10,8 +10,8 @@ "ext-dom": "*", "ext-intl": "*", "ext-json": "*", - "ext-pgsql": "*", "ext-pdo": "*", + "ext-pgsql": "*", "ext-sodium": "*", "cviebrock/eloquent-sluggable": "^13.0", "guzzlehttp/guzzle": "^7.2", @@ -27,9 +27,9 @@ "league/commonmark": "^2.0", "league/flysystem-aws-s3-v3": "^3.0", "mf2/mf2": "~0.3", - "spatie/commonmark-highlighter": "^3.0", "spatie/laravel-flare": "^2.2", "symfony/html-sanitizer": "^8.0", + "tempest/highlight": "^2.27", "web-auth/webauthn-lib": "^5.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 2f4a5c3e..65ec1857 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "dfc80df4e7e3401d01e7b0f8d6fa3aa9", + "content-hash": "30db4db4dcfdc487f28e738f0d22d68c", "packages": [ { "name": "aws/aws-crt-php", @@ -4852,84 +4852,6 @@ }, "time": "2026-06-18T03:57:49+00:00" }, - { - "name": "scrivo/highlight.php", - "version": "v9.18.1.10", - "source": { - "type": "git", - "url": "https://github.com/scrivo/highlight.php.git", - "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/850f4b44697a2552e892ffe71490ba2733c2fc6e", - "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=5.4" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.7", - "sabberworm/php-css-parser": "^8.3", - "symfony/finder": "^2.8|^3.4|^5.4", - "symfony/var-dumper": "^2.8|^3.4|^5.4" - }, - "suggest": { - "ext-mbstring": "Allows highlighting code with unicode characters and supports language with unicode keywords" - }, - "type": "library", - "autoload": { - "files": [ - "HighlightUtilities/functions.php" - ], - "psr-0": { - "Highlight\\": "", - "HighlightUtilities\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Geert Bergman", - "homepage": "http://www.scrivo.org/", - "role": "Project Author" - }, - { - "name": "Vladimir Jimenez", - "homepage": "https://allejo.io", - "role": "Maintainer" - }, - { - "name": "Martin Folkers", - "homepage": "https://twobrain.io", - "role": "Contributor" - } - ], - "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js", - "keywords": [ - "code", - "highlight", - "highlight.js", - "highlight.php", - "syntax" - ], - "support": { - "issues": "https://github.com/scrivo/highlight.php/issues", - "source": "https://github.com/scrivo/highlight.php" - }, - "funding": [ - { - "url": "https://github.com/allejo", - "type": "github" - } - ], - "time": "2022-12-17T21:53:22+00:00" - }, { "name": "spatie/backtrace", "version": "1.8.2", @@ -4994,61 +4916,6 @@ ], "time": "2026-03-11T13:48:28+00:00" }, - { - "name": "spatie/commonmark-highlighter", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/commonmark-highlighter.git", - "reference": "d707943b3ce47fcd01240bb85b218e280856d017" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/commonmark-highlighter/zipball/d707943b3ce47fcd01240bb85b218e280856d017", - "reference": "d707943b3ce47fcd01240bb85b218e280856d017", - "shasum": "" - }, - "require": { - "league/commonmark": "^2.0", - "php": "^7.4|^8.0", - "scrivo/highlight.php": "^9.18.1.7" - }, - "require-dev": { - "larapack/dd": "^1.0", - "phpunit/phpunit": "^8.5|^9.4", - "spatie/phpunit-snapshot-assertions": "^2.0|^4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\CommonMarkHighlighter\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Highlight your markdown code blocks with league/commonmark", - "homepage": "https://github.com/spatie/commonmark-highlighter", - "keywords": [ - "commonmark-highlighter", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/commonmark-highlighter/issues", - "source": "https://github.com/spatie/commonmark-highlighter/tree/3.0.0" - }, - "abandoned": "tempest/highlight", - "time": "2021-08-04T18:03:57+00:00" - }, { "name": "spatie/error-solutions", "version": "2.0.5", @@ -8655,6 +8522,65 @@ ], "time": "2026-06-09T10:54:51+00:00" }, + { + "name": "tempest/highlight", + "version": "2.27.0", + "source": { + "type": "git", + "url": "https://github.com/tempestphp/highlight.git", + "reference": "7eaf2f4030cc218320672902608b6226bb13a39a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tempestphp/highlight/zipball/7eaf2f4030cc218320672902608b6226bb13a39a", + "reference": "7eaf2f4030cc218320672902608b6226bb13a39a", + "shasum": "" + }, + "require": { + "php": "^8.4" + }, + "require-dev": { + "assertchris/ellison": "^1.0.2", + "friendsofphp/php-cs-fixer": "^3.84", + "league/commonmark": "^2.4", + "phpbench/phpbench": "^1.4", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^12.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "suggest": { + "assertchris/ellison": "Allows you to analyse sentence complexity", + "league/commonmark": "Adds markdown support" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tempest\\Highlight\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brent Roose", + "email": "brendt@stitcher.io" + } + ], + "description": "Fast, extensible, server-side code highlighting", + "support": { + "issues": "https://github.com/tempestphp/highlight/issues", + "source": "https://github.com/tempestphp/highlight/tree/2.27.0" + }, + "funding": [ + { + "url": "https://github.com/brendt", + "type": "github" + } + ], + "time": "2026-06-29T09:11:42+00:00" + }, { "name": "tijsverkoyen/css-to-inline-styles", "version": "v2.4.0", @@ -12988,8 +12914,8 @@ "ext-dom": "*", "ext-intl": "*", "ext-json": "*", - "ext-pgsql": "*", "ext-pdo": "*", + "ext-pgsql": "*", "ext-sodium": "*" }, "platform-dev": {}, diff --git a/public/assets/css/app.css b/public/assets/css/app.css index 6b2bddd5..4e2ebd32 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1,2 +1,2 @@ -@layer reset{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin-block-end:0}ul[role=list],ol[role=list]{list-style:none}body{line-height:1.5}h1,h2,h3,h4,button,input,label{line-height:1.1}h1,h2,h3,h4{text-wrap:balance}a:not([class]){text-decoration-skip-ink:auto;color:currentColor}img,picture{max-width:100%;height:auto;display:block}input,button,textarea,select{font-family:inherit;font-size:inherit}textarea:not([rows]){min-height:10em}:target{scroll-margin-block:5ex}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}}@layer base{:root{color-scheme:light dark;--primary-hue:307;--clr-text:light-dark(oklch(5% .1 var(--primary-hue)),oklch(100% .1 var(--primary-hue)));--clr-background:light-dark(oklch(100% .1 var(--primary-hue)),oklch(15% .15 var(--primary-hue)));--clr-border:light-dark(oklch(90% .2 var(--primary-hue)),oklch(25% .1 var(--primary-hue)));--clr-snow-fall:light-dark(oklch(25% .15 var(--primary-hue)),oklch(85% .2 var(--primary-hue)))}body{background-color:var(--clr-background);color:var(--clr-text)}:root{--border-radius:8px}html{font-size:125%}body{grid-template-rows:min-content 1fr min-content;grid-template-columns:1fr min(80ch,80vw) 1fr;padding-inline:4vw;display:grid;&>header{grid-column:1/-1}&>main{grid-column:2/3}&>footer{grid-column:1/-1;margin-block-start:2ex;& search form{flex-direction:row;align-items:center;gap:1ex;display:flex;& input{min-width:0}}}}.h-feed{flex-direction:column;gap:2ex;display:flex}}@layer components{body>header{grid-template-rows:auto auto;grid-template-columns:auto 1fr auto;align-items:baseline;gap:1rem;display:grid;& a{text-decoration:none}& h1{text-wrap:nowrap;margin:0}& nav{flex-direction:row;gap:.5rem;display:flex;@media screen and (width<=1100px){flex-wrap:wrap;grid-area:2/1/auto/span 3}}}.note{border:1px solid var(--clr-border);border-radius:var(--border-radius);flex-direction:column;padding:1ex 2ex;display:flex;& .e-content{&>p:first-child{margin-block-start:0}& .u-photo{width:100%;height:auto}}& .syndication-links{flex-direction:row;gap:1ex;display:flex;& svg{border-radius:4px;width:auto;height:1lh}}}.reply-to{border:1px solid var(--clr-border);border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom:none;margin-inline:2ex;padding-inline:1ex;font-size:85%}.pagination{flex-direction:row;justify-content:center;align-items:center;display:flex;& div{flex-direction:row;gap:1ex;display:flex}}#theme-selector{& button{appearance:none;background:0 0;border:none;&:hover{cursor:pointer}}& #theme-selector-dropdown{position-area:block-end span-inline-start;border:2px solid var(--clr-border);background-color:var(--clr-background);color:var(--clr-text);margin:0;position:absolute;& fieldset{border:0;flex-direction:row;gap:1ch;display:flex;& input{display:none}}}@media (prefers-reduced-motion:no-preference){& #theme-selector-dropdown{&:popover-open{opacity:1;transform:translateY(0)scale(1);@starting-style{opacity:0;transform:translateY(30px)scale(0)}}opacity:0;transition:transform, opacity, display allow-discrete, overlay allow-discrete;transform-origin:100% 0;transition-duration:.5s;transform:translateY(0)scale(0)}}}::view-transition-group(changing-theme){animation-duration:1.25s}::view-transition-new(changing-theme),::view-transition-old(changing-theme){mix-blend-mode:normal}::view-transition-new(changing-theme){animation-name:reveal}::view-transition-old(changing-theme){animation:none}@keyframes reveal{0%{clip-path:polygon(-30% 0,-30% 0,-15% 100%,-10% 115%)}to{clip-path:polygon(-30% 0,130% 0,115% 100%,-10% 115%)}}} +@layer reset{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin-block-end:0}ul[role=list],ol[role=list]{list-style:none}body{line-height:1.5}h1,h2,h3,h4,button,input,label{line-height:1.1}h1,h2,h3,h4{text-wrap:balance}a:not([class]){text-decoration-skip-ink:auto;color:currentColor}img,picture{max-width:100%;height:auto;display:block}input,button,textarea,select{font-family:inherit;font-size:inherit}textarea:not([rows]){min-height:10em}:target{scroll-margin-block:5ex}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}}@layer base{:root{color-scheme:light dark;--primary-hue:307;--clr-text:light-dark(oklch(5% .1 var(--primary-hue)),oklch(100% .1 var(--primary-hue)));--clr-background:light-dark(oklch(100% .1 var(--primary-hue)),oklch(15% .15 var(--primary-hue)));--clr-border:light-dark(oklch(90% .2 var(--primary-hue)),oklch(25% .1 var(--primary-hue)));--clr-snow-fall:light-dark(oklch(25% .15 var(--primary-hue)),oklch(85% .2 var(--primary-hue)))}body{background-color:var(--clr-background);color:var(--clr-text)}:root{--border-radius:8px}html{font-size:125%}body{grid-template-rows:min-content 1fr min-content;grid-template-columns:1fr min(80ch,80vw) 1fr;padding-inline:4vw;display:grid;&>header{grid-column:1/-1}&>main{grid-column:2/3}&>footer{grid-column:1/-1;margin-block-start:2ex;& search form{flex-direction:row;align-items:center;gap:1ex;display:flex;& input{min-width:0}}}}.h-feed{flex-direction:column;gap:2ex;display:flex}}@layer components{.h-entry{& pre{padding:1rem}}body>header{grid-template-rows:auto auto;grid-template-columns:auto 1fr auto;align-items:baseline;gap:1rem;display:grid;& a{text-decoration:none}& h1{text-wrap:nowrap;margin:0}& nav{flex-direction:row;gap:.5rem;display:flex;@media screen and (width<=1100px){flex-wrap:wrap;grid-area:2/1/auto/span 3}}}.note{border:1px solid var(--clr-border);border-radius:var(--border-radius);flex-direction:column;padding:1ex 2ex;display:flex;& .e-content{&>p:first-child{margin-block-start:0}& .u-photo{width:100%;height:auto}}& .syndication-links{flex-direction:row;gap:1ex;display:flex;& svg{border-radius:4px;width:auto;height:1lh}}}.reply-to{border:1px solid var(--clr-border);border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom:none;margin-inline:2ex;padding-inline:1ex;font-size:85%}.pagination{flex-direction:row;justify-content:center;align-items:center;display:flex;& div{flex-direction:row;gap:1ex;display:flex}}#theme-selector{& button{appearance:none;background:0 0;border:none;&:hover{cursor:pointer}}& #theme-selector-dropdown{position-area:block-end span-inline-start;border:2px solid var(--clr-border);background-color:var(--clr-background);color:var(--clr-text);margin:0;position:absolute;& fieldset{border:0;flex-direction:row;gap:1ch;display:flex;& input{display:none}}}@media (prefers-reduced-motion:no-preference){& #theme-selector-dropdown{&:popover-open{opacity:1;transform:translateY(0)scale(1);@starting-style{opacity:0;transform:translateY(30px)scale(0)}}opacity:0;transition:transform, opacity, display allow-discrete, overlay allow-discrete;transform-origin:100% 0;transition-duration:.5s;transform:translateY(0)scale(0)}}}::view-transition-group(changing-theme){animation-duration:1.25s}::view-transition-new(changing-theme),::view-transition-old(changing-theme){mix-blend-mode:normal}::view-transition-new(changing-theme){animation-name:reveal}::view-transition-old(changing-theme){animation:none}@keyframes reveal{0%{clip-path:polygon(-30% 0,-30% 0,-15% 100%,-10% 115%)}to{clip-path:polygon(-30% 0,130% 0,115% 100%,-10% 115%)}}} /*# sourceMappingURL=/assets/css/app.css.map */ diff --git a/public/assets/css/app.css.br b/public/assets/css/app.css.br index 9c004c03115b5d08c6ac093ab2bd0ff483942c5f..eeec79a35027043c8a76e16f3f60ad4ad6679731 100644 GIT binary patch literal 1233 zcmX^3qnzP^&4ygj*WJubJl%;JoPT|5ZiPg5y;vBobhN?ZzN1IrMX&2gQ>X4<`TK6_ zs~Z{p9j$Zpe($$mxYj=Mvq@wHoYqop^ggR=ziV(Ye~X`0bBp`=%cD+9$Pl zQCyVH$!c+}v)(sO*LNLOl{$W1GW>s+v{~cLn-X)Vco1{UuUWN^~)VvDYM^NVRnJb z_BD|wz8UR47PoD#`8Lk^JW6+G+}twv>Z0}cRF=>1WPZqJF37^HqW*oJ?&}~WD}_z1 zQg8eBDpmeDzv7K&+d=*BS9UIL|35$J|AJ5)Uv4bzg z<*QL}TYf{1LCB)#!WXt4b}{^<>~~muM=dM=D`7d;&~>Grr}HMfdhko4c)IN}?%62^ zpOn}!HH3WpCt_=LG3I38a<7INv&2^R^`$UrB<|-su(x)8wtGlTry6_dY%GFu&24AmPzPhIVW$Rnz zgKw)$-+39Oy%XKEI`~|Qzw7OT@%%4rymi;@5)uBd^6c^9-D`#Hrc6HnnT_M4yv(yZ zM=E}te_~`mEB1gkp^;YHse{_F-Xe>Dmpi zG>czIr(`-UnY!>w`<{Ud&aawV=^-@SH0lKn#8 zJljj@mWkh=rB2$byT6^iGv?B)rvm+Vx9sJp;kwTM+izm@>WiUTmX{;drA}rmvi<)v z|Ngm%BmaN>5St*T)LExB@#6Zp7ZJa=Jq^&+ahB=0`sCZYn)RnI&sIJsv!K{@k&w=z MfYoP|ol`rr>tsq^Y*WObd$-#jjs)7@WGTeC8(^@0~(7mZnzD(@3?tdB}3EHv7BF zIcu(jaPD_FZ6>?tP2!|atG90V(3$Vy8I}_7|6c8~apH|X3Not}Dy&Er`*qto_gs#_ z+VdiuF7~E*lNb6c<*qdFuzJz>Wl^Bf({8rC$-AUp-}?AhJe<$_XV#als#Ld0-}P3R z$SX~&(e9g`A%8z()yJjNvV2wjf=xU@T9m47n0;buy^OUS8r z+?#ItbQYKcTp{u&_j>1jc=EDtYQvax+n7Gos9=LINvG#>~$;r zcWl}lQzr*|{0))zfzI4JOaT?V^3eU1U~w9$Xx{Dey`A?5!^8PZA&S-%zw&diQSkR*v|C z_pZKJvHjW#17G#LOs?jef>SvknC|QJZg}m$6LNmG=o$Gp;h(Fnt&2GIV5efD#Ggy^ zoq5l%6L8qBxM0nx;^R+_1Wu5e_-%&qgt?2ldyYI#zWH}ile6ou;4d#+idExdf;gA1 zd>Lf6nD=(0m`?7Uy`1y2wL)sTXDF_)`uG05qS`JQr&{)(4yO!sxVs}3U%tP`poM{T zuB$K0akVFU3octqoZ1pD9r^!-TSG~bjbG6D@-@e27{BX$sMPU<<@m-GGd(1JhbAVw z`Q_|sJo{3n^tJE-s}B<&>NzSuQ>f-Cuz%uWP49R9GSFzC{oFHqkH^0)-^;S{nS#J; zURlYThihAX{w!ZCeQ%9_CHuTjU2{&I)p(Q7Rh;K)^Ivl75{KD>Nrzk97+)_cwKmxl zQ&-h4_Fe4EmPdI$JNWeDyiP`MYvq@{d{P4i8Bs9qW;~l}?KU-$`?b*?HeYHl`pZ9+EnYKEq-1IMf`X*dn qqwc}B-VEX2ceu4Gc6eIf-}vd*>%gD(b3aa;nlQK3&wh$x04o46N?Tz7 diff --git a/public/assets/css/app.css.map b/public/assets/css/app.css.map index 6f88e2f2..b817d58d 100644 --- a/public/assets/css/app.css.map +++ b/public/assets/css/app.css.map @@ -1 +1 @@ -{"version":3,"mappings":"AACA,aCGE,uCAOA,oFASA,8DAMA,4CAMA,qBAKA,+CAMA,8BAMA,gEAMA,qDAQA,mEAOA,qCAKA,gCAKA,gCACE,wGDhFJ,YEAE,oaAwBA,kEKxBA,0BAIA,oBAIA,iIAME,0BAIA,uBAIA,iDAIE,yEAME,uBAON,oDPvCF,kBGAE,wHAOE,yBAIA,+BAKA,gDAKE,kCAAqC,2CErBzC,+HAOE,aACE,qCAIA,mCAMF,6DAKE,gDAQJ,4MD/BA,sFAME,+CENF,gBACE,oDAKE,wBAMF,gMAQE,4DAME,uBAUJ,8CACE,2BACE,yDAQE,gBAAiB,8CAST,0KAahB,iEAIA,kGAKA,4DAIA,qDAIA","sources":["resources/css/app.css","resources/css/reset.css","resources/css/colours.css","resources/css/header.css","resources/css/pagination.css","resources/css/theme-selector.css","resources/css/layout.css","resources/css/notes.css"],"sourcesContent":["/* First thing we need to do is declare our cascade layers */\n@layer reset, base, components;\n\n@import url('reset.css');\n@import url('colours.css');\n@import url('layout.css');\n@import url('header.css');\n@import url('notes.css');\n@import url('pagination.css');\n@import url('theme-selector.css');\n","@layer reset {\n /* Sourced from https://piccalil.li/blog/a-more-modern-css-reset/ */\n\n /* Box sizing rules */\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n /* Prevent font size inflation */\n html {\n /* stylelint-disable property-no-vendor-prefix */\n -moz-text-size-adjust: none;\n -webkit-text-size-adjust: none;\n /* stylelint-enable property-no-vendor-prefix */\n text-size-adjust: none;\n }\n\n /* Remove default margin in favour of better control in authored CSS */\n body, h1, h2, h3, h4, p,\n figure, blockquote, dl, dd {\n margin-block-end: 0;\n }\n\n /* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */\n ul[role='list'],\n ol[role='list'] {\n list-style: none;\n }\n\n /* Set core body defaults */\n body {\n line-height: 1.5;\n }\n\n /* Set shorter line heights on headings and interactive elements */\n h1, h2, h3, h4,\n button, input, label {\n line-height: 1.1;\n }\n\n /* Balance text wrapping on headings */\n h1, h2,\n h3, h4 {\n text-wrap: balance;\n }\n\n /* A elements that don't have a class get default styles */\n a:not([class]) {\n text-decoration-skip-ink: auto;\n color: currentcolor;\n }\n\n /* Make images easier to work with */\n img,\n picture {\n max-width: 100%;\n height: auto;\n display: block;\n }\n\n /* Inherit fonts for inputs and buttons */\n input, button,\n textarea, select {\n font-family: inherit;\n font-size: inherit;\n }\n\n /* Make sure textareas without a rows attribute are not tiny */\n textarea:not([rows]) {\n min-height: 10em;\n }\n\n /* Anything that has been anchored to should have extra scroll margin */\n :target {\n scroll-margin-block: 5ex;\n }\n\n /* Disable view transition animations for users who don’t want them */\n @media (prefers-reduced-motion) {\n ::view-transition-group(*),\n ::view-transition-old(*),\n ::view-transition-new(*) {\n animation: none !important;\n }\n }\n}\n","@layer base {\n :root {\n color-scheme: light dark;\n\n --primary-hue: 307;\n --clr-text: light-dark(\n oklch(5% 0.1 var(--primary-hue)),\n oklch(100% 0.1 var(--primary-hue))\n );\n --clr-background: light-dark(\n oklch(100% 0.1 var(--primary-hue)),\n oklch(15% 0.15 var(--primary-hue))\n );\n --clr-border: light-dark(\n oklch(90% 0.2 var(--primary-hue)),\n oklch(25% 0.1 var(--primary-hue))\n );\n\n /* Adding snow fall colour whilst we are using it */\n --clr-snow-fall: light-dark(\n oklch(25% 0.15 var(--primary-hue)),\n oklch(85% 0.2 var(--primary-hue))\n );\n }\n\n body {\n background-color: var(--clr-background);\n color: var(--clr-text);\n }\n}\n","@layer components {\n body > header {\n display: grid;\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto auto;\n align-items: baseline;\n gap: 1rem;\n\n a {\n text-decoration: none;\n }\n\n h1 {\n margin: 0;\n text-wrap: nowrap;\n }\n\n nav {\n display: flex;\n flex-direction: row;\n gap: .5rem;\n\n @media screen and (width <= 1100px) {\n grid-row: 2;\n grid-column: 1 / span 3;\n flex-wrap: wrap;\n }\n }\n }\n}\n","@layer components {\n .pagination {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n\n div {\n display: flex;\n flex-direction: row;\n gap: 1ex;\n }\n }\n}\n","@layer components {\n #theme-selector {\n button {\n appearance: none;\n border: none;\n background: none;\n\n &:hover {\n cursor: pointer;\n }\n }\n\n /* This is the element with the [popover] attribute */\n #theme-selector-dropdown {\n position: absolute;\n position-area: block-end span-inline-start;\n margin: 0;\n border: 2px solid var(--clr-border);\n background-color: var(--clr-background);\n color: var(--clr-text);\n\n fieldset {\n border: 0;\n display: flex;\n flex-direction: row;\n gap: 1ch;\n\n input {\n display: none;\n }\n }\n }\n\n /*\n * This is the element with the [popover] attribute\n * Here we are styling the open and closing animations\n */\n @media (prefers-reduced-motion: no-preference) {\n #theme-selector-dropdown {\n &:popover-open {\n transform: translateY(0) scale(1);\n opacity: 1;\n\n /*\n * Start styles for the opening transition.\n * Added to :popover-open, but after the opened styles.\n */\n @starting-style {\n transform: translateY(30px) scale(0);\n opacity: 0;\n }\n }\n\n /*\n * End styles for the closing transition.\n */\n transform: translateY(0) scale(0);\n opacity: 0;\n\n /*\n * Enumerate transitioning properties, including display and overlay.\n */\n transition: transform, opacity, display allow-discrete, overlay allow-discrete;\n transition-duration: 0.5s;\n transform-origin: top right;\n }\n }\n }\n\n ::view-transition-group(changing-theme) {\n animation-duration: 1.25s;\n }\n\n ::view-transition-new(changing-theme),\n ::view-transition-old(changing-theme) {\n mix-blend-mode: normal;\n }\n\n ::view-transition-new(changing-theme) {\n animation-name: reveal;\n }\n\n ::view-transition-old(changing-theme) {\n animation: none;\n }\n\n @keyframes reveal {\n from {\n clip-path: polygon(-30% 0, -30% 0, -15% 100%, -10% 115%);\n }\n\n to {\n clip-path: polygon(-30% 0, 130% 0, 115% 100%, -10% 115%);\n }\n }\n}\n","@layer base {\n :root {\n --border-radius: 8px;\n }\n\n html {\n font-size: 125%;\n }\n\n body {\n display: grid;\n grid-template-columns: 1fr min(80ch, 80vw) 1fr;\n grid-template-rows: min-content 1fr min-content;\n padding-inline: 4vw;\n\n > header {\n grid-column: 1/-1;\n }\n\n > main {\n grid-column: 2/3;\n }\n\n > footer {\n grid-column: 1/-1;\n margin-block-start: 2ex;\n\n search form {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 1ex;\n\n input {\n min-width: 0;\n }\n }\n }\n }\n\n .h-feed {\n display: flex;\n flex-direction: column;\n gap: 2ex;\n }\n}\n","@layer components {\n .note {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--clr-border);\n border-radius: var(--border-radius);\n padding: 1ex 2ex;\n\n .e-content {\n > p:first-child {\n margin-block-start: 0;\n }\n\n .u-photo {\n width: 100%;\n height: auto;\n }\n }\n\n .syndication-links {\n display: flex;\n flex-direction: row;\n gap: 1ex;\n\n svg {\n border-radius: 4px;\n width: auto;\n height: 1lh;\n }\n }\n }\n\n .reply-to {\n font-size: 85%;\n margin-inline: 2ex;\n padding-inline: 1ex;\n border: 1px solid var(--clr-border);\n border-bottom: none;\n border-top-left-radius: var(--border-radius);\n border-top-right-radius: var(--border-radius);\n }\n}\n"],"names":[]} \ No newline at end of file +{"version":3,"mappings":"AACA,aCGE,uCAOA,oFASA,8DAMA,4CAMA,qBAKA,+CAMA,8BAMA,gEAMA,qDAQA,mEAOA,qCAKA,gCAKA,gCACE,wGDhFJ,YEAE,oaAwBA,kECxBA,0BAIA,oBAIA,iIAME,0BAIA,uBAIA,iDAIE,yEAME,uBAON,oDHvCF,kBG+CE,SACE,oBChDF,wHAOE,yBAIA,+BAKA,gDAKE,kCAAqC,2CCrBzC,+HAOE,aACE,qCAIA,mCAMF,6DAKE,gDAQJ,4MC/BA,sFAME,+CCNF,gBACE,oDAKE,wBAMF,gMAQE,4DAME,uBAUJ,8CACE,2BACE,yDAQE,gBAAiB,8CAST,0KAahB,iEAIA,kGAKA,4DAIA,qDAIA","sources":["resources/css/app.css","resources/css/layout.css","resources/css/colours.css","resources/css/reset.css","resources/css/theme-selector.css","resources/css/header.css","resources/css/pagination.css","resources/css/notes.css"],"sourcesContent":["/* First thing we need to do is declare our cascade layers */\n@layer reset, base, components;\n\n@import url('reset.css');\n@import url('colours.css');\n@import url('layout.css');\n@import url('header.css');\n@import url('notes.css');\n@import url('pagination.css');\n@import url('theme-selector.css');\n","@layer base {\n :root {\n --border-radius: 8px;\n }\n\n html {\n font-size: 125%;\n }\n\n body {\n display: grid;\n grid-template-columns: 1fr min(80ch, 80vw) 1fr;\n grid-template-rows: min-content 1fr min-content;\n padding-inline: 4vw;\n\n > header {\n grid-column: 1/-1;\n }\n\n > main {\n grid-column: 2/3;\n }\n\n > footer {\n grid-column: 1/-1;\n margin-block-start: 2ex;\n\n search form {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 1ex;\n\n input {\n min-width: 0;\n }\n }\n }\n }\n\n .h-feed {\n display: flex;\n flex-direction: column;\n gap: 2ex;\n }\n}\n\n@layer components {\n .h-entry {\n pre {\n padding: 1rem;\n }\n }\n}\n\n","@layer base {\n :root {\n color-scheme: light dark;\n\n --primary-hue: 307;\n --clr-text: light-dark(\n oklch(5% 0.1 var(--primary-hue)),\n oklch(100% 0.1 var(--primary-hue))\n );\n --clr-background: light-dark(\n oklch(100% 0.1 var(--primary-hue)),\n oklch(15% 0.15 var(--primary-hue))\n );\n --clr-border: light-dark(\n oklch(90% 0.2 var(--primary-hue)),\n oklch(25% 0.1 var(--primary-hue))\n );\n\n /* Adding snow fall colour whilst we are using it */\n --clr-snow-fall: light-dark(\n oklch(25% 0.15 var(--primary-hue)),\n oklch(85% 0.2 var(--primary-hue))\n );\n }\n\n body {\n background-color: var(--clr-background);\n color: var(--clr-text);\n }\n}\n","@layer reset {\n /* Sourced from https://piccalil.li/blog/a-more-modern-css-reset/ */\n\n /* Box sizing rules */\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n /* Prevent font size inflation */\n html {\n /* stylelint-disable property-no-vendor-prefix */\n -moz-text-size-adjust: none;\n -webkit-text-size-adjust: none;\n /* stylelint-enable property-no-vendor-prefix */\n text-size-adjust: none;\n }\n\n /* Remove default margin in favour of better control in authored CSS */\n body, h1, h2, h3, h4, p,\n figure, blockquote, dl, dd {\n margin-block-end: 0;\n }\n\n /* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */\n ul[role='list'],\n ol[role='list'] {\n list-style: none;\n }\n\n /* Set core body defaults */\n body {\n line-height: 1.5;\n }\n\n /* Set shorter line heights on headings and interactive elements */\n h1, h2, h3, h4,\n button, input, label {\n line-height: 1.1;\n }\n\n /* Balance text wrapping on headings */\n h1, h2,\n h3, h4 {\n text-wrap: balance;\n }\n\n /* A elements that don't have a class get default styles */\n a:not([class]) {\n text-decoration-skip-ink: auto;\n color: currentcolor;\n }\n\n /* Make images easier to work with */\n img,\n picture {\n max-width: 100%;\n height: auto;\n display: block;\n }\n\n /* Inherit fonts for inputs and buttons */\n input, button,\n textarea, select {\n font-family: inherit;\n font-size: inherit;\n }\n\n /* Make sure textareas without a rows attribute are not tiny */\n textarea:not([rows]) {\n min-height: 10em;\n }\n\n /* Anything that has been anchored to should have extra scroll margin */\n :target {\n scroll-margin-block: 5ex;\n }\n\n /* Disable view transition animations for users who don’t want them */\n @media (prefers-reduced-motion) {\n ::view-transition-group(*),\n ::view-transition-old(*),\n ::view-transition-new(*) {\n animation: none !important;\n }\n }\n}\n","@layer components {\n #theme-selector {\n button {\n appearance: none;\n border: none;\n background: none;\n\n &:hover {\n cursor: pointer;\n }\n }\n\n /* This is the element with the [popover] attribute */\n #theme-selector-dropdown {\n position: absolute;\n position-area: block-end span-inline-start;\n margin: 0;\n border: 2px solid var(--clr-border);\n background-color: var(--clr-background);\n color: var(--clr-text);\n\n fieldset {\n border: 0;\n display: flex;\n flex-direction: row;\n gap: 1ch;\n\n input {\n display: none;\n }\n }\n }\n\n /*\n * This is the element with the [popover] attribute\n * Here we are styling the open and closing animations\n */\n @media (prefers-reduced-motion: no-preference) {\n #theme-selector-dropdown {\n &:popover-open {\n transform: translateY(0) scale(1);\n opacity: 1;\n\n /*\n * Start styles for the opening transition.\n * Added to :popover-open, but after the opened styles.\n */\n @starting-style {\n transform: translateY(30px) scale(0);\n opacity: 0;\n }\n }\n\n /*\n * End styles for the closing transition.\n */\n transform: translateY(0) scale(0);\n opacity: 0;\n\n /*\n * Enumerate transitioning properties, including display and overlay.\n */\n transition: transform, opacity, display allow-discrete, overlay allow-discrete;\n transition-duration: 0.5s;\n transform-origin: top right;\n }\n }\n }\n\n ::view-transition-group(changing-theme) {\n animation-duration: 1.25s;\n }\n\n ::view-transition-new(changing-theme),\n ::view-transition-old(changing-theme) {\n mix-blend-mode: normal;\n }\n\n ::view-transition-new(changing-theme) {\n animation-name: reveal;\n }\n\n ::view-transition-old(changing-theme) {\n animation: none;\n }\n\n @keyframes reveal {\n from {\n clip-path: polygon(-30% 0, -30% 0, -15% 100%, -10% 115%);\n }\n\n to {\n clip-path: polygon(-30% 0, 130% 0, 115% 100%, -10% 115%);\n }\n }\n}\n","@layer components {\n body > header {\n display: grid;\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto auto;\n align-items: baseline;\n gap: 1rem;\n\n a {\n text-decoration: none;\n }\n\n h1 {\n margin: 0;\n text-wrap: nowrap;\n }\n\n nav {\n display: flex;\n flex-direction: row;\n gap: .5rem;\n\n @media screen and (width <= 1100px) {\n grid-row: 2;\n grid-column: 1 / span 3;\n flex-wrap: wrap;\n }\n }\n }\n}\n","@layer components {\n .pagination {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n\n div {\n display: flex;\n flex-direction: row;\n gap: 1ex;\n }\n }\n}\n","@layer components {\n .note {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--clr-border);\n border-radius: var(--border-radius);\n padding: 1ex 2ex;\n\n .e-content {\n > p:first-child {\n margin-block-start: 0;\n }\n\n .u-photo {\n width: 100%;\n height: auto;\n }\n }\n\n .syndication-links {\n display: flex;\n flex-direction: row;\n gap: 1ex;\n\n svg {\n border-radius: 4px;\n width: auto;\n height: 1lh;\n }\n }\n }\n\n .reply-to {\n font-size: 85%;\n margin-inline: 2ex;\n padding-inline: 1ex;\n border: 1px solid var(--clr-border);\n border-bottom: none;\n border-top-left-radius: var(--border-radius);\n border-top-right-radius: var(--border-radius);\n }\n}\n"],"names":[]} \ No newline at end of file diff --git a/public/assets/css/app.css.zst b/public/assets/css/app.css.zst index eec4c8ba947529614427e21aa987e4f91935c477..d258af4911e60e0e789b20b7c9b38a6b5d8fb617 100644 GIT binary patch delta 1291 zcmdnaeVm(DW2^q(6b8Ptx(ugWJtp#M*6(20#;}LsevFIfjm7DHdVDWlHTA!d+xYbF zEX%(a*SVK??K&Q^@$P!_$ICos6w7xv{8)SD(Y{=ropKA$K0dbZsj}oTdUDc4?Vkc@kE=c^7U&|S9L93;mZ7Y zZ*9nu$1yrQ22nK|ay7aaDby&g^jyNo!*b-_V!>1L+6N5kb@~)c3-zWJ$?enKdvt=L zndslV_$klLvewFf->X`}xS-oxS?2a@*GPvGEABo_i>Vh)WRL9D;tfp}Gc7ZnD__>> z@mk86HS|!=(tFwIlkKc)>O)WXlo(u!n_GS^pd|Z~%pLdIH|=(hj~7RNTkGw2eGVhf zWgQKEd)42+uRifCo4lS;sa_?~y>QC2xbrF#d7r*NG2zjvl>sJQtx6Mlo0vPUJX&_* zO^%V!gx)h*3rcQG(Mrh|OP&7GLEZ1Ud!KINX4m98ktr*BT4t+We`rykvQ6ztxz@VF zH)4Z@>iApl`8UnbKVMRyvM1vG@5?{mwL5O?$V+T;&YiL-@?5T@S3!Z20F$Qb&e!-I@s)D@(iuFF-wZp;d$$#> zP&uG`g30%X#@yE~-+r>L+*9t%G^;{+)q}Jhj?X{2yj0t*w`lpdf(Q=w*@wJTf?Ags zr~mhQcQNP3Mz?j7x!(0?ubE(BufWATCo{c6Jp9~a1q)e$`m-vbEz1|CWUa3LsA!>J z*8TjNS)qXLb6&fbQyg42b^0vstDSdqb$jNA+0XM@4d1W77*yu)r^NZS=ntPcN$v;T z)ManXI^45#rS2*QW=W-u$8%Vn_ia-6_UnlAk_Gjb1g6D(X=HDD9NxHE$Rcf)bk+>j z^#*aPdGroOq$Wt~Kl&C`@mMFU+lP~%OaFI^3p>XjXRV6)dlHHsE~{L;OH8)Mc#C)4 ziPSX`8EoC9yR0)*e^~JAO%0elw`5kbY{sXX?{7c+p0RYEcjt{uH`V+?qWAsiyVQP& KC-jt2_6z_tXk)Md delta 1279 zcmX@ky`7s^W2^q(l*hcjx(ugWBqs7|)^BCl%&>#O>yVsnaZ#Z|xOh#<_YU3n*U!A{ zFSA_~e93lM*W0?ilIE_5=KPLeIg+0$_B}WGkI{+wUe zx>r7LO=_c^|Fy< zUxoLhox~Y-?JzmCac|rd)|Q@IvU$h8h6|QW*t+6UfN5G_a`@$+iPJl_tTPM=P(2gz zYHyj@%gu+shqs<_VOM^8wemTS>vpyC2Wzh!uX|x!XEQzZ{;nq_XC)69oNd~-)8qd? zetXs5zpp;=EPG+v=Q4Raqg?$HjlN5FUe8q7wD6CtWKfKyXqVf>6Kn?=U9t*;Q_9RF zIZwEynFd(pG`;CO*Dn)&D6RY09}SH_NltU`b%zW8oyhTB{>ZB5uBqz7?*T9Vs&xGP zGyBt*Jjh^bjzanqdj^v<+}EbQt`iW?RM_q~XUeyJhIae0FSPfw=9 z8p*^bD)qCz7*0-O>Zw=Sd2`Y+5A&P%reyEjv)sMM%2_IkUCr>!qhFh*cwcU;S}h)+ zePrv&$6;z(ZyHrrEL<7n;gaH_;>k7Xm?Oub1cg?adyJn>*!U-L2`=d{Vp3Kz6G)z1 z-}$bxlB_$gM;u2Hv8@<&< zma6XsmNyFrM;z06Qs`iDar4_!?)n?27e?`(pSHU;fY*Dn1H#LdfOTCV?$f3d2dc#ln4R%YsF)o$Hu4G+F5{n*31-_%_scnhP;J+Hve8B=r~ zy_7WWT*rGluk(o5HRB>4vGuKWd+QBD?^K@scxR=9*@6=G+DY>dbM|Cjm1>4-%E`FYK zX8Ar7gUnY(q81LH9fHn>GaZsy`?dOBs@v)L3=3XHt!?|oR`_Dh^IlFXk6Gnc8+eqR z8ZG(KJCkQTX;{zg^D)XxXPE*2CjmE|U1I)5>1ma#rpw)V96KjfQ}d0Mo=)h>y=%`E zPu^45zVvTG$l2Q2%EgZsGGFi{C_FMt->zdE~sH_WOOz9~XX#6n!G*`3V40hGBUC diff --git a/public/assets/highlight/nord.css b/public/assets/highlight/nord.css new file mode 100644 index 00000000..df098925 --- /dev/null +++ b/public/assets/highlight/nord.css @@ -0,0 +1,87 @@ +pre, code { + color: #d8dee9; + background-color: #2e3440; +} + +.hl-keyword { + color: #81A1C1; +} + +.hl-property { + color: #88C0D0; +} + +.hl-attribute { + font-style: italic; +} + +.hl-type { + color: #8FBCBB; +} + +.hl-generic { + color: #81A1C1; +} + +.hl-value { + color: #A3BE8C; +} + +.hl-literal { + color: #A3BE8C; +} + +.hl-number { + color: #B48EAD; +} + +.hl-variable { + color: #D8DEE9; +} + +.hl-comment { + color: #616E88; +} + +.hl-blur { + filter: blur(2px); +} + +.hl-strong { + font-weight: bold; +} + +.hl-em { + font-style: italic; +} + +.hl-addition { + display: inline-block; + min-width: 100%; + background-color: #00FF0022; +} + +.hl-deletion { + display: inline-block; + min-width: 100%; + background-color: #FF000011; +} + +.hl-gutter { + display: inline-block; + font-size: 0.9em; + color: #555; + padding: 0 1ch; + margin-right: 1ch; + user-select: none; +} + +.hl-gutter-addition { + background-color: #34A853; + color: #fff; +} + +.hl-gutter-deletion { + background-color: #EA4334; + color: #fff; +} diff --git a/public/assets/highlight/nord.css.br b/public/assets/highlight/nord.css.br new file mode 100644 index 0000000000000000000000000000000000000000..cbc409fa644f603c5c4af774e4049baab7855eae GIT binary patch literal 307 zcmdnkpuq4%qu@J_4v$E?>g^p5Qd4%#4F3FA!95^X)2r8V(#qRGwWfa}^SjF{9!j}5 z8i+dls<{^}meF+BkY!Wp-4gr#JGcD1r*oFsmR0xz+uoB_*E?U`Kfz)0Q%R}O>poA& z;xmCQzr6cqT{L-g&`NruA+xo*@}`>{?oCTvE!N$XD&1-PRPnOcC4ZikddU+EHYqFX z>{UIe=j?OAX{VdwT(1Wz0yCYu*|d0`o(}WLSSA*Bb%TiLs}<+=GQ>WP>egJo@87BC zZvUo71?xs`c3{-7E_A(p?aVb^RrJk*yKU*zp zmz>G&HsfoBt#-3*O?KUj7H2m1T(eg%n>BkPSLxrROBa58-ZIztvFW*6M~oyMtu}x6 zBks-b+2!vo{-`WBf3FzWbTUBkpKY?5lQ<*jTY(_l7wf|+dIn^iq+uJSE6!H5fv#~;f+M<*%7mg__^^ew?psl|2WY*AOWOYhw*%UCsgwr=84l;&<;wou^VCKfK0xIH3WD_Bde Rv?|Oxznblt_}5dC4*{jd!}9 -based on dark.css by Ivan Sagalaev - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #3f3f3f; - color: #dcdcdc; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-tag { - color: #e3ceab; -} - -.hljs-template-tag { - color: #dcdcdc; -} - -.hljs-number { - color: #8cd0d3; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-attribute { - color: #efdcbc; -} - -.hljs-literal { - color: #efefaf; -} - -.hljs-subst { - color: #8f8f8f; -} - -.hljs-title, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-section, -.hljs-type { - color: #efef8f; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-link { - color: #dca3a3; -} - -.hljs-deletion, -.hljs-string, -.hljs-built_in, -.hljs-builtin-name { - color: #cc9393; -} - -.hljs-addition, -.hljs-comment, -.hljs-quote, -.hljs-meta { - color: #7f9f7f; -} - - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/public/assets/highlight/zenburn.css.br b/public/assets/highlight/zenburn.css.br deleted file mode 100644 index d14ec286d0b4a724713781c4df6c7b4548e783ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmZ2DL6#v=<{0n&OHp@t_e8+> za{_HLc+)l7>V)W*FHM_0FP)zy9ey)C=3+$o+?#Qx4Qrkmf91MbB68b@g|%vD z;k^Y9WzJ?bKV!>R-eealbz=R~`}c*}qgBsoyygp?esiiTXOPS%i^5z5Sv~b$nH-@w z%bfTS71K2vt0bJ2S5CFQX0XBKpsqv!KbPk+p7%z#GQxLcbofTCayH4X+HWhS^{Zgx zE3;#5Zxw&6{*cnHF*{-9tfU66*S{_Wyz-uL@M@OkoRmMCBxMzqN|psSoSM45Ob`I* C)uB`X diff --git a/public/assets/highlight/zenburn.css.zst b/public/assets/highlight/zenburn.css.zst deleted file mode 100644 index f7ddaa93525364eaffa5c740cc0a4531d905c471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmdPcs{c1-Gm|ebL)c6&IfG)k&HcG?=0e&UQp(W@Q(Jh2um8|7CZR_~(pstha)|gtb2-P>9%YPfo*>}!&xpC|HEED(T=f5c&aPteA>^1Y4 zPT8S`8y=G`Sk8MEyhm{PhME5|!i&pIjdHDSuQ+TM`l4)ly7n>V`|m_PpG-=>80_x% zV{O>CX9@1p`2W|YhSdJKHS?Qu{+gZF{S7_-&%AI>B50jLdqJ+_Y*(*uoBcP=FEn3a zEB$)2)H(IrFZ6}p^s1=;Wt%IX7gAvv-#S%4_|5W)p5+hT->}#0eIt?He9rJlgTz`- zjfGETy@W2UfBROU%|dx0yO~CU3(M6~W`#Z$VS{NuKJOU~=Ob({HruCzy$dFwI35?=rI zzGUH+HwUK{YxOyF@6c#x+r{-<{pa~;dG+J&qS7j_qqg>?M}?(S%5ibNk5B{v!(Pv6 diff --git a/public/assets/js/winter.js.br b/public/assets/js/winter.js.br new file mode 100644 index 0000000000000000000000000000000000000000..b44b667033265b528eb2721dddf1dddd7e7345ea GIT binary patch literal 1117 zcmX^3Ab~-_&i?N2;!Qr=uPA){rv3BT`{AG~sY`N4r7GGR}La zn6yNy1quxO_gro(-I>YL%6`7Mq0cO^lq>#H(UjQNj@~CHUC*ujvpMKX;~btzTTcYI zue;K;{lJzbA=#NWxAwf^`toe|{J^b&D&=bu`wwo^IbLHXa{0c-d64_h^V>}eKF1773D=^5Ye5CYi z(H5U2?56U?vuD3LYP7fN-<{j}Z09Adb8{BhFLkxn?t6Z5=cA9uH;d<-<~q#Hc{FwJ z2ZzTqx)yhAwK*+*Ky6L=6s1?6Tg-e8IeV(eZz!CQsw&s#K8x3IrP%FNt?M7Wy}f;f zd*+MZYrj;i(sM79E#W^U{$XX#+x)A&I#Ig+mwsXF3Hi&AZB}yQ2}kCoWm^j7pGdhc zuWrBN`>&8GHs_*`wX%21PMfG89dzWd@P2WzTga9J=w{()UADchj2;$y<3$9 zTi)){;1F;%t8#q1wQFOzZu-LzPa}~j3MAIIGvd*3kG-nI@d*5tIddthgpqH_tZD zI^n~5Tx3E1mPJlFC8gZo+V|Nswb^>H83kJ0UcDyaT>tNtk!`p4#ndvFh3&R{ylL^p zd2L^6bSEBj=O~=YH_NkrrO8=k<49)KfKmtT(^KwnE$Td2`^%cw#rD#vUfX;RSL@Y6 z?tfEsTIS2$YLC&JF}rTZ38R&LO656UteCnAR-c=;TzyV}lhoho3K|Q3{=9D=b3Fg~ z#Rp47E<3GU_m^+B##|QzlMg+emI2;pCT~y`J;3HvI%Ad?%lh5s7r%Z~3srJh{Z-Jv zwnW8Kj>FvIyut4s4~;9{|BQanz`Dg<)8+n=F1bl1-W{TgKCFx0=jr7=X|JQJhhW9Q zwL01+E6==GQY`#UC*oxN^Q|xW?y!HjrDVVj;)L p=QnYEeDvv*^1LUON7oq5IQ5j>bz;!}Z0H zh*f6K=bFVZpJ6G(IjNroMt4`m?pw1iRcF3jbYVeO=&{~*dGBMtUqz_CtcbX~W#y)c zfop5$N$-u4{-O9ZjpxZf>685Df9R$^*z;;z3}5}1f-gBn3(xSz$xL5lRyA+!KJ)E5 z(J$?%ln8pVE^@fEPd4I3;P*=38;3hpZ{+T>z07f>@ur*Z=INC=9@i)F?{`y~`}bMT z^5!E)jvl^t=?xiT}1u`fO6vwYAO(MH^0XWG>;8^|^S^@nEx@#4f?FFT>uP)l^G%xv)|E=l%4xT6yo+u4+>~b-yS< zScymZWxS1gbmqT_mYNrxRl9?&wfsH>Xr4sE-w+@Ao~4M)2wp&xee)_ zH_TlhJxIw&Vt6U0J*889OI8kh&!PQ)xEzF=pU){4?)nn5{v_b^*ze1Gt3?y$~%|4OtI`@;g%E5EsD&d8INmk zzIZrI{P@bWf2Et{I?R9dFAgsF-5tf2Xgu}#&INaLm#>)kvGUJ^m8QAV@?Gk3UwzBG zR%89XDRP2e{^7kB!&YyIQGXxS5vum@tn;P%w)8XREa6z5r$SA3sc1DcxMNMy$y3WqM1uU=Gik&%W_b)m7yageJ)C`oE@<+py_IP|Mw{xyxou zP&>bAse6;0@AvYkBKKun&C_LMD`ekm+;QMFKT??LWU-L_+&+=UTGt7k(&rBs-Db1c z)D)%j@L*2l{$?R`>8$hFCKMhKK~-`ybIH7smfCqK<20+7rHut|bQ( z(mI^?Gb)}n^E>{!E!K^hyZ2O|SQ9(v?yicSr}Z=b$*$WyF-a=>&OvbJzFAMom|UW4*@PZ(>(FIh3(FxAHy!%+Y(d literal 0 HcmV?d00001 diff --git a/resources/css/layout.css b/resources/css/layout.css index 488d0f95..dc5f753f 100644 --- a/resources/css/layout.css +++ b/resources/css/layout.css @@ -44,3 +44,12 @@ gap: 2ex; } } + +@layer components { + .h-entry { + pre { + padding: 1rem; + } + } +} + diff --git a/resources/views/master.blade.php b/resources/views/master.blade.php index 77ee5a91..2e5c6b5a 100644 --- a/resources/views/master.blade.php +++ b/resources/views/master.blade.php @@ -5,7 +5,7 @@ @yield('title'){{ config('app.name') }} - + diff --git a/resources/views/notes/show.blade.php b/resources/views/notes/show.blade.php index 11e347bf..ad77db59 100644 --- a/resources/views/notes/show.blade.php +++ b/resources/views/notes/show.blade.php @@ -56,5 +56,5 @@ @section('scripts') @parent - + @stop