diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 649b9df..848042e 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,48 +1,45 @@ --- -name-template: '$RESOLVED_VERSION' -tag-template: '$RESOLVED_VERSION' +name-template: "$RESOLVED_VERSION" +tag-template: "$RESOLVED_VERSION" categories: - - title: 'Features' + - title: "Features" labels: - - 'feat' - - title: 'Bug Fixes' + - "feat" + - title: "Bug Fixes" labels: - - 'fix' - - 'revert' - - title: 'Maintenance' + - "fix" + - "revert" + - title: "Maintenance" labels: - - 'build' - - 'chore' - - 'ci' - - 'docs' - - 'style' - - 'refactor' - - 'perf' - - 'test' - - title: 'Wario Client' - labels: - - api-client -change-template: '- $TITLE @$AUTHOR (#$NUMBER)' + - "build" + - "chore" + - "ci" + - "docs" + - "style" + - "refactor" + - "perf" + - "test" +change-template: "- $TITLE @$AUTHOR (#$NUMBER)" change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. version-resolver: major: labels: - - 'major' + - "major" minor: labels: - - 'feat' + - "feat" patch: labels: - - 'fix' - - 'build' - - 'chore' - - 'ci' - - 'docs' - - 'style' - - 'refactor' - - 'perf' - - 'test' - - 'revert' + - "fix" + - "build" + - "chore" + - "ci" + - "docs" + - "style" + - "refactor" + - "perf" + - "test" + - "revert" default: patch template: | ## Changes @@ -50,42 +47,39 @@ template: | $CHANGES autolabeler: - - label: 'major' + - label: "major" body: - - '/BREAKING CHANGE.*/' - - label: 'feat' + - "/BREAKING CHANGE.*/" + - label: "feat" title: - - '/^feat.*: .*/' - - label: 'fix' + - "/^feat.*: .*/" + - label: "fix" title: - - '/^fix.*: .*/' - - label: 'chore' + - "/^fix.*: .*/" + - label: "chore" title: - - '/^chore.*:.*/' - - label: 'ci' + - "/^chore.*:.*/" + - label: "ci" title: - - '/^ci.*:.*/' - - label: 'build' + - "/^ci.*:.*/" + - label: "build" title: - - '/^build.*:.*/' - - label: 'style' + - "/^build.*:.*/" + - label: "style" title: - - '/^style.*:.*/' - - label: 'refactor' + - "/^style.*:.*/" + - label: "refactor" title: - - '/^refactor.*:.*/' - - label: 'perf' + - "/^refactor.*:.*/" + - label: "perf" title: - - '/^perf.*:.*/' - - label: 'test' + - "/^perf.*:.*/" + - label: "test" title: - - '/^test.*:.*/' - - label: 'docs' + - "/^test.*:.*/" + - label: "docs" title: - - '/^docs.*:.*/' - - label: 'revert' + - "/^docs.*:.*/" + - label: "revert" title: - - '/^revert.*:.*/' - - label: 'api-client' - files: - - 'wario_client/*' + - "/^revert.*:.*/" diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 8cd2d86..51c38d1 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -1,4 +1,4 @@ -name: CI/CD +name: CI on: # yamllint disable-line rule:truthy pull_request: @@ -12,10 +12,10 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v6 with: enable-cache: true @@ -38,10 +38,10 @@ jobs: python-version: ["3.12", "3.13"] dj-version: [django52, django60] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v6 with: enable-cache: true @@ -69,10 +69,10 @@ jobs: - lint - test steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v6 with: enable-cache: true @@ -83,9 +83,10 @@ jobs: uses: actions/setup-node@v4 with: node-version: 22 + cache: npm - name: Install dependencies - run: npm install + run: npm ci - name: Build Tailwind CSS run: npm run build diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 37daa23..0da41ca 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -5,52 +5,41 @@ name: Release Drafter on: push: branches: - - master - pull_request: - branches: - - master - types: - - opened - - reopened - - synchronize - - edited + - main + pull_request_target: + types: [opened, reopened, synchronize, edited] -permissions: - contents: write # for release-drafter/release-drafter to create a github release - pull-requests: write # for release-drafter/release-drafter to add label to PR +permissions: read-all jobs: - update_pr_labels: + autolabeler: name: Update PR Labels - if: github.event_name == 'pull_request' + if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest + permissions: + pull-requests: write steps: - - - uses: release-drafter/release-drafter@v5 - with: - disable-autolabeler: false - disable-releaser: true + - uses: release-drafter/release-drafter/autolabeler@139054aeaa9adc52ab36ddf67437541f039b88e2 # v7.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - update_release_draft: + release_draft: name: Update Release Draft if: github.event_name == 'push' runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: read env: PUBLISH_DRAFT: false steps: - - name: Check if a version is cut if: "contains(github.event.head_commit.message, 'chore(prerelease): Cut Version')" run: | echo "PUBLISH_DRAFT=true" >> $GITHUB_ENV - # Drafts your next Release notes - - uses: release-drafter/release-drafter@v5 + - uses: release-drafter/release-drafter@139054aeaa9adc52ab36ddf67437541f039b88e2 # v7.1.1 with: - disable-autolabeler: true - disable-releaser: false publish: ${{ env.PUBLISH_DRAFT }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/package-lock.json b/package-lock.json index dbd8e57..6447abd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,12 @@ "version": "0.6.0", "license": "MIT", "devDependencies": { - "@tailwindcss/aspect-ratio": "^0.4.2", - "@tailwindcss/cli": "^4.0.17", - "@tailwindcss/forms": "^0.5.10", - "@tailwindcss/postcss": "^4.0.17", - "@tailwindcss/typography": "^0.5.16", - "daisyui": "^5.0.9", + "@tailwindcss/cli": "^4.2.2", + "@tailwindcss/postcss": "^4.2.2", + "@tailwindcss/typography": "^0.5.19", + "daisyui": "^5.5.19", "rimraf": "^6.0.1", - "tailwindcss": "^4.0.17" + "tailwindcss": "^4.2.2" } }, "node_modules/@alloc/quick-lru": { @@ -414,92 +412,69 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@tailwindcss/aspect-ratio": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz", - "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" - } - }, "node_modules/@tailwindcss/cli": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.18.tgz", - "integrity": "sha512-sMZ+lZbDyxwjD2E0L7oRUjJ01Ffjtme5OtjvvnC+cV4CEDcbqzbp25TCpxHj6kWLU9+DlqJOiNgSOgctC2aZmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.2.2.tgz", + "integrity": "sha512-iJS+8kAFZ8HPqnh0O5DHCLjo4L6dD97DBQEkrhfSO4V96xeefUus2jqsBs1dUMt3OU9Ks4qIkiY0mpL5UW+4LQ==", "dev": true, "license": "MIT", "dependencies": { "@parcel/watcher": "^2.5.1", - "@tailwindcss/node": "4.1.18", - "@tailwindcss/oxide": "4.1.18", - "enhanced-resolve": "^5.18.3", + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "enhanced-resolve": "^5.19.0", "mri": "^1.2.0", "picocolors": "^1.1.1", - "tailwindcss": "4.1.18" + "tailwindcss": "4.2.2" }, "bin": { "tailwindcss": "dist/index.mjs" } }, - "node_modules/@tailwindcss/forms": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz", - "integrity": "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mini-svg-data-uri": "^1.2.3" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" - } - }, "node_modules/@tailwindcss/node": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", - "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", - "lightningcss": "1.30.2", + "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", - "tailwindcss": "4.1.18" + "tailwindcss": "4.2.2" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", - "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10" + "node": ">= 20" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-x64": "4.1.18", - "@tailwindcss/oxide-freebsd-x64": "4.1.18", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-x64-musl": "4.1.18", - "@tailwindcss/oxide-wasm32-wasi": "4.1.18", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", - "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", "cpu": [ "arm64" ], @@ -510,13 +485,13 @@ "android" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", - "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", "cpu": [ "arm64" ], @@ -527,13 +502,13 @@ "darwin" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", - "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", "cpu": [ "x64" ], @@ -544,13 +519,13 @@ "darwin" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", - "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", "cpu": [ "x64" ], @@ -561,13 +536,13 @@ "freebsd" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", - "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", "cpu": [ "arm" ], @@ -578,81 +553,93 @@ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", - "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", - "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", - "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", - "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", - "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -668,21 +655,21 @@ "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" + "tslib": "^2.8.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", - "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", "cpu": [ "arm64" ], @@ -693,13 +680,13 @@ "win32" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", - "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", "cpu": [ "x64" ], @@ -710,21 +697,21 @@ "win32" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/postcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz", - "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.2.tgz", + "integrity": "sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==", "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.18", - "@tailwindcss/oxide": "4.1.18", - "postcss": "^8.4.41", - "tailwindcss": "4.1.18" + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "postcss": "^8.5.6", + "tailwindcss": "4.2.2" } }, "node_modules/@tailwindcss/typography": { @@ -754,9 +741,9 @@ } }, "node_modules/daisyui": { - "version": "5.5.18", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.5.18.tgz", - "integrity": "sha512-VVzjpOitMGB6DWIBeRSapbjdOevFqyzpk9u5Um6a4tyId3JFrU5pbtF0vgjXDth76mJZbueN/j9Ok03SPrh/og==", + "version": "5.5.19", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.5.19.tgz", + "integrity": "sha512-pbFAkl1VCEh/MPCeclKL61I/MqRIFFhNU7yiXoDDRapXN4/qNCoMxeCCswyxEEhqL5eiTTfwHvucFtOE71C9sA==", "dev": true, "license": "MIT", "funding": { @@ -846,9 +833,9 @@ } }, "node_modules/lightningcss": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -862,23 +849,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.30.2", - "lightningcss-darwin-arm64": "1.30.2", - "lightningcss-darwin-x64": "1.30.2", - "lightningcss-freebsd-x64": "1.30.2", - "lightningcss-linux-arm-gnueabihf": "1.30.2", - "lightningcss-linux-arm64-gnu": "1.30.2", - "lightningcss-linux-arm64-musl": "1.30.2", - "lightningcss-linux-x64-gnu": "1.30.2", - "lightningcss-linux-x64-musl": "1.30.2", - "lightningcss-win32-arm64-msvc": "1.30.2", - "lightningcss-win32-x64-msvc": "1.30.2" + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "cpu": [ "arm64" ], @@ -897,9 +884,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "cpu": [ "arm64" ], @@ -918,9 +905,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" ], @@ -939,9 +926,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "cpu": [ "x64" ], @@ -960,9 +947,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "cpu": [ "arm" ], @@ -981,13 +968,16 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1002,13 +992,16 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1023,13 +1016,16 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1044,13 +1040,16 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1065,9 +1064,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" ], @@ -1086,9 +1085,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" ], @@ -1126,15 +1125,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.3.tgz", - "integrity": "sha512-gSfqpMRC8IxghvMcxzzmMnWpXAChSA+vy4cia33RgerMS8Fex95akUyQZPbxJJmeBGiGmK7n/1OpUX8ksRjIdA==", - "dev": true, - "bin": { - "mini-svg-data-uri": "cli.js" - } - }, "node_modules/minimatch": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", @@ -1315,9 +1305,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", "dev": true, "license": "MIT" }, @@ -1522,175 +1512,159 @@ "dev": true, "optional": true }, - "@tailwindcss/aspect-ratio": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz", - "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==", - "dev": true, - "requires": {} - }, "@tailwindcss/cli": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.18.tgz", - "integrity": "sha512-sMZ+lZbDyxwjD2E0L7oRUjJ01Ffjtme5OtjvvnC+cV4CEDcbqzbp25TCpxHj6kWLU9+DlqJOiNgSOgctC2aZmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.2.2.tgz", + "integrity": "sha512-iJS+8kAFZ8HPqnh0O5DHCLjo4L6dD97DBQEkrhfSO4V96xeefUus2jqsBs1dUMt3OU9Ks4qIkiY0mpL5UW+4LQ==", "dev": true, "requires": { "@parcel/watcher": "^2.5.1", - "@tailwindcss/node": "4.1.18", - "@tailwindcss/oxide": "4.1.18", - "enhanced-resolve": "^5.18.3", + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "enhanced-resolve": "^5.19.0", "mri": "^1.2.0", "picocolors": "^1.1.1", - "tailwindcss": "4.1.18" - } - }, - "@tailwindcss/forms": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz", - "integrity": "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==", - "dev": true, - "requires": { - "mini-svg-data-uri": "^1.2.3" + "tailwindcss": "4.2.2" } }, "@tailwindcss/node": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", - "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", "dev": true, "requires": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", - "lightningcss": "1.30.2", + "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", - "tailwindcss": "4.1.18" + "tailwindcss": "4.2.2" } }, "@tailwindcss/oxide": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", - "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", "dev": true, "requires": { - "@tailwindcss/oxide-android-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-x64": "4.1.18", - "@tailwindcss/oxide-freebsd-x64": "4.1.18", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-x64-musl": "4.1.18", - "@tailwindcss/oxide-wasm32-wasi": "4.1.18", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" } }, "@tailwindcss/oxide-android-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", - "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", "dev": true, "optional": true }, "@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", - "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", "dev": true, "optional": true }, "@tailwindcss/oxide-darwin-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", - "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", "dev": true, "optional": true }, "@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", - "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", "dev": true, "optional": true }, "@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", - "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", "dev": true, "optional": true }, "@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", - "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", "dev": true, "optional": true }, "@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", - "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", "dev": true, "optional": true }, "@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", - "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", "dev": true, "optional": true }, "@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", - "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", "dev": true, "optional": true }, "@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", - "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", "dev": true, "optional": true, "requires": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" + "tslib": "^2.8.1" } }, "@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", - "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", "dev": true, "optional": true }, "@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", - "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", "dev": true, "optional": true }, "@tailwindcss/postcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz", - "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.2.tgz", + "integrity": "sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==", "dev": true, "requires": { "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.18", - "@tailwindcss/oxide": "4.1.18", - "postcss": "^8.4.41", - "tailwindcss": "4.1.18" + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "postcss": "^8.5.6", + "tailwindcss": "4.2.2" } }, "@tailwindcss/typography": { @@ -1709,9 +1683,9 @@ "dev": true }, "daisyui": { - "version": "5.5.18", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.5.18.tgz", - "integrity": "sha512-VVzjpOitMGB6DWIBeRSapbjdOevFqyzpk9u5Um6a4tyId3JFrU5pbtF0vgjXDth76mJZbueN/j9Ok03SPrh/og==", + "version": "5.5.19", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.5.19.tgz", + "integrity": "sha512-pbFAkl1VCEh/MPCeclKL61I/MqRIFFhNU7yiXoDDRapXN4/qNCoMxeCCswyxEEhqL5eiTTfwHvucFtOE71C9sA==", "dev": true }, "detect-libc": { @@ -1769,99 +1743,99 @@ "dev": true }, "lightningcss": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "dev": true, "requires": { "detect-libc": "^2.0.3", - "lightningcss-android-arm64": "1.30.2", - "lightningcss-darwin-arm64": "1.30.2", - "lightningcss-darwin-x64": "1.30.2", - "lightningcss-freebsd-x64": "1.30.2", - "lightningcss-linux-arm-gnueabihf": "1.30.2", - "lightningcss-linux-arm64-gnu": "1.30.2", - "lightningcss-linux-arm64-musl": "1.30.2", - "lightningcss-linux-x64-gnu": "1.30.2", - "lightningcss-linux-x64-musl": "1.30.2", - "lightningcss-win32-arm64-msvc": "1.30.2", - "lightningcss-win32-x64-msvc": "1.30.2" + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" } }, "lightningcss-android-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "dev": true, "optional": true }, "lightningcss-darwin-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "dev": true, "optional": true }, "lightningcss-darwin-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "dev": true, "optional": true }, "lightningcss-freebsd-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "dev": true, "optional": true }, "lightningcss-linux-arm-gnueabihf": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "dev": true, "optional": true }, "lightningcss-linux-arm64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "dev": true, "optional": true }, "lightningcss-linux-arm64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "dev": true, "optional": true }, "lightningcss-linux-x64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "dev": true, "optional": true }, "lightningcss-linux-x64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "dev": true, "optional": true }, "lightningcss-win32-arm64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "dev": true, "optional": true }, "lightningcss-win32-x64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "dev": true, "optional": true }, @@ -1880,12 +1854,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "mini-svg-data-uri": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.3.tgz", - "integrity": "sha512-gSfqpMRC8IxghvMcxzzmMnWpXAChSA+vy4cia33RgerMS8Fex95akUyQZPbxJJmeBGiGmK7n/1OpUX8ksRjIdA==", - "dev": true - }, "minimatch": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", @@ -1985,9 +1953,9 @@ "dev": true }, "tailwindcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", "dev": true }, "tapable": { diff --git a/package.json b/package.json index 356ae2a..8eeaa84 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,12 @@ "build:tailwind": "NODE_ENV=production npx @tailwindcss/cli --postcss -i ./wagtail_code_blog/static/wagtail_code_blog/input.css -o ./wagtail_code_blog/static/wagtail_code_blog/output.css --minify", "dev": "NODE_ENV=development npx @tailwindcss/cli --postcss -i ./wagtail_code_blog/static/wagtail_code_blog/input.css -o ./wagtail_code_blog/static/wagtail_code_blog/output.css -w" }, - "keywords": ["wagtail", "django", "blog", "cms"], + "keywords": [ + "wagtail", + "django", + "blog", + "cms" + ], "author": "Dani Hodovic ", "license": "MIT", "repository": { @@ -21,13 +26,11 @@ }, "homepage": "https://github.com/honeylogic-io/wagtail-code-blog#readme", "devDependencies": { - "@tailwindcss/aspect-ratio": "^0.4.2", - "@tailwindcss/cli": "^4.0.17", - "@tailwindcss/forms": "^0.5.10", - "@tailwindcss/typography": "^0.5.16", - "@tailwindcss/postcss": "^4.0.17", + "@tailwindcss/cli": "^4.2.2", + "@tailwindcss/postcss": "^4.2.2", + "@tailwindcss/typography": "^0.5.19", + "daisyui": "^5.5.19", "rimraf": "^6.0.1", - "tailwindcss": "^4.0.17", - "daisyui": "^5.0.9" + "tailwindcss": "^4.2.2" } } diff --git a/pyproject.toml b/pyproject.toml index c263998..5c2f571 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "wagtail-code-blog" -version = "0.6.2" +version = "0.7.0" description = "A wagtail code blog" readme = "README.md" requires-python = ">=3.12" @@ -27,12 +27,12 @@ classifiers = [ ] dependencies = [ "Django>=5.2", - "wagtail>=6.0", - "wagtail-metadata>=5.0", - "readtime>=3.0", - "beautifulsoup4>=4.0", - "django-json-ld>=0.0", - "django-model-utils>=5.0", + "wagtail>=6", + "wagtail-metadata>=5", + "wagtail-markdown>=0.10", + "readtime>=3", + "beautifulsoup4>=4", + "django-json-ld", ] [project.optional-dependencies] @@ -41,7 +41,6 @@ dev = [ "tox>=4.25.0", "coverage>=7.8.0", "django-stubs>=5.1.3", - "django-model-utils>=5.0.0", "mypy>=1.15.0", "pylint>=3.3.6", "pylint-django>=2.6.1", @@ -53,7 +52,6 @@ dev = [ "pudb>=2024.1.3", "django-extensions>=3.2.3", "django-browser-reload>=1.12.1", - "wagtail-markdown>=0.10.0", "werkzeug>=3.0.1", ] diff --git a/uv.lock b/uv.lock index ecfe027..88170ee 100644 --- a/uv.lock +++ b/uv.lock @@ -2,6 +2,10 @@ version = 1 revision = 3 requires-python = ">=3.12" +[options] +exclude-newer = "2026-04-03T11:35:24.089702175Z" +exclude-newer-span = "P14D" + [[package]] name = "anyascii" version = "0.3.3" @@ -355,18 +359,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1f/70/bed88dd20263249c9dd7246bd481e38fbc83e1aea02487d244cdb4081f3d/django_json_ld-0.0.5-py3-none-any.whl", hash = "sha256:4f0d82b002299e457c5329726c0704775bb7433a46dd1ced305bc5de57d962a1", size = 7594, upload-time = "2022-02-01T15:08:05.987Z" }, ] -[[package]] -name = "django-model-utils" -version = "5.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/81/60/5e232c32a2c977cc1af8c70a38ef436598bc649ad89c2c4568454edde2c9/django_model_utils-5.0.0.tar.gz", hash = "sha256:041cdd6230d2fbf6cd943e1969318bce762272077f4ecd333ab2263924b4e5eb", size = 80559, upload-time = "2024-09-04T11:35:22.858Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/13/87a42048700c54bfce35900a34e2031245132775fb24363fc0e33664aa9c/django_model_utils-5.0.0-py3-none-any.whl", hash = "sha256:fec78e6c323d565a221f7c4edc703f4567d7bb1caeafe1acd16a80c5ff82056b", size = 42630, upload-time = "2024-09-04T11:36:23.166Z" }, -] - [[package]] name = "django-modelcluster" version = "6.4.1" @@ -1561,15 +1553,15 @@ wheels = [ [[package]] name = "wagtail-code-blog" -version = "0.6.2" +version = "0.7.0" source = { virtual = "." } dependencies = [ { name = "beautifulsoup4" }, { name = "django" }, { name = "django-json-ld" }, - { name = "django-model-utils" }, { name = "readtime" }, { name = "wagtail" }, + { name = "wagtail-markdown" }, { name = "wagtail-metadata" }, ] @@ -1578,7 +1570,6 @@ dev = [ { name = "coverage" }, { name = "django-browser-reload" }, { name = "django-extensions" }, - { name = "django-model-utils" }, { name = "django-stubs" }, { name = "djlint" }, { name = "mypy" }, @@ -1591,20 +1582,17 @@ dev = [ { name = "pytest-gitignore" }, { name = "ruff" }, { name = "tox" }, - { name = "wagtail-markdown" }, { name = "werkzeug" }, ] [package.metadata] requires-dist = [ - { name = "beautifulsoup4", specifier = ">=4.0" }, + { name = "beautifulsoup4", specifier = ">=4" }, { name = "coverage", marker = "extra == 'dev'", specifier = ">=7.8.0" }, { name = "django", specifier = ">=5.2" }, { name = "django-browser-reload", marker = "extra == 'dev'", specifier = ">=1.12.1" }, { name = "django-extensions", marker = "extra == 'dev'", specifier = ">=3.2.3" }, - { name = "django-json-ld", specifier = ">=0.0" }, - { name = "django-model-utils", specifier = ">=5.0" }, - { name = "django-model-utils", marker = "extra == 'dev'", specifier = ">=5.0.0" }, + { name = "django-json-ld" }, { name = "django-stubs", marker = "extra == 'dev'", specifier = ">=5.1.3" }, { name = "djlint", marker = "extra == 'dev'", specifier = ">=1.36.4" }, { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.15.0" }, @@ -1615,12 +1603,12 @@ requires-dist = [ { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=6.1.0" }, { name = "pytest-django", marker = "extra == 'dev'", specifier = ">=4.11.0" }, { name = "pytest-gitignore", marker = "extra == 'dev'", specifier = ">=1.3" }, - { name = "readtime", specifier = ">=3.0" }, + { name = "readtime", specifier = ">=3" }, { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" }, { name = "tox", marker = "extra == 'dev'", specifier = ">=4.25.0" }, - { name = "wagtail", specifier = ">=6.0" }, - { name = "wagtail-markdown", marker = "extra == 'dev'", specifier = ">=0.10.0" }, - { name = "wagtail-metadata", specifier = ">=5.0" }, + { name = "wagtail", specifier = ">=6" }, + { name = "wagtail-markdown", specifier = ">=0.10" }, + { name = "wagtail-metadata", specifier = ">=5" }, { name = "werkzeug", marker = "extra == 'dev'", specifier = ">=3.0.1" }, ] provides-extras = ["dev"] diff --git a/wagtail_code_blog/migrations/0006_alter_blogpage_intro.py b/wagtail_code_blog/migrations/0006_alter_blogpage_intro.py new file mode 100644 index 0000000..4698efb --- /dev/null +++ b/wagtail_code_blog/migrations/0006_alter_blogpage_intro.py @@ -0,0 +1,15 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("wagtail_code_blog", "0005_blogindexpage_search_image"), + ] + + operations = [ + migrations.AlterField( + model_name="blogpage", + name="intro", + field=models.TextField(blank=True, null=True), + ), + ] diff --git a/wagtail_code_blog/models.py b/wagtail_code_blog/models.py index ec77cb0..dd836fc 100644 --- a/wagtail_code_blog/models.py +++ b/wagtail_code_blog/models.py @@ -1,10 +1,12 @@ # pylint: disable=arguments-differ,too-few-public-methods -from typing import TYPE_CHECKING +# pyright: reportIncompatibleVariableOverride=false import readtime from bs4 import BeautifulSoup from django import forms from django.contrib.sites.models import Site +from django.core.exceptions import ObjectDoesNotExist +from django.core.paginator import Paginator from django.db import models from markdown import markdown from wagtail.admin.panels import FieldPanel, MultiFieldPanel @@ -13,14 +15,23 @@ from wagtail.search import index from wagtailmetadata.models import MetadataPageMixin -if TYPE_CHECKING: - from wagtail.users.models import UserProfile # noqa: F401 - default_author = "John Doe" +class BlogIndexFieldsMixin(models.Model): + heading = models.TextField(null=True, blank=True) + description = models.TextField(null=True, blank=True) + background_color = models.CharField(max_length=250, null=True, blank=True) + image = models.ForeignKey( + Image, null=True, blank=True, on_delete=models.SET_NULL, related_name="+" + ) + + class Meta: + abstract = True + + class AuthorNameMixin(models.Model): - owner = None # type: UserProfile + owner = None def author_name(self): if self.owner and self.owner.first_name and self.owner.last_name: @@ -29,47 +40,20 @@ def author_name(self): class Meta: abstract = True - auto_created = True -class BlogIndexPage(MetadataPageMixin, Page, AuthorNameMixin): # pylint: disable=too-many-ancestors - page_ptr = models.OneToOneField( - Page, parent_link=True, related_name="+", on_delete=models.CASCADE - ) +BLOG_INDEX_CONTENT_PANELS = [ + FieldPanel("heading"), + FieldPanel("description"), + FieldPanel("background_color"), + FieldPanel("image"), +] - heading = models.TextField(null=True, blank=True) - description = models.TextField(null=True, blank=True) - background_color = models.CharField(max_length=250, null=True, blank=True) - image = models.ForeignKey( - Image, null=True, blank=True, on_delete=models.SET_NULL, related_name="+" - ) - - subpage_types = ["wagtail_code_blog.BlogPage"] - - content_panels = Page.content_panels + [ - FieldPanel("heading"), - FieldPanel("description"), - FieldPanel("background_color"), - FieldPanel("image"), - ] - - def get_context(self, request): - ctx = super().get_context(request) - ctx["posts"] = ( - BlogPage.objects.child_of(self).live().order_by("-date") # type:ignore - ) - return ctx - - -class BlogPage(MetadataPageMixin, Page, AuthorNameMixin): # pylint: disable=too-many-ancestors - page_ptr = models.OneToOneField( - Page, parent_link=True, related_name="+", on_delete=models.CASCADE - ) - parent_page_types = ["wagtail_code_blog.BlogIndexPage"] +class BlogPageFieldsMixin(models.Model): image_url = models.URLField(null=True, blank=True) date = models.DateField() - intro = models.CharField(max_length=250, null=True, blank=True) + intro = models.TextField(null=True, blank=True) body = models.TextField(default="") canonical_url = models.URLField(null=True, blank=True) @@ -77,25 +61,75 @@ class BlogPage(MetadataPageMixin, Page, AuthorNameMixin): # pylint: disable=too def readtime(self): return readtime.of_markdown(self.body) - search_fields = Page.search_fields + [ - index.SearchField("intro"), - index.SearchField("body"), - ] + class Meta: + abstract = True + + +BLOG_PAGE_SEARCH_FIELDS = [ + index.SearchField("intro"), + index.SearchField("body"), +] + + +BLOG_PAGE_INFO_PANELS = [ + FieldPanel("image_url"), + FieldPanel("canonical_url"), + FieldPanel("date"), +] + - content_panels = Page.content_panels + [ - MultiFieldPanel( - [FieldPanel("image_url"), FieldPanel("canonical_url"), FieldPanel("date")], - heading="Blog information", - ), - FieldPanel("intro"), - FieldPanel("body", widget=forms.Textarea), - ] +BLOG_PAGE_CONTENT_PANELS = [ + MultiFieldPanel(BLOG_PAGE_INFO_PANELS, heading="Blog information"), + FieldPanel("intro"), + FieldPanel("body", widget=forms.Textarea), +] + + +class AbstractBlogIndexPage( + MetadataPageMixin, Page, AuthorNameMixin, BlogIndexFieldsMixin +): # pylint: disable=too-many-ancestors + paginate_by = 10 + + content_panels = Page.content_panels + BLOG_INDEX_CONTENT_PANELS + + class Meta: + abstract = True + + def get_posts_queryset(self): + raise NotImplementedError + + def add_paginated_posts_context(self, ctx, posts, request): + paginator = Paginator(posts, self.paginate_by) + page_number = request.GET.get("page") + page_obj = paginator.get_page(page_number) + + ctx["posts"] = page_obj.object_list + ctx["page_obj"] = page_obj + ctx["paginator"] = paginator + ctx["is_paginated"] = page_obj.has_other_pages() + return ctx def get_context(self, request): ctx = super().get_context(request) + posts = self.get_posts_queryset() + return self.add_paginated_posts_context(ctx, posts, request) + + +class AbstractBlogPage(MetadataPageMixin, Page, AuthorNameMixin, BlogPageFieldsMixin): # pylint: disable=too-many-ancestors + search_fields = Page.search_fields + BLOG_PAGE_SEARCH_FIELDS + + content_panels = Page.content_panels + BLOG_PAGE_CONTENT_PANELS + + class Meta: + abstract = True + + def add_blog_page_context(self, ctx, request): site = Site.objects.get_current() + owner = self.owner + parent = self.get_parent() + parent_page = parent.specific if parent else None try: - ctx["author_image"] = self.owner.wagtail_userprofile.avatar.url + ctx["author_image"] = owner.wagtail_userprofile.avatar.url # type: ignore[attr-defined] except AttributeError: pass except Exception as ex: # pylint: disable=broad-except @@ -130,16 +164,49 @@ def get_context(self, request): ) if self.body: - html = markdown(self.body) - text = "".join(BeautifulSoup(html, "html.parser").findAll(text=True)) + body = str(self.body) + html = markdown(body) + text = "".join(BeautifulSoup(html, "html.parser").find_all(string=True)) sd["articleBody"] = text - if self.search_image: - rendition = self.search_image.get_rendition( # pylint: disable=no-member - filter="original" - ) - sd["image"] = [request.build_absolute_uri(rendition.url)] + try: + search_image = self.search_image # type: ignore[attr-defined] + if search_image: + rendition = search_image.get_rendition( # type: ignore[attr-defined] # pylint: disable=no-member + filter="original" + ) + sd["image"] = [request.build_absolute_uri(rendition.url)] + except (AttributeError, ObjectDoesNotExist): + pass + ctx["blog_background_color"] = getattr(parent_page, "background_color", "") ctx["page_sd"] = sd - return ctx + + def get_context(self, request): + ctx = super().get_context(request) + return self.add_blog_page_context(ctx, request) + + +class BlogIndexPage(AbstractBlogIndexPage): # pylint: disable=too-many-ancestors + page_ptr = models.OneToOneField( + Page, parent_link=True, related_name="+", on_delete=models.CASCADE + ) + + subpage_types = ["wagtail_code_blog.BlogPage"] + + class Meta(Page.Meta): + pass + + def get_posts_queryset(self): + return BlogPage.objects.child_of(self).live().order_by("-date") # type:ignore + + +class BlogPage(AbstractBlogPage): # pylint: disable=too-many-ancestors + page_ptr = models.OneToOneField( + Page, parent_link=True, related_name="+", on_delete=models.CASCADE + ) + parent_page_types = ["wagtail_code_blog.BlogIndexPage"] + + class Meta(Page.Meta): + pass diff --git a/wagtail_code_blog/static/wagtail_code_blog/css/blog_index_page.css b/wagtail_code_blog/static/wagtail_code_blog/css/blog_index_page.css deleted file mode 100644 index f91c65c..0000000 --- a/wagtail_code_blog/static/wagtail_code_blog/css/blog_index_page.css +++ /dev/null @@ -1,55 +0,0 @@ -.intro small { - color: #a0a4a8; - font-size: 14px; - line-height: 22px; -} - -.intro-container { - margin-bottom: 4rem; - display: flex; - justify-content: center; - width: 100%; -} - -.intro { - margin: 2rem; - margin-bottom: 3rem; -} - -.intro-info { - margin-top: 1rem; - max-width: 400px; -} - -.post * { - font-family: "Nunito Sans", serif; -} - -.post-readtime { - float: right; - color: #52575c; -} - -/* Large devices (desktops, 992px and up) */ -@media (min-width: 700px) { - .img-link { - margin-bottom: 0rem; - margin-right: 1.5rem; - width: 250px; - } - - .intro { - display: flex; - align-items: center; - max-width: 1000px; - } - - .intro img { - max-width: 350px; - } - - .intro-info { - margin-top: 0; - margin-left: 4rem; - } -} diff --git a/wagtail_code_blog/static/wagtail_code_blog/css/markdown_code_blocks.css b/wagtail_code_blog/static/wagtail_code_blog/css/markdown_code_blocks.css deleted file mode 100644 index d1bb942..0000000 --- a/wagtail_code_blog/static/wagtail_code_blog/css/markdown_code_blocks.css +++ /dev/null @@ -1,27 +0,0 @@ -/* Multiline inner code block ```code``` */ -.codehilite pre { - color: white; - font-size: 1.1rem; - font-weight: 530; - padding: 1.1em 0.6em; -} - -code { - font-family: "B612 Mono", monospace; - padding: 0.1em 0.1em; - border: 1px solid #CCCCCC; - border-radius: 3px; -} - -/* Override the above */ -.codehilite code { - font-family: "Inconsolata", monospace; - padding: 0; - border: none; - border-radius: 0; -} - -.codehilite * { - font-family: "Inconsolata", monospace; -} - diff --git a/wagtail_code_blog/static/wagtail_code_blog/css/responsive_width.css b/wagtail_code_blog/static/wagtail_code_blog/css/responsive_width.css deleted file mode 100644 index d1a168c..0000000 --- a/wagtail_code_blog/static/wagtail_code_blog/css/responsive_width.css +++ /dev/null @@ -1,20 +0,0 @@ -/* Medium devices (tablets, 768px and up) */ -@media (min-width: 768px) { - .blog-page-content { - width: 80%; - } -} - -/* Large devices (desktops, 992px and up) */ -@media (min-width: 992px) { - .blog-page-content { - width: 70%; - } -} - -/* Extra large devices (large desktops, 1200px and up) */ -@media (min-width: 1200px) { - .blog-page-content { - width: 60%; - } -} diff --git a/wagtail_code_blog/static/wagtail_code_blog/input.css b/wagtail_code_blog/static/wagtail_code_blog/input.css index 7777ca3..fc9de4e 100644 --- a/wagtail_code_blog/static/wagtail_code_blog/input.css +++ b/wagtail_code_blog/static/wagtail_code_blog/input.css @@ -1,5 +1,18 @@ @import "tailwindcss" source("../../templates/**/*.html"); @plugin "@tailwindcss/typography"; -@plugin "@tailwindcss/forms"; -@plugin "@tailwindcss/aspect-ratio"; -@plugin "daisyui"; +@plugin "daisyui" { + themes: light --default; + /* Avoid DaisyUI's unused radial-progress CSS, which triggers an @property warning in this build pipeline. */ + exclude: properties, radialprogress; +} + +@layer base { + body { + @apply antialiased; + font-family: "Plus Jakarta Sans", var(--font-sans); + } + + .text-balance { + text-wrap: balance; + } +} diff --git a/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page.html b/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page.html index 462410b..9c83220 100644 --- a/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page.html +++ b/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page.html @@ -1,13 +1,15 @@ {% load static %} - + + {% include "wagtail_code_blog/static_dependencies.html" %} + {% include "wagtail_code_blog/blog_index_page_head.html" %} - + {% include "wagtail_code_blog/blog_index_page_body.html" %} - \ No newline at end of file + diff --git a/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_body.html b/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_body.html index 30af8a3..f789538 100644 --- a/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_body.html +++ b/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_body.html @@ -1,43 +1,112 @@ -{% load wagtailcore_tags wagtailimages_tags %} -{% if page.heading and page.image %} -
-
- {% image page.image original %} -
-

