diff --git a/themes/develop/README.md b/themes/develop/README.md index 464f508..3a3c12b 100644 --- a/themes/develop/README.md +++ b/themes/develop/README.md @@ -1,4 +1,4 @@ -# テーマ「develop」Ver.1.1.9 +# テーマ「develop」Ver.1.1.10 ## バンドル環境の使い方 diff --git a/themes/develop/admin/blog/field-ogp.html b/themes/develop/admin/blog/field-ogp.html index b933bba..d00c9b4 100644 --- a/themes/develop/admin/blog/field-ogp.html +++ b/themes/develop/admin/blog/field-ogp.html @@ -1,7 +1,7 @@

OGP設定

- +
OGP画像OGP画像
diff --git a/themes/develop/admin/blog/field-search-console.html b/themes/develop/admin/blog/field-search-console.html index b7e3e4f..faf6e1d 100644 --- a/themes/develop/admin/blog/field-search-console.html +++ b/themes/develop/admin/blog/field-search-console.html @@ -1,7 +1,7 @@ -

Search Console

+

Google Search Console

- +
diff --git a/themes/develop/admin/blog/field-seo.html b/themes/develop/admin/blog/field-seo.html index 102da93..bb5f08c 100644 --- a/themes/develop/admin/blog/field-seo.html +++ b/themes/develop/admin/blog/field-seo.html @@ -1,14 +1,18 @@ -

SEO

+

SEO設定

- + + - + - + - + - +
+
+ 文字 +
+
- + - 文字
+
+ 文字 +
+
- + -

文字

検索エンジン - noindex検索エンジン
@@ -37,7 +45,7 @@

SEO

サイトマップ - sitemapサイトマップ
@@ -49,7 +57,7 @@

SEO

RSS - rssRSS
diff --git a/themes/develop/admin/category/field-ogp.html b/themes/develop/admin/category/field-ogp.html index b933bba..d00c9b4 100644 --- a/themes/develop/admin/category/field-ogp.html +++ b/themes/develop/admin/category/field-ogp.html @@ -1,7 +1,7 @@

OGP設定

- +
OGP画像OGP画像
diff --git a/themes/develop/admin/category/field-seo.html b/themes/develop/admin/category/field-seo.html index 6044bf2..4119fb5 100644 --- a/themes/develop/admin/category/field-seo.html +++ b/themes/develop/admin/category/field-seo.html @@ -1,14 +1,18 @@ -

SEO

+

SEO設定

- + + - + - + - + - +
+
+ 文字 +
+
- + - 文字
+
+ 文字 +
+
- + -

文字

検索エンジン - noindex検索エンジン
@@ -39,7 +47,7 @@

SEO

サイトマップ - sitemapサイトマップ
@@ -51,7 +59,7 @@

SEO

