refactor: improve ui (#153)

优化整体的 UI 和布局。

```release-note
None
```
This commit is contained in:
Ryan Wang
2024-07-08 17:05:23 +08:00
committed by GitHub
parent 689e6a3ee5
commit ed652815b9
36 changed files with 311 additions and 313 deletions

View File

@@ -39,10 +39,10 @@
"devDependencies": {
"@iconify-json/bx": "^1.1.10",
"@iconify-json/gg": "^1.1.9",
"@iconify-json/simple-icons": "^1.1.99",
"@iconify-json/tabler": "^1.1.109",
"@iconify-json/simple-icons": "^1.1.105",
"@iconify-json/tabler": "^1.1.113",
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/typography": "^0.5.12",
"@tailwindcss/typography": "^0.5.13",
"@types/alpinejs": "^3.13.10",
"@types/node": "18.11.9",
"@typescript-eslint/eslint-plugin": "^5.62.0",
@@ -52,18 +52,18 @@
"eslint-config-prettier": "^8.10.0",
"eslint-plugin-prettier": "^4.2.1",
"postcss": "^8.4.38",
"prettier": "^2.8.8",
"prettier-plugin-tailwindcss": "^0.3.0",
"prettier": "^3.3.1",
"prettier-plugin-tailwindcss": "^0.6.2",
"release-it": "^15.11.0",
"sass": "^1.74.1",
"tailwindcss": "^3.4.3",
"sass": "^1.77.4",
"tailwindcss": "^3.4.4",
"tailwindcss-plugin-icons": "^2.2.2",
"typescript": "^4.9.5",
"vite": "^5.2.8"
"typescript": "^5.4.5",
"vite": "^5.2.13"
},
"dependencies": {
"alpinejs": "^3.13.8",
"alpinejs": "^3.14.0",
"pupa": "^3.1.0",
"tocbot": "^4.25.0"
"tocbot": "^4.28.2"
}
}

355
pnpm-lock.yaml generated
View File