{{ page.heading }}

- {{ page.description }} +{% load wagtailcore_tags wagtailimages_tags wagtailmarkdown %} +
+
+
+
+
+

+ {% if page.heading %} + {{ page.heading }} + {% else %} + {{ page.title }} + {% endif %} +

+ {% if page.description %} +

{{ page.description }}

+ {% endif %} +
+ + {% if page.image %} +
+ {% image page.image original class="aspect-[4/3] w-full rounded-box object-cover" %} +
+ {% endif %}
-
-
-{% endif %} -{% for post in posts %} -
- {% if post.image_url %} - - {{ post.title }} - - {% endif %} -
+ {{ post.title }} + + {% else %} + {% endif %} -
-

- {{ post.author_name }} -

-

- {{ post.date }} - {{ post.readtime }} -

+
+
+ +

{{ post.title }}

+
+ {% if post.intro %}
{{ post.intro|markdown|truncatewords_html:30 }}
{% endif %} +
+
+
+ {% if post.owner.wagtail_userprofile.avatar.url %} + {{ post.author_name }} avatar + {% endif %} +
+

+ {{ post.author_name }} +

+

+ {{ post.date }} + + {{ post.readtime }} +

+
+
+
+ Read here + {% if post.canonical_url %} + Original post + {% endif %} +
+
+
+ {% empty %} +
+