RSS - rssRSS
diff --git a/themes/develop/admin/entry/field-seo.html b/themes/develop/admin/entry/field-seo.html index 06d09f4..2bfa8f7 100644 --- a/themes/develop/admin/entry/field-seo.html +++ b/themes/develop/admin/entry/field-seo.html @@ -6,17 +6,18 @@
- + - - + - + - + - +
タイトル - title +
- 文字 + 文字
- +
概要文 - description +
文字
- +
検索エンジン - noindex検索エンジン
サイトマップ - sitemapサイトマップ
RSS - rssRSS
メイン画像 メイン画像
diff --git a/themes/develop/include/head/meta.twig b/themes/develop/include/head/meta.twig index afe1d6e..e29a786 100755 --- a/themes/develop/include/head/meta.twig +++ b/themes/develop/include/head/meta.twig @@ -29,9 +29,11 @@ {% if ogp.description %} {% endif %} +{# keywords の meta タグは現在の主要な検索エンジンで使われていないため出力しない。出力する場合は、このコメントを外す {% if ogp.keywords %} {% endif %} +#} diff --git a/themes/develop/package-lock.json b/themes/develop/package-lock.json index 6d778c9..4058902 100644 --- a/themes/develop/package-lock.json +++ b/themes/develop/package-lock.json @@ -1,19 +1,19 @@ { "name": "develop", - "version": "1.1.9", + "version": "1.1.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "develop", - "version": "1.1.9", + "version": "1.1.10", "license": "MIT", "dependencies": { - "@ablogcms/pdf": "^3.2.36", - "@ablogcms/validator": "^3.2.36", - "@rollup/rollup-linux-x64-gnu": "4.64.5", + "@ablogcms/pdf": "^3.2.37", + "@ablogcms/validator": "^3.2.37", + "@rollup/rollup-linux-x64-gnu": "4.65.0", "a-dispatcher": "^1.0.1", - "alpinejs": "^3.17.4", + "alpinejs": "^3.17.5", "document-outliner": "^1.1.3", "dom-content-loaded": "^1.0.2", "flatpickr": "^4.6.13", @@ -31,40 +31,40 @@ "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4.3.3", "@zackad/prettier-plugin-twig": "^0.17.0", - "browserslist": "^4.29.3", - "eslint": "^10.12.0", + "browserslist": "^4.29.4", + "eslint": "^10.13.0", "globals": "^17.13.0", "prettier": "^3.9.10", "rollup-plugin-visualizer": "^7.1.1", "stylelint": "^17.16.0", - "stylelint-config-recess-order": "^7.8.0", + "stylelint-config-recess-order": "^7.9.0", "stylelint-config-standard": "^40.0.0", "stylelint-order": "^8.1.2", "tailwindcss": "^4.2.4", - "vite": "^8.3.4", + "vite": "^8.3.5", "vite-plugin-eslint2": "^5.3.0", "vite-plugin-static-copy": "^4.1.1", "vite-plugin-stylelint": "^6.3.0" }, "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "4.64.5", + "@rollup/rollup-linux-x64-gnu": "4.65.0", "@tailwindcss/oxide-linux-x64-gnu": "^4.2.4", "lightningcss-linux-x64-gnu": "^1.33.0" } }, "node_modules/@ablogcms/pdf": { - "version": "3.2.36", - "resolved": "https://registry.npmjs.org/@ablogcms/pdf/-/pdf-3.2.36.tgz", - "integrity": "sha512-6OOj2FJlbKbOHwsyxt4c+x6AnNzEjyAVHzGxGEYuylY9Ux6PNgcUCWqzt0vYQAbY1a6G9//1hIeQaSuodI3/Hw==", + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@ablogcms/pdf/-/pdf-3.2.37.tgz", + "integrity": "sha512-bobxaKnLICGn8LEajimYmHS67vLNWFcRuKsAeYotaQZZLRlNx9OY5+MeNeDrv/oF5Ycf9p2R3adEYZex32v7EA==", "license": "MIT", "dependencies": { - "pdfjs-dist": "^6.2.108" + "pdfjs-dist": "^6.4.299" } }, "node_modules/@ablogcms/validator": { - "version": "3.2.36", - "resolved": "https://registry.npmjs.org/@ablogcms/validator/-/validator-3.2.36.tgz", - "integrity": "sha512-k40yng1AsfMtILv5QsF+FsQ+oMKzTepk9nZ2YiGiQcCtYS2sgratR+b7YonHejxmh+Kmx/3t3rbF78/dickVyg==", + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@ablogcms/validator/-/validator-3.2.37.tgz", + "integrity": "sha512-XKzHKS1SyhwehvPSVAzYksdk9WwQqwQtgQwyuXMs9BZPk6vFBkjmEJyQFkdMKRVZDQVTw/E48/24vbOmiO6Hxg==", "license": "MIT" }, "node_modules/@babel/code-frame": { @@ -556,9 +556,9 @@ "license": "MIT" }, "node_modules/@napi-rs/canvas": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.8.tgz", - "integrity": "sha512-/SaLcvlqGWdm0HSCWMgHu7cjJiQXfP8/mOY+6dUyV9flQz7sPBBZ+ed2zYtoukojPmxOaL7bm+d/G4GeWWoN7g==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.11.tgz", + "integrity": "sha512-vt5tog1cr+QKadIddGe+3LrcX0EmjEd0izF717Uwf92mBmgYfq2XRmL2r4bZU40spB69exxhrBn9I91HYEr/7w==", "license": "MIT", "optional": true, "workspaces": [ @@ -572,23 +572,23 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "1.0.8", - "@napi-rs/canvas-darwin-arm64": "1.0.8", - "@napi-rs/canvas-darwin-x64": "1.0.8", - "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.8", - "@napi-rs/canvas-linux-arm64-gnu": "1.0.8", - "@napi-rs/canvas-linux-arm64-musl": "1.0.8", - "@napi-rs/canvas-linux-riscv64-gnu": "1.0.8", - "@napi-rs/canvas-linux-x64-gnu": "1.0.8", - "@napi-rs/canvas-linux-x64-musl": "1.0.8", - "@napi-rs/canvas-win32-arm64-msvc": "1.0.8", - "@napi-rs/canvas-win32-x64-msvc": "1.0.8" + "@napi-rs/canvas-android-arm64": "1.0.11", + "@napi-rs/canvas-darwin-arm64": "1.0.11", + "@napi-rs/canvas-darwin-x64": "1.0.11", + "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.11", + "@napi-rs/canvas-linux-arm64-gnu": "1.0.11", + "@napi-rs/canvas-linux-arm64-musl": "1.0.11", + "@napi-rs/canvas-linux-riscv64-gnu": "1.0.11", + "@napi-rs/canvas-linux-x64-gnu": "1.0.11", + "@napi-rs/canvas-linux-x64-musl": "1.0.11", + "@napi-rs/canvas-win32-arm64-msvc": "1.0.11", + "@napi-rs/canvas-win32-x64-msvc": "1.0.11" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.8.tgz", - "integrity": "sha512-5+nkh8i3gt6lqS/d2jTZ1xAn6tdgtB4Lf1mW6T0Qm5/rXNwBuV1sAEyLEWan5o9gJPU/GuvHR3rvSeZ+FaGrbw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.11.tgz", + "integrity": "sha512-dtJS4FQEfH9OwSYLtMrEnj7T8DzBbJc/97LI/OkiWOYpW/iW5t6R/gcxVrUXS8l45gCVpwMufgucRe/pe0ISqA==", "cpu": [ "arm64" ], @@ -606,9 +606,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.8.tgz", - "integrity": "sha512-7jQ47gi+fZ7KJmfc/5rNyy1CYw/cu4kZ0KPIYbo9UUgSdW0bKQJpt+WihEor6s4Lyp7+xc3a+3HeyXmAEbbnPg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.11.tgz", + "integrity": "sha512-J/JylWoJTG8OQqZaiqly4IODyAxNofUlZo0wtSBJtHk6AdymbdIkPynAM1JvQaZpPaG5h+msk9QuK8y4i1ooqw==", "cpu": [ "arm64" ], @@ -626,9 +626,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.8.tgz", - "integrity": "sha512-rRjDMZs9pIRKGxgijwezplKc1RnJsqUokrA9h88bbTkqQ+7ePj0ZN4ZnZDy8Vu0tXs7KRlI2tQLaK4mx9QlxHg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.11.tgz", + "integrity": "sha512-nlecCk3xy06eAGC7krZtzNDm9UNTHKuHQYK8ZYegdjzgSL8anGt/eLJZm86OWaNgZkwQwvDqfSmG8Nqe6MPZNQ==", "cpu": [ "x64" ], @@ -646,9 +646,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.8.tgz", - "integrity": "sha512-jGcCd+8ra6Q61xKqZeiItujTpp9a9eRLcQ0jW6qYNku+WpupqOPFPY0SrsuSnXFviJwkpKYT9p7QrB4lsf3LNQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.11.tgz", + "integrity": "sha512-DKImmG+sTPolE0kGPsYPBxTtOjb3INALp32O2lW2CfSr0bAzSEKKuu+GrQbtilClyoPOahUErS3OrznFDraoWA==", "cpu": [ "arm" ], @@ -666,9 +666,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.8.tgz", - "integrity": "sha512-od6I2Y7kU7i1SwZYG2EKW8rWz6JiedtPpko4WEe1DDsiikrfaotVBCRaUTM5/yeZKaZ92EatoAS+5xG+6uJlYA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.11.tgz", + "integrity": "sha512-55sykACGENj5j1rhj+81AO8JbR9HYgGjRZ7/H+pNr4VE1DvINKYNMTcutk8ZmWxk276jAQvUKJ3+Kdj9GXU3lQ==", "cpu": [ "arm64" ], @@ -689,9 +689,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.8.tgz", - "integrity": "sha512-yYkPbJDJiWj6N0gASA3CAvRypZmVpJnxU0DQg3aBhneLDQde9TPLKADsQkobNoJUtTT/lj46aWpzT48PDb3Qcg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.11.tgz", + "integrity": "sha512-6Jz6jys17yXydO+WdJgu7JhoB4K7/w9sWHByzzTmLjQghUx3TDMWvLv+UcCdnWhg4oprET67EMymnrETdeGNAg==", "cpu": [ "arm64" ], @@ -712,9 +712,9 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.8.tgz", - "integrity": "sha512-PB00MSKAp4VwK/xwe6duKxRKmH8UH4GIl1pqHSbxng0jnU9Dr7FwaDypDiqwNFZ774N+8G7mJLGuLtg9NTcQsg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.11.tgz", + "integrity": "sha512-lf2XeEebWiUYVOVEjLXxF7dfXrBBSEOBn9AqBh39VYXrPt5cDqI+1t58IFSjn8npqkg5jIOs8TQbjKABbFW1gQ==", "cpu": [ "riscv64" ], @@ -735,9 +735,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.8.tgz", - "integrity": "sha512-TWM2XWJoitLiIPCvgJh7SriC+L/T9qkYCVzC66AidsZy0QP1hkKzBzVwshCdcA3q6fIn3yE0ISbq4lMJSy8jFw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.11.tgz", + "integrity": "sha512-iDapw7nFSE5tsmQxcH2+KotJhyfVPmHd6vUOQN/Em+8WNbkZJwJ/rDowlJMFnMl0SYSDSfgKCNUGi6Sn5++Smg==", "cpu": [ "x64" ], @@ -758,9 +758,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.8.tgz", - "integrity": "sha512-hb20MxKXXb5IB7AAwN8UHz9WRsa2HmdZfjsDCzjElwJoeV1aotVEwFU4FrFQcYQVzsJQLeaCc/2Qdt/0Q72mMg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.11.tgz", + "integrity": "sha512-26q26AyITo3CGZX4HWFIMgBMA1lu3YN07gxzBm4tW6Hglq/OVyTP50kDrmWuKybCX6dh3m8Ly+c7YhI+sqCgCQ==", "cpu": [ "x64" ], @@ -781,9 +781,9 @@ } }, "node_modules/@napi-rs/canvas-win32-arm64-msvc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.8.tgz", - "integrity": "sha512-WwPN08IXE4SkL+FhJyPz/iFnycMAUkbphFIT4cmKLlvbSU0Zfn1R7BGJ3Hqky1S89QUYc0Q4IOScXb/42Re9wQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.11.tgz", + "integrity": "sha512-cUO96IdsfvIj2S+2PNcDSkTcLhjPj8pIOEWRV1Kj70MOP4wnE9zSk7N4C1EKHlFGRcgdR5AkbnBZj0dfHK9nbQ==", "cpu": [ "arm64" ], @@ -801,9 +801,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.8.tgz", - "integrity": "sha512-XkrVqKb+pxyba7kjy2LJvABFVBTE0DNpEl7MrG4OYUmaWarrXH+t54z/Czj2YxCKtizYTV4mg6phNm3x24qjhQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.11.tgz", + "integrity": "sha512-DFYp/ZQRdKunI/LPc0UkRXG1vlNjJKOJf8O8Ctb8+wm2Nt2ELg9Eamc31D2VoakkfGo8L+z0Iejz6WtFbQwyGw==", "cpu": [ "x64" ], @@ -859,9 +859,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.152.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz", - "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==", + "version": "0.155.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.155.0.tgz", + "integrity": "sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==", "dev": true, "license": "MIT", "funding": { @@ -869,9 +869,9 @@ } }, "node_modules/@rolldown/binding-android-arm-eabi": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz", - "integrity": "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.15.tgz", + "integrity": "sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==", "cpu": [ "arm" ], @@ -886,9 +886,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz", - "integrity": "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.15.tgz", + "integrity": "sha512-xD7DdZCrbThKuxNg7ooQmvp07ys4J/pnSEMTG3/OdOWl6daC67m/Q4fL78sRHMxTH/N4fGUbYhcPM0MF5WFHkg==", "cpu": [ "arm64" ], @@ -903,9 +903,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz", - "integrity": "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.15.tgz", + "integrity": "sha512-m2WuQ6r0B4OTYxyPpNLtXaMRbRDUbG8YQV2Q3KTdSSK8Th6KHCnC8jVCJt8bvYeSB5WivkkNbc85mKadaSdOxA==", "cpu": [ "arm64" ], @@ -920,9 +920,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz", - "integrity": "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.15.tgz", + "integrity": "sha512-5RtnsHM36nodM9WbMy+zip0LGS/G+y5wro5RHrpOlr4ac24+1zSi9kiV2MP1myZeZ/ifEHfulQcWjnAXzc2C2A==", "cpu": [ "x64" ], @@ -937,9 +937,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz", - "integrity": "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.15.tgz", + "integrity": "sha512-g3l09pyFqhu+135JKkbkwiKGQmwU5hUMUPJ4VdBADvuqR8d33L6H578rh8m7rtxbdp+VmX/+nzI7nvhSZlzpUQ==", "cpu": [ "x64" ], @@ -954,9 +954,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz", - "integrity": "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.15.tgz", + "integrity": "sha512-nIe3VugI97nGQtspPxDqA4sXMUpeiocKIP/CqpY/u/vgbT+alX+cVxu1C/oVBPKg4feNTmYovE91v4DgXvXNwQ==", "cpu": [ "arm" ], @@ -971,9 +971,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz", - "integrity": "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.15.tgz", + "integrity": "sha512-iTBjXx+B5QSvgI89lJfmqh4wTh8NabR1YZIIN3hNx4zSG0EVfVqkOvLulNpG4251pbd6/IAmZ/LefVk1Y4rPhw==", "cpu": [ "arm64" ], @@ -991,9 +991,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz", - "integrity": "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.15.tgz", + "integrity": "sha512-uN26XOnVR7rqQupG3V9oAG2EGGatWjcJHOeDOHUFCh4TBWmP2tHTFoVN13aYbwfm0aHqJAEmcwhAu6sooIjfqQ==", "cpu": [ "arm64" ], @@ -1011,9 +1011,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz", - "integrity": "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.15.tgz", + "integrity": "sha512-9nWkcdd+H+XhaA3fQIwpHnKIrfx/PQ6rO0pivr78Og07tXlUlctBBJoEYLPfhTmCR/QxEVdn6uPjHV5SymPhdw==", "cpu": [ "ppc64" ], @@ -1031,9 +1031,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz", - "integrity": "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.15.tgz", + "integrity": "sha512-Ggh0ciFjLwIusLSLz7LZYEaGdxOAUJXI+Qu5JCbhPJJHEt8vP+IjRATTJheiJsdzzTYgUiHUiw3X1Ea3ZpMBdA==", "cpu": [ "s390x" ], @@ -1051,9 +1051,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz", - "integrity": "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.15.tgz", + "integrity": "sha512-FHg60rS6DBePAYZ9X9F67x+JObFdmgn6tupA1C/a3B+CufFmTD4mX+e8M75tCiAO3foR/6xwVBI0KQiI7sn/rw==", "cpu": [ "x64" ], @@ -1071,9 +1071,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz", - "integrity": "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.15.tgz", + "integrity": "sha512-/cvV/7v5VGz/moiz0XKRj2dE8DzsKyhIu1KpOvJGPjRywg3yscON889UGvAe8zfiJLHup7VLjBduoGWi3HusWQ==", "cpu": [ "x64" ], @@ -1091,9 +1091,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz", - "integrity": "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.15.tgz", + "integrity": "sha512-MyzC5Hrv/sm+Z7TSGKP/j8001RO2xQm1zOpCNVL4j0cY/VhBZviludA2YFQ7i4lH6ZAXxQm0lcMdBzM+99mE7w==", "cpu": [ "arm64" ], @@ -1108,9 +1108,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz", - "integrity": "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.15.tgz", + "integrity": "sha512-+PgYiS+AH5omy6L45ZLxybasauJaj3M8buoT83D+nzPmCayXlxUV9hydhciCKVyIg0B/v0BtXPDE1uGqNwCPpg==", "cpu": [ "arm64" ], @@ -1125,9 +1125,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz", - "integrity": "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.15.tgz", + "integrity": "sha512-HFZd2QNQYn1JbIi+Hpd7H+r/lkWxcfIu28nirZ6eCn2LafuvmExMlb/P96Sfx5tf7pPArw39IdhmCF8vmV+NhQ==", "cpu": [ "x64" ], @@ -1172,9 +1172,9 @@ } }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.64.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.5.tgz", - "integrity": "sha512-dR9nd6OKnvSS60Ifz/L7Mj5zzYyoqyRn2NwTuaOONKaa3xsVGXyp8YusMbvFyEOR94DxnwgcbgsFqkHd29ZSzQ==", + "version": "4.65.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.65.0.tgz", + "integrity": "sha512-GExdD15WPvu/x/drELjVam7vX8EsPgvTMOa/iJL/p/4m/oOqzbb7JXZg8fXR4hlXtg/sF2zyTZ3bR0AEtEMlhQ==", "cpu": [ "x64" ], @@ -1687,9 +1687,9 @@ } }, "node_modules/alpinejs": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.17.4.tgz", - "integrity": "sha512-N2gsr+58XVUt7OAPKnUGiKPDtkd+xbSGTae8C8IJxeRdkkhBJPIautkJ+qcwb7lcjJ/QK3/CPVIbN20JPvtK7A==", + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.17.5.tgz", + "integrity": "sha512-XewMqRC6zjy8iaUPn86dxjvooAsNai3hUtQbdn0A5H2w7Jt10xHGZ1SczN5+Dvp3UKkuSEt9moy/UaUWOwKdnQ==", "license": "MIT", "dependencies": { "@vue/reactivity": "~3.5.40" @@ -1891,9 +1891,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.11.27", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.27.tgz", - "integrity": "sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==", + "version": "2.11.32", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.32.tgz", + "integrity": "sha512-UvuxFU9P3hM29LrQdwu0cD6w6/+SFr+UlB9s/knI7+O2rK9xFxKUwSDWxGdbbqQ9/V7BJ5s0NI5nQAE4uJp3gQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1943,9 +1943,9 @@ } }, "node_modules/browserslist": { - "version": "4.29.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.3.tgz", - "integrity": "sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==", + "version": "4.29.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.4.tgz", + "integrity": "sha512-2TcbbiwXEq+N0kD36tykpCfyyQigUXmuwNQbnPp4Xk4PX9JOqVIKjJlIDjpH7uY6tmRGoAd+apeT1p60T8wsdA==", "dev": true, "funding": [ { @@ -1963,11 +1963,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.11.26", - "caniuse-lite": "^1.0.30001813", - "electron-to-chromium": "^1.5.439", - "node-releases": "^2.0.57", - "update-browserslist-db": "^1.3.3" + "baseline-browser-mapping": "^2.11.29", + "caniuse-lite": "^1.0.30001816", + "electron-to-chromium": "^1.5.459", + "node-releases": "^2.0.59", + "update-browserslist-db": "^1.3.4" }, "bin": { "browserslist": "cli.js" @@ -2064,9 +2064,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001814", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001814.tgz", - "integrity": "sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==", + "version": "1.0.30001819", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001819.tgz", + "integrity": "sha512-LFUqIIAwpzsIuevnKnsR9qnStBcgzPShTX61lBwN9uFkkf8o8zLiebEjbW8AYtZiF+1YKDWfdt/pWDtMuG8Xwg==", "dev": true, "funding": [ { @@ -2519,9 +2519,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.439", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.439.tgz", - "integrity": "sha512-qu6QIPXhsb+CRcAiTMNjR4A1y/7tCYKkKjr5CZXRVih6qkDf79peZ2BpEU3qoDBNCRrcy3Mra3X9nG5oruuA7Q==", + "version": "1.5.464", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.464.tgz", + "integrity": "sha512-nRa65aFge40viPAKxMKULIY8tcXKwKboJWNn4RoKwyWXJ6SP7BnrDGKUTzc64818jIciH0PK7LSF8QzZes19GA==", "dev": true, "license": "ISC" }, @@ -2744,9 +2744,9 @@ } }, "node_modules/eslint": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.12.0.tgz", - "integrity": "sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA==", + "version": "10.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.13.0.tgz", + "integrity": "sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg==", "dev": true, "license": "MIT", "workspaces": [ @@ -4649,9 +4649,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.57", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.57.tgz", - "integrity": "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==", + "version": "2.0.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.60.tgz", + "integrity": "sha512-OmO8+GM1JUZqXET720VrJCwkjUCXmCMQm0Z3UDDRbfNLHS4NEAvY60j5jiFv0tkKw2PNNlqOLhahVmwJIOLDIQ==", "dev": true, "license": "MIT", "engines": { @@ -4863,15 +4863,15 @@ } }, "node_modules/pdfjs-dist": { - "version": "6.2.108", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-6.2.108.tgz", - "integrity": "sha512-YxFb+SQcodN2rnX9Tn3dHYlqfb7NjlzzfONPpJd+AKoKtUjEdevTfbC07d5TcczzOK6261auRkP/M8OBHs9vFQ==", + "version": "6.4.299", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-6.4.299.tgz", + "integrity": "sha512-AVl138zALtfaAPvADulE0PZThbYzCBS79nL4pOSL/6Sm/4AH5A21BD9VHt97OlCuzJuCpmeZtAtkinisF4Vb1g==", "license": "Apache-2.0", "engines": { "node": ">=22.13.0 || >=24" }, "optionalDependencies": { - "@napi-rs/canvas": "^1.0.0" + "@napi-rs/canvas": "^1.0.10" } }, "node_modules/picocolors": { @@ -4904,9 +4904,9 @@ } }, "node_modules/postcss": { - "version": "8.5.29", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.29.tgz", - "integrity": "sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==", + "version": "8.5.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.31.tgz", + "integrity": "sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==", "dev": true, "funding": [ { @@ -4924,7 +4924,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.19", + "nanoid": "^3.3.20", "picocolors": "^1.1.1", "source-map-js": "^1.2.2" }, @@ -5203,13 +5203,13 @@ } }, "node_modules/rolldown": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz", - "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.15.tgz", + "integrity": "sha512-6odND+fel5zVw3I4Yc2e69gvguDnX0CAAGiNDZSq4ik5WUcaLrkD2GLuog0XcODbor31hZ5ayEMgVDno+KPV5g==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.152.0", + "@oxc-project/types": "=0.155.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -5219,21 +5219,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm-eabi": "1.2.12", - "@rolldown/binding-android-arm64": "1.2.12", - "@rolldown/binding-darwin-arm64": "1.2.12", - "@rolldown/binding-darwin-x64": "1.2.12", - "@rolldown/binding-freebsd-x64": "1.2.12", - "@rolldown/binding-linux-arm-gnueabihf": "1.2.12", - "@rolldown/binding-linux-arm64-gnu": "1.2.12", - "@rolldown/binding-linux-arm64-musl": "1.2.12", - "@rolldown/binding-linux-ppc64-gnu": "1.2.12", - "@rolldown/binding-linux-s390x-gnu": "1.2.12", - "@rolldown/binding-linux-x64-gnu": "1.2.12", - "@rolldown/binding-linux-x64-musl": "1.2.12", - "@rolldown/binding-openharmony-arm64": "1.2.12", - "@rolldown/binding-win32-arm64-msvc": "1.2.12", - "@rolldown/binding-win32-x64-msvc": "1.2.12" + "@rolldown/binding-android-arm-eabi": "1.2.15", + "@rolldown/binding-android-arm64": "1.2.15", + "@rolldown/binding-darwin-arm64": "1.2.15", + "@rolldown/binding-darwin-x64": "1.2.15", + "@rolldown/binding-freebsd-x64": "1.2.15", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.15", + "@rolldown/binding-linux-arm64-gnu": "1.2.15", + "@rolldown/binding-linux-arm64-musl": "1.2.15", + "@rolldown/binding-linux-ppc64-gnu": "1.2.15", + "@rolldown/binding-linux-s390x-gnu": "1.2.15", + "@rolldown/binding-linux-x64-gnu": "1.2.15", + "@rolldown/binding-linux-x64-musl": "1.2.15", + "@rolldown/binding-openharmony-arm64": "1.2.15", + "@rolldown/binding-win32-arm64-msvc": "1.2.15", + "@rolldown/binding-win32-x64-msvc": "1.2.15" } }, "node_modules/rollup-plugin-visualizer": { @@ -5748,9 +5748,9 @@ } }, "node_modules/stylelint-config-recess-order": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-7.8.0.tgz", - "integrity": "sha512-ObYusdkXavm8ulgb5xvmU1l8wgCdveNYG12hOTUEdjS8bNhSRggl4or0mE0JaOnQz+Ve2xZemVpwqERCgJbntg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-7.9.0.tgz", + "integrity": "sha512-Pu3zhefjou7PYNkEtx4uLnsCSmXpiNIx8ALd20r+PGO1LApcf2Gowh2pKEaY9h8gdR8Wp6rUGqhqEIAhdyoHxg==", "dev": true, "license": "ISC", "peerDependencies": { @@ -6187,9 +6187,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", - "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", + "integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==", "dev": true, "funding": [ { @@ -6235,16 +6235,16 @@ "license": "MIT" }, "node_modules/vite": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.4.tgz", - "integrity": "sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.5.tgz", + "integrity": "sha512-z1YpjieJ9g0ebTmQpLBv/oq9E3F9EIlOe+7LahW8SrE3LTiG3udBRUXQOlYXP9b+IC2q2phHeVxj9xGlw34OEQ==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", - "postcss": "^8.5.29", - "rolldown": "~1.2.12", + "postcss": "^8.5.30", + "rolldown": "~1.2.14", "tinyglobby": "^0.2.17" }, "bin": { @@ -6261,7 +6261,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.7.1", + "@vitejs/devtools": "^0.7.1 || ^0.8.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", diff --git a/themes/develop/package.json b/themes/develop/package.json index 44cdeaf..064507c 100644 --- a/themes/develop/package.json +++ b/themes/develop/package.json @@ -1,6 +1,6 @@ { "name": "develop", - "version": "1.1.9", + "version": "1.1.10", "description": "Webサイト制作プロジェクト", "type": "module", "main": "index.js", @@ -25,26 +25,26 @@ "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4.3.3", "@zackad/prettier-plugin-twig": "^0.17.0", - "browserslist": "^4.29.3", - "eslint": "^10.12.0", + "browserslist": "^4.29.4", + "eslint": "^10.13.0", "globals": "^17.13.0", "prettier": "^3.9.10", "rollup-plugin-visualizer": "^7.1.1", "stylelint": "^17.16.0", - "stylelint-config-recess-order": "^7.8.0", + "stylelint-config-recess-order": "^7.9.0", "stylelint-config-standard": "^40.0.0", "stylelint-order": "^8.1.2", "tailwindcss": "^4.2.4", - "vite": "^8.3.4", + "vite": "^8.3.5", "vite-plugin-eslint2": "^5.3.0", "vite-plugin-static-copy": "^4.1.1", "vite-plugin-stylelint": "^6.3.0" }, "dependencies": { - "@ablogcms/pdf": "^3.2.36", - "@ablogcms/validator": "^3.2.36", + "@ablogcms/pdf": "^3.2.37", + "@ablogcms/validator": "^3.2.37", "a-dispatcher": "^1.0.1", - "alpinejs": "^3.17.4", + "alpinejs": "^3.17.5", "document-outliner": "^1.1.3", "dom-content-loaded": "^1.0.2", "flatpickr": "^4.6.13", @@ -58,7 +58,7 @@ "smartphoto": "^2.1.18" }, "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "4.64.5", + "@rollup/rollup-linux-x64-gnu": "4.65.0", "@tailwindcss/oxide-linux-x64-gnu": "^4.2.4", "lightningcss-linux-x64-gnu": "^1.33.0" } diff --git a/themes/develop/src/style/editor.css b/themes/develop/src/style/editor.css index 74a4d4c..ee6927b 100644 --- a/themes/develop/src/style/editor.css +++ b/themes/develop/src/style/editor.css @@ -7,46 +7,7 @@ @import 'tailwindcss/utilities.css' layer(utilities); @import './_theme.css'; -@plugin "@tailwindcss/typography"; - -@config '../../tailwind.config.js'; - -/* ------------------------------ - 埋め込みカード(埋め込みユニット・埋め込みブロック共通):md 以上で横並びにする - ------------------------------ */ -/* stylelint-disable-next-line media-query-no-invalid */ -@media (width >= theme(--breakpoint-md)) { - .prose :where([class*='column-embed'] .acms-embed-link, [data-type='embedBlock'] .embed-block-card) { - display: flex; - } - - .prose - :where( - [class*='column-embed'] .acms-embed-link-image-container, - [data-type='embedBlock'] .embed-block-card-image-container - ) { - flex: none; - width: calc(100% / 3); - } +/* エントリー(.prose)のスタイル調整は _prose.css に CSS で管理しています。 */ +@import './editor/_prose.css'; - .prose - :where( - [class*='column-embed'] .acms-embed-link-image-container img, - [data-type='embedBlock'] .embed-block-card-image-container img - ) { - height: 100%; - object-fit: cover; - } - - .prose :where([class*='column-embed'] .acms-embed-link-content, [data-type='embedBlock'] .embed-block-card-content) { - width: calc(100% / 3 * 2); - } -} - -/* ------------------------------ - 本文の埋め込みコンテンツ(ブロックエディターのプレビュー用) - ------------------------------ */ -:where(acms-isolated-preview-root) :where(iframe, video, object, embed) { - box-sizing: border-box; /* 枠線を含めて本文幅に収める */ - max-width: 100%; -} +@plugin "@tailwindcss/typography"; diff --git a/themes/develop/src/style/editor/_base.css b/themes/develop/src/style/editor/_base.css new file mode 100644 index 0000000..effe731 --- /dev/null +++ b/themes/develop/src/style/editor/_base.css @@ -0,0 +1,41 @@ +/* ------------------------------ + エントリーの基本スタイル + ------------------------------ */ +/* stylelint-disable selector-class-pattern -- CMS が出力するクラス名のため */ +@layer utilities { + /* コンテンツ先頭の余白をリセットする */ + .prose + :where( + :first-child, + :first-child.column-block-editor > :first-child, + :first-child.js-edit_inplace > :first-child, + :first-child.js-edit_inplace-hovering + .js-edit_inplace > :first-child + ):not(:where(.not-prose, .not-prose *)) { + margin-block-start: 0; + } + + /* レイアウト用カスタムプロパティ */ + .prose :where(.acms-cssgrid):not(:where(.not-prose, .not-prose *)) { + --acms-gap: 0 var(--unit-gap-x); + } + + .prose :where(.acms-stack, .acms-vstack, .acms-hstack):not(:where(.not-prose, .not-prose *)) { + --acms-stack-spacing: 0 var(--unit-gap-x); + } + + .prose :where(img, video):not(:where(.not-prose, .not-prose *)) { + max-width: 100%; + height: auto; + } + + .prose :where(audio, canvas, embed, iframe, object, svg, video):not(:where(.not-prose, .not-prose *)) { + display: block; + vertical-align: middle; + } + + .prose :where(table):not(:where(.not-prose, .not-prose *)) { + text-indent: 0; + border-collapse: collapse; + border-color: inherit; + } +} diff --git a/themes/develop/src/style/editor/_group.css b/themes/develop/src/style/editor/_group.css new file mode 100644 index 0000000..6d89021 --- /dev/null +++ b/themes/develop/src/style/editor/_group.css @@ -0,0 +1,41 @@ +/* ------------------------------ + カラム・グループ + ------------------------------ */ +@layer utilities { + /* カラム */ + .prose :where([data-type='columns']):not(:where(.not-prose, .not-prose *)) { + box-sizing: border-box; + display: grid; + grid-auto-flow: column; + gap: var(--unit-gap-x); + } + + .prose :where([data-type='columns'].layout-two-column):not(:where(.not-prose, .not-prose *)) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .prose :where([data-type='columns'].layout-three-column):not(:where(.not-prose, .not-prose *)) { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + /* グループ */ + .prose :where([data-type='group']):not(:where(.not-prose, .not-prose *)) { + box-sizing: border-box; + margin-top: 2em; /* 32px */ + margin-bottom: 2em; /* 32px */ + } + + /* 先頭・末尾の子ブロックの余白を打ち消す */ + .prose :where([data-type='group'] > :first-child):not(:where(.not-prose, .not-prose *)) { + margin-top: 0; + } + + .prose :where([data-type='group'] > :last-child):not(:where(.not-prose, .not-prose *)) { + margin-bottom: 0; + } + + /* カラーパレットで背景色を付けたグループの内側の余白 */ + .prose :where([data-type='group'][style*='background-color']):not(:where(.not-prose, .not-prose *)) { + padding: 1.5em; /* 24px */ + } +} diff --git a/themes/develop/src/style/editor/_prose.css b/themes/develop/src/style/editor/_prose.css new file mode 100644 index 0000000..c2c8d2e --- /dev/null +++ b/themes/develop/src/style/editor/_prose.css @@ -0,0 +1,20 @@ +/* ------------------------------ + エントリー(.prose)のスタイル調整 + @tailwindcss/typography の既定のスタイルを、要素・ブロックごとに上書き・追加する。 + セレクタは typography と同じ「.prose :where(...)」の形にし、not-prose の中には効かないようにしている。 + (typography の既定と詳細度をそろえ、ほかのユーティリティクラスより強くしないため) + 同じ要素に複数のルールが当たる場合は後のファイルが勝つので、読み込み順を変えるときは注意する + (例: グループの先頭・末尾の子の余白の打ち消しは、画像・ファイル・埋め込みの余白より後に置く) + ------------------------------ */ +@import './_base.css'; +@import './elements/_image.css'; +@import './elements/_blockquote.css'; +@import './elements/_table.css'; +@import './elements/_button.css'; +@import './elements/_file.css'; +@import './elements/_embed.css'; +@import './_group.css'; +@import './_unit-align.css'; +@import './elements/_embedded-content.css'; +@import './elements/_map.css'; +@import './elements/_toc.css'; diff --git a/themes/develop/src/style/editor/_unit-align.css b/themes/develop/src/style/editor/_unit-align.css new file mode 100644 index 0000000..8bcd6ca --- /dev/null +++ b/themes/develop/src/style/editor/_unit-align.css @@ -0,0 +1,20 @@ +/* ------------------------------ + ユニット配置 + ------------------------------ */ +@layer utilities { + /* 配置 */ + .prose :where(.align-left):not(:where(.not-prose, .not-prose *)) { + display: flex; + justify-content: flex-start; + } + + .prose :where(.align-right):not(:where(.not-prose, .not-prose *)) { + display: flex; + justify-content: flex-end; + } + + .prose :where(.align-center):not(:where(.not-prose, .not-prose *)) { + display: flex; + justify-content: center; + } +} diff --git a/themes/develop/src/style/editor/elements/_blockquote.css b/themes/develop/src/style/editor/elements/_blockquote.css new file mode 100644 index 0000000..fa7cdd9 --- /dev/null +++ b/themes/develop/src/style/editor/elements/_blockquote.css @@ -0,0 +1,9 @@ +/* ------------------------------ + 引用 + ------------------------------ */ +@layer utilities { + .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) { + margin-inline: 0; + border-inline-start-style: solid; + } +} diff --git a/themes/develop/src/style/editor/elements/_button.css b/themes/develop/src/style/editor/elements/_button.css new file mode 100644 index 0000000..6227540 --- /dev/null +++ b/themes/develop/src/style/editor/elements/_button.css @@ -0,0 +1,48 @@ +/* ------------------------------ + リンクボタン/ファイル(ボタン表示) + ------------------------------ */ +@layer utilities { + .prose :where([data-type='linkButton']):not(:where(.not-prose, .not-prose *)) { + margin-top: 1.25em; /* 20px。段落と同じ余白 */ + margin-bottom: 1.25em; + } + + .prose + :where([data-type='linkButton'] a, [data-type='fileBlock'][data-display-type='button'] a):not( + :where(.not-prose, .not-prose *) + ) { + display: inline-flex; + gap: 0.375em; + align-items: center; + padding: 0.5em 0.75em; + font-size: var(--text-sm); + font-weight: var(--font-weight-semibold); + line-height: 1.3; + color: var(--color-gray-900) !important; + text-decoration: none !important; + background-color: var(--color-indigo-50) !important; + border: 1px solid var(--color-gray-200); + border-radius: var(--radius-md); + transition-property: opacity; + } + + .prose + :where([data-type='linkButton'] a:hover, [data-type='fileBlock'][data-display-type='button'] a:hover):not( + :where(.not-prose, .not-prose *) + ) { + color: var(--color-gray-900); + opacity: 0.7; + } + + .prose :where([data-type='fileBlock'][data-display-type='button'] img):not(:where(.not-prose, .not-prose *)) { + width: 2rem; + height: auto; + margin-top: 0; + margin-bottom: 0; + } + + .prose :where([data-type='fileBlock'][data-display-type='button'] .caption):not(:where(.not-prose, .not-prose *)) { + margin: 0; + color: currentcolor; + } +} diff --git a/themes/develop/src/style/editor/elements/_embed.css b/themes/develop/src/style/editor/elements/_embed.css new file mode 100644 index 0000000..5657cb8 --- /dev/null +++ b/themes/develop/src/style/editor/elements/_embed.css @@ -0,0 +1,189 @@ +/* ------------------------------ + 埋め込みカード(埋め込みユニット・埋め込みブロック共通) + ------------------------------ */ +@layer utilities { + .prose :where([class*='column-embed'], [data-type='embedBlock']):not(:where(.not-prose, .not-prose *)) { + margin-top: 2em; /* 32px。画像と同じ余白 */ + margin-bottom: 2em; + } + + .prose + :where([class*='column-embed'] .acms-embed-link, [data-type='embedBlock'] .embed-block-card):not( + :where(.not-prose, .not-prose *) + ) { + position: relative; + display: block; + padding: 0; + overflow: hidden; + font-weight: 400; + color: inherit; + text-decoration: none; + background-color: var(--color-white); + border: 1px solid var(--color-gray-200); + border-radius: var(--radius-md); + transition-property: opacity; + } + + /* カードの画像の角丸を打ち消す */ + .prose :where([data-type='embedBlock'] .embed-block-card-image-container img):not(:where(.not-prose, .not-prose *)) { + display: block; + width: 100%; + margin: 0; + border-radius: 0; + } + + .prose + :where([class*='column-embed'] .acms-embed-link:hover, [data-type='embedBlock'] .embed-block-card:hover):not( + :where(.not-prose, .not-prose *) + ) { + opacity: 0.7; + } + + .prose :where([class*='column-embed'] .acms-embed-link-image-container):not(:where(.not-prose, .not-prose *)) { + margin-right: 0; + } + + .prose :where([class*='column-embed'] .acms-embed-link-image-container img):not(:where(.not-prose, .not-prose *)) { + display: block; + width: 100%; + margin: 0; + } + + .prose + :where([data-type='embedBlock'] .embed-block-card-title, [data-type='embedBlock'] .embed-block-card-provider):not( + :where(.not-prose, .not-prose *) + ) { + display: block; + } + + .prose :where([data-type='embedBlock'] a.embed-block-card-title):not(:where(.not-prose, .not-prose *))::before { + position: absolute; + inset: 0; + content: ''; + } + + /* キーボード操作時のフォーカスの枠をカード全体に出す */ + .prose :where([data-type='embedBlock'] a.embed-block-card-title:focus-visible):not(:where(.not-prose, .not-prose *)) { + outline: none; + } + + .prose + :where([data-type='embedBlock'] .embed-block-card:has(a.embed-block-card-title:focus-visible)):not( + :where(.not-prose, .not-prose *) + ) { + outline: auto 1px; + outline-color: -webkit-focus-ring-color; + outline-offset: 1px; + } + + /* 埋め込みブロックの figure の余白を打ち消す */ + .prose :where([data-type='embedBlock'] > figure):not(:where(.not-prose, .not-prose *)) { + margin-top: 0; + margin-bottom: 0; + } + + /* + 中央・右揃えでは、figure(表示サイズまで広がる)より狭い埋め込み(X のウィジェット等)も同じ向きに寄せる。 + Why not 子要素に margin-inline: auto: Instagram 等は margin をインラインで指定しており上書きできない + */ + .prose + :where( + :where([data-type='embedBlock'][data-align='center'], [data-type='embedBlock'][data-align='right']) + [data-embed-content] + ):not(:where(.not-prose, .not-prose *)) { + display: flex; + flex-direction: column; + } + + .prose + :where(:where([data-type='embedBlock'][data-align='center']) [data-embed-content]):not( + :where(.not-prose, .not-prose *) + ) { + align-items: center; + } + + .prose + :where(:where([data-type='embedBlock'][data-align='right']) [data-embed-content]):not( + :where(.not-prose, .not-prose *) + ) { + align-items: flex-end; + } + + .prose + :where([class*='column-embed'] .acms-embed-link-content, [data-type='embedBlock'] .embed-block-card-content):not( + :where(.not-prose, .not-prose *) + ) { + display: flex; + flex-direction: column; + max-width: none; + padding: 2em; + background-color: var(--color-white); + } + + .prose + :where([class*='column-embed'] .acms-embed-link-title, [data-type='embedBlock'] .embed-block-card-title):not( + :where(.not-prose, .not-prose *) + ) { + margin-top: 0; + margin-bottom: 0.375em; + font-size: var(--text-base); + font-weight: 400; + line-height: var(--leading-normal); + color: var(--color-gray-700); + text-decoration: none; + } + + .prose + :where([class*='column-embed'] .acms-embed-link-site-name, [data-type='embedBlock'] .embed-block-card-provider):not( + :where(.not-prose, .not-prose *) + ) { + order: -1; + padding: 0; + margin-top: 0; + margin-bottom: 0.25em; + font-size: var(--text-sm); + color: var(--color-gray-700); + } + + .prose + :where( + [class*='column-embed'] .acms-embed-link-description, + [data-type='embedBlock'] .embed-block-card-description + ):not(:where(.not-prose, .not-prose *)) { + padding: 0; + margin: 0; + font-size: var(--text-xs); + line-height: var(--leading-relaxed); + color: var(--color-gray-500); + } +} + +/* md 以上でカードを横並びにする */ +/* stylelint-disable-next-line media-query-no-invalid */ +@media (width >= theme(--breakpoint-md)) { + .prose :where([class*='column-embed'] .acms-embed-link, [data-type='embedBlock'] .embed-block-card) { + display: flex; + } + + .prose + :where( + [class*='column-embed'] .acms-embed-link-image-container, + [data-type='embedBlock'] .embed-block-card-image-container + ) { + flex: none; + width: calc(100% / 3); + } + + .prose + :where( + [class*='column-embed'] .acms-embed-link-image-container img, + [data-type='embedBlock'] .embed-block-card-image-container img + ) { + height: 100%; + object-fit: cover; + } + + .prose :where([class*='column-embed'] .acms-embed-link-content, [data-type='embedBlock'] .embed-block-card-content) { + width: calc(100% / 3 * 2); + } +} diff --git a/themes/develop/src/style/editor/elements/_embedded-content.css b/themes/develop/src/style/editor/elements/_embedded-content.css new file mode 100644 index 0000000..7de3dc4 --- /dev/null +++ b/themes/develop/src/style/editor/elements/_embedded-content.css @@ -0,0 +1,25 @@ +/* ------------------------------ + 本文の埋め込みコンテンツ(iframe・video・object・embed) + ------------------------------ */ +@layer utilities { + /* 本文より広いときは幅を縮める */ + .prose :where(iframe, video, object, embed):not(:where(.not-prose, .not-prose *)) { + box-sizing: border-box; /* 枠線を含めて本文幅に収める */ + max-width: 100%; + } + + /* 前後の余白(外枠が余白を持つ埋め込みブロック・配置(align-*)の中は除く) */ + .prose + :where( + :is(iframe, video, object, embed):not(:is([data-type='embedBlock'], [class^='align-'], [class*=' align-']) *) + ):not(:where(.not-prose, .not-prose *)) { + margin-top: 2em; /* 32px */ + margin-bottom: 2em; + } +} + +/* ブロックエディターのプレビュー用 */ +:where(acms-isolated-preview-root) :where(iframe, video, object, embed) { + box-sizing: border-box; /* 枠線を含めて本文幅に収める */ + max-width: 100%; +} diff --git a/themes/develop/src/style/editor/elements/_file.css b/themes/develop/src/style/editor/elements/_file.css new file mode 100644 index 0000000..b927781 --- /dev/null +++ b/themes/develop/src/style/editor/elements/_file.css @@ -0,0 +1,78 @@ +/* ------------------------------ + ファイル(アイコン表示・リンク) + ------------------------------ */ +/* stylelint-disable selector-class-pattern -- CMS が出力するクラス名のため */ +@layer utilities { + .prose :where([data-type='fileBlock']):not(:where(.not-prose, .not-prose *)) { + margin-top: 1.25em; /* 20px。段落と同じ余白 */ + margin-bottom: 1.25em; + line-height: 0; + text-align: center; + } + + .prose + :where( + [data-type='fileBlock'][data-display-type='icon'] img, + [class*='column-media'] .columnIcon, + [class*='column-file'] .columnIcon + ):not(:where(.not-prose, .not-prose *)) { + display: inline-block; + width: 70px; + max-width: 100%; + height: auto; + margin: 0; + } + + .prose + :where( + [data-type='fileBlock'][data-display-type='icon'] .caption, + [class*='column-file'] .caption, + [class*='column-media']:has(a[href*='media-download'], a[href*='storage']) .caption + ):not(:where(.not-prose, .not-prose *)) { + margin: 0; + margin-top: 0.75em; + font-size: var(--text-sm); + line-height: normal; + color: var(--color-gray-500); + text-align: center; + } + + .prose + :where( + [data-type='fileBlock'][data-display-type='icon'] a, + [class*='column-media'] a[href*='media-download'], + [class*='column-media'] a[href*='storage'], + [class*='column-file'] a + ):not(:where(.not-prose, .not-prose *)) { + display: inline-block; + text-decoration: none; + transition-property: opacity; + } + + .prose + :where( + [data-type='fileBlock'][data-display-type='icon'] a:hover, + [class*='column-media'] a[href*='media-download']:hover, + [class*='column-media'] a[href*='storage']:hover, + [class*='column-file'] a:hover + ):not(:where(.not-prose, .not-prose *)) { + opacity: 0.7; + } + + .prose :where(.column-pdf-image):not(:where(.not-prose, .not-prose *)) { + max-width: 100%; + margin-bottom: 0; + border: 1px solid var(--color-gray-200); + } + + /* ファイル・メディア(ダウンロード)ユニットの余白 */ + .prose + :where([class*='column-media']:has(a[href*='media-download'], a[href*='storage']), [class*='column-file']):not( + :where(.not-prose, .not-prose *) + ) { + margin-top: 1.25em; /* 20px。段落と同じ余白 */ + margin-bottom: 1.25em; + line-height: 0; + text-align: center; + } +} diff --git a/themes/develop/src/style/editor/elements/_image.css b/themes/develop/src/style/editor/elements/_image.css new file mode 100644 index 0000000..d78d7e2 --- /dev/null +++ b/themes/develop/src/style/editor/elements/_image.css @@ -0,0 +1,23 @@ +/* ------------------------------ + 画像(figure) + ------------------------------ */ +@layer utilities { + .prose :where(figure, [role='figure']):not(:where(.not-prose, .not-prose *)) { + margin: 2em 0; /* 32px */ + } + + .prose :where(figure img, [role='figure'] img):not(:where(.not-prose, .not-prose *)) { + margin-top: 0; + margin-bottom: 0; + border-radius: var(--radius-md); + } + + /* [role="figure"] のキャプションを figcaption と同等に */ + .prose :where([role='figure'] .caption):not(:where(.not-prose, .not-prose *)) { + margin-top: calc(12em / 14); /* 12px */ + margin-bottom: 0; + font-size: 0.875em; /* 14px */ + line-height: calc(20 / 14); /* 20px */ + color: var(--tw-prose-captions); + } +} diff --git a/themes/develop/src/style/editor/elements/_map.css b/themes/develop/src/style/editor/elements/_map.css new file mode 100644 index 0000000..febcc7b --- /dev/null +++ b/themes/develop/src/style/editor/elements/_map.css @@ -0,0 +1,35 @@ +/* ------------------------------ + 地図/ストリートビュー + ------------------------------ */ +@layer utilities { + .prose :where([class*='column-map'], [class*='column-street-view']):not(:where(.not-prose, .not-prose *)) { + margin-top: 2em; /* 32px。画像と同じ余白 */ + margin-bottom: 2em; + overflow: hidden; + border-radius: var(--radius-md); + } + + .prose + :where( + :where(.column-map div:has(> .js-open-street-map)), + :where(.column-map div:has(> .js-s2d-ready)), + :where(.column-street-view div:has(> .js-street-view)) + ):not(:where(.not-prose, .not-prose *)) { + max-width: 100%; + } + + .prose + :where( + :where(.column-map .js-open-street-map), + :where(.column-map .js-s2d-ready), + :where(.column-street-view .js-street-view) + ):not(:where(.not-prose, .not-prose *)) { + aspect-ratio: 16 / 9; + } + + /* typography が img に付ける余白で Leaflet のタイルがずれ、地図内に帯状の隙間が出るのを防ぐ */ + .prose :where(.leaflet-container img):not(:where(.not-prose, .not-prose *)) { + margin-top: 0; + margin-bottom: 0; + } +} diff --git a/themes/develop/src/style/editor/elements/_table.css b/themes/develop/src/style/editor/elements/_table.css new file mode 100644 index 0000000..9aa904f --- /dev/null +++ b/themes/develop/src/style/editor/elements/_table.css @@ -0,0 +1,86 @@ +/* ------------------------------ + テーブル + ------------------------------ */ +@layer utilities { + .prose :where(tbody th):not(:where(.not-prose, .not-prose *)) { + padding-inline: calc(8em / 14); /* 8px */ + padding-bottom: calc(8em / 14); + } + + .prose :where(tbody th:first-child):not(:where(.not-prose, .not-prose *)) { + padding-inline-start: 0; + } + + .prose :where(tbody th:last-child):not(:where(.not-prose, .not-prose *)) { + padding-inline-end: 0; + } + + .prose :where(tbody tr):not(:where(.not-prose, .not-prose *)) { + border-bottom-style: solid; + } + + .prose :where(table :last-child):not(:where(.not-prose, .not-prose *)) { + margin-top: 0; + margin-bottom: 0; + } + + /* 横スクロール用にテーブルを包むときは、余白を外側の要素に持たせる(overflow で余白の相殺が起きないため) */ + .prose :where(div:has(> table)):not(:where(.not-prose, .not-prose *)) { + margin-top: 2em; /* 32px */ + margin-bottom: 2em; + overflow-x: auto; + } + + .prose :where(div:has(> table) table):not(:where(.not-prose, .not-prose *)) { + margin-top: 0; + margin-bottom: 0; + } + + /* テーブルユーティリティ(acms) */ + .prose + :where( + .acms-table-scrollable th, + .acms-table-scrollable td, + .js-table-unit-scroll-hint th, + .js-table-unit-scroll-hint td + ):not(:where(.not-prose, .not-prose *)) { + word-break: keep-all; + white-space: nowrap; + } + + .prose :where(.acms-cell-text-left):not(:where(.not-prose, .not-prose *)) { + text-align: left; + } + + .prose :where(.acms-cell-text-center):not(:where(.not-prose, .not-prose *)) { + text-align: center; + } + + .prose :where(.acms-cell-text-right):not(:where(.not-prose, .not-prose *)) { + text-align: right; + } + + .prose :where(.acms-cell-text-nowrap):not(:where(.not-prose, .not-prose *)) { + white-space: nowrap; + } + + .prose :where(.acms-cell-text-bold):not(:where(.not-prose, .not-prose *)) { + font-weight: var(--font-weight-bold); + } + + .prose :where(.acms-cell-text-normal):not(:where(.not-prose, .not-prose *)) { + font-weight: var(--font-weight-normal); + } + + .prose :where(.acms-cell-text-top):not(:where(.not-prose, .not-prose *)) { + vertical-align: top; + } + + .prose :where(.acms-cell-text-middle):not(:where(.not-prose, .not-prose *)) { + vertical-align: middle; + } + + .prose :where(.acms-cell-text-bottom):not(:where(.not-prose, .not-prose *)) { + vertical-align: bottom; + } +} diff --git a/themes/develop/src/style/editor/elements/_toc.css b/themes/develop/src/style/editor/elements/_toc.css new file mode 100644 index 0000000..d30ffa4 --- /dev/null +++ b/themes/develop/src/style/editor/elements/_toc.css @@ -0,0 +1,33 @@ +/* ------------------------------ + 目次(toc) + ------------------------------ */ +@layer utilities { + .prose :where(.toc .level-1):not(:where(.not-prose, .not-prose *)) { + padding-left: 0; + margin-top: 1.5em; /* 24px */ + margin-bottom: -0.25em; /* -4px */ + } + + .prose :where(.toc .level-1 li):not(:where(.not-prose, .not-prose *)) { + padding-left: 0; + } + + .prose :where(.toc .level-2):not(:where(.not-prose, .not-prose *)) { + padding-left: 1em; + margin-bottom: 0; + } + + .prose :where(.toc .level-2 li):not(:where(.not-prose, .not-prose *)) { + display: flex; + gap: 0.5em; + } + + .prose :where(.toc .level-2 li):not(:where(.not-prose, .not-prose *))::before { + display: block; + width: 1em; + content: ''; + background-image: url("data:image/svg+xml;charset=UTF-8,"); + background-repeat: no-repeat; + background-position: center; + } +} diff --git a/themes/develop/tailwind.config.js b/themes/develop/tailwind.config.js deleted file mode 100644 index ce6ad6a..0000000 --- a/themes/develop/tailwind.config.js +++ /dev/null @@ -1,489 +0,0 @@ -const round = (num) => - num - .toFixed(7) - .replace(/(\.[0-9]+?)0+$/, '$1') - .replace(/\.0$/, ''); -const em = (px, base) => `${round(px / base)}em`; - -/** @type {import('tailwindcss').Config} */ -module.exports = { - theme: { - extend: { - typography: ({ theme }) => ({ - DEFAULT: { - css: { - // ------------------------------ - // コンテンツ先頭の余白リセット/レイアウト用カスタムプロパティ - // ------------------------------ - '*:first-child': { - marginBlockStart: '0', - }, - '*:first-child.column-block-editor > *:first-child': { - marginBlockStart: '0', - }, - '*:first-child.js-edit_inplace > *:first-child': { - marginBlockStart: '0', - }, - '*:first-child.js-edit_inplace-hovering + .js-edit_inplace > *:first-child': { - marginBlockStart: '0', - }, - '.acms-cssgrid': { - '--acms-gap': '0 var(--unit-gap-x)', - }, - '.acms-stack, .acms-vstack, .acms-hstack': { - '--acms-stack-spacing': '0 var(--unit-gap-x)', - }, - // ------------------------------ - // 基本スタイル - // ------------------------------ - 'img, video': { - maxWidth: '100%', - height: 'auto', - }, - 'audio, canvas, embed, iframe, object, svg, video': { - display: 'block', - verticalAlign: 'middle', - }, - table: { - 'text-indent': '0', - 'border-color': 'inherit', - 'border-collapse': 'collapse', - }, - - // ------------------------------ - // figure 要素 上書き - // ------------------------------ - 'figure, [role="figure"]': { - marginLeft: 0, - marginRight: 0, - marginTop: em(32, 16), - marginBottom: em(32, 16), - }, - 'figure img, [role="figure"] img': { - marginTop: '0', - marginBottom: '0', - borderRadius: 'var(--radius-md)', - }, - - // [role="figure"] のキャプションを figcaption と同等に - '[role="figure"] .caption': { - color: 'var(--tw-prose-captions)', - fontSize: em(14, 16), - lineHeight: round(20 / 14), - marginTop: em(12, 14), - marginBottom: '0', - }, - // ------------------------------ - // blockquote 上書き - // ------------------------------ - blockquote: { - marginInline: '0', - borderInlineStartStyle: 'solid', - }, - // ------------------------------ - // table 上書き - // ------------------------------ - 'tbody th': { - paddingInlineEnd: em(8, 14), - paddingBottom: em(8, 14), - paddingInlineStart: em(8, 14), - }, - 'tbody th:first-child': { - paddingInlineStart: '0', - }, - 'tbody th:last-child': { - paddingInlineEnd: '0', - }, - 'tbody tr': { - borderBottomStyle: 'solid', - }, - 'table *:last-child': { - marginTop: '0', - marginBottom: '0', - }, - 'div:has(> table)': { - // When wrapping tables for horizontal scroll, carry margins on wrapper - // to preserve vertical rhythm (overflow prevents margin-collapsing). - marginTop: em(32, 16), - marginBottom: em(32, 16), - overflowX: 'auto', - }, - 'div:has(> table) table': { - marginTop: '0', - marginBottom: '0', - }, - - // ------------------------------ - // リンクボタン/ファイル(ボタン型) - // ------------------------------ - '[data-type="linkButton"]': { - // Align with paragraph spacing in defaults: 20px -> 1.25em - marginTop: em(20, 16), - marginBottom: em(20, 16), - }, - '[data-type="linkButton"] a, [data-type="fileBlock"][data-display-type="button"] a': { - display: 'inline-flex', - alignItems: 'center', - paddingLeft: '.75em', - paddingRight: '.75em', - paddingTop: '.5em', - paddingBottom: '.5em', - borderWidth: '1px', - borderStyle: 'solid', - borderColor: 'var(--color-gray-200)', - borderRadius: 'var(--radius-md)', - backgroundColor: 'var(--color-indigo-50) !important', - lineHeight: '1.3', - textDecoration: 'none !important', - fontSize: 'var(--text-sm)', - fontWeight: 'var(--font-weight-semibold)', - gap: '.375em', - color: 'var(--color-gray-900) !important', - transitionProperty: 'opacity', - }, - '[data-type="linkButton"] a:hover, [data-type="fileBlock"][data-display-type="button"] a:hover': { - opacity: '0.7', - color: 'var(--color-gray-900)', - }, - '[data-type="fileBlock"][data-display-type="button"] img': { - width: '2rem', // w-8 - height: 'auto', - marginTop: '0', - marginBottom: '0', - }, - '[data-type="fileBlock"][data-display-type="button"] .caption': { - margin: '0', - color: 'currentColor', - }, - - // ------------------------------ - // ファイルブロック(縦積み/アイコン/リンク) - // ------------------------------ - '[data-type="fileBlock"]': { - // Treat as a standard block with paragraph-like rhythm - marginTop: em(20, 16), - marginBottom: em(20, 16), - textAlign: 'center', - lineHeight: '0', - }, - '[data-type="fileBlock"][data-display-type="icon"] img, [class*="column-media"] .columnIcon, [class*="column-file"] .columnIcon': - { - display: 'inline-block', - maxWidth: '100%', - height: 'auto', - width: '70px', - margin: '0', - }, - '[data-type="fileBlock"][data-display-type="icon"] .caption, [class*="column-file"] .caption, [class*="column-media"]:has(a[href*="media-download"], a[href*="storage"]) .caption': - { - margin: '0', - marginTop: '.75em', - color: theme('colors.gray.500'), - fontSize: 'var(--text-sm)', - textAlign: 'center', - lineHeight: 'normal', - }, - '[data-type="fileBlock"][data-display-type="icon"] a, [class*="column-media"] a[href*="media-download"], [class*="column-media"] a[href*="storage"], [class*="column-file"] a': - { - display: 'inline-block', - textDecoration: 'none', - transitionProperty: 'opacity', - }, - '[data-type="fileBlock"][data-display-type="icon"] a:hover, [class*="column-media"] a[href*="media-download"]:hover, [class*="column-media"] a[href*="storage"]:hover, [class*="column-file"] a:hover': - { - opacity: '0.7', - }, - '.column-pdf-image': { - maxWidth: '100%', - borderColor: 'var(--color-gray-200)', - borderWidth: '1px', - borderStyle: 'solid', - marginBottom: '0', - }, - - // ------------------------------ - // 埋め込みカード - // ------------------------------ - "[class*='column-embed'], [data-type='embedBlock']": { - // Align with media/figure rhythm: 32px -> 2em - marginTop: em(32, 16), - marginBottom: em(32, 16), - }, - "[class*='column-embed'] .acms-embed-link, [data-type='embedBlock'] .embed-block-card": { - position: 'relative', - overflow: 'hidden', - display: 'block', - padding: '0', - color: 'inherit', - borderWidth: '1px', - borderStyle: 'solid', - borderColor: 'var(--color-gray-200)', - borderRadius: 'var(--radius-md)', - fontWeight: '400', - backgroundColor: 'var(--color-white)', - textDecoration: 'none', - transitionProperty: 'opacity', - }, - // カードの画像の角丸を打ち消す - "[data-type='embedBlock'] .embed-block-card-image-container img": { - display: 'block', - width: '100%', - margin: '0', - borderRadius: '0', - }, - // md 以上でカードを横並びにする指定は src/style/editor.css にある - "[class*='column-embed'] .acms-embed-link:hover, [data-type='embedBlock'] .embed-block-card:hover": { - opacity: '0.7', - }, - "[class*='column-embed'] .acms-embed-link-image-container": { - marginRight: '0', - }, - "[class*='column-embed'] .acms-embed-link-image-container img": { - display: 'block', - width: '100%', - margin: '0', - }, - "[data-type='embedBlock'] .embed-block-card-title, [data-type='embedBlock'] .embed-block-card-provider": { - display: 'block', - }, - "[data-type='embedBlock'] a.embed-block-card-title::before": { - content: '""', - position: 'absolute', - inset: '0', - }, - // キーボード操作時のフォーカスの枠をカード全体に出す - "[data-type='embedBlock'] a.embed-block-card-title:focus-visible": { - outline: 'none', - }, - "[data-type='embedBlock'] .embed-block-card:has(a.embed-block-card-title:focus-visible)": { - outline: 'auto 1px', - outlineColor: '-webkit-focus-ring-color', - outlineOffset: '1px', - }, - // 埋め込みブロックの figure の余白を打ち消す - "[data-type='embedBlock'] > figure": { - marginTop: '0', - marginBottom: '0', - }, - // 中央・右揃えでは、figure(表示サイズまで広がる)より狭い埋め込み(X のウィジェット等)も同じ向きに寄せる。 - // Why not 子要素に margin-inline: auto: Instagram 等は margin をインラインで指定しており上書きできない - ":where([data-type='embedBlock'][data-align='center'], [data-type='embedBlock'][data-align='right']) [data-embed-content]": - { - display: 'flex', - flexDirection: 'column', - }, - ":where([data-type='embedBlock'][data-align='center']) [data-embed-content]": { - alignItems: 'center', - }, - ":where([data-type='embedBlock'][data-align='right']) [data-embed-content]": { - alignItems: 'flex-end', - }, - "[class*='column-embed'] .acms-embed-link-content, [data-type='embedBlock'] .embed-block-card-content": { - display: 'flex', - flexDirection: 'column', - maxWidth: 'none', - padding: '2em', - backgroundColor: 'var(--color-white)', - }, - "[class*='column-embed'] .acms-embed-link-title, [data-type='embedBlock'] .embed-block-card-title": { - marginBottom: '.375em', - marginTop: '0', - fontSize: 'var(--text-base)', - lineHeight: 'var(--leading-normal)', - fontWeight: '400', - color: 'var(--color-gray-700)', - textDecoration: 'none', - }, - "[class*='column-embed'] .acms-embed-link-site-name, [data-type='embedBlock'] .embed-block-card-provider": { - order: '-1', - padding: '0', - marginTop: '0', - marginBottom: '.25em', - color: 'var(--color-gray-700)', - fontSize: 'var(--text-sm)', - }, - "[class*='column-embed'] .acms-embed-link-description, [data-type='embedBlock'] .embed-block-card-description": - { - padding: '0', - margin: '0', - fontSize: 'var(--text-xs)', - color: 'var(--color-gray-500)', - lineHeight: 'var(--leading-relaxed)', - }, - - // ------------------------------ - // カラムレイアウト - // ------------------------------ - "[data-type='columns']": { - display: 'grid', - gridAutoFlow: 'column', - boxSizing: 'border-box', - gap: 'var(--unit-gap-x)', - }, - "[data-type='columns'].layout-two-column": { - gridTemplateColumns: 'repeat(2, minmax(0, 1fr))', - }, - "[data-type='columns'].layout-three-column": { - gridTemplateColumns: 'repeat(3, minmax(0, 1fr))', - }, - - // ------------------------------ - // グループ - // ------------------------------ - "[data-type='group']": { - boxSizing: 'border-box', - marginTop: em(32, 16), - marginBottom: em(32, 16), - }, - // 先頭・末尾の子ブロックの余白を打ち消す - "[data-type='group'] > :first-child": { - marginTop: '0', - }, - "[data-type='group'] > :last-child": { - marginBottom: '0', - }, - // カラーパレットで背景色を付けたグループの内側の余白 - "[data-type='group'][style*='background-color']": { - padding: em(24, 16), - }, - - // ------------------------------ - // 本文の埋め込みコンテンツ(iframe・video・object・embed) - // ------------------------------ - // 本文より広いときは幅を縮める - 'iframe, video, object, embed': { - boxSizing: 'border-box', // 枠線を含めて本文幅に収める - maxWidth: '100%', - }, - // 前後の余白(外枠が余白を持つ埋め込みブロック・配置(align-*)の中は除く) - ":is(iframe, video, object, embed):not(:is([data-type='embedBlock'], [class^='align-'], [class*=' align-']) *)": - { - marginTop: em(32, 16), - marginBottom: em(32, 16), - }, - - // ------------------------------ - // 配置 - // ------------------------------ - // Align helpers - '.align-left': { - display: 'flex', - justifyContent: 'flex-start', - }, - '.align-right': { - display: 'flex', - justifyContent: 'flex-end', - }, - '.align-center': { - display: 'flex', - justifyContent: 'center', - }, - - // ------------------------------ - // 地図/ストリートビュー - // ------------------------------ - // Map blocks - "[class*='column-map'], [class*='column-street-view']": { - borderRadius: 'var(--radius-md)', - overflow: 'hidden', - // Align with media rhythm (img/video/figure) - marginTop: em(32, 16), - marginBottom: em(32, 16), - }, - ':where(.column-map div:has(> .js-open-street-map)), :where(.column-map div:has(> .js-s2d-ready)), :where(.column-street-view div:has(> .js-street-view))': - { - maxWidth: '100%', - }, - ':where(.column-map .js-open-street-map), :where(.column-map .js-s2d-ready), :where(.column-street-view .js-street-view)': - { - aspectRatio: '16 / 9', - }, - // typography が img に付ける余白で Leaflet のタイルがずれ、地図内に帯状の隙間が出るのを防ぐ - '.leaflet-container img': { - marginTop: '0', - marginBottom: '0', - }, - - // ------------------------------ - // ファイル - // ------------------------------ - // File/media block spacing (outside prose previously) - '[class*="column-media"]:has(a[href*="media-download"], a[href*="storage"]), [class*="column-file"]': { - // Treat as paragraph-like blocks - marginTop: em(20, 16), - marginBottom: em(20, 16), - textAlign: 'center', - lineHeight: '0', - }, - - // ------------------------------ - // 目次(toc) - // ------------------------------ - // TOC custom unit - '.toc .level-1': { - paddingLeft: '0', - marginTop: em(24, 16), - marginBottom: em(-4, 16), - }, - '.toc .level-1 li': { - paddingLeft: '0', - }, - '.toc .level-2': { - paddingLeft: '1em', - marginBottom: '0', - }, - '.toc .level-2 li': { - display: 'flex', - gap: '.5em', - }, - '.toc .level-2 li::before': { - content: "''", - display: 'block', - width: '1em', - backgroundRepeat: 'no-repeat', - backgroundPosition: 'center', - backgroundImage: - "url(\"data:image/svg+xml;charset=UTF-8,\")", - }, - - // ------------------------------ - // テーブルユーティリティ(acms) - // ------------------------------ - '.acms-table-scrollable th, .acms-table-scrollable td, .js-table-unit-scroll-hint th, .js-table-unit-scroll-hint td': - { - whiteSpace: 'nowrap', - wordBreak: 'keep-all', - }, - '.acms-cell-text-left': { - textAlign: 'left', - }, - '.acms-cell-text-center': { - textAlign: 'center', - }, - '.acms-cell-text-right': { - textAlign: 'right', - }, - '.acms-cell-text-nowrap': { - whiteSpace: 'nowrap', - }, - '.acms-cell-text-bold': { - fontWeight: 'var(--font-weight-bold)', - }, - '.acms-cell-text-normal': { - fontWeight: 'var(--font-weight-normal)', - }, - '.acms-cell-text-top': { - verticalAlign: 'top', - }, - '.acms-cell-text-middle': { - verticalAlign: 'middle', - }, - '.acms-cell-text-bottom': { - verticalAlign: 'bottom', - }, - }, - }, - }), - }, - }, -};