diff options
Diffstat (limited to 'examples/docs/src/pages')
-rw-r--r-- | examples/docs/src/pages/en/example.md (renamed from examples/docs/src/pages/example.md) | 6 | ||||
-rw-r--r-- | examples/docs/src/pages/en/getting-started.md | 190 | ||||
-rw-r--r-- | examples/docs/src/pages/en/index.astro | 5 | ||||
-rw-r--r-- | examples/docs/src/pages/en/introduction.md (renamed from examples/docs/src/pages/index.md) | 3 | ||||
-rw-r--r-- | examples/docs/src/pages/getting-started.md | 59 | ||||
-rw-r--r-- | examples/docs/src/pages/index.astro | 24 |
6 files changed, 225 insertions, 62 deletions
diff --git a/examples/docs/src/pages/example.md b/examples/docs/src/pages/en/example.md index 4de84789b..a5deeaff9 100644 --- a/examples/docs/src/pages/example.md +++ b/examples/docs/src/pages/en/example.md @@ -1,6 +1,6 @@ --- title: Markdown Example -layout: ../layouts/Main.astro +layout: ~/layouts/MainLayout.astro --- This is a fully-featured page, written in Markdown! @@ -17,7 +17,9 @@ Nam quam dolor, pellentesque sed odio euismod, feugiat tempus tellus. Quisque ar ```markdown --- -layout: ../layouts/Main.astro +title: Markdown Page! +lang: en +layout: ~/layouts/MainLayout.astro --- # Markdown example diff --git a/examples/docs/src/pages/en/getting-started.md b/examples/docs/src/pages/en/getting-started.md new file mode 100644 index 000000000..33494432c --- /dev/null +++ b/examples/docs/src/pages/en/getting-started.md @@ -0,0 +1,190 @@ +--- +title: Getting Started +layout: ~/layouts/MainLayout.astro +--- + +This template already provides your pages with a side bar navigation (on the left) for your pages, and a content navigation (on the right) for your sections. + +## Page navigation + +The page navigation, through the side bar on the left, needs to be manually updated. Open the `config.ts` file and you will find the following structure: + +```ts +export const SIDEBAR = { + en: [ + { text: 'Getting Started', header: true }, + { text: 'Introduction', link: 'en/introduction' }, + { text: 'Getting Started', link: 'en/getting-started' }, + { text: 'Example', link: 'en/example' }, + ], + es: [ + { text: 'Empezando', header: true }, + { text: 'Introducción', link: 'es/introduction' }, + { text: 'Empezando', link: 'es/getting-started' }, + { text: 'Ejemplo', link: 'es/example' }, + ], + fr: [ + { text: 'Commencer', header: true }, + { text: 'Introduction', link: 'fr/introduction' }, + { text: 'Commencer', link: 'fr/getting-started' }, + { text: 'Exemple', link: 'fr/example' }, + ], +}; +``` + +The sidebar supports many languages, and each language has items to display, and pages to link to, allowing for a truly native experience for international users. You can change this file to match the pages you want to display, the object with the `{ header: true, ... }` set to true will act as a section title and cannot contain a link. + +The page navigation is generated in the `src/components/LeftSidebar/LeftSidebar.astro`, so if you want to change the depth of elements displayed, styles, etc, that's the place to go. + +## Section navigation + +The section navigation, through the side bar on the right, is automatically generated by the `src/components/RightSidebar/RightSidebar.astro` file, it uses the meta-data from markdown files to generate the structure you see. + +By default only elements from depth 2 to 5 will be displayed, and at the moment doesn't work for `.astro files`. + +## Other Components + +### Footer + +You can edit your footer here `src/components/Footer/Footer.astro`, at the moment it is composed of a list of avatars. You can generate your own avatar [here](https://getavataaars.com/) and replace the ones from `src/components/Footer/AvatarList.astro`. + +### Theme + +The `src/components/RightSidebar/ThemeToggleButton.tsx` is only responsible for applying the theme, to change the theme colors see `public/theme.css` + +## Multiple Languages + +By default the Astro docs template encourages writing your docs in mutliple languages, it also encourages writing your docs in a specific file structure + +``` +📦pages + ┣ 📂en + ┃ ┣ 📜example.md + ┃ ┣ 📜getting-started.md + ┃ ┣ 📜index.astro + ┃ ┗ 📜introduction.md + ┣ 📂es + ┃ ┣ 📜example.md + ┃ ┣ 📜getting-started.md + ┃ ┣ 📜index.astro + ┃ ┗ 📜introduction.md + ┣ 📂fr + ┃ ┣ 📜example.md + ┃ ┣ 📜getting-started.md + ┃ ┣ 📜index.astro + ┃ ┗ 📜introduction.md + ┗ 📜index.astro +``` + +each folder within the `pages/` folder represents a language, to add new languages, you will need to create a new langauge folder, +add the langauges name to the `LANGUAGE_NAMES` variable in the [`languages.ts`](../../languages.ts) file, and add new sidebar links corrosponding to the new language. E.g. Adding Deutsch as a supported language + +1. Create the `de/` folder in the pages directory + +``` +📦pages + ┣ 📂en + ┃ ┣ 📜example.md + ┃ ┣ 📜getting-started.md + ┃ ┣ 📜index.astro + ┃ ┗ 📜introduction.md + ┣ 📂de + ┃ ┣ 📜example.md + ┃ ┣ 📜getting-started.md + ┃ ┣ 📜index.astro + ┃ ┗ 📜introduction.md + ┗ 📜index.astro +``` + +2. Add Deutsch to the `LANGUAGE_NAMES` variable in the [`languages.ts`](../../languages.ts) file + +```ts +// src/languages.ts +export const LANGUAGE_NAMES = { + English: 'en', + Deutsch: 'de', +}; + +// ... +``` + +3. Add Deutch as a localized language for the SIDEBAR + +```ts +// src/config.ts +export const SIDEBAR = { + en: [ + { text: 'Getting Started', header: true }, + { text: 'Introduction', link: 'en/introduction' }, + { text: 'Getting Started', link: 'en/getting-started' }, + { text: 'Example', link: 'en/example' }, + ], + de: [ + { text: 'Einstieg', header: true }, + { text: 'Einführung', link: 'de/introduction' }, + { text: 'Einstieg', link: 'de/getting-started' }, + { text: 'Beispiel', link: 'de/example' }, + ], +}; + +// ... +``` + +> _**Note**: make sure the sidebar links point to the proper language folder_ + +<!-- , but if you are unable to properly support multiple languages, you can disable multiple languages, you set the `DISABLE_MULTIPLE_LANGUAGES` variable in the [`config.ts`](../../config.ts) file to `true`, but you still need to change and tweak a couple more things. + +After settings `DISABLE_MULTIPLE_LANGUAGES` you can now move the pages from the language folder you wish to use, e.g. I speak english, so, I would delete every other folders and files in the [`pages/`](../) folder except for the [`en/`](./) folder, I would then move the files from the [`en/`](./) folder to the [`pages/`](../) folder, delete all `index.astro` files, and finally delete the [`en/`](./) folder. + +The file structure will look like this once you are done, + +``` +📦src + ┣ 📂components + ┃ ┣ ... + ┣ 📂layouts + ┃ ┗ 📜MainLayout.astro + ┣ 📂pages + ┃ ┣ 📜example.md + ┃ ┣ 📜getting-started.md + ┃ ┗ 📜introduction.md + ┣ 📜config.ts + ┗ 📜languages.ts +``` + +You will then need to rename `introductions.md` to `index.md`, and reorganize the `SIDEBAR` variable in the [`config.ts`](../../config.ts) file to resemble something like this (remember to change the links, since the `en/` folder has been deleted), + +```ts +export const SIDEBAR = [ + // index.md is the homepage, so, you don't need to set a sidebar link + { text: 'Introduction', header: true }, + { text: 'Getting Started', link: 'getting-started' }, + { text: 'Example', link: 'example' }, +] +``` + +and that's it. --> + +## Algolia DocSearch + +[Algolia](https://www.algolia.com/) offers [DocSearch](https://docsearch.algolia.com/), a _"State-of-the-art search for technical documentation"_. We use DocSearch for the Astro docs as it's a great documentation search engine, to make things setting up docs easier we built it into the docs template, you can setup DocSearch for your site by following these instructions, ... + +### 🛠 Configuration + +... + +## Documentation + +For more information on how to use Astro components, check the documentation pages: + +- [Quick Start](https://docs.astro.build/quick-start) +- [astro.config.mjs](https://docs.astro.build/reference/configuration-reference) +- [API](https://docs.astro.build/reference/api-reference) +- [Command Line Interface](https://docs.astro.build/reference/cli-reference) +- [Collections](https://docs.astro.build/core-concepts/collections) +- [Development Server](https://docs.astro.build/reference/dev/) +- [Markdown](https://docs.astro.build/guides/markdown-content) +- [Publishing Astro components](https://docs.astro.build/guides/publish-to-npm) +- [Renderers](https://docs.astro.build/reference/renderer-reference) +- [Styling](https://docs.astro.build/guides/styling) +- [.astro Syntax](https://docs.astro.build/core-concepts/astro-components) diff --git a/examples/docs/src/pages/en/index.astro b/examples/docs/src/pages/en/index.astro new file mode 100644 index 000000000..5731a3976 --- /dev/null +++ b/examples/docs/src/pages/en/index.astro @@ -0,0 +1,5 @@ +--- +import REDIRECT from "../index.astro"; +--- + +<REDIRECT />
\ No newline at end of file diff --git a/examples/docs/src/pages/index.md b/examples/docs/src/pages/en/introduction.md index cd5ce6454..7b3142f71 100644 --- a/examples/docs/src/pages/index.md +++ b/examples/docs/src/pages/en/introduction.md @@ -1,6 +1,6 @@ --- title: Hello, Documentation! -layout: ../layouts/Main.astro +layout: ~/layouts/MainLayout.astro --- <img src="https://github.com/snowpackjs/astro/blob/main/assets/social/banner.png?raw=true" alt="Astro" width="638" height="320" > @@ -39,6 +39,7 @@ The default Astro project has the following `scripts` in the `/package.json` fil ```json { "scripts": { + "start": "astro dev", "dev": "astro dev", "build": "astro build", "preview": "astro preview" diff --git a/examples/docs/src/pages/getting-started.md b/examples/docs/src/pages/getting-started.md deleted file mode 100644 index ab9c79617..000000000 --- a/examples/docs/src/pages/getting-started.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Getting Started -layout: ../layouts/Main.astro ---- - -This template already provides your pages with a side bar navigation (on the left) for your pages, and a content navigation (on the right) for your sections. - -## Page navigation - -The page navigation, through the side bar on the left, needs to be manually updated. Open the `config.ts` file and you will find the following structure: - -```ts -export const sidebar = [ - { - text: 'Introduction', - link: '', // No leading slash needed, so this links to the homepage - children: [ - { text: 'Getting Started', link: 'getting-started' }, - { text: 'Example', link: 'example' }, - ], - }, -]; -``` - -You can change this file to match the pages you want to display, the items within `children` can also have children elements, but only the first level and second levels will be displayed. - -The page navigation is generated in the `src/components/SiteSidebar.astro`, so if you want to change the depth of elements displayed, styles, etc, that's the place to go. - -## Section navigation - -The section navigation, through the side bar on the right, is automatically generated by the `src/components/DocSidebar.tsx` file, it uses the meta-data from markdown files to generate the structure you see. - -By default only elements from depth 2 to 5 will be displayed, and at the moment doesn't work for `.astro files`. - -## Other Components - -### Footer - -You can edit your footer here `src/components/ArticleFooter.astro`, at the moment it is composed of a list of avatars. You can generate your own avatar [here](https://getavataaars.com/) and replace the ones from `AvatarList.astro`. - -### Theme - -The `src/components/ThemeToggle.tsx` is only responsible for applying the theme, to change the theme colors see `public/theme.css` - -## Documentation - -For more information on how to use Astro components, check the documentation pages: - -- [Quick Start](https://docs.astro.build/quick-start) -- [astro.config.mjs](https://docs.astro.build/reference/configuration-reference) -- [API](https://docs.astro.build/reference/api-reference) -- [Command Line Interface](https://docs.astro.build/reference/cli-reference) -- [Collections](https://docs.astro.build/core-concepts/collections) -- [Development Server](https://docs.astro.build/reference/dev/) -- [Markdown](https://docs.astro.build/guides/markdown-content) -- [Publishing Astro components](https://docs.astro.build/guides/publish-to-npm) -- [Renderers](https://docs.astro.build/reference/renderer-reference) -- [Styling](https://docs.astro.build/guides/styling) -- [.astro Syntax](https://docs.astro.build/core-concepts/astro-components) diff --git a/examples/docs/src/pages/index.astro b/examples/docs/src/pages/index.astro new file mode 100644 index 000000000..f5a8fd318 --- /dev/null +++ b/examples/docs/src/pages/index.astro @@ -0,0 +1,24 @@ +--- +import Layout from '../layouts/MainLayout.astro'; +import { KNOWN_LANGUAGES } from "../languages"; +--- +<div id="known_languages" hidden>{KNOWN_LANGUAGES.join(",")}</div> +<script> + // WIP: trigger a client-side redirect based on the browser language. + // A vercel.json redirect is enforced in production, so no user should ever see this page. + // Remove the vercel.json redirect when this is ready. + const KNOWN_LANGUAGES = document.querySelector("#known_languages")?.textContent?.split(",") ?? ['bg', 'de','en','es','fi','nl','pt-br','zh-CN','zh-TW', 'fr']; + let newLangWithRegion = (window.navigator.userLanguage || window.navigator.language || 'en-US').substr(0, 5); + let newLang = newLangWithRegion.substr(0, 2); + + let langPathRegex = new RegExp(`\/(${KNOWN_LANGUAGES.join("|")})\/`); + let actualDest = window.location.pathname.replace(langPathRegex, "/"); + if (actualDest == "/") actualDest = `/introduction`; + if (KNOWN_LANGUAGES.includes(newLangWithRegion)) { + window.location.pathname = '/' + newLangWithRegion + actualDest; + } else if (KNOWN_LANGUAGES.includes(newLang)) { + window.location.pathname = '/' + newLang + actualDest; + } else { + window.location.pathname = actualDest; + } +</script> |