@@ -6,14 +6,14 @@ settings:
dependencies:
alpinejs:
specifier: ^3.13.8
version: 3.13.8
specifier: ^3.14.0
version: 3.14.1
pupa:
specifier: ^3.1.0
version: 3.1.0
tocbot:
specifier: ^4.25.0
version: 4.25.0
specifier: ^4.28.2
version: 4.28.2
devDependencies:
'@iconify-json/bx':
@@ -23,17 +23,17 @@ devDependencies:
specifier: ^1.1.9
version: 1.1.9
'@iconify-json/simple-icons':
specifier: ^1.1.99
version: 1.1.99
specifier: ^1.1.105
version: 1.1.108
'@iconify-json/tabler':
specifier: ^1.1.109
version: 1.1.109
specifier: ^1.1.113
version: 1.1.116
'@tailwindcss/aspect-ratio':
specifier: ^0.4.2
version: 0.4.2(tailwindcss@3.4.3)
version: 0.4.2(tailwindcss@3.4.4)
'@tailwindcss/typography':
specifier: ^0.5.12
version: 0.5.12(tailwindcss@3.4.3)
specifier: ^0.5.13
version: 0.5.13(tailwindcss@3.4.4)
'@types/alpinejs':
specifier: ^3.13.10
version: 3.13.10
@@ -42,10 +42,10 @@ devDependencies:
version: 18.11.9
'@typescript-eslint/eslint-plugin':
specifier: ^5.62.0
version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.9.5)
version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.5.3)
'@typescript-eslint/parser':
specifier: ^5.62.0
version: 5.62.0(eslint@8.57.0)(typescript@4.9.5)
version: 5.62.0(eslint@8.57.0)(typescript@5.5.3)
autoprefixer:
specifier: ^10.4.19
version: 10.4.19(postcss@8.4.38)
@@ -57,34 +57,34 @@ devDependencies:
version: 8.10.0(eslint@8.57.0)
eslint-plugin-prettier:
specifier: ^4.2.1
version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8)
version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@3.3.2)
postcss:
specifier: ^8.4.38
version: 8.4.38
prettier:
specifier: ^2.8.8
version: 2.8.8
specifier: ^3.3.1
version: 3.3.2
prettier-plugin-tailwindcss:
specifier: ^0.3.0
version: 0.3.0(prettier@2.8.8)
specifier: ^0.6.2
version: 0.6.5(prettier@3.3.2)
release-it:
specifier: ^15.11.0
version: 15.11.0
sass:
specifier: ^1.74.1
version: 1.74.1
specifier: ^1.77.4
version: 1.77.6
tailwindcss:
specifier: ^3.4.3
version: 3.4.3
specifier: ^3.4.4
version: 3.4.4
tailwindcss-plugin-icons:
specifier: ^2.2.2
version: 2.2.2(tailwindcss@3.4.3)
version: 2.2.2(tailwindcss@3.4.4)
typescript:
specifier: ^4.9.5
version: 4.9.5
specifier: ^5.4.5
version: 5.5.3
vite:
specifier: ^5.2.8
version: 5.2.8(@types/node@18.11.9)(sass@1.74.1)
specifier: ^5.2.13
version: 5.3.3(@types/node@18.11.9)(sass@1.77.6)
packages:
@@ -119,8 +119,8 @@ packages:
js-tokens: 4.0.0
dev: true
/@esbuild/aix-ppc64@0.20.2:
resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
/@esbuild/aix-ppc64@0.21.5:
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
@@ -128,8 +128,8 @@ packages:
dev: true
optional: true
/@esbuild/android-arm64@0.20.2:
resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
/@esbuild/android-arm64@0.21.5:
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
@@ -137,8 +137,8 @@ packages:
dev: true
optional: true
/@esbuild/android-arm@0.20.2:
resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
/@esbuild/android-arm@0.21.5:
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
@@ -146,8 +146,8 @@ packages:
dev: true
optional: true
/@esbuild/android-x64@0.20.2:
resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
/@esbuild/android-x64@0.21.5:
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
@@ -155,8 +155,8 @@ packages:
dev: true
optional: true
/@esbuild/darwin-arm64@0.20.2:
resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
/@esbuild/darwin-arm64@0.21.5:
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
@@ -164,8 +164,8 @@ packages:
dev: true
optional: true
/@esbuild/darwin-x64@0.20.2:
resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
/@esbuild/darwin-x64@0.21.5:
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
@@ -173,8 +173,8 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-arm64@0.20.2:
resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
/@esbuild/freebsd-arm64@0.21.5:
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
@@ -182,8 +182,8 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-x64@0.20.2:
resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
/@esbuild/freebsd-x64@0.21.5:
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
@@ -191,8 +191,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm64@0.20.2:
resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
/@esbuild/linux-arm64@0.21.5:
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
@@ -200,8 +200,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm@0.20.2:
resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
/@esbuild/linux-arm@0.21.5:
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
@@ -209,8 +209,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-ia32@0.20.2:
resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
/@esbuild/linux-ia32@0.21.5:
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
@@ -218,8 +218,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-loong64@0.20.2:
resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
/@esbuild/linux-loong64@0.21.5:
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
@@ -227,8 +227,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-mips64el@0.20.2:
resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
/@esbuild/linux-mips64el@0.21.5:
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
@@ -236,8 +236,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-ppc64@0.20.2:
resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
/@esbuild/linux-ppc64@0.21.5:
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
@@ -245,8 +245,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-riscv64@0.20.2:
resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
/@esbuild/linux-riscv64@0.21.5:
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
@@ -254,8 +254,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-s390x@0.20.2:
resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
/@esbuild/linux-s390x@0.21.5:
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
@@ -263,8 +263,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-x64@0.20.2:
resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
/@esbuild/linux-x64@0.21.5:
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
@@ -272,8 +272,8 @@ packages:
dev: true
optional: true
/@esbuild/netbsd-x64@0.20.2:
resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
/@esbuild/netbsd-x64@0.21.5:
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
@@ -281,8 +281,8 @@ packages:
dev: true
optional: true
/@esbuild/openbsd-x64@0.20.2:
resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
/@esbuild/openbsd-x64@0.21.5:
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
@@ -290,8 +290,8 @@ packages:
dev: true
optional: true
/@esbuild/sunos-x64@0.20.2:
resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
/@esbuild/sunos-x64@0.21.5:
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
@@ -299,8 +299,8 @@ packages:
dev: true
optional: true
/@esbuild/win32-arm64@0.20.2:
resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
/@esbuild/win32-arm64@0.21.5:
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
@@ -308,8 +308,8 @@ packages:
dev: true
optional: true
/@esbuild/win32-ia32@0.20.2:
resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
/@esbuild/win32-ia32@0.21.5:
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
@@ -317,8 +317,8 @@ packages:
dev: true
optional: true
/@esbuild/win32-x64@0.20.2:
resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
/@esbuild/win32-x64@0.21.5:
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@@ -404,14 +404,14 @@ packages:
'@iconify/types': 2.0.0
dev: true
/@iconify-json/simple-icons@1.1.99:
resolution: {integrity: sha512-/csVihX/ztkl2j4Vk4JoEJv8DdQHrZafzC5QHe21Y+ztuVglvavjb4yWEn9KQHTitLH2fIMnP8+RSTxu5kdmtw==}
/@iconify-json/simple-icons@1.1.108:
resolution: {integrity: sha512-GeC0Oy3j385BgjI0TadEzVbzM/cYjvAot22hJLNal3wKLmf/8t6RtH2PgRiNaK+SxELeDYdSAHocXxw4QoKXYA==}
dependencies:
'@iconify/types': 2.0.0
dev: true
/@iconify-json/tabler@1.1.109:
resolution: {integrity: sha512-74RaBQZQ0761iFTrgmuSH1fovfx0fBKn+txRbRNbRzfh8XWtlAHqKUc3CzvzATMLnVsSRJDxjG3qY4oWH/+opw==}
/@iconify-json/tabler@1.1.116:
resolution: {integrity: sha512-p+dJ+3L/M2o10REG2lh179Blu5+AA51TFkwuUwY7F+vQsF5Z8DIjyNck3yoBBiCxWqhDhsLzC+p9YO7dWqISmw==}
dependencies:
'@iconify/types': 2.0.0
dev: true
@@ -768,16 +768,16 @@ packages:
defer-to-connect: 2.0.1
dev: true
/@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.3):
/@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.4):
resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==}
peerDependencies:
tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1'
dependencies:
tailwindcss: 3.4.3
tailwindcss: 3.4.4
dev: true
/@tailwindcss/typography@0.5.12(tailwindcss@3.4.3):
resolution: {integrity: sha512-CNwpBpconcP7ppxmuq3qvaCxiRWnbhANpY/ruH4L5qs2GCiVDJXde/pjj2HWPV1+Q4G9+V/etrwUYopdcjAlyg==}
/@tailwindcss/typography@0.5.13(tailwindcss@3.4.4):
resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
dependencies:
@@ -785,7 +785,7 @@ packages:
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.3
tailwindcss: 3.4.4
dev: true
/@types/alpinejs@3.13.10:
@@ -812,7 +812,7 @@ packages:
resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==}
dev: true
/@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.9.5):
/@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -824,23 +824,23 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.4.0
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
'@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
debug: 4.3.4
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.2.0
natural-compare-lite: 1.4.0
semver: 7.5.1
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
tsutils: 3.21.0(typescript@5.5.3)
typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5):
/@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -852,10 +852,10 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3)
debug: 4.3.4
eslint: 8.57.0
typescript: 4.9.5
typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
@@ -868,7 +868,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.62.0
dev: true
/@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5):
/@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -878,12 +878,12 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
debug: 4.3.4
eslint: 8.57.0
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
tsutils: 3.21.0(typescript@5.5.3)
typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
@@ -893,7 +893,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5):
/@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3):
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -908,13 +908,13 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.1
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
tsutils: 3.21.0(typescript@5.5.3)
typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5):
/@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -925,7 +925,7 @@ packages:
'@types/semver': 7.3.13
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3)
eslint: 8.57.0
eslint-scope: 5.1.1
semver: 7.5.1
@@ -999,8 +999,8 @@ packages:
uri-js: 4.4.1
dev: true
/alpinejs@3.13.8:
resolution: {integrity: sha512-XolbBJryCndomtaHd/KHQjQeD/L72FJxy/YhLLFD4Lr7zzGcpcbg+UgXteMR2pYg1KhRUr6V4O3GfN1zJAmRWw==}
/alpinejs@3.14.1:
resolution: {integrity: sha512-ICar8UsnRZAYvv/fCNfNeKMXNoXGUfwHrjx7LqXd08zIP95G2d9bAOuaL97re+1mgt/HojqHsfdOLo/A5LuWgQ==}
dependencies:
'@vue/reactivity': 3.1.5
dev: false
@@ -1304,7 +1304,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
fsevents: 2.3.2
fsevents: 2.3.3
dev: true
/ci-info@3.5.0:
@@ -1626,35 +1626,35 @@ packages:
is-symbol: 1.0.4
dev: true
/esbuild@0.20.2:
resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
/esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/aix-ppc64': 0.20.2
'@esbuild/android-arm': 0.20.2
'@esbuild/android-arm64': 0.20.2
'@esbuild/android-x64': 0.20.2
'@esbuild/darwin-arm64': 0.20.2
'@esbuild/darwin-x64': 0.20.2
'@esbuild/freebsd-arm64': 0.20.2
'@esbuild/freebsd-x64': 0.20.2
'@esbuild/linux-arm': 0.20.2
'@esbuild/linux-arm64': 0.20.2
'@esbuild/linux-ia32': 0.20.2
'@esbuild/linux-loong64': 0.20.2
'@esbuild/linux-mips64el': 0.20.2
'@esbuild/linux-ppc64': 0.20.2
'@esbuild/linux-riscv64': 0.20.2
'@esbuild/linux-s390x': 0.20.2
'@esbuild/linux-x64': 0.20.2
'@esbuild/netbsd-x64': 0.20.2
'@esbuild/openbsd-x64': 0.20.2
'@esbuild/sunos-x64': 0.20.2
'@esbuild/win32-arm64': 0.20.2
'@esbuild/win32-ia32': 0.20.2
'@esbuild/win32-x64': 0.20.2
'@esbuild/aix-ppc64': 0.21.5
'@esbuild/android-arm': 0.21.5
'@esbuild/android-arm64': 0.21.5
'@esbuild/android-x64': 0.21.5
'@esbuild/darwin-arm64': 0.21.5
'@esbuild/darwin-x64': 0.21.5
'@esbuild/freebsd-arm64': 0.21.5
'@esbuild/freebsd-x64': 0.21.5
'@esbuild/linux-arm': 0.21.5
'@esbuild/linux-arm64': 0.21.5
'@esbuild/linux-ia32': 0.21.5
'@esbuild/linux-loong64': 0.21.5
'@esbuild/linux-mips64el': 0.21.5
'@esbuild/linux-ppc64': 0.21.5
'@esbuild/linux-riscv64': 0.21.5
'@esbuild/linux-s390x': 0.21.5
'@esbuild/linux-x64': 0.21.5
'@esbuild/netbsd-x64': 0.21.5
'@esbuild/openbsd-x64': 0.21.5
'@esbuild/sunos-x64': 0.21.5
'@esbuild/win32-arm64': 0.21.5
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
dev: true
/escalade@3.1.1:
@@ -1703,7 +1703,7 @@ packages:
eslint: 8.57.0
dev: true
/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8):
/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@3.3.2):
resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1716,7 +1716,7 @@ packages:
dependencies:
eslint: 8.57.0
eslint-config-prettier: 8.10.0(eslint@8.57.0)
prettier: 2.8.8
prettier: 3.3.2
prettier-linter-helpers: 1.0.0
dev: true
@@ -1999,14 +1999,6 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
/fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: true
optional: true
/fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -2095,6 +2087,7 @@ packages:
/glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -3183,6 +3176,10 @@ packages:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true
/picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
dev: true
/picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
@@ -3276,6 +3273,15 @@ packages:
source-map-js: 1.2.0
dev: true
/postcss@8.4.39:
resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
picocolors: 1.0.1
source-map-js: 1.2.0
dev: true
/prelude-ls@1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
engines: {node: '>= 0.8.0'}
@@ -3293,16 +3299,16 @@ packages:
fast-diff: 1.2.0
dev: true
/prettier-plugin-tailwindcss@0.3.0(prettier@2.8.8):
resolution: {integrity: sha512-009/Xqdy7UmkcTBpwlq7jsViDqXAYSOMLDrHAdTMlVZOrKfM2o9Ci7EMWTMZ7SkKBFTG04UM9F9iM2+4i6boDA==}
engines: {node: '>=12.17.0'}
/prettier-plugin-tailwindcss@0.6.5(prettier@3.3.2):
resolution: {integrity: sha512-axfeOArc/RiGHjOIy9HytehlC0ZLeMaqY09mm8YCkMzznKiDkwFzOpBvtuhuv3xG5qB73+Mj7OCe2j/L1ryfuQ==}
engines: {node: '>=14.21.3'}
peerDependencies:
'@ianvs/prettier-plugin-sort-imports': '*'
'@prettier/plugin-pug': '*'
'@shopify/prettier-plugin-liquid': '*'
'@shufo/prettier-plugin-blade': '*'
'@trivago/prettier-plugin-sort-imports': '*'
prettier: '>=2.2.0'
'@zackad/prettier-plugin-twig-melody': '*'
prettier: ^3.0
prettier-plugin-astro: '*'
prettier-plugin-css-order: '*'
prettier-plugin-import-sort: '*'
@@ -3310,9 +3316,9 @@ packages:
prettier-plugin-marko: '*'
prettier-plugin-organize-attributes: '*'
prettier-plugin-organize-imports: '*'
prettier-plugin-sort-imports: '*'
prettier-plugin-style-order: '*'
prettier-plugin-svelte: '*'
prettier-plugin-twig-melody: '*'
peerDependenciesMeta:
'@ianvs/prettier-plugin-sort-imports':
optional: true
@@ -3320,10 +3326,10 @@ packages:
optional: true
'@shopify/prettier-plugin-liquid':
optional: true
'@shufo/prettier-plugin-blade':
optional: true
'@trivago/prettier-plugin-sort-imports':
optional: true
'@zackad/prettier-plugin-twig-melody':
optional: true
prettier-plugin-astro:
optional: true
prettier-plugin-css-order:
@@ -3338,19 +3344,19 @@ packages:
optional: true
prettier-plugin-organize-imports:
optional: true
prettier-plugin-sort-imports:
optional: true
prettier-plugin-style-order:
optional: true
prettier-plugin-svelte:
optional: true
prettier-plugin-twig-melody:
optional: true
dependencies:
prettier: 2.8.8
prettier: 3.3.2
dev: true
/prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
engines: {node: '>=10.13.0'}
/prettier@3.3.2:
resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
engines: {node: '>=14'}
hasBin: true
dev: true
@@ -3645,14 +3651,14 @@ packages:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
/sass@1.74.1:
resolution: {integrity: sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==}
/sass@1.77.6:
resolution: {integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
chokidar: 3.5.3
immutable: 4.3.4
source-map-js: 1.0.2
source-map-js: 1.2.0
dev: true
/semver-diff@4.0.0:
@@ -3738,11 +3744,6 @@ packages:
smart-buffer: 4.2.0
dev: true
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
dev: true
/source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
@@ -3869,16 +3870,16 @@ packages:
engines: {node: '>= 0.4'}
dev: true
/tailwindcss-plugin-icons@2.2.2(tailwindcss@3.4.3):
/tailwindcss-plugin-icons@2.2.2(tailwindcss@3.4.4):
resolution: {integrity: sha512-PSqlQgHIrhCgijAJaFSkKkPdf6UY1omEVUKUu+aFGPeWHiQ/8xVn50dprAUl7Tg9+nsyU9pumM2mbQYgbYlmKQ==}
peerDependencies:
tailwindcss: 3.x
dependencies:
tailwindcss: 3.4.3
tailwindcss: 3.4.4
dev: true
/tailwindcss@3.4.3:
resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==}
/tailwindcss@3.4.4:
resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@@ -3948,8 +3949,8 @@ packages:
is-number: 7.0.0
dev: true
/tocbot@4.25.0:
resolution: {integrity: sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==}
/tocbot@4.28.2:
resolution: {integrity: sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==}
dev: false
/tr46@0.0.3:
@@ -3968,14 +3969,14 @@ packages:
resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
dev: true
/tsutils@3.21.0(typescript@4.9.5):
/tsutils@3.21.0(typescript@5.5.3):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
typescript: 4.9.5
typescript: 5.5.3
dev: true
/type-check@0.3.2:
@@ -4018,9 +4019,9 @@ packages:
is-typedarray: 1.0.0
dev: true
/typescript@4.9.5:
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
engines: {node: '>=4.2.0'}
/typescript@5.5.3:
resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==}
engines: {node: '>=14.17'}
hasBin: true
dev: true
@@ -4100,8 +4101,8 @@ packages:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
/vite@5.2.8(@types/node@18.11.9)(sass@1.74.1):
resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==}
/vite@5.3.3(@types/node@18.11.9)(sass@1.77.6):
resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -4129,10 +4130,10 @@ packages:
optional: true
dependencies:
'@types/node': 18.11.9
esbuild: 0.20.2
postcss: 8.4.38
esbuild: 0.21.5
postcss: 8.4.39
rollup: 4.14.1
sass: 1.74.1
sass: 1.77.6
optionalDependencies:
fsevents: 2.3.3
dev: true

