Cleanup & Thai translations

This commit is contained in:
2025-09-18 10:16:26 +07:00
parent cbeaba5419
commit 8fe54b9cd6
85 changed files with 1776 additions and 633 deletions
+4 -1
View File
@@ -1,4 +1,7 @@
{
"recommendations": ["astro-build.astro-vscode"],
"recommendations": [
"astro-build.astro-vscode",
"unifiedjs.vscode-mdx"
],
"unwantedRecommendations": []
}
+41 -1
View File
@@ -15,9 +15,49 @@ free to contribute better images if they can reflect real hardware better.
Anaconda WebUI compress icon (`./src/assets/icons/fa-compress-arrows-alt.svg`)
sourced from Patternfly Icons.
## Translations
If you wish to help translate the site, you'll need to know how to use Git,
and optionally to preview the site, you'll need a little knowledge about the
command line.
The project's structure isn't the best (I'll improve sooner or later). Most
content are located within the `./src/data` folder. Located there are 4 content
collections including "common" (Common pages which may be shared between Linux
distribution install guides), "distro" (The Linux distribution install guides),
"distroquiz" (The short Linux distribution quiz), and "strings" (Short strings).
Inside each collection, There will be a folder named after a language code
(following the IETF language tag standard) _or_ there will be a TOML file named
after the language code.
These pages may be of use to you:
- [List of language codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes)
- [List of country codes (ISO 3166-1 alpha-2)](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
- [TOML file introduction](https://toml.io/en/)
> [!NOTE]
> The "en" language code in this project refers to American English.
There are also pages in the `./src/pages` directory which is recommended that
you know at least the basic of HTML to translate. Pages which needs to be
manually translated that way includes the main page, the privacy policy, and
the start quiz page.
## Recommended Extensions
This section applies to both developers and any translators that's willing to
use Visual Studio Code to translate the project
- Astro ([VS Marketplace](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode), [OpenVSX](https://open-vsx.org/extension/astro-build/astro-vscode))
- MDX ([VS Marketplace](https://marketplace.visualstudio.com/items?itemName=unifiedjs.vscode-mdx), [OpenVSX](https://open-vsx.org/extension/unifiedjs/vscode-mdx))
The extensions are also listed in the VSCode workspace extensions recommendations.
## License
This project is licensed under MIT License.
Logos of other projects (such as Linux Distributions, located in `./public/logos`)
belong to their respective owner.
belongs to their respective owners.
+3 -3
View File
@@ -19,9 +19,9 @@
"solid-js": "^1.9.9",
"tailwindcss": "^4.1.13"
},
"packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67",
"packageManager": "pnpm@10.16.1+sha512.0e155aa2629db8672b49e8475da6226aa4bdea85fdcdfdc15350874946d4f3c91faaf64cbdc4a5d1ab8002f473d5c3fcedcd197989cf0390f9badd3c04678706",
"devDependencies": {
"@types/node": "^24.3.1",
"wrangler": "^4.37.0"
"@types/node": "^24.5.1",
"wrangler": "^4.37.1"
}
}
+213 -206
View File
@@ -10,16 +10,16 @@ importers:
dependencies:
'@astrojs/mdx':
specifier: ^4.3.5
version: 4.3.5(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))
version: 4.3.5(astro@5.13.7(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.2)(typescript@5.9.2))
'@astrojs/solid-js':
specifier: ^5.1.1
version: 5.1.1(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(solid-js@1.9.9)
version: 5.1.1(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)(solid-js@1.9.9)
'@tailwindcss/vite':
specifier: ^4.1.13
version: 4.1.13(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))
version: 4.1.13(vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1))
astro:
specifier: ^5.13.7
version: 5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)
version: 5.13.7(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.2)(typescript@5.9.2)
party-js:
specifier: ^2.2.0
version: 2.2.0
@@ -37,16 +37,16 @@ importers:
version: 4.1.13
devDependencies:
'@types/node':
specifier: ^24.3.1
version: 24.3.1
specifier: ^24.5.1
version: 24.5.1
wrangler:
specifier: ^4.37.0
version: 4.37.0
specifier: ^4.37.1
version: 4.37.1
packages:
'@astrojs/compiler@2.12.2':
resolution: {integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==}
'@astrojs/compiler@2.13.0':
resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==}
'@astrojs/internal-helpers@0.7.2':
resolution: {integrity: sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==}
@@ -175,32 +175,32 @@ packages:
workerd:
optional: true
'@cloudflare/workerd-darwin-64@1.20250906.0':
resolution: {integrity: sha512-E+X/YYH9BmX0ew2j/mAWFif2z05NMNuhCTlNYEGLkqMe99K15UewBqajL9pMcMUKxylnlrEoK3VNxl33DkbnPA==}
'@cloudflare/workerd-darwin-64@1.20250913.0':
resolution: {integrity: sha512-926bBGIYDsF0FraaPQV0hO9LymEN+Zdkkm1qOHxU1c58oAxr5b9Tpe4d1z1EqOD0DTFhjn7V/AxKcZBaBBhO/A==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
'@cloudflare/workerd-darwin-arm64@1.20250906.0':
resolution: {integrity: sha512-X5apsZ1SFW4FYTM19ISHf8005FJMPfrcf4U5rO0tdj+TeJgQgXuZ57IG0WeW7SpLVeBo8hM6WC8CovZh41AfnA==}
'@cloudflare/workerd-darwin-arm64@1.20250913.0':
resolution: {integrity: sha512-uy5nJIt44CpICgfsKQotji31cn39i71e2KqE/zeAmmgYp/tzl2cXotVeDtynqqEsloox7hl/eBY5sU0x99N8oQ==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
'@cloudflare/workerd-linux-64@1.20250906.0':
resolution: {integrity: sha512-rlKzWgsLnlQ5Nt9W69YBJKcmTmZbOGu0edUsenXPmc6wzULUxoQpi7ZE9k3TfTonJx4WoQsQlzCUamRYFsX+0Q==}
'@cloudflare/workerd-linux-64@1.20250913.0':
resolution: {integrity: sha512-khdF7MBi8L9WIt3YyWBQxipMny0J3gG824kurZiRACZmPdQ1AOzkKybDDXC3EMcF8TmGMRqKRUGQIB/25PwJuQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
'@cloudflare/workerd-linux-arm64@1.20250906.0':
resolution: {integrity: sha512-DdedhiQ+SeLzpg7BpcLrIPEZ33QKioJQ1wvL4X7nuLzEB9rWzS37NNNahQzc1+44rhG4fyiHbXBPOeox4B9XVA==}
'@cloudflare/workerd-linux-arm64@1.20250913.0':
resolution: {integrity: sha512-KF5nIOt5YIYGfinY0YEe63JqaAx8WSFDHTLQpytTX+N/oJWEJu3KW6evU1TfX7o8gRlRsc0j/evcZ1vMfbDy5g==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
'@cloudflare/workerd-windows-64@1.20250906.0':
resolution: {integrity: sha512-Q8Qjfs8jGVILnZL6vUpQ90q/8MTCYaGR3d1LGxZMBqte8Vr7xF3KFHPEy7tFs0j0mMjnqCYzlofmPNY+9ZaDRg==}
'@cloudflare/workerd-windows-64@1.20250913.0':
resolution: {integrity: sha512-m/PMnVdaUB7ymW8BvDIC5xrU16hBDCBpyf9/4y9YZSQOYTVXihxErX8kaW9H9A/I6PTX081NmxxhTbb/n+EQRg==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
@@ -792,108 +792,108 @@ packages:
rollup:
optional: true
'@rollup/rollup-android-arm-eabi@4.50.1':
resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==}
'@rollup/rollup-android-arm-eabi@4.50.2':
resolution: {integrity: sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.50.1':
resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==}
'@rollup/rollup-android-arm64@4.50.2':
resolution: {integrity: sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.50.1':
resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==}
'@rollup/rollup-darwin-arm64@4.50.2':
resolution: {integrity: sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.50.1':
resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==}
'@rollup/rollup-darwin-x64@4.50.2':
resolution: {integrity: sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.50.1':
resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==}
'@rollup/rollup-freebsd-arm64@4.50.2':
resolution: {integrity: sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.50.1':
resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==}
'@rollup/rollup-freebsd-x64@4.50.2':
resolution: {integrity: sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.50.1':
resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==}
'@rollup/rollup-linux-arm-gnueabihf@4.50.2':
resolution: {integrity: sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.50.1':
resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==}
'@rollup/rollup-linux-arm-musleabihf@4.50.2':
resolution: {integrity: sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.50.1':
resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==}
'@rollup/rollup-linux-arm64-gnu@4.50.2':
resolution: {integrity: sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.50.1':
resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==}
'@rollup/rollup-linux-arm64-musl@4.50.2':
resolution: {integrity: sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.50.1':
resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==}
'@rollup/rollup-linux-loong64-gnu@4.50.2':
resolution: {integrity: sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-ppc64-gnu@4.50.1':
resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==}
'@rollup/rollup-linux-ppc64-gnu@4.50.2':
resolution: {integrity: sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.50.1':
resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==}
'@rollup/rollup-linux-riscv64-gnu@4.50.2':
resolution: {integrity: sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-musl@4.50.1':
resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==}
'@rollup/rollup-linux-riscv64-musl@4.50.2':
resolution: {integrity: sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.50.1':
resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==}
'@rollup/rollup-linux-s390x-gnu@4.50.2':
resolution: {integrity: sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.50.1':
resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==}
'@rollup/rollup-linux-x64-gnu@4.50.2':
resolution: {integrity: sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.50.1':
resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==}
'@rollup/rollup-linux-x64-musl@4.50.2':
resolution: {integrity: sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==}
cpu: [x64]
os: [linux]
'@rollup/rollup-openharmony-arm64@4.50.1':
resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==}
'@rollup/rollup-openharmony-arm64@4.50.2':
resolution: {integrity: sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==}
cpu: [arm64]
os: [openharmony]
'@rollup/rollup-win32-arm64-msvc@4.50.1':
resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==}
'@rollup/rollup-win32-arm64-msvc@4.50.2':
resolution: {integrity: sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.50.1':
resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==}
'@rollup/rollup-win32-ia32-msvc@4.50.2':
resolution: {integrity: sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.50.1':
resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==}
'@rollup/rollup-win32-x64-msvc@4.50.2':
resolution: {integrity: sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==}
cpu: [x64]
os: [win32]
@@ -1057,8 +1057,8 @@ packages:
'@types/nlcst@2.0.3':
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
'@types/node@24.3.1':
resolution: {integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==}
'@types/node@24.5.1':
resolution: {integrity: sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q==}
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -1153,6 +1153,10 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
baseline-browser-mapping@2.8.4:
resolution: {integrity: sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==}
hasBin: true
blake3-wasm@2.1.5:
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
@@ -1166,8 +1170,8 @@ packages:
brotli@1.3.3:
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
browserslist@4.25.4:
resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==}
browserslist@4.26.2:
resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -1175,8 +1179,8 @@ packages:
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
engines: {node: '>=16'}
caniuse-lite@1.0.30001741:
resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==}
caniuse-lite@1.0.30001743:
resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -1272,8 +1276,8 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -1294,8 +1298,8 @@ packages:
destr@2.0.5:
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
detect-libc@2.0.4:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
detect-libc@2.1.0:
resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==}
engines: {node: '>=8'}
deterministic-object-hash@2.0.2:
@@ -1322,8 +1326,8 @@ packages:
resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==}
engines: {node: '>=4'}
electron-to-chromium@1.5.218:
resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==}
electron-to-chromium@1.5.219:
resolution: {integrity: sha512-JqaXfxHOS0WvKweEnrPHWRm8cnPVbdB7vXCQHPPFoAJFM3xig5/+/H08ZVkvJf4unvj8yncKy6MerOPj1NW1GQ==}
emoji-regex@10.5.0:
resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==}
@@ -1516,8 +1520,8 @@ packages:
is-alphanumerical@2.0.1:
resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
is-arrayish@0.3.4:
resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
is-decimal@2.0.1:
resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
@@ -1834,8 +1838,8 @@ packages:
engines: {node: '>=10.0.0'}
hasBin: true
miniflare@4.20250906.2:
resolution: {integrity: sha512-SXGv8Rdd91b6UXZ5eW3rde/gSJM6WVLItMNFV7u9axUVhACvpT4CB5p80OBfi2OOsGfOuFQ6M6s8tMxJbzioVw==}
miniflare@4.20250913.0:
resolution: {integrity: sha512-EwlUOxtvb9UKg797YZMCtNga/VSAnKG/kbJX9YGqXJoAJjDhDeAeqyCWjSl9O6EzCZNhtHuW7ZV0pD5Hec617g==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -1886,8 +1890,8 @@ packages:
node-mock-http@1.0.3:
resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==}
node-releases@2.0.20:
resolution: {integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==}
node-releases@2.0.21:
resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==}
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
@@ -2052,8 +2056,8 @@ packages:
retext@9.0.0:
resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==}
rollup@4.50.1:
resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==}
rollup@4.50.2:
resolution: {integrity: sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2087,8 +2091,8 @@ packages:
shiki@3.12.2:
resolution: {integrity: sha512-uIrKI+f9IPz1zDT+GMz+0RjzKJiijVr6WDWm9Pe3NNY6QigKCfifCEv9v9R2mDASKKjzjQ2QpFLcxaR3iHSnMA==}
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
simple-swizzle@0.2.4:
resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
@@ -2210,8 +2214,8 @@ packages:
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
undici-types@7.10.0:
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
undici-types@7.12.0:
resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==}
undici@7.14.0:
resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==}
@@ -2417,17 +2421,17 @@ packages:
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
engines: {node: '>=18'}
workerd@1.20250906.0:
resolution: {integrity: sha512-ryVyEaqXPPsr/AxccRmYZZmDAkfQVjhfRqrNTlEeN8aftBk6Ca1u7/VqmfOayjCXrA+O547TauebU+J3IpvFXw==}
workerd@1.20250913.0:
resolution: {integrity: sha512-y3J1NjCL10SAWDwgGdcNSRyOVod/dWNypu64CCdjj8VS4/k+Ofa/fHaJGC1stbdzAB1tY2P35Ckgm1PU5HKWiw==}
engines: {node: '>=16'}
hasBin: true
wrangler@4.37.0:
resolution: {integrity: sha512-W8IbQohQbUHFn4Hz2kh8gi0SdyFV/jyi9Uus+WrTz0F0Dc9W5qKPCjLbxibeE53+YPHyoI25l65O7nSlwX+Z6Q==}
wrangler@4.37.1:
resolution: {integrity: sha512-ntm1OsIB2r/f7b5bfS84Lzz5QEx3zn4vUsn1JOVz/+7bw8triyytnxbp68OwOimF1vL5A9sQ0Nd+L6u8F3hECg==}
engines: {node: '>=18.0.0'}
hasBin: true
peerDependencies:
'@cloudflare/workers-types': ^4.20250906.0
'@cloudflare/workers-types': ^4.20250913.0
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -2502,7 +2506,7 @@ packages:
snapshots:
'@astrojs/compiler@2.12.2': {}
'@astrojs/compiler@2.13.0': {}
'@astrojs/internal-helpers@0.7.2': {}
@@ -2532,12 +2536,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/mdx@4.3.5(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))':
'@astrojs/mdx@4.3.5(astro@5.13.7(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.2)(typescript@5.9.2))':
dependencies:
'@astrojs/markdown-remark': 6.3.6
'@mdx-js/mdx': 3.1.1
acorn: 8.15.0
astro: 5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)
astro: 5.13.7(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.2)(typescript@5.9.2)
es-module-lexer: 1.7.0
estree-util-visit: 2.0.0
hast-util-to-html: 9.0.5
@@ -2555,11 +2559,11 @@ snapshots:
dependencies:
prismjs: 1.30.0
'@astrojs/solid-js@5.1.1(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(solid-js@1.9.9)':
'@astrojs/solid-js@5.1.1(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)(solid-js@1.9.9)':
dependencies:
solid-js: 1.9.9
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
vite-plugin-solid: 2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))
vite: 6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)
vite-plugin-solid: 2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1))
transitivePeerDependencies:
- '@testing-library/jest-dom'
- '@types/node'
@@ -2578,7 +2582,7 @@ snapshots:
'@astrojs/telemetry@3.3.0':
dependencies:
ci-info: 4.3.0
debug: 4.4.1
debug: 4.4.3
dlv: 1.1.3
dset: 3.1.4
is-docker: 3.0.0
@@ -2608,7 +2612,7 @@ snapshots:
'@babel/types': 7.28.4
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
debug: 4.4.1
debug: 4.4.3
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -2627,7 +2631,7 @@ snapshots:
dependencies:
'@babel/compat-data': 7.28.4
'@babel/helper-validator-option': 7.27.1
browserslist: 4.25.4
browserslist: 4.26.2
lru-cache: 5.1.1
semver: 6.3.1
@@ -2689,7 +2693,7 @@ snapshots:
'@babel/parser': 7.28.4
'@babel/template': 7.27.2
'@babel/types': 7.28.4
debug: 4.4.1
debug: 4.4.3
transitivePeerDependencies:
- supports-color
@@ -2710,25 +2714,25 @@ snapshots:
dependencies:
mime: 3.0.0
'@cloudflare/unenv-preset@2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250906.0)':
'@cloudflare/unenv-preset@2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250913.0)':
dependencies:
unenv: 2.0.0-rc.21
optionalDependencies:
workerd: 1.20250906.0
workerd: 1.20250913.0
'@cloudflare/workerd-darwin-64@1.20250906.0':
'@cloudflare/workerd-darwin-64@1.20250913.0':
optional: true
'@cloudflare/workerd-darwin-arm64@1.20250906.0':
'@cloudflare/workerd-darwin-arm64@1.20250913.0':
optional: true
'@cloudflare/workerd-linux-64@1.20250906.0':
'@cloudflare/workerd-linux-64@1.20250913.0':
optional: true
'@cloudflare/workerd-linux-arm64@1.20250906.0':
'@cloudflare/workerd-linux-arm64@1.20250913.0':
optional: true
'@cloudflare/workerd-windows-64@1.20250906.0':
'@cloudflare/workerd-windows-64@1.20250913.0':
optional: true
'@cspotcode/source-map-support@0.8.1':
@@ -3126,75 +3130,75 @@ snapshots:
'@poppinss/exception@1.2.2': {}
'@rollup/pluginutils@5.3.0(rollup@4.50.1)':
'@rollup/pluginutils@5.3.0(rollup@4.50.2)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 4.0.3
optionalDependencies:
rollup: 4.50.1
rollup: 4.50.2
'@rollup/rollup-android-arm-eabi@4.50.1':
'@rollup/rollup-android-arm-eabi@4.50.2':
optional: true
'@rollup/rollup-android-arm64@4.50.1':
'@rollup/rollup-android-arm64@4.50.2':
optional: true
'@rollup/rollup-darwin-arm64@4.50.1':
'@rollup/rollup-darwin-arm64@4.50.2':
optional: true
'@rollup/rollup-darwin-x64@4.50.1':
'@rollup/rollup-darwin-x64@4.50.2':
optional: true
'@rollup/rollup-freebsd-arm64@4.50.1':
'@rollup/rollup-freebsd-arm64@4.50.2':
optional: true
'@rollup/rollup-freebsd-x64@4.50.1':
'@rollup/rollup-freebsd-x64@4.50.2':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.50.1':
'@rollup/rollup-linux-arm-gnueabihf@4.50.2':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.50.1':
'@rollup/rollup-linux-arm-musleabihf@4.50.2':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.50.1':
'@rollup/rollup-linux-arm64-gnu@4.50.2':
optional: true
'@rollup/rollup-linux-arm64-musl@4.50.1':
'@rollup/rollup-linux-arm64-musl@4.50.2':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.50.1':
'@rollup/rollup-linux-loong64-gnu@4.50.2':
optional: true
'@rollup/rollup-linux-ppc64-gnu@4.50.1':
'@rollup/rollup-linux-ppc64-gnu@4.50.2':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.50.1':
'@rollup/rollup-linux-riscv64-gnu@4.50.2':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.50.1':
'@rollup/rollup-linux-riscv64-musl@4.50.2':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.50.1':
'@rollup/rollup-linux-s390x-gnu@4.50.2':
optional: true
'@rollup/rollup-linux-x64-gnu@4.50.1':
'@rollup/rollup-linux-x64-gnu@4.50.2':
optional: true
'@rollup/rollup-linux-x64-musl@4.50.1':
'@rollup/rollup-linux-x64-musl@4.50.2':
optional: true
'@rollup/rollup-openharmony-arm64@4.50.1':
'@rollup/rollup-openharmony-arm64@4.50.2':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.50.1':
'@rollup/rollup-win32-arm64-msvc@4.50.2':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.50.1':
'@rollup/rollup-win32-ia32-msvc@4.50.2':
optional: true
'@rollup/rollup-win32-x64-msvc@4.50.1':
'@rollup/rollup-win32-x64-msvc@4.50.2':
optional: true
'@shikijs/core@3.12.2':
@@ -3286,7 +3290,7 @@ snapshots:
'@tailwindcss/oxide@4.1.13':
dependencies:
detect-libc: 2.0.4
detect-libc: 2.1.0
tar: 7.4.3
optionalDependencies:
'@tailwindcss/oxide-android-arm64': 4.1.13
@@ -3302,12 +3306,12 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.13
'@tailwindcss/oxide-win32-x64-msvc': 4.1.13
'@tailwindcss/vite@4.1.13(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))':
'@tailwindcss/vite@4.1.13(vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1))':
dependencies:
'@tailwindcss/node': 4.1.13
'@tailwindcss/oxide': 4.1.13
tailwindcss: 4.1.13
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
vite: 6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)
'@types/babel__core@7.20.5':
dependencies:
@@ -3342,7 +3346,7 @@ snapshots:
'@types/fontkit@2.0.8':
dependencies:
'@types/node': 24.3.1
'@types/node': 24.5.1
'@types/hast@3.0.4':
dependencies:
@@ -3360,9 +3364,9 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
'@types/node@24.3.1':
'@types/node@24.5.1':
dependencies:
undici-types: 7.10.0
undici-types: 7.12.0
'@types/unist@2.0.11': {}
@@ -3403,15 +3407,15 @@ snapshots:
astring@1.9.0: {}
astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2):
astro@5.13.7(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.2)(typescript@5.9.2):
dependencies:
'@astrojs/compiler': 2.12.2
'@astrojs/compiler': 2.13.0
'@astrojs/internal-helpers': 0.7.2
'@astrojs/markdown-remark': 6.3.6
'@astrojs/telemetry': 3.3.0
'@capsizecss/unpack': 2.4.0
'@oslojs/encoding': 1.1.0
'@rollup/pluginutils': 5.3.0(rollup@4.50.1)
'@rollup/pluginutils': 5.3.0(rollup@4.50.2)
acorn: 8.15.0
aria-query: 5.3.2
axobject-query: 4.1.0
@@ -3421,7 +3425,7 @@ snapshots:
common-ancestor-path: 1.0.1
cookie: 1.0.2
cssesc: 3.0.0
debug: 4.4.1
debug: 4.4.3
deterministic-object-hash: 2.0.2
devalue: 5.3.2
diff: 5.2.0
@@ -3459,8 +3463,8 @@ snapshots:
unist-util-visit: 5.0.0
unstorage: 1.17.1
vfile: 6.0.3
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
vitefu: 1.1.1(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))
vite: 6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)
vitefu: 1.1.1(vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.2.3
@@ -3530,6 +3534,8 @@ snapshots:
base64-js@1.5.1: {}
baseline-browser-mapping@2.8.4: {}
blake3-wasm@2.1.5: {}
blob-to-buffer@1.2.9: {}
@@ -3549,16 +3555,17 @@ snapshots:
dependencies:
base64-js: 1.5.1
browserslist@4.25.4:
browserslist@4.26.2:
dependencies:
caniuse-lite: 1.0.30001741
electron-to-chromium: 1.5.218
node-releases: 2.0.20
update-browserslist-db: 1.1.3(browserslist@4.25.4)
baseline-browser-mapping: 2.8.4
caniuse-lite: 1.0.30001743
electron-to-chromium: 1.5.219
node-releases: 2.0.21
update-browserslist-db: 1.1.3(browserslist@4.26.2)
camelcase@8.0.0: {}
caniuse-lite@1.0.30001741: {}
caniuse-lite@1.0.30001743: {}
ccount@2.0.1: {}
@@ -3597,7 +3604,7 @@ snapshots:
color-string@1.9.1:
dependencies:
color-name: 1.1.4
simple-swizzle: 0.2.2
simple-swizzle: 0.2.4
color@4.2.3:
dependencies:
@@ -3633,7 +3640,7 @@ snapshots:
csstype@3.1.3: {}
debug@4.4.1:
debug@4.4.3:
dependencies:
ms: 2.1.3
@@ -3647,7 +3654,7 @@ snapshots:
destr@2.0.5: {}
detect-libc@2.0.4: {}
detect-libc@2.1.0: {}
deterministic-object-hash@2.0.2:
dependencies:
@@ -3667,7 +3674,7 @@ snapshots:
dset@3.1.4: {}
electron-to-chromium@1.5.218: {}
electron-to-chromium@1.5.219: {}
emoji-regex@10.5.0: {}
@@ -4001,7 +4008,7 @@ snapshots:
is-alphabetical: 2.0.1
is-decimal: 2.0.1
is-arrayish@0.3.2: {}
is-arrayish@0.3.4: {}
is-decimal@2.0.1: {}
@@ -4071,7 +4078,7 @@ snapshots:
lightningcss@1.30.1:
dependencies:
detect-libc: 2.0.4
detect-libc: 2.1.0
optionalDependencies:
lightningcss-darwin-arm64: 1.30.1
lightningcss-darwin-x64: 1.30.1
@@ -4526,7 +4533,7 @@ snapshots:
micromark@4.0.2:
dependencies:
'@types/debug': 4.1.12
debug: 4.4.1
debug: 4.4.3
decode-named-character-reference: 1.2.0
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
@@ -4547,7 +4554,7 @@ snapshots:
mime@3.0.0: {}
miniflare@4.20250906.2:
miniflare@4.20250913.0:
dependencies:
'@cspotcode/source-map-support': 0.8.1
acorn: 8.14.0
@@ -4557,7 +4564,7 @@ snapshots:
sharp: 0.33.5
stoppable: 1.1.0
undici: 7.14.0
workerd: 1.20250906.0
workerd: 1.20250913.0
ws: 8.18.0
youch: 4.1.0-beta.10
zod: 3.22.3
@@ -4593,7 +4600,7 @@ snapshots:
node-mock-http@1.0.3: {}
node-releases@2.0.20: {}
node-releases@2.0.21: {}
normalize-path@3.0.0: {}
@@ -4833,31 +4840,31 @@ snapshots:
retext-stringify: 4.0.0
unified: 11.0.5
rollup@4.50.1:
rollup@4.50.2:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.50.1
'@rollup/rollup-android-arm64': 4.50.1
'@rollup/rollup-darwin-arm64': 4.50.1
'@rollup/rollup-darwin-x64': 4.50.1
'@rollup/rollup-freebsd-arm64': 4.50.1
'@rollup/rollup-freebsd-x64': 4.50.1
'@rollup/rollup-linux-arm-gnueabihf': 4.50.1
'@rollup/rollup-linux-arm-musleabihf': 4.50.1
'@rollup/rollup-linux-arm64-gnu': 4.50.1
'@rollup/rollup-linux-arm64-musl': 4.50.1
'@rollup/rollup-linux-loongarch64-gnu': 4.50.1
'@rollup/rollup-linux-ppc64-gnu': 4.50.1
'@rollup/rollup-linux-riscv64-gnu': 4.50.1
'@rollup/rollup-linux-riscv64-musl': 4.50.1
'@rollup/rollup-linux-s390x-gnu': 4.50.1
'@rollup/rollup-linux-x64-gnu': 4.50.1
'@rollup/rollup-linux-x64-musl': 4.50.1
'@rollup/rollup-openharmony-arm64': 4.50.1
'@rollup/rollup-win32-arm64-msvc': 4.50.1
'@rollup/rollup-win32-ia32-msvc': 4.50.1
'@rollup/rollup-win32-x64-msvc': 4.50.1
'@rollup/rollup-android-arm-eabi': 4.50.2
'@rollup/rollup-android-arm64': 4.50.2
'@rollup/rollup-darwin-arm64': 4.50.2
'@rollup/rollup-darwin-x64': 4.50.2
'@rollup/rollup-freebsd-arm64': 4.50.2
'@rollup/rollup-freebsd-x64': 4.50.2
'@rollup/rollup-linux-arm-gnueabihf': 4.50.2
'@rollup/rollup-linux-arm-musleabihf': 4.50.2
'@rollup/rollup-linux-arm64-gnu': 4.50.2
'@rollup/rollup-linux-arm64-musl': 4.50.2
'@rollup/rollup-linux-loong64-gnu': 4.50.2
'@rollup/rollup-linux-ppc64-gnu': 4.50.2
'@rollup/rollup-linux-riscv64-gnu': 4.50.2
'@rollup/rollup-linux-riscv64-musl': 4.50.2
'@rollup/rollup-linux-s390x-gnu': 4.50.2
'@rollup/rollup-linux-x64-gnu': 4.50.2
'@rollup/rollup-linux-x64-musl': 4.50.2
'@rollup/rollup-openharmony-arm64': 4.50.2
'@rollup/rollup-win32-arm64-msvc': 4.50.2
'@rollup/rollup-win32-ia32-msvc': 4.50.2
'@rollup/rollup-win32-x64-msvc': 4.50.2
fsevents: 2.3.3
semver@6.3.1: {}
@@ -4873,7 +4880,7 @@ snapshots:
sharp@0.33.5:
dependencies:
color: 4.2.3
detect-libc: 2.0.4
detect-libc: 2.1.0
semver: 7.7.2
optionalDependencies:
'@img/sharp-darwin-arm64': 0.33.5
@@ -4899,7 +4906,7 @@ snapshots:
sharp@0.34.3:
dependencies:
color: 4.2.3
detect-libc: 2.0.4
detect-libc: 2.1.0
semver: 7.7.2
optionalDependencies:
'@img/sharp-darwin-arm64': 0.34.3
@@ -4936,9 +4943,9 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
simple-swizzle@0.2.2:
simple-swizzle@0.2.4:
dependencies:
is-arrayish: 0.3.2
is-arrayish: 0.3.4
sisteransi@1.0.5: {}
@@ -5046,7 +5053,7 @@ snapshots:
uncrypto@0.1.3: {}
undici-types@7.10.0: {}
undici-types@7.12.0: {}
undici@7.14.0: {}
@@ -5141,9 +5148,9 @@ snapshots:
ofetch: 1.4.1
ufo: 1.6.1
update-browserslist-db@1.1.3(browserslist@4.25.4):
update-browserslist-db@1.1.3(browserslist@4.26.2):
dependencies:
browserslist: 4.25.4
browserslist: 4.26.2
escalade: 3.2.0
picocolors: 1.1.1
@@ -5164,7 +5171,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)):
vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)):
dependencies:
'@babel/core': 7.28.4
'@types/babel__core': 7.20.5
@@ -5172,28 +5179,28 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.9
solid-refresh: 0.6.3(solid-js@1.9.9)
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
vitefu: 1.1.1(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))
vite: 6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)
vitefu: 1.1.1(vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1))
transitivePeerDependencies:
- supports-color
vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1):
vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1):
dependencies:
esbuild: 0.25.9
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
rollup: 4.50.1
rollup: 4.50.2
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.3.1
'@types/node': 24.5.1
fsevents: 2.3.3
jiti: 2.5.1
lightningcss: 1.30.1
vitefu@1.1.1(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)):
vitefu@1.1.1(vite@6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)):
optionalDependencies:
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
vite: 6.3.6(@types/node@24.5.1)(jiti@2.5.1)(lightningcss@1.30.1)
web-namespaces@2.0.1: {}
@@ -5210,24 +5217,24 @@ snapshots:
dependencies:
string-width: 7.2.0
workerd@1.20250906.0:
workerd@1.20250913.0:
optionalDependencies:
'@cloudflare/workerd-darwin-64': 1.20250906.0
'@cloudflare/workerd-darwin-arm64': 1.20250906.0
'@cloudflare/workerd-linux-64': 1.20250906.0
'@cloudflare/workerd-linux-arm64': 1.20250906.0
'@cloudflare/workerd-windows-64': 1.20250906.0
'@cloudflare/workerd-darwin-64': 1.20250913.0
'@cloudflare/workerd-darwin-arm64': 1.20250913.0
'@cloudflare/workerd-linux-64': 1.20250913.0
'@cloudflare/workerd-linux-arm64': 1.20250913.0
'@cloudflare/workerd-windows-64': 1.20250913.0
wrangler@4.37.0:
wrangler@4.37.1:
dependencies:
'@cloudflare/kv-asset-handler': 0.4.0
'@cloudflare/unenv-preset': 2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250906.0)
'@cloudflare/unenv-preset': 2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250913.0)
blake3-wasm: 2.1.5
esbuild: 0.25.4
miniflare: 4.20250906.2
miniflare: 4.20250913.0
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.21
workerd: 1.20250906.0
workerd: 1.20250913.0
optionalDependencies:
fsevents: 2.3.3
transitivePeerDependencies:
+21 -2
View File
@@ -2,7 +2,11 @@ import { defineCollection, z } from "astro:content";
import { glob, file } from "astro/loaders";
const commonText = defineCollection({
const strings = defineCollection({
loader: glob({ pattern: "*.toml", base: "./src/data/strings" })
});
const commonPages = defineCollection({
loader: glob({ pattern: "**/*.mdx", base: "./src/data/common" }),
schema: z.object({
title: z.string(),
@@ -20,4 +24,19 @@ const distroGuide = defineCollection({
})
});
export const collections = { commonText, distroGuide };
const distroQuiz = defineCollection({
loader: glob({ pattern: "*.toml", base: "./src/data/distroquiz" }),
schema: z.object({
dialogs: z.array(z.object({
title: z.string(),
content: z.string(),
choices: z.array(z.object({
text: z.string(),
action: z.string(),
data: z.string().or(z.number()).optional(),
})),
})),
})
});
export const collections = { strings, commonPages, distroGuide, distroQuiz };
+9
View File
@@ -0,0 +1,9 @@
---
title: รีสตาร์ท
description: รีสตาร์ทอุปกรณ์ของคุณให้บูตจากแฟลชไดรฟ์
---
ถัดไป คุณจะต้องรีสตาร์ทอุปกรณ์ของคุณให้บูตเข้าแฟลชไดรฟ์
โปรดค้นหาว่าปุ่มที่เปิด "Boot Menu" ของยี่ห้อโน๊ตบุ๊ค/เมนบอร์ดของคุณคือปุ่มอะไร
และเมื่อคุณรีสตาร์ทอุปกรณ์ กดปุ่มนั้นซ้ำ ๆ จนกว่าหน้า "Boot Menu" จะเด้งขึ้นมา
@@ -0,0 +1,17 @@
---
title: หน้า Boot
description: เลือก USB แฟลชไดรฟ์ของคุณ
---
import { Picture } from "astro:assets";
import bootMenu from "@/assets/imgs/Fedora/Boot/MSIBootMenu_Cropped.jpg";
<figure>
<Picture src={bootMenu} formats={["avif"]} alt="A photo of the boot menu" />
<figcaption>ตัวอย่าง: หน้า Boot Menu ของ MSI</figcaption>
</figure>
ใน 3 ขั้นตอนถัดไป โปรดอ่านรายละเอียดที่อยู่ในนี้ก่อนทำจริงเพราะต้องมีการแข่งกับเวลา
หลังจากหน้า Boot Menu ขึ้นมา กดปุ่มลูกศรบนคีย์บอร์ด (ขึ้น/ลง) เพื่อเลือกแฟลชไดรฟ์ของคุณ
แล้วจึงกด Enter
+16
View File
@@ -0,0 +1,16 @@
---
title: So you've chosen Fedora.
---
import ChoiceList from "@/components/ChoiceList.astro";
Do you have an NVIDIA graphics card?
<ChoiceList>
<a href="/en/distro/fedora/1/" class="button">
Yes
</a>
<a href="/en/distro/fedora/5/" class="button">
No
</a>
</ChoiceList>
+17
View File
@@ -0,0 +1,17 @@
---
title: Regarding NVIDIA drivers
---
import ChoiceList from "@/components/ChoiceList.astro";
It is recommended for beginners to install Fedora derivatives instead
as it will help ease the process of setting drivers up. Do you wish to continue with Fedora?
<ChoiceList>
<a href="/en/distro/fedora/2/" class="button">
I'll go with the easier route
</a>
<a href="/en/distro/fedora/5/" class="button">
I'll continue with Fedora
</a>
</ChoiceList>
+17
View File
@@ -0,0 +1,17 @@
---
title: Do you need Secure Boot?
---
import ChoiceList from "@/components/ChoiceList.astro";
Secure Boot is a technology required by some anticheat programs,
namely Riot Vanguard.
<ChoiceList>
<a href="/en/distro/fedora/3/" class="button">
Yes
</a>
<a href="/en/distro/fedora/4/" class="button">
No
</a>
</ChoiceList>
+18
View File
@@ -0,0 +1,18 @@
---
title: Bazzite
---
import ChoiceList from "@/components/ChoiceList.astro";
Bazzite is a Linux distribution which is basically designed for gamers.
<ChoiceList>
<a
href="https://bazzite.gg/"
target="_blank"
rel="noreferrer"
class="button"
>
Visit Website
</a>
</ChoiceList>
+18
View File
@@ -0,0 +1,18 @@
---
title: Nobara Linux
---
import ChoiceList from "@/components/ChoiceList.astro";
The Nobara project aims to improve Fedora's user-friendliness.
<ChoiceList>
<a
href="https://nobaraproject.org/"
target="_blank"
rel="noreferrer"
class="button"
>
Visit Website
</a>
</ChoiceList>
+6
View File
@@ -0,0 +1,6 @@
---
title: Prerequisites
continueTo: distro/fedora/6/
---
Please prepare an empty/unused USB flash drive with at least 4GB capacity.
+27
View File
@@ -0,0 +1,27 @@
---
title: Fedora Media Writer
continueTo: distro/fedora/7/
---
It is a program which will help you copy Fedora's installer
to your USB flash drive. Please download and install the program as usual for
your platform.
<div class="grid grid-flow-col auto-cols-fr gap-2">
<a
href="https://github.com/FedoraQt/MediaWriter/releases/latest"
class="button"
target="_blank"
rel="noreferrer"
>
Windows/macOS
</a>
<a
href="https://flathub.org/apps/details/org.fedoraproject.MediaWriter"
class="button"
target="_blank"
rel="noreferrer"
>
Linux
</a>
</div>
+36
View File
@@ -0,0 +1,36 @@
---
title: Choose your flavor
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
Choose a desktop environment, pick whatever you like based on
appearance. KDE Plasma (Right) may be more familiar for Windows users.
<ChoiceList>
<a href="/en/distro/fedora/8/" class="button">
<figure>
<Picture
src={fedoraWorkstation}
formats={["avif"]}
width="1280"
alt="Fedora Workstation 42"
/>
<figcaption>Fedora Workstation</figcaption>
</figure>
</a>
<a href="/en/distro/fedora/9/" class="button">
<figure>
<Picture
src={fedoraPlasma}
formats={["avif"]}
width="1280"
alt="Fedora KDE Plasma Desktop 42"
/>
<figcaption>Fedora KDE Plasma Desktop</figcaption>
</figure>
</a>
</ChoiceList>
+23
View File
@@ -0,0 +1,23 @@
---
title: Fedora Workstation
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
<Picture
src={fedoraWorkstation}
formats={["avif"]}
width="1280"
alt="Fedora Workstation 42"
/>
<ChoiceList>
<a href="/en/distro/fedora/7/" class="button">
Back
</a>
<a href="/en/distro/fedora/workstation/0/" class="button">
This is the one
</a>
</ChoiceList>
+23
View File
@@ -0,0 +1,23 @@
---
title: Fedora KDE Plasma Desktop
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
<Picture
src={fedoraPlasma}
formats={["avif"]}
width="1280"
alt="Fedora KDE Plasma Desktop 42"
/>
<ChoiceList>
<a href="/en/distro/fedora/7/" class="button">
Back
</a>
<a href="/en/distro/fedora/plasma/0/" class="button">
This is the one
</a>
</ChoiceList>
-173
View File
@@ -1,173 +0,0 @@
import type { Dialog } from "@/lib/tinyvn";
import { getRelativeLocaleUrl } from "astro:i18n";
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.avif";
import fedoraWorkstationPng from "@/assets/imgs/Fedora/fedora42_workstation.png";
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.avif";
import fedoraPlasmaPng from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
const fedoraDialogs: Dialog[] = [
{
title: "So you've chosen Fedora.",
content:
"Do you have an NVIDIA graphics card?",
choices: [
{
text: "Yes",
action: "continue"
},
{
text: "No",
action: "jump",
data: 5,
},
],
}, // 0
{
title: "Regarding NVIDIA drivers",
content: `It is recommended for beginners to install Fedora derivatives instead
as it will help ease the process of setting drivers up. Do you wish to continue with Fedora?`,
choices: [
{
action: "continue",
text: "I'll go with the easier route"
},
{
action: "jump",
text: "I'll continue with Fedora",
data: 5
}
]
}, // 1
{
title: "Do you need Secure Boot?",
content: `Secure Boot is a technology required by some anticheat programs,
namely Riot Vanguard.`,
choices: [
{
action: "continue",
text: "Yes."
},
{
action: "jump",
text: "No.",
data: 4
}
]
}, // 2
{
title: "Bazzite",
content: "Bazzite is a Linux distribution which is basically designed for gamers.",
choices: [
{
action: "link",
data: "https://bazzite.gg/",
text: "Visit Website"
}
]
}, // 3
{
title: "Nobara Linux",
content: "The Nobara project aims to improve Fedora's user-friendliness.",
choices: [
{
action: "link",
data: "https://nobaraproject.org/",
text: "Visit Website"
}
]
}, // 4
{
title: "Prerequisites",
content: "Please prepare an empty/unused USB flash drive with at least 4GB capacity."
}, // 5
{
title: "Fedora Media Writer",
content: `It is a program which will help you copy Fedora's installer
to your USB flash drive. Please download and install the program as usual for
your platform.
<div class="grid grid-flow-col auto-cols-fr gap-2">
<a href="https://github.com/FedoraQt/MediaWriter/releases/latest"
class="button" target="_blank" rel="noopener noreferrer">
Windows/macOS
</a>
<a href="https://flathub.org/apps/details/org.fedoraproject.MediaWriter"
class="button" target="_blank" rel="noopener noreferrer">
Linux
</a>
</div>`,
choices: [
{
action: "continue",
text: "Done!"
}
]
}, // 6
{
title: "Choose your flavor",
content: `Choose a desktop environment, pick whatever you like based on
appearance. KDE Plasma (Right) may be more familiar for Windows users.`,
choices: [
{
action: "continue",
text: `<figure>
<picture>
<source srcset="${fedoraWorkstation.src}" type="image/avif" />
<img src="${fedoraWorkstationPng.src}" alt="Fedora Workstation 42" />
</picture>
<figcaption>Fedora Workstation</figcaption>
</figure>`
},
{
action: "jump",
text: `<figure>
<picture>
<source srcset="${fedoraPlasma.src}" type="image/avif" />
<img src="${fedoraPlasmaPng.src}" alt="Fedora KDE Plasma Desktop 42" />
</picture>
<figcaption>Fedora KDE Plasma Desktop</figcaption>
</figure>`,
data: 9
}
]
}, // 7
{
title: "Fedora Workstation",
content: `<picture>
<source srcset="${fedoraWorkstation.src}" type="image/avif" />
<img src="${fedoraWorkstationPng.src}" alt="Fedora Workstation 42" />
</picture>`,
choices: [
{
action: "jump",
text: "Back",
data: 7
},
{
action: "link",
text: "Continue",
data: getRelativeLocaleUrl("en", "distro/fedora/workstation/0")
}
]
}, // 8
{
title: "Fedora KDE Plasma Desktop",
content: `<picture>
<source srcset="${fedoraPlasma.src}" type="image/avif" />
<img src="${fedoraPlasmaPng.src}" alt="Fedora KDE Plasma Desktop 42" />
</picture>`,
choices: [
{
action: "jump",
text: "Back",
data: 7
},
{
action: "link",
text: "Continue",
data: getRelativeLocaleUrl("en", "distro/fedora/plasma/0")
}
]
} // 9
];
export default fedoraDialogs;
+1 -7
View File
@@ -1,10 +1,10 @@
---
title: Fedora Media Writer
description: Choosing to download Fedora automatically.
continueTo: distro/fedora/workstation/1/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectImageSource.png";
<div class="flex justify-center">
@@ -17,9 +17,3 @@ import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectImag
</div>
Select "Download automatically" and click Next.
<ChoiceList>
<a href="/en/distro/fedora/workstation/1/" class="button">
Continue
</a>
</ChoiceList>
+1 -7
View File
@@ -1,10 +1,10 @@
---
title: Select Fedora Release
description: Select the Fedora release according to your choosing.
continueTo: distro/fedora/workstation/2/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectFedoraRelease_Workstation.png";
<div class="flex justify-center">
@@ -17,9 +17,3 @@ import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectFedo
</div>
Select "Fedora Workstation" and click Next.
<ChoiceList>
<a href="/en/distro/fedora/workstation/2/" class="button">
Continue
</a>
</ChoiceList>
+1 -7
View File
@@ -1,10 +1,10 @@
---
title: Write Options
description: Selecting the USB flash drive write options
continueTo: distro/fedora/workstation/3/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import writeOptions from "@/assets/imgs/Fedora/FedoraMediaWriter/WriteOptions.png";
<div class="flex justify-center">
@@ -23,9 +23,3 @@ Optionally, check "Delete download after writing" if you'd like to save space
and do not plan to format a USB flash drive again with Fedora anytime soon.
Then, Click "Write"
<ChoiceList>
<a href="/en/distro/fedora/workstation/3/" class="button">
Continue
</a>
</ChoiceList>
+1 -6
View File
@@ -1,6 +1,7 @@
---
title: Erase Confirmation
description: Confirming the formatting of the USB drive.
continueTo: distro/fedora/workstation/4/
---
import { Picture } from "astro:assets";
@@ -19,9 +20,3 @@ import eraseConfirmation from "@/assets/imgs/Fedora/FedoraMediaWriter/EraseConfi
**The entire device that you have selected will be wiped.** Click "Write" if
you have absolutely made sure that the selected device does not have important
data on it. This action is **irreversible.**
<ChoiceList>
<a href="/en/distro/fedora/workstation/4/" class="button">
Continue
</a>
</ChoiceList>
+1 -7
View File
@@ -1,10 +1,10 @@
---
title: Wait
description: Wait while Fedora Media Writer does its thing.
continueTo: distro/fedora/workstation/5/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import writing from "@/assets/imgs/Fedora/FedoraMediaWriter/Writing.png";
<div class="flex justify-center">
@@ -18,9 +18,3 @@ import writing from "@/assets/imgs/Fedora/FedoraMediaWriter/Writing.png";
Now, wait while Fedora Media Writer is downloading and writing to your USB
flash drive. You can do something else while it does its thing.
<ChoiceList>
<a href="/en/distro/fedora/workstation/5/" class="button">
Continue
</a>
</ChoiceList>
+1 -7
View File
@@ -1,10 +1,10 @@
---
title: Finished
description: Finished! Get ready to install.
continueTo: distro/fedora/workstation/install/0/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import finished from "@/assets/imgs/Fedora/FedoraMediaWriter/Finished.png";
<div class="flex justify-center">
@@ -17,9 +17,3 @@ import finished from "@/assets/imgs/Fedora/FedoraMediaWriter/Finished.png";
</div>
Done! Next, We'll start the real installation process.
<ChoiceList>
<a href="/en/distro/fedora/workstation/install/0/" class="button">
Continue
</a>
</ChoiceList>
@@ -20,4 +20,4 @@ I think this is obvious enough. Full names can have spaces and whatever you
fancy and username mostly just contains <span
class="border-b border-dotted"
title="a.k.a numbers and English alphabets">alphanumeric</span> characters
under 64 characters in length.
under 32 characters in length.
+16
View File
@@ -0,0 +1,16 @@
---
title: คุณเลือก Fedora สินะ
---
import ChoiceList from "@/components/ChoiceList.astro";
คุณมีการ์ดจอ NVIDIA รึเปล่า
<ChoiceList>
<a href="/th/distro/fedora/1/" class="button">
มี
</a>
<a href="/th/distro/fedora/5/" class="button">
ไม่มี
</a>
</ChoiceList>
+17
View File
@@ -0,0 +1,17 @@
---
title: เกี่ยวกับไดรเวอร์ NVIDIA
---
import ChoiceList from "@/components/ChoiceList.astro";
หากคุณเป็นผู้ใช้งานเริ่มต้น เราแนะนำให้คุณใช้ลูกของ Fedora แทนเนื่องจากจะช่วย
ให้ขั้นตอนการติดตั้งไดรเวอร์ NVIDIA ง่ายขึ้นได้
<ChoiceList>
<a href="/th/distro/fedora/2/" class="button">
ฉันจะเลือกทางที่ง่ายกว่า
</a>
<a href="/th/distro/fedora/5/" class="button">
ไปต่อกับ Fedora
</a>
</ChoiceList>
+17
View File
@@ -0,0 +1,17 @@
---
title: คุณจำเป็นต้องใช้ Secure Boot รึเปล่า
---
import ChoiceList from "@/components/ChoiceList.astro";
Secure Boot เป็นเทคโนโลยีที่จำเป็นต่อโปรแกรมป้องกันการโกง (Anti-cheat) บางโปรแกรม
เช่น Riot Vanguard
<ChoiceList>
<a href="/th/distro/fedora/3/" class="button">
ใช่
</a>
<a href="/th/distro/fedora/4/" class="button">
ไม่
</a>
</ChoiceList>
+18
View File
@@ -0,0 +1,18 @@
---
title: Bazzite
---
import ChoiceList from "@/components/ChoiceList.astro";
Bazzite เป็น Linux เจ้านึงที่ออกแบบมาสำหรับคนรักการเล่นเกม
<ChoiceList>
<a
href="https://bazzite.gg/"
target="_blank"
rel="noreferrer"
class="button"
>
เยี่ยมชมเว็บไซต์
</a>
</ChoiceList>
+18
View File
@@ -0,0 +1,18 @@
---
title: Nobara Linux
---
import ChoiceList from "@/components/ChoiceList.astro";
Nobara Linux เป็นระบบปฏิบัติการที่จะช่วยปรับปรุงความเป็นมิตรต่อผู้ใช้ของ Fedora
<ChoiceList>
<a
href="https://nobaraproject.org/"
target="_blank"
rel="noreferrer"
class="button"
>
เยี่ยมชมเว็บไซต์
</a>
</ChoiceList>
+6
View File
@@ -0,0 +1,6 @@
---
title: สิ่งที่ต้องมี
continueTo: distro/fedora/6/
---
USB แฟลชไดรฟ์ที่มีความจุอย่างน้อย 4GB
+26
View File
@@ -0,0 +1,26 @@
---
title: Fedora Media Writer
continueTo: distro/fedora/7/
---
โปรแกรมนี้จะช่วยคุณคัดลอกตัวติดตั้ง Fedora Linux ไปยัง USB Flash Drive ของคุณ
โปรดดาวน์โหลดและติดตั้งโปรแกรมนี้ตามปกติสำหรับแพลตฟอร์มของคุณ
<div class="grid grid-flow-col auto-cols-fr gap-2">
<a
href="https://github.com/FedoraQt/MediaWriter/releases/latest"
class="button"
target="_blank"
rel="noreferrer"
>
Windows/macOS
</a>
<a
href="https://flathub.org/apps/details/org.fedoraproject.MediaWriter"
class="button"
target="_blank"
rel="noreferrer"
>
Linux
</a>
</div>
+36
View File
@@ -0,0 +1,36 @@
---
title: เลือกรสชาติที่คุณชอบ
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
เลือกสภาพแวดล้อมเดสก์ท็อปของคุณ เลือกอะไรก็ได้จากหน้าตาของมัน KDE Plasma
(รูปด้านขวา) อาจมีการทำงานที่ผู้ใช้ Windows จะคุ้นชินมากกว่า
<ChoiceList>
<a href="/th/distro/fedora/8/" class="button">
<figure>
<Picture
src={fedoraWorkstation}
formats={["avif"]}
width="1280"
alt="Fedora Workstation 42"
/>
<figcaption>Fedora Workstation</figcaption>
</figure>
</a>
<a href="/th/distro/fedora/9/" class="button">
<figure>
<Picture
src={fedoraPlasma}
formats={["avif"]}
width="1280"
alt="Fedora KDE Plasma Desktop 42"
/>
<figcaption>Fedora KDE Plasma Desktop</figcaption>
</figure>
</a>
</ChoiceList>
+23
View File
@@ -0,0 +1,23 @@
---
title: Fedora Workstation
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
<Picture
src={fedoraWorkstation}
formats={["avif"]}
width="1280"
alt="Fedora Workstation 42"
/>
<ChoiceList>
<a href="/th/distro/fedora/7/" class="button">
กลับ
</a>
<a href="/th/distro/fedora/workstation/0/" class="button">
เลือกอันนี้แหละ
</a>
</ChoiceList>
+23
View File
@@ -0,0 +1,23 @@
---
title: Fedora KDE Plasma Desktop
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
<Picture
src={fedoraPlasma}
formats={["avif"]}
width="1280"
alt="Fedora KDE Plasma Desktop 42"
/>
<ChoiceList>
<a href="/th/distro/fedora/7/" class="button">
กลับ
</a>
<a href="/th/distro/fedora/plasma/0/" class="button">
เลือกอันนี้แหละ
</a>
</ChoiceList>
@@ -0,0 +1,19 @@
---
title: Fedora Media Writer
description: เลือกที่จะดาวน์โหลด Fedora โดยอัตโนมัติ
continueTo: distro/fedora/workstation/1/
---
import { Picture } from "astro:assets";
import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectImageSource.png";
<div class="flex justify-center">
<Picture
src={selectImageSource}
formats={["avif"]}
alt="หน้าเลือกแหล่งอิมเมจของ Fedora Media Writer"
class="h-72 w-auto"
/>
</div>
เลือก "Download automatically" และคลิกปุ่ม Next
@@ -0,0 +1,19 @@
---
title: เลือกรุ่น Fedora
description: เลือกรุ่น Fedora ตามที่เลือกไว้ก่อนหน้านี้
continueTo: distro/fedora/workstation/2/
---
import { Picture } from "astro:assets";
import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectFedoraRelease_Workstation.png";
<div class="flex justify-center">
<Picture
src={selectImageSource}
formats={["avif"]}
alt="หน้าเลือกรุ่น Fedora ของ Fedora Media Writer"
class="h-72 w-auto"
/>
</div>
เลือก "Fedora Workstation" และกดถัดไป Next.
@@ -0,0 +1,24 @@
---
title: ตัวเลือกการเขียน
description: เลือกตัวเลือกการเขียน USB แฟลชไดรฟ์
continueTo: distro/fedora/workstation/3/
---
import { Picture } from "astro:assets";
import writeOptions from "@/assets/imgs/Fedora/FedoraMediaWriter/WriteOptions.png";
<div class="flex justify-center">
<Picture
src={writeOptions}
formats={["avif"]}
alt="หน้าตัวเลือกการเขียนของ Fedora Media Writer"
class="h-72 w-auto"
/>
</div>
เลือกเวอร์ชันล่าสุด (ณ เวลาที่เขียนคือ 42) และทำให้แน่ใจว่าเลือกแฟลชไดรฟ์ถูก
คลิก "Delete download after writing" ถ้าอยากลบไฟล์ระบบหลังโปรแกรม
ทำการฟอร์แมตไดรฟ์เสร็จ
แล้วท้ายสุด กดปุ่ม "Write"
@@ -0,0 +1,21 @@
---
title: ฟอร์แมตแน่นะ
description: คอนเฟิร์มการฟอร์แมตไดรฟ์
continueTo: distro/fedora/workstation/4/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import eraseConfirmation from "@/assets/imgs/Fedora/FedoraMediaWriter/EraseConfirmation.png";
<div class="flex justify-center">
<Picture
src={eraseConfirmation}
formats={["avif"]}
alt="หน้าคอนเฟิร์มการลบ Fedora Media Writer"
class="h-48 w-auto"
/>
</div>
**อุปกรณ์ที่เลือกจะถูกลบข้อมูลทิ้ง** กด "Write" หากคุณแน่ใจแล้วว่าไม่มีข้อมูลที่สำคัญอยู่ในไดรฟ์นั้น
การกระทำนี้**ไม่สามารถย้อนกลับได้**
@@ -0,0 +1,19 @@
---
title: รอ
description: รอในระหว่างการฟอร์แมตไดรฟ์
continueTo: distro/fedora/workstation/5/
---
import { Picture } from "astro:assets";
import writing from "@/assets/imgs/Fedora/FedoraMediaWriter/Writing.png";
<div class="flex justify-center">
<Picture
src={writing}
formats={["avif"]}
alt="หน้าแสดงการเขียนของ Fedora Media Writer"
class="h-72 w-auto"
/>
</div>
ทำอย่างอื่นรอในระหว่างที่โปรแกรมทำการโหลด เมื่อเสร็จแล้วคุณควรจะได้การแจ้งเตือนบนคอมพิวเตอร์ของคุณ
@@ -0,0 +1,19 @@
---
title: เสร็จสิ้น
description: เสร็จแล้ว ได้เวลาติดตั้งจริง
continueTo: distro/fedora/workstation/install/0/
---
import { Picture } from "astro:assets";
import finished from "@/assets/imgs/Fedora/FedoraMediaWriter/Finished.png";
<div class="flex justify-center">
<Picture
src={finished}
formats={["avif"]}
alt="หน้าแสดงการเสร็จสิ้นของ Fedora Media Writer"
class="h-72 w-auto"
/>
</div>
เรียบร้อย ทีนี้คุณก็จะได้เริ่มขั้นตอนการติดตั้งจริง ๆ
@@ -0,0 +1,26 @@
---
title: ยินดีต้อนรับ
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import welcome from "@/assets/imgs/Fedora/AfterInstall/WelcomeCropped.png";
<Picture
src={welcome}
formats={["avif"]}
alt="หน้าต่างยินดีต้อนรับ"
class="max-h-[60vh] w-auto"
priority
/>
เลือกภาษาแล้วกด Next
<ChoiceList>
<a href="/th/distro/fedora/workstation/afterinstall/7/" class="button">
ฉันอ่านที่มันขึ้นมาเองได้ ข้าม ๆ ไปเถอะ
</a>
<a href="/th/distro/fedora/workstation/afterinstall/1/" class="button">
ไปต่อ
</a>
</ChoiceList>
@@ -0,0 +1,19 @@
---
title: ผังคีย์บอร์ด
continueTo: distro/fedora/workstation/afterinstall/2/
---
import { Picture } from "astro:assets";
import keyboard from "@/assets/imgs/Fedora/AfterInstall/TypingCropped.png";
<Picture
src={keyboard}
formats={["avif"]}
alt="หน้าเกี่ยวกับการพิมพ์ แสดงรายการผังคีย์บอร์ด"
class="max-h-[60vh] w-auto"
priority
/>
เลือกผังคีย์บอร์ดที่ต้องการแล้วกด "Next"
แนะนำว่าให้เลือกผังภาษาอังกฤษแล้วเพิ่มผังภาษาไทยเป็นผังรองทีหลัง
@@ -0,0 +1,22 @@
---
title: ความเป็นส่วนตัว
continueTo: distro/fedora/workstation/afterinstall/3/
---
import { Picture } from "astro:assets";
import welcome from "@/assets/imgs/Fedora/AfterInstall/PrivacyCropped.png";
<div class="flex justify-center">
<Picture
src={welcome}
formats={["avif"]}
alt="The Privacy page"
class="max-h-[60vh] w-auto"
priority
/>
</div>
ปกติแล้วคุณควรจะเปิดตัวเลือกเหล่านี้ทิ้งไว้ แต่เผื่อใครรักการอ่าน:
เลือกว่าจะเปิดบริการตำแหน่งและการรายงานปัญหาอัตโนมัติหรือไม่ คุณสามารถปิดบริการตำแหน่งได้ถ้าคุณคิดว่าคุณจะไม่ใช้แอพที่ต้องใช้ตำแหน่งของคุณ
เช่น แอพลิเคชั่นแผนที่
@@ -0,0 +1,17 @@
---
title: ในเรื่องของเวลา
continueTo: distro/fedora/workstation/afterinstall/4/
---
import { Picture } from "astro:assets";
import timeZone from "@/assets/imgs/Fedora/AfterInstall/TimeZoneCropped.png";
<Picture
src={timeZone}
formats={["avif"]}
alt="หน้าเลือกโซนเวลา"
class="max-h-[60vh] w-auto"
priority
/>
ค้นหาจังหวัดของคุณ (หรือจังหวัดใกล้เคียง) เพื่อเลือกโซนเวลา
@@ -0,0 +1,19 @@
---
title: ปาร์ตี้!
continueTo: distro/fedora/workstation/afterinstall/5/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import image from "@/assets/imgs/Fedora/AfterInstall/ThirdPartyRepoCropped.png";
<Picture
src={image}
formats={["avif"]}
alt="หน้าเปิดซอฟท์แวร์บุคคลที่สาม"
priority
/>
เลือกว่าคุณจะต้องการเปิดคลังเก็บซอฟท์แวร์บุคคลที่สามหรือไม่
แนะนำให้เปิดโดยการคลิก Enable เพื่อให้มั่นใจว่าคุณจะสามารถติดตั้งซอฟท์แวร์และไดรเวอร์ที่คุณอาจต้องการในตอนนี้หรือในอนาคตได้
@@ -0,0 +1,21 @@
---
title: เจ้าชื่ออะไร
continueTo: distro/fedora/workstation/afterinstall/6/
---
import { Picture } from "astro:assets";
import image from "@/assets/imgs/Fedora/AfterInstall/UsernameCropped.png";
<div class="flex justify-center">
<Picture
src={image}
formats={["avif"]}
alt="หน้าใส่ข้อมูลชื่อ"
class="max-h-[60vh] w-auto"
priority
/>
</div>
คิดว่าหน้านี้คงไม่ต้องอธิบายมาก ใส่ชื่อจริง (Full Name; หรือเอาจริง ๆ ชื่ออะไรก็ได้)
โดยการที่ชื่อจริงนั้นสามารถใส่ตัวอักษรที่คุณปราถนาลงไปได้เลย และชื่อผู้ใช้ (Username)
ส่วนใหญ่ก็จะมีแค่ตัวอักษรภาษาอังกฤษและตัวเลขที่ความยาวต่ำกว่า 32 ตัวอักษร
@@ -0,0 +1,21 @@
---
title: "********"
continueTo: distro/fedora/workstation/afterinstall/7/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import image from "@/assets/imgs/Fedora/AfterInstall/PasswordCropped.png";
<div class="flex justify-center">
<Picture
src={image}
formats={["avif"]}
alt="หน้าตั้งรหัสผ่านบัญชี"
class="max-h-[60vh] w-auto"
priority
/>
</div>
ตั้งรหัสผ่านใหม่สำหรับบัญชีผู้ใช้ของคุณ ใช้อะไรก็ได้**แต่ห้ามลืมมัน**
(จะจดไว้ก็ได้หากจำเป็นจริง ๆ)
@@ -0,0 +1,20 @@
---
title: ไชโยโหหิ้ว
continueTo: distro/fedora/workstation/afterinstall/8/
---
import { Picture } from "astro:assets";
import Party from "@/components/Party.astro";
import image from "@/assets/imgs/Fedora/AfterInstall/OnboardDoneCropped.png";
<div class="flex justify-center">
<Picture
src={image}
formats={["avif"]}
alt="หน้าที่แสดงผลว่าระบบพร้อมใช้งานแล้ว"
class="max-h-[60vh] w-auto"
priority
/>
</div>
<Party />
@@ -0,0 +1,28 @@
---
title: ทัวร์ลง
---
import { Picture } from "astro:assets";
import Party from "@/components/Party.astro";
import ChoiceList from "@/components/ChoiceList.astro";
import image from "@/assets/imgs/Fedora/AfterInstall/OptionalTour.png";
<div class="flex justify-center">
<Picture
src={image}
formats={["avif"]}
alt="ทัวร์หน้าเดสก์ท็อป"
class="max-h-[60vh] w-auto"
priority
/>
</div>
หลังจากนั้น กดปุ่ม Super (หรืออีกชื่อนึงคือปุ่ม Windows) เพื่อเข้าสู่มุมมองภาพรวมของเดสก์ท็อป
คุณอาจได้รับคำเชิญเพื่อทัวร์ฟีเจอร์ของเดสก์ท็อปนี้
เราแนะนำให้คุณดูทัวร์เพื่อทราบวิธีการใช้งานเดสก์ท็อปให้มีประสิทธิภาพสูงสุด
<ChoiceList>
<a href="/th/" class="button">
กลับบ้าน
</a>
</ChoiceList>
@@ -0,0 +1,14 @@
---
title: การติดตั้งที่แท้จริง
description: ขั้นตอนในการติดตั้ง Fedora Linux
continueTo: distro/fedora/workstation/install/1/
---
import QRCode from "@/components/QRCode.astro";
ขั้นตอนหลังจากนี้จะต้องให้คุณรีสตาร์ทคอมพิวเตอร์ หากอุปกรณ์ที่คุณจะติดตั้งคือเครื่องที่คุณดูไกด์นี้อยู่
โปรดเปลี่ยนไปดูไกด์ในอุปกรณ์อื่น
<div class="flex justify-center">
<QRCode msg="/th/distro/fedora/workstation/install/0/" width="164" />
</div>
@@ -0,0 +1,6 @@
---
title: รีสตาร์ท
description: รีสตาร์ทอุปกรณ์ของคุณเพื่อเข้าไปยังแฟลชไดรฟ์
aliasOf: common/boot/bootmenukey
continueTo: distro/fedora/workstation/install/2/
---
@@ -0,0 +1,30 @@
---
title: วิธีการติดตั้ง
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import installMethod from "@/assets/imgs/Fedora/Install/InstallationMethod_Cropped.png";
<div class="relative">
<Picture
src={installMethod}
formats={["avif"]}
alt="หน้าแสดงตัวเลือกวิธีการติดตั้ง"
/>
<div class="absolute bottom-1/4 max-w-7/8 left-1/16 translate-y-1/2 bg-white/50 text-black rounded p-4">
"Share disk with other operating system" - แบ่งพื้นที่กับระบบที่มีอยู่บนเครื่องอยู่แล้ว
"Use entire disk" - ลบทั้งไดรฟ์และติดตั้ง Fedora
</div>
</div>
<ChoiceList>
<a href="/th/distro/fedora/workstation/install/11/" class="button">
เป็นคนชอบแบ่งปัน
</a>
<a href="/th/distro/fedora/workstation/install/14/" class="button">
ล้างไดรฟ์และติดตั้ง Fedora
</a>
</ChoiceList>
@@ -0,0 +1,16 @@
---
title: แบ่งปันพื้นที่
continueTo: distro/fedora/workstation/install/12/
---
import { Picture } from "astro:assets";
import reclaimSpace from "@/assets/imgs/Fedora/Install/ReclaimSpace_Cropped.png";
import ResizeIcon from "@/assets/icons/fa-compress-arrows-alt.svg";
<Picture src={reclaimSpace} formats={["avif"]} alt="ไดอะล็อกเรียกคืนพื้นที่" />
มีความเป็นไปได้สูงว่าพาร์ติชันที่คุณต้องการย่อขนาดลงนั้นจะเป็นอันที่ใหญ่ที่สุด ซึ่งในรูปคือ `sda3`
ที่มีขนาด 67.9 GB (ซึ่งในระบบตัวอย่างคือไดรฟ์ C ของ Windows) คลิก <ResizeIcon
class="size-5 inline-block"
aria-label="Compress icon" role="img" />
เพื่อแก้ไขขนาด
@@ -0,0 +1,17 @@
---
title: ย่อมัน
continueTo: distro/fedora/workstation/install/13/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import reclaimSpace from "@/assets/imgs/Fedora/Install/ReclaimSpaceSlider_Cropped.png";
<Picture
src={reclaimSpace}
formats={["avif"]}
alt="ไดอะล็อกเรียกคืนพื้นที่พร้อมตัวเลื่อนระบุขนาดใหม่"
/>
เลือกขนาดใหม่สำหรับพาร์ติชันของคุณ โปรดคำนึงถึงพื้นที่ว่างที่คุณมีด้วย
และคุณสามารถกด "Resize" ได้เลยหลังจากที่คุณคิดขนาดใหม่ได้แล้ว
@@ -0,0 +1,15 @@
---
title: ทวงคืนดินแดน
continueTo: distro/fedora/workstation/install/14/
---
import { Picture } from "astro:assets";
import reclaimSpace from "@/assets/imgs/Fedora/Install/ReclaimSpaceDone_Cropped.png";
<Picture
src={reclaimSpace}
formats={["avif"]}
alt="ไดอะล็อกเรียกคืนพื้นที่หลังจากมีการแก้ไขขนาดพาร์ติชันแล้ว"
/>
ตรวจสอบค่าต่าง ๆ แล้วกด "Reclaim space" ได้เลย
@@ -0,0 +1,20 @@
---
title: การเข้ารหัสข้อมูล
continueTo: distro/fedora/workstation/install/15/
---
import { Picture } from "astro:assets";
import diskEncryption from "@/assets/imgs/Fedora/Install/DiskEncryptionUnchecked_Cropped.png";
<div class="relative">
<Picture
src={diskEncryption}
formats={["avif"]}
alt="หน้าการเข้ารหัสข้อมูล"
/>
<div class="absolute bottom-1/4 max-w-7/8 left-1/16 translate-y-1/2 bg-white/50 text-black rounded p-4">
คุณสามารถเลือกที่จะเข้ารหัสข้อมูลได้ เพียงแค่ติ๊กและใส่ข้อมูลให้ครบ
หากไม่สนใจ ก็กด Next ได้เลย
</div>
</div>
@@ -0,0 +1,20 @@
---
title: ตรวจสอบและติดตั้ง
continueTo: distro/fedora/workstation/install/16/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import reviewAndInstall from "@/assets/imgs/Fedora/Install/ReviewAndInstall_Cropped.png";
<div class="relative">
<Picture
src={reviewAndInstall}
formats={["avif"]}
alt="หน้าตรวจสอบและติดตั้ง"
/>
<div class="absolute bottom-1/4 left-1/2 -translate-x-1/2 translate-y-1/2 bg-white/50 text-black rounded p-4">
ตรวจสอบสิ่งที่ตัวติดตั้งจะกระทำและกด Install ได้เลย
</div>
</div>
@@ -0,0 +1,16 @@
---
title: กำลังติดตั้ง...
continueTo: distro/fedora/workstation/install/17/
---
import { Picture } from "astro:assets";
import installing from "@/assets/imgs/Fedora/Install/Installing_Cropped.png";
<Picture
src={installing}
formats={["avif"]}
alt="หน้ากำลังติดตั้ง ขั้นตอนการติดตั้งซอฟต์แวร์"
/>
รออย่างใจเย็น ทำอย่างอื่นรอ กระบวนการนี้จะใช้เวลา 5-10
นาทีหรือนานกว่าขึ้นอยู่กับความเร็วอุปกรณ์ของคุณและความเร็วอินเทอร์เน็ต
@@ -0,0 +1,15 @@
---
title: เยี่ยมมากค่ะ
continueTo: distro/fedora/workstation/install/18/
---
import { Picture } from "astro:assets";
import installing from "@/assets/imgs/Fedora/Install/InstallationFinished_Cropped.png";
<Picture
src={installing}
formats={["avif"]}
alt="หน้าแสดงการติดตั้งเสร็จสมบูรณ์"
/>
เสร็จสิ้นแล้ว!
@@ -0,0 +1,20 @@
---
title: การผจญภัยใหม่ของคุณ
continueTo: distro/fedora/workstation/afterinstall/0/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import restart from "@/assets/imgs/Fedora/Install/RestartMenu_Cropped.png";
<div class="flex justify-center">
<Picture
src={restart}
formats={["avif"]}
alt="เมนูรีสตาร์ท"
class="max-h-[50vh] w-auto"
/>
</div>
ไปที่มุมบนขวาของจอแล้วคลิกเพื่อเปิดเมนูระบบ แล้วกดปุ่ม Power แล้ว Restart
เพื่อรีสตาร์ทอุปกรณ์ของคุณได้เลย (จำเมนูนี้ไว้ด้วยล่ะ คุณจะต้องใช้มันอีกในภายหลัง)
@@ -0,0 +1,6 @@
---
title: หน้า Boot
description: เลือกแฟลชไดรฟ์ของคุณ
aliasOf: common/boot/bootmenuselect
continueTo: distro/fedora/workstation/install/3/
---
@@ -0,0 +1,22 @@
---
title: หน้าตัวเลือกการบูต
continueTo: distro/fedora/workstation/install/4/
---
import { Picture } from "astro:assets";
import bootOption from "@/assets/imgs/Fedora/Boot/BootOptionRestoration_Cropped.png";
<div class="relative">
<Picture
src={bootOption}
formats={["avif"]}
alt="รูปของหน้าตัวเลือกการบูต"
/>
<div class="absolute bottom-1/4 max-w-3/4 left-1/8 translate-y-3/8 bg-black/30 rounded p-4 text-white">
คุณ _อาจ_ เห็นหน้านี้หากคุณเปิด Secure Boot ไว้ กดปุ่มอะไรก็ได้หนึ่งครั้ง
เพื่อหยุดการรีสตาร์ทระบบ
คุณสามารถเมินขั้นตอนนี้ได้หากคุณไม่เจอหน้านี้
</div>
</div>
@@ -0,0 +1,19 @@
---
title: บูตต่อ
continueTo: distro/fedora/workstation/install/5/
---
import { Picture } from "astro:assets";
import continueBoot from "@/assets/imgs/Fedora/Boot/ContinueBootOption_Cropped.png";
<div class="relative">
<Picture
src={continueBoot}
formats={["avif"]}
alt="A photo of the boot option menu"
/>
<div class="absolute bottom-1/4 max-w-3/4 left-1/8 translate-y-1/2 bg-black/30 text-white rounded p-4">
หลังจากนั้น กดปุ่มลูกศรลงบนคีย์บอร์ดเพื่อเลือก "Continue Boot" แล้วกด
Enter
</div>
</div>
@@ -0,0 +1,20 @@
---
title: GRUB
description: การเข้าไปยัง Fedora Linux
continueTo: distro/fedora/workstation/install/6/
---
import { Picture } from "astro:assets";
import continueBoot from "@/assets/imgs/Fedora/Install/GRUB_Cropped.png";
<div class="relative">
<Picture
src={continueBoot}
formats={["avif"]}
alt="รูปหน้าบูตโหลดเดอร์ มีตัวเลือกสามตัว"
/>
<div class="absolute top-1/2 w-3/4 left-1/8 -translate-y-1/2 text-white">
คุณสามารถกด Enter เพื่อไปต่อได้เลย แต่หากอุปกรณ์ของคุณช้า
สามารถกดลูกษรขึ้นเพื่อข้ามการตรวจความถูกต้องได้แล้วเข้าหน้าเดสก์ท็อปโดยตรง
</div>
</div>
@@ -0,0 +1,15 @@
---
title: ตรวจสอบความถูกต้อง
continueTo: distro/fedora/workstation/install/7/
---
import { Picture } from "astro:assets";
import check from "@/assets/imgs/Fedora/Install/Check_Cropped.png";
<Picture
src={check}
formats={["avif"]}
alt="รูปของการตรวจสอบความถูกต้องที่ทำงานอยู่"
/>
หากคุณไม่ได้ข้ามการทดสอบ คุณจะเห็นหน้านี้ เพียงแค่รอแล้วระบบจะพาคุณเข้าไปยังเดสก์ท็อปเอง
@@ -0,0 +1,18 @@
---
title: ยินดีต้อนรับ
continueTo: distro/fedora/workstation/install/8/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import overview from "@/assets/imgs/Fedora/Install/Overview.png";
<Picture
src={overview}
formats={["avif"]}
alt="มุมมองภาพรวมของเดสก์ท็อป"
width="1280"
/>
ยินดีต้อนรับเข้าสู่เดสก์ท็อป คุณอยู่ในมุมมองภาพรวมและคุณก็สามารถคลิกที่หน้าต่างที่มายินดีต้อนรับคุณได้เลย
(หรือคุณจะลองเล่นกับระบบดูก่อนก็ได้)
@@ -0,0 +1,16 @@
---
title: ติดตั้ง
continueTo: distro/fedora/workstation/install/9/
---
import { Picture } from "astro:assets";
import welcome from "@/assets/imgs/Fedora/Install/Welcome.png";
<Picture
src={welcome}
formats={["avif"]}
alt="หน้าเดสก์ท็อปที่มีหน้าต่างยินดีต้อนรับอยู่กลางหน้าจอ"
width="1280"
/>
ได้เวลาเริ่มติดตั้งจริง ๆ แล้ว กด "Install Fedora..." ได้เลย
@@ -0,0 +1,12 @@
---
title: ภาษา
continueTo: distro/fedora/workstation/install/10/
---
import { Picture } from "astro:assets";
import ChoiceList from "@/components/ChoiceList.astro";
import language from "@/assets/imgs/Fedora/Install/Install_Language.png";
<Picture src={language} formats={["avif"]} alt="เมนูเลือกภาษา" width="1280" />
เลือกภาษาที่คุณต้องการ เลยเอาท์คีย์บอร์ดและคลิก Next ได้เลย
-90
View File
@@ -1,90 +0,0 @@
import type { Dialog } from "@/lib/tinyvn";
import { getRelativeLocaleUrl } from "astro:i18n";
const distroQuizDialogs: Dialog[] = [
{
title: "Let's pick a Linux distribution.",
content:
"Linux has many flavors, each with its own weakness and strength. Do you want to learn about the choices?",
choices: [
{
text: "Give me the choices!",
action: "jump",
data: 1,
},
{
text: "Just recommend me one",
action: "jump",
data: 3,
},
],
}, // 0
{
title: "In the sea of distributions",
content: `These are 3 of the biggest distributions, each with their strength and weaknesses.`,
choices: [
{
action: "jump",
data: 2,
text: `<h2 class="text-2xl">
<img src="/logos/debian-openlogo-nd.svg" alt="Debian logo" class="inline-block size-10" />
Debian
</h2>
<p>
Maximum stability.
</p>`,
},
{
action: "jump",
data: 3,
text: `<img src="/logos/fedora_default-horizontal_cropped.svg" alt="Fedora Linux logo" class="h-10" />
<p>
Balancing stability and up-to-date software.
</p>`,
},
{
action: "jump",
data: 4,
text: `<div id="archLogo"></div>
<p>
Bleeding edge software.
</p>`,
},
],
}, // 1
{
title: "Debian",
content: "",
choices: [
{
text: "Download",
action: "link",
data: "https://www.debian.org/",
},
],
}, // 2
{
title: "Fedora Linux",
content: "It is a Linux distribution which balances between stability and having up-to-date software.",
choices: [
{
text: "Continue",
action: "link",
data: getRelativeLocaleUrl("en", "distro/fedora/0"),
},
],
}, // 3
{
title: "Arch Linux",
content: "",
choices: [
{
text: "Continue",
action: "link",
data: "https://archlinux.org/",
},
],
}, // 4
];
export default distroQuizDialogs;
+72
View File
@@ -0,0 +1,72 @@
[[dialogs]]
title = "Let's pick a Linux distribution."
content = "Linux has many flavors, each with its own weakness and strength. Do you want to learn about the choices?"
[[dialogs.choices]]
text = "Give me the choices!"
action = "continue"
[[dialogs.choices]]
text = "Just recommend me one"
action = "jump"
data = 3
[[dialogs]]
title = "In the sea of distributions"
content = "These are 3 of the biggest distributions, each with their strength and weaknesses."
[[dialogs.choices]]
text = """
<h2 class="text-2xl">
<img src="/logos/debian-openlogo-nd.svg" alt="Debian logo" class="inline-block size-10" />
Debian
</h2>
<p>
Maximum stability.
</p>"""
action = "continue"
[[dialogs.choices]]
text = """
<img src="/logos/fedora_default-horizontal_cropped.svg" alt="Fedora Linux logo" class="h-10" />
<p>
Balancing stability and up-to-date software.
</p>"""
action = "jump"
data = 3
[[dialogs.choices]]
text = """
<div id="archLogo"></div>
<p>
Bleeding edge software.
</p>"""
action = "jump"
data = 4
[[dialogs]]
title = "Debian"
content = ""
[[dialogs.choices]]
text = "Download"
action = "link"
data = "https://www.debian.org/"
[[dialogs]]
title = "Fedora Linux"
content = "It is a Linux distribution which balances between stability and having up-to-date software."
[[dialogs.choices]]
text = "Continue"
action = "link"
data = "/en/distro/fedora/0/"
[[dialogs]]
title = "Arch Linux"
content = ""
[[dialogs.choices]]
text = "Continue"
action = "link"
data = "https://archlinux.org/"
+72
View File
@@ -0,0 +1,72 @@
[[dialogs]]
title = "การเลือกเจ้า Linux"
content = "Linux นั้นมีหลายเจ้า และก็มีข้อดีและข้อเสียต่างกันออกไป คุณต้องการที่จะเรียนรู้เกี่ยวกับตัวเลือกต่าง ๆ หรือไม่"
[[dialogs.choices]]
text = "เอาตัวเลือกมา!!!"
action = "continue"
[[dialogs.choices]]
text = "แนะนำมาอย่างเดียวก็พอ"
action = "jump"
data = 3
[[dialogs]]
title = "ในทะเลแห่งการแจกจ่าย Linux"
content = "นี่คือตัวเลือกที่ใหญ่ที่สุดสามตัว ซึ่งก็มีข้อดีและข้อเสียของมันเอง"
[[dialogs.choices]]
text = """
<h2 class="text-2xl">
<img src="/logos/debian-openlogo-nd.svg" alt="Debian logo" class="inline-block size-10" />
Debian
</h2>
<p>
เสถียรภาพสูงสุด
</p>"""
action = "continue"
[[dialogs.choices]]
text = """
<img src="/logos/fedora_default-horizontal_cropped.svg" alt="Fedora Linux logo" class="h-10" />
<p>
ความสมดุลระหว่างความเสถียรและซอฟท์แวร์ที่ใหม่
</p>"""
action = "jump"
data = 3
[[dialogs.choices]]
text = """
<div id="archLogo"></div>
<p>
ซอฟท์แวร์ใหม่ล่าสุด
</p>"""
action = "jump"
data = 4
[[dialogs]]
title = "Debian"
content = ""
[[dialogs.choices]]
text = "ดาวน์โหลด"
action = "link"
data = "https://www.debian.org/"
[[dialogs]]
title = "Fedora Linux"
content = "Linux เจ้านี้จะมีการสมดุลระหว่างความเสถียรและซอฟท์แวร์ที่สดใหม่"
[[dialogs.choices]]
text = "ดำเนินการต่อ"
action = "link"
data = "/th/distro/fedora/0/"
[[dialogs]]
title = "Arch Linux"
content = ""
[[dialogs.choices]]
text = "ดำเนินการต่อ"
action = "link"
data = "https://archlinux.org/"
+1
View File
@@ -0,0 +1 @@
continue = "Continue"
+1
View File
@@ -0,0 +1 @@
continue = "ดำเนินการต่อ"
+7 -7
View File
@@ -37,30 +37,30 @@ const defaultChoice: Choice = {
text: "Continue",
};
export function getChoiceElement(choice: Choice, sectionName: string, index: string) {
export function getChoiceElement(choice: Choice, sectionName: string, index: string, lang: string | undefined) {
switch (choice.action) {
case "link":
return `<a href="${choice.data}" class="button flex flex-col justify-center"
${choice.data.startsWith("http") ? ' target="_blank" rel="noopener noreferrer"' : ""}>
${choice.data.startsWith("http") ? ' target="_blank" rel="noreferrer"' : ""}>
${choice.text}
</a>`;
case "continue":
return `<a class="button flex flex-col justify-center"
href="${getRelativeLocaleUrl("en", `${sectionName}/${parseInt(index) + 1}`)}">
href="${getRelativeLocaleUrl(lang ?? "en", `${sectionName}/${parseInt(index) + 1}`)}">
${choice.text}
</a>`;
case "jump":
return `<a class="button flex flex-col justify-center"
href="${getRelativeLocaleUrl("en", `${sectionName}/${choice.data}`)}">
href="${getRelativeLocaleUrl(lang ?? "en", `${sectionName}/${choice.data}`)}">
${choice.text}
</a>`;
}
}
export function getChoices(choices: Choice[] | undefined, sectionName: string, index: string) {
export function getChoices(choices: Choice[] | undefined, sectionName: string, index: string, lang: string | undefined) {
if (choices === undefined) {
return getChoiceElement(defaultChoice, sectionName, index);
return getChoiceElement(defaultChoice, sectionName, index, lang);
}
return choices.map((v) => getChoiceElement(v, sectionName, index));
return choices.map((v) => getChoiceElement(v, sectionName, index, lang));
}
+16 -27
View File
@@ -1,9 +1,7 @@
---
import type { GetStaticPaths } from "astro";
import BasicLayout from "@/layouts/BasicLayout.astro";
import distroQuizDialogs from "@/data/distroquiz";
import { getRelativeLocaleUrl } from "astro:i18n";
import fedoraDialogs from "@/data/distro/en/fedora/fedora";
import { getCollection } from "astro:content";
export const getStaticPaths = (async () => {
@@ -25,15 +23,22 @@ export const getStaticPaths = (async () => {
const { lang } = Astro.params;
const docs = await getCollection("distroGuide");
const distroQuiz =
(await getCollection("distroQuiz")).find((v) => v.id === lang)?.data
.dialogs ?? [];
type Tree = { [key: string]: Tree | string };
const tree: Tree = {};
// Inspired from https://stackoverflow.com/a/62740661/14512055
for (const doc of docs) {
function buildTree(list: any[]) {
for (const doc of list) {
let ptr = tree;
const [_, ...slug] = doc.id.split("/");
const [docLang, ...slug] = doc.id.split("/");
if (docLang !== lang) continue;
const last = slug.pop() ?? "";
for (const part of slug) {
@@ -41,11 +46,14 @@ for (const doc of docs) {
}
ptr[last] = /[0-9]+/.test(last) ? doc.data.title : {};
}
}
for (let i = 0; i < fedoraDialogs.length; i++) {
// @ts-ignore
tree["fedora"][i.toString()] = fedoraDialogs[i].title;
buildTree(docs);
tree["distroquiz"] = {};
for (let i = 0; i < distroQuiz.length; i++) {
tree["distroquiz"][i.toString()] = distroQuiz[i].title;
}
function visualizeTree(tree: Tree, key: string | null, prefix: string): string {
@@ -57,7 +65,7 @@ function visualizeTree(tree: Tree, key: string | null, prefix: string): string {
if (typeof value === "string") {
children.push(`<li>
<a href="${`${lang}/distro/${prefix}${key}`}">${value}</a>
<a href="${`/${lang}/distro/${prefix}${key}`}">${value}</a>
</li>`);
} else {
subcategories.push(visualizeTree(value, key, `${prefix}${key}/`));
@@ -83,25 +91,6 @@ const visualization = visualizeTree(tree, null, "");
<BasicLayout title="Table of Contents">
<main class="mx-16 my-8">
<details id="distroquiz">
<summary>distroquiz</summary>
<ul>
{
distroQuizDialogs.map((v, i) => (
<li>
<a
href={getRelativeLocaleUrl(
lang,
`distroquiz/${i}`
)}
>
{v.title}
</a>
</li>
))
}
</ul>
</details>
<Fragment set:html={visualization} />
</main>
</BasicLayout>
+5 -3
View File
@@ -22,12 +22,12 @@ export const getStaticPaths = (async () => {
const { lang } = Astro.params;
const { doc } = Astro.props;
let contentDoc: CollectionEntry<"commonText" | "distroGuide"> = doc;
let contentDoc: CollectionEntry<"commonPages" | "distroGuide"> = doc;
const commonPrefix = "common/";
if (doc.data.aliasOf && doc.data.aliasOf.startsWith(commonPrefix)) {
const entry = await getEntry(
"commonText",
"commonPages",
`${lang}/${doc.data.aliasOf.substring(commonPrefix.length)}`
);
@@ -36,6 +36,8 @@ if (doc.data.aliasOf && doc.data.aliasOf.startsWith(commonPrefix)) {
}
}
const strings = await getEntry("strings", lang);
const { Content } = await render(contentDoc);
---
@@ -57,7 +59,7 @@ const { Content } = await render(contentDoc);
)}
class="button"
>
Continue
{strings?.data.continue ?? "Continue"}
</a>
</ChoiceList>
)
+52
View File
@@ -0,0 +1,52 @@
---
import TransitionLayout from "@/layouts/TransitionLayout.astro";
import { getChoices, type Choice } from "@/lib/tinyvn";
import type { GetStaticPaths, GetStaticPathsItem } from "astro";
import { getCollection } from "astro:content";
export const getStaticPaths = (async () => {
const questions = await getCollection("distroQuiz");
return questions
.map((langDoc) => {
return langDoc.data.dialogs.reduce((prev, curr, index) => {
const page: GetStaticPathsItem = {
params: {
lang: langDoc.id,
index,
},
props: curr,
};
return [...prev, page];
}, [] as GetStaticPathsItem[]);
})
.flat();
}) satisfies GetStaticPaths;
const { lang, index } = Astro.params;
const { title, content, choices } = Astro.props;
---
<TransitionLayout>
<main class="fill-screen-center" transition:animate="slide">
<div class="p-4 lg:max-w-[50vw] text-center flex flex-col gap-4">
<h1 class="text-5xl font-bold">{title}</h1>
<p set:html={content} />
<div
class="grid grid-flow-col auto-cols-fr gap-2"
set:html={getChoices(
choices as Choice[],
"distroquiz",
(index as number).toString(),
lang as string
)}
/>
</div>
</main>
</TransitionLayout>
<style>
body {
overflow: hidden;
}
</style>
-33
View File
@@ -1,33 +0,0 @@
---
import TransitionLayout from "@/layouts/TransitionLayout.astro";
import { getChoices, mapStaticPaths } from "@/lib/tinyvn";
import type { GetStaticPaths } from "astro";
import dialogs from "@/data/distro/en/fedora/fedora";
export const getStaticPaths = (() => {
return mapStaticPaths(dialogs);
}) satisfies GetStaticPaths;
const { index } = Astro.params;
const { title, content, choices } = Astro.props;
---
<TransitionLayout>
<main class="fill-screen-center" transition:animate="fade">
<div class="p-4 lg:max-w-[50vw] text-center flex flex-col gap-4">
<h1 class="text-5xl font-bold">{title}</h1>
<p set:html={content} />
<div
class="max-h-[60vh] grid md:grid-flow-col md:auto-cols-fr gap-2"
set:html={getChoices(choices, "distro/fedora", index)}
/>
</div>
</main>
</TransitionLayout>
<style>
body {
overflow-x: hidden;
overflow-y: auto;
}
</style>
-32
View File
@@ -1,32 +0,0 @@
---
import TransitionLayout from "@/layouts/TransitionLayout.astro";
import { getChoices, mapStaticPaths, type Dialog } from "@/lib/tinyvn";
import type { GetStaticPaths } from "astro";
import dialogs from "@/data/distroquiz";
export const getStaticPaths = (() => {
return mapStaticPaths(dialogs);
}) satisfies GetStaticPaths;
const { index } = Astro.params;
const { title, content, choices } = Astro.props;
---
<TransitionLayout>
<main class="fill-screen-center" transition:animate="slide">
<div class="p-4 lg:max-w-[50vw] text-center flex flex-col gap-4">
<h1 class="text-5xl font-bold">{title}</h1>
<p set:html={content} />
<div
class="grid grid-flow-col auto-cols-fr gap-2"
set:html={getChoices(choices, "distroquiz", index)}
/>
</div>
</main>
</TransitionLayout>
<style>
body {
overflow: hidden;
}
</style>
+6 -1
View File
@@ -77,7 +77,12 @@ const startLink = getRelativeLocaleUrl("en", "start");
&bull;
<a href={getRelativeLocaleUrl("en", "privacy")}>Privacy Policy</a>
</div>
<p>Made with &hearts; from lines-of-codes.</p>
<p>
Made with &hearts; from <a
href="https://github.com/lines-of-codes/"
target="_blank"
rel="noreferrer noopener">lines-of-codes</a>
</p>
</footer>
</BasicLayout>
-4
View File
@@ -1,10 +1,6 @@
---
import TransitionLayout from "@/layouts/TransitionLayout.astro";
import { getRelativeLocaleUrl } from "astro:i18n";
// export const prerender = false;
// const onMobile = Astro.request.headers.get("user-agent")?.match("Mobile");
---
<TransitionLayout
+101 -2
View File
@@ -1,9 +1,108 @@
---
import BasicLayout from "@/layouts/BasicLayout.astro";
import { getRelativeLocaleUrl } from "astro:i18n";
const startLink = getRelativeLocaleUrl("th", "start");
---
<BasicLayout>
<header>
<h1 class="text-4xl font-bold">การย้ายไป Linux</h1>
<header
class="min-h-[50vh] flex justify-center items-center flex-col gap-2 bg-amber-50 dark:bg-amber-950"
>
<h1
class="text-5xl leading-14 font-bold bg-gradient-to-r from-amber-700 to-amber-900 dark:from-amber-400 dark:to-amber-600 bg-clip-text text-transparent"
>
ย้ายไป Linux
</h1>
<p>เว็บไซต์นี้จะช่วยให้คุณเรียนรู้และติดตั้ง Linux</p>
<div>
<a href="#what">อะไร</a>
&bull;
<a href="#why">ทำไม</a>
&bull;
<a href={startLink} class="font-bold">เริ่มเลยดีกว่า</a>
</div>
</header>
<main>
<section id="what" class="border-t-2 border-amber-900">
<h2 class="text-blue-900 dark:text-blue-200">Linux คืออะไร</h2>
<p>
Linux เป็น<i>ครอบครัว</i>ของระบบปฏิบัติการที่มีแกนกลางเดียวกัน
โดยแกนกลางที่ว่า นั้นมีชื่อว่าเคอร์เนล (Kernel)
</p>
</section>
<section id="why">
<h2 class="mb-2 text-violet-900 dark:text-violet-200">
เหตุผลในการย้ายไป Linux
</h2>
<div class="grid grid-cols-2 gap-4 lg:max-w-[50vw]">
<div class="card">
<h3>ฟรี</h3>
<p>ซอฟท์แวร์ฟรีและเสรี สร้างอิสรภาพให้อุปกรณ์ของคุณ</p>
</div>
<div class="card">
<h3>ประสิทธิภาพ</h3>
<p>
ฟื้นคืนชีพอุปกรณ์เก่าของคุณ
และให้อุปกรณ์ปัจจุบันทำได้มากขึ้น
</p>
</div>
<div class="card">
<h3>อยู่ในการควบคุม</h3>
<p>
ควบคุมสิ่งที่อยู่บนอุปกรณ์ของคุณ ปรับแต่งให้ตรงสเป็ค
ให้อุปกรณ์เป็นของคุณอย่างแท้จริง
</p>
</div>
<div class="card">
<h3>ความเป็นส่วนตัว</h3>
<p>
เลือกว่าคุณต้องการที่จะแบ่งปันข้อมูลมากแค่ใหนเพื่อปรับปรุงซอฟท์แวร์ที่คุณใช้
</p>
</div>
</div>
</section>
<section id="start">
<h2 class="text-green-900 dark:text-green-200 mb-2">
หากคุณอยากลองแล้ว...
</h2>
<p>กดปุ่มด้านล่างเพื่อเริ่มต้นการผจญภัยในดินแดนเพนกวินได้เลย</p>
<a href={startLink} class="button mt-4">เริ่มต้นเลย!</a>
</section>
</main>
<footer class="text-center py-4 bg-slate-800 text-white">
<div>
<a href={getRelativeLocaleUrl("th", "contents")}>สารบัญ</a>
&bull;
<a href={getRelativeLocaleUrl("th", "privacy")}
>นโยบายความเป็นส่วนตัว</a
>
</div>
<p>
ทำด้วย &hearts; จาก <a
href="https://github.com/lines-of-codes/"
target="_blank">lines-of-codes</a
>
</p>
</footer>
</BasicLayout>
<style>
@reference "@/styles/global.css";
a:not(.button) {
@apply underline;
}
h2 {
@apply text-4xl font-bold;
}
h3 {
@apply text-3xl font-semibold;
}
section {
@apply flex justify-center items-center flex-col p-12;
}
</style>
+68
View File
@@ -0,0 +1,68 @@
---
import BasicLayout from "@/layouts/BasicLayout.astro";
---
<BasicLayout title="นโยบายความเป็นส่วนตัว">
<article class="mx-16 my-8">
<h1 class="text-5xl font-bold mb-6">นโยบายความเป็นส่วนตัว</h1>
<p>
นโยบายความเป็นส่วนตัวนี้ถูกเขียนในวันที่ 16 กันยายน พ.ศ.2568
มีผลทันที ถูกแปลมาจากฉบับภาษาอังกฤษ หากต้องการตรวจสอบต้นฉบับ
สามารถดูได้ที่
<a href="/en/privacy">ลิงค์นี้</a>
</p>
<h2>คำนิยาม</h2>
<p>"เรา" หมายถึงผู้ให้บริการเว็บไซต์</p>
<h2>ข้อมูลของคุณ</h2>
<p>เราจะไม่เก็บข้อมูลของคุณมากกว่าที่จำเป็น</p>
<h3>ความหมายของคำว่า "จำเป็น"</h3>
<p>
ข้อมูลของคุณจะถูกเก็บไว้เฉพาะเมื่อเซิร์ฟเวอร์จำเป็นต้องใช้ข้อมูลเหล่านั้นในการ
ประมวลผลคำขอและให้หน้าเว็บแก่คุณ
</p>
<h2>การเปลี่ยนแปลงนโยบาย</h2>
<p>
เมื่อนโยบายนี้ถูกแก้ไขและความหมายเปลี่ยนแปลงไป เช่น
การเปลี่ยนแปลงความหมายว่าเรานั้นเก็บและประมวลผลข้อมูลอย่างไร
จะมีการแสดงการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงในหน้าหลักของเว็บไซต์
การเปลี่ยนแปลงนโยบายนี้จะมีการแจ้งเตือนก่อนนโยบายใหม่มีผลอย่างน้อย
30 วัน
</p>
<p>
สิ่งที่จะไม่ถือว่าเป็นการแก้ไขที่เปลี่ยนความหมายคือการแก้ไขเล็กน้อยเช่นการชี้แจ้งข้อความที่ไม่ถูกต้อง
ที่จะไม่ส่งผลให้ความหมายโดยรวมเปลี่ยนและการแก้ไขคำผิดเล็กน้อย
</p>
<h2>ติดต่อ</h2>
<p>
หากคุณมีคำถามหรือคำแนะนำ คุณสามารถส่งอีเมลไปได้ที่ linesofcodes แอท
dailitation จุด xyz
</p>
</article>
</BasicLayout>
<style>
@reference "@/styles/global.css";
h2 {
@apply text-4xl font-bold mb-4;
}
h3 {
@apply text-3xl font-semibold;
}
p {
@apply my-4;
}
</style>
+22
View File
@@ -0,0 +1,22 @@
---
import TransitionLayout from "@/layouts/TransitionLayout.astro";
import { getRelativeLocaleUrl } from "astro:i18n";
---
<TransitionLayout
title="ยินดีต้อนรับ - ย้ายไป Linux"
description="ยินดีต้อนรับสู่การผจญภัยในดินแดนเพนกวินของคุณ"
>
<main class="fill-screen-center gap-2" transition:animate="slide">
<h1 class="text-5xl font-bold">ยินดีต้อนรับ</h1>
<p class="p-4 lg:max-w-[50vw] text-center">
ฉันยินดีที่คุณตัดสินใจที่จะลองใช้ Linux
โดยขึ้นอยู่กับความเร็วอินเทอร์เน็ตและความเร็ว ของอุปกรณ์ของคุณ
โปรดเตรียมเวลาไว้สองถึงสามชั่วโมงเพื่อดาวน์โหลด
ติดตั้งและเรียนรู้เกี่ยวกับ Linux
</p>
<a href={getRelativeLocaleUrl("th", "distroquiz/0")} class="button"
>โอเคเลย</a
>
</main>
</TransitionLayout>