diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml index 1f32041..fee3198 100644 --- a/.forgejo/workflows/deploy.yaml +++ b/.forgejo/workflows/deploy.yaml @@ -23,13 +23,6 @@ jobs: include: *site_matrix steps: - - name: Debug Matrix - run: | - echo "Full Matrix Site: '${{ matrix.site }}'" - echo "Full Matrix Config: '${{ matrix.config_file }}'" - echo "Dump Matrix Context: " - echo '${{ toJSON(matrix) }}' - - name: Checkout git repository uses: actions/checkout@v4 with: diff --git a/.gitignore b/.gitignore index 082c110..c137725 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,11 @@ # trash folder old/ +# custom blueprints +src/data/ +# (keep default template) +!src/data/content.json + # build output dist/ diff --git a/README.md b/README.md index 2882302..468f5ee 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,75 @@ Contains the source code of the Home OP website. Now uses Astro instead of the old static website ! +## How to use it + +If you want to use this project for yourself, you'll first want to edit the configuration file located at `src/data/content.json`. +The file should look like this, don't hesitate to take the provided template file to make yours. +```json +{ + "website_title": "Website Title", + "website_logo": "https://...", + "website_status_link": "https://...", + "colors": { + ... // Optional + }, + "cards": [ + { + "title": "Card One", + "icon": "https://...", + "description": "First description", + "link": "https://..." + }, + { + "title": "Card Two", + "icon": "https://...", + "description": "Second description", + "link": "https://..." + } + ] +} +``` + +> [!NOTE] +> You can also use a relative path for your icons like that +> ```json +> "icon": "../assets/some-icon.svg", +>``` + +### Optimized image loading +I would recommend to use only SVGs in your image links if possible. If it's not possible and that you want to optimize the loading time, you should use the lazy image loading. +> [!WARNING] +> This feature is not implemented yet and you'll have to go manually inside the `src/components/` folder to make modifications. +In order to use the lazy image loading you'll need to allow your source domain inside `astro.config.mjs` like following +```js +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + image: { + // Add your domain + domains: ['resources.example.com'], + }, +}); +``` +Then for each component that uses a raster image (PNG, JPG...) use the following syntax +```astro +--- +import { Image } from 'astro:assets'; +const { title, icon, ... } = Astro.props; +--- + +{title} +``` +Note that in this case, it would be a good idea to store your images in the assets folder an to access them using their relative path to let astro generate what it needs to fully take advantage of this feature. + ## Structure ### Project @@ -22,7 +91,7 @@ Now uses Astro instead of the old static website ! - `layouts/` - `pages/` - `scripts/` -- `data/` - Contains the configs to generate the website, each as a JSON file (contains cards, site name, etc.) +- `data/` - Contains the configs to generate the website, each as a JSON file (contains cards, site name, colors, etc.) - `styles` - default CSS style sheets and custom themes ## Build diff --git a/package.json b/package.json index 87b92c7..17c17f9 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^6.0.4" + "astro": "^6.1.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 90489b9..d556231 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,23 +9,23 @@ importers: .: dependencies: astro: - specifier: ^6.0.4 - version: 6.0.4(rollup@4.59.0) + specifier: ^6.1.2 + version: 6.1.2(rollup@4.60.1) packages: - '@astrojs/compiler@3.0.0': - resolution: {integrity: sha512-MwAbDE5mawZ1SS+D8qWiHdprdME5Tlj2e0YjxnEICvcOpbSukNS7Sa7hA5PK+6RrmUr/t6Gi5YgrdZKjbO/WPQ==} + '@astrojs/compiler@3.0.1': + resolution: {integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==} '@astrojs/internal-helpers@0.8.0': resolution: {integrity: sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w==} - '@astrojs/markdown-remark@7.0.0': - resolution: {integrity: sha512-jTAXHPy45L7o1ljH4jYV+ShtOHtyQUa1mGp3a5fJp1soX8lInuTJQ6ihmldHzVM4Q7QptU4SzIDIcKbBJO7sXQ==} + '@astrojs/markdown-remark@7.1.0': + resolution: {integrity: sha512-P+HnCsu2js3BoTc8kFmu+E9gOcFeMdPris75g+Zl4sY8+bBRbSQV6xzcBDbZ27eE7yBGEGQoqjpChx+KJYIPYQ==} - '@astrojs/prism@4.0.0': - resolution: {integrity: sha512-NndtNPpxaGinRpRytljGBvYHpTOwHycSZ/c+lQi5cHvkqqrHKWdkPEhImlODBNmbuB+vyQUNUDXyjzt66CihJg==} - engines: {node: ^20.19.1 || >=22.12.0} + '@astrojs/prism@4.0.1': + resolution: {integrity: sha512-nksZQVjlferuWzhPsBpQ1JE5XuKAf1id1/9Hj4a9KG4+ofrlzxUUwX4YGQF/SuDiuiGKEnzopGOt38F3AnVWsQ==} + engines: {node: '>=22.12.0'} '@astrojs/telemetry@3.3.0': resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} @@ -39,8 +39,8 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -58,8 +58,8 @@ packages: '@clack/prompts@1.1.0': resolution: {integrity: sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==} - '@emnapi/runtime@1.9.0': - resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} '@esbuild/aix-ppc64@0.27.4': resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} @@ -369,128 +369,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + '@rollup/rollup-android-arm-eabi@4.60.1': + resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + '@rollup/rollup-android-arm64@4.60.1': + resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + '@rollup/rollup-darwin-arm64@4.60.1': + resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + '@rollup/rollup-darwin-x64@4.60.1': + resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + '@rollup/rollup-freebsd-arm64@4.60.1': + resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + '@rollup/rollup-freebsd-x64@4.60.1': + resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + '@rollup/rollup-linux-arm64-gnu@4.60.1': + resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + '@rollup/rollup-linux-arm64-musl@4.60.1': + resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + '@rollup/rollup-linux-loong64-gnu@4.60.1': + resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + '@rollup/rollup-linux-loong64-musl@4.60.1': + resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + '@rollup/rollup-linux-ppc64-musl@4.60.1': + resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + '@rollup/rollup-linux-riscv64-musl@4.60.1': + resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + '@rollup/rollup-linux-s390x-gnu@4.60.1': + resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + '@rollup/rollup-linux-x64-gnu@4.60.1': + resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + '@rollup/rollup-linux-x64-musl@4.60.1': + resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + '@rollup/rollup-openbsd-x64@4.60.1': + resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + '@rollup/rollup-openharmony-arm64@4.60.1': + resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + '@rollup/rollup-win32-arm64-msvc@4.60.1': + resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + '@rollup/rollup-win32-ia32-msvc@4.60.1': + resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + '@rollup/rollup-win32-x64-gnu@4.60.1': + resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + '@rollup/rollup-win32-x64-msvc@4.60.1': + resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} cpu: [x64] os: [win32] @@ -525,8 +525,8 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -563,9 +563,9 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - astro@6.0.4: - resolution: {integrity: sha512-1piLJCPTL/x7AMO2cjVFSTFyRqKuC3W8sSEySCt1aJio+p/wGs5H3K+Xr/rE9ftKtknLUtjxCqCE7/0NsXfGpQ==} - engines: {node: ^20.19.1 || >=22.12.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + astro@6.1.2: + resolution: {integrity: sha512-r3iIvmB6JvQxsdJLvapybKKq7Bojd1iQK6CCx5P55eRnXJIyUpHx/1UB/GdMm+em/lwaCUasxHCmIO0lCLV2uA==} + engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true axobject-query@4.1.0: @@ -674,8 +674,8 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@8.0.3: - resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} dlv@1.1.3: @@ -755,8 +755,8 @@ packages: github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - h3@1.15.6: - resolution: {integrity: sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==} + h3@1.15.10: + resolution: {integrity: sha512-YzJeWSkDZxAhvmp8dexjRK5hxziRO7I9m0N53WhvYL5NiWfkUkzssVzY9jvGu0HBoLFW6+duYmNSn6MaZBCCtg==} hast-util-from-html@2.0.3: resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} @@ -1011,8 +1011,8 @@ packages: oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@4.3.4: - resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + oniguruma-to-es@4.3.5: + resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} p-limit@7.3.0: resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} @@ -1041,12 +1041,12 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} postcss@8.5.8: @@ -1116,13 +1116,13 @@ packages: retext@9.0.0: resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + rollup@4.60.1: + resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - sax@1.5.0: - resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} semver@7.7.4: @@ -1141,8 +1141,8 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - smol-toml@1.6.0: - resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -1236,8 +1236,8 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - unstorage@1.17.4: - resolution: {integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==} + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -1381,16 +1381,16 @@ packages: snapshots: - '@astrojs/compiler@3.0.0': {} + '@astrojs/compiler@3.0.1': {} '@astrojs/internal-helpers@0.8.0': dependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 - '@astrojs/markdown-remark@7.0.0': + '@astrojs/markdown-remark@7.1.0': dependencies: '@astrojs/internal-helpers': 0.8.0 - '@astrojs/prism': 4.0.0 + '@astrojs/prism': 4.0.1 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 @@ -1402,8 +1402,9 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 + retext-smartypants: 6.2.0 shiki: 4.0.2 - smol-toml: 1.6.0 + smol-toml: 1.6.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.1.0 @@ -1412,7 +1413,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/prism@4.0.0': + '@astrojs/prism@4.0.1': dependencies: prismjs: 1.30.0 @@ -1432,7 +1433,7 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.29.0': + '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -1454,7 +1455,7 @@ snapshots: '@clack/core': 1.1.0 sisteransi: 1.0.5 - '@emnapi/runtime@1.9.0': + '@emnapi/runtime@1.9.1': dependencies: tslib: 2.8.1 optional: true @@ -1622,7 +1623,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.9.0 + '@emnapi/runtime': 1.9.1 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -1638,87 +1639,87 @@ snapshots: '@oslojs/encoding@1.1.0': {} - '@rollup/pluginutils@5.3.0(rollup@4.59.0)': + '@rollup/pluginutils@5.3.0(rollup@4.60.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.1 - '@rollup/rollup-android-arm-eabi@4.59.0': + '@rollup/rollup-android-arm-eabi@4.60.1': optional: true - '@rollup/rollup-android-arm64@4.59.0': + '@rollup/rollup-android-arm64@4.60.1': optional: true - '@rollup/rollup-darwin-arm64@4.59.0': + '@rollup/rollup-darwin-arm64@4.60.1': optional: true - '@rollup/rollup-darwin-x64@4.59.0': + '@rollup/rollup-darwin-x64@4.60.1': optional: true - '@rollup/rollup-freebsd-arm64@4.59.0': + '@rollup/rollup-freebsd-arm64@4.60.1': optional: true - '@rollup/rollup-freebsd-x64@4.59.0': + '@rollup/rollup-freebsd-x64@4.60.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': + '@rollup/rollup-linux-arm64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': + '@rollup/rollup-linux-arm64-musl@4.60.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': + '@rollup/rollup-linux-loong64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': + '@rollup/rollup-linux-loong64-musl@4.60.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': + '@rollup/rollup-linux-ppc64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': + '@rollup/rollup-linux-ppc64-musl@4.60.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': + '@rollup/rollup-linux-riscv64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': + '@rollup/rollup-linux-riscv64-musl@4.60.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': + '@rollup/rollup-linux-s390x-gnu@4.60.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': + '@rollup/rollup-linux-x64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': + '@rollup/rollup-linux-x64-musl@4.60.1': optional: true - '@rollup/rollup-openbsd-x64@4.59.0': + '@rollup/rollup-openbsd-x64@4.60.1': optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': + '@rollup/rollup-openharmony-arm64@4.60.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': + '@rollup/rollup-win32-arm64-msvc@4.60.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': + '@rollup/rollup-win32-ia32-msvc@4.60.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.59.0': + '@rollup/rollup-win32-x64-gnu@4.60.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.59.0': + '@rollup/rollup-win32-x64-msvc@4.60.1': optional: true '@shikijs/core@4.0.2': @@ -1733,7 +1734,7 @@ snapshots: dependencies: '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.4 + oniguruma-to-es: 4.3.5 '@shikijs/engine-oniguruma@4.0.2': dependencies: @@ -1761,7 +1762,7 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@types/debug@4.1.12': + '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 @@ -1788,7 +1789,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 argparse@2.0.1: {} @@ -1796,16 +1797,16 @@ snapshots: array-iterate@2.0.1: {} - astro@6.0.4(rollup@4.59.0): + astro@6.1.2(rollup@4.60.1): dependencies: - '@astrojs/compiler': 3.0.0 + '@astrojs/compiler': 3.0.1 '@astrojs/internal-helpers': 0.8.0 - '@astrojs/markdown-remark': 7.0.0 + '@astrojs/markdown-remark': 7.1.0 '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 4.0.0 '@clack/prompts': 1.1.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) aria-query: 5.3.2 axobject-query: 4.1.0 ci-info: 4.4.0 @@ -1813,7 +1814,7 @@ snapshots: common-ancestor-path: 2.0.0 cookie: 1.1.1 devalue: 5.6.4 - diff: 8.0.3 + diff: 8.0.4 dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 2.0.0 @@ -1833,11 +1834,11 @@ snapshots: p-queue: 9.1.0 package-manager-detector: 1.6.0 piccolore: 0.1.3 - picomatch: 4.0.3 + picomatch: 4.0.4 rehype: 13.0.2 semver: 7.7.4 shiki: 4.0.2 - smol-toml: 1.6.0 + smol-toml: 1.6.1 svgo: 4.0.1 tinyclip: 0.1.12 tinyexec: 1.0.4 @@ -1846,7 +1847,7 @@ snapshots: ultrahtml: 1.6.0 unifont: 0.7.4 unist-util-visit: 5.1.0 - unstorage: 1.17.4 + unstorage: 1.17.5 vfile: 6.0.3 vite: 7.3.1 vitefu: 1.1.2(vite@7.3.1) @@ -1973,7 +1974,7 @@ snapshots: dependencies: dequal: 2.0.3 - diff@8.0.3: {} + diff@8.0.4: {} dlv@1.1.3: {} @@ -2040,9 +2041,9 @@ snapshots: extend@3.0.2: {} - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 flattie@1.1.1: {} @@ -2059,7 +2060,7 @@ snapshots: github-slugger@2.0.0: {} - h3@1.15.6: + h3@1.15.10: dependencies: cookie-es: 1.2.2 crossws: 0.3.5 @@ -2192,7 +2193,7 @@ snapshots: magicast@0.5.2: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 source-map-js: 1.2.1 @@ -2493,7 +2494,7 @@ snapshots: micromark@4.0.2: dependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 debug: 4.4.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 @@ -2547,7 +2548,7 @@ snapshots: oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.4: + oniguruma-to-es@4.3.5: dependencies: oniguruma-parser: 0.12.1 regex: 6.1.0 @@ -2583,9 +2584,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} postcss@8.5.8: dependencies: @@ -2702,38 +2703,38 @@ snapshots: retext-stringify: 4.0.0 unified: 11.0.5 - rollup@4.59.0: + rollup@4.60.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.59.0 - '@rollup/rollup-android-arm64': 4.59.0 - '@rollup/rollup-darwin-arm64': 4.59.0 - '@rollup/rollup-darwin-x64': 4.59.0 - '@rollup/rollup-freebsd-arm64': 4.59.0 - '@rollup/rollup-freebsd-x64': 4.59.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 - '@rollup/rollup-linux-arm-musleabihf': 4.59.0 - '@rollup/rollup-linux-arm64-gnu': 4.59.0 - '@rollup/rollup-linux-arm64-musl': 4.59.0 - '@rollup/rollup-linux-loong64-gnu': 4.59.0 - '@rollup/rollup-linux-loong64-musl': 4.59.0 - '@rollup/rollup-linux-ppc64-gnu': 4.59.0 - '@rollup/rollup-linux-ppc64-musl': 4.59.0 - '@rollup/rollup-linux-riscv64-gnu': 4.59.0 - '@rollup/rollup-linux-riscv64-musl': 4.59.0 - '@rollup/rollup-linux-s390x-gnu': 4.59.0 - '@rollup/rollup-linux-x64-gnu': 4.59.0 - '@rollup/rollup-linux-x64-musl': 4.59.0 - '@rollup/rollup-openbsd-x64': 4.59.0 - '@rollup/rollup-openharmony-arm64': 4.59.0 - '@rollup/rollup-win32-arm64-msvc': 4.59.0 - '@rollup/rollup-win32-ia32-msvc': 4.59.0 - '@rollup/rollup-win32-x64-gnu': 4.59.0 - '@rollup/rollup-win32-x64-msvc': 4.59.0 + '@rollup/rollup-android-arm-eabi': 4.60.1 + '@rollup/rollup-android-arm64': 4.60.1 + '@rollup/rollup-darwin-arm64': 4.60.1 + '@rollup/rollup-darwin-x64': 4.60.1 + '@rollup/rollup-freebsd-arm64': 4.60.1 + '@rollup/rollup-freebsd-x64': 4.60.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 + '@rollup/rollup-linux-arm-musleabihf': 4.60.1 + '@rollup/rollup-linux-arm64-gnu': 4.60.1 + '@rollup/rollup-linux-arm64-musl': 4.60.1 + '@rollup/rollup-linux-loong64-gnu': 4.60.1 + '@rollup/rollup-linux-loong64-musl': 4.60.1 + '@rollup/rollup-linux-ppc64-gnu': 4.60.1 + '@rollup/rollup-linux-ppc64-musl': 4.60.1 + '@rollup/rollup-linux-riscv64-gnu': 4.60.1 + '@rollup/rollup-linux-riscv64-musl': 4.60.1 + '@rollup/rollup-linux-s390x-gnu': 4.60.1 + '@rollup/rollup-linux-x64-gnu': 4.60.1 + '@rollup/rollup-linux-x64-musl': 4.60.1 + '@rollup/rollup-openbsd-x64': 4.60.1 + '@rollup/rollup-openharmony-arm64': 4.60.1 + '@rollup/rollup-win32-arm64-msvc': 4.60.1 + '@rollup/rollup-win32-ia32-msvc': 4.60.1 + '@rollup/rollup-win32-x64-gnu': 4.60.1 + '@rollup/rollup-win32-x64-msvc': 4.60.1 fsevents: 2.3.3 - sax@1.5.0: {} + sax@1.6.0: {} semver@7.7.4: {} @@ -2782,7 +2783,7 @@ snapshots: sisteransi@1.0.5: {} - smol-toml@1.6.0: {} + smol-toml@1.6.1: {} source-map-js@1.2.1: {} @@ -2801,7 +2802,7 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.5.0 + sax: 1.6.0 tiny-inflate@1.0.3: {} @@ -2811,8 +2812,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 trim-lines@3.0.1: {} @@ -2887,12 +2888,12 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unstorage@1.17.4: + unstorage@1.17.5: dependencies: anymatch: 3.1.3 chokidar: 5.0.0 destr: 2.0.5 - h3: 1.15.6 + h3: 1.15.10 lru-cache: 11.2.7 node-fetch-native: 1.6.7 ofetch: 1.5.1 @@ -2916,10 +2917,10 @@ snapshots: vite@7.3.1: dependencies: esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 - rollup: 4.59.0 + rollup: 4.60.1 tinyglobby: 0.2.15 optionalDependencies: fsevents: 2.3.3 diff --git a/src/components/Card.astro b/src/components/Card.astro new file mode 100644 index 0000000..2d45c5e --- /dev/null +++ b/src/components/Card.astro @@ -0,0 +1,225 @@ +--- +const { link, icon, title, description } = Astro.props; +--- + + + +
{title}
+
{description}
+
+ + + + + + + + + diff --git a/src/components/Logo.astro b/src/components/Logo.astro new file mode 100644 index 0000000..1e84636 --- /dev/null +++ b/src/components/Logo.astro @@ -0,0 +1,81 @@ +--- +const { logo, link, text } = Astro.props; +--- + + + + +
+ {text} +
+ + + + + + + + + diff --git a/src/data/content.json b/src/data/content.json index 3614ad3..0080719 100644 --- a/src/data/content.json +++ b/src/data/content.json @@ -1,6 +1,23 @@ { "website_title": "Website Title", "website_logo": "https://...", + "page_name": "", + "website_status_link": "https://...", + "colors": { + "primary_accent": "#353be5", + "secondary_accent": "#353be5", + "background": "#000000", + "text": "#eaeaea", + "cards": { + "background": "#121212", + "text": "#eaeaea", + "gradient_left": "#353be5", + "gradient_right": "#43434388", + "hover_gradient_left": "#4000ff", + "hover_gradient_right": "#353be570", + "hover_shadow": "#4f35e5a0" + } + }, "cards": [ { "title": "Card One", diff --git a/src/pages/index.astro b/src/pages/index.astro index c636f73..a818721 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,66 +1,98 @@ --- -import "../styles/common.css"; -import "../styles/mobile.css"; -import "../styles/tablet.css"; +// === Imports + +import "../styles/global.css"; +import "./index.css"; + +import Card from "../components/Card.astro"; +import Logo from "../components/Logo.astro"; + import data from "../data/content.json"; -const { cards, website_title, website_logo } = data; + +// === Defaults + +const defaultColors = { + accent: "#353be5", + background: "#000000", + text: "#eaeaea", + cards: { + background: "#121212", + text: "#eaeaea", + gradient_left: "#353be5", + gradient_right: "#43434388", + hover_gradient_left: "#4000ff", + hover_gradient_right: "#353be570", + hover_shadow: "#4f35e5a0", + }, +}; + +// === Configs + +const { cards, website_title, website_logo, website_status_link, page_name } = + data; +const theme = { ...defaultColors, ...data.colors }; --- - - + {website_title} + + + -
- - - -
- { - cards.map((card) => ( - - -
{card.title}
-
{card.description}
-
- )) - } + {cards.map((info) => )}
+ + + diff --git a/src/pages/index.css b/src/pages/index.css new file mode 100644 index 0000000..6e956bb --- /dev/null +++ b/src/pages/index.css @@ -0,0 +1,337 @@ +/*-Computer-Screen-----------------------------------------------------*/ +/*-(Default)-----------------------------*/ + +html, +body { + height: 100%; + margin: 0; +} + +body { + user-select: none; + background: radial-gradient( + circle at 50% 200%, + var(--accent) 40%, + var(--accent) 45%, + #00000000 80% + ); + background-color: var(--background); + + background-size: cover; + background-attachment: fixed; + padding: 0; + + font-family: "Inter"; +} + +/*-Texts-----------------------------*/ + +h1 { + position: fixed; + top: 27%; + left: 50%; + transform: translate(-50%, -50%); /*Center (compensate size)*/ + + color: var(--text); + text-align: center; + font-family: "Inter"; + font-weight: 600; + font-size: 500%; + user-select: none; + letter-spacing: 0.1rem; +} + +h2 { + position: fixed; + top: 16%; + left: 50%; + transform: translate(-50%, -50%); /*Center (compensate size)*/ + + color: var(--text); + text-align: center; + font-family: "IBM Plex Mono"; + font-weight: 400; + font-size: 250%; + user-select: none; +} + +/*-Cards-----------------------------*/ + +.card-container { + position: absolute; + bottom: 10%; + z-index: 1; + + height: 40%; + + /*Calculate offset to center the second card (if possible) */ + /* screen_width - (card1_width + card2_margins)/2 */ /* Width includes margins */ + padding-left: calc(max(50vw - ((500px + 2rem) + (500px + 6rem) / 2), 4rem)); + padding-right: 4rem; + + display: flex; + flex-direction: row; + justify-content: flex-start; + gap: 4rem; + align-items: center; /* Vertical alignment */ + + overflow: visible; /* Prevent cards shadows to be cut off */ + + /* Hide scrollbar for Chrome and Safari */ + /*&::-webkit-scrollbar { + display: none; + }*/ + /* Hide scrollbar for IE, Edge and Firefox */ + /*-ms-overflow-style: none; + scrollbar-width: none;*/ +} + +/*-Tablet-Screen-----------------------------------------------------*/ + +@media (max-width: 1210px) AND (min-width: 800px) { + /*-Page-----------------------------*/ + + html, + body { + width: 100vw; + min-height: 100vh; + height: auto; + + margin: 0; + padding: 0; + + overflow-x: hidden; + overflow-y: auto; + } + + body { + font-family: "Inter"; + background-color: #000; + background-size: cover; + background-attachment: fixed; + } + + /*-Header-----------------------------*/ + + .site-header { + position: fixed; + top: 0; + left: 0; + z-index: 20; + + width: 100vw; + height: 5.5rem; + + background: #00000090; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + /*mask: linear-gradient(black, black, transparent);*/ + + box-sizing: border-box; + display: block; + } + + .header-row { + position: relative; + + width: 100vw; + height: 5.5rem; + + display: flex; + align-items: center; + justify-content: center; + } + + .site-title { + width: 100%; + z-index: 2; + + margin: 0; + + flex: 0 1 auto; + + font-size: 2.2em; + font-family: "Inter"; + font-weight: 600; + color: #eaeaea; + text-align: center; + letter-spacing: 0.1rem; + line-height: 1; + user-select: none; + } + + .welcome-title { + display: none; + } + + /*-Texts-----------------------------*/ + + h1, + h2 { + position: static; + transform: none; + z-index: 1; + + margin-top: 2.5rem; + margin-bottom: 0.5rem; + + font-size: 2.2em; + text-align: center; + } + + h2 { + font-size: 1.3em; + margin-top: 1.2rem; + } + + a { + text-decoration: none; + } + + /*-Cards-----------------------------*/ + + .card-container { + position: relative; + left: 0; + right: 0; + bottom: 0; + top: 22rem; + + min-height: 0; + height: calc(100vh - 5.5rem); + width: 80vw; + max-width: 1200px; /* Prevents from getting too wide */ + + margin: 0 auto; /* 'auto' centers it horizontally */ + padding-bottom: 10%; + + display: grid; + /* 2 equal columns ('1fr' means 1 fraction of available space) */ + grid-template-columns: repeat(2, 1fr); + overflow: visible; + gap: 3rem; + } +} + +/*-Phone-Screen-----------------------------------------------------*/ + +@media (max-width: 800px) { + /*-Page-----------------------------*/ + + html, + body { + width: 100vw; + min-height: 100vh; + margin: 0; + padding: 0; + overflow-x: hidden; + } + + body { + font-family: "Inter"; + background-color: #000; + } + + /*-Header-----------------------------*/ + + .site-header { + position: fixed; + top: 0; + left: 0; + z-index: 20; + + width: 100vw; + height: 5.5rem; + + background: transparent; + + box-sizing: border-box; + display: block; + } + + .header-row { + position: relative; + + width: 100vw; + height: 5.5rem; + + display: flex; + align-items: center; + justify-content: center; + } + + .site-title { + width: 100%; + z-index: 2; + + margin: 0; + + flex: 0 1 auto; + + font-size: 2.2em; + font-family: "Inter"; + font-weight: 600; + color: #eaeaea; + text-align: center; + letter-spacing: 0.1rem; + line-height: 1; + user-select: none; + } + + .welcome-title { + display: none; + } + + /*-Texts-----------------------------*/ + + h1, + h2 { + position: static; + transform: none; + z-index: 1; + + margin-top: 2.5rem; + margin-bottom: 0.5rem; + + font-size: 2.2em; + text-align: center; + } + + h2 { + font-size: 1.3em; + margin-top: 1.2rem; + } + + a { + text-decoration: none; + } + + /*-Cards-----------------------------*/ + + .card-container { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 5.5rem; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + + width: 100vw; + min-height: 0; + height: calc(100vh - 5.5rem); + + margin: 0; + padding: 10rem 1rem 1rem 1rem; + + gap: 1rem; + + overflow-x: hidden; + overflow-y: auto; + box-sizing: border-box; + background: transparent; + } +} diff --git a/src/styles/common.css b/src/styles/common.css deleted file mode 100644 index 2e760d7..0000000 --- a/src/styles/common.css +++ /dev/null @@ -1,193 +0,0 @@ -/*-Impports----------------------------------------------------------*/ - -@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"); - -/*-Fonts----------------------------------------------------------*/ - -/*-Page----------------------------------------------------------*/ - -html, -body { - height: 100%; - margin: 0; -} - -body { - user-select: none; - background: radial-gradient( - circle at 50% 200%, - #353be5 0%, - #353be5 45%, - #00000000 80% - ); - background-color: #000000; - - background-size: cover; - background-attachment: fixed; - padding: 0; - - font-family: "Inter"; -} - -/*-Texts----------------------------------------------------------*/ - -h1 { - position: fixed; - top: 27%; - left: 50%; - transform: translate(-50%, -50%); /*Center (compensate size)*/ - - color: #eaeaea; - text-align: center; - font-family: "Inter"; - font-weight: 600; - font-size: 500%; - user-select: none; - letter-spacing: 0.1rem; -} - -h2 { - position: fixed; - top: 16%; - left: 50%; - transform: translate(-50%, -50%); /*Center (compensate size)*/ - - color: white; - text-align: center; - font-family: "IBM Plex Mono"; - font-weight: 400; - font-size: 250%; - user-select: none; -} - -/*-Cards----------------------------------------------------------*/ - -.card-container { - position: absolute; - bottom: 10%; - z-index: 1; - - height: 40%; - - /*Calculate offset to center the second card (if possible) */ - /* screen_width - (card1_width + card2_margins)/2 */ /* Width includes margins */ - padding-left: calc(max(50vw - ((500px + 2rem) + (500px + 6rem) / 2), 4rem)); - padding-right: 4rem; - - display: flex; - flex-direction: row; - justify-content: flex-start; - gap: 4rem; - align-items: center; /* Vertical alignment */ - - overflow: visible; /* Prevent cards shadows to be cut off */ - - /* Hide scrollbar for Chrome and Safari */ - /*&::-webkit-scrollbar { - display: none; - }*/ - /* Hide scrollbar for IE, Edge and Firefox */ - /*-ms-overflow-style: none; - scrollbar-width: none;*/ -} - -.card { - position: relative; - top: 0px; - width: 500px; - height: 290px; - - margin-top: 4rem; - - background-color: #121212; - - border: 4px solid transparent; - border-radius: 1.4em; - background-clip: padding-box; - - transition: 300ms; -} - -/*Cards borders*/ -.card::after { - position: absolute; - top: -0.05em; - bottom: -0.05em; - left: -0.05em; - right: -0.05em; - - background: linear-gradient(135deg, #353be5 0%, #43434388 100%); - content: ""; - z-index: -1; - border-radius: 1.2em; - - filter: drop-shadow(#00000080 0 2em 40px); - - transition: 500ms; -} - -.card:hover { - top: -1%; -} - -.card:hover::after { - background: linear-gradient(135deg, #4000ff 0%, #353be570 100%); - filter: drop-shadow(#4f35e5a0 0 2em 40px); - - top: -0.1em; - bottom: -0.1em; - left: -0.1em; - right: -0.1em; -} - -.card-title { - position: absolute; - top: 12%; - left: 25%; - - font-family: "IBM Plex Mono"; - font-weight: 500; - font-size: 2em; - color: #eaeaea; -} - -.card-desc { - position: absolute; - top: 50%; - left: 25%; - - height: fit-content; - width: 65%; - - font-family: "IBM Plex Mono"; - font-size: 1.4em; - color: #eaeaea; -} - -.card > img { - position: absolute; - top: 10%; - left: 6%; - width: 4em; - height: 4em; -} - -/*-Logo----------------------------------------------------------*/ - -.logo { - position: fixed; - margin-top: 3vh; - margin-left: 3vh; - width: 3.7rem; - height: 3.7rem; - - transition-duration: 500ms; -} - -.logo:hover { - filter: drop-shadow(0 0 4px #7782ff); - -webkit-filter: drop-shadow(0 0 4px #7782ff); - - transition: cubic-bezier(0.075, 0.82, 0.165, 1); - transition-duration: 500ms; -} diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..b9a5752 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1,3 @@ +/*-Fonts----------------------------------------------------------*/ + +@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"); diff --git a/src/styles/mobile.css b/src/styles/mobile.css deleted file mode 100644 index 3e5b097..0000000 --- a/src/styles/mobile.css +++ /dev/null @@ -1,203 +0,0 @@ -/*-Phone-Screen-----------------------------------------------------*/ - -@media (max-width: 800px) { - /*-Page----------------------------------------------------------*/ - - html, - body { - width: 100vw; - min-height: 100vh; - margin: 0; - padding: 0; - overflow-x: hidden; - } - - body { - font-family: "Inter"; - background-color: #000; - } - - /*-Header--------------------------------------------------------*/ - - .site-header { - position: fixed; - top: 0; - left: 0; - z-index: 20; - - width: 100vw; - height: 5.5rem; - - background: transparent; - - box-sizing: border-box; - display: block; - } - - .header-row { - position: relative; - - width: 100vw; - height: 5.5rem; - - display: flex; - align-items: center; - justify-content: center; - } - - .logo { - display: none; - - position: absolute; - top: 1.3rem; - left: 1.3rem; - z-index: 2; - - width: 3rem; - height: 3rem; - - margin: 0; - padding: 0; - - /*display: block;*/ - pointer-events: auto; - } - - .site-title { - width: 100%; - z-index: 2; - - margin: 0; - - flex: 0 1 auto; - - font-size: 2.2em; - font-family: "Inter"; - font-weight: 600; - color: #eaeaea; - text-align: center; - letter-spacing: 0.1rem; - line-height: 1; - user-select: none; - } - - .welcome-title { - display: none; - } - - /*-Texts---------------------------------------------------------*/ - - h1, - h2 { - position: static; - transform: none; - z-index: 1; - - margin-top: 2.5rem; - margin-bottom: 0.5rem; - - font-size: 2.2em; - text-align: center; - } - - h2 { - font-size: 1.3em; - margin-top: 1.2rem; - } - - a { - text-decoration: none; - } - - /*-Cards---------------------------------------------------------*/ - - .card-container { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 5.5rem; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: flex-start; - - width: 100vw; - min-height: 0; - height: calc(100vh - 5.5rem); - - margin: 0; - padding: 10rem 1rem 1rem 1rem; - - gap: 1rem; - - overflow-x: hidden; - overflow-y: auto; - box-sizing: border-box; - background: transparent; - } - - .card { - position: relative; - width: 90vw; - max-width: 420px; - height: auto; - min-height: 14rem; - - margin: 1rem 0; - padding: 1.2rem 1rem; - - background-color: #121212; - box-sizing: border-box; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: flex-start; - } - - .card::after { - border-radius: 1.2em; - filter: drop-shadow(#00000080 0 1em 20px); - } - - .card > img { - position: static; - width: 3em; - height: 3em; - - margin-bottom: 0.8em; - margin-right: 0; - margin-top: 0.2em; - - flex-shrink: 0; - display: block; - } - - .card-title { - position: static; - - margin-bottom: 0.5em; - margin-top: 0.2em; - margin-left: 0; - - font-size: 1.7em; - font-weight: 600; - color: #eaeaea; - text-align: center; - text-decoration: none; - } - - .card-desc { - position: static; - width: 100%; - - margin-top: 1em; - margin-left: 0; - - font-size: 1em; - color: #eaeaea; - text-align: center; - } -} diff --git a/src/styles/tablet.css b/src/styles/tablet.css deleted file mode 100644 index 8db8ff0..0000000 --- a/src/styles/tablet.css +++ /dev/null @@ -1,192 +0,0 @@ -/*-Tablet-Screen-----------------------------------------------------*/ - -@media (max-width: 1210px) AND (min-width: 800px) { - /*-Page----------------------------------------------------------*/ - - html, - body { - width: 100vw; - min-height: 100vh; - height: auto; - - margin: 0; - padding: 0; - - overflow-x: hidden; - overflow-y: auto; - } - - body { - font-family: "Inter"; - background-color: #000; - background-size: cover; - background-attachment: fixed; - } - - /*-Header--------------------------------------------------------*/ - - .site-header { - position: fixed; - top: 0; - left: 0; - z-index: 20; - - width: 100vw; - height: 5.5rem; - - background: #00000090; - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); - /*mask: linear-gradient(black, black, transparent);*/ - - box-sizing: border-box; - display: block; - } - - .header-row { - position: relative; - - width: 100vw; - height: 5.5rem; - - display: flex; - align-items: center; - justify-content: center; - } - - .logo { - position: absolute; - top: 1.3rem; - left: 1.3rem; - z-index: 2; - - width: 3rem; - height: 3rem; - - margin: 0; - padding: 0; - - display: block; - pointer-events: auto; - } - - .site-title { - width: 100%; - z-index: 2; - - margin: 0; - - flex: 0 1 auto; - - font-size: 2.2em; - font-family: "Inter"; - font-weight: 600; - color: #eaeaea; - text-align: center; - letter-spacing: 0.1rem; - line-height: 1; - user-select: none; - } - - .welcome-title { - display: none; - } - - /*-Texts---------------------------------------------------------*/ - - h1, - h2 { - position: static; - transform: none; - z-index: 1; - - margin-top: 2.5rem; - margin-bottom: 0.5rem; - - font-size: 2.2em; - text-align: center; - } - - h2 { - font-size: 1.3em; - margin-top: 1.2rem; - } - - a { - text-decoration: none; - } - - /*-Cards---------------------------------------------------------*/ - - .card-container { - position: relative; - left: 0; - right: 0; - bottom: 0; - top: 22rem; - - min-height: 0; - height: calc(100vh - 5.5rem); - width: 80vw; - max-width: 1200px; /* Prevents from getting too wide */ - - margin: 0 auto; /* 'auto' centers it horizontally */ - padding-bottom: 10%; - - display: grid; - /* 2 equal columns ('1fr' means 1 fraction of available space) */ - grid-template-columns: repeat(2, 1fr); - overflow: visible; - gap: 3rem; - } - - .card { - position: relative; - width: 100%; - /*max-width: 300px;*/ - height: auto; - min-height: 14rem; - - margin: 0; - padding: 1.4rem; - - background-color: #121212; - box-sizing: border-box; - } - - .card::after { - border-radius: 1.2em; - filter: drop-shadow(#00000080 0 1em 20px); - } - - .card > img { - position: absolute; - top: 10%; - left: 6%; - width: 3em; - height: 3em; - } - - .card-title { - position: absolute; - top: 12%; - left: 23%; - - font-family: "IBM Plex Mono"; - font-weight: 500; - font-size: 1.6em; - color: #eaeaea; - } - - .card-desc { - position: static; - width: 100%; - - margin-top: 5em; - margin-left: 0; - - font-size: 1.2em; - color: #eaeaea; - text-align: center; - } -}