├── .github └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── docs ├── .gitignore ├── .vscode │ ├── extensions.json │ └── launch.json ├── README.md ├── astro.config.mjs ├── package.json ├── public │ ├── blog-placeholder-about.jpg │ └── favicon.svg ├── src │ ├── assets │ │ ├── logo-dark.svg │ │ └── logo-light.svg │ ├── components │ │ ├── Card.astro │ │ ├── Footer.astro │ │ ├── LinkWithIcon.astro │ │ └── SponsorButton.astro │ ├── content.config.ts │ ├── content │ │ ├── i18n │ │ │ ├── en.json │ │ │ └── es.json │ │ └── pages │ │ │ ├── es │ │ │ ├── index.mdx │ │ │ └── posts │ │ │ │ └── markdown-style-guide.md │ │ │ ├── index.mdx │ │ │ ├── notes.mdx │ │ │ ├── podcasts.mdx │ │ │ ├── posts.mdx │ │ │ ├── posts │ │ │ ├── draft.md │ │ │ ├── markdown-style-guide.md │ │ │ └── redirect.mdx │ │ │ ├── projects.mdx │ │ │ ├── sponsors-list.mdx │ │ │ ├── streams.mdx │ │ │ └── talks.mdx │ └── pages │ │ └── test-page.astro ├── tsconfig.json └── uno.config.ts ├── eslint.config.js ├── package.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── src ├── components │ ├── DraftContentNotice.astro │ ├── FallbackContentNotice.astro │ ├── Footer.astro │ ├── Head.astro │ ├── Header.astro │ ├── LanguageSelect.astro │ ├── ListPosts.astro │ ├── ListProjects.astro │ ├── NavBar.astro │ ├── Page.astro │ ├── ScrollToTop.astro │ ├── SiteTitle.astro │ ├── SubNav.astro │ ├── Toc.astro │ ├── TocItem.astro │ ├── ToggleTheme.astro │ ├── VitessePage.astro │ └── WrapperPost.astro ├── expressive-code.d.ts ├── expressive-code.mjs ├── i18n.d.ts ├── index.ts ├── integrations │ ├── expressive-code │ │ ├── hast.d.ts │ │ ├── hast.mjs │ │ ├── index.ts │ │ ├── theming.ts │ │ └── translations.ts │ ├── shared │ │ ├── locale-to-lang.ts │ │ ├── path-to-locale.ts │ │ └── slug-to-locale.ts │ ├── sitemap.ts │ └── virtual-user-config.ts ├── internal.ts ├── loaders.ts ├── locals.d.ts ├── locals.ts ├── logics.ts ├── plugins │ └── rehype-toc.ts ├── props.ts ├── routes │ ├── common.astro │ ├── og.common.ts │ ├── ssr │ │ ├── 404.astro │ │ ├── index.astro │ │ └── og.ts │ └── static │ │ ├── 404.astro │ │ ├── index.astro │ │ └── og.ts ├── schema.ts ├── schemas │ ├── components.ts │ ├── expressive-code.ts │ ├── favicon.ts │ ├── head.ts │ ├── i18n.ts │ ├── logo.ts │ ├── navbar.ts │ ├── site-title.ts │ └── social.ts ├── styles │ ├── main.css │ ├── markdown.css │ └── prose.css ├── theme.ts ├── translations │ ├── en.json │ ├── es.json │ └── index.ts ├── types.ts ├── utils │ ├── base.ts │ ├── create-path-formatter.ts │ ├── create-translation-system.ts │ ├── error-map.ts │ ├── format-path.ts │ ├── head.ts │ ├── i18n.ts │ ├── localized-url.ts │ ├── navigation.ts │ ├── og.ts │ ├── path.ts │ ├── plugins.ts │ ├── route-data.ts │ ├── routing.ts │ ├── slugs.ts │ ├── toc.ts │ ├── translations-fs.ts │ ├── translations.ts │ ├── types.ts │ ├── user-config.ts │ ├── validate-logo-imports.ts │ └── vitesse-page.ts ├── virtual-internal.d.ts └── virtual.d.ts ├── test ├── basics │ ├── localized-url.test.ts │ └── vitest.config.ts ├── snapshot-serializer-astro-error.ts ├── test-config.ts ├── test-plugin-utils.ts └── test-utils.ts ├── tsconfig.json ├── uno.config.ts ├── vitest.config.ts └── vitest.workspace.ts /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | pull_request: 9 | branches: 10 | - main 11 | 12 | jobs: 13 | lint: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: pnpm/action-setup@v4 18 | with: 19 | run_install: false 20 | - uses: actions/setup-node@v4 21 | with: 22 | node-version: lts/* 23 | cache: pnpm 24 | 25 | - run: pnpm i -g @antfu/ni 26 | - run: nci 27 | - name: Generate docs types 28 | working-directory: docs 29 | run: pnpm astro sync 30 | - run: nr lint 31 | - run: nr typecheck 32 | 33 | test: 34 | runs-on: ${{ matrix.os }} 35 | 36 | strategy: 37 | matrix: 38 | node: [lts/*] 39 | os: [ubuntu-latest, windows-latest, macos-latest] 40 | fail-fast: false 41 | 42 | steps: 43 | - uses: actions/checkout@v4 44 | - uses: pnpm/action-setup@v4 45 | with: 46 | run_install: false 47 | - name: Set node ${{ matrix.node }} 48 | uses: actions/setup-node@v4 49 | with: 50 | node-version: ${{ matrix.node }} 51 | cache: pnpm 52 | 53 | - run: pnpm i -g @antfu/ni 54 | - run: nci 55 | - run: nr test 56 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | permissions: 4 | id-token: write 5 | contents: write 6 | 7 | on: 8 | push: 9 | tags: 10 | - 'v*' 11 | 12 | jobs: 13 | release: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | with: 18 | fetch-depth: 0 19 | - uses: pnpm/action-setup@v4 20 | - uses: actions/setup-node@v4 21 | with: 22 | node-version: lts/* 23 | registry-url: https://registry.npmjs.org/ 24 | 25 | - run: pnpm dlx changelogithub 26 | env: 27 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 28 | 29 | - run: pnpm install 30 | - run: pnpm publish -r --access public --no-git-checks 31 | env: 32 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 33 | NPM_CONFIG_PROVENANCE: true 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .cache 2 | .DS_Store 3 | .idea 4 | *.log 5 | *.tgz 6 | coverage 7 | dist 8 | lib-cov 9 | logs 10 | node_modules 11 | temp 12 | .astro 13 | src/env.d.ts 14 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Astro generates this during tests, but we want to ignore it. 2 | src/env.d.ts 3 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | ignore-workspace-root-check=true 2 | shell-emulator=true 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | // Disable the default formatter, use eslint instead 3 | "prettier.enable": false, 4 | "editor.formatOnSave": false, 5 | 6 | // Auto fix 7 | "editor.codeActionsOnSave": { 8 | "source.fixAll.eslint": "explicit", 9 | "source.organizeImports": "never" 10 | }, 11 | 12 | // Silent the stylistic rules in you IDE, but still auto fix them 13 | "eslint.rules.customizations": [ 14 | { "rule": "style/*", "severity": "off" }, 15 | { "rule": "*-indent", "severity": "off" }, 16 | { "rule": "*-spacing", "severity": "off" }, 17 | { "rule": "*-spaces", "severity": "off" }, 18 | { "rule": "*-order", "severity": "off" }, 19 | { "rule": "*-dangle", "severity": "off" }, 20 | { "rule": "*-newline", "severity": "off" }, 21 | { "rule": "*quotes", "severity": "off" }, 22 | { "rule": "*semi", "severity": "off" } 23 | ], 24 | 25 | // Enable eslint for all supported languages 26 | "eslint.validate": [ 27 | "javascript", 28 | "javascriptreact", 29 | "typescript", 30 | "typescriptreact", 31 | "vue", 32 | "html", 33 | "markdown", 34 | "json", 35 | "jsonc", 36 | "yaml" 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Please refer to https://github.com/adrian-ub/contribute 2 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Adrián UB 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # astro-vitesse 2 | 3 | [![npm version][npm-version-src]][npm-version-href] 4 | [![npm downloads][npm-downloads-src]][npm-downloads-href] 5 | [![JSDocs][jsdocs-src]][jsdocs-href] 6 | [![License][license-src]][license-href] 7 | 8 | Build beautiful, accessible, high-performance blog websites with Astro 9 | 10 | > [!IMPORTANT] 11 | > This project is still in development and not ready for production use. 12 | 13 | ## Sponsors 14 | 15 |

16 | 17 | 18 | 19 |

20 | 21 | ## License 22 | 23 | [MIT](./LICENSE) License © 2024-PRESENT [Adrián UB](https://github.com/adrian-ub) 24 | 25 | 26 | 27 | [npm-version-src]: https://img.shields.io/npm/v/astro-vitesse?style=flat&colorA=080f12&colorB=1fa669 28 | [npm-version-href]: https://npmjs.com/package/astro-vitesse 29 | [npm-downloads-src]: https://img.shields.io/npm/dm/astro-vitesse?style=flat&colorA=080f12&colorB=1fa669 30 | [npm-downloads-href]: https://npmjs.com/package/astro-vitesse 31 | [license-src]: https://img.shields.io/github/license/adrian-ub/astro-vitesse.svg?style=flat&colorA=080f12&colorB=1fa669 32 | [license-href]: https://github.com/adrian-ub/astro-vitesse/blob/main/LICENSE 33 | [jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669 34 | [jsdocs-href]: https://www.jsdocs.io/package/astro-vitesse 35 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | # generated types 4 | .astro/ 5 | 6 | # dependencies 7 | node_modules/ 8 | 9 | # logs 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | 20 | # macOS-specific files 21 | .DS_Store 22 | 23 | # jetbrains setting folder 24 | .idea/ 25 | -------------------------------------------------------------------------------- /docs/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /docs/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Astro Starter Kit: Minimal 2 | 3 | ```sh 4 | npm create astro@latest -- --template minimal 5 | ``` 6 | 7 | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/minimal) 8 | [![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/minimal) 9 | [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/minimal/devcontainer.json) 10 | 11 | > 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! 12 | 13 | ## 🚀 Project Structure 14 | 15 | Inside of your Astro project, you'll see the following folders and files: 16 | 17 | ```text 18 | / 19 | ├── public/ 20 | ├── src/ 21 | │ └── pages/ 22 | │ └── index.astro 23 | └── package.json 24 | ``` 25 | 26 | Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. 27 | 28 | There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components. 29 | 30 | Any static assets, like images, can be placed in the `public/` directory. 31 | 32 | ## 🧞 Commands 33 | 34 | All commands are run from the root of the project, from a terminal: 35 | 36 | | Command | Action | 37 | | :------------------------ | :----------------------------------------------- | 38 | | `npm install` | Installs dependencies | 39 | | `npm run dev` | Starts local dev server at `localhost:4321` | 40 | | `npm run build` | Build your production site to `./dist/` | 41 | | `npm run preview` | Preview your build locally, before deploying | 42 | | `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | 43 | | `npm run astro -- --help` | Get help using the Astro CLI | 44 | 45 | ## 👀 Want to learn more? 46 | 47 | Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). 48 | -------------------------------------------------------------------------------- /docs/astro.config.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import { defineConfig } from 'astro/config' 3 | 4 | import vitesse from 'astro-vitesse' 5 | import UnoCSS from 'unocss/astro' 6 | 7 | // https://astro.build/config 8 | export default defineConfig({ 9 | site: 'https://astro-vitesse.vercel.app', 10 | integrations: [ 11 | UnoCSS(), 12 | vitesse({ 13 | title: 'Astro Vitesse', 14 | credits: true, 15 | logo: { 16 | light: '/src/assets/logo-light.svg', 17 | dark: '/src/assets/logo-dark.svg', 18 | alt: 'Astro Vitesse Logo', 19 | }, 20 | defaultLocale: 'root', 21 | locales: { 22 | root: { 23 | lang: 'en', 24 | label: 'English', 25 | }, 26 | es: { 27 | lang: 'es', 28 | label: 'Español', 29 | }, 30 | }, 31 | components: { 32 | Footer: '/src/components/Footer.astro', 33 | }, 34 | social: { 35 | twitter: 'https://twitter.com/adrianub', 36 | github: 'https://github.com/adrian-ub/astro-vitesse', 37 | mastodon: 'https://mastodon.social/@adrianub', 38 | }, 39 | navBar: [{ 40 | label: 'Blog', 41 | slug: 'posts', 42 | icon: 'i-ri-article-line', 43 | labelClass: 'lt-md:hidden', 44 | iconClass: 'md:hidden', 45 | translations: { 46 | es: 'Publicaciones', 47 | }, 48 | }, { 49 | label: 'Projects', 50 | slug: 'projects', 51 | icon: 'i-ri-lightbulb-line', 52 | labelClass: 'lt-md:hidden', 53 | iconClass: 'md:hidden', 54 | }, { 55 | label: 'Talks', 56 | slug: 'talks', 57 | wrapperClass: 'lt-md:hidden', 58 | }, { 59 | label: 'Sponsors', 60 | slug: 'sponsors-list', 61 | icon: 'i-ri-heart-line', 62 | labelClass: 'lt-md:hidden', 63 | iconClass: 'md:hidden', 64 | }, { 65 | label: 'Podcasts', 66 | slug: 'podcasts', 67 | icon: 'i-ri-mic-line', 68 | hideLabel: true, 69 | wrapperClass: 'lt-md:hidden', 70 | }, 71 | // { 72 | // label: 'Demos', 73 | // slug: 'demos', 74 | // icon: 'i-ri-screenshot-line', 75 | // hideLabel: true, 76 | // }, 77 | // { 78 | // label: 'Let\'s Chat', 79 | // slug: 'chat', 80 | // icon: 'i-ri-chat-1-line', 81 | // hideLabel: true, 82 | // } 83 | { 84 | label: 'Twitter', 85 | link: 'https://twitter.com/adrianub', 86 | hideLabel: true, 87 | icon: 'i-ri-twitter-x-fill', 88 | wrapperClass: 'lt-md:hidden', 89 | attrs: { 90 | target: '_blank', 91 | rel: 'noopener', 92 | }, 93 | }, { 94 | label: 'GitHub', 95 | link: 'https://github.com/adrian-ub/astro-vitesse', 96 | hideLabel: true, 97 | icon: 'i-uil-github-alt', 98 | wrapperClass: 'lt-md:hidden', 99 | attrs: { 100 | target: '_blank', 101 | rel: 'noopener', 102 | }, 103 | }, { 104 | label: 'RSS', 105 | link: '/feed.xml', 106 | hideLabel: true, 107 | icon: 'i-la-rss-square', 108 | wrapperClass: 'lt-md:hidden', 109 | attrs: { 110 | target: '_blank', 111 | rel: 'noopener', 112 | style: 'font-size:1.25rem; margin: 0 -0.125rem;', 113 | }, 114 | }], 115 | subNavBar: [ 116 | { 117 | label: 'Blog', 118 | slug: 'posts', 119 | }, 120 | { 121 | label: 'Talks', 122 | slug: 'talks', 123 | translations: { 124 | es: 'Charlas', 125 | }, 126 | }, 127 | { 128 | label: 'Podcasts', 129 | slug: 'podcasts', 130 | }, 131 | { 132 | label: 'Streams', 133 | slug: 'streams', 134 | }, 135 | { 136 | label: 'Notes', 137 | slug: 'notes', 138 | }, 139 | ], 140 | }), 141 | ], 142 | }) 143 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docs", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "private": true, 6 | "scripts": { 7 | "dev": "astro dev", 8 | "start": "astro dev", 9 | "build": "astro check && astro build", 10 | "preview": "astro preview", 11 | "astro": "astro", 12 | "typecheck": "tsc --noEmit" 13 | }, 14 | "dependencies": { 15 | "@astrojs/check": "^0.9.4", 16 | "@astrojs/mdx": "^4.0.2", 17 | "astro": "^5.0.5", 18 | "astro-og-canvas": "^0.5.3", 19 | "astro-vitesse": "workspace:*", 20 | "canvaskit-wasm": "^0.39.1", 21 | "typescript": "^5.6.3", 22 | "unocss": "0.59.4" 23 | }, 24 | "devDependencies": { 25 | "@iconify/json": "^2.2.258", 26 | "@unocss/reset": "^0.63.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /docs/public/blog-placeholder-about.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrian-ub/astro-vitesse/fdc554e4cebe7f5e2b84db844a11c5b20ea74ceb/docs/public/blog-placeholder-about.jpg -------------------------------------------------------------------------------- /docs/public/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 17 | 18 | -------------------------------------------------------------------------------- /docs/src/assets/logo-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /docs/src/assets/logo-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /docs/src/components/Card.astro: -------------------------------------------------------------------------------- 1 |
4 |
5 |
6 | 7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /docs/src/components/Footer.astro: -------------------------------------------------------------------------------- 1 | 2 | CC BY-NC-SA 4.0 3 | 2021-PRESENT © Adrián UB 4 | 5 |
6 | -------------------------------------------------------------------------------- /docs/src/components/LinkWithIcon.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { getImage } from 'astro:assets' 3 | 4 | export type Props = { 5 | href: string 6 | iconUrl: string 7 | } 8 | const { href, iconUrl } = Astro.props 9 | 10 | const icon = await getImage({ 11 | src: iconUrl, 12 | inferSize: true, 13 | }) 14 | --- 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/src/components/SponsorButton.astro: -------------------------------------------------------------------------------- 1 |

{Astro.locals.t('sponsor.thanks')}

2 | 3 |

4 | 5 | 6 | {Astro.locals.t('sponsor.to-suport')} Adrián 7 | 8 | 9 | 10 | 11 | {Astro.locals.t('sponsor.to-suport')} Anthony 12 | 13 |

14 | -------------------------------------------------------------------------------- /docs/src/content.config.ts: -------------------------------------------------------------------------------- 1 | import { defineCollection, z } from 'astro:content' 2 | import { i18nLoader, pagesLoader } from 'astro-vitesse/loaders' 3 | import { i18nSchema, pagesSchema } from 'astro-vitesse/schema' 4 | 5 | export const collections = { 6 | pages: defineCollection({ 7 | loader: pagesLoader(), 8 | schema: pagesSchema(), 9 | }), 10 | i18n: defineCollection({ 11 | loader: i18nLoader(), 12 | schema: i18nSchema({ 13 | extend: z.object({ 14 | 'sponsor.thanks': z.string().optional(), 15 | 'sponsor.to-suport': z.string().optional(), 16 | }), 17 | }), 18 | }), 19 | } 20 | -------------------------------------------------------------------------------- /docs/src/content/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "sponsor.thanks": "If you enjoy my work and find them useful, consider sponsor me to help Open Source sustainable. Thank you!", 3 | "sponsor.to-suport": "Sponsor to support" 4 | } 5 | -------------------------------------------------------------------------------- /docs/src/content/i18n/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "sponsor.thanks": "Si disfrutas de mi trabajo y te resulta útil, considera patrocinarme para ayudar a que el Open Source sea sostenible. ¡Gracias!", 3 | "sponsor.to-suport": "Patrocinar para apoyar a" 4 | } 5 | -------------------------------------------------------------------------------- /docs/src/content/pages/es/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Astro Vitesse 3 | display: 'Dale un toque elegante a tus páginas con Astro Vitesse' 4 | description: 'Dale un toque elegante a tus páginas con Astro Vitesse' 5 | --- 6 | 7 | import Card from '@/components/Card.astro' 8 | import SponsorButton from '@/components/SponsorButton.astro' 9 | import LinkWithIcon from '@/components/LinkWithIcon.astro' 10 | 11 | Todo lo que necesitas para crear un sitio web espectacular. Rápido, asequible y fácil de usar. 12 | 13 | Está inspirado en antfu.me
14 | Desarrollado con Astro
15 | Basado en Starlight 16 | 17 |
18 | 19 | 20 | 21 | Incluye: navegación del sitio, internacionalización, SEO, tipografía fácil de leer, resaltado de código, modo oscuro y mucho más. 22 | 23 | 24 | 25 | 26 | 27 | Lleva tu lenguaje de marcado favorito. Astro Vitesse te ofrece validación de frontmatter integrada con seguridad de tipos en TypeScript. 28 | 29 | 30 | 31 | 32 | 33 | Astro Vitesse se ofrece como una solución completa, independiente de cualquier framework. Puedes extenderlo con Angular, React, Vue, Svelte, Solid y otros. 34 | 35 | 36 | 37 |
38 | 39 |
40 | 41 | --- 42 | 43 | Encuentrame en 44 | 45 |

46 | GitHub 47 | Mastodon 48 | Twitter 49 |

50 | 51 | --- 52 | 53 | 54 | -------------------------------------------------------------------------------- /docs/src/content/pages/es/posts/markdown-style-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Guía de estilo de Markdown' 3 | date: '2024-10-04' 4 | duration: 5min 5 | --- 6 | 7 | [[toc]] 8 | 9 | A continuación se muestra un ejemplo de sintaxis básica de Markdown que se puede utilizar al escribir contenido de Markdown en Astro. 10 | 11 | ## Encabezados 12 | 13 | Los siguientes elementos HTML `

`—`

` representan seis niveles de encabezados de sección. `

` es el nivel de sección más alto, mientras que `

` es el más bajo. 14 | 15 | # H1 16 | 17 | ## H2 18 | 19 | ### H3 20 | 21 | #### H4 22 | 23 | ##### H5 24 | 25 | ###### H6 26 | 27 | ## Párrafo 28 | 29 | Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat. 30 | 31 | Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat. 32 | 33 | ## Imágenes 34 | 35 | ### Sintaxis 36 | 37 | ```markdown 38 | ![Alt text](./full/or/relative/path/of/image) 39 | ``` 40 | 41 | ### Salida 42 | 43 | ![blog placeholder](/blog-placeholder-about.jpg) 44 | 45 | ## Citas en bloque 46 | 47 | El elemento blockquote representa contenido que se cita de otra fuente, opcionalmente con una cita que debe estar dentro de un `footer` o elemento de cita `cite`, y opcionalmente con cambios en línea como anotaciones y abreviaturas. 48 | 49 | ### Cita en bloque sin atribución 50 | 51 | #### Sintaxis 52 | 53 | ```markdown 54 | > Tiam, ad mint andaepu dandae nostion secatur sequo quae. 55 | > **Note** that you can use _Markdown syntax_ within a blockquote. 56 | ``` 57 | 58 | #### Salida 59 | 60 | > Tiam, ad mint andaepu dandae nostion secatur sequo quae. 61 | > **Note** that you can use _Markdown syntax_ within a blockquote. 62 | 63 | ### Cita en bloque con atribución 64 | 65 | #### Sintaxis 66 | 67 | ```markdown 68 | > Don't communicate by sharing memory, share memory by communicating.
69 | > — Rob Pike[^1] 70 | ``` 71 | 72 | #### Salida 73 | 74 | > Don't communicate by sharing memory, share memory by communicating.
75 | > — Rob Pike[^1] 76 | 77 | [^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015. 78 | 79 | ## Tablas 80 | 81 | ### Sintaxis 82 | 83 | ```markdown 84 | | Italics | Bold | Code | 85 | | --------- | -------- | ------ | 86 | | _italics_ | **bold** | `code` | 87 | ``` 88 | 89 | ### Salida 90 | 91 | | Italics | Bold | Code | 92 | | --------- | -------- | ------ | 93 | | _italics_ | **bold** | `code` | 94 | 95 | ## Bloques de código 96 | 97 | ### Sintaxis 98 | 99 | podemos usar 3 comillas invertidas ``` en una nueva línea y escribir un fragmento y cerrar con 3 comillas invertidas en una nueva línea y para resaltar la sintaxis específica del idioma, escribir una palabra del nombre del idioma después de las primeras 3 comillas invertidas, por ejemplo, html, javascript, css, markdown, typescript, txt, bash 100 | 101 | ````markdown 102 | ```html 103 | 104 | 105 | 106 | 107 | Example HTML5 Document 108 | 109 | 110 |

Test

111 | 112 | 113 | ``` 114 | ```` 115 | 116 | ### Salida 117 | 118 | ```html 119 | 120 | 121 | 122 | 123 | Example HTML5 Document 124 | 125 | 126 |

Test

127 | 128 | 129 | ``` 130 | 131 | ## Tipos de listas 132 | 133 | ### Lista ordenada 134 | 135 | #### Sintaxis 136 | 137 | ```markdown 138 | 1. First item 139 | 2. Second item 140 | 3. Third item 141 | ``` 142 | 143 | #### Salida 144 | 145 | 1. First item 146 | 2. Second item 147 | 3. Third item 148 | 149 | ### Lista desordenada 150 | 151 | #### Sintaxis 152 | 153 | ```markdown 154 | - List item 155 | - Another item 156 | - And another item 157 | ``` 158 | 159 | #### Salida 160 | 161 | - List item 162 | - Another item 163 | - And another item 164 | 165 | ### Lista anidada 166 | 167 | #### Sintaxis 168 | 169 | ```markdown 170 | - Fruit 171 | - Apple 172 | - Orange 173 | - Banana 174 | - Dairy 175 | - Milk 176 | - Cheese 177 | ``` 178 | 179 | #### Salida 180 | 181 | - Fruit 182 | - Apple 183 | - Orange 184 | - Banana 185 | - Dairy 186 | - Milk 187 | - Cheese 188 | 189 | ## Otros elementos: abbr, sub, sup, kbd, mark 190 | 191 | ### Sintaxis 192 | 193 | ```markdown 194 | GIF is a bitmap image format. 195 | 196 | H2O 197 | 198 | Xn + Yn = Zn 199 | 200 | Press CTRL + ALT + Delete to end the session. 201 | 202 | Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. 203 | ``` 204 | 205 | ### Salida 206 | 207 | GIF is a bitmap image format. 208 | 209 | H2O 210 | 211 | Xn + Yn = Zn 212 | 213 | Press CTRL + ALT + Delete to end the session. 214 | 215 | Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. 216 | -------------------------------------------------------------------------------- /docs/src/content/pages/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Astro Vitesse 3 | display: 'Give your pages an elegant touch with Astro Vitesse' 4 | description: 'Give your pages an elegant touch with Astro Vitesse' 5 | tocAlwaysOn: true 6 | --- 7 | 8 | import Card from '@/components/Card.astro' 9 | import SponsorButton from '@/components/SponsorButton.astro' 10 | import LinkWithIcon from '@/components/LinkWithIcon.astro' 11 | 12 | [[toc]] 13 | 14 | Everything you need to create a stunning website. Fast, affordable and easy to use. 15 | 16 | It's inspired by antfu.me
17 | Developed with Astro
18 | Based on Starlight 19 | 20 |
21 | 22 | 23 | 24 | Includes: Site navigation, internationalization, SEO, easy-to-read typography, code highlighting, dark mode and more. 25 | 26 | 27 | 28 | 29 | 30 | Bring your favorite markup language. Astro Vitesse gives you built-in frontmatter validation with TypeScript type-safety. 31 | 32 | 33 | 34 | 35 | 36 | Astro Vitesse ships as a framework-agnostic, complete solution. Extend with React, Vue, Svelte, Solid, and more. 37 | 38 | 39 | 40 |
41 | 42 | ## Set up Astro Vitesse 43 | 44 | To follow this guide, you’ll need an existing Astro project. 45 | 46 | ### Add the Astro Vitesse integration 47 | 48 | Astro Vitesse is an [Astro integration](https://docs.astro.build/en/guides/integrations-guide/). Add it to your site by running the `astro add` command in your project’s root directory: 49 | 50 | ```sh 51 | npx astro add astro-vitesse 52 | ``` 53 | 54 | This will install the required dependencies and add Astro Vitesse to the `integrations` array in your Astro config file. 55 | 56 | ### Configure the integration 57 | 58 | The Astro Vitesse integration is configured in your `astro.config.mjs` file. 59 | 60 | Add a `title` to get started: 61 | 62 | ```js 63 | import { defineConfig } from 'astro' 64 | import vitesse from 'astro-vitesse' 65 | 66 | export default defineConfig({ 67 | integrations: [ 68 | vitesse({ 69 | title: 'My Site', 70 | }) 71 | ] 72 | }) 73 | ``` 74 | 75 | ### Configure UnoCSS 76 | 77 | Astro Vitesse uses [UnoCSS](https://unocss.dev/) for styling. To configure UnoCSS, create a `unocss.config.ts` file in your project’s root directory: 78 | 79 | ```ts 80 | import { defineConfig } from 'astro-vitesse/theme' 81 | 82 | export default defineConfig({}) 83 | ``` 84 | 85 | ### Configure content collections 86 | 87 | Astro Vitesse is built on top of Astro’s [content collections](https://docs.astro.build/en/guides/content-collections/), which are configured in the `src/content.config.ts` file. 88 | 89 | Create or update the content config file, adding a `pages` collection that uses Astro Vitesse’s `pagesSchema`: 90 | 91 | ```ts 92 | import { defineCollection } from 'astro:content' 93 | import { pagesSchema } from 'astro-vitesse/schema' 94 | import { pagesLoader } from 'astro-vitesse/loaders' 95 | 96 | export const collections = { 97 | pages: defineCollection({ loader: pagesLoader(), schema: pagesSchema() }), 98 | } 99 | ``` 100 | 101 | ### Add content 102 | 103 | Astro Vitesse is now configured and it’s time to add some content! 104 | 105 | Create a `src/content/pages/` directory and start by adding an `index.md` file. 106 | This will be the homepage of your new site: 107 | 108 | ```mdx 109 | --- 110 | title: Welcome to Astro Vitesse 111 | description: 'Give your pages an elegant touch with Astro Vitesse' 112 | --- 113 | 114 | Welcome to my website! 115 | ``` 116 | 117 | Astro Vitesse uses file-based routing, which means every Markdown, MDX, or Markdoc file in `src/content/pages/` will turn into a page on your site. Frontmatter metadata (the `title` and `description` fields in the example above) can change how each page is displayed. 118 | 119 | ## Start the development server 120 | 121 | When working locally, [Astro’s development server](https://docs.astro.build/en/reference/cli-reference/#astro-dev) lets you preview your work and automatically refreshes your browser when you make changes. 122 | 123 | Inside your project directory, run the following command to start the development server: 124 | 125 | ```sh 126 | npm run dev 127 | ``` 128 | 129 |
130 | 131 | --- 132 | 133 | Find me on 134 | 135 |

136 | GitHub 137 | Mastodon 138 | Twitter 139 |

140 | 141 | --- 142 | 143 | 144 | -------------------------------------------------------------------------------- /docs/src/content/pages/notes.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Notes - Astro Vitesse' 3 | display: '' 4 | --- 5 | 6 | import SubNav from 'astro-vitesse/components/SubNav.astro' 7 | import ListPosts from 'astro-vitesse/components/ListPosts.astro' 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/src/content/pages/podcasts.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Podcasts - Astro Vitesse' 3 | display: '' 4 | items: 5 | - title: 'Podcast test' 6 | date: '2024-10-04' 7 | path: 'https://github.com/adrian-ub' 8 | radio: true 9 | --- 10 | 11 | import SubNav from 'astro-vitesse/components/SubNav.astro' 12 | import ListPosts from 'astro-vitesse/components/ListPosts.astro' 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/src/content/pages/posts.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Blog - Astro Vitesse 3 | display: '' 4 | --- 5 | 6 | import SubNav from 'astro-vitesse/components/SubNav.astro' 7 | import ListPosts from 'astro-vitesse/components/ListPosts.astro' 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/src/content/pages/posts/draft.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Draft example' 3 | date: '2024-10-06' 4 | duration: 5min 5 | draft: true 6 | --- 7 | -------------------------------------------------------------------------------- /docs/src/content/pages/posts/markdown-style-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Markdown Style Guide' 3 | date: '2024-10-04' 4 | duration: 5min 5 | --- 6 | 7 | [[toc]] 8 | 9 | Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro. 10 | 11 | ## Headings 12 | 13 | The following HTML `

`—`

` elements represent six levels of section headings. `

` is the highest section level while `

` is the lowest. 14 | 15 |

H1

16 | 17 |

H2

18 | 19 |

H3

20 | 21 |

H4

22 | 23 |
H5
24 | 25 |
H6
26 | 27 | ## Paragraph 28 | 29 | Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat. 30 | 31 | Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat. 32 | 33 | ## Images 34 | 35 | ### Syntax 36 | 37 | ```markdown 38 | ![Alt text](./full/or/relative/path/of/image) 39 | ``` 40 | 41 | ### Output 42 | 43 | ![blog placeholder](/blog-placeholder-about.jpg) 44 | 45 | ## Blockquotes 46 | 47 | The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations. 48 | 49 | ### Blockquote without attribution 50 | 51 | #### Syntax 52 | 53 | ```markdown 54 | > Tiam, ad mint andaepu dandae nostion secatur sequo quae. 55 | > **Note** that you can use _Markdown syntax_ within a blockquote. 56 | ``` 57 | 58 | #### Output 59 | 60 | > Tiam, ad mint andaepu dandae nostion secatur sequo quae. 61 | > **Note** that you can use _Markdown syntax_ within a blockquote. 62 | 63 | ### Blockquote with attribution 64 | 65 | #### Syntax 66 | 67 | ```markdown 68 | > Don't communicate by sharing memory, share memory by communicating.
69 | > — Rob Pike[^1] 70 | ``` 71 | 72 | #### Output 73 | 74 | > Don't communicate by sharing memory, share memory by communicating.
75 | > — Rob Pike[^1] 76 | 77 | [^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015. 78 | 79 | ## Tables 80 | 81 | ### Syntax 82 | 83 | ```markdown 84 | | Italics | Bold | Code | 85 | | --------- | -------- | ------ | 86 | | _italics_ | **bold** | `code` | 87 | ``` 88 | 89 | ### Output 90 | 91 | | Italics | Bold | Code | 92 | | --------- | -------- | ------ | 93 | | _italics_ | **bold** | `code` | 94 | 95 | ## Code Blocks 96 | 97 | ### Syntax 98 | 99 | we can use 3 backticks ``` in new line and write snippet and close with 3 backticks on new line and to highlight language specific syntax, write one word of language name after first 3 backticks, for eg. html, javascript, css, markdown, typescript, txt, bash 100 | 101 | ````markdown 102 | ```html 103 | 104 | 105 | 106 | 107 | Example HTML5 Document 108 | 109 | 110 |

Test

111 | 112 | 113 | ``` 114 | ```` 115 | 116 | ### Output 117 | 118 | ```html 119 | 120 | 121 | 122 | 123 | Example HTML5 Document 124 | 125 | 126 |

Test

127 | 128 | 129 | ``` 130 | 131 | ## List Types 132 | 133 | ### Ordered List 134 | 135 | #### Syntax 136 | 137 | ```markdown 138 | 1. First item 139 | 2. Second item 140 | 3. Third item 141 | ``` 142 | 143 | #### Output 144 | 145 | 1. First item 146 | 2. Second item 147 | 3. Third item 148 | 149 | ### Unordered List 150 | 151 | #### Syntax 152 | 153 | ```markdown 154 | - List item 155 | - Another item 156 | - And another item 157 | ``` 158 | 159 | #### Output 160 | 161 | - List item 162 | - Another item 163 | - And another item 164 | 165 | ### Nested list 166 | 167 | #### Syntax 168 | 169 | ```markdown 170 | - Fruit 171 | - Apple 172 | - Orange 173 | - Banana 174 | - Dairy 175 | - Milk 176 | - Cheese 177 | ``` 178 | 179 | #### Output 180 | 181 | - Fruit 182 | - Apple 183 | - Orange 184 | - Banana 185 | - Dairy 186 | - Milk 187 | - Cheese 188 | 189 | ## Other Elements — abbr, sub, sup, kbd, mark 190 | 191 | ### Syntax 192 | 193 | ```markdown 194 | GIF is a bitmap image format. 195 | 196 | H2O 197 | 198 | Xn + Yn = Zn 199 | 200 | Press CTRL + ALT + Delete to end the session. 201 | 202 | Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. 203 | ``` 204 | 205 | ### Output 206 | 207 | GIF is a bitmap image format. 208 | 209 | H2O 210 | 211 | Xn + Yn = Zn 212 | 213 | Press CTRL + ALT + Delete to end the session. 214 | 215 | Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. 216 | -------------------------------------------------------------------------------- /docs/src/content/pages/posts/redirect.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Redirect' 3 | redirect: https://github.com/adrian-ub/astro-vitesse 4 | date: '2023-10-07' 5 | duration: 5min 6 | --- 7 | -------------------------------------------------------------------------------- /docs/src/content/pages/projects.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Projects - Astro Vitesse 3 | display: Projects 4 | description: List of projects that I am proud of 5 | wrapperClass: 'text-center' 6 | layoutFullWidth: true 7 | projects: 8 | Current Focus: 9 | - name: 'Project Alpha' 10 | link: 'https://github.com/adrian-ub/astro-vitesse' 11 | desc: 'An innovative solution for modern problems.' 12 | - name: 'Beta Builder' 13 | link: 'https://github.com/adrian-ub/astro-vitesse' 14 | desc: 'A tool to build and manage beta versions of software.' 15 | icon: 'i-carbon-unknown' 16 | - name: 'Gamma Gateway' 17 | link: 'https://github.com/adrian-ub/astro-vitesse' 18 | desc: 'A secure gateway for data transmission.' 19 | 20 | Past Projects: 21 | - name: 'Delta Dashboard' 22 | link: 'https://github.com/adrian-ub/astro-vitesse' 23 | desc: 'A comprehensive dashboard for monitoring metrics.' 24 | icon: 'i-simple-icons-astro' 25 | - name: 'Epsilon Engine' 26 | link: 'https://github.com/adrian-ub/astro-vitesse' 27 | desc: 'A powerful engine for processing large datasets.' 28 | icon: 'i-simple-icons-astro' 29 | --- 30 | 31 | import ListProjects from 'astro-vitesse/components/ListProjects.astro' 32 | import SponsorButton from '../../components/SponsorButton.astro' 33 | 34 | 35 |
Projects that I created or maintaining.
36 | 37 | 38 | 39 | 40 |
41 | 42 |
43 | 44 |
45 | 46 | 47 | 48 |
49 | 50 |
51 | -------------------------------------------------------------------------------- /docs/src/content/pages/sponsors-list.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Sponsors - Astro vitesse 3 | display: Sponsors 4 | subtitle: Great thanks for all the Sponsors! 5 | description: Sponsors of John Doe 6 | layoutFullWidth: true 7 | --- 8 | 9 | import SponsorButton from '../../components/SponsorButton.astro' 10 | 11 |
12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /docs/src/content/pages/streams.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Streams - Astro Vitesse 3 | display: '' 4 | --- 5 | 6 | import SubNav from 'astro-vitesse/components/SubNav.astro' 7 | import ListPosts from 'astro-vitesse/components/ListPosts.astro' 8 | 9 | 10 | 11 |
12 | 13 |
14 | Live streaming at YouTube 15 | 16 |
17 | 18 |
19 |
20 |