No posts published yet.

- -
- {% if not forloop.last %}
{% endif %} -{% endfor %} + {% endfor %} + + {% if is_paginated %} +
+ +
+ {% endif %} + +
diff --git a/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_head.html b/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_head.html index 50bbbf7..8b8fc4f 100644 --- a/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_head.html +++ b/wagtail_code_blog/templates/wagtail_code_blog/blog_index_page_head.html @@ -1,6 +1,6 @@ {% load static %} - - + + + diff --git a/wagtail_code_blog/templates/wagtail_code_blog/blog_page.html b/wagtail_code_blog/templates/wagtail_code_blog/blog_page.html index 31d0c4c..bbee91d 100644 --- a/wagtail_code_blog/templates/wagtail_code_blog/blog_page.html +++ b/wagtail_code_blog/templates/wagtail_code_blog/blog_page.html @@ -1,12 +1,11 @@ {% load static %} - + - + {% include "wagtail_code_blog/static_dependencies.html" %} {% include "wagtail_code_blog/blog_page_head.html" %} - -
{% include "wagtail_code_blog/blog_page_body.html" %}
+ + {% include "wagtail_code_blog/blog_page_body.html" %} diff --git a/wagtail_code_blog/templates/wagtail_code_blog/blog_page_body.html b/wagtail_code_blog/templates/wagtail_code_blog/blog_page_body.html index c2ddbf4..0e24461 100644 --- a/wagtail_code_blog/templates/wagtail_code_blog/blog_page_body.html +++ b/wagtail_code_blog/templates/wagtail_code_blog/blog_page_body.html @@ -1,27 +1,48 @@ {% load wagtailmarkdown %} -
-
- {% if page.image_url %}Image{% endif %} -

{{ page.title }}

-
-
-
- {{ page.author_name }} - {{ page.date }} - {{ page.readtime }} +
+
+
+
+

{{ page.title }}

+
+ + {% if page.image_url %} +
+ {{ page.title }}
- {% if author_image %} -
- Responsive image + {% endif %} + +
+
+
+ {% if author_image %} + {{ page.author_name }} avatar + {% endif %} +
+

+ {{ page.author_name }} +

+

+ {{ page.date }} + + {{ page.readtime }} +

+
- {% endif %} + {% if page.canonical_url %} + Original post + {% endif %} +
-
-
-
-
{{ page.body|markdown }}
-
-
+ + +
{{ page.body|markdown }}
+
diff --git a/wagtail_code_blog/templates/wagtail_code_blog/blog_page_head.html b/wagtail_code_blog/templates/wagtail_code_blog/blog_page_head.html index 9c22c84..3b1f507 100644 --- a/wagtail_code_blog/templates/wagtail_code_blog/blog_page_head.html +++ b/wagtail_code_blog/templates/wagtail_code_blog/blog_page_head.html @@ -1,14 +1,14 @@ {% load static %} {% load wagtailmetadata_tags %} {% load render_json_ld from json_ld %} - - + + + {% if page.canonical_url %}{% endif %} {% render_json_ld page_sd %} {% meta_tags %} + href="{% static 'wagtail_code_blog/css/pygments.css' %}" /> diff --git a/wagtail_code_blog/templates/wagtail_code_blog/static_dependencies.html b/wagtail_code_blog/templates/wagtail_code_blog/static_dependencies.html index b4ad725..e69de29 100644 --- a/wagtail_code_blog/templates/wagtail_code_blog/static_dependencies.html +++ b/wagtail_code_blog/templates/wagtail_code_blog/static_dependencies.html @@ -1,5 +0,0 @@ - - - - -