View File

@@ -1,5 +1,5 @@
module.exports = {
plugins: [require("prettier-plugin-tailwindcss")],
plugins: ["prettier-plugin-tailwindcss"],
printWidth: 120,
tabWidth: 2,
useTabs: false,

View File

@@ -44,7 +44,7 @@ export default (key: string, group: string, plural: string): upvoteState => ({
group: group,
plural: plural,
name: name,
})
}),
);
},
});

View File

@@ -10,15 +10,6 @@ module.exports = {
8: "8",
},
},
container: {
padding: {
DEFAULT: "1rem",
sm: "2rem",
lg: "4rem",
xl: "5rem",
"2xl": "6rem",
},
},
},
plugins: [
require("@tailwindcss/aspect-ratio"),

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = '归档 - ' + ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = ~{::sidebar}, contentClass = '')}"
@@ -12,14 +12,14 @@
<div class="grid grid-cols-12 gap-4">
<div class="col-span-12 sm:col-span-3">
<h2
class="sticky top-16 mt-2 text-lg font-medium dark:text-slate-50"
class="sticky top-20 mt-2 text-lg font-medium dark:text-slate-50"
th:text="|${archive.year} 年 ${month.month} 月|"
></h2>
</div>
<div class="col-span-12 sm:col-span-9">
<th:block th:each="post : ${month.posts}">
<div
class="my-2 rounded border border-gray-300 bg-white shadow-sm hover:border-gray-400 hover:shadow dark:border-slate-600 dark:bg-slate-700 dark:hover:border-slate-700"
class="my-2 rounded-xl border border-gray-300 bg-white shadow-sm hover:border-gray-400 hover:shadow dark:border-slate-600 dark:bg-slate-700 dark:hover:border-slate-700"
>
<div class="relative flex flex-col gap-2 p-4">
<div class="flex min-w-0 flex-wrap items-center justify-between gap-4">
@@ -58,7 +58,7 @@
>
</a>
</div>
<div class="line-clamp-6 text-sm font-light dark:text-slate-200">
<div class="line-clamp-2 text-sm font-light dark:text-slate-200">
<th:block th:text="${post.status.excerpt}"></th:block>
</div>
</div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = |作者:${author.spec.displayName} - ${site.title}|, hero = ~{::hero}, content = ~{::content}, head = null, footer = null, sidebar = null, contentClass = null)}"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = '分类:' + ${category.spec.displayName} + ' - ' + ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = null, contentClass = null)}"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = ${error.status} + ' | ' + ${#strings.defaultString(error.title, 'Internal server error')} + ' - ' +${site.title}, hero = null, header = null, content = ~{::content}, head = null, footer = null, sidebar = null, contentClass = null)}"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = null, contentClass = null)}"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = '链接 - ' + ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = ~{::sidebar}, contentClass = '')}"

View File

@@ -2,7 +2,7 @@
<li>
<a
href="/"
class="inline-flex cursor-pointer items-center rounded px-2 py-1 font-medium text-gray-500 transition-all hover:bg-gray-100 hover:text-gray-900 hover:shadow-sm dark:text-slate-200 dark:hover:bg-slate-700 dark:hover:text-slate-50"
class="inline-flex cursor-pointer items-center rounded px-3 py-1 font-medium text-gray-500 transition-all hover:bg-gray-100 hover:text-gray-900 hover:shadow-sm dark:text-slate-200 dark:hover:bg-slate-700 dark:hover:text-slate-50"
th:classappend="${category == null} ? '!text-gray-900 !bg-gray-100 dark:!bg-slate-700 dark:!text-slate-50'"
>
<span class="truncate text-base"> 全部 </span>
@@ -18,7 +18,7 @@
>
<a
th:href="@{${categoryItem.status.permalink}}"
class="inline-flex cursor-pointer items-center gap-1 rounded px-2 py-1 font-medium text-gray-500 transition-all hover:bg-gray-100 hover:text-gray-900 hover:shadow-sm dark:text-slate-200 dark:hover:bg-slate-700 dark:hover:text-slate-50"
class="inline-flex cursor-pointer items-center gap-1 rounded px-3 py-1 font-medium text-gray-500 transition-all hover:bg-gray-100 hover:text-gray-900 hover:shadow-sm dark:text-slate-200 dark:hover:bg-slate-700 dark:hover:text-slate-50"
th:classappend="${category} and ${category.metadata.name == categoryItem.metadata.name} ? '!text-gray-900 !bg-gray-100 dark:!bg-slate-700 dark:!text-slate-50'"
>
<span class="truncate text-base" th:text="${categoryItem.spec.displayName}"> </span>

View File

@@ -1,9 +1,9 @@
<ul th:fragment="next (categories)" class="my-3 ml-3 space-y-1 border-l pl-2">
<ul th:fragment="next (categories)" class="my-3 ml-3 space-y-1 border-l pl-2 dark:border-slate-700">
<li th:fragment="single (categories)" th:each="category : ${categories}">
<a
th:href="@{${category.status.permalink}}"
th:title="${category.spec.displayName}"
class="group flex items-center justify-between rounded px-1.5 py-1 transition-all hover:bg-gray-100 dark:hover:bg-slate-700"
class="group flex items-center justify-between rounded px-2 py-1 transition-all hover:bg-gray-100 dark:hover:bg-slate-700"
>
<span class="text-sm opacity-80 dark:text-slate-50" th:text="${category.spec.displayName}"> </span>
<span

View File

@@ -11,35 +11,37 @@
/>
</a>
</div>
<div class="relative col-span-2 flex flex-col gap-2 p-4">
<div
th:if="${not #lists.isEmpty(post.categories)} or ${not #lists.isEmpty(post.tags)}"
class="flex flex-wrap items-center gap-2"
>
<a
th:if="${#lists.size(post.categories)} gt 0"
th:href="@{${post.categories[0].status.permalink}}"
th:title="${post.categories[0].spec.displayName}"
th:text="${post.categories[0].spec.displayName}"
class="mr-1 text-sm font-medium text-gray-800 hover:text-gray-900 dark:text-slate-500 dark:hover:text-slate-600"
<div class="relative col-span-2 grid h-full grid-cols-1 content-between gap-2 p-4">
<div class="space-y-2">
<div
th:if="${not #lists.isEmpty(post.categories)} or ${not #lists.isEmpty(post.tags)}"
class="flex flex-wrap items-center gap-2"
>
</a>
<a
th:each="tag : ${post.tags}"
th:href="@{${tag.status.permalink}}"
th:title="${tag.spec.displayName}"
th:text="|#${tag.spec.displayName}|"
class="cursor-pointer text-sm italic text-gray-600 hover:text-gray-900 dark:text-slate-400 dark:hover:text-slate-500"
<a
th:if="${#lists.size(post.categories)} gt 0"
th:href="@{${post.categories[0].status.permalink}}"
th:title="${post.categories[0].spec.displayName}"
th:text="${post.categories[0].spec.displayName}"
class="mr-1 text-sm font-medium text-gray-800 hover:text-gray-900 dark:text-slate-500 dark:hover:text-slate-600"
>
</a>
<a
th:each="tag : ${post.tags}"
th:href="@{${tag.status.permalink}}"
th:title="${tag.spec.displayName}"
th:text="|#${tag.spec.displayName}|"
class="cursor-pointer text-sm italic text-gray-600 hover:text-gray-900 dark:text-slate-400 dark:hover:text-slate-500"
>
</a>
</div>
<h1
class="line-clamp-2 cursor-pointer text-2xl font-medium transition-all hover:text-gray-500 hover:underline dark:text-slate-50 dark:hover:text-white"
>
</a>
<a th:href="@{${post.status.permalink}}" th:text="${post.spec.title}"></a>
</h1>
<p class="font-sm line-clamp-6 font-light dark:text-slate-200" th:text="${post.status.excerpt}"></p>
</div>
<h1
class="line-clamp-2 cursor-pointer text-2xl font-medium transition-all hover:text-gray-500 hover:underline dark:text-slate-50 dark:hover:text-white"
>
<a th:href="@{${post.status.permalink}}" th:text="${post.spec.title}"></a>
</h1>
<p class="font-sm line-clamp-6 font-light dark:text-slate-200" th:text="${post.status.excerpt}"></p>
<div class="mt-4 flex flex-1 items-center justify-start gap-2">
<div class="mt-4 flex items-center justify-start gap-2">
<a th:href="@{${post.owner.permalink}}" th:title="${post.owner.displayName}">
<img
th:src="${post.owner.avatar ?: #theme.assets('/images/default-avatar.svg')}"

View File

@@ -1,5 +1,5 @@
<footer th:if="${theme.config.footer.style == 'style_1'}" class="mt-10 bg-white py-8 dark:bg-slate-800">
<div class="container mx-auto sm:flex sm:items-center sm:justify-between">
<div class="max-w-7xl px-4 lg:px-6 mx-auto sm:flex sm:items-center sm:justify-between">
<a href="/" class="mb-4 flex items-center justify-center sm:mb-0 sm:justify-start">
<img
th:if="${not #strings.isEmpty(theme.config.footer.logo)} or ${not #strings.isEmpty(site.logo)}"
@@ -32,7 +32,7 @@
</div>
<hr class="my-6 border-gray-100 dark:border-slate-700 sm:mx-auto lg:my-8" />
<div class="space-y-1">
<span class="container mx-auto block text-center text-sm text-gray-500 dark:text-slate-300">
<span class="max-w-7xl px-4 lg:px-6 mx-auto block text-center text-sm text-gray-500 dark:text-slate-300">
<a
href="https://beian.miit.gov.cn/"
class="hover:underline"
@@ -43,7 +43,7 @@
</span>
<div
th:if="${not #strings.isEmpty(theme.config.beian.gongan_text)}"
class="container mx-auto block text-center text-sm text-gray-500 dark:text-slate-300"
class="max-w-7xl px-4 lg:px-6 mx-auto block text-center text-sm text-gray-500 dark:text-slate-300"
>
<p class="flex items-center justify-center gap-1">
<img th:src="@{/assets/images/gongan_beian.png}" class="size-4" alt="gongan_beian" />
@@ -56,20 +56,20 @@
></a>
</p>
</div>
<span class="container mx-auto block text-center text-sm text-gray-500 dark:text-slate-300">
<span class="max-w-7xl px-4 lg:px-6 mx-auto block text-center text-sm text-gray-500 dark:text-slate-300">
©
<th:block th:text="${#dates.format(new java.util.Date().getTime(), 'yyyy')}" />
<a href="/" class="hover:underline" th:text="${site.title}"></a>. All Rights Reserved. Powered by
<a href="https://halo.run" class="hover:underline" target="_blank">Halo</a>.
</span>
<span class="container mx-auto block text-center text-sm text-gray-500 dark:text-slate-300">
<span class="max-w-7xl px-4 lg:px-6 mx-auto block text-center text-sm text-gray-500 dark:text-slate-300">
<halo:footer />
</span>
</div>
</footer>
<footer th:if="${theme.config.footer.style == 'style_2'}" class="mt-10 bg-white py-8 dark:bg-slate-800">
<div class="container mx-auto md:flex md:justify-between md:gap-10">
<div class="max-w-7xl px-4 lg:px-6 mx-auto md:flex md:justify-between md:gap-10">
<div class="mb-6 max-w-full md:mb-0 md:max-w-md">
<a href="/" class="mb-6 flex items-center">
<img
@@ -114,7 +114,7 @@
</div>
</div>
<hr class="my-6 border-gray-200 dark:border-slate-700 sm:mx-auto lg:my-8" />
<div class="container mx-auto flex flex-col sm:flex-row sm:items-center sm:justify-between">
<div class="max-w-7xl px-4 lg:px-6 mx-auto flex flex-col sm:flex-row sm:items-center sm:justify-between">
<div class="flex flex-col space-y-1 text-center sm:text-left">
<span class="text-sm text-gray-500 dark:text-slate-300 sm:text-center">
©

View File

@@ -1,10 +1,10 @@
<header
id="header-menu"
class="sticky top-0 z-10 flex h-14 bg-white py-3 shadow-sm transition-all dark:bg-gray-800"
class="sticky top-0 z-10 flex h-16 bg-white py-3 shadow-sm transition-all dark:bg-gray-800"
x-data="{ open : false }"
th:with="menu = ${menuFinder.getPrimary()}"
>
<div class="container mx-auto flex h-full justify-between">
<div class="max-w-7xl w-full px-4 lg:px-6 mx-auto flex h-full justify-between">
<div class="flex h-full items-center gap-6">
<div class="mr-2 h-full">
<a href="/" class="inline-flex h-full items-center">

View File

@@ -7,12 +7,12 @@
>
<th:block th:switch="${theme.config.layout.header_widget}">
<th:block th:case="latest_post" th:with="posts = ${postFinder.list(1,1)}">
<div class="container mx-auto py-6" th:if="${posts.total gt 0}">
<div class="max-w-7xl px-4 lg:px-6 mx-auto py-6" th:if="${posts.total gt 0}">
<th:block th:replace="~{modules/featured-post-card :: featured-post-card(post=${posts.items[0]})}" />
</div>
</th:block>
<th:block th:case="latest_post_grid" th:with="posts = ${postFinder.list(1,5)}">
<div class="container mx-auto grid grid-cols-1 gap-3 py-6 sm:grid-cols-5" th:if="${posts.total gt 0}">
<div class="max-w-7xl px-4 lg:px-6 mx-auto grid grid-cols-1 gap-3 py-6 sm:grid-cols-5" th:if="${posts.total gt 0}">
<div class="col-span-1 sm:col-span-3">
<th:block
th:replace="~{modules/post-card :: post-card(post=${posts.items[0]},cover=true,animation=false,border=false,direction='row')}"
@@ -30,7 +30,7 @@
</div>
</th:block>
<th:block th:case="site_title">
<div class="container mx-auto flex h-full flex-col items-center justify-center gap-3 py-6">
<div class="max-w-7xl px-4 lg:px-6 mx-auto flex h-full flex-col items-center justify-center gap-3 py-6">
<span class="text-5xl text-white" th:text="${site.title}"></span>
<span class="text-sm font-light text-white opacity-50" th:text="${site.subtitle}"></span>
</div>

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en" th:fragment="html (title,hero,content,head,footer,sidebar,contentClass)">
<head>
<meta charset="UTF-8" />
@@ -22,8 +22,8 @@
<th:block th:unless="${hero != null}">
<th:block th:replace="~{modules/hero :: hero(isHome = true, cover = null, title = null)}" />
</th:block>
<section class="container mx-auto mt-6 grid grid-cols-4 gap-6" th:classappend="${contentClass}">
<div class="z-0 col-span-4 sm:col-span-3">
<section class="max-w-7xl px-4 lg:px-6 mx-auto mt-6 flex gap-6" th:classappend="${contentClass}">
<div class="z-0 min-w-0 flex-1 shrink">
<th:block th:replace="${content}" />
</div>
<th:block th:if="${sidebar != null}">

View File

@@ -21,43 +21,45 @@
</div>
</div>
<div
class="relative flex flex-col gap-2 p-4"
class="relative grid h-full grid-cols-1 content-between gap-2 p-4 col-span-3"
th:with="list_layout=${theme.config.layout.post_list_layout}"
th:classappend="${direction == 'column' ? 'col-span-3' : ''}"
th:classappend="${#strings.isEmpty(post.spec.cover) ? 'col-span-5' : ''}"
>
<div
th:if="${not #lists.isEmpty(post.categories)} or ${not #lists.isEmpty(post.tags)}"
class="flex flex-wrap items-center gap-2"
>
<a
th:if="${#lists.size(post.categories)} gt 0"
th:href="@{${post.categories[0].status.permalink}}"
th:title="${post.categories[0].spec.displayName}"
th:text="${post.categories[0].spec.displayName}"
class="mr-1 text-sm font-medium text-gray-800 hover:text-gray-900 dark:text-slate-500 dark:hover:text-slate-600"
<div class="space-y-2">
<div
th:if="${not #lists.isEmpty(post.categories)} or ${not #lists.isEmpty(post.tags)}"
class="flex flex-wrap items-center gap-2"
>
</a>
<a
th:each="tag : ${post.tags}"
th:href="@{${tag.status.permalink}}"
th:title="${tag.spec.displayName}"
th:text="|#${tag.spec.displayName}|"
class="cursor-pointer text-sm italic text-gray-600 hover:text-gray-900 dark:text-slate-400 dark:hover:text-slate-500"
<a
th:if="${#lists.size(post.categories)} gt 0"
th:href="@{${post.categories[0].status.permalink}}"
th:title="${post.categories[0].spec.displayName}"
th:text="${post.categories[0].spec.displayName}"
class="mr-1 text-sm font-medium text-gray-800 hover:text-gray-900 dark:text-slate-500 dark:hover:text-slate-600"
>
</a>
<a
th:each="tag : ${post.tags}"
th:href="@{${tag.status.permalink}}"
th:title="${tag.spec.displayName}"
th:text="|#${tag.spec.displayName}|"
class="cursor-pointer text-sm italic text-gray-600 hover:text-gray-900 dark:text-slate-400 dark:hover:text-slate-500"
>
</a>
</div>
<h1
class="line-clamp-2 cursor-pointer text-2xl font-medium transition-all hover:text-gray-500 hover:underline dark:text-slate-50 dark:hover:text-white"
th:classappend="|${direction == 'column' ? 'sm:line-clamp-2' : ''} ${list_layout == 'grid_2' ? 'sm:line-clamp-3' : ''} ${list_layout == 'grid_3' ? 'sm:line-clamp-4' : ''}|"
>
</a>
<a th:href="@{${post.status.permalink}}" th:text="${post.spec.title}" th:title="${post.spec.title}"></a>
</h1>
<p
class="font-sm line-clamp-2 font-light dark:text-slate-200"
th:text="${post.status.excerpt}"
th:classappend="${list_layout == 'grid_3' ? 'sm:line-clamp-3' : ''}"
></p>
</div>
<h1
class="line-clamp-2 cursor-pointer text-2xl font-medium transition-all hover:text-gray-500 hover:underline dark:text-slate-50 dark:hover:text-white"
th:classappend="|${direction == 'column' ? 'sm:line-clamp-2' : ''} ${list_layout == 'grid_2' ? 'sm:line-clamp-3' : ''} ${list_layout == 'grid_3' ? 'sm:line-clamp-4' : ''}|"
>
<a th:href="@{${post.status.permalink}}" th:text="${post.spec.title}" th:title="${post.spec.title}"></a>
</h1>
<p
class="font-sm line-clamp-6 font-light dark:text-slate-200"
th:text="${post.status.excerpt}"
th:classappend="${list_layout == 'grid_3' ? ' sm:line-clamp-8' : ''}"
></p>
<div class="mt-4 flex flex-1 items-center justify-start gap-2">
<div class="mt-4 flex items-center justify-start gap-2">
<a th:href="@{${post.owner.permalink}}" th:title="${post.owner.displayName}">
<img
th:src="${post.owner.avatar ?: #theme.assets('/images/default-avatar.svg')}"

View File

@@ -1,4 +1,4 @@
<aside th:fragment="sidebar (prepend)" class="z-0 col-span-1 hidden h-full flex-col gap-6 sm:flex">
<aside th:fragment="sidebar (prepend)" class="z-0 hidden h-full w-72 flex-none flex-col gap-6 md:flex">
<th:block th:with="widgets = ${theme.config.sidebar.widgets} ">
<th:block th:if="${prepend != null}">
<th:block th:replace="${prepend}" />

View File

@@ -8,8 +8,8 @@
th:each="tagItem,tagStat: ${tags}"
th:href="@{${tagItem.status.permalink}}"
th:title="${tagItem.spec.displayName}"
class="rounded bg-gray-100 px-1 py-0.5 text-sm text-gray-900 hover:bg-gray-200 dark:bg-slate-600 dark:text-slate-50 dark:hover:bg-slate-700 dark:hover:text-slate-100"
th:classappend="(${tag} and ${tag.metadata.name == tagItem.metadata.name}) or (not ${tag} and ${tagStat.index == 0}) ? '!bg-gray-200 dark:!bg-slate-700 dark:!text-slate-100 ring-2 ring-gray-300 dark:ring-slate-600' : ''"
class="inline-flex items-center gap-x-1.5 rounded-full border border-gray-200 bg-white px-2.5 py-1 text-xs font-medium text-gray-800 shadow-sm hover:border-indigo-400 dark:bg-slate-700 dark:text-slate-200 dark:border-slate-800 dark:hover:border-indigo-200"
th:classappend="(${tag} and ${tag.metadata.name == tagItem.metadata.name}) or (not ${tag} and ${tagStat.index == 0}) ? '!border-indigo-400 dark:!border-indigo-200' : ''"
>
<th:block th:text="|#${tagItem.spec.displayName}|" />
<sup th:text="${tagItem.status.visiblePostCount}"></sup>

View File

@@ -1,5 +1,5 @@
<div
class="w-full cursor-pointer overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
class="w-full overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
>
<h2 class="inline-flex items-center gap-2 text-base dark:text-slate-50">
<span class="i-tabler-category text-lg"></span>

View File

@@ -1,5 +1,5 @@
<div
class="w-full cursor-pointer overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
class="w-full overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
>
<h2 class="inline-flex items-center gap-2 text-base dark:text-slate-50">
<span class="i-tabler-message-circle text-lg"></span>

View File

@@ -1,5 +1,5 @@
<div
class="w-full cursor-pointer overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
class="w-full overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
>
<h2 class="inline-flex items-center gap-2 text-base dark:text-slate-50">
<span class="i-tabler-stairs-up text-lg text-red-600 dark:text-red-700"></span>

View File

@@ -1,5 +1,5 @@
<div
class="w-full cursor-pointer overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
class="w-full overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
th:with="stats = ${siteStatsFinder.getStats()}"
>
<div class="flex flex-col items-center justify-center gap-4">

View File

@@ -1,5 +1,5 @@
<div
class="w-full cursor-pointer overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
class="w-full overflow-hidden rounded-xl bg-white p-3 shadow transition-all duration-500 hover:shadow-md dark:bg-slate-800"
>
<div class="flex items-center justify-between">
<h2 class="inline-flex items-center gap-2 text-base dark:text-slate-50">
@@ -19,7 +19,7 @@
th:each="tag : ${tags}"
th:href="@{${tag.status.permalink}}"
th:title="${tag.spec.displayName}"
class="rounded bg-gray-100 px-1 py-0.5 text-sm text-gray-900 hover:bg-gray-200 dark:bg-slate-600 dark:text-slate-50 dark:hover:bg-slate-700 dark:hover:text-slate-100"
class="inline-flex items-center gap-x-1.5 rounded-full border border-gray-200 bg-white px-2.5 py-1 text-xs font-medium text-gray-800 shadow-sm hover:border-indigo-400 dark:bg-slate-700 dark:text-slate-200 dark:border-slate-800 dark:hover:border-indigo-200"
>
<th:block th:text="|#${tag.spec.displayName}|" />
<sup th:text="${tag.status.visiblePostCount}"></sup>

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = '瞬间 - ' + ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = ~{::sidebar}, contentClass = '')}"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = ${singlePage.spec.title} + ' - ' + ${site.title}, hero = ~{::hero}, content = ~{::content}, head = ~{::head}, footer = ~{::footer}, sidebar = null, contentClass = ${theme.config.layout.content_header} and ${not #strings.isEmpty(singlePage.spec.cover)} ? '!-mt-20' : '')}"
@@ -15,9 +15,12 @@
<div class="rounded-xl bg-white p-4 dark:bg-slate-800">
<div class="flex items-center justify-between">
<div class="inline-flex items-center justify-start gap-2">
<a th:href="@{${singlePage.owner.permalink}}" th:title="${singlePage.owner.displayName}">
<a
th:unless="${#strings.isEmpty(singlePage.owner.avatar)}"
th:href="@{${singlePage.owner.permalink}}"
th:title="${singlePage.owner.displayName}"
>
<img
th:if="${not #strings.isEmpty(singlePage.owner.avatar)}"
th:src="${singlePage.owner.avatar}"
th:alt="${singlePage.owner.displayName}"
class="size-10 rounded-full"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = '图库 - ' + ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = ~{::sidebar}, contentClass = '')}"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = ${post.spec.title} + ' - ' + ${site.title}, hero = ~{::hero}, content = ~{::content}, head = ~{::head}, footer = ~{::footer}, sidebar = ~{::sidebar}, contentClass = ${theme.config.layout.content_header} and ${not #strings.isEmpty(post.spec.cover)} ? '!-mt-20' : '')}"
@@ -37,13 +37,12 @@
class="flex flex-col items-center justify-between gap-2 sm:flex-row"
>
<div class="flex w-full items-center justify-start gap-2">
<a th:href="@{${post.owner.permalink}}" th:title="${post.owner.displayName}">
<img
th:if="${not #strings.isEmpty(post.owner.avatar)}"
th:src="${post.owner.avatar}"
class="size-10 rounded-full"
th:alt="${post.owner.displayName}"
/>
<a
th:unless="${#strings.isEmpty(post.owner.avatar)}"
th:href="@{${post.owner.permalink}}"
th:title="${post.owner.displayName}"
>
<img th:src="${post.owner.avatar}" class="size-10 rounded-full" th:alt="${post.owner.displayName}" />
</a>
<div class="flex flex-col gap-0.5">
<a

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = '标签:' + ${tag.spec.displayName} + ' - ' + ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = null, contentClass = null)}"

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html
xmlns:th="https://www.thymeleaf.org"
th:replace="~{modules/layout :: html(title = '标签 - ' + ${site.title}, hero = null, content = ~{::content}, head = null, footer = null, sidebar = null, contentClass = null)}"