diff --git a/apps/website/.astro/content-assets.mjs b/apps/website/.astro/content-assets.mjs new file mode 100644 index 00000000..2b8b8234 --- /dev/null +++ b/apps/website/.astro/content-assets.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/apps/website/.astro/content-modules.mjs b/apps/website/.astro/content-modules.mjs new file mode 100644 index 00000000..2b8b8234 --- /dev/null +++ b/apps/website/.astro/content-modules.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/apps/website/.astro/content.d.ts b/apps/website/.astro/content.d.ts new file mode 100644 index 00000000..dd217639 --- /dev/null +++ b/apps/website/.astro/content.d.ts @@ -0,0 +1,155 @@ +declare module 'astro:content' { + export interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } + interface Render { + '.md': Promise; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById( + collection: C, + entryId: E, + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E, + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown, + ): Promise[]>; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >(entry: { + collection: C; + slug: E; + }): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >(entry: { + collection: C; + id: E; + }): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? string extends keyof DataEntryMap[C] + ? Promise | undefined + : Promise + : Promise | undefined>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: { + collection: C; + slug: ValidContentEntrySlug; + }[], + ): Promise[]>; + export function getEntries( + entries: { + collection: C; + id: keyof DataEntryMap[C]; + }[], + ): Promise[]>; + + export function render( + entry: AnyEntryMap[C][string], + ): Promise; + + export function reference( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? { + collection: C; + slug: ValidContentEntrySlug; + } + : { + collection: C; + id: keyof DataEntryMap[C]; + } + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference( + collection: C, + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['schema']> + >; + + type ContentEntryMap = { + + }; + + type DataEntryMap = { + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + export type ContentConfig = typeof import("../src/content.config.mjs"); +} diff --git a/apps/website/.astro/data-store.json b/apps/website/.astro/data-store.json new file mode 100644 index 00000000..85b8ffeb --- /dev/null +++ b/apps/website/.astro/data-store.json @@ -0,0 +1 @@ +[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.1.1","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[]},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":\"shiki\",\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false},\"legacy\":{\"collections\":false}}"] \ No newline at end of file diff --git a/apps/website/.astro/settings.json b/apps/website/.astro/settings.json new file mode 100644 index 00000000..a442c1da --- /dev/null +++ b/apps/website/.astro/settings.json @@ -0,0 +1,5 @@ +{ + "_variables": { + "lastUpdateCheck": 1735146562968 + } +} \ No newline at end of file diff --git a/apps/website/.astro/types.d.ts b/apps/website/.astro/types.d.ts new file mode 100644 index 00000000..03d7cc43 --- /dev/null +++ b/apps/website/.astro/types.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/apps/website/.gitignore b/apps/website/.gitignore deleted file mode 100644 index 6240da8b..00000000 --- a/apps/website/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -# build output -dist/ -# generated types -.astro/ - -# dependencies -node_modules/ - -# logs -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - - -# environment variables -.env -.env.production - -# macOS-specific files -.DS_Store diff --git a/apps/website/.vscode/extensions.json b/apps/website/.vscode/extensions.json index 22a15055..85160abc 100644 --- a/apps/website/.vscode/extensions.json +++ b/apps/website/.vscode/extensions.json @@ -1,4 +1,4 @@ { - "recommendations": ["astro-build.astro-vscode"], + "recommendations": ["astro-build.astro-vscode", "biomejs.biome"], "unwantedRecommendations": [] } diff --git a/apps/website/README.md b/apps/website/README.md index b51abaab..55f98997 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -1,54 +1,69 @@ -# Starlight Starter Kit: Basics -[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build) +# [@QwikDev/astro](https://github.com/QwikDev/astro) Starter Kit -``` -npm create astro@latest -- --template starlight -``` +## Overview -[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/starlight/tree/main/examples/basics) -[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/starlight/tree/main/examples/basics) -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fwithastro%2Fstarlight%2Ftree%2Fmain%2Fexamples%2Fbasics&project-name=my-starlight-docs&repository-name=my-starlight-docs) - -> πŸ§‘β€πŸš€ **Seasoned astronaut?** Delete this file. Have fun! +Welcome to the [@QwikDev/astro](https://github.com/QwikDev/astro) starter kit! This kit enables seamless integration of Qwik components into your Astro projects, combining the efficiency of Qwik's component-based architecture with the flexibility of Astro's static site generation. ## πŸš€ Project Structure -Inside of your Astro + Starlight project, you'll see the following folders and files: +Inside of your [Qwik](https://qwik.dev/) + [Astro](https://astro.build/) project, you'll see the following folders and files: -``` -. +```text +/ β”œβ”€β”€ public/ +β”‚ └── favicon.svg β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ assets/ -β”‚ β”œβ”€β”€ content/ -β”‚ β”‚ β”œβ”€β”€ docs/ -β”‚ β”‚ └── config.ts -β”‚ └── env.d.ts -β”œβ”€β”€ astro.config.mjs -β”œβ”€β”€ package.json -└── tsconfig.json +β”‚ β”‚ β”œβ”€β”€ astro.svg +β”‚ β”‚ └── qwik.svg +β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”œβ”€β”€ counter.module.css +β”‚ β”‚ └── counter.tsx +β”‚ β”œβ”€β”€ layouts/ +β”‚ β”‚ └── Layout.astro +β”‚ β”œβ”€β”€ pages/ +β”‚ β”‚ └── index.astro +β”‚ └── styles/ +β”‚ └── globals.css +└── package.json ``` -Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name. +- **public/** : This directory contains static resources such as images, accessible from the root of your deployed site. -Images can be added to `src/assets/` and embedded in Markdown with a relative link. +- **src/** : This directory is the core of your Qwik + Astro application. Here's an overview of its structure: -Static assets, like favicons, can be placed in the `public/` directory. + - **assets/** : This directory is for resources such as images, SVG files, etc. + + - **components/** : Qwik components are stored here. Use this directory to organize and create reusable components for your application. + + - **layouts/** : Astro layouts reside in this directory. Layout files define the overall structure of your pages. + + - **pages/** : This directory contains the pages of your Astro application. Each file with the `.astro` or `.md` extension is exposed as a route based on its file name. + + - **styles/** : Global style files for your application are stored here, such as `globals.css`. ## 🧞 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:4321` | -| `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 | +| Command | Action | +| :------------------- | :----------------------------------------------| +| `pnpm install` | Installs dependencies | +| `pnpm start` | Starts local dev server at `localhost:4321` | +| `pnpm build` | Build your production site to `./dist/` | +| `pnpm preview` | Preview your build locally, before deploying | +| `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` | +| `pnpm astro -- --help` | Get help using the Astro CLI | + +## πŸ“š References + +- [Astro Documentation](https://astro.build/) - Explore more about Astro. + +- [Qwik Documentation](https://qwik.dev/) - Learn about Qwik and its features. + +- [Astro GitHub Repository](https://github.com/withastro/astro) - Contribute or report issues to the Astro project. -## πŸ‘€ Want to learn more? +- [Qwik GitHub Repository](https://github.com/BuilderIO/qwik) - Contribute or report issues to the Qwik project. -Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat). +- [Qwik + Astro GitHub Repository](https://github.com/QwikDev/astro) - Explore and contribute to the @QwikDev/astro integration project. diff --git a/apps/website/astro.config.ts b/apps/website/astro.config.ts index 2876ffbd..15d64a6e 100644 --- a/apps/website/astro.config.ts +++ b/apps/website/astro.config.ts @@ -1,37 +1,7 @@ -import starlight from "@astrojs/starlight"; +import qwikdev from "@qwikdev/astro"; import { defineConfig } from "astro/config"; // https://astro.build/config export default defineConfig({ - compressHTML: true, - integrations: [ - starlight({ - title: "Qwik πŸ’œ Astro", - logo: { - src: "./src/assets/qwik-astro.svg", - alt: "Qwik + Astro Logo", - replacesTitle: false - }, - social: { - github: "https://github.com/QwikDev/astro" - }, - editLink: { - baseUrl: "https://github.com/QwikDev/astro/edit/main/apps/website/" - }, - sidebar: [ - { - label: "Home", - link: "/" - }, - { - label: "Guides", - items: [{ label: "Getting Started", link: "/guides/" }] - }, - { - label: "Reference", - autogenerate: { directory: "reference" } - } - ] - }) - ] + integrations: [qwikdev()], }); diff --git a/apps/website/package.json b/apps/website/package.json index 842f683b..b0fe10d0 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -1,21 +1,29 @@ { - "name": "@qwikdev/astro-website", - "private": true, + "name": "website", "type": "module", - "version": "0.0.1", + "private": true, "scripts": { + "astro": "astro", + "sync": "astro sync", + "build": "pnpm fix && astro build", + "check": "biome ci . && astro check", + "check.format": "biome format .", + "check.lint": "biome check .", "dev": "astro dev", - "start": "astro dev --open", - "build": "astro check && astro build", - "preview": "astro preview", - "astro": "astro" + "fix": "pnpm lint && pnpm format", + "format": "biome format --write .", + "lint": "biome check --apply-unsafe .", + "preview": "pnpm build && astro preview", + "prod": "pnpm check && astro build", + "start": "astro dev --open" }, "dependencies": { - "@astrojs/check": "^0.5.10", - "@astrojs/starlight": "^0.21.5", - "@qwikdev/astro": "workspace:*", - "astro": "^4.16.18", - "sharp": "^0.32.6", - "typescript": "^5.7.2" + "@astrojs/check": "^0.9.4", + "@builder.io/qwik": "^1.12", + "@qwikdev/astro": "^0.7", + "astro": "^5.1" + }, + "devDependencies": { + "@biomejs/biome": "^1.7.0" } } diff --git a/apps/website/public/favicon.svg b/apps/website/public/favicon.svg index cfd7cca0..2af40c26 100644 --- a/apps/website/public/favicon.svg +++ b/apps/website/public/favicon.svg @@ -1,103 +1,24 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/website/src/assets/qwik-astro.svg b/apps/website/src/assets/qwik-astro.svg deleted file mode 100644 index cfd7cca0..00000000 --- a/apps/website/src/assets/qwik-astro.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/website/src/assets/qwik.svg b/apps/website/src/assets/qwik.svg index 9d8f4be7..c254485b 100644 --- a/apps/website/src/assets/qwik.svg +++ b/apps/website/src/assets/qwik.svg @@ -56,8 +56,4 @@ y="0" /> - diff --git a/apps/website/src/components/counter.module.css b/apps/website/src/components/counter.module.css new file mode 100644 index 00000000..6ebef84d --- /dev/null +++ b/apps/website/src/components/counter.module.css @@ -0,0 +1,12 @@ +.container { + display: flex; + justify-content: center; + align-items: center; +} + +.counter { + border: 1px solid black; +} +.card { + padding: 2em; +} diff --git a/apps/website/src/components/counter.tsx b/apps/website/src/components/counter.tsx new file mode 100644 index 00000000..ce4e17a5 --- /dev/null +++ b/apps/website/src/components/counter.tsx @@ -0,0 +1,21 @@ +import { component$, useSignal } from "@builder.io/qwik"; + +import styles from "./counter.module.css"; + +export const Counter = component$(() => { + const count = useSignal(0); + + return ( + <> +
+ +
+ + ); +}); diff --git a/apps/website/src/content/config.ts b/apps/website/src/content/config.ts deleted file mode 100644 index 9b921a18..00000000 --- a/apps/website/src/content/config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineCollection } from "astro:content"; -import { docsSchema } from "@astrojs/starlight/schema"; - -export const collections = { - docs: defineCollection({ schema: docsSchema() }) -}; diff --git a/apps/website/src/content/docs/guides/index.mdx b/apps/website/src/content/docs/guides/index.mdx deleted file mode 100644 index b2f946ac..00000000 --- a/apps/website/src/content/docs/guides/index.mdx +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Getting Started -description: Getting started with @qwikdev/astro ---- - -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -Welcome to `@QwikDev/astro`! This guide will help you get up and running with our integration for Astro in no time. - -## Installation - -You can install `@QwikDev/astro` via npm, Yarn, pnpm or Bun. - - - - - ```sh - npx astro @qwikdev/astro - ``` - - - - - ```sh - yarn astro add @qwikdev/astro - ``` - - - - - ```sh - pnpm astro add @qwikdev/astro - ``` - - - - - ```sh - bun astro @qwikdev/astro - ``` - - - - -## Configuration - -After installing `@QwikDev/astro`, you need to configure your project to use the integration. -Add the following configuration to your `astro.config.*` file: - -```javascript -import { defineConfig } from 'astro/config'; -import qwikdev from '@qwikdev/astro'; - -export default defineConfig({ - integrations: [qwikdev()] -}); -``` - -## Usage - -Once the installation and configuration are complete, you can start using `@QwikDev/astro` in your project. Import Qwik components and integrate them into your Astro pages. - -Here's a simple example of how to use a Qwik component in an Astro page: - -```javascript -import { Counter } from "../components/counter"; - - -``` - -That's it! You're now ready to leverage the power of @QwikDev/Astro in your Astro projects. -Happy coding! diff --git a/apps/website/src/content/docs/index.mdx b/apps/website/src/content/docs/index.mdx deleted file mode 100644 index 11b5a896..00000000 --- a/apps/website/src/content/docs/index.mdx +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Unleash the Power of Resumability in Astro -description: Leverage the Power of Resumability in Astro with Qwik Components. -template: splash -hero: - tagline: Seamlessly Integrate Qwik Components into Your Astro Project. - image: - file: ../../assets/qwik-astro.svg - actions: - - text: Get started - link: /guides/ - icon: right-arrow - variant: primary - - text: View on GitHub - link: https://github.com/QwikDev/astro - icon: external ---- - -import { Card, CardGrid, Tabs, TabItem } from '@astrojs/starlight/components'; - -## Try @qwikdev/astro - - - - - ```sh - npx astro @qwikdev/astro - ``` - - - - - ```sh - yarn astro add @qwikdev/astro - ``` - - - - - ```sh - pnpm astro add @qwikdev/astro - ``` - - - - - ```sh - bun astro @qwikdev/astro - ``` - - - - -## Why @QwikDev/Astro? - - - - Harness the power of lightning-fast websites by seamlessly integrating @qwikdev/astro into your projects, ensuring unparalleled speed and performance. - - - Integrate @QwikDev/Astro seamlessly into your project with our simple installation process. Our clear documentation and intuitive APIs make integration a breeze for developers of all levels. - - - Achieve optimized performance for your web applications with @QwikDev/Astro. Our framework prioritizes performance at every level, ensuring that your websites run smoothly and efficiently. - - - Benefit from fine-grained lazy loading capabilities with @QwikDev/Astro. Our integration allows for efficient loading of resources, improving page load times and enhancing user experience. - - diff --git a/apps/website/src/content/docs/reference/example.md b/apps/website/src/content/docs/reference/example.md deleted file mode 100644 index 0224f096..00000000 --- a/apps/website/src/content/docs/reference/example.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Example Reference -description: A reference page in my new Starlight docs site. ---- - -Reference pages are ideal for outlining how things work in terse and clear terms. -Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what you're documenting. - -## Further reading - -- Read [about reference](https://diataxis.fr/reference/) in the DiΓ‘taxis framework diff --git a/apps/website/src/env.d.ts b/apps/website/src/env.d.ts index acef35f1..f964fe0c 100644 --- a/apps/website/src/env.d.ts +++ b/apps/website/src/env.d.ts @@ -1,2 +1 @@ -/// /// diff --git a/apps/website/src/layouts/Layout.astro b/apps/website/src/layouts/Layout.astro new file mode 100644 index 00000000..49b7b8fd --- /dev/null +++ b/apps/website/src/layouts/Layout.astro @@ -0,0 +1,121 @@ +--- +import "../styles/global.css"; + +interface Props { + title: string; +} + +const { title } = Astro.props; +--- + + + + + + + + + + {title} + + + + + + diff --git a/apps/website/src/pages/index.astro b/apps/website/src/pages/index.astro new file mode 100644 index 00000000..cbdbb143 --- /dev/null +++ b/apps/website/src/pages/index.astro @@ -0,0 +1,65 @@ +--- +import astroLogo from "../assets/astro.svg?url"; +import qwikLogo from "../assets/qwik.svg?url"; +import { Counter } from "../components/counter.tsx"; +import Layout from "../layouts/Layout.astro"; +--- + + +
+ +

Qwik + Astro

+

+ Thanks to @QwikDev/astro, seamlessly integrate your Qwik components into your Astro project, as shown with the counter below. +

+ +

+ Click on the Qwik and Astro logos to learn more +

+
+
+ + diff --git a/apps/website/src/styles/global.css b/apps/website/src/styles/global.css new file mode 100644 index 00000000..07989616 --- /dev/null +++ b/apps/website/src/styles/global.css @@ -0,0 +1,53 @@ +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/apps/website/tsconfig.json b/apps/website/tsconfig.json index fbc2f5fc..1881c255 100644 --- a/apps/website/tsconfig.json +++ b/apps/website/tsconfig.json @@ -1,3 +1,12 @@ { - "extends": "astro/tsconfigs/strictest" + "extends": "astro/tsconfigs/strict", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@components/*": ["./src/components/*"] + }, + + "jsx": "react-jsx", + "jsxImportSource": "@builder.io/qwik" + } }