From 03a075e2556d0f14ad5863e7f2da7dfd48cc6f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Tue, 15 Jul 2025 20:21:31 -0400 Subject: [PATCH 1/7] Format source code (no other changes) --- .../custom/geofresco/src/global/_layout.scss | 184 +++++++++--------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/web/themes/custom/geofresco/src/global/_layout.scss b/web/themes/custom/geofresco/src/global/_layout.scss index f2a15da..7d2885e 100644 --- a/web/themes/custom/geofresco/src/global/_layout.scss +++ b/web/themes/custom/geofresco/src/global/_layout.scss @@ -43,11 +43,11 @@ // Prevent a slight horizontal scroll. -/* On content listing pages (e.g. card view mode). */ +// On content listing pages (e.g. card view mode). .background-replacement-for-no-image { height: 10rem; } -/* On full content pages. */ +// On full content pages. .featured-image .background-replacement-for-no-image { height: 12rem; @include mixins.from($desktop) { @@ -58,114 +58,114 @@ } } -/* Yes i know i should just give author bios their own class */ +// Yes i know i should just give author bios their own class .node--type-people.node--view-mode-teaser { margin-bottom: 1rem; } // Main navigation, goes to code in page.html.twig @include mixins.mobile { -// Code adapted from https://unused-css.com/blog/css-only-hamburger-menu/ -.hamburger-container { - transition: transform 0.5s ease; -} - -// We don't need the checkbox to be visible, but we can't set it to display: none because this will break keyboard navigation. Instead set the opacity to 0 and the position to absolute so it doesn't push the rest of the content down. -.hamburger-container .checkbox { - opacity: 0; - position: absolute; -} - -// Show an outline when the hamburger is selected using the keyboard. Older browsers don't support :focus-visible, so we will just use :focus here. -.hamburger-container .checkbox:focus ~ .hamburger { - outline: 2px solid yellow; // Default for browsers that do not support outline: auto - outline: auto; - outline-offset: 4px; -} - -// For newer browsers that do support :focus-visible, hide the outline when the checkbox isn't selected with the keyboard. -@supports selector(:focus-visible) { - .hamburger-container .checkbox:not(:focus-visible) ~ .hamburger { - outline: none; + // Code adapted from https://unused-css.com/blog/css-only-hamburger-menu/ + .hamburger-container { + transition: transform 0.5s ease; } -} -/* Hide any focusable elements in the drawer by default to aid keyboard navigation. We use visibility so it makes the elements unfocusable, but doesn't affect the layout. We can also add a "transition" to visibility, which will make it show instantly when we open the drawer, but take half a second to hide it when we close the drawer. */ -.hamburger-container .drawer a { - visibility: hidden; - transition: visibility 0.5s linear; -} + // We don't need the checkbox to be visible, but we can't set it to display: none because this will break keyboard navigation. Instead set the opacity to 0 and the position to absolute so it doesn't push the rest of the content down. + .hamburger-container .checkbox { + opacity: 0; + position: absolute; + } -/* Make the focusable elements in the drawer visible when it is open. */ -.hamburger-container .checkbox:checked ~ .drawer a { - visibility: visible; -} + // Show an outline when the hamburger is selected using the keyboard. Older browsers don't support :focus-visible, so we will just use :focus here. + .hamburger-container .checkbox:focus ~ .hamburger { + outline: 2px solid yellow; // Default for browsers that do not support outline: auto + outline: auto; + outline-offset: 4px; + } -.hamburger-container .checkbox:checked ~ .drawer { - transform: translateX(0%); -} + // For newer browsers that do support :focus-visible, hide the outline when the checkbox isn't selected with the keyboard. + @supports selector(:focus-visible) { + .hamburger-container .checkbox:not(:focus-visible) ~ .hamburger { + outline: none; + } + } -.hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(1) { - transform: translateY(12px) rotate(45deg); -} + // Hide any focusable elements in the drawer by default to aid keyboard navigation. We use visibility so it makes the elements unfocusable, but doesn't affect the layout. We can also add a "transition" to visibility, which will make it show instantly when we open the drawer, but take half a second to hide it when we close the drawer. + .hamburger-container .drawer a { + visibility: hidden; + transition: visibility 0.5s linear; + } -.hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(2) { - opacity: 0; -} + // Make the focusable elements in the drawer visible when it is open. + .hamburger-container .checkbox:checked ~ .drawer a { + visibility: visible; + } -.hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(3) { - transform: translateY(-12px) rotate(-45deg); -} + .hamburger-container .checkbox:checked ~ .drawer { + transform: translateX(0%); + } -.hamburger { - cursor: pointer; - display: block; - position: relative; - margin-left: auto; - margin-right: 0; - padding: 1.5rem 2rem 1rem 1rem; - width: 5rem; - height: 5rem; - transition: transform 0.3s ease; - z-index: 1; -} + .hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(1) { + transform: translateY(12px) rotate(45deg); + } -.hamburger .slice { - display: block; - width: 100%; - height: 0.1875rem; - background-color: $green; - transition: all 0.3s ease; -} + .hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(2) { + opacity: 0; + } -.hamburger .slice:not(:first-child) { - margin-top: 0.5rem; -} + .hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(3) { + transform: translateY(-12px) rotate(-45deg); + } -.drawer { - position: absolute; - right: 0; - top: 5rem; - height: fit-content; - width: max-content; - max-width: 100%; - padding: 1.5rem; - background: local.$offwhite; - transform: translateX(-100%); - transition: transform 0.4s ease; - z-index: 100; -} + .hamburger { + cursor: pointer; + display: block; + position: relative; + margin-left: auto; + margin-right: 0; + padding: 1.5rem 2rem 1rem 1rem; + width: 5rem; + height: 5rem; + transition: transform 0.3s ease; + z-index: 1; + } -.drawer .nav-list { - padding: 0; - list-style: none; - // margin-top: 30px; - // margin-left: 20px; -} + .hamburger .slice { + display: block; + width: 100%; + height: 0.1875rem; + background-color: $green; + transition: all 0.3s ease; + } -.drawer .nav-list .nav-list-item { - // padding-bottom: 10px; -} + .hamburger .slice:not(:first-child) { + margin-top: 0.5rem; + } + + .drawer { + position: absolute; + right: 0; + top: 5rem; + height: fit-content; + width: max-content; + max-width: 100%; + padding: 1.5rem; + background: local.$offwhite; + transform: translateX(-100%); + transition: transform 0.4s ease; + z-index: 100; + } + + .drawer .nav-list { + padding: 0; + list-style: none; + // margin-top: 30px; + // margin-left: 20px; + } + + .drawer .nav-list .nav-list-item { + // padding-bottom: 10px; + } } @include mixins.tablet { @@ -174,7 +174,7 @@ } } -/* Make the drawer full-width on mobile */ +// Make the drawer full-width on mobile @media screen and (max-width: local.$mini) { .drawer { width: 100%; From 2637b987a3ba17d18257132f7cfe7121b8dbac33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Tue, 15 Jul 2025 20:32:22 -0400 Subject: [PATCH 2/7] Use hamburger menu for tablet as well, and hide drawer completely when closed Ref #114 #126 --- web/themes/custom/geofresco/src/global/_layout.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web/themes/custom/geofresco/src/global/_layout.scss b/web/themes/custom/geofresco/src/global/_layout.scss index 7d2885e..844b28f 100644 --- a/web/themes/custom/geofresco/src/global/_layout.scss +++ b/web/themes/custom/geofresco/src/global/_layout.scss @@ -64,7 +64,7 @@ } // Main navigation, goes to code in page.html.twig -@include mixins.mobile { +@include mixins.touch { // Code adapted from https://unused-css.com/blog/css-only-hamburger-menu/ .hamburger-container { transition: transform 0.5s ease; @@ -91,13 +91,13 @@ } // Hide any focusable elements in the drawer by default to aid keyboard navigation. We use visibility so it makes the elements unfocusable, but doesn't affect the layout. We can also add a "transition" to visibility, which will make it show instantly when we open the drawer, but take half a second to hide it when we close the drawer. - .hamburger-container .drawer a { + .hamburger-container .drawer { visibility: hidden; transition: visibility 0.5s linear; } // Make the focusable elements in the drawer visible when it is open. - .hamburger-container .checkbox:checked ~ .drawer a { + .hamburger-container .checkbox:checked ~ .drawer { visibility: visible; } @@ -168,14 +168,14 @@ } } -@include mixins.tablet { +@include mixins.desktop { .hamburger, #hamburger-toggle { display: none; } } // Make the drawer full-width on mobile -@media screen and (max-width: local.$mini) { +@include mixins.mobile { .drawer { width: 100%; } From 161844eb8f1f9af36e6e284d5cf61337ca14092a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Tue, 15 Jul 2025 22:21:25 -0400 Subject: [PATCH 3/7] How does this look the same Ref #114 #126 --- web/themes/custom/geofresco/src/global/_elements.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/themes/custom/geofresco/src/global/_elements.scss b/web/themes/custom/geofresco/src/global/_elements.scss index 3b240fb..d758248 100644 --- a/web/themes/custom/geofresco/src/global/_elements.scss +++ b/web/themes/custom/geofresco/src/global/_elements.scss @@ -13,8 +13,8 @@ .header { background: linear-gradient( $background, - $background 5.3765rem, - $light-green 5.3765rem, + $background 5.4375rem, + $light-green 5.4375rem, $green 8.4rem, $background 8.4rem, $background From 0eaafd620827e89ea958ba63de0123c96d0efd39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Tue, 15 Jul 2025 22:47:51 -0400 Subject: [PATCH 4/7] Give up on linear gradient and do a 1px wide background Also move more elementy stuff from components, and hope the weird small-screen adjustments are not applicable anymore? Ref #114 #126 --- .../custom/geofresco/images/green-stripe.png | Bin 0 -> 142 bytes .../geofresco/src/global/_components.scss | 36 ---------------- .../geofresco/src/global/_elements.scss | 39 ++++++++++++++---- 3 files changed, 31 insertions(+), 44 deletions(-) create mode 100644 web/themes/custom/geofresco/images/green-stripe.png diff --git a/web/themes/custom/geofresco/images/green-stripe.png b/web/themes/custom/geofresco/images/green-stripe.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8c63363dee55e22cb58da6c21609a6fe562bce GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6ht$!3HFaEoL+TDVAa<&kznEsNqQI0PpPdAHa1_DefYy6%pd1+SA n8&zJufWLG4mi@P{oJ|+2Vous4qPg7#Xdr{9tDnm{r-UW|F6}I( literal 0 HcmV?d00001 diff --git a/web/themes/custom/geofresco/src/global/_components.scss b/web/themes/custom/geofresco/src/global/_components.scss index ddb6348..c0b488e 100644 --- a/web/themes/custom/geofresco/src/global/_components.scss +++ b/web/themes/custom/geofresco/src/global/_components.scss @@ -22,42 +22,6 @@ } } -.site-title { - display: inline-block; - width: 4.6em; - word-break: keep-all; // Shouldn't be needed but Chrome needs it. - font-size: 37px; - line-height: 38px; -} - -.geo-logo-name { - display: flex !important; - overflow: hidden; - width: 100%; - .logo, .sitename { - display: table-cell; - } - .logo a { - display: block; - // width: 199px; - } - .logo img { - height: 7.5rem; - } - @include from($tablet) { - width: fit-content; - } - @include until($mini) { - justify-content: flex-end; - } -} - -@include until($desktop) { - .search-bar { - display: none !important; - } -} - // Mostly to reduce the impact of the ridiculous (mostly on Chrome) ghost mobile horizontal scroll. .search-icon { padding-right: 1rem; diff --git a/web/themes/custom/geofresco/src/global/_elements.scss b/web/themes/custom/geofresco/src/global/_elements.scss index d758248..f57f436 100644 --- a/web/themes/custom/geofresco/src/global/_elements.scss +++ b/web/themes/custom/geofresco/src/global/_elements.scss @@ -11,14 +11,37 @@ // Add a gradient across only a portion of the vertical height of the navbar. .header { - background: linear-gradient( - $background, - $background 5.4375rem, - $light-green 5.4375rem, - $green 8.4rem, - $background 8.4rem, - $background - ); + background-image: url(../../images/green-stripe.png); +} + +.site-title { + display: inline-block; + width: 4.6em; + word-break: keep-all; // Shouldn't be needed but Chrome needs it. + font-size: 2.3125rem; + line-height: 2.375rem; +} + +.geo-logo-name { + display: flex !important; + overflow: hidden; + width: 100%; + .logo, .sitename { + display: table-cell; + } + .logo a { + display: block; + width: 12.4375rem; // 199px + } + .logo img { + height: 7.5rem; + } + // @include from($tablet) { + // width: fit-content; + // } + // @include until($mini) { + // justify-content: flex-end; + // } } #navbar-menu .navbar-item { From 5aa67953e3c7dd11973c1264838c10b7db8cd223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Tue, 15 Jul 2025 22:48:36 -0400 Subject: [PATCH 5/7] Make the X perfect Ref #114 #126 --- web/themes/custom/geofresco/src/global/_layout.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/themes/custom/geofresco/src/global/_layout.scss b/web/themes/custom/geofresco/src/global/_layout.scss index 844b28f..ea47f4e 100644 --- a/web/themes/custom/geofresco/src/global/_layout.scss +++ b/web/themes/custom/geofresco/src/global/_layout.scss @@ -106,7 +106,7 @@ } .hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(1) { - transform: translateY(12px) rotate(45deg); + transform: translateY(0.6875rem) rotate(45deg); } .hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(2) { @@ -114,7 +114,7 @@ } .hamburger-container .checkbox:checked ~ .hamburger .slice:nth-child(3) { - transform: translateY(-12px) rotate(-45deg); + transform: translateY(-0.6875rem) rotate(-45deg); } .hamburger { From 39db8dfa66b01e2a0f47b02a555cde9f85b48f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Sat, 19 Jul 2025 12:11:19 -0400 Subject: [PATCH 6/7] Update LinkIt to version that supports latest Drupal 10.5.1 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5bedefb..c44e1a0 100644 --- a/composer.json +++ b/composer.json @@ -88,7 +88,7 @@ "drupal/insert": "^3", "drupal/key": "^1.14", "drupal/link_attributes": "^1.9", - "drupal/linkit": "^6", + "drupal/linkit": "^7", "drupal/mailchimp": "^2", "drupal/markdown": "^3", "drupal/menu_link_config": "^1.0@alpha", From c18ad4a3e2d6c3165d688318bbd64e8c905c2473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Sat, 19 Jul 2025 12:11:22 -0400 Subject: [PATCH 7/7] Update composer lock file --- composer.lock | 81 ++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/composer.lock b/composer.lock index c258296..9869b41 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": "40ffbeecfdd8848d97ffd7fc52a68af7", + "content-hash": "90e491a31bd6246e3104f4f0898a743a", "packages": [ { "name": "abraham/twitteroauth", @@ -831,16 +831,16 @@ }, { "name": "consolidation/annotated-command", - "version": "4.10.1", + "version": "4.10.2", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "362310b13ececa9f6f0a4a880811fa08fecc348b" + "reference": "e550ea4f177f199e0e9451168342bf3f321d92b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/362310b13ececa9f6f0a4a880811fa08fecc348b", - "reference": "362310b13ececa9f6f0a4a880811fa08fecc348b", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/e550ea4f177f199e0e9451168342bf3f321d92b0", + "reference": "e550ea4f177f199e0e9451168342bf3f321d92b0", "shasum": "" }, "require": { @@ -881,9 +881,9 @@ "description": "Initialize Symfony Console commands from annotated command class methods.", "support": { "issues": "https://github.com/consolidation/annotated-command/issues", - "source": "https://github.com/consolidation/annotated-command/tree/4.10.1" + "source": "https://github.com/consolidation/annotated-command/tree/4.10.2" }, - "time": "2024-12-13T19:55:40+00:00" + "time": "2025-07-16T20:54:09+00:00" }, { "name": "consolidation/config", @@ -8250,17 +8250,17 @@ }, { "name": "drupal/editoria11y", - "version": "2.2.11", + "version": "2.2.13", "source": { "type": "git", "url": "https://git.drupalcode.org/project/editoria11y.git", - "reference": "2.2.11" + "reference": "2.2.13" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/editoria11y-2.2.11.zip", - "reference": "2.2.11", - "shasum": "be8e424636492f3613f3c39de83a9d0175fb83bc" + "url": "https://ftp.drupal.org/files/projects/editoria11y-2.2.13.zip", + "reference": "2.2.13", + "shasum": "75c337db893c935d60935bcdf03ae40c186fbba6" }, "require": { "drupal/core": "^9 || ^10 || ^11" @@ -8271,8 +8271,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.2.11", - "datestamp": "1749656980", + "version": "2.2.13", + "datestamp": "1752844518", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -11828,20 +11828,20 @@ }, { "name": "drupal/linkit", - "version": "6.1.6", + "version": "7.0.7", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linkit.git", - "reference": "6.1.6" + "reference": "7.0.7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/linkit-6.1.6.zip", - "reference": "6.1.6", - "shasum": "113d8e569cfb92f8d7feb0a2f7713953c0715e92" + "url": "https://ftp.drupal.org/files/projects/linkit-7.0.7.zip", + "reference": "7.0.7", + "shasum": "aa10493dfa34f4f8ce51313d47c66b21b9596f3e" }, "require": { - "drupal/core": "^10.1" + "drupal/core": "^10.1 || ^11" }, "require-dev": { "drupal/ckeditor": "*", @@ -11850,8 +11850,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.1.6", - "datestamp": "1729189029", + "version": "7.0.7", + "datestamp": "1752264962", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -16244,11 +16244,11 @@ "source": { "type": "git", "url": "https://git.drupalcode.org/project/social_post_facebook.git", - "reference": "eddf359ba9177adb81b63fa6c84e591b35603b51" + "reference": "af3fce0c31533b5f074be3830ade383364ffec04" }, "require": { "agaric/php-facebook": "dev-main", - "drupal/core": "^8 || ^9 || ^10", + "drupal/core": "^8 || ^9 || ^10 || ^11", "drupal/social_post": "^3" }, "type": "drupal-module", @@ -16258,7 +16258,7 @@ }, "drupal": { "version": "3.0.x-dev", - "datestamp": "1745366639", + "datestamp": "1752867749", "security-coverage": { "status": "not-covered", "message": "Dev releases are not covered by Drupal security advisories." @@ -16471,7 +16471,7 @@ "homepage": "https://www.drupal.org/user/516420" }, { - "name": "Nitesh Sethia", + "name": "nitesh sethia", "homepage": "https://www.drupal.org/user/2474982" }, { @@ -16483,7 +16483,7 @@ "homepage": "https://www.drupal.org/user/35821" }, { - "name": "RobLoach", + "name": "robloach", "homepage": "https://www.drupal.org/user/61114" }, { @@ -26247,24 +26247,24 @@ "packages-dev": [ { "name": "behat/behat", - "version": "v3.22.0", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "a93098a77753c3cfdc4c485d75141924a78ceb93" + "reference": "c465af8756adaaa6d962c3176a0a6c594361809b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/a93098a77753c3cfdc4c485d75141924a78ceb93", - "reference": "a93098a77753c3cfdc4c485d75141924a78ceb93", + "url": "https://api.github.com/repos/Behat/Behat/zipball/c465af8756adaaa6d962c3176a0a6c594361809b", + "reference": "c465af8756adaaa6d962c3176a0a6c594361809b", "shasum": "" }, "require": { "behat/gherkin": "^4.12.0", "composer-runtime-api": "^2.2", - "composer/xdebug-handler": "^3.0", + "composer/xdebug-handler": "^1.4 || ^2.0 || ^3.0", "ext-mbstring": "*", - "nikic/php-parser": "^5.2", + "nikic/php-parser": "^4.19.2 || ^5.2", "php": "8.1.* || 8.2.* || 8.3.* || 8.4.* ", "psr/container": "^1.0 || ^2.0", "symfony/config": "^5.4 || ^6.4 || ^7.0", @@ -26278,6 +26278,7 @@ "friendsofphp/php-cs-fixer": "^3.68", "phpstan/phpstan": "^2.0", "phpunit/phpunit": "^9.6", + "rector/rector": "^2.0", "sebastian/diff": "^4.0", "symfony/polyfill-php84": "^1.31", "symfony/process": "^5.4 || ^6.4 || ^7.0" @@ -26333,9 +26334,9 @@ ], "support": { "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.22.0" + "source": "https://github.com/Behat/Behat/tree/v3.23.0" }, - "time": "2025-05-06T15:25:03+00:00" + "time": "2025-07-15T16:58:54+00:00" }, { "name": "behat/gherkin", @@ -26827,16 +26828,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.17", + "version": "2.1.18", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" + "reference": "ee1f390b7a70cdf74a2b737e554f68afea885db7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", - "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ee1f390b7a70cdf74a2b737e554f68afea885db7", + "reference": "ee1f390b7a70cdf74a2b737e554f68afea885db7", "shasum": "" }, "require": { @@ -26881,7 +26882,7 @@ "type": "github" } ], - "time": "2025-05-21T20:55:28+00:00" + "time": "2025-07-17T17:22:31+00:00" }, { "name": "phpstan/phpstan-deprecation-rules",