astro/examples/docs
bholmesdev fbe129bf95 Squashed commit of the following:
commit fbab73c96e
Author: matthewp <matthewp@users.noreply.github.com>
Date:   Tue Mar 7 16:38:11 2023 +0000

    [ci] format

commit a206106098
Author: Matthew Phillips <matthew@skypack.dev>
Date:   Tue Mar 7 11:35:54 2023 -0500

    Expose the ssr manifest (#6435)

    * Expose the ssr manifest

    * Add changeset

    * Add types for virtual mod

commit 2751584387
Author: Princesseuh <Princesseuh@users.noreply.github.com>
Date:   Tue Mar 7 15:14:15 2023 +0000

    [ci] format

commit 694918a56b
Author: Erika <3019731+Princesseuh@users.noreply.github.com>
Date:   Tue Mar 7 16:12:21 2023 +0100

    Implement RFC "A core story for images" (#6344)

    * feat(assets): Add Vite plugin

    * feat(images): Set up Image component

    * fix(types): Attempt to fix type generation

    * Revert "fix(types): Attempt to fix type generation"

    This reverts commit 063aa276e2.

    * fix(image): Fix image types causing build to fail

    * feat(image): Implement client side part

    * feat(services): Allow arbitrary transforms parameters

    * fix(image): Fix paths and types

    * config(types): Update config types to provide completions for available services

    * feat(image): Add serving in dev

    * feat(image): Improve type error messages

    * refactor(image): Move sharp's parseParams to baseService

    * refactor(image): Skip work in dev for remote servies

    * feat(image): Add support for remote images

    * feat(image): Add squoosh service

    * chore: update export map

    * refactor(image): Abstract attributes handling by services

    * config(vercel): Remove test image service

    * feat(image): Support for relative images in Markdown (WIP)

    * feat(images): Add support for relative images in Markdown

    * feat(image): Update with RFC feedback

    * fix(image): Fix alt error on getImage

    * feat(image): Add support for assets validation through content collections

    * feat(image): Remove validateTransform

    * feat(image): Move to assets folder

    * fix(image): Fix package exports

    * feat(image): Add static imports references to virtual moduel

    * fix(image): Fix images from content collections not working when embedded

    * chore: lockfile

    * fix(markdown): Fix type

    * fix(images): Flag enhanced images behing an experimental flag

    * config(example): Update images example conifg

    * fix(image): Fix types

    * fix(image): Fix asset type for strict, allow arbritary input and output formats

    * chore: fix example check

    * feat(image): Emit assets for ESM imported images

    * Add initial core image tests (#6381)

    * feat(images): Make frontmatter extraction more generic than images for future

    * feat(image): Add support for building

    * fix(image): Fix types

    * fix(images): Fix compatibility with image integration

    * feat(images): Cuter generation stats

    * fix(images): Globals are unsafe, it turns out

    * fix(images): Only generate images if flag is enabled

    * fix(images): Only create `addStaticImage` in build

    * feat(images): Add SSR endpoint

    * fix(images): Only inject route in SSR

    * Add tests for SSR

    * Remove console.log

    * Updated lockfile

    * rename to satisfy the link gods

    * skip build tests for now

    * fix(images): Fix WASM files not being copied in dev

    * feat(images): Add quality presets

    * fix build tests running

    * Remove console.log

    * Add tests for getImage

    * Test local services

    * Test the content collections API

    * Add tests for quality

    * Skipping content collections test

    * feat(image): Add support for `~/assets` alias

    * test(image): Add tests for aliases in dev

    * Fix windows + content collections

    * test(image): Add tests for aliased images and images in Markdown

    * Fix markdown images being built

    * Should be posix join

    * Use the optimized image

    * fix test

    * Fixes windows smoke

    * fix(image): Nits

    * feat(images): Add automatic update for `env.d.ts` when experimental images are enabled

    * fix(images): Revert env.d.ts change if the user opted-out of the experimental image support

    * chore: remove bad image example project

    * feat(image): Rename `experimental.images` to `experimental.assets`

    * fix(images): Remove unused code in MDX integration

    * chore: Remove unrelated change

    * fix(images): Remove export from astro/components

    * Fix, esm import on Win

    * test(images): Add test for format

    * fix(images): Add `client-image.d.ts` to export map

    * chore: changeset

    * fix(images): Adjust with feedback, no more automatic refine, asset() -> image()

    * fix(images): Fix types

    * fix(images): Remove unnecessary spread

    * fix(images): Better types for parseUrl and transform

    * fix(images): Fix types

    * fix(images): Adjust from feedback

    * fix(images): Pass width and height through getHTMLAttributes even if they're not added by the uesr

    * fix(images): Recusirsively extract frontmatter assets

    * fix(images): Use a reduce instead

    * feat(images): Add support for data: URIs

    * chore: changeset

    * docs(images): Misc docs fixes

    * Update .changeset/gold-rocks-cry.md

    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

    * Update .changeset/gold-rocks-cry.md

    Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

    * Update packages/astro/src/@types/astro.ts

    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

    * Update packages/astro/src/assets/services/service.ts

    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

    * Update packages/astro/src/assets/services/service.ts

    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

    * Update packages/astro/src/assets/services/service.ts

    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

    * Update packages/astro/src/assets/types.ts

    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

    * Update packages/astro/src/assets/types.ts

    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

    ---------

    Co-authored-by: Matthew Phillips <matthew@skypack.dev>
    Co-authored-by: Matthew Phillips <matthew@matthewphillips.info>
    Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
    Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

commit 377530a810
Author: ematipico <ematipico@users.noreply.github.com>
Date:   Tue Mar 7 13:43:21 2023 +0000

    [ci] format

commit fe88f89512
Author: Emanuele Stoppa <my.burning@gmail.com>
Date:   Tue Mar 7 13:41:24 2023 +0000

    chore: use directive `@ts-expect-error` instead of `@ts-ignore` (#6429)

commit e1858e6334
Author: ematipico <ematipico@users.noreply.github.com>
Date:   Tue Mar 7 06:57:52 2023 +0000

    [ci] format

commit 75921b3cd9
Author: Emanuele Stoppa <my.burning@gmail.com>
Date:   Tue Mar 7 06:55:41 2023 +0000

    feat(cli): add `--watch` to `astro check` command (#6356)

    * feat(cli): add `--watch` to `astro check` command

    * chore: refactor in a leaner way, logic not changed

    * chore: lint

    * chore: revert changes in sync command

    * chore: tweak server settings

    * test: add one test case

    * chore: increase timeout

    * test: predictable testing

    * chore: add changeset

    * chore: code suggestions

    * code suggestions

    * chore: use directly `chokidar`

    * chore: tweak code

    * fix: open documents first

    * chore: disable test

    * chore: code suggestions

    * chore: code suggestions

    * Apply suggestions from code review

    Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com>

    * code suggestions

    * chore: rebase

    ---------

    Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com>

commit 1291afc09d
Author: Bjorn Lu <bjornlu.dev@gmail.com>
Date:   Tue Mar 7 14:50:34 2023 +0800

    Fix changeset run (#6442)

commit 00a0af7ed4
Author: Bjorn Lu <bjornlu.dev@gmail.com>
Date:   Tue Mar 7 10:52:47 2023 +0800

    Move benchmark package and update changeset config (#6433)

commit af05a4fa46
Author: Nate Moore <natemoo-re@users.noreply.github.com>
Date:   Mon Mar 6 14:06:33 2023 -0600

    Update README.md (#6437)

    * Update README.md

    * Update README.md

commit 8ebf4b7481
Author: Nate Moore <natemoo-re@users.noreply.github.com>
Date:   Mon Mar 6 14:03:33 2023 -0600

    chore: update branding assets (#6436)

commit afbbc4d5bf
Author: Erika <3019731+Princesseuh@users.noreply.github.com>
Date:   Mon Mar 6 19:57:16 2023 +0100

    Update compilation target for Node 16 (#6213)

    * config(esbuild): Update esbuild target to node16

    * config(package): Update root package.json node engine

    * config(tsconfig): Update all the tsconfigs module and targets

    * chore: changeset

    * chore: remove unneeded file

commit 18acae3edc
Author: Sarah Rainsberger <sarah@rainsberger.ca>
Date:   Mon Mar 6 14:36:40 2023 -0400

    [error docs] update link for client-side scripts (#6423)

commit 8b49d1781d
Author: ematipico <ematipico@users.noreply.github.com>
Date:   Mon Mar 6 17:03:18 2023 +0000

    [ci] format

commit a4a74ab70c
Author: Emanuele Stoppa <my.burning@gmail.com>
Date:   Mon Mar 6 16:58:56 2023 +0000

    feat(cli): add help flags to various commands (#6394)

    Co-authored-by: Happydev <81974850+MoustaphaDev@users.noreply.github.com>

commit b087b83fe2
Author: Dennis Morello <dennismorello@gmail.com>
Date:   Mon Mar 6 17:38:42 2023 +0100

    Add getStaticPaths type helpers to infer params and props (#6150)

    * feat(astro): add InferGetStaticParamsType and InferGetStaticPropsType type helpers

    * chore(astro): added changeset

commit 19fe4cb629
Author: Houston (Bot) <108291165+astrobot-houston@users.noreply.github.com>
Date:   Mon Mar 6 08:30:38 2023 -0800

    [ci] release (#6414)

    Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-07 12:59:10 -05:00
..
.vscode [ci] format 2022-03-22 03:16:42 +00:00
public Switch examples favicon to use svg (#4331) 2022-08-17 15:19:04 -05:00
src Squashed commit of the following: 2023-03-07 12:59:10 -05:00
.gitignore Add .astro/ to .gitignore in example projects (#5841) 2023-01-12 11:26:13 -05:00
astro.config.mjs Docs example: use HTTPS for site in astro.config.mjs (#5603) 2022-12-15 15:35:43 +01:00
package.json Squashed commit of the following: 2023-03-07 12:59:10 -05:00
README.md Fixes example README links to open in codespaces (#6346) 2023-02-23 11:20:19 -06:00
sandbox.config.json Adding CodeSandbox config file to all the "next" examples (#1744) 2021-11-05 10:41:37 -05:00
tsconfig.json Migrate blog and docs starters to content collections (#5858) 2023-01-18 08:43:58 -05:00

Astro Starter Kit: Docs Site

npm create astro@latest -- --template docs

Open in StackBlitz Open with CodeSandbox Open in GitHub Codespaces

🧑‍🚀 Seasoned astronaut? Delete this file. Have fun!

docs

Features

  • Full Markdown support
  • Responsive mobile-friendly design
  • Sidebar navigation
  • Search (powered by Algolia)
  • Multi-language i18n
  • Automatic table of contents
  • Automatic list of contributors
  • (and, best of all) dark mode

🧞 Commands

All commands are run from the root of the project, from a terminal:

Command Action
npm install Installs dependencies
npm run dev Starts local dev server at localhost:3000
npm run build Build your production site to ./dist/
npm run preview Preview your build locally, before deploying
npm run astro ... Run CLI commands like astro add, astro check
npm run astro --help Get help using the Astro CLI

To deploy your site to production, check out our Deploy an Astro Website guide.

👀 Want to learn more?

Feel free to check our documentation or jump into our Discord server.

Customize This Theme

Site metadata

src/config.ts contains several data objects that describe metadata about your site like title, description, default language, and Open Graph details. You can customize these to match your project.

CSS styling

The theme's look and feel is controlled by a few key variables that you can customize yourself. You'll find them in the src/styles/theme.css CSS file.

If you've never worked with CSS variables before, give MDN's guide on CSS variables a quick read.

This theme uses a "cool blue" accent color by default. To customize this for your project, change the --theme-accent variable to whatever color you'd like:

/* src/styles/theme.css */
:root {
  color-scheme: light;
-  --theme-accent: hsla(var(--color-blue), 1);
+  --theme-accent: hsla(var(--color-red), 1);   /* or: hsla(#FF0000, 1); */

Page metadata

Astro uses frontmatter in Markdown pages to choose layouts and pass properties to those layouts. If you are using the default layout, you can customize the page in many different ways to optimize SEO and other things. For example, you can use the title and description properties to set the document title, meta title, meta description, and Open Graph description.

---
title: Example title
description: Really cool docs example that uses Astro
layout: ../../layouts/MainLayout.astro
---

# Page content...

For more SEO related properties, look at src/components/HeadSEO.astro

Sidebar navigation

The sidebar navigation is controlled by the SIDEBAR variable in your src/config.ts file. You can customize the sidebar by modifying this object. A default, starter navigation has already been created for you.

export const SIDEBAR = {
  en: [
    { text: "Section Header", header: true },
    { text: "Introduction", link: "en/introduction" },
    { text: "Page 2", link: "en/page-2" },
    { text: "Page 3", link: "en/page-3" },

    { text: "Another Section", header: true },
    { text: "Page 4", link: "en/page-4" },
  ],
};

Note the top-level en key: This is needed for multi-language support. You can change it to whatever language you'd like, or add new languages as you go. More details on this below.

Multiple Languages support

The Astro docs template supports multiple languages out of the box. The default theme only shows en documentation, but you can enable multi-language support features by adding a second language to your project.

To add a new language to your project, you'll want to extend the current src/content/docs/[lang]/... layout:

 📂 src/content/docs
 ┣ 📂 en
 ┃ ┣ 📜 page-1.md
 ┃ ┣ 📜 page-2.md
 ┃ ┣ 📜 page-3.astro
+ ┣ 📂 es
+ ┃ ┣ 📜 page-1.md
+ ┃ ┣ 📜 page-2.md
+ ┃ ┣ 📜 page-3.astro

You'll also need to add the new language name to the KNOWN_LANGUAGES map in your src/config.ts file. This will enable your new language switcher in the site header.

// src/config.ts
export const KNOWN_LANGUAGES = {
  English: 'en',
+  Spanish: 'es',
};

Last step: you'll need to add a new entry to your sidebar, to create the table of contents for that language. While duplicating every page might not sound ideal to everyone, this extra control allows you to create entirely custom content for every language.

Make sure the sidebar link value points to the correct language!

// src/config.ts
export const SIDEBAR = {
  en: [
    { text: 'Section Header', header: true, },
    { text: 'Introduction', link: 'en/introduction' },
    // ...
  ],
+  es: [
+    { text: 'Encabezado de sección', header: true, },
+    { text: 'Introducción', link: 'es/introduction' },
+    // ...
+  ],
};

// ...

If you plan to use Spanish as the default language, you just need to modify the redirect path in src/pages/index.astro:

<script>
- window.location.pathname = `/en/introduction`;
+ window.location.pathname = `/es/introduction`;
</script>

You can also remove the above script and write a landing page in Spanish instead.

What if I don't plan to support multiple languages?

That's totally fine! Not all projects need (or can support) multiple languages. You can continue to use this theme without ever adding a second language.

If that single language is not English, you can just replace en in directory layouts and configurations with the preferred language.

Search (Powered by Algolia)

Algolia offers a free service to qualified open source projects called DocSearch. If you are accepted to the DocSearch program, provide your API Key & index name in src/config.ts and a search box will automatically appear in your site header.

Note that Aglolia and Astro are not affiliated. We have no say over acceptance to the DocSearch program.

If you'd prefer to remove Algolia's search and replace it with your own, check out the src/components/Header.astro component to see where the component is added.