diff --git a/packages/website-astro/astro.config.mjs b/packages/website-astro/astro.config.mjs
index ef5f9d89e0..0b5a8be6e8 100644
--- a/packages/website-astro/astro.config.mjs
+++ b/packages/website-astro/astro.config.mjs
@@ -1,13 +1,13 @@
// @ts-check
import react from "@astrojs/react";
import starlight from "@astrojs/starlight";
+import astroExpressiveCode from "astro-expressive-code";
import { defineConfig } from "astro/config";
import { readFile } from "fs/promises";
import { resolve } from "path";
import rehypeMermaid from "rehype-mermaid";
import remarkHeadingID from "remark-heading-id";
import { resolveSideBars } from "./sidebars";
-import tspTryitCode from "./src/plugins/tsp-tryit-code";
const base = process.env.TYPESPEC_WEBSITE_BASE_PATH ?? "/";
@@ -27,22 +27,16 @@ export default defineConfig({
base,
trailingSlash: "always",
integrations: [
+ astroExpressiveCode(),
starlight({
title: "TypeSpec",
sidebar: await resolveSideBars(),
customCss: ["./src/css/custom.css"],
components: {
Header: "./src/components/header/header.astro",
+ PageFrame: "./src/components/starlight-overrides/PageFrame.astro",
},
- expressiveCode: {
- themes: ["one-light", "one-dark-pro"],
- styleOverrides: {
- frames: {
- frameBoxShadowCssValue: "",
- },
- },
- plugins: [tspTryitCode(base + "playground/")],
- },
+ expressiveCode: false, // defined directly above
head: [
{
tag: "script",
diff --git a/packages/website-astro/ec.config.mjs b/packages/website-astro/ec.config.mjs
new file mode 100644
index 0000000000..c636e8945d
--- /dev/null
+++ b/packages/website-astro/ec.config.mjs
@@ -0,0 +1,49 @@
+// @ts-check
+import { addClassName } from "@expressive-code/core/hast";
+import { defineEcConfig } from "astro-expressive-code";
+import tspTryitCode from "./src/plugins/tsp-tryit-code.js";
+
+const base = process.env.TYPESPEC_WEBSITE_BASE_PATH ?? "/";
+
+export default defineEcConfig({
+ themeCssSelector: (theme, { styleVariants }) => {
+ // If one dark and one light theme are available, and the user has not disabled it,
+ // generate theme CSS selectors compatible with Starlight's dark mode switch
+ const baseTheme = styleVariants[0]?.theme;
+ const altTheme = styleVariants.find((v) => v.theme.type !== baseTheme?.type)?.theme;
+ if (theme === baseTheme || theme === altTheme) return `[data-theme='${theme.type}']`;
+ // Return the default selector
+ return `[data-theme='${theme.name}']`;
+ },
+ styleOverrides: {
+ // Starlight theme overrides
+ borderRadius: "0px",
+ borderWidth: "1px",
+ codePaddingBlock: "0.75rem",
+ codePaddingInline: "1rem",
+ codeFontFamily: "var(--__sl-font-mono)",
+ codeFontSize: "var(--sl-text-code)",
+ codeLineHeight: "var(--sl-line-height)",
+ uiFontFamily: "var(--__sl-font)",
+ textMarkers: {
+ lineDiffIndicatorMarginLeft: "0.25rem",
+ defaultChroma: "45",
+ backgroundOpacity: "60%",
+ },
+ frames: {
+ frameBoxShadowCssValue: "none",
+ },
+ },
+ plugins: [
+ {
+ name: "Starlight Plugin",
+ hooks: {
+ postprocessRenderedBlock: ({ renderData }) => {
+ addClassName(renderData.blockAst, "not-content");
+ },
+ },
+ },
+ // @ts-expect-error type version mismatch
+ tspTryitCode(base + "playground/"),
+ ],
+});
diff --git a/packages/website-astro/package.json b/packages/website-astro/package.json
index decc253800..a7ffe06ee7 100644
--- a/packages/website-astro/package.json
+++ b/packages/website-astro/package.json
@@ -40,9 +40,10 @@
"@types/react": "~18.3.11",
"@types/react-dom": "~18.3.0",
"@types/remark-heading-id": "^1.0.0",
- "@typespec/playground-website": "workspace:*",
"@typespec/internal-build-utils": "workspace:~",
+ "@typespec/playground-website": "workspace:*",
"@typespec/website": "workspace:*",
+ "astro-expressive-code": "^0.37.0",
"rehype-mermaid": "^3.0.0",
"remark-heading-id": "^1.0.1",
"rimraf": "~6.0.1"
diff --git a/packages/website-astro/src/components/asset-img.astro b/packages/website-astro/src/components/asset-img.astro
new file mode 100644
index 0000000000..f264835ec2
--- /dev/null
+++ b/packages/website-astro/src/components/asset-img.astro
@@ -0,0 +1,21 @@
+---
+/**
+ * Component for rendering an image resolving the relative path.
+ */
+import { baseUrl } from "@site/src/utils";
+import type { HTMLAttributes } from "astro/types";
+
+export interface AssetImgProps extends HTMLAttributes<"img"> {
+ src: string;
+}
+
+const { src, alt, ...rest } = Astro.props;
+---
+
+
+
+
diff --git a/packages/website-astro/src/components/asset-img/asset-img.module.css b/packages/website-astro/src/components/asset-img/asset-img.module.css
deleted file mode 100644
index 878bd763c0..0000000000
--- a/packages/website-astro/src/components/asset-img/asset-img.module.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.img {
- display: block;
-}
diff --git a/packages/website-astro/src/components/asset-img/asset-img.tsx b/packages/website-astro/src/components/asset-img/asset-img.tsx
deleted file mode 100644
index 2d2cfbf178..0000000000
--- a/packages/website-astro/src/components/asset-img/asset-img.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import useBaseUrl from "@docusaurus/useBaseUrl";
-import style from "./asset-img.module.css";
-
-export interface AssetImgProps {
- src: string;
- alt?: string;
- className?: string;
-}
-
-/**
- * Component for rendering an image resolving the relative path.
- */
-export const AssetImg = ({ src, ...props }: AssetImgProps) => {
- const fullSrc = useBaseUrl(`/img/${src}`);
- return ;
-};
diff --git a/packages/website-astro/src/components/button.astro b/packages/website-astro/src/components/button.astro
new file mode 100644
index 0000000000..b6c0a17642
--- /dev/null
+++ b/packages/website-astro/src/components/button.astro
@@ -0,0 +1,67 @@
+---
+import Link from "./link.astro";
+
+export interface Props {
+ appearance?: "primary" | "outline";
+ as?: "a";
+ href: string;
+ className?: string;
+}
+const { href, className, appearance } = Astro.props;
+const appearanceCls = `appearance-${appearance ?? "primary"}`;
+---
+
+
+
+
+
diff --git a/packages/website-astro/src/components/button/button.module.css b/packages/website-astro/src/components/button/button.module.css
deleted file mode 100644
index 27aef3b25f..0000000000
--- a/packages/website-astro/src/components/button/button.module.css
+++ /dev/null
@@ -1,47 +0,0 @@
-.button {
- align-items: center;
- box-sizing: border-box;
- display: inline-flex;
- justify-content: center;
- text-decoration-line: none;
- vertical-align: middle;
- margin: 0px;
- overflow: hidden;
- background-color: var(--colorNeutralBackground1);
- color: var(--colorNeutralForeground1);
- border: var(--strokeWidthThin) solid var(--colorNeutralStroke1);
- font-family: var(--fontFamilyBase);
- outline-style: none;
- padding: 5px var(--spacingHorizontalM);
- min-width: 96px;
- border-radius: var(--borderRadiusMedium);
- font-size: var(--fontSizeBase300);
- font-weight: var(--fontWeightSemibold);
- line-height: var(--lineHeightBase300);
- transition-duration: var(--durationFaster);
- transition-property: background, border, color;
- transition-timing-function: var(--curveEasyEase);
-}
-
-.button:hover {
- color: var(--colorNeutralForeground1);
-}
-
-.appearance-primary {
- color: var(--colorNeutralForegroundOnBrand);
- background-color: var(--colorBrandBackground);
- border-color: transparent;
-}
-
-.appearance-primary:hover {
- color: var(--colorNeutralForegroundOnBrand);
-}
-
-.appearance-outline {
- background-color: transparent;
-}
-
-.appearance-outline:hover {
- border-color: var(--colorNeutralStroke1Hover);
- text-decoration: none;
-}
diff --git a/packages/website-astro/src/components/button/button.tsx b/packages/website-astro/src/components/button/button.tsx
deleted file mode 100644
index 8d973f7791..0000000000
--- a/packages/website-astro/src/components/button/button.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import clsx from "clsx";
-import type { ReactNode } from "react";
-import { Link } from "../link/link";
-import style from "./button.module.css";
-
-export interface ButtonProps {
- appearance?: "primary" | "outline";
- as?: "a";
- href: string;
- children?: ReactNode;
- className?: string;
-}
-
-export const Button = ({ href, children, className, appearance }: ButtonProps) => {
- const appearanceCls = style[`appearance-${appearance ?? "primary"}`];
- return (
-
- {children}
-
- );
-};
diff --git a/packages/website-astro/src/components/card.astro b/packages/website-astro/src/components/card.astro
new file mode 100644
index 0000000000..5adf0eeb88
--- /dev/null
+++ b/packages/website-astro/src/components/card.astro
@@ -0,0 +1,47 @@
+---
+export interface Props {
+ /** Should skip padding. */
+ noPadding?: boolean;
+ /** Should the background blend. */
+ blend?: boolean;
+
+ children?: React.ReactNode;
+ class?: string;
+}
+
+const { class: cls, noPadding, blend } = Astro.props;
+---
+
+
+
+
diff --git a/packages/website-astro/src/components/card/card.module.css b/packages/website-astro/src/components/card/card.module.css
deleted file mode 100644
index 6478d3d773..0000000000
--- a/packages/website-astro/src/components/card/card.module.css
+++ /dev/null
@@ -1,26 +0,0 @@
-.card {
- border-radius: 22px;
- position: relative;
-}
-
-.bg {
- position: absolute;
- width: 100%;
- height: 100%;
- border-radius: 22px;
- background-color: var(--colorNeutralBackground1);
-}
-
-.content {
- position: relative;
- z-index: 100;
- padding: 20px;
-}
-
-.no-padding .content {
- padding: 0px;
-}
-
-.blend > .bg {
- opacity: 0.2;
-}
diff --git a/packages/website-astro/src/components/card/card.tsx b/packages/website-astro/src/components/card/card.tsx
deleted file mode 100644
index 3f02134d6b..0000000000
--- a/packages/website-astro/src/components/card/card.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import clsx from "clsx";
-import style from "./card.module.css";
-
-export interface CardProps {
- /** Should skip padding. */
- noPadding?: boolean;
- /** Should the background blend. */
- blend?: boolean;
-
- children?: React.ReactNode;
- className?: string;
-}
-
-export const Card = ({ children, className, noPadding, blend }: CardProps) => {
- return (
-
- );
-};
diff --git a/packages/website-astro/src/components/docusaurus/core/BrowserOnly.ts b/packages/website-astro/src/components/docusaurus/core/BrowserOnly.ts
deleted file mode 100644
index ffe4849b8d..0000000000
--- a/packages/website-astro/src/components/docusaurus/core/BrowserOnly.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/* eslint-disable unicorn/filename-case */
-export default function BrowserOnly({ children }) {
- return children();
-}
diff --git a/packages/website-astro/src/components/docusaurus/core/Link.tsx b/packages/website-astro/src/components/docusaurus/core/Link.tsx
deleted file mode 100644
index 2e0d3b8eba..0000000000
--- a/packages/website-astro/src/components/docusaurus/core/Link.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-/* eslint-disable unicorn/filename-case */
-
-export default (props: any) => {
- return ;
-};
diff --git a/packages/website-astro/src/components/docusaurus/theme/CodeBlock.tsx b/packages/website-astro/src/components/docusaurus/theme/CodeBlock.tsx
deleted file mode 100644
index e3c708d632..0000000000
--- a/packages/website-astro/src/components/docusaurus/theme/CodeBlock.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-/* eslint-disable unicorn/filename-case */
-import { Code } from "@astrojs/starlight/components";
-
-export default function CodeBlock({ children, className, language, title }) {
- return
;
-}
diff --git a/packages/website-astro/src/components/docusaurus/theme/Layout.tsx b/packages/website-astro/src/components/docusaurus/theme/Layout.tsx
deleted file mode 100644
index 0cec8fa1f4..0000000000
--- a/packages/website-astro/src/components/docusaurus/theme/Layout.tsx
+++ /dev/null
@@ -1,4 +0,0 @@
-/* eslint-disable unicorn/filename-case */
-export default ({ children }) => {
- return <>{children}>;
-};
diff --git a/packages/website-astro/src/components/feature-list.astro b/packages/website-astro/src/components/feature-list.astro
new file mode 100644
index 0000000000..bd6ea845ff
--- /dev/null
+++ b/packages/website-astro/src/components/feature-list.astro
@@ -0,0 +1,64 @@
+---
+import FluentImg from "./fluent-img.astro";
+import Link from "./link.astro";
+import { DescriptionText, NeutralText, Text } from "./text/text";
+import type { FluentImageName } from "./types";
+
+interface FeatureListItem {
+ title: string;
+ description?: string;
+ image?: FluentImageName;
+ link?: string;
+}
+
+export interface Props {
+ items?: FeatureListItem[];
+}
+
+const { items } = Astro.props;
+---
+
+
+
+
+ {
+ items?.map(({ image, description, link, title }) => (
+
+ {image &&
}
+
+ {title}
+ {description}
+ {link && (
+
+ Learn more →
+
+ )}
+
+
+ ))
+ }
+
diff --git a/packages/website-astro/src/components/feature-list/feature-list.module.css b/packages/website-astro/src/components/feature-list/feature-list.module.css
deleted file mode 100644
index 02dc165b71..0000000000
--- a/packages/website-astro/src/components/feature-list/feature-list.module.css
+++ /dev/null
@@ -1,23 +0,0 @@
-.items-list {
- width: 100%;
- display: flex;
- flex-direction: column;
- gap: 40px;
-}
-
-.item {
- display: flex;
- gap: 12px;
-}
-
-.item-image {
- width: 64px;
- height: 64px;
- max-width: 64px;
-}
-
-.item-content {
- display: flex;
- flex-direction: column;
- gap: 12px;
-}
diff --git a/packages/website-astro/src/components/feature-list/feature-list.tsx b/packages/website-astro/src/components/feature-list/feature-list.tsx
deleted file mode 100644
index 40b09bc68b..0000000000
--- a/packages/website-astro/src/components/feature-list/feature-list.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import clsx from "clsx";
-import { type FluentImageName, FluentImg } from "../fluent-img";
-import { Link } from "../link/link";
-import { DescriptionText, NeutralText, Text } from "../text/text";
-import style from "./feature-list.module.css";
-
-interface FeatureListItem {
- title: string;
- description?: string;
- image?: FluentImageName;
- link?: string;
-}
-
-export interface FeatureListProps {
- items?: FeatureListItem[];
-}
-
-export const FeatureList = ({ items }: FeatureListProps) => {
- if (items === undefined) {
- return null;
- }
-
- const content = items.map((x, i) => );
- return {content}
;
-};
-
-interface FeatureListItemElProps extends FeatureListItem {}
-
-const FeatureListItemEl = ({ title, description, image, link }: FeatureListItemElProps) => {
- return (
-
- {image &&
}
-
- {title}
- {description}
- {link && (
-
- Learn more →
-
- )}
-
-
- );
-};
diff --git a/packages/website-astro/src/components/fluent-img.astro b/packages/website-astro/src/components/fluent-img.astro
new file mode 100644
index 0000000000..55d39612c1
--- /dev/null
+++ b/packages/website-astro/src/components/fluent-img.astro
@@ -0,0 +1,25 @@
+---
+import { baseUrl } from "@site/src/utils";
+import type { HTMLAttributes } from "astro/types";
+import type { FluentImageName } from "./types";
+
+export interface Props extends HTMLAttributes<"img"> {
+ name: FluentImageName;
+}
+
+const { name, alt, ...rest } = Astro.props;
+const srcLight = baseUrl(`/img/fluent/${name}-l-standard-128x128.png`);
+const srcDark = baseUrl(`/img/fluent/${name}-d-standard-128x128.png`);
+---
+
+
+
+
+
diff --git a/packages/website-astro/src/components/fluent-img.tsx b/packages/website-astro/src/components/fluent-img.tsx
deleted file mode 100644
index a9945ccc85..0000000000
--- a/packages/website-astro/src/components/fluent-img.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import useBaseUrl from "@docusaurus/useBaseUrl";
-import { useColorMode } from "@site/src/components/docusaurus/core/theme-common";
-
-export interface FluentImgProps {
- name: FluentImageName;
- alt?: string;
- className?: string;
-}
-
-export type FluentImageName =
- | "book-pencil"
- | "chat"
- | "checkmark"
- | "data-trending"
- | "design-layout"
- | "design"
- | "devices-multiple"
- | "document-add"
- | "document-cloud"
- | "editor"
- | "eye-dev"
- | "firework"
- | "people-shield"
- | "shield-blue"
- | "shield-settings"
- | "tasks"
- | "text-edit";
-
-/**
- * Component for rendering a Fluent image.
- */
-export const FluentImg = ({ name, ...props }: FluentImgProps) => {
- const { colorMode } = useColorMode();
- const colorKey = colorMode === "dark" ? "d" : "l";
- const src = useBaseUrl(`/img/fluent/${name}-${colorKey}-standard-128x128.png`);
- return ;
-};
diff --git a/packages/website-astro/src/components/footer/footer.astro b/packages/website-astro/src/components/footer/footer.astro
index 612b52915c..ad094c524b 100644
--- a/packages/website-astro/src/components/footer/footer.astro
+++ b/packages/website-astro/src/components/footer/footer.astro
@@ -1,7 +1,7 @@
---
-import { Link } from "@site/src/components/link/link";
+import Link from "@site/src/components/link.astro";
import { Links } from "@site/src/constants";
-import ThemePicker from "../theme-picker/theme-picker.astro";
+import ThemePicker from "../theme-picker.astro";
import MicrosoftLogo from "./microsoft-logo.astro";
const { class: className } = Astro.props;
diff --git a/packages/website-astro/src/components/header/header.astro b/packages/website-astro/src/components/header/header.astro
index 364ceece96..18634e588f 100644
--- a/packages/website-astro/src/components/header/header.astro
+++ b/packages/website-astro/src/components/header/header.astro
@@ -1,5 +1,5 @@
---
-import ThemePicker from "../theme-picker/theme-picker.astro";
+import ThemePicker from "../theme-picker.astro";
import { HeaderMenu } from "./menu";
import Link from "./link.astro";
import { Icon } from "@astrojs/starlight/components";
diff --git a/packages/website-astro/src/components/hero-tabs/hero-tabs.module.css b/packages/website-astro/src/components/hero-tabs/hero-tabs.module.css
deleted file mode 100644
index 8e396c2b4b..0000000000
--- a/packages/website-astro/src/components/hero-tabs/hero-tabs.module.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.illustration-card {
- padding: 0;
-}
diff --git a/packages/website-astro/src/components/hero-tabs/hero-tabs.tsx b/packages/website-astro/src/components/hero-tabs/hero-tabs.tsx
deleted file mode 100644
index 8bcc69ee91..0000000000
--- a/packages/website-astro/src/components/hero-tabs/hero-tabs.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { type SelectTabData, type SelectTabEvent, Tab, TabList } from "@fluentui/react-components";
-import { type ReactNode, useCallback, useState } from "react";
-import style from "./hero-tabs.module.css";
-
-export interface HeroProps {
- tabs: HeroTab[];
-}
-
-interface HeroTab {
- value: string;
- content: ReactNode;
-}
-export const HeroTabs = ({ tabs }: HeroProps) => {
- const [selected, setSelected] = useState(tabs[0].value);
- const handleTabSelection = useCallback(
- (_: SelectTabEvent, data: SelectTabData) => {
- setSelected(data.value as any);
- },
- [setSelected],
- );
- const content = tabs.find((tab) => tab.value === selected)?.content;
- return (
- <>
- {content}
-
- {tabs.map((tab) => {
- return (
-
- {tab.value}
-
- );
- })}
-
- >
- );
-};
diff --git a/packages/website-astro/src/components/homepage/data-validation-hero-illustration.astro b/packages/website-astro/src/components/homepage/data-validation-hero-illustration.astro
new file mode 100644
index 0000000000..03e0f67ed8
--- /dev/null
+++ b/packages/website-astro/src/components/homepage/data-validation-hero-illustration.astro
@@ -0,0 +1,20 @@
+---
+import commonLibSharedTsp from "@site/src/assets/tsp-samples/data-validation/common-lib/common.tsp?raw";
+import commonLibMainTsp from "@site/src/assets/tsp-samples/data-validation/common-lib/main.tsp?raw";
+import IllustrationCard from "../illustration-card.astro";
+import { Code } from "@astrojs/starlight/components";
+import { Tabs, TabItem } from "@astrojs/starlight/components";
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/homepage/extensibility-illustration.astro b/packages/website-astro/src/components/homepage/extensibility-illustration.astro
new file mode 100644
index 0000000000..53b3a7eacd
--- /dev/null
+++ b/packages/website-astro/src/components/homepage/extensibility-illustration.astro
@@ -0,0 +1,15 @@
+---
+import { Code } from "@astrojs/starlight/components";
+import extensibilityTs from "@site/src/assets/tsp-samples/extensibility/custom-lib.ts?raw";
+import extensibilityTsp from "@site/src/assets/tsp-samples/extensibility/custom-lib.tsp?raw";
+---
+
+
diff --git a/packages/website-astro/src/components/homepage/hero-illustration.astro b/packages/website-astro/src/components/homepage/hero-illustration.astro
new file mode 100644
index 0000000000..7035554dce
--- /dev/null
+++ b/packages/website-astro/src/components/homepage/hero-illustration.astro
@@ -0,0 +1,104 @@
+---
+import { Code, TabItem, Tabs } from "@astrojs/starlight/components";
+import Window from "../window.astro";
+import openapiTsp from "@site/src/assets/tsp-samples/homepage/hero/http/main.tsp?raw";
+import openapiYaml from "@site/src/assets/tsp-samples/homepage/hero/http/out/openapi.yaml?raw";
+import jsonSchemaTsp from "@site/src/assets/tsp-samples/homepage/hero/json-schema/main.tsp?raw";
+import jsonSchemaOutput from "@site/src/assets/tsp-samples/homepage/hero/json-schema/out/schema.yaml?raw";
+import protobufTsp from "@site/src/assets/tsp-samples/protobuf/hero/main.tsp?raw";
+import protobufOutput from "@site/src/assets/tsp-samples/protobuf/hero/out/addressbook.proto?raw";
+import clsx from "clsx";
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/homepage/hero-illustration/hero-illustration.module.css b/packages/website-astro/src/components/homepage/hero-illustration/hero-illustration.module.css
deleted file mode 100644
index 44ae469652..0000000000
--- a/packages/website-astro/src/components/homepage/hero-illustration/hero-illustration.module.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.hero-illustration {
- width: 1200px;
-}
-@media only screen and (max-width: 1200px) {
- .hero-illustration {
- width: 700px;
- }
-}
-
-.split-windows {
- height: 600px;
- display: flex;
- flex-direction: row;
- align-items: stretch;
- gap: 2px;
-}
-
-.split-window {
- flex: 1;
- min-height: 100%;
- overflow-y: auto;
-}
-
-.output {
- font-size: 90%;
-}
-
-.hero-illustration :global(.theme-code-block) {
- border-radius: 0;
-}
diff --git a/packages/website-astro/src/components/homepage/hero-illustration/hero-illustration.tsx b/packages/website-astro/src/components/homepage/hero-illustration/hero-illustration.tsx
deleted file mode 100644
index c49b5bd787..0000000000
--- a/packages/website-astro/src/components/homepage/hero-illustration/hero-illustration.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import openapiTsp from "@site/src/assets/tsp-samples/homepage/hero/http/main.tsp?raw";
-import openapiYaml from "@site/src/assets/tsp-samples/homepage/hero/http/out/openapi.yaml?raw";
-
-import jsonSchemaTsp from "@site/src/assets/tsp-samples/homepage/hero/json-schema/main.tsp?raw";
-import jsonSchemaOutput from "@site/src/assets/tsp-samples/homepage/hero/json-schema/out/schema.yaml?raw";
-
-import protobufTsp from "@site/src/assets/tsp-samples/protobuf/hero/main.tsp?raw";
-import protobufOutput from "@site/src/assets/tsp-samples/protobuf/hero/out/addressbook.proto?raw";
-
-import { HeroTabs } from "../../hero-tabs/hero-tabs";
-import { Window } from "../../window/window";
-
-import clsx from "clsx";
-import { CodeBlock } from "../../prism-code-block/prism-code-block";
-import style from "./hero-illustration.module.css";
-
-export const HeroIllustration = () => {
- return (
- ,
- },
- { value: "JSON Schema", content: },
- { value: "Protobuf", content: },
- ]}
- >
- );
-};
-
-const OpenAPI3Illustration = () => {
- return (
-
-
-
- {openapiTsp}
-
-
- {openapiYaml}
-
-
-
- );
-};
-const JsonSchemaIllustration = () => {
- return (
-
-
-
- {jsonSchemaTsp}
-
-
- {jsonSchemaOutput}
-
-
-
- );
-};
-const ProtobufIllustration = () => {
- return (
-
-
-
- {protobufTsp}
-
-
- {protobufOutput}
-
-
-
- );
-};
diff --git a/packages/website-astro/src/components/homepage/hero.astro b/packages/website-astro/src/components/homepage/hero.astro
new file mode 100644
index 0000000000..0fcc47c038
--- /dev/null
+++ b/packages/website-astro/src/components/homepage/hero.astro
@@ -0,0 +1,157 @@
+---
+import { Links } from "@site/src/constants";
+import Button from "../button.astro";
+import { DescriptionText } from "../text/text";
+import HeroIllustration from "./hero-illustration.astro";
+import { link } from "@site/src/utils/link";
+---
+
+
+
+
+
+
TypeSpec
+
Describe APIs
+
+ Describe your data up front and generate schemas, API specifications, client / server code,
+ docs, and more.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/homepage/homepage.module.css b/packages/website-astro/src/components/homepage/homepage.module.css
deleted file mode 100644
index 6b867cf206..0000000000
--- a/packages/website-astro/src/components/homepage/homepage.module.css
+++ /dev/null
@@ -1,197 +0,0 @@
-.hero-divider {
- height: 2px;
- align-self: stretch;
- background: radial-gradient(circle, var(--colorNeutralStroke2) 0%, transparent 80%);
-}
-
-.hero-container {
- background-repeat: no-repeat;
- width: 100%;
- background-size: 100vw 94%;
-
- display: flex;
- padding: 120px 80px 52px 80px;
- flex-direction: column;
- gap: 56px;
- align-self: stretch;
-}
-
-[data-theme="light"] .hero-container {
- background: radial-gradient(
- 46.56% 45.08% at 56.04% 55.33%,
- rgba(0, 50, 255, 0.1) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(
- 46.69% 41.74% at 69.64% 60.81%,
- rgba(192, 59, 196, 0.1) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(
- 59.78% 45.73% at 30.42% 58.68%,
- rgba(0, 120, 212, 0.1) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(32.53% 31.57% at 50% 66.82%, rgba(70, 54, 104, 0.1) 0%, rgba(0, 0, 0, 0) 100%);
-}
-
-[data-theme="dark"] .hero-container {
- background: radial-gradient(
- 46.56% 45.08% at 56.04% 55.33%,
- rgba(0, 50, 255, 0.2) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(
- 46.69% 41.74% at 69.64% 60.81%,
- rgba(192, 59, 196, 0.2) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(
- 59.78% 45.73% at 30.42% 58.68%,
- rgba(0, 120, 212, 0.2) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(32.53% 31.57% at 50% 66.82%, rgba(70, 54, 104, 0.2) 0%, rgba(0, 0, 0, 0) 100%);
-}
-
-.hero-title {
- text-align: center;
- font-size: 24px;
- font-style: normal;
- font-weight: 600;
- line-height: 100%; /* 24px */
- letter-spacing: -0.24px;
-}
-
-.hero-subtitle {
- text-align: center;
- font-size: 96px;
- font-style: normal;
- font-weight: 600;
- line-height: 100%; /* 96px */
- letter-spacing: -1px;
- color: transparent;
-
- background: linear-gradient(
- 127deg,
- #6dc2b1 -17.91%,
- #9ac6e5 19.34%,
- #3579d8 56.65%,
- #b145bd 96.75%
- );
- background-clip: text;
-}
-
-@media only screen and (max-width: 1024px) {
- .hero-subtitle {
- font-size: 68px;
- }
-}
-
-@media only screen and (max-width: 728px) {
- .hero-subtitle {
- font-size: 48px;
- }
-}
-
-.hero-content {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- gap: 32px;
- align-self: stretch;
-}
-
-.hero-description,
-.overview-description {
- max-width: 600px;
- padding: 20px;
- text-align: center;
-}
-
-.hero-buttons {
- display: flex;
- justify-content: center;
- gap: 8px;
- align-self: stretch;
- flex-wrap: wrap;
-}
-
-.hero-demo {
- display: flex;
- padding: 0px 102px;
- flex-direction: column;
- align-items: center;
- gap: 10px;
- flex: 1 0 0;
- align-self: stretch;
-}
-
-@media only screen and (max-width: 728px) {
- .hero-demo {
- display: none;
- }
-}
-
-.overview {
- display: flex;
- flex-direction: column;
- gap: 128px;
- width: 100%;
- max-width: 100%;
- padding: 60px;
-}
-
-@media only screen and (max-width: 728px) {
- .overview {
- padding: 20px;
- }
-}
-
-.overview-subtitle {
- text-align: center;
- font-size: 40px;
- font-weight: 600;
- line-height: 48px;
-}
-
-.overview-summary {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 24px;
- align-self: stretch;
-}
-
-.closing {
- display: flex;
- padding: 80px 60px;
- flex-direction: column;
- gap: 16px;
- align-items: flex-start;
- align-self: baseline;
-}
-
-.closing-title {
- font-size: 40px;
- font-weight: 600;
- line-height: 48px;
-}
-
-@media only screen and (max-width: 728px) {
- .closing-title,
- .overview-subtitle {
- font-size: 32px;
- line-height: 40px;
- }
-}
-
-.closing-buttons {
- display: flex;
- gap: 8px;
-}
-
-.codeblock-seperator {
- height: 10px;
-}
diff --git a/packages/website-astro/src/components/homepage/homepage.tsx b/packages/website-astro/src/components/homepage/homepage.tsx
deleted file mode 100644
index 4d925cea31..0000000000
--- a/packages/website-astro/src/components/homepage/homepage.tsx
+++ /dev/null
@@ -1,207 +0,0 @@
-import { DataValidationHeroIllustration } from "@site/src/components/react-pages/data-validation";
-import { OpenAPI3HeroIllustration } from "@site/src/components/react-pages/openapi";
-import { Links } from "@site/src/constants";
-import { Button } from "../button/button";
-import { FeatureList } from "../feature-list/feature-list";
-import { LearnMoreCard } from "../learn-more-card/learn-more-card";
-import { LightDarkImg } from "../light-dark-img/light-dark-img";
-import { CodeBlock } from "../prism-code-block/prism-code-block";
-import { Section } from "../section/section";
-import { SectionedLayout } from "../sectioned-layout/sectioned-layout";
-import { DescriptionText, PrimaryText } from "../text/text";
-import style from "./homepage.module.css";
-import { OverviewIllustration } from "./overview-illustration/overview-illustration";
-
-export const HomeContent = () => {
- return (
- <>
-
-
-
-
-
-
-
-
-
-
- >
- );
-};
-
-const Hero = () => {
- return (
- <>
-
-
-
TypeSpec
-
Describe APIs
-
- Describe your data up front and generate schemas, API specifications, client / server
- code, docs, and more.
-
-
-
-
-
-
-
-
-
-
- >
- );
-};
-
-const Overview = () => {
- return (
- <>
-
-
-
Why TypeSpec
-
API-First for developers
-
- With TypeSpec, remove the handwritten files that slow you down, and generate
- standards-compliant API schemas in seconds.
-
-
-
} itemStyle="plain">
-
-
-
- >
- );
-};
-
-const OpenAPISection = () => {
- return (
- }
- >
-
-
- );
-};
-
-const DataValidationSection = () => {
- return (
- }
- >
-
-
- );
-};
-
-const EditorSection = () => {
- return (
- }
- >
-
-
- );
-};
-
-const ExtensibilitySection = () => {
- return (
- }
- >
-
-
- );
-};
-
-import extensibilityTs from "@site/src/assets/tsp-samples/extensibility/custom-lib.ts?raw";
-import extensibilityTsp from "@site/src/assets/tsp-samples/extensibility/custom-lib.tsp?raw";
-import { link } from "@site/src/utils";
-import { HeroIllustration } from "./hero-illustration/hero-illustration";
-
-const ExtensibilityIllustration = () => {
- return (
-
-
- {extensibilityTsp}
-
-
-
- {extensibilityTs}
-
-
- );
-};
-
-const Closing = () => {
- return (
-
-
Start your TypeSpec journey
-
- Install the TypeSpec CLI or check out the playground to get started.
-
-
-
-
-
-
- );
-};
diff --git a/packages/website-astro/src/components/homepage/openapi3-hero-illustration.astro b/packages/website-astro/src/components/homepage/openapi3-hero-illustration.astro
new file mode 100644
index 0000000000..dd240d4e0a
--- /dev/null
+++ b/packages/website-astro/src/components/homepage/openapi3-hero-illustration.astro
@@ -0,0 +1,29 @@
+---
+import heroMainTsp from "@site/src/assets/tsp-samples/openapi3/hero/main.tsp?raw";
+import heroOpenAPIYaml from "@site/src/assets/tsp-samples/openapi3/hero/out/openapi.yaml?raw";
+import IllustrationCard from "../illustration-card.astro";
+import { Code } from "@astrojs/starlight/components";
+import { Tabs, TabItem } from "@astrojs/starlight/components";
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/homepage/overview-illustration-terminal-content.tsx b/packages/website-astro/src/components/homepage/overview-illustration-terminal-content.tsx
new file mode 100644
index 0000000000..05df71b55e
--- /dev/null
+++ b/packages/website-astro/src/components/homepage/overview-illustration-terminal-content.tsx
@@ -0,0 +1,12 @@
+import { P } from "../painter/painter";
+
+export const OverviewIllustrationTerminalContent = () => {
+ <>
+ {P.line(P.secondary("~ /my-project"), " tsp init")}
+ {P.line(" ")}
+ {P.brand("? ")}
+ {"Select a template"}
+ {P.line(" Empty project")}
+ {P.line(P.brand("> "), P.brand.underline("REST API"))}
+ >;
+};
diff --git a/packages/website-astro/src/components/homepage/overview-illustration.astro b/packages/website-astro/src/components/homepage/overview-illustration.astro
new file mode 100644
index 0000000000..883c9b1179
--- /dev/null
+++ b/packages/website-astro/src/components/homepage/overview-illustration.astro
@@ -0,0 +1,37 @@
+---
+import IllustrationCard from "../illustration-card.astro";
+import LightDarkImg from "../light-dark-img.astro";
+import Terminal from "../terminal.astro";
+import Window from "../window.astro";
+import { OverviewIllustrationTerminalContent } from "./overview-illustration-terminal-content";
+---
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/homepage/overview-illustration/overview-illustration.module.css b/packages/website-astro/src/components/homepage/overview-illustration/overview-illustration.module.css
deleted file mode 100644
index 82a170e618..0000000000
--- a/packages/website-astro/src/components/homepage/overview-illustration/overview-illustration.module.css
+++ /dev/null
@@ -1,19 +0,0 @@
-.card {
- width: 723px;
- height: 542px;
- position: relative;
-}
-
-.terminal {
- position: absolute;
- top: 60px;
- left: 50px;
- width: 420px;
- height: 320px;
-}
-
-.ide {
- position: absolute;
- top: 226px;
- left: 183px;
-}
diff --git a/packages/website-astro/src/components/homepage/overview-illustration/overview-illustration.tsx b/packages/website-astro/src/components/homepage/overview-illustration/overview-illustration.tsx
deleted file mode 100644
index 523282ae52..0000000000
--- a/packages/website-astro/src/components/homepage/overview-illustration/overview-illustration.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IllustrationCard } from "../../illustration-card/illustration-card";
-import { LightDarkImg } from "../../light-dark-img/light-dark-img";
-import { P } from "../../painter/painter";
-import { Terminal } from "../../terminal/terminal";
-import { Window } from "../../window/window";
-import style from "./overview-illustration.module.css";
-
-export const OverviewIllustration = () => {
- return (
-
-
- {P.line(P.secondary("~ /my-project"), " tsp init")}
- {P.line(" ")}
- {P.brand("? ")}
- {"Select a template"}
- {P.line(" Empty project")}
- {P.line(P.brand("> "), P.brand.underline("REST API"))}
-
-
-
-
-
- );
-};
diff --git a/packages/website-astro/src/components/illustration-card.astro b/packages/website-astro/src/components/illustration-card.astro
new file mode 100644
index 0000000000..bd984c36d2
--- /dev/null
+++ b/packages/website-astro/src/components/illustration-card.astro
@@ -0,0 +1,24 @@
+---
+import Card, { type Props as CardProps } from "./card.astro";
+
+export interface Props extends CardProps {}
+const { class: cls, noPadding, ...props } = Astro.props;
+---
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/illustration-card/illustration-card.module.css b/packages/website-astro/src/components/illustration-card/illustration-card.module.css
deleted file mode 100644
index 204b4ae86a..0000000000
--- a/packages/website-astro/src/components/illustration-card/illustration-card.module.css
+++ /dev/null
@@ -1,11 +0,0 @@
-.illustration :global(.tabs-container) {
- margin-bottom: 0;
-}
-
-.illustration :global(.tabs-container) :global(.margin-top--md) {
- margin-top: 0 !important;
-}
-
-.illustration :global(img) {
- display: block;
-}
diff --git a/packages/website-astro/src/components/illustration-card/illustration-card.tsx b/packages/website-astro/src/components/illustration-card/illustration-card.tsx
deleted file mode 100644
index 69092e3b0d..0000000000
--- a/packages/website-astro/src/components/illustration-card/illustration-card.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import clsx from "clsx";
-import { Card, type CardProps } from "../card/card";
-import style from "./illustration-card.module.css";
-
-export interface IllustrationCardProps extends CardProps {}
-export const IllustrationCard = ({ className, noPadding, ...props }: IllustrationCardProps) => {
- return (
-
- );
-};
diff --git a/packages/website-astro/src/components/illustrations/formatter.astro b/packages/website-astro/src/components/illustrations/formatter.astro
new file mode 100644
index 0000000000..f0b07070f2
--- /dev/null
+++ b/packages/website-astro/src/components/illustrations/formatter.astro
@@ -0,0 +1,79 @@
+---
+import { Code } from "@astrojs/starlight/components";
+import notFormattedTsp from "@site/src/assets/tsp-samples/tooling/formatter/file.noformat.tsp?raw";
+import formattedTsp from "@site/src/assets/tsp-samples/tooling/formatter/formatted.tsp?raw";
+---
+
+
+
+
diff --git a/packages/website-astro/src/components/illustrations/openapi3-interoperate.astro b/packages/website-astro/src/components/illustrations/openapi3-interoperate.astro
new file mode 100644
index 0000000000..5603c3f705
--- /dev/null
+++ b/packages/website-astro/src/components/illustrations/openapi3-interoperate.astro
@@ -0,0 +1,50 @@
+---
+import interoperateTsp from "@site/src/assets/tsp-samples/openapi3/interoperate/main.tsp?raw";
+import interoperateOpenapi from "@site/src/assets/tsp-samples/openapi3/interoperate/openapi.yaml?raw";
+import interoperateSpectral from "@site/src/assets/tsp-samples/openapi3/interoperate/spectral.txt";
+import { Painter } from "@site/src/components/painter/painter";
+import Terminal from "@site/src/components/terminal.astro";
+import AssetImg from "../asset-img.astro";
+import WindowCarousel from "../window-carousel.astro";
+import { Code } from "@astrojs/starlight/components";
+---
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/interoperate-illustration/interoperate-illustration.module.css b/packages/website-astro/src/components/interoperate-illustration/interoperate-illustration.module.css
deleted file mode 100644
index 37bc3b9bff..0000000000
--- a/packages/website-astro/src/components/interoperate-illustration/interoperate-illustration.module.css
+++ /dev/null
@@ -1,19 +0,0 @@
-.illustration-main {
- display: grid;
- grid-template-areas:
- "tsp openapi"
- "swagger-ui openapi"
- "spectral spectral";
- gap: 5px;
- background-color: var(--colorNeutralBackground1);
-}
-
-.tsp {
- grid-area: tsp;
-}
-.openapi {
- grid-area: openapi;
-}
-.spectral {
- grid-area: spectral;
-}
diff --git a/packages/website-astro/src/components/interoperate-illustration/interoperate-illustration.tsx b/packages/website-astro/src/components/interoperate-illustration/interoperate-illustration.tsx
deleted file mode 100644
index 5ee792461d..0000000000
--- a/packages/website-astro/src/components/interoperate-illustration/interoperate-illustration.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import interoperateTsp from "@site/src/assets/tsp-samples/openapi3/interoperate/main.tsp?raw";
-import interoperateOpenapi from "@site/src/assets/tsp-samples/openapi3/interoperate/openapi.yaml?raw";
-import interoperateSpectral from "@site/src/assets/tsp-samples/openapi3/interoperate/spectral.txt";
-import { Painter } from "@site/src/components/painter/painter";
-import { Terminal } from "@site/src/components/terminal/terminal";
-import { AssetImg } from "../asset-img/asset-img";
-import { CodeBlock } from "../prism-code-block/prism-code-block";
-import { WindowCarousel, WindowCarouselItem } from "../window-carousel/window-carousel";
-import style from "./interoperate-illustration.module.css";
-
-export const OpenAPI3InteroperateIllustration = () => {
- return (
-
-
-
-
- {interoperateTsp}
-
-
- {interoperateOpenapi}
-
-
-
-
-
-
-
-
-
-
- );
-};
diff --git a/packages/website-astro/src/components/layouts/fluent-layout.tsx b/packages/website-astro/src/components/layouts/fluent-layout.tsx
index a0725df5db..7c4b6c5cd8 100644
--- a/packages/website-astro/src/components/layouts/fluent-layout.tsx
+++ b/packages/website-astro/src/components/layouts/fluent-layout.tsx
@@ -1,24 +1,14 @@
import { FluentProvider, webDarkTheme, webLightTheme } from "@fluentui/react-components";
-import { useColorMode } from "../docusaurus/core/theme-common";
-import style from "./layouts.module.css";
+import { useTheme } from "@site/src/utils/theme-react";
-export const FluentLayout = ({ children }) => {
- return {children};
+export const FluentLayout = (props) => {
+ return ;
};
-export const ShowcaseLayout = ({ children }) => {
+const FluentWrapper = ({ children, style }) => {
+ const theme = useTheme();
return (
- // Need to do this because fluentui can't do SSR simply...
-
- {children}
-
- );
-};
-
-const FluentWrapper = ({ children }) => {
- const { colorMode } = useColorMode();
- return (
-
+
{children}
);
diff --git a/packages/website-astro/src/components/layouts/layouts.module.css b/packages/website-astro/src/components/layouts/layouts.module.css
deleted file mode 100644
index ab1410dfc4..0000000000
--- a/packages/website-astro/src/components/layouts/layouts.module.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.showcase-layout {
- background-color: var(--colorNeutralBackground3);
-}
diff --git a/packages/website-astro/src/components/learn-more-card.astro b/packages/website-astro/src/components/learn-more-card.astro
new file mode 100644
index 0000000000..1b78d87591
--- /dev/null
+++ b/packages/website-astro/src/components/learn-more-card.astro
@@ -0,0 +1,59 @@
+---
+import FluentImg from "./fluent-img.astro";
+import Link from "./link.astro";
+import { NeutralText, DescriptionText, Text } from "./text/text";
+import type { FluentImageName } from "./types";
+
+export interface Props {
+ title: string;
+ description?: string;
+ image?: FluentImageName;
+ link: string;
+}
+
+const { image, title, description, link } = Astro.props;
+---
+
+
+
+
+ {image && }
+
+ {title}
+ {description}
+ Learn more →
+
+
diff --git a/packages/website-astro/src/components/learn-more-card/learn-more-card.module.css b/packages/website-astro/src/components/learn-more-card/learn-more-card.module.css
deleted file mode 100644
index b1b85c0633..0000000000
--- a/packages/website-astro/src/components/learn-more-card/learn-more-card.module.css
+++ /dev/null
@@ -1,32 +0,0 @@
-.item {
- width: 100%;
- text-decoration: none;
- border-radius: 14px;
- background-color: var(--colorNeutralBackground1);
- padding: 20px;
- display: flex;
- gap: 12px;
- border: 2px solid transparent;
-}
-
-.item:hover {
- text-decoration: none;
- border-color: var(--colorBrandForeground1);
-}
-
-.item:active {
- text-decoration: none;
- background-color: var(--colorNeutralBackground2);
-}
-
-.item-image {
- width: 52px;
- height: 52px;
- max-width: 64px;
-}
-
-.item-content {
- display: flex;
- flex-direction: column;
- gap: 12px;
-}
diff --git a/packages/website-astro/src/components/learn-more-card/learn-more-card.tsx b/packages/website-astro/src/components/learn-more-card/learn-more-card.tsx
deleted file mode 100644
index 839b7f75e6..0000000000
--- a/packages/website-astro/src/components/learn-more-card/learn-more-card.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { type FluentImageName, FluentImg } from "../fluent-img";
-import { Link } from "../link/link";
-import { DescriptionText, NeutralText, Text } from "../text/text";
-import style from "./learn-more-card.module.css";
-
-interface LearnMoreCardProps {
- title: string;
- description?: string;
- image?: FluentImageName;
- link: string;
-}
-
-export const LearnMoreCard = ({ title, description, image, link }: LearnMoreCardProps) => {
- return (
-
- {image && }
-
- {title}
- {description}
- Learn more →
-
-
- );
-};
diff --git a/packages/website-astro/src/components/light-dark-img.astro b/packages/website-astro/src/components/light-dark-img.astro
new file mode 100644
index 0000000000..8f37b1231b
--- /dev/null
+++ b/packages/website-astro/src/components/light-dark-img.astro
@@ -0,0 +1,28 @@
+---
+import AssetImg from "./asset-img.astro";
+
+export interface Props {
+ src: string;
+}
+
+const { src } = Astro.props;
+---
+
+
+
diff --git a/packages/website-astro/src/components/light-dark-img/light-dark-img.module.css b/packages/website-astro/src/components/light-dark-img/light-dark-img.module.css
deleted file mode 100644
index 10e66273d5..0000000000
--- a/packages/website-astro/src/components/light-dark-img/light-dark-img.module.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:global(html[data-theme="light"]) .dark {
- display: none;
-}
-
-:global(html[data-theme="dark"]) .light {
- display: none;
-}
-
-.light,
-.dark {
- display: block;
-}
diff --git a/packages/website-astro/src/components/light-dark-img/light-dark-img.tsx b/packages/website-astro/src/components/light-dark-img/light-dark-img.tsx
deleted file mode 100644
index f9249aca03..0000000000
--- a/packages/website-astro/src/components/light-dark-img/light-dark-img.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { AssetImg } from "../asset-img/asset-img";
-import style from "./light-dark-img.module.css";
-
-export const LightDarkImg = ({ src }: { src: string }) => {
- return (
-
- );
-};
diff --git a/packages/website-astro/src/components/link.astro b/packages/website-astro/src/components/link.astro
new file mode 100644
index 0000000000..331bcf7fcf
--- /dev/null
+++ b/packages/website-astro/src/components/link.astro
@@ -0,0 +1,11 @@
+---
+import { link } from "@site/src/utils";
+import type { HTMLAttributes } from "astro/types";
+
+export interface LinkProps extends HTMLAttributes<"a"> {}
+const { href, children, ...props } = Astro.props;
+---
+
+
+
+
diff --git a/packages/website-astro/src/components/link/link.tsx b/packages/website-astro/src/components/link/link.tsx
deleted file mode 100644
index b9e49f269a..0000000000
--- a/packages/website-astro/src/components/link/link.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { link } from "@site/src/utils";
-import type { ComponentProps } from "react";
-
-export interface LinkProps extends ComponentProps<"a"> {}
-
-export const Link = ({ href, children, ...props }: LinkProps) => {
- return (
-
- {children}
-
- );
-};
diff --git a/packages/website-astro/src/components/playground-component/loading-spinner.module.css b/packages/website-astro/src/components/playground-component/loading-spinner.module.css
index 1545220b82..9a042e1dcf 100644
--- a/packages/website-astro/src/components/playground-component/loading-spinner.module.css
+++ b/packages/website-astro/src/components/playground-component/loading-spinner.module.css
@@ -6,3 +6,108 @@
height: 100%;
width: 100%;
}
+
+.progress-bar {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ line-height: 0;
+ gap: 8px;
+ overflow: hidden;
+}
+
+@keyframes spinner {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+.spinner {
+ width: 32px;
+ height: 32px;
+
+ --fui-Spinner--strokeWidth: var(--strokeWidthThicker);
+
+ position: relative;
+ flex-shrink: 0;
+ mask-image: radial-gradient(
+ closest-side,
+ transparent calc(100% - var(--fui-Spinner--strokeWidth) - 1px),
+ white calc(100% - var(--fui-Spinner--strokeWidth)) calc(100% - 1px),
+ transparent 100%
+ );
+ background-color: var(--colorBrandStroke2Contrast);
+ color: var(--colorBrandStroke1);
+ animation-duration: 1.5s;
+ animation-iteration-count: infinite;
+ animation-timing-function: linear;
+ animation-name: spinner;
+}
+
+@keyframes tail {
+ 0% {
+ transform: rotate(-135deg);
+ }
+
+ 50% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(225deg);
+ }
+}
+.spinner-tail {
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 100%;
+ mask-image: conic-gradient(transparent 105deg, white 105deg);
+ animation-duration: 1.5s;
+ animation-iteration-count: infinite;
+ animation-timing-function: var(--curveEasyEase);
+ animation-name: tail;
+}
+
+.spinner-tail:before,
+.spinner-tail:after {
+ content: "";
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 100%;
+ animation: inherit;
+ background-image: conic-gradient(currentcolor 135deg, transparent 135deg);
+}
+
+@keyframes before {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 50% {
+ transform: rotate(105deg);
+ }
+ 100% {
+ transform: rotate(0deg);
+ }
+}
+.spinner-tail::before {
+ animation-name: before;
+}
+
+@keyframes after {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 50% {
+ transform: rotate(225deg);
+ }
+ 100% {
+ transform: rotate(0deg);
+ }
+}
+.spinner-tail::after {
+ animation-name: after;
+}
diff --git a/packages/website-astro/src/components/playground-component/loading-spinner.tsx b/packages/website-astro/src/components/playground-component/loading-spinner.tsx
index 551f4b74bc..19d008ffe6 100644
--- a/packages/website-astro/src/components/playground-component/loading-spinner.tsx
+++ b/packages/website-astro/src/components/playground-component/loading-spinner.tsx
@@ -1,4 +1,3 @@
-import { Spinner } from "@fluentui/react-components";
import style from "./loading-spinner.module.css";
export interface LoadingSpinnerProps {
@@ -7,7 +6,11 @@ export interface LoadingSpinnerProps {
export const LoadingSpinner = ({ message }: LoadingSpinnerProps) => {
return (
);
diff --git a/packages/website-astro/src/components/playground-component/playground.tsx b/packages/website-astro/src/components/playground-component/playground.tsx
index 07c0ba33a1..c72e0bea42 100644
--- a/packages/website-astro/src/components/playground-component/playground.tsx
+++ b/packages/website-astro/src/components/playground-component/playground.tsx
@@ -1,5 +1,4 @@
import versions from "@site/playground-versions.json";
-import { useColorMode } from "@site/src/components/docusaurus/core/theme-common";
import { ImportToolbarButton, TypeSpecPlaygroundConfig } from "@typespec/playground-website";
import {
Footer,
@@ -13,6 +12,7 @@ import { type FunctionComponent, useMemo } from "react";
import { type VersionData } from "./import-map";
import { LoadingSpinner } from "./loading-spinner";
+import { useTheme } from "@site/src/utils/theme-react";
import "@typespec/playground-website/style.css";
import "@typespec/playground/styles.css";
@@ -21,11 +21,11 @@ export interface WebsitePlaygroundProps {
}
export const WebsitePlayground = ({ versionData }: WebsitePlaygroundProps) => {
- const { colorMode } = useColorMode();
+ const theme = useTheme();
const editorOptions = useMemo(() => {
- return { theme: colorMode === "dark" ? "typespec-dark" : "typespec" };
- }, [colorMode]);
+ return { theme: theme === "dark" ? "typespec-dark" : "typespec" };
+ }, [theme]);
return (
{
- const { colorMode } = useColorMode();
-
- const title = props.title;
- const theme = pickedThemes[colorMode];
- return (
-
- {({ className, style, tokens, getLineProps, getTokenProps }) => (
-
- {title &&
{title}
}
-
- {tokens.map((line, i) => (
-
- {line.map((token, key) => (
-
- ))}
-
- ))}
-
-
- )}
-
- );
-};
diff --git a/packages/website-astro/src/components/react-pages/data-validation.module.css b/packages/website-astro/src/components/react-pages/data-validation.module.css
deleted file mode 100644
index 7b97d9f708..0000000000
--- a/packages/website-astro/src/components/react-pages/data-validation.module.css
+++ /dev/null
@@ -1,29 +0,0 @@
-.hero {
- display: flex;
- align-items: stretch;
- width: 100%;
- height: 100%;
- max-height: 100%;
- max-width: 100%;
- min-width: 0;
- min-height: 0;
- gap: 5px;
- overflow: auto;
-}
-
-.hero-main {
- flex: 1 1 50%;
- max-width: 50%;
- height: 100%;
- max-height: 100%;
-}
-
-.hero-shared {
- flex: 1 1 50%;
- max-width: 50%;
- height: 100%;
-}
-
-.hero :global(.theme-code-block) {
- height: 100%;
-}
diff --git a/packages/website-astro/src/components/react-pages/data-validation.tsx b/packages/website-astro/src/components/react-pages/data-validation.tsx
deleted file mode 100644
index 195518823e..0000000000
--- a/packages/website-astro/src/components/react-pages/data-validation.tsx
+++ /dev/null
@@ -1,135 +0,0 @@
-import { Section } from "@site/src/components/section/section";
-import { SectionedLayout } from "@site/src/components/sectioned-layout/sectioned-layout";
-import { UseCaseOverview } from "@site/src/components/use-case-overview/use-case-overview";
-import { Links } from "@site/src/constants";
-import { TabItem, Tabs } from "../react-tabs";
-
-export const DataValidationContent = () => {
- return (
-
-
- }
- />
- }
- >
-
-
- }
- >
-
-
-
- }
- >
-
-
-
-
- );
-};
-
-import commonLibSharedTsp from "@site/src/assets/tsp-samples/data-validation/common-lib/common.tsp?raw";
-import commonLibMainTsp from "@site/src/assets/tsp-samples/data-validation/common-lib/main.tsp?raw";
-export const DataValidationHeroIllustration = () => {
- return (
-
-
-
- {commonLibMainTsp}
-
-
- {commonLibSharedTsp}
-
-
-
- );
-};
-
-import multiFileTsp from "@site/src/assets/tsp-samples/json-schema/multi-file/main.tsp?raw";
-import multiFileAddress from "@site/src/assets/tsp-samples/json-schema/multi-file/out/Address.yaml?raw";
-import multiFileCar from "@site/src/assets/tsp-samples/json-schema/multi-file/out/Car.yaml?raw";
-import multiFilePerson from "@site/src/assets/tsp-samples/json-schema/multi-file/out/Person.yaml?raw";
-
-const MultiFileIllustration = () => {
- return (
-
-
-
- {multiFileTsp}
-
-
- {multiFileAddress}
-
-
- {multiFileCar}
-
-
- {multiFilePerson}
-
-
-
- );
-};
-
-import extensionsTsp from "@site/src/assets/tsp-samples/json-schema/extensions/main.tsp?raw";
-import extensionsYaml from "@site/src/assets/tsp-samples/json-schema/extensions/out/output.yaml?raw";
-
-const JsonSchemaExtensionsIllustration = () => {
- return (
-
-
-
- {extensionsTsp}
-
-
- {extensionsYaml}
-
-
-
- );
-};
-
-import validationDecoratorsTsp from "@site/src/assets/tsp-samples/data-validation/validation-decorators.tsp?raw";
-import { IllustrationCard } from "../illustration-card/illustration-card";
-import { LearnMoreCard } from "../learn-more-card/learn-more-card";
-import { CodeBlock } from "../prism-code-block/prism-code-block";
-
-const ValidationDecoratorsIllustration = () => {
- return (
-
- {validationDecoratorsTsp}
-
- );
-};
diff --git a/packages/website-astro/src/components/react-pages/openapi/index.tsx b/packages/website-astro/src/components/react-pages/openapi/index.tsx
deleted file mode 100644
index 22b334cce1..0000000000
--- a/packages/website-astro/src/components/react-pages/openapi/index.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import abstractionCode from "@site/src/assets/tsp-samples/openapi3/abstraction.tsp?raw";
-import heroMainTsp from "@site/src/assets/tsp-samples/openapi3/hero/main.tsp?raw";
-import heroOpenAPIYaml from "@site/src/assets/tsp-samples/openapi3/hero/out/openapi.yaml?raw";
-import { Links } from "@site/src/constants";
-import { IllustrationCard } from "../../illustration-card/illustration-card";
-import { OpenAPI3InteroperateIllustration } from "../../interoperate-illustration/interoperate-illustration";
-import { LearnMoreCard } from "../../learn-more-card/learn-more-card";
-import { CodeBlock } from "../../prism-code-block/prism-code-block";
-import { TabItem, Tabs } from "../../react-tabs";
-import { Section } from "../../section/section";
-import { SectionedLayout } from "../../sectioned-layout/sectioned-layout";
-import { UseCaseOverview } from "../../use-case-overview/use-case-overview";
-import style from "./openapi.module.css";
-
-export const OpenApiContent = () => {
- return (
-
- }
- />
-
- }
- >
-
-
-
- }
- >
-
-
-
-
- );
-};
-
-export const OpenAPI3HeroIllustration = () => {
- return (
-
-
-
- {heroMainTsp}
-
-
-
- {heroOpenAPIYaml}
-
-
-
-
- );
-};
-
-export const OpenAPI3AbstractCode = () => {
- return (
-
- {abstractionCode}
-
- );
-};
diff --git a/packages/website-astro/src/components/react-pages/openapi/openapi.module.css b/packages/website-astro/src/components/react-pages/openapi/openapi.module.css
deleted file mode 100644
index 2674463062..0000000000
--- a/packages/website-astro/src/components/react-pages/openapi/openapi.module.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.hero-openapi {
- max-height: 50vh;
- overflow-y: auto;
-}
diff --git a/packages/website-astro/src/components/react-pages/playground.tsx b/packages/website-astro/src/components/react-pages/playground.tsx
index 16de80b8a3..3cfb17ddd8 100644
--- a/packages/website-astro/src/components/react-pages/playground.tsx
+++ b/packages/website-astro/src/components/react-pages/playground.tsx
@@ -1,10 +1,16 @@
-import { useEffect, useState } from "react";
+import { useEffect, useState, type ReactNode } from "react";
import "@typespec/playground/styles.css";
-import { type VersionData, loadImportMap } from "../playground-component/import-map";
-import { LoadingSpinner } from "../playground-component/loading-spinner";
+import { FluentLayout } from "../layouts/fluent-layout";
+import { loadImportMap, type VersionData } from "../playground-component/import-map";
-export const AsyncPlayground = ({ latestVersion }: { latestVersion: string }) => {
+export const AsyncPlayground = ({
+ latestVersion,
+ fallback,
+}: {
+ latestVersion: string;
+ fallback?: ReactNode;
+}) => {
const [mod, setMod] = useState<{
versionData: VersionData;
WebsitePlayground: typeof import("../playground-component/playground").WebsitePlayground;
@@ -18,9 +24,9 @@ export const AsyncPlayground = ({ latestVersion }: { latestVersion: string }) =>
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
- return mod ? (
-
- ) : (
-
+ return (
+
+ {mod ? : fallback}
+
);
};
diff --git a/packages/website-astro/src/components/react-pages/tooling.module.css b/packages/website-astro/src/components/react-pages/tooling.module.css
deleted file mode 100644
index a0a74ecd57..0000000000
--- a/packages/website-astro/src/components/react-pages/tooling.module.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.formatter-illustration {
- --animation-duration: 6s;
- width: 100%;
- height: 420px;
- overflow: hidden;
- position: relative;
-}
-
-.formatter-illustration > * {
- width: 100%;
- height: 416px;
-}
-
-.formatter-illustration-formatted {
- position: absolute;
- opacity: 0;
- top: 0;
- left: 0;
- z-index: 100;
- animation: fade var(--animation-duration) infinite alternate;
-}
-
-.formatter-illustration-codeblock {
- height: 100%;
- overflow: hidden;
-}
-
-@keyframes fade {
- 0% {
- opacity: 0;
- }
- 40% {
- opacity: 0;
- }
- 60% {
- opacity: 1;
- }
- 100% {
- opacity: 1;
- }
-}
-
-.badge {
- position: absolute;
- top: 10px;
- right: 10px;
- z-index: 200;
- padding: 2px 5px;
- border-radius: 4px;
- color: #fefefe;
-}
-
-.formatter-illustration-unformatted .badge {
- background-color: var(--colorStatusWarningForeground1);
- animation: fade var(--animation-duration) infinite alternate-reverse;
-}
-.formatter-illustration-formatted .badge {
- background-color: var(--ifm-color-primary);
- animation: fade var(--animation-duration) infinite alternate;
-}
diff --git a/packages/website-astro/src/components/react-pages/tooling.tsx b/packages/website-astro/src/components/react-pages/tooling.tsx
deleted file mode 100644
index a8bb9158f1..0000000000
--- a/packages/website-astro/src/components/react-pages/tooling.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import { CodeBlock } from "../prism-code-block/prism-code-block";
-import { Section } from "../section/section";
-import { SectionedLayout } from "../sectioned-layout/sectioned-layout";
-import { UseCaseOverview } from "../use-case-overview/use-case-overview";
-import style from "./tooling.module.css";
-
-export const ToolingContent = () => {
- return (
-
- }
- />
-
- }
- >
-
-
- }
- >
-
-
- }
- />
-
- }
- />
-
-
- );
-};
-
-import useBaseUrl from "@docusaurus/useBaseUrl";
-import notFormattedTsp from "@site/src/assets/tsp-samples/tooling/formatter/file.noformat.tsp?raw";
-import formattedTsp from "@site/src/assets/tsp-samples/tooling/formatter/formatted.tsp?raw";
-import { Links } from "../../constants";
-import { LearnMoreCard } from "../learn-more-card/learn-more-card";
-import { LightDarkImg } from "../light-dark-img/light-dark-img";
-
-const FormatterIllustration = () => {
- return (
-
-
-
Unformatted
-
- {notFormattedTsp}
-
-
-
-
Formatted
-
- {formattedTsp}
-
-
-
- );
-};
diff --git a/packages/website-astro/src/components/react-tabs/index.tsx b/packages/website-astro/src/components/react-tabs/index.tsx
deleted file mode 100644
index 6769aa858d..0000000000
--- a/packages/website-astro/src/components/react-tabs/index.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { Tab, TabList, type SelectTabData, type SelectTabEvent } from "@fluentui/react-components";
-import { useCallback, useState, type ReactNode } from "react";
-
-export interface TabsProps {
- children: (typeof TabItem)[];
-}
-
-export const Tabs = ({ children }) => {
- const tabs = children;
-
- const [selected, setSelected] = useState(tabs[0].props.value);
-
- const handleTabSelection = useCallback(
- (_: SelectTabEvent, data: SelectTabData) => {
- setSelected(data.value as any);
- },
- [setSelected],
- );
-
- const content = tabs.find((tab: any) => tab.props.value === selected)?.props.children;
-
- return (
-
-
- {tabs.map((tab: any) => {
- return (
-
- {tab.props.value}
-
- );
- })}
-
-
{content}
-
- );
-};
-
-export interface TabItemProps {
- value: unknown;
- children: ReactNode;
-}
-
-export const TabItem = ({ children }: { value: any; children: any }) => {
- return children;
-};
diff --git a/packages/website-astro/src/components/section.astro b/packages/website-astro/src/components/section.astro
new file mode 100644
index 0000000000..eae5a21e5e
--- /dev/null
+++ b/packages/website-astro/src/components/section.astro
@@ -0,0 +1,162 @@
+---
+import clsx from "clsx";
+import AssetImg from "./asset-img.astro";
+import { DescriptionText, NeutralText, PrimaryText } from "./text/text";
+
+export interface Props {
+ header?: string;
+ title?: string;
+ description?: string;
+ illustration?: string;
+ itemStyle?: "card" | "plain";
+ layout?: "text-left" | "text-right";
+}
+
+const { layout, header, title, description, illustration } = Astro.props;
+---
+
+
+
+
+
+
+ {
+ header || title || description ? (
+
+ ) : undefined
+ }
+
+
+
+
+
diff --git a/packages/website-astro/src/components/section/section.module.css b/packages/website-astro/src/components/section/section.module.css
deleted file mode 100644
index be411bcc35..0000000000
--- a/packages/website-astro/src/components/section/section.module.css
+++ /dev/null
@@ -1,118 +0,0 @@
-.section {
- display: flex;
- gap: 10px 60px;
- width: 100%;
- max-width: 100%;
- align-items: center;
- align-content: center;
- flex-direction: column;
-}
-
-@media only screen and (min-width: 1200px) {
- .section {
- padding: 0 40px;
- gap: 3vw;
- }
-
- .text-left {
- flex-direction: row;
- }
-
- .text-right {
- flex-direction: row-reverse;
- }
-}
-
-@media only screen and (min-width: 1500px) {
- .section {
- gap: 170px;
- }
-}
-
-.info-container {
- display: flex;
- max-width: 100%;
- padding: 20px;
- justify-content: center;
-}
-
-.info {
- display: flex;
- width: 520px;
- flex-direction: column;
- align-items: flex-start;
- gap: 56px;
-}
-
-.info-heading {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- gap: var(--spacing-vertical-spacing-xxl, 24px);
- align-self: stretch;
-}
-
-.info-title {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- gap: var(--vertical-xl, 20px);
- align-self: stretch;
-}
-
-.info-description {
- font-size: 20px;
- font-style: normal;
- font-weight: 400;
- line-height: 28px;
-}
-
-.illustration {
- flex: 1 0 50%;
- max-width: calc(100% - 40px);
- overflow: hidden;
-}
-
-.illustration :global(.tabs-container) {
- margin-bottom: 0;
-}
-
-.illustration :global(.tabs-container) :global(.margin-top--md) {
- margin-top: 0 !important;
-}
-
-.items-list {
- width: 100%;
- display: flex;
- flex-direction: column;
-}
-
-.item {
- display: flex;
- gap: 12px;
-}
-
-.items-list-card .item-image {
- width: 52px;
- height: 52px;
- max-width: 52px;
-}
-
-.items-list-plain {
- gap: 40px;
-}
-
-.items-list-card {
- gap: 12px;
-}
-
-.items-list-plain .item-image {
- width: 64px;
- height: 64px;
- max-width: 64px;
-}
-.item-content {
- display: flex;
- flex-direction: column;
- gap: 12px;
-}
diff --git a/packages/website-astro/src/components/section/section.tsx b/packages/website-astro/src/components/section/section.tsx
deleted file mode 100644
index 9fe9332b18..0000000000
--- a/packages/website-astro/src/components/section/section.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import clsx from "clsx";
-import type { ReactNode } from "react";
-import { AssetImg } from "../asset-img/asset-img";
-import { DescriptionText, NeutralText, PrimaryText } from "../text/text";
-import style from "./section.module.css";
-
-export interface SectionProps {
- header?: string;
- title?: string;
- description?: string;
- illustration: string | React.ReactNode;
- children?: ReactNode;
- itemStyle?: "card" | "plain";
- layout?: "text-left" | "text-right";
-}
-
-export const Section = ({
- header,
- title,
- description,
- children,
- layout,
- illustration,
-}: SectionProps) => {
- const heading =
- header || title || description ? (
-
- ) : undefined;
- return (
-
-
-
- {heading}
- {children}
-
-
-
- {typeof illustration === "string" ?
: illustration}
-
-
- );
-};
diff --git a/packages/website-astro/src/components/sectioned-layout.astro b/packages/website-astro/src/components/sectioned-layout.astro
new file mode 100644
index 0000000000..6621777ea2
--- /dev/null
+++ b/packages/website-astro/src/components/sectioned-layout.astro
@@ -0,0 +1,52 @@
+---
+
+---
+
+
+
+
diff --git a/packages/website-astro/src/components/sectioned-layout/sectioned-layout.module.css b/packages/website-astro/src/components/sectioned-layout/sectioned-layout.module.css
deleted file mode 100644
index 4d33effd0c..0000000000
--- a/packages/website-astro/src/components/sectioned-layout/sectioned-layout.module.css
+++ /dev/null
@@ -1,42 +0,0 @@
-.layout {
- overflow-x: hidden;
-}
-
-[data-theme="light"] .layout {
- background: radial-gradient(
- 154.41% 34.41% at 18.39% 93.33%,
- rgba(0, 117, 255, 0.1) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(
- 83.89% 52.66% at 92.5% 77.61%,
- rgba(192, 59, 196, 0.07) 0%,
- rgba(0, 0, 0, 0) 82.67%
- ),
- linear-gradient(328deg, rgba(0, 120, 212, 0.1) -34.57%, rgba(0, 0, 0, 0) 111.7%);
-}
-
-[data-theme="dark"] .layout {
- background: radial-gradient(
- 154.41% 34.41% at 18.39% 93.33%,
- rgba(0, 117, 255, 0.2) 0%,
- rgba(0, 0, 0, 0) 100%
- ),
- radial-gradient(
- 83.89% 52.66% at 92.5% 77.61%,
- rgba(192, 59, 196, 0.14) 0%,
- rgba(0, 0, 0, 0) 82.67%
- ),
- linear-gradient(328deg, rgba(0, 120, 212, 0.2) -34.57%, rgba(0, 0, 0, 0) 111.7%);
-}
-
-.layout-inner {
- display: flex;
- padding: 48px 0px 60px 0px;
- margin: auto;
- max-width: 1464px;
- flex-direction: column;
- align-items: center;
- gap: 128px;
- align-self: stretch;
-}
diff --git a/packages/website-astro/src/components/sectioned-layout/sectioned-layout.tsx b/packages/website-astro/src/components/sectioned-layout/sectioned-layout.tsx
deleted file mode 100644
index 6efff15c5f..0000000000
--- a/packages/website-astro/src/components/sectioned-layout/sectioned-layout.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import style from "./sectioned-layout.module.css";
-
-export const SectionedLayout = ({ children }) => {
- return (
-
- );
-};
diff --git a/packages/website-astro/src/components/starlight-overrides/PageFrame.astro b/packages/website-astro/src/components/starlight-overrides/PageFrame.astro
new file mode 100644
index 0000000000..f6f03c4e8f
--- /dev/null
+++ b/packages/website-astro/src/components/starlight-overrides/PageFrame.astro
@@ -0,0 +1,22 @@
+---
+import Default from "@astrojs/starlight/components/PageFrame.astro";
+import Footer from "../footer/footer.astro";
+import type { Props } from "@astrojs/starlight/props";
+---
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/terminal.astro b/packages/website-astro/src/components/terminal.astro
new file mode 100644
index 0000000000..9499a48e7d
--- /dev/null
+++ b/packages/website-astro/src/components/terminal.astro
@@ -0,0 +1,26 @@
+---
+import Window from "./window.astro";
+
+const { class: cls, ...rest } = Astro.props;
+---
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/terminal/terminal.module.css b/packages/website-astro/src/components/terminal/terminal.module.css
deleted file mode 100644
index 5173e84b32..0000000000
--- a/packages/website-astro/src/components/terminal/terminal.module.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.terminal-code {
- background-color: var(--window-color);
- margin: 0;
- height: 100%;
-}
-
-[data-theme="light"] .terminal {
- --window-color: var(--colorNeutralBackground2);
-}
-[data-theme="dark"] .terminal {
- --window-color: var(--colorNeutralBackground4);
-}
diff --git a/packages/website-astro/src/components/terminal/terminal.tsx b/packages/website-astro/src/components/terminal/terminal.tsx
deleted file mode 100644
index 636d05f408..0000000000
--- a/packages/website-astro/src/components/terminal/terminal.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import clsx from "clsx";
-import { Window, type WindowProps } from "../window/window";
-import style from "./terminal.module.css";
-
-export interface TerminalProps extends WindowProps {}
-
-export const Terminal = ({ className, children, ...props }: WindowProps) => {
- return (
-
- {children}
-
- );
-};
diff --git a/packages/website-astro/src/components/theme-picker/theme-picker.astro b/packages/website-astro/src/components/theme-picker.astro
similarity index 100%
rename from packages/website-astro/src/components/theme-picker/theme-picker.astro
rename to packages/website-astro/src/components/theme-picker.astro
diff --git a/packages/website-astro/src/components/theme-picker/theme-picker.module.css b/packages/website-astro/src/components/theme-picker/theme-picker.module.css
deleted file mode 100644
index 05d31224a0..0000000000
--- a/packages/website-astro/src/components/theme-picker/theme-picker.module.css
+++ /dev/null
@@ -1,35 +0,0 @@
-.theme-picker {
- display: flex;
- align-items: flex-start;
- padding: 4px 6px;
- gap: 6px;
- border: 1px solid var(--colorNeutralStroke1);
- border-radius: 70px;
-}
-
-.theme-option {
- cursor: pointer;
- display: flex;
- padding: 2px;
- justify-content: center;
- align-items: center;
- color: var(--colorNeutralForeground2);
-}
-
-.theme-option:hover {
- color: var(--colorNeutralForeground1);
- border-radius: 50%;
-}
-
-.selected {
- background-color: var(--colorBrandForeground1);
- border-radius: 50%;
-}
-
-[data-theme="light"] .selected {
- color: var(--colorNeutralStroke1);
-}
-.selected {
- background-color: var(--colorBrandForeground1);
- border-radius: 50%;
-}
diff --git a/packages/website-astro/src/components/types.ts b/packages/website-astro/src/components/types.ts
new file mode 100644
index 0000000000..ade48152f7
--- /dev/null
+++ b/packages/website-astro/src/components/types.ts
@@ -0,0 +1,18 @@
+export type FluentImageName =
+ | "book-pencil"
+ | "chat"
+ | "checkmark"
+ | "data-trending"
+ | "design-layout"
+ | "design"
+ | "devices-multiple"
+ | "document-add"
+ | "document-cloud"
+ | "editor"
+ | "eye-dev"
+ | "firework"
+ | "people-shield"
+ | "shield-blue"
+ | "shield-settings"
+ | "tasks"
+ | "text-edit";
diff --git a/packages/website-astro/src/components/use-case-feature/use-case-feature.module.css b/packages/website-astro/src/components/use-case-feature/use-case-feature.module.css
deleted file mode 100644
index 6d17e17606..0000000000
--- a/packages/website-astro/src/components/use-case-feature/use-case-feature.module.css
+++ /dev/null
@@ -1,49 +0,0 @@
-.feature-group {
- display: flex;
- align-items: stretch;
- align-self: center;
- flex-direction: column;
- padding: 0 80px;
-}
-
-.feature {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 24px;
- max-width: 320px;
-}
-
-.content {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 10px;
-}
-
-.image {
- width: 64px;
- height: 64px;
-}
-
-@media only screen and (min-width: 1200px) {
- .feature-card {
- width: 350px;
- }
-}
-
-@media only screen and (min-width: 1024px) {
- .feature-group {
- width: 100%;
- flex-direction: row;
- justify-content: space-between;
- }
-
- .feature {
- align-items: baseline;
- }
-
- .content {
- align-items: baseline;
- }
-}
diff --git a/packages/website-astro/src/components/use-case-feature/use-case-feature.tsx b/packages/website-astro/src/components/use-case-feature/use-case-feature.tsx
deleted file mode 100644
index a8e226ec52..0000000000
--- a/packages/website-astro/src/components/use-case-feature/use-case-feature.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { type FluentImageName, FluentImg } from "../fluent-img";
-import { Link } from "../link/link";
-import { DescriptionText, NeutralText } from "../text/text";
-import style from "./use-case-feature.module.css";
-
-export interface UseCaseFeatureProps {
- image: FluentImageName;
- title: string;
- subtitle: string;
- link: string;
-}
-export const UseCaseFeature = ({ image, title, subtitle, link }: UseCaseFeatureProps) => {
- return (
-
-
-
- {title}
- {subtitle}
- Learn more →
-
-
- );
-};
-
-export const UseCaseFeatureGroup = ({ children }) => {
- return {children}
;
-};
diff --git a/packages/website-astro/src/components/use-case-overview.astro b/packages/website-astro/src/components/use-case-overview.astro
new file mode 100644
index 0000000000..2e7964e82c
--- /dev/null
+++ b/packages/website-astro/src/components/use-case-overview.astro
@@ -0,0 +1,93 @@
+---
+import Button from "./button.astro";
+import { DescriptionText, NeutralText } from "./text/text";
+
+export interface Props {
+ title: string;
+ subtitle: string;
+ link: string;
+ illustration?: React.ReactNode;
+}
+const props = Astro.props;
+---
+
+
+
+
+
+
+
+ {props.title}
+
+
+
+ {props.subtitle}
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/components/use-case-overview/use-case-overview.module.css b/packages/website-astro/src/components/use-case-overview/use-case-overview.module.css
deleted file mode 100644
index ba89e801fd..0000000000
--- a/packages/website-astro/src/components/use-case-overview/use-case-overview.module.css
+++ /dev/null
@@ -1,58 +0,0 @@
-.container {
- padding-top: 100px;
- padding-bottom: 80px;
-}
-
-.overview {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- align-content: center;
-
- margin: auto;
-}
-
-.content {
- flex: 1 1 50%;
- padding: 80px;
-}
-
-.spacer {
- height: 32px;
-}
-
-.title {
- max-width: 522px;
-}
-.subtitle {
- max-width: 522px;
-}
-
-.illustration {
- width: 40vw;
- max-height: 100%;
- padding: 0;
- overflow: hidden;
-}
-
-@media only screen and (min-width: 1024px) {
- .overview {
- flex-direction: row;
- }
- .illustration {
- width: 50vw;
- }
-}
-
-@media only screen and (min-width: 1200px) {
- .overview {
- max-width: 1464px;
- }
-}
-
-@media only screen and (max-width: 1023px) {
- .illustration {
- display: none;
- }
-}
diff --git a/packages/website-astro/src/components/use-case-overview/use-case-overview.tsx b/packages/website-astro/src/components/use-case-overview/use-case-overview.tsx
deleted file mode 100644
index e39031d5d0..0000000000
--- a/packages/website-astro/src/components/use-case-overview/use-case-overview.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import { Button } from "../button/button";
-import { DescriptionText, NeutralText } from "../text/text";
-import style from "./use-case-overview.module.css";
-
-export interface UseCaseOverviewProps {
- title: string;
- subtitle: string;
- link: string;
- illustration?: React.ReactNode;
-}
-
-export const UseCaseOverview = (props: UseCaseOverviewProps) => {
- return (
-
-
-
-
- {props.title}
-
-
-
- {props.subtitle}
-
-
-
-
-
-
{props.illustration}
-
-
- );
-};
diff --git a/packages/website-astro/src/components/window-carousel.astro b/packages/website-astro/src/components/window-carousel.astro
new file mode 100644
index 0000000000..32c9606cf1
--- /dev/null
+++ b/packages/website-astro/src/components/window-carousel.astro
@@ -0,0 +1,187 @@
+---
+import Window from "./window.astro";
+const tabs = Object.keys(Astro.slots);
+---
+
+
+
+
+
+ {
+ tabs.map(async (name, i) => {
+ const render = await Astro.slots.render(name);
+ return (
+
+
+
+ );
+ })
+ }
+
+
+ {
+ tabs.map((name, i) => (
+ -
+
+ {name}
+
+
+ ))
+ }
+
+
+
+
diff --git a/packages/website-astro/src/components/window-carousel/use-carousel.ts b/packages/website-astro/src/components/window-carousel/use-carousel.ts
deleted file mode 100644
index f54b8586de..0000000000
--- a/packages/website-astro/src/components/window-carousel/use-carousel.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { Children, type ReactElement, type ReactNode, isValidElement, useMemo } from "react";
-import type { WindowCarouselItemProps } from "./window-carousel";
-
-export interface CarouselData {
- items: {
- value: string;
- label: string;
- content: ReactNode;
- }[];
-}
-
-export interface UseCarouselOptions {
- children: ReactNode;
-}
-
-export function useCarousel({ children }: UseCarouselOptions): CarouselData {
- const items = useMemo(() => {
- const result = sanitizeTabsChildren(children);
- return result.map((child) => {
- return {
- value: child.props.value,
- label: child.props.value,
- content: child.props.children,
- };
- });
- }, [children]);
- return { items };
-}
-
-function sanitizeTabsChildren(children: ReactNode) {
- return (Children.toArray(children)
- .filter((child) => child !== "\n")
- .map((child: any) => {
- if (!child || (isValidElement(child) && isCarouselItem(child))) {
- return child;
- }
- throw new Error(
- `Docusaurus error: Bad child <${
- typeof child.type === "string" ? child.type : child.type.name
- }>: all children of the component should be , and every should have a unique "value" prop.`,
- );
- })
- ?.filter(Boolean) ?? []) as ReactElement[];
-}
-
-function isCarouselItem(
- comp: ReactElement,
-): comp is ReactElement {
- const { props } = comp;
- return !!props && typeof props === "object" && "value" in props;
-}
diff --git a/packages/website-astro/src/components/window-carousel/window-carousel.module.css b/packages/website-astro/src/components/window-carousel/window-carousel.module.css
deleted file mode 100644
index 2199fbd1e8..0000000000
--- a/packages/website-astro/src/components/window-carousel/window-carousel.module.css
+++ /dev/null
@@ -1,34 +0,0 @@
-.items {
- position: relative;
- z-index: 0;
-}
-
-.item {
- background-color: var(--colorNeutralBackground1);
- box-shadow: var(--shadow4);
- box-sizing: border-box;
- left: 0;
- transition: left 0.2s linear;
- width: calc(100% - 100px);
-}
-
-.item:not(.item-selected) {
- position: absolute;
- top: 10px;
- left: 96px;
- max-height: calc(100% - 20px);
- cursor: pointer;
-}
-
-.item:not(.item-selected):hover {
- outline: 4px solid var(--colorBrandForeground1);
-}
-
-.item-selected {
- position: relative;
- z-index: 100;
-}
-
-.item :global(img) {
- display: block;
-}
diff --git a/packages/website-astro/src/components/window-carousel/window-carousel.tsx b/packages/website-astro/src/components/window-carousel/window-carousel.tsx
deleted file mode 100644
index cd21661589..0000000000
--- a/packages/website-astro/src/components/window-carousel/window-carousel.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import { Tab, TabList } from "@fluentui/react-components";
-import { Window } from "@site/src/components/window/window";
-import clsx from "clsx";
-import { type ReactNode, useCallback, useState } from "react";
-import { useCarousel } from "./use-carousel";
-import style from "./window-carousel.module.css";
-
-export interface WindowCarouselProps {
- defaultValue?: string;
- children: ReactNode;
-}
-
-export const WindowCarousel = ({ defaultValue, children }: WindowCarouselProps) => {
- const { items } = useCarousel({ children });
-
- const [value, setValue] = useState(defaultValue ?? items[0].value);
-
- const handleTabChange = useCallback(
- (_: any, data: any) => {
- setValue(data.value);
- },
- [setValue],
- );
- return (
-
-
- {items.map((x) => {
- return (
-
- {x.content}
-
- );
- })}
-
-
- {items.map((x) => (
-
- {x.label}
-
- ))}
-
-
- );
-};
-
-export interface WindowCarouselItemRenderProps {
- value: string;
- selected: boolean;
- onSelected: (value: string) => void;
- children: ReactNode;
-}
-
-const WindowCarouselItemRender = ({
- value,
- onSelected,
- selected,
- children,
-}: WindowCarouselItemRenderProps) => {
- const onClick = useCallback(() => {
- onSelected(value);
- }, [onSelected, value]);
- return (
-
- {children}
-
- );
-};
-
-export interface WindowCarouselItemProps {
- value: string;
- children: ReactNode;
-}
-
-export const WindowCarouselItem = ({ children }: WindowCarouselItemProps) => {
- return <>{children}>;
-};
diff --git a/packages/website-astro/src/components/window.astro b/packages/website-astro/src/components/window.astro
new file mode 100644
index 0000000000..0f3e7e71a6
--- /dev/null
+++ b/packages/website-astro/src/components/window.astro
@@ -0,0 +1,86 @@
+---
+import type { HTMLAttributes } from "astro/types";
+
+export interface Props extends HTMLAttributes<"div"> {
+ title?: string;
+ className?: string;
+ hideHeader?: boolean;
+ children?: React.ReactNode;
+}
+
+const { title, className, hideHeader, children, class: cls, ...others } = Astro.props;
+---
+
+
+
+
+ {
+ hideHeader ? (
+ ""
+ ) : (
+ <>
+
+
+ >
+ )
+ }
+
+
diff --git a/packages/website-astro/src/components/window/window.module.css b/packages/website-astro/src/components/window/window.module.css
deleted file mode 100644
index 88ce9f4364..0000000000
--- a/packages/website-astro/src/components/window/window.module.css
+++ /dev/null
@@ -1,49 +0,0 @@
-.window {
- border-radius: 12px;
- border: 1px solid var(--colorNeutralStrokeOnBrand);
- overflow: hidden;
-}
-
-.header {
- background-color: var(--window-color, var(--colorNeutralBackground4));
- display: flex;
- align-items: center;
- justify-content: space-between;
- height: 35px;
- padding: 0 16px;
-}
-
-.header-divider {
- height: 1px;
- align-self: stretch;
- background: radial-gradient(circle, var(--colorNeutralStroke2) 0%, rgba(82, 82, 82, 0) 80%);
-}
-
-.header-right-spacer {
- width: 52px;
-}
-
-.actions {
- display: flex;
- align-items: center;
- gap: 8px;
-}
-
-.btn-close,
-.btn-minify,
-.btn-expand {
- border-radius: 50%;
- width: 12px;
- height: 12px;
-}
-
-.btn-close {
- background: #ec6a5e;
-}
-.btn-minify {
- background: #f4bf4f;
-}
-
-.btn-expand {
- background: #62c554;
-}
diff --git a/packages/website-astro/src/components/window/window.tsx b/packages/website-astro/src/components/window/window.tsx
deleted file mode 100644
index 9636784eed..0000000000
--- a/packages/website-astro/src/components/window/window.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import clsx from "clsx";
-import type { MouseEventHandler } from "react";
-import style from "./window.module.css";
-
-export interface WindowProps {
- title?: string;
- className?: string;
- hideHeader?: boolean;
- onClick?: MouseEventHandler;
- children?: React.ReactNode;
-}
-
-export const Window = ({ className, children, title, hideHeader, ...others }: WindowProps) => {
- const header = hideHeader ? (
- ""
- ) : (
- <>
-
-
- >
- );
- return (
-
- {header}
- {children}
-
- );
-};
-
-interface WindowRimProps {
- title?: string;
-}
-const WindowHeader = ({ title }: WindowRimProps) => {
- return (
-
- );
-};
diff --git a/packages/website-astro/src/css/custom.css b/packages/website-astro/src/css/custom.css
index 7d565d1129..dc505adf48 100644
--- a/packages/website-astro/src/css/custom.css
+++ b/packages/website-astro/src/css/custom.css
@@ -1,176 +1,9 @@
-/**
- * Any CSS included here will be global. The classic template
- * bundles Infima by default. Infima is a CSS framework designed to
- * work well for content-centric websites.
- */
-
-/* Fluent Colors for reference */
-:root {
- /* Brand Foreground */
- --colorBrandForeground1: #0f6cbd;
- --colorBrandForeground2: #115ea3;
- --colorNeutralForegroundOnBrand: #ffffff;
-
- /* Brand background */
- --colorBrandBackground: #0f6cbd;
- --colorBrandBackgroundHover: #115ea3;
-
- /* Neutral Foreground */
- --colorNeutralForeground1: #242424;
- --colorNeutralForeground2: #424242;
- --colorNeutralForeground3: #616161;
-
- /* Neutral background */
- --colorNeutralBackground1: #ffffff;
- --colorNeutralBackground2: #fafafa;
- --colorNeutralBackground3: #f5f5f5;
- --colorNeutralBackground4: #f0f0f0;
-
- /* Stroke */
- --colorNeutralStroke1: #d1d1d1;
- --colorNeutralStroke2: #e0e0e0;
- --colorNeutralStroke3: #f0f0f0;
- --colorNeutralStrokeOnBrand: #ffffff;
-
- --colorNeutralStroke1Hover: #c7c7c7;
-
- /* Status warning */
- --colorStatusWarningBackground1: #fff9f5;
- --colorStatusWarningBackground2: #fdcfb4;
- --colorStatusWarningBackground3: #f7630c;
- --colorStatusWarningForeground1: #bc4b09;
- --colorStatusWarningForeground2: #8a3707;
- --colorStatusWarningForeground3: #bc4b09;
-
- /* Status danger */
- --colorStatusDangerBackground1: #fdf3f4;
- --colorStatusDangerBackground2: #eeacb2;
- --colorStatusDangerBackground3: #c50f1f;
- --colorStatusDangerForeground1: #b10e1c;
- --colorStatusDangerForeground2: #6e0811;
- --colorStatusDangerForeground3: #c50f1f;
-
- /* Shadows */
- --shadow2: 0 0 2px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.14);
- --shadow4: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.14);
- --shadow8: 0 0 2px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.14);
- --shadow16: 0 0 2px rgba(0, 0, 0, 0.12), 0 8px 16px rgba(0, 0, 0, 0.14);
- --shadow28: 0 0 8px rgba(0, 0, 0, 0.12), 0 14px 28px rgba(0, 0, 0, 0.14);
- --shadow64: 0 0 8px rgba(0, 0, 0, 0.12), 0 32px 64px rgba(0, 0, 0, 0.14);
- --shadow2Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.25);
- --shadow4Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.25);
- --shadow8Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 4px 8px rgba(0, 0, 0, 0.25);
- --shadow16Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 8px 16px rgba(0, 0, 0, 0.25);
- --shadow28Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 14px 28px rgba(0, 0, 0, 0.25);
- --shadow64Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 32px 64px rgba(0, 0, 0, 0.25);
-
- /* Font weight */
- --fontWeightRegular: 400;
- --fontWeightMedium: 500;
- --fontWeightSemibold: 600;
- --fontWeightBold: 700;
-
- /* Stroke width */
- --strokeWidthThin: 1px;
- --strokeWidthThick: 2px;
- --strokeWidthThicker: 3px;
- --strokeWidthThickest: 4px;
-
- /* Spacing */
- --spacingHorizontalNone: 0;
- --spacingHorizontalXXS: 2px;
- --spacingHorizontalXS: 4px;
- --spacingHorizontalSNudge: 6px;
- --spacingHorizontalS: 8px;
- --spacingHorizontalMNudge: 10px;
- --spacingHorizontalM: 12px;
- --spacingHorizontalL: 16px;
- --spacingHorizontalXL: 20px;
- --spacingHorizontalXXL: 24px;
- --spacingHorizontalXXXL: 32px;
- --spacingVerticalNone: 0;
- --spacingVerticalXXS: 2px;
- --spacingVerticalXS: 4px;
- --spacingVerticalSNudge: 6px;
- --spacingVerticalS: 8px;
- --spacingVerticalMNudge: 10px;
- --spacingVerticalM: 12px;
- --spacingVerticalL: 16px;
- --spacingVerticalXL: 20px;
- --spacingVerticalXXL: 24px;
- --spacingVerticalXXXL: 32px;
-}
-
-[data-theme="dark"] {
- /* Brand Foreground */
- --colorBrandForeground1: #479ef5;
- --colorBrandForeground2: #62abf5;
- --colorNeutralForegroundOnBrand: #ffffff;
-
- /* Brand background */
- --colorBrandBackground: #115ea3;
- --colorBrandBackgroundHover: #0f6cbd;
-
- /* Neutral Foreground */
- --colorNeutralForeground1: #ffffff;
- --colorNeutralForeground2: #d6d6d6;
- --colorNeutralForeground3: #adadad;
-
- /* Neutral background */
- --colorNeutralBackground1: #292929;
- --colorNeutralBackground2: #1f1f1f;
- --colorNeutralBackground3: #141414;
- --colorNeutralBackground4: #0a0a0a;
-
- /* Stroke */
- --colorNeutralStroke1: #666666;
- --colorNeutralStroke2: #525252;
- --colorNeutralStroke3: #3d3d3d;
- --colorNeutralStrokeOnBrand: #292929;
-
- --colorNeutralStroke1Hover: #757575;
-
- /* Status warning */
- --colorStatusWarningBackground1: #4a1e04;
- --colorStatusWarningBackground2: #8a3707;
- --colorStatusWarningBackground3: #f7630c;
- --colorStatusWarningForeground1: #faa06b;
- --colorStatusWarningForeground2: #fdcfb4;
- --colorStatusWarningForeground3: #f98845;
-
- /* Status danger */
- --colorStatusDangerBackground1: #3b0509;
- --colorStatusDangerBackground2: #6e0811;
- --colorStatusDangerBackground3: #c50f1f;
- --colorStatusDangerForeground1: #dc626d;
- --colorStatusDangerForeground2: #eeacb2;
- --colorStatusDangerForeground3: #dc626d;
-
- /* Shadows */
- --shadow2: 0 0 2px rgba(0, 0, 0, 0.24), 0 1px 2px rgba(0, 0, 0, 0.28);
- --shadow4: 0 0 2px rgba(0, 0, 0, 0.24), 0 2px 4px rgba(0, 0, 0, 0.28);
- --shadow8: 0 0 2px rgba(0, 0, 0, 0.24), 0 4px 8px rgba(0, 0, 0, 0.28);
- --shadow16: 0 0 2px rgba(0, 0, 0, 0.24), 0 8px 16px rgba(0, 0, 0, 0.28);
- --shadow28: 0 0 8px rgba(0, 0, 0, 0.24), 0 14px 28px rgba(0, 0, 0, 0.28);
- --shadow64: 0 0 8px rgba(0, 0, 0, 0.24), 0 32px 64px rgba(0, 0, 0, 0.28);
- --shadow2Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.25);
- --shadow4Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.25);
- --shadow8Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 4px 8px rgba(0, 0, 0, 0.25);
- --shadow16Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 8px 16px rgba(0, 0, 0, 0.25);
- --shadow28Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 14px 28px rgba(0, 0, 0, 0.25);
- --shadow64Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 32px 64px rgba(0, 0, 0, 0.25);
-}
+@import url("./fluentui.css");
:root {
--header-height: 50px;
-}
-
-:root[data-theme="light"] {
- --sl-color-text-accent: var(--colorBrandForeground1);
-}
-/* For readability concerns, you should choose a lighter palette in dark mode. */
-:root[data-theme="dark"] {
--sl-color-text-accent: var(--colorBrandForeground1);
+ --sl-color-gray-5: var(--colorNeutralStroke1);
}
.DocSearch-Button {
@@ -194,26 +27,6 @@ a {
transition: color var(--ifm-transition-fast) var(--ifm-transition-timing-default);
}
-html {
- font-family:
- system-ui,
- -apple-system,
- "Segoe UI",
- Roboto,
- Ubuntu,
- Cantarell,
- "Noto Sans",
- sans-serif,
- "system-ui",
- "Segoe UI",
- Helvetica,
- Arial,
- sans-serif,
- "Apple Color Emoji",
- "Segoe UI Emoji",
- "Segoe UI Symbol";
-}
-
header.header {
padding: 0;
padding-inline-end: unset !important;
diff --git a/packages/website-astro/src/css/dark.css b/packages/website-astro/src/css/dark.css
new file mode 100644
index 0000000000..5a7353c6d7
--- /dev/null
+++ b/packages/website-astro/src/css/dark.css
@@ -0,0 +1,364 @@
+[data-theme="dark"] {
+ --colorNeutralForeground1: #ffffff;
+ --colorNeutralForeground1Hover: #ffffff;
+ --colorNeutralForeground1Pressed: #ffffff;
+ --colorNeutralForeground1Selected: #ffffff;
+ --colorNeutralForeground2: #d6d6d6;
+ --colorNeutralForeground2Hover: #ffffff;
+ --colorNeutralForeground2Pressed: #ffffff;
+ --colorNeutralForeground2Selected: #ffffff;
+ --colorNeutralForeground2BrandHover: #479ef5;
+ --colorNeutralForeground2BrandPressed: #2886de;
+ --colorNeutralForeground2BrandSelected: #479ef5;
+ --colorNeutralForeground3: #adadad;
+ --colorNeutralForeground3Hover: #d6d6d6;
+ --colorNeutralForeground3Pressed: #d6d6d6;
+ --colorNeutralForeground3Selected: #d6d6d6;
+ --colorNeutralForeground3BrandHover: #479ef5;
+ --colorNeutralForeground3BrandPressed: #2886de;
+ --colorNeutralForeground3BrandSelected: #479ef5;
+ --colorNeutralForeground4: #999999;
+ --colorNeutralForegroundDisabled: #5c5c5c;
+ --colorNeutralForegroundInvertedDisabled: rgba(255, 255, 255, 0.4);
+ --colorBrandForegroundLink: #479ef5;
+ --colorBrandForegroundLinkHover: #62abf5;
+ --colorBrandForegroundLinkPressed: #2886de;
+ --colorBrandForegroundLinkSelected: #479ef5;
+ --colorNeutralForeground2Link: #d6d6d6;
+ --colorNeutralForeground2LinkHover: #ffffff;
+ --colorNeutralForeground2LinkPressed: #ffffff;
+ --colorNeutralForeground2LinkSelected: #ffffff;
+ --colorCompoundBrandForeground1: #479ef5;
+ --colorCompoundBrandForeground1Hover: #62abf5;
+ --colorCompoundBrandForeground1Pressed: #2886de;
+ --colorBrandForeground1: #479ef5;
+ --colorBrandForeground2: #62abf5;
+ --colorBrandForeground2Hover: #96c6fa;
+ --colorBrandForeground2Pressed: #ebf3fc;
+ --colorNeutralForeground1Static: #242424;
+ --colorNeutralForegroundStaticInverted: #ffffff;
+ --colorNeutralForegroundInverted: #242424;
+ --colorNeutralForegroundInvertedHover: #242424;
+ --colorNeutralForegroundInvertedPressed: #242424;
+ --colorNeutralForegroundInvertedSelected: #242424;
+ --colorNeutralForegroundInverted2: #242424;
+ --colorNeutralForegroundOnBrand: #ffffff;
+ --colorNeutralForegroundInvertedLink: #ffffff;
+ --colorNeutralForegroundInvertedLinkHover: #ffffff;
+ --colorNeutralForegroundInvertedLinkPressed: #ffffff;
+ --colorNeutralForegroundInvertedLinkSelected: #ffffff;
+ --colorBrandForegroundInverted: #0f6cbd;
+ --colorBrandForegroundInvertedHover: #115ea3;
+ --colorBrandForegroundInvertedPressed: #0f548c;
+ --colorBrandForegroundOnLight: #0f6cbd;
+ --colorBrandForegroundOnLightHover: #115ea3;
+ --colorBrandForegroundOnLightPressed: #0e4775;
+ --colorBrandForegroundOnLightSelected: #0f548c;
+ --colorNeutralBackground1: #292929;
+ --colorNeutralBackground1Hover: #3d3d3d;
+ --colorNeutralBackground1Pressed: #1f1f1f;
+ --colorNeutralBackground1Selected: #383838;
+ --colorNeutralBackground2: #1f1f1f;
+ --colorNeutralBackground2Hover: #333333;
+ --colorNeutralBackground2Pressed: #141414;
+ --colorNeutralBackground2Selected: #2e2e2e;
+ --colorNeutralBackground3: #141414;
+ --colorNeutralBackground3Hover: #292929;
+ --colorNeutralBackground3Pressed: #0a0a0a;
+ --colorNeutralBackground3Selected: #242424;
+ --colorNeutralBackground4: #0a0a0a;
+ --colorNeutralBackground4Hover: #1f1f1f;
+ --colorNeutralBackground4Pressed: #000000;
+ --colorNeutralBackground4Selected: #1a1a1a;
+ --colorNeutralBackground5: #000000;
+ --colorNeutralBackground5Hover: #141414;
+ --colorNeutralBackground5Pressed: #050505;
+ --colorNeutralBackground5Selected: #0f0f0f;
+ --colorNeutralBackground6: #333333;
+ --colorNeutralBackgroundInverted: #ffffff;
+ --colorNeutralBackgroundStatic: #3d3d3d;
+ --colorNeutralBackgroundAlpha: rgba(26, 26, 26, 0.5);
+ --colorNeutralBackgroundAlpha2: rgba(31, 31, 31, 0.7);
+ --colorSubtleBackground: transparent;
+ --colorSubtleBackgroundHover: #383838;
+ --colorSubtleBackgroundPressed: #2e2e2e;
+ --colorSubtleBackgroundSelected: #333333;
+ --colorSubtleBackgroundLightAlphaHover: rgba(36, 36, 36, 0.8);
+ --colorSubtleBackgroundLightAlphaPressed: rgba(36, 36, 36, 0.5);
+ --colorSubtleBackgroundLightAlphaSelected: transparent;
+ --colorSubtleBackgroundInverted: transparent;
+ --colorSubtleBackgroundInvertedHover: rgba(0, 0, 0, 0.1);
+ --colorSubtleBackgroundInvertedPressed: rgba(0, 0, 0, 0.3);
+ --colorSubtleBackgroundInvertedSelected: rgba(0, 0, 0, 0.2);
+ --colorTransparentBackground: transparent;
+ --colorTransparentBackgroundHover: transparent;
+ --colorTransparentBackgroundPressed: transparent;
+ --colorTransparentBackgroundSelected: transparent;
+ --colorNeutralBackgroundDisabled: #141414;
+ --colorNeutralBackgroundInvertedDisabled: rgba(255, 255, 255, 0.1);
+ --colorNeutralStencil1: #575757;
+ --colorNeutralStencil2: #333333;
+ --colorNeutralStencil1Alpha: rgba(255, 255, 255, 0.1);
+ --colorNeutralStencil2Alpha: rgba(255, 255, 255, 0.05);
+ --colorBackgroundOverlay: rgba(0, 0, 0, 0.5);
+ --colorScrollbarOverlay: rgba(255, 255, 255, 0.6);
+ --colorBrandBackground: #115ea3;
+ --colorBrandBackgroundHover: #0f6cbd;
+ --colorBrandBackgroundPressed: #0c3b5e;
+ --colorBrandBackgroundSelected: #0f548c;
+ --colorCompoundBrandBackground: #479ef5;
+ --colorCompoundBrandBackgroundHover: #62abf5;
+ --colorCompoundBrandBackgroundPressed: #2886de;
+ --colorBrandBackgroundStatic: #0f6cbd;
+ --colorBrandBackground2: #082338;
+ --colorBrandBackground2Hover: #0c3b5e;
+ --colorBrandBackground2Pressed: #061724;
+ --colorBrandBackground3Static: #0f548c;
+ --colorBrandBackground4Static: #0c3b5e;
+ --colorBrandBackgroundInverted: #ffffff;
+ --colorBrandBackgroundInvertedHover: #ebf3fc;
+ --colorBrandBackgroundInvertedPressed: #b4d6fa;
+ --colorBrandBackgroundInvertedSelected: #cfe4fa;
+ --colorNeutralCardBackground: #333333;
+ --colorNeutralCardBackgroundHover: #3d3d3d;
+ --colorNeutralCardBackgroundPressed: #2e2e2e;
+ --colorNeutralCardBackgroundSelected: #383838;
+ --colorNeutralCardBackgroundDisabled: #141414;
+ --colorNeutralStrokeAccessible: #adadad;
+ --colorNeutralStrokeAccessibleHover: #bdbdbd;
+ --colorNeutralStrokeAccessiblePressed: #b3b3b3;
+ --colorNeutralStrokeAccessibleSelected: #479ef5;
+ --colorNeutralStroke1: #666666;
+ --colorNeutralStroke1Hover: #757575;
+ --colorNeutralStroke1Pressed: #6b6b6b;
+ --colorNeutralStroke1Selected: #707070;
+ --colorNeutralStroke2: #525252;
+ --colorNeutralStroke3: #3d3d3d;
+ --colorNeutralStrokeSubtle: #0a0a0a;
+ --colorNeutralStrokeOnBrand: #292929;
+ --colorNeutralStrokeOnBrand2: #ffffff;
+ --colorNeutralStrokeOnBrand2Hover: #ffffff;
+ --colorNeutralStrokeOnBrand2Pressed: #ffffff;
+ --colorNeutralStrokeOnBrand2Selected: #ffffff;
+ --colorBrandStroke1: #479ef5;
+ --colorBrandStroke2: #0e4775;
+ --colorBrandStroke2Hover: #0e4775;
+ --colorBrandStroke2Pressed: #0a2e4a;
+ --colorBrandStroke2Contrast: #0e4775;
+ --colorCompoundBrandStroke: #479ef5;
+ --colorCompoundBrandStrokeHover: #62abf5;
+ --colorCompoundBrandStrokePressed: #2886de;
+ --colorNeutralStrokeDisabled: #424242;
+ --colorNeutralStrokeInvertedDisabled: rgba(255, 255, 255, 0.4);
+ --colorTransparentStroke: transparent;
+ --colorTransparentStrokeInteractive: transparent;
+ --colorTransparentStrokeDisabled: transparent;
+ --colorNeutralStrokeAlpha: rgba(255, 255, 255, 0.1);
+ --colorNeutralStrokeAlpha2: rgba(255, 255, 255, 0.2);
+ --colorStrokeFocus1: #000000;
+ --colorStrokeFocus2: #ffffff;
+ --colorNeutralShadowAmbient: rgba(0, 0, 0, 0.24);
+ --colorNeutralShadowKey: rgba(0, 0, 0, 0.28);
+ --colorNeutralShadowAmbientLighter: rgba(0, 0, 0, 0.12);
+ --colorNeutralShadowKeyLighter: rgba(0, 0, 0, 0.14);
+ --colorNeutralShadowAmbientDarker: rgba(0, 0, 0, 0.4);
+ --colorNeutralShadowKeyDarker: rgba(0, 0, 0, 0.48);
+ --colorBrandShadowAmbient: rgba(0, 0, 0, 0.3);
+ --colorBrandShadowKey: rgba(0, 0, 0, 0.25);
+ --colorPaletteRedBackground1: #3f1011;
+ --colorPaletteRedBackground2: #751d1f;
+ --colorPaletteRedBackground3: #d13438;
+ --colorPaletteRedForeground1: #e37d80;
+ --colorPaletteRedForeground2: #f1bbbc;
+ --colorPaletteRedForeground3: #e37d80;
+ --colorPaletteRedBorderActive: #e37d80;
+ --colorPaletteRedBorder1: #d13438;
+ --colorPaletteRedBorder2: #e37d80;
+ --colorPaletteGreenBackground1: #052505;
+ --colorPaletteGreenBackground2: #094509;
+ --colorPaletteGreenBackground3: #107c10;
+ --colorPaletteGreenForeground1: #54b054;
+ --colorPaletteGreenForeground2: #9fd89f;
+ --colorPaletteGreenForeground3: #9fd89f;
+ --colorPaletteGreenBorderActive: #54b054;
+ --colorPaletteGreenBorder1: #107c10;
+ --colorPaletteGreenBorder2: #9fd89f;
+ --colorPaletteDarkOrangeBackground1: #411200;
+ --colorPaletteDarkOrangeBackground2: #7a2101;
+ --colorPaletteDarkOrangeBackground3: #da3b01;
+ --colorPaletteDarkOrangeForeground1: #e9835e;
+ --colorPaletteDarkOrangeForeground2: #f4bfab;
+ --colorPaletteDarkOrangeForeground3: #e9835e;
+ --colorPaletteDarkOrangeBorderActive: #e9835e;
+ --colorPaletteDarkOrangeBorder1: #da3b01;
+ --colorPaletteDarkOrangeBorder2: #e9835e;
+ --colorPaletteYellowBackground1: #4c4400;
+ --colorPaletteYellowBackground2: #817400;
+ --colorPaletteYellowBackground3: #fde300;
+ --colorPaletteYellowForeground1: #feee66;
+ --colorPaletteYellowForeground2: #fef7b2;
+ --colorPaletteYellowForeground3: #fdea3d;
+ --colorPaletteYellowBorderActive: #feee66;
+ --colorPaletteYellowBorder1: #fde300;
+ --colorPaletteYellowBorder2: #fdea3d;
+ --colorPaletteBerryBackground1: #3a1136;
+ --colorPaletteBerryBackground2: #6d2064;
+ --colorPaletteBerryBackground3: #c239b3;
+ --colorPaletteBerryForeground1: #da7ed0;
+ --colorPaletteBerryForeground2: #edbbe7;
+ --colorPaletteBerryForeground3: #d161c4;
+ --colorPaletteBerryBorderActive: #da7ed0;
+ --colorPaletteBerryBorder1: #c239b3;
+ --colorPaletteBerryBorder2: #d161c4;
+ --colorPaletteLightGreenBackground1: #063004;
+ --colorPaletteLightGreenBackground2: #0b5a08;
+ --colorPaletteLightGreenBackground3: #13a10e;
+ --colorPaletteLightGreenForeground1: #5ec75a;
+ --colorPaletteLightGreenForeground2: #a7e3a5;
+ --colorPaletteLightGreenForeground3: #3db838;
+ --colorPaletteLightGreenBorderActive: #5ec75a;
+ --colorPaletteLightGreenBorder1: #13a10e;
+ --colorPaletteLightGreenBorder2: #3db838;
+ --colorPaletteMarigoldBackground1: #463100;
+ --colorPaletteMarigoldBackground2: #835b00;
+ --colorPaletteMarigoldBackground3: #eaa300;
+ --colorPaletteMarigoldForeground1: #f2c661;
+ --colorPaletteMarigoldForeground2: #f9e2ae;
+ --colorPaletteMarigoldForeground3: #efb839;
+ --colorPaletteMarigoldBorderActive: #f2c661;
+ --colorPaletteMarigoldBorder1: #eaa300;
+ --colorPaletteMarigoldBorder2: #efb839;
+ --colorPaletteRedForegroundInverted: #d13438;
+ --colorPaletteGreenForegroundInverted: #107c10;
+ --colorPaletteYellowForegroundInverted: #817400;
+ --colorPaletteDarkRedBackground2: #590815;
+ --colorPaletteDarkRedForeground2: #d69ca5;
+ --colorPaletteDarkRedBorderActive: #ac4f5e;
+ --colorPaletteCranberryBackground2: #6e0811;
+ --colorPaletteCranberryForeground2: #eeacb2;
+ --colorPaletteCranberryBorderActive: #dc626d;
+ --colorPalettePumpkinBackground2: #712d09;
+ --colorPalettePumpkinForeground2: #efc4ad;
+ --colorPalettePumpkinBorderActive: #df8e64;
+ --colorPalettePeachBackground2: #8f4e00;
+ --colorPalettePeachForeground2: #ffddb3;
+ --colorPalettePeachBorderActive: #ffba66;
+ --colorPaletteGoldBackground2: #6c5700;
+ --colorPaletteGoldForeground2: #ecdfa5;
+ --colorPaletteGoldBorderActive: #dac157;
+ --colorPaletteBrassBackground2: #553e06;
+ --colorPaletteBrassForeground2: #e0cea2;
+ --colorPaletteBrassBorderActive: #c1a256;
+ --colorPaletteBrownBackground2: #50301a;
+ --colorPaletteBrownForeground2: #ddc3b0;
+ --colorPaletteBrownBorderActive: #bb8f6f;
+ --colorPaletteForestBackground2: #294903;
+ --colorPaletteForestForeground2: #bdd99b;
+ --colorPaletteForestBorderActive: #85b44c;
+ --colorPaletteSeafoamBackground2: #00723b;
+ --colorPaletteSeafoamForeground2: #a8f0cd;
+ --colorPaletteSeafoamBorderActive: #5ae0a0;
+ --colorPaletteDarkGreenBackground2: #063b06;
+ --colorPaletteDarkGreenForeground2: #9ad29a;
+ --colorPaletteDarkGreenBorderActive: #4da64d;
+ --colorPaletteLightTealBackground2: #00666d;
+ --colorPaletteLightTealForeground2: #a6e9ed;
+ --colorPaletteLightTealBorderActive: #58d3db;
+ --colorPaletteTealBackground2: #02494c;
+ --colorPaletteTealForeground2: #9bd9db;
+ --colorPaletteTealBorderActive: #4cb4b7;
+ --colorPaletteSteelBackground2: #00333f;
+ --colorPaletteSteelForeground2: #94c8d4;
+ --colorPaletteSteelBorderActive: #4496a9;
+ --colorPaletteBlueBackground2: #004377;
+ --colorPaletteBlueForeground2: #a9d3f2;
+ --colorPaletteBlueBorderActive: #5caae5;
+ --colorPaletteRoyalBlueBackground2: #002c4e;
+ --colorPaletteRoyalBlueForeground2: #9abfdc;
+ --colorPaletteRoyalBlueBorderActive: #4a89ba;
+ --colorPaletteCornflowerBackground2: #2c3c85;
+ --colorPaletteCornflowerForeground2: #c8d1fa;
+ --colorPaletteCornflowerBorderActive: #93a4f4;
+ --colorPaletteNavyBackground2: #001665;
+ --colorPaletteNavyForeground2: #a3b2e8;
+ --colorPaletteNavyBorderActive: #546fd2;
+ --colorPaletteLavenderBackground2: #3f3682;
+ --colorPaletteLavenderForeground2: #d2ccf8;
+ --colorPaletteLavenderBorderActive: #a79cf1;
+ --colorPalettePurpleBackground2: #341a51;
+ --colorPalettePurpleForeground2: #c6b1de;
+ --colorPalettePurpleBorderActive: #9470bd;
+ --colorPaletteGrapeBackground2: #4c0d55;
+ --colorPaletteGrapeForeground2: #d9a7e0;
+ --colorPaletteGrapeBorderActive: #b55fc1;
+ --colorPaletteLilacBackground2: #63276d;
+ --colorPaletteLilacForeground2: #e6bfed;
+ --colorPaletteLilacBorderActive: #cf87da;
+ --colorPalettePinkBackground2: #80215d;
+ --colorPalettePinkForeground2: #f7c0e3;
+ --colorPalettePinkBorderActive: #ef85c8;
+ --colorPaletteMagentaBackground2: #6b0043;
+ --colorPaletteMagentaForeground2: #eca5d1;
+ --colorPaletteMagentaBorderActive: #d957a8;
+ --colorPalettePlumBackground2: #5a003b;
+ --colorPalettePlumForeground2: #d696c0;
+ --colorPalettePlumBorderActive: #ad4589;
+ --colorPaletteBeigeBackground2: #444241;
+ --colorPaletteBeigeForeground2: #d7d4d4;
+ --colorPaletteBeigeBorderActive: #afabaa;
+ --colorPaletteMinkBackground2: #343231;
+ --colorPaletteMinkForeground2: #cecccb;
+ --colorPaletteMinkBorderActive: #9e9b99;
+ --colorPalettePlatinumBackground2: #3b4447;
+ --colorPalettePlatinumForeground2: #cdd6d8;
+ --colorPalettePlatinumBorderActive: #a0adb2;
+ --colorPaletteAnchorBackground2: #202427;
+ --colorPaletteAnchorForeground2: #bcc3c7;
+ --colorPaletteAnchorBorderActive: #808a90;
+ --colorStatusSuccessBackground1: #052505;
+ --colorStatusSuccessBackground2: #094509;
+ --colorStatusSuccessBackground3: #107c10;
+ --colorStatusSuccessForeground1: #54b054;
+ --colorStatusSuccessForeground2: #9fd89f;
+ --colorStatusSuccessForeground3: #9fd89f;
+ --colorStatusSuccessBorderActive: #54b054;
+ --colorStatusSuccessForegroundInverted: #0e700e;
+ --colorStatusSuccessBorder1: #107c10;
+ --colorStatusSuccessBorder2: #9fd89f;
+ --colorStatusWarningBackground1: #4a1e04;
+ --colorStatusWarningBackground2: #8a3707;
+ --colorStatusWarningBackground3: #f7630c;
+ --colorStatusWarningForeground1: #faa06b;
+ --colorStatusWarningForeground2: #fdcfb4;
+ --colorStatusWarningForeground3: #f98845;
+ --colorStatusWarningBorderActive: #faa06b;
+ --colorStatusWarningForegroundInverted: #bc4b09;
+ --colorStatusWarningBorder1: #f7630c;
+ --colorStatusWarningBorder2: #f98845;
+ --colorStatusDangerBackground1: #3b0509;
+ --colorStatusDangerBackground2: #6e0811;
+ --colorStatusDangerBackground3: #c50f1f;
+ --colorStatusDangerForeground1: #dc626d;
+ --colorStatusDangerForeground2: #eeacb2;
+ --colorStatusDangerForeground3: #eeacb2;
+ --colorStatusDangerBorderActive: #dc626d;
+ --colorStatusDangerForegroundInverted: #b10e1c;
+ --colorStatusDangerBorder1: #c50f1f;
+ --colorStatusDangerBorder2: #dc626d;
+ --colorStatusDangerBackground3Hover: #b10e1c;
+ --colorStatusDangerBackground3Pressed: #960b18;
+
+ /* Shadows */
+ --shadow2: 0 0 2px rgba(0, 0, 0, 0.24), 0 1px 2px rgba(0, 0, 0, 0.28);
+ --shadow4: 0 0 2px rgba(0, 0, 0, 0.24), 0 2px 4px rgba(0, 0, 0, 0.28);
+ --shadow8: 0 0 2px rgba(0, 0, 0, 0.24), 0 4px 8px rgba(0, 0, 0, 0.28);
+ --shadow16: 0 0 2px rgba(0, 0, 0, 0.24), 0 8px 16px rgba(0, 0, 0, 0.28);
+ --shadow28: 0 0 8px rgba(0, 0, 0, 0.24), 0 14px 28px rgba(0, 0, 0, 0.28);
+ --shadow64: 0 0 8px rgba(0, 0, 0, 0.24), 0 32px 64px rgba(0, 0, 0, 0.28);
+ --shadow2Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.25);
+ --shadow4Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.25);
+ --shadow8Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 4px 8px rgba(0, 0, 0, 0.25);
+ --shadow16Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 8px 16px rgba(0, 0, 0, 0.25);
+ --shadow28Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 14px 28px rgba(0, 0, 0, 0.25);
+ --shadow64Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 32px 64px rgba(0, 0, 0, 0.25);
+}
diff --git a/packages/website-astro/src/css/fluentui.css b/packages/website-astro/src/css/fluentui.css
new file mode 100644
index 0000000000..e25ce78769
--- /dev/null
+++ b/packages/website-astro/src/css/fluentui.css
@@ -0,0 +1,111 @@
+@import url("./light.css");
+@import url("./dark.css");
+
+/* Fluent Colors for reference */
+:root {
+ /* Border radius */
+ --borderRadiusNone: 0;
+ --borderRadiusSmall: 2px;
+ --borderRadiusMedium: 4px;
+ --borderRadiusLarge: 6px;
+ --borderRadiusXLarge: 8px;
+ --borderRadiusCircular: 10000px;
+
+ /** Font sizes */
+ --fontSizeBase100: 10px;
+ --fontSizeBase200: 12px;
+ --fontSizeBase300: 14px;
+ --fontSizeBase400: 16px;
+ --fontSizeBase500: 20px;
+ --fontSizeBase600: 24px;
+ --fontSizeHero700: 28px;
+ --fontSizeHero800: 32px;
+ --fontSizeHero900: 40px;
+ --fontSizeHero1000: 68px;
+
+ /** Line height*/
+ --lineHeightBase100: 14px;
+ --lineHeightBase200: 16px;
+ --lineHeightBase300: 20px;
+ --lineHeightBase400: 22px;
+ --lineHeightBase500: 28px;
+ --lineHeightBase600: 32px;
+ --lineHeightHero700: 36px;
+ --lineHeightHero800: 40px;
+ --lineHeightHero900: 52px;
+ --lineHeightHero1000: 92px;
+
+ /** Font families */
+ --fontFamilyBase: "Segoe UI", "Segoe UI Web (West European)", -apple-system, BlinkMacSystemFont,
+ Roboto, "Helvetica Neue", sans-serif;
+ --fontFamilyMonospace: Consolas, "Courier New", Courier, monospace;
+ --fontFamilyNumeric: Bahnschrift, "Segoe UI", "Segoe UI Web (West European)", -apple-system,
+ BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
+
+ /* Font weight */
+ --fontWeightRegular: 400;
+ --fontWeightMedium: 500;
+ --fontWeightSemibold: 600;
+ --fontWeightBold: 700;
+
+ /* Stroke width */
+ --strokeWidthThin: 1px;
+ --strokeWidthThick: 2px;
+ --strokeWidthThicker: 3px;
+ --strokeWidthThickest: 4px;
+
+ /* Spacing */
+ --spacingHorizontalNone: 0;
+ --spacingHorizontalXXS: 2px;
+ --spacingHorizontalXS: 4px;
+ --spacingHorizontalSNudge: 6px;
+ --spacingHorizontalS: 8px;
+ --spacingHorizontalMNudge: 10px;
+ --spacingHorizontalM: 12px;
+ --spacingHorizontalL: 16px;
+ --spacingHorizontalXL: 20px;
+ --spacingHorizontalXXL: 24px;
+ --spacingHorizontalXXXL: 32px;
+ --spacingVerticalNone: 0;
+ --spacingVerticalXXS: 2px;
+ --spacingVerticalXS: 4px;
+ --spacingVerticalSNudge: 6px;
+ --spacingVerticalS: 8px;
+ --spacingVerticalMNudge: 10px;
+ --spacingVerticalM: 12px;
+ --spacingVerticalL: 16px;
+ --spacingVerticalXL: 20px;
+ --spacingVerticalXXL: 24px;
+ --spacingVerticalXXXL: 32px;
+
+ /* Duration */
+ --durationUltraFast: 50ms;
+ --durationFaster: 100ms;
+ --durationFast: 150ms;
+ --durationNormal: 200ms;
+ --durationGentle: 250ms;
+ --durationSlow: 300ms;
+ --durationSlower: 400ms;
+ --durationUltraSlow: 500ms;
+
+ /* Curve */
+ --curveAccelerateMax: cubic-bezier(0.9, 0.1, 1, 0.2);
+ --curveAccelerateMid: cubic-bezier(1, 0, 1, 1);
+ --curveAccelerateMin: cubic-bezier(0.8, 0, 0.78, 1);
+ --curveDecelerateMax: cubic-bezier(0.1, 0.9, 0.2, 1);
+ --curveDecelerateMid: cubic-bezier(0, 0, 0, 1);
+ --curveDecelerateMin: cubic-bezier(0.33, 0, 0.1, 1);
+ --curveEasyEaseMax: cubic-bezier(0.8, 0, 0.2, 1);
+ --curveEasyEase: cubic-bezier(0.33, 0, 0.67, 1);
+ --curveLinear: cubic-bezier(0, 0, 1, 1);
+}
+
+html {
+ font-family: var(--fontFamilyBase);
+ color: var(--colorNeutralForeground1);
+ font-size: var(--fontSizeBase300);
+ font-weight: var(--fontWeightRegular);
+ line-height: var(--lineHeightBase300);
+ -webkit-font-smoothing: antialiased;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
diff --git a/packages/website-astro/src/css/light.css b/packages/website-astro/src/css/light.css
new file mode 100644
index 0000000000..62277b74c2
--- /dev/null
+++ b/packages/website-astro/src/css/light.css
@@ -0,0 +1,365 @@
+[data-theme="light"] {
+ /* Neutral */
+ --colorNeutralForeground1: #242424;
+ --colorNeutralForeground1Hover: #242424;
+ --colorNeutralForeground1Pressed: #242424;
+ --colorNeutralForeground1Selected: #242424;
+ --colorNeutralForeground2: #424242;
+ --colorNeutralForeground2Hover: #242424;
+ --colorNeutralForeground2Pressed: #242424;
+ --colorNeutralForeground2Selected: #242424;
+ --colorNeutralForeground2BrandHover: #0f6cbd;
+ --colorNeutralForeground2BrandPressed: #115ea3;
+ --colorNeutralForeground2BrandSelected: #0f6cbd;
+ --colorNeutralForeground3: #616161;
+ --colorNeutralForeground3Hover: #424242;
+ --colorNeutralForeground3Pressed: #424242;
+ --colorNeutralForeground3Selected: #424242;
+ --colorNeutralForeground3BrandHover: #0f6cbd;
+ --colorNeutralForeground3BrandPressed: #115ea3;
+ --colorNeutralForeground3BrandSelected: #0f6cbd;
+ --colorNeutralForeground4: #707070;
+ --colorNeutralForegroundDisabled: #bdbdbd;
+ --colorNeutralForegroundInvertedDisabled: rgba(255, 255, 255, 0.4);
+ --colorBrandForegroundLink: #115ea3;
+ --colorBrandForegroundLinkHover: #0f548c;
+ --colorBrandForegroundLinkPressed: #0c3b5e;
+ --colorBrandForegroundLinkSelected: #115ea3;
+ --colorNeutralForeground2Link: #424242;
+ --colorNeutralForeground2LinkHover: #242424;
+ --colorNeutralForeground2LinkPressed: #242424;
+ --colorNeutralForeground2LinkSelected: #242424;
+ --colorCompoundBrandForeground1: #0f6cbd;
+ --colorCompoundBrandForeground1Hover: #115ea3;
+ --colorCompoundBrandForeground1Pressed: #0f548c;
+ --colorBrandForeground1: #0f6cbd;
+ --colorBrandForeground2: #115ea3;
+ --colorBrandForeground2Hover: #0f548c;
+ --colorBrandForeground2Pressed: #0a2e4a;
+ --colorNeutralForeground1Static: #242424;
+ --colorNeutralForegroundStaticInverted: #ffffff;
+ --colorNeutralForegroundInverted: #ffffff;
+ --colorNeutralForegroundInvertedHover: #ffffff;
+ --colorNeutralForegroundInvertedPressed: #ffffff;
+ --colorNeutralForegroundInvertedSelected: #ffffff;
+ --colorNeutralForegroundInverted2: #ffffff;
+ --colorNeutralForegroundOnBrand: #ffffff;
+ --colorNeutralForegroundInvertedLink: #ffffff;
+ --colorNeutralForegroundInvertedLinkHover: #ffffff;
+ --colorNeutralForegroundInvertedLinkPressed: #ffffff;
+ --colorNeutralForegroundInvertedLinkSelected: #ffffff;
+ --colorBrandForegroundInverted: #479ef5;
+ --colorBrandForegroundInvertedHover: #62abf5;
+ --colorBrandForegroundInvertedPressed: #479ef5;
+ --colorBrandForegroundOnLight: #0f6cbd;
+ --colorBrandForegroundOnLightHover: #115ea3;
+ --colorBrandForegroundOnLightPressed: #0e4775;
+ --colorBrandForegroundOnLightSelected: #0f548c;
+ --colorNeutralBackground1: #ffffff;
+ --colorNeutralBackground1Hover: #f5f5f5;
+ --colorNeutralBackground1Pressed: #e0e0e0;
+ --colorNeutralBackground1Selected: #ebebeb;
+ --colorNeutralBackground2: #fafafa;
+ --colorNeutralBackground2Hover: #f0f0f0;
+ --colorNeutralBackground2Pressed: #dbdbdb;
+ --colorNeutralBackground2Selected: #e6e6e6;
+ --colorNeutralBackground3: #f5f5f5;
+ --colorNeutralBackground3Hover: #ebebeb;
+ --colorNeutralBackground3Pressed: #d6d6d6;
+ --colorNeutralBackground3Selected: #e0e0e0;
+ --colorNeutralBackground4: #f0f0f0;
+ --colorNeutralBackground4Hover: #fafafa;
+ --colorNeutralBackground4Pressed: #f5f5f5;
+ --colorNeutralBackground4Selected: #ffffff;
+ --colorNeutralBackground5: #ebebeb;
+ --colorNeutralBackground5Hover: #f5f5f5;
+ --colorNeutralBackground5Pressed: #f0f0f0;
+ --colorNeutralBackground5Selected: #fafafa;
+ --colorNeutralBackground6: #e6e6e6;
+ --colorNeutralBackgroundInverted: #292929;
+ --colorNeutralBackgroundStatic: #333333;
+ --colorNeutralBackgroundAlpha: rgba(255, 255, 255, 0.5);
+ --colorNeutralBackgroundAlpha2: rgba(255, 255, 255, 0.8);
+ --colorSubtleBackground: transparent;
+ --colorSubtleBackgroundHover: #f5f5f5;
+ --colorSubtleBackgroundPressed: #e0e0e0;
+ --colorSubtleBackgroundSelected: #ebebeb;
+ --colorSubtleBackgroundLightAlphaHover: rgba(255, 255, 255, 0.7);
+ --colorSubtleBackgroundLightAlphaPressed: rgba(255, 255, 255, 0.5);
+ --colorSubtleBackgroundLightAlphaSelected: transparent;
+ --colorSubtleBackgroundInverted: transparent;
+ --colorSubtleBackgroundInvertedHover: rgba(0, 0, 0, 0.1);
+ --colorSubtleBackgroundInvertedPressed: rgba(0, 0, 0, 0.3);
+ --colorSubtleBackgroundInvertedSelected: rgba(0, 0, 0, 0.2);
+ --colorTransparentBackground: transparent;
+ --colorTransparentBackgroundHover: transparent;
+ --colorTransparentBackgroundPressed: transparent;
+ --colorTransparentBackgroundSelected: transparent;
+ --colorNeutralBackgroundDisabled: #f0f0f0;
+ --colorNeutralBackgroundInvertedDisabled: rgba(255, 255, 255, 0.1);
+ --colorNeutralStencil1: #e6e6e6;
+ --colorNeutralStencil2: #fafafa;
+ --colorNeutralStencil1Alpha: rgba(0, 0, 0, 0.1);
+ --colorNeutralStencil2Alpha: rgba(0, 0, 0, 0.05);
+ --colorBackgroundOverlay: rgba(0, 0, 0, 0.4);
+ --colorScrollbarOverlay: rgba(0, 0, 0, 0.5);
+ --colorBrandBackground: #0f6cbd;
+ --colorBrandBackgroundHover: #115ea3;
+ --colorBrandBackgroundPressed: #0c3b5e;
+ --colorBrandBackgroundSelected: #0f548c;
+ --colorCompoundBrandBackground: #0f6cbd;
+ --colorCompoundBrandBackgroundHover: #115ea3;
+ --colorCompoundBrandBackgroundPressed: #0f548c;
+ --colorBrandBackgroundStatic: #0f6cbd;
+ --colorBrandBackground2: #ebf3fc;
+ --colorBrandBackground2Hover: #cfe4fa;
+ --colorBrandBackground2Pressed: #96c6fa;
+ --colorBrandBackground3Static: #0f548c;
+ --colorBrandBackground4Static: #0c3b5e;
+ --colorBrandBackgroundInverted: #ffffff;
+ --colorBrandBackgroundInvertedHover: #ebf3fc;
+ --colorBrandBackgroundInvertedPressed: #b4d6fa;
+ --colorBrandBackgroundInvertedSelected: #cfe4fa;
+ --colorNeutralCardBackground: #fafafa;
+ --colorNeutralCardBackgroundHover: #ffffff;
+ --colorNeutralCardBackgroundPressed: #f5f5f5;
+ --colorNeutralCardBackgroundSelected: #ebebeb;
+ --colorNeutralCardBackgroundDisabled: #f0f0f0;
+ --colorNeutralStrokeAccessible: #616161;
+ --colorNeutralStrokeAccessibleHover: #575757;
+ --colorNeutralStrokeAccessiblePressed: #4d4d4d;
+ --colorNeutralStrokeAccessibleSelected: #0f6cbd;
+ --colorNeutralStroke1: #d1d1d1;
+ --colorNeutralStroke1Hover: #c7c7c7;
+ --colorNeutralStroke1Pressed: #b3b3b3;
+ --colorNeutralStroke1Selected: #bdbdbd;
+ --colorNeutralStroke2: #e0e0e0;
+ --colorNeutralStroke3: #f0f0f0;
+ --colorNeutralStrokeSubtle: #e0e0e0;
+ --colorNeutralStrokeOnBrand: #ffffff;
+ --colorNeutralStrokeOnBrand2: #ffffff;
+ --colorNeutralStrokeOnBrand2Hover: #ffffff;
+ --colorNeutralStrokeOnBrand2Pressed: #ffffff;
+ --colorNeutralStrokeOnBrand2Selected: #ffffff;
+ --colorBrandStroke1: #0f6cbd;
+ --colorBrandStroke2: #b4d6fa;
+ --colorBrandStroke2Hover: #77b7f7;
+ --colorBrandStroke2Pressed: #0f6cbd;
+ --colorBrandStroke2Contrast: #b4d6fa;
+ --colorCompoundBrandStroke: #0f6cbd;
+ --colorCompoundBrandStrokeHover: #115ea3;
+ --colorCompoundBrandStrokePressed: #0f548c;
+ --colorNeutralStrokeDisabled: #e0e0e0;
+ --colorNeutralStrokeInvertedDisabled: rgba(255, 255, 255, 0.4);
+ --colorTransparentStroke: transparent;
+ --colorTransparentStrokeInteractive: transparent;
+ --colorTransparentStrokeDisabled: transparent;
+ --colorNeutralStrokeAlpha: rgba(0, 0, 0, 0.05);
+ --colorNeutralStrokeAlpha2: rgba(255, 255, 255, 0.2);
+ --colorStrokeFocus1: #ffffff;
+ --colorStrokeFocus2: #000000;
+ --colorNeutralShadowAmbient: rgba(0, 0, 0, 0.12);
+ --colorNeutralShadowKey: rgba(0, 0, 0, 0.14);
+ --colorNeutralShadowAmbientLighter: rgba(0, 0, 0, 0.06);
+ --colorNeutralShadowKeyLighter: rgba(0, 0, 0, 0.07);
+ --colorNeutralShadowAmbientDarker: rgba(0, 0, 0, 0.2);
+ --colorNeutralShadowKeyDarker: rgba(0, 0, 0, 0.24);
+ --colorBrandShadowAmbient: rgba(0, 0, 0, 0.3);
+ --colorBrandShadowKey: rgba(0, 0, 0, 0.25);
+ --colorPaletteRedBackground1: #fdf6f6;
+ --colorPaletteRedBackground2: #f1bbbc;
+ --colorPaletteRedBackground3: #d13438;
+ --colorPaletteRedForeground1: #bc2f32;
+ --colorPaletteRedForeground2: #751d1f;
+ --colorPaletteRedForeground3: #d13438;
+ --colorPaletteRedBorderActive: #d13438;
+ --colorPaletteRedBorder1: #f1bbbc;
+ --colorPaletteRedBorder2: #d13438;
+ --colorPaletteGreenBackground1: #f1faf1;
+ --colorPaletteGreenBackground2: #9fd89f;
+ --colorPaletteGreenBackground3: #107c10;
+ --colorPaletteGreenForeground1: #0e700e;
+ --colorPaletteGreenForeground2: #094509;
+ --colorPaletteGreenForeground3: #107c10;
+ --colorPaletteGreenBorderActive: #107c10;
+ --colorPaletteGreenBorder1: #9fd89f;
+ --colorPaletteGreenBorder2: #107c10;
+ --colorPaletteDarkOrangeBackground1: #fdf6f3;
+ --colorPaletteDarkOrangeBackground2: #f4bfab;
+ --colorPaletteDarkOrangeBackground3: #da3b01;
+ --colorPaletteDarkOrangeForeground1: #c43501;
+ --colorPaletteDarkOrangeForeground2: #7a2101;
+ --colorPaletteDarkOrangeForeground3: #da3b01;
+ --colorPaletteDarkOrangeBorderActive: #da3b01;
+ --colorPaletteDarkOrangeBorder1: #f4bfab;
+ --colorPaletteDarkOrangeBorder2: #da3b01;
+ --colorPaletteYellowBackground1: #fffef5;
+ --colorPaletteYellowBackground2: #fef7b2;
+ --colorPaletteYellowBackground3: #fde300;
+ --colorPaletteYellowForeground1: #817400;
+ --colorPaletteYellowForeground2: #817400;
+ --colorPaletteYellowForeground3: #fde300;
+ --colorPaletteYellowBorderActive: #fde300;
+ --colorPaletteYellowBorder1: #fef7b2;
+ --colorPaletteYellowBorder2: #fde300;
+ --colorPaletteBerryBackground1: #fdf5fc;
+ --colorPaletteBerryBackground2: #edbbe7;
+ --colorPaletteBerryBackground3: #c239b3;
+ --colorPaletteBerryForeground1: #af33a1;
+ --colorPaletteBerryForeground2: #6d2064;
+ --colorPaletteBerryForeground3: #c239b3;
+ --colorPaletteBerryBorderActive: #c239b3;
+ --colorPaletteBerryBorder1: #edbbe7;
+ --colorPaletteBerryBorder2: #c239b3;
+ --colorPaletteLightGreenBackground1: #f2fbf2;
+ --colorPaletteLightGreenBackground2: #a7e3a5;
+ --colorPaletteLightGreenBackground3: #13a10e;
+ --colorPaletteLightGreenForeground1: #11910d;
+ --colorPaletteLightGreenForeground2: #0b5a08;
+ --colorPaletteLightGreenForeground3: #13a10e;
+ --colorPaletteLightGreenBorderActive: #13a10e;
+ --colorPaletteLightGreenBorder1: #a7e3a5;
+ --colorPaletteLightGreenBorder2: #13a10e;
+ --colorPaletteMarigoldBackground1: #fefbf4;
+ --colorPaletteMarigoldBackground2: #f9e2ae;
+ --colorPaletteMarigoldBackground3: #eaa300;
+ --colorPaletteMarigoldForeground1: #d39300;
+ --colorPaletteMarigoldForeground2: #835b00;
+ --colorPaletteMarigoldForeground3: #eaa300;
+ --colorPaletteMarigoldBorderActive: #eaa300;
+ --colorPaletteMarigoldBorder1: #f9e2ae;
+ --colorPaletteMarigoldBorder2: #eaa300;
+ --colorPaletteRedForegroundInverted: #dc5e62;
+ --colorPaletteGreenForegroundInverted: #359b35;
+ --colorPaletteYellowForegroundInverted: #fef7b2;
+ --colorPaletteDarkRedBackground2: #d69ca5;
+ --colorPaletteDarkRedForeground2: #420610;
+ --colorPaletteDarkRedBorderActive: #750b1c;
+ --colorPaletteCranberryBackground2: #eeacb2;
+ --colorPaletteCranberryForeground2: #6e0811;
+ --colorPaletteCranberryBorderActive: #c50f1f;
+ --colorPalettePumpkinBackground2: #efc4ad;
+ --colorPalettePumpkinForeground2: #712d09;
+ --colorPalettePumpkinBorderActive: #ca5010;
+ --colorPalettePeachBackground2: #ffddb3;
+ --colorPalettePeachForeground2: #8f4e00;
+ --colorPalettePeachBorderActive: #ff8c00;
+ --colorPaletteGoldBackground2: #ecdfa5;
+ --colorPaletteGoldForeground2: #6c5700;
+ --colorPaletteGoldBorderActive: #c19c00;
+ --colorPaletteBrassBackground2: #e0cea2;
+ --colorPaletteBrassForeground2: #553e06;
+ --colorPaletteBrassBorderActive: #986f0b;
+ --colorPaletteBrownBackground2: #ddc3b0;
+ --colorPaletteBrownForeground2: #50301a;
+ --colorPaletteBrownBorderActive: #8e562e;
+ --colorPaletteForestBackground2: #bdd99b;
+ --colorPaletteForestForeground2: #294903;
+ --colorPaletteForestBorderActive: #498205;
+ --colorPaletteSeafoamBackground2: #a8f0cd;
+ --colorPaletteSeafoamForeground2: #00723b;
+ --colorPaletteSeafoamBorderActive: #00cc6a;
+ --colorPaletteDarkGreenBackground2: #9ad29a;
+ --colorPaletteDarkGreenForeground2: #063b06;
+ --colorPaletteDarkGreenBorderActive: #0b6a0b;
+ --colorPaletteLightTealBackground2: #a6e9ed;
+ --colorPaletteLightTealForeground2: #00666d;
+ --colorPaletteLightTealBorderActive: #00b7c3;
+ --colorPaletteTealBackground2: #9bd9db;
+ --colorPaletteTealForeground2: #02494c;
+ --colorPaletteTealBorderActive: #038387;
+ --colorPaletteSteelBackground2: #94c8d4;
+ --colorPaletteSteelForeground2: #00333f;
+ --colorPaletteSteelBorderActive: #005b70;
+ --colorPaletteBlueBackground2: #a9d3f2;
+ --colorPaletteBlueForeground2: #004377;
+ --colorPaletteBlueBorderActive: #0078d4;
+ --colorPaletteRoyalBlueBackground2: #9abfdc;
+ --colorPaletteRoyalBlueForeground2: #002c4e;
+ --colorPaletteRoyalBlueBorderActive: #004e8c;
+ --colorPaletteCornflowerBackground2: #c8d1fa;
+ --colorPaletteCornflowerForeground2: #2c3c85;
+ --colorPaletteCornflowerBorderActive: #4f6bed;
+ --colorPaletteNavyBackground2: #a3b2e8;
+ --colorPaletteNavyForeground2: #001665;
+ --colorPaletteNavyBorderActive: #0027b4;
+ --colorPaletteLavenderBackground2: #d2ccf8;
+ --colorPaletteLavenderForeground2: #3f3682;
+ --colorPaletteLavenderBorderActive: #7160e8;
+ --colorPalettePurpleBackground2: #c6b1de;
+ --colorPalettePurpleForeground2: #341a51;
+ --colorPalettePurpleBorderActive: #5c2e91;
+ --colorPaletteGrapeBackground2: #d9a7e0;
+ --colorPaletteGrapeForeground2: #4c0d55;
+ --colorPaletteGrapeBorderActive: #881798;
+ --colorPaletteLilacBackground2: #e6bfed;
+ --colorPaletteLilacForeground2: #63276d;
+ --colorPaletteLilacBorderActive: #b146c2;
+ --colorPalettePinkBackground2: #f7c0e3;
+ --colorPalettePinkForeground2: #80215d;
+ --colorPalettePinkBorderActive: #e43ba6;
+ --colorPaletteMagentaBackground2: #eca5d1;
+ --colorPaletteMagentaForeground2: #6b0043;
+ --colorPaletteMagentaBorderActive: #bf0077;
+ --colorPalettePlumBackground2: #d696c0;
+ --colorPalettePlumForeground2: #43002b;
+ --colorPalettePlumBorderActive: #77004d;
+ --colorPaletteBeigeBackground2: #d7d4d4;
+ --colorPaletteBeigeForeground2: #444241;
+ --colorPaletteBeigeBorderActive: #7a7574;
+ --colorPaletteMinkBackground2: #cecccb;
+ --colorPaletteMinkForeground2: #343231;
+ --colorPaletteMinkBorderActive: #5d5a58;
+ --colorPalettePlatinumBackground2: #cdd6d8;
+ --colorPalettePlatinumForeground2: #3b4447;
+ --colorPalettePlatinumBorderActive: #69797e;
+ --colorPaletteAnchorBackground2: #bcc3c7;
+ --colorPaletteAnchorForeground2: #202427;
+ --colorPaletteAnchorBorderActive: #394146;
+ --colorStatusSuccessBackground1: #f1faf1;
+ --colorStatusSuccessBackground2: #9fd89f;
+ --colorStatusSuccessBackground3: #107c10;
+ --colorStatusSuccessForeground1: #0e700e;
+ --colorStatusSuccessForeground2: #094509;
+ --colorStatusSuccessForeground3: #107c10;
+ --colorStatusSuccessForegroundInverted: #54b054;
+ --colorStatusSuccessBorderActive: #107c10;
+ --colorStatusSuccessBorder1: #9fd89f;
+ --colorStatusSuccessBorder2: #107c10;
+ --colorStatusWarningBackground1: #fff9f5;
+ --colorStatusWarningBackground2: #fdcfb4;
+ --colorStatusWarningBackground3: #f7630c;
+ --colorStatusWarningForeground1: #bc4b09;
+ --colorStatusWarningForeground2: #8a3707;
+ --colorStatusWarningForeground3: #bc4b09;
+ --colorStatusWarningForegroundInverted: #faa06b;
+ --colorStatusWarningBorderActive: #f7630c;
+ --colorStatusWarningBorder1: #fdcfb4;
+ --colorStatusWarningBorder2: #bc4b09;
+ --colorStatusDangerBackground1: #fdf3f4;
+ --colorStatusDangerBackground2: #eeacb2;
+ --colorStatusDangerBackground3: #c50f1f;
+ --colorStatusDangerForeground1: #b10e1c;
+ --colorStatusDangerForeground2: #6e0811;
+ --colorStatusDangerForeground3: #c50f1f;
+ --colorStatusDangerForegroundInverted: #dc626d;
+ --colorStatusDangerBorderActive: #c50f1f;
+ --colorStatusDangerBorder1: #eeacb2;
+ --colorStatusDangerBorder2: #c50f1f;
+ --colorStatusDangerBackground3Hover: #b10e1c;
+ --colorStatusDangerBackground3Pressed: #960b18;
+
+ /* Shadows */
+ --shadow2: 0 0 2px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.14);
+ --shadow4: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.14);
+ --shadow8: 0 0 2px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.14);
+ --shadow16: 0 0 2px rgba(0, 0, 0, 0.12), 0 8px 16px rgba(0, 0, 0, 0.14);
+ --shadow28: 0 0 8px rgba(0, 0, 0, 0.12), 0 14px 28px rgba(0, 0, 0, 0.14);
+ --shadow64: 0 0 8px rgba(0, 0, 0, 0.12), 0 32px 64px rgba(0, 0, 0, 0.14);
+ --shadow2Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.25);
+ --shadow4Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.25);
+ --shadow8Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 4px 8px rgba(0, 0, 0, 0.25);
+ --shadow16Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 8px 16px rgba(0, 0, 0, 0.25);
+ --shadow28Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 14px 28px rgba(0, 0, 0, 0.25);
+ --shadow64Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 32px 64px rgba(0, 0, 0, 0.25);
+}
diff --git a/packages/website-astro/src/layouts/base-layout.astro b/packages/website-astro/src/layouts/base-layout.astro
index 4aec3c6a4a..53bf4f7dd1 100644
--- a/packages/website-astro/src/layouts/base-layout.astro
+++ b/packages/website-astro/src/layouts/base-layout.astro
@@ -2,22 +2,31 @@
import "@site/src/css/custom.css";
import Header from "@site/src/components/header/header.astro";
import Footer from "@site/src/components/footer/footer.astro";
+
+export interface Props {
+ /** Whether to render the footer @default true */
+ footer?: boolean;
+}
+const { footer = true } = Astro.props;
---
+
-
+
-
+
-
+ {footer && }
+
+
+
+
+
+
diff --git a/packages/website-astro/src/layouts/showcase.astro b/packages/website-astro/src/layouts/showcase.astro
index 1d7638c8f4..7645f71f0a 100644
--- a/packages/website-astro/src/layouts/showcase.astro
+++ b/packages/website-astro/src/layouts/showcase.astro
@@ -1,13 +1,16 @@
---
-import FluentUILayout from "./fluentui.astro";
+import BaseLayout from "./base-layout.astro";
---
-
-
-
+
+
+
+
+
diff --git a/packages/website-astro/src/pages/community.md b/packages/website-astro/src/pages/community.md
index 23d028e08d..94c4c5a670 100644
--- a/packages/website-astro/src/pages/community.md
+++ b/packages/website-astro/src/pages/community.md
@@ -1,5 +1,5 @@
---
-layout: ../layouts/base-layout.astro
+layout: ../layouts/content.astro
---
# Welcome
diff --git a/packages/website-astro/src/pages/data-validation.astro b/packages/website-astro/src/pages/data-validation.astro
index 963f12be06..4edced7ca8 100644
--- a/packages/website-astro/src/pages/data-validation.astro
+++ b/packages/website-astro/src/pages/data-validation.astro
@@ -1,8 +1,107 @@
---
-import { DataValidationContent } from "../components/react-pages/data-validation.tsx";
+import LearnMoreCard from "../components/learn-more-card.astro";
import ShowcaseLayout from "@site/src/layouts/showcase.astro";
+import Section from "../components/section.astro";
+import SectionedLayout from "../components/sectioned-layout.astro";
+import UseCaseOverview from "../components/use-case-overview.astro";
+import { Links } from "../constants";
+import commonLibSharedTsp from "@site/src/assets/tsp-samples/data-validation/common-lib/common.tsp?raw";
+import commonLibMainTsp from "@site/src/assets/tsp-samples/data-validation/common-lib/main.tsp?raw";
+import multiFileTsp from "@site/src/assets/tsp-samples/json-schema/multi-file/main.tsp?raw";
+import multiFileAddress from "@site/src/assets/tsp-samples/json-schema/multi-file/out/Address.yaml?raw";
+import multiFileCar from "@site/src/assets/tsp-samples/json-schema/multi-file/out/Car.yaml?raw";
+import multiFilePerson from "@site/src/assets/tsp-samples/json-schema/multi-file/out/Person.yaml?raw";
+import extensionsTsp from "@site/src/assets/tsp-samples/json-schema/extensions/main.tsp?raw";
+import extensionsYaml from "@site/src/assets/tsp-samples/json-schema/extensions/out/output.yaml?raw";
+import { Code, TabItem, Tabs } from "@astrojs/starlight/components";
+import validationDecoratorsTsp from "@site/src/assets/tsp-samples/data-validation/validation-decorators.tsp?raw";
+import IllustrationCard from "../components/illustration-card.astro";
---
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/pages/index.astro b/packages/website-astro/src/pages/index.astro
index fd1c2a8c77..38febf7a0d 100644
--- a/packages/website-astro/src/pages/index.astro
+++ b/packages/website-astro/src/pages/index.astro
@@ -1,8 +1,191 @@
---
-import { HomeContent } from "../components/homepage/homepage.tsx";
import ShowcaseLayout from "@site/src/layouts/showcase.astro";
+import Hero from "../components/homepage/hero.astro";
+import SectionedLayout from "@site/src/components/sectioned-layout.astro";
+import { DescriptionText, PrimaryText } from "../components/text/text";
+import OverviewIllustration from "../components/homepage/overview-illustration.astro";
+import { Links } from "../constants";
+import Section from "../components/section.astro";
+import FeatureList from "../components/feature-list.astro";
+import { link } from "../utils/link";
+import ExtensibilityIllustration from "../components/homepage/extensibility-illustration.astro";
+import LightDarkImg from "../components/light-dark-img.astro";
+import OpenAPI3HeroIllustration from "@site/src/components/homepage/openapi3-hero-illustration.astro";
+import LearnMoreCard from "../components/learn-more-card.astro";
+import DataValidationHeroIllustration from "../components/homepage/data-validation-hero-illustration.astro";
+import Button from "../components/button.astro";
---
+
+
-
+
+
+
+
+
+
Why TypeSpec
+
API-First for developers
+
+ With TypeSpec, remove the handwritten files that slow you down, and generate
+ standards-compliant API schemas in seconds.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Start your TypeSpec journey
+
+ Install the TypeSpec CLI or check out the playground to get started.
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/pages/openapi.astro b/packages/website-astro/src/pages/openapi.astro
index 038fb66ecf..d7d341d5e5 100644
--- a/packages/website-astro/src/pages/openapi.astro
+++ b/packages/website-astro/src/pages/openapi.astro
@@ -1,8 +1,58 @@
---
-import { OpenApiContent } from "../components/react-pages/openapi";
import ShowcaseLayout from "@site/src/layouts/showcase.astro";
+import SectionedLayout from "../components/sectioned-layout.astro";
+import Section from "../components/section.astro";
+import LearnMoreCard from "../components/learn-more-card.astro";
+import UseCaseOverview from "../components/use-case-overview.astro";
+import { Links } from "../constants";
+import IllustrationCard from "../components/illustration-card.astro";
+import abstractionCode from "@site/src/assets/tsp-samples/openapi3/abstraction.tsp?raw";
+import { Code } from "@astrojs/starlight/components";
+import OpenAPI3HeroIllustration from "@site/src/components/homepage/openapi3-hero-illustration.astro";
+import OpenAPI3InteroperateIllustration from "../components/illustrations/openapi3-interoperate.astro";
---
-
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/pages/playground.astro b/packages/website-astro/src/pages/playground.astro
index 192b4ad3a6..60937fac47 100644
--- a/packages/website-astro/src/pages/playground.astro
+++ b/packages/website-astro/src/pages/playground.astro
@@ -2,6 +2,8 @@
import { AsyncPlayground } from "../components/react-pages/playground";
import FluentUILayout from "@site/src/layouts/fluentui.astro";
import packageJson from "../../../compiler/package.json";
+import { LoadingSpinner } from "../components/playground-component/loading-spinner";
+import BaseLayout from "../layouts/base-layout.astro";
function getMajorMinorVersion(): string {
const version = packageJson.version;
@@ -23,8 +25,10 @@ const latestVersion = getMajorMinorVersion();
shimMode: true,
})}
/>
-
+
-
+
diff --git a/packages/website-astro/src/pages/tooling.astro b/packages/website-astro/src/pages/tooling.astro
index 895277e066..1ed7aad558 100644
--- a/packages/website-astro/src/pages/tooling.astro
+++ b/packages/website-astro/src/pages/tooling.astro
@@ -1,8 +1,67 @@
---
-import { ToolingContent } from "../components/react-pages/tooling";
+import { baseUrl } from "@site/src/utils";
+import LearnMoreCard from "../components/learn-more-card.astro";
+import LightDarkImg from "../components/light-dark-img.astro";
import ShowcaseLayout from "@site/src/layouts/showcase.astro";
+import Section from "../components/section.astro";
+import SectionedLayout from "../components/sectioned-layout.astro";
+import UseCaseOverview from "../components/use-case-overview.astro";
+import { Links } from "../constants";
+import FormatterIllustration from "@site/src/components/illustrations/formatter.astro";
---
-
+
+
+
+
+
+
+
diff --git a/packages/website-astro/src/plugins/tsp-tryit-code.ts b/packages/website-astro/src/plugins/tsp-tryit-code.js
similarity index 87%
rename from packages/website-astro/src/plugins/tsp-tryit-code.ts
rename to packages/website-astro/src/plugins/tsp-tryit-code.js
index bdb2d59deb..793b098b92 100644
--- a/packages/website-astro/src/plugins/tsp-tryit-code.ts
+++ b/packages/website-astro/src/plugins/tsp-tryit-code.js
@@ -1,9 +1,8 @@
import { definePlugin } from "@expressive-code/core";
-import { type Element, h } from "@expressive-code/core/hast";
-import type { CompilerOptions } from "@typespec/compiler";
+import { h } from "@expressive-code/core/hast";
import { createUrlStateStorage } from "@typespec/playground/state-storage";
-export default function (playgroundUrl: string) {
+export default function (playgroundUrl) {
const storage = createUrlStateStorage({
content: {
queryParam: "c",
@@ -20,7 +19,7 @@ export default function (playgroundUrl: string) {
queryParam: "sample",
},
});
- function resolvePlaygroundLink(content: string, compilerOptions: CompilerOptions) {
+ function resolvePlaygroundLink(content, compilerOptions) {
return (
playgroundUrl +
"?" +
@@ -65,7 +64,7 @@ export default function (playgroundUrl: string) {
}
const compilerOptions = JSON.parse(tryitStr);
- const extraElements: Element[] = [];
+ const extraElements = [];
extraElements.push(
h(
diff --git a/packages/website-astro/src/components/docusaurus/core/useBaseUrl.ts b/packages/website-astro/src/utils/base-url.ts
similarity index 56%
rename from packages/website-astro/src/components/docusaurus/core/useBaseUrl.ts
rename to packages/website-astro/src/utils/base-url.ts
index ebad8f51ce..62279baf42 100644
--- a/packages/website-astro/src/components/docusaurus/core/useBaseUrl.ts
+++ b/packages/website-astro/src/utils/base-url.ts
@@ -1,5 +1,5 @@
-/* eslint-disable unicorn/filename-case */
-export default function useBaseUrl(input: string | undefined): string {
+/** Prefix the given uri with the current base url of the website */
+export function baseUrl(input: string | undefined): string {
if (input === undefined) {
return undefined as any;
}
diff --git a/packages/website-astro/src/utils/index.ts b/packages/website-astro/src/utils/index.ts
index 117b714961..c7ebdffbe8 100644
--- a/packages/website-astro/src/utils/index.ts
+++ b/packages/website-astro/src/utils/index.ts
@@ -1 +1,2 @@
+export { baseUrl } from "./base-url";
export { link } from "./link";
diff --git a/packages/website-astro/src/components/docusaurus/core/theme-common.tsx b/packages/website-astro/src/utils/theme-react.ts
similarity index 58%
rename from packages/website-astro/src/components/docusaurus/core/theme-common.tsx
rename to packages/website-astro/src/utils/theme-react.ts
index c61b795aa1..3c717d662a 100644
--- a/packages/website-astro/src/components/docusaurus/core/theme-common.tsx
+++ b/packages/website-astro/src/utils/theme-react.ts
@@ -1,14 +1,7 @@
-import { getTheme, setTheme, type Theme } from "@site/src/utils/theme";
+import { getTheme, type Theme } from "@site/src/utils/theme";
import { useEffect, useState } from "react";
-type ContextValue = {
- /** Current color mode. */
- readonly colorMode: Theme;
- /** Set new color mode. */
- readonly setColorMode: (colorMode: Theme) => void;
-};
-
-export function useColorMode(): ContextValue {
+export function useTheme(): Theme {
const [current, setCurrent] = useState(getTheme());
useEffect(() => {
const handleThemeChange = () => {
@@ -24,5 +17,5 @@ export function useColorMode(): ContextValue {
return () => observer.disconnect();
}, []);
- return { colorMode: current, setColorMode: setTheme };
+ return current;
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d7248a9be7..e55529264e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2027,10 +2027,10 @@ importers:
version: 0.9.4(prettier@3.3.3)(typescript@5.6.3)
'@astrojs/react':
specifier: ^3.6.2
- version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))
+ version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.9(@types/node@22.7.5)(terser@5.34.1))
'@astrojs/starlight':
specifier: ^0.28.3
- version: 0.28.3(astro@4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))
+ version: 0.28.3(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))
'@docsearch/css':
specifier: ^3.6.2
version: 3.6.2
@@ -2054,7 +2054,7 @@ importers:
version: link:../playground
astro:
specifier: ^4.16.1
- version: 4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
+ version: 4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
clsx:
specifier: ^2.1.1
version: 2.1.1
@@ -2095,6 +2095,9 @@ importers:
'@typespec/website':
specifier: workspace:*
version: link:../website
+ astro-expressive-code:
+ specifier: ^0.37.0
+ version: 0.37.0(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))
rehype-mermaid:
specifier: ^3.0.0
version: 3.0.0(playwright@1.48.0)
@@ -2457,10 +2460,6 @@ packages:
resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-module-imports@7.24.7':
- resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-module-imports@7.25.7':
resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==}
engines: {node: '>=6.9.0'}
@@ -2475,10 +2474,6 @@ packages:
resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-plugin-utils@7.24.7':
- resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-plugin-utils@7.25.7':
resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==}
engines: {node: '>=6.9.0'}
@@ -2624,12 +2619,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-jsx@7.24.1':
- resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/plugin-syntax-jsx@7.25.7':
resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==}
engines: {node: '>=6.9.0'}
@@ -3919,15 +3908,27 @@ packages:
'@expressive-code/core@0.35.6':
resolution: {integrity: sha512-xGqCkmfkgT7lr/rvmfnYdDSeTdCSp1otAHgoFS6wNEeO7wGDPpxdosVqYiIcQ8CfWUABh/pGqWG90q+MV3824A==}
+ '@expressive-code/core@0.37.0':
+ resolution: {integrity: sha512-uCPAaQ//5RZeeKAN9cMyGH8YIm+h1Rldy34IWMbsCECrFVo86w+eR67jVWoQ2HNe0dSZ4XTdgJKYEScuVcy2Cw==}
+
'@expressive-code/plugin-frames@0.35.6':
resolution: {integrity: sha512-CqjSWjDJ3wabMJZfL9ZAzH5UAGKg7KWsf1TBzr4xvUbZvWoBtLA/TboBML0U1Ls8h/4TRCIvR4VEb8dv5+QG3w==}
+ '@expressive-code/plugin-frames@0.37.0':
+ resolution: {integrity: sha512-jqlds/LptU8+FYxD1Uiu1vULvC904TlcOote8wCgn4gdae2qmCj67G9C1b1j3MAaerblRQg4uNbUxeitRFYs6A==}
+
'@expressive-code/plugin-shiki@0.35.6':
resolution: {integrity: sha512-xm+hzi9BsmhkDUGuyAWIydOAWer7Cs9cj8FM0t4HXaQ+qCubprT6wJZSKUxuvFJIUsIOqk1xXFaJzGJGnWtKMg==}
+ '@expressive-code/plugin-shiki@0.37.0':
+ resolution: {integrity: sha512-0g9v7OBu3rNS7EOyam1G6+WE1siWBKteagV0917yooIFlOlcJ/pvV/nClSEwJgFdumwHK4sDj4ov4Y4p0tDn1w==}
+
'@expressive-code/plugin-text-markers@0.35.6':
resolution: {integrity: sha512-/k9eWVZSCs+uEKHR++22Uu6eIbHWEciVHbIuD8frT8DlqTtHYaaiwHPncO6KFWnGDz5i/gL7oyl6XmOi/E6GVg==}
+ '@expressive-code/plugin-text-markers@0.37.0':
+ resolution: {integrity: sha512-iDwB7iYga7hIyODR0wGVP2yo10H3Ncknif2diZvc/w9Mb/RvStEtCXRoqs3jgQlS3dhTGBXzTorFZx36vNy4rQ==}
+
'@floating-ui/core@1.6.0':
resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==}
@@ -6677,8 +6678,13 @@ packages:
peerDependencies:
astro: ^4.0.0-beta || ^3.3.0
- astro@4.16.1:
- resolution: {integrity: sha512-ZeZd+L147HHgHmvoSkve7KM3EutV+hY0mOCa4PwARHEFAAh+omo4MUNoTWsFkfq7ozTgR0PCXQwslrZduoWHNg==}
+ astro-expressive-code@0.37.0:
+ resolution: {integrity: sha512-ElWiCQHVQh5+l8fvGRgctvxEw63G/KEZgRi60ApPsHK6NsexgPZENk3bnHzbCpigCgh/L9k/yJ+3zOyuhoPqhQ==}
+ peerDependencies:
+ astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0
+
+ astro@4.16.5:
+ resolution: {integrity: sha512-v8mKWcEPN7hkfyVsMFWV0F8UgL4GUJKT172KTB7dePO3yJb64HBwCckC0QnA60QQh3jK6+2xwyWEc5QvCeqjtg==}
engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true
@@ -8148,6 +8154,9 @@ packages:
es-get-iterator@1.1.3:
resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+ es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
+
es-module-lexer@1.5.4:
resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
@@ -8427,6 +8436,9 @@ packages:
expressive-code@0.35.6:
resolution: {integrity: sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g==}
+ expressive-code@0.37.0:
+ resolution: {integrity: sha512-UnfkF69UpKAa2ytyNNxBifSe723wL4DOK1dqkoK0PAYaO8mo9tXsyn/SMNMVvAkZNeJcJOttYfs957a9Uaqo6A==}
+
extend-shallow@2.0.1:
resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
engines: {node: '>=0.10.0'}
@@ -10011,6 +10023,9 @@ packages:
magic-string@0.30.11:
resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
+ magic-string@0.30.12:
+ resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
+
magicast@0.3.5:
resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
@@ -11789,6 +11804,9 @@ packages:
rehype-expressive-code@0.35.6:
resolution: {integrity: sha512-pPdE+pRcRw01kxMOwHQjuRxgwlblZt5+wAc3w2aPGgmcnn57wYjn07iKO7zaznDxYVxMYVvYlnL+R3vWFQS4Gw==}
+ rehype-expressive-code@0.37.0:
+ resolution: {integrity: sha512-5dUjqNkhw0gB1pkkjc11jWdvQFGMYcrzCrUGx7p8TiHc5IwbrzBWXXADNEP2KrtAlUIy5yRmkkgGD5az1owq3Q==}
+
rehype-format@5.0.1:
resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==}
@@ -13190,10 +13208,41 @@ packages:
terser:
optional: true
- vitefu@1.0.2:
- resolution: {integrity: sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==}
+ vite@5.4.9:
+ resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vitefu@1.0.3:
+ resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0
peerDependenciesMeta:
vite:
optional: true
@@ -13953,12 +14002,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@astrojs/mdx@3.1.8(astro@4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))':
+ '@astrojs/mdx@3.1.8(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))':
dependencies:
'@astrojs/markdown-remark': 5.3.0
'@mdx-js/mdx': 3.0.1
acorn: 8.12.1
- astro: 4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
+ astro: 4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
es-module-lexer: 1.5.4
estree-util-visit: 2.0.0
gray-matter: 4.0.3
@@ -13977,11 +14026,11 @@ snapshots:
dependencies:
prismjs: 1.29.0
- '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))':
+ '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.9(@types/node@22.7.5)(terser@5.34.1))':
dependencies:
'@types/react': 18.3.11
'@types/react-dom': 18.3.0
- '@vitejs/plugin-react': 4.3.2(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))
+ '@vitejs/plugin-react': 4.3.2(vite@5.4.9(@types/node@22.7.5)(terser@5.34.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
ultrahtml: 1.5.3
@@ -13995,15 +14044,15 @@ snapshots:
stream-replace-string: 2.0.0
zod: 3.23.8
- '@astrojs/starlight@0.28.3(astro@4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))':
+ '@astrojs/starlight@0.28.3(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))':
dependencies:
- '@astrojs/mdx': 3.1.8(astro@4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))
+ '@astrojs/mdx': 3.1.8(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))
'@astrojs/sitemap': 3.2.0
'@pagefind/default-ui': 1.1.1
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- astro: 4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
- astro-expressive-code: 0.35.6(astro@4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))
+ astro: 4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
+ astro-expressive-code: 0.35.6(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3))
bcp-47: 2.1.0
hast-util-from-html: 2.0.3
hast-util-select: 6.0.2
@@ -14285,13 +14334,6 @@ snapshots:
dependencies:
'@babel/types': 7.25.8
- '@babel/helper-module-imports@7.24.7':
- dependencies:
- '@babel/traverse': 7.25.7
- '@babel/types': 7.25.8
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-module-imports@7.25.7':
dependencies:
'@babel/traverse': 7.25.7
@@ -14313,8 +14355,6 @@ snapshots:
dependencies:
'@babel/types': 7.25.8
- '@babel/helper-plugin-utils@7.24.7': {}
-
'@babel/helper-plugin-utils@7.25.7': {}
'@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.25.8)':
@@ -14422,7 +14462,7 @@ snapshots:
'@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.8)':
dependencies:
'@babel/core': 7.25.8
- '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-plugin-utils': 7.25.7
'@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.8)':
dependencies:
@@ -14454,11 +14494,6 @@ snapshots:
'@babel/core': 7.25.8
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.25.8)':
- dependencies:
- '@babel/core': 7.25.8
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)':
dependencies:
'@babel/core': 7.25.8
@@ -14820,8 +14855,8 @@ snapshots:
'@babel/plugin-transform-runtime@7.24.3(@babel/core@7.25.8)':
dependencies:
'@babel/core': 7.25.8
- '@babel/helper-module-imports': 7.24.7
- '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-module-imports': 7.25.7
+ '@babel/helper-plugin-utils': 7.25.7
babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.25.8)
babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.8)
babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.25.8)
@@ -14891,7 +14926,7 @@ snapshots:
'@babel/compat-data': 7.24.9
'@babel/core': 7.25.8
'@babel/helper-compilation-targets': 7.25.7
- '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-plugin-utils': 7.25.7
'@babel/helper-validator-option': 7.24.8
'@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.25.8)
'@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.25.8)
@@ -14990,7 +15025,7 @@ snapshots:
'@babel/preset-react@7.24.1(@babel/core@7.25.8)':
dependencies:
'@babel/core': 7.25.8
- '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-plugin-utils': 7.25.7
'@babel/helper-validator-option': 7.24.8
'@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.25.8)
'@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.8)
@@ -15002,9 +15037,9 @@ snapshots:
'@babel/preset-typescript@7.24.1(@babel/core@7.25.8)':
dependencies:
'@babel/core': 7.25.8
- '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-plugin-utils': 7.25.7
'@babel/helper-validator-option': 7.24.8
- '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.25.8)
+ '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8)
'@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.8)
'@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.25.8)
transitivePeerDependencies:
@@ -16310,19 +16345,44 @@ snapshots:
unist-util-visit: 5.0.0
unist-util-visit-parents: 6.0.1
+ '@expressive-code/core@0.37.0':
+ dependencies:
+ '@ctrl/tinycolor': 4.1.0
+ hast-util-select: 6.0.2
+ hast-util-to-html: 9.0.3
+ hast-util-to-text: 4.0.2
+ hastscript: 9.0.0
+ postcss: 8.4.47
+ postcss-nested: 6.2.0(postcss@8.4.47)
+ unist-util-visit: 5.0.0
+ unist-util-visit-parents: 6.0.1
+
'@expressive-code/plugin-frames@0.35.6':
dependencies:
'@expressive-code/core': 0.35.6
+ '@expressive-code/plugin-frames@0.37.0':
+ dependencies:
+ '@expressive-code/core': 0.37.0
+
'@expressive-code/plugin-shiki@0.35.6':
dependencies:
'@expressive-code/core': 0.35.6
shiki: 1.22.0
+ '@expressive-code/plugin-shiki@0.37.0':
+ dependencies:
+ '@expressive-code/core': 0.37.0
+ shiki: 1.22.0
+
'@expressive-code/plugin-text-markers@0.35.6':
dependencies:
'@expressive-code/core': 0.35.6
+ '@expressive-code/plugin-text-markers@0.37.0':
+ dependencies:
+ '@expressive-code/core': 0.37.0
+
'@floating-ui/core@1.6.0':
dependencies:
'@floating-ui/utils': 0.2.1
@@ -18612,7 +18672,7 @@ snapshots:
'@shikijs/engine-javascript': 1.21.0
'@shikijs/engine-oniguruma': 1.21.0
'@shikijs/types': 1.21.0
- '@shikijs/vscode-textmate': 9.3.0
+ '@shikijs/vscode-textmate': 9.2.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.3
@@ -18628,7 +18688,7 @@ snapshots:
'@shikijs/engine-javascript@1.21.0':
dependencies:
'@shikijs/types': 1.21.0
- '@shikijs/vscode-textmate': 9.3.0
+ '@shikijs/vscode-textmate': 9.2.2
oniguruma-to-js: 0.4.3
'@shikijs/engine-javascript@1.22.0':
@@ -18640,7 +18700,7 @@ snapshots:
'@shikijs/engine-oniguruma@1.21.0':
dependencies:
'@shikijs/types': 1.21.0
- '@shikijs/vscode-textmate': 9.3.0
+ '@shikijs/vscode-textmate': 9.2.2
'@shikijs/engine-oniguruma@1.22.0':
dependencies:
@@ -18649,7 +18709,7 @@ snapshots:
'@shikijs/types@1.21.0':
dependencies:
- '@shikijs/vscode-textmate': 9.3.0
+ '@shikijs/vscode-textmate': 9.2.2
'@types/hast': 3.0.4
'@shikijs/types@1.22.0':
@@ -18774,7 +18834,7 @@ snapshots:
dependencies:
'@babel/core': 7.25.8
'@babel/preset-env': 7.24.5(@babel/core@7.25.8)
- '@babel/types': 7.25.8
+ '@babel/types': 7.25.7
'@storybook/core': 8.3.5
'@storybook/csf': 0.1.11
'@types/cross-spawn': 6.0.6
@@ -19610,6 +19670,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@vitejs/plugin-react@4.3.2(vite@5.4.9(@types/node@22.7.5)(terser@5.34.1))':
+ dependencies:
+ '@babel/core': 7.25.8
+ '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8)
+ '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.8)
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.14.2
+ vite: 5.4.9(@types/node@22.7.5)(terser@5.34.1)
+ transitivePeerDependencies:
+ - supports-color
+
'@vitest/coverage-v8@2.1.2(vitest@2.1.2(@types/node@22.7.5)(@vitest/ui@2.1.2)(happy-dom@15.7.4)(jsdom@25.0.1)(terser@5.34.1))':
dependencies:
'@ampproject/remapping': 2.3.0
@@ -20251,12 +20322,17 @@ snapshots:
astring@1.8.6: {}
- astro-expressive-code@0.35.6(astro@4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)):
+ astro-expressive-code@0.35.6(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)):
dependencies:
- astro: 4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
+ astro: 4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
rehype-expressive-code: 0.35.6
- astro@4.16.1(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3):
+ astro-expressive-code@0.37.0(astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)):
+ dependencies:
+ astro: 4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3)
+ rehype-expressive-code: 0.37.0
+
+ astro@4.16.5(@types/node@22.7.5)(rollup@4.24.0)(terser@5.34.1)(typescript@5.6.3):
dependencies:
'@astrojs/compiler': 2.10.3
'@astrojs/internal-helpers': 0.4.1
@@ -20295,7 +20371,7 @@ snapshots:
http-cache-semantics: 4.1.1
js-yaml: 4.1.0
kleur: 4.1.5
- magic-string: 0.30.11
+ magic-string: 0.30.12
magicast: 0.3.5
micromatch: 4.0.8
mrmime: 2.0.0
@@ -20312,8 +20388,8 @@ snapshots:
tsconfck: 3.1.4(typescript@5.6.3)
unist-util-visit: 5.0.0
vfile: 6.0.3
- vite: 5.4.8(@types/node@22.7.5)(terser@5.34.1)
- vitefu: 1.0.2(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1))
+ vite: 5.4.9(@types/node@22.7.5)(terser@5.34.1)
+ vitefu: 1.0.3(vite@5.4.9(@types/node@22.7.5)(terser@5.34.1))
which-pm: 3.0.0
xxhash-wasm: 1.0.2
yargs-parser: 21.1.1
@@ -22112,6 +22188,8 @@ snapshots:
isarray: 2.0.5
stop-iteration-iterator: 1.0.0
+ es-module-lexer@1.5.0: {}
+
es-module-lexer@1.5.4: {}
es-module-shims@1.10.0: {}
@@ -22529,6 +22607,13 @@ snapshots:
'@expressive-code/plugin-shiki': 0.35.6
'@expressive-code/plugin-text-markers': 0.35.6
+ expressive-code@0.37.0:
+ dependencies:
+ '@expressive-code/core': 0.37.0
+ '@expressive-code/plugin-frames': 0.37.0
+ '@expressive-code/plugin-shiki': 0.37.0
+ '@expressive-code/plugin-text-markers': 0.37.0
+
extend-shallow@2.0.1:
dependencies:
is-extendable: 0.1.1
@@ -24325,6 +24410,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ magic-string@0.30.12:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
magicast@0.3.5:
dependencies:
'@babel/parser': 7.25.8
@@ -26789,6 +26878,10 @@ snapshots:
dependencies:
expressive-code: 0.35.6
+ rehype-expressive-code@0.37.0:
+ dependencies:
+ expressive-code: 0.37.0
+
rehype-format@5.0.1:
dependencies:
'@types/hast': 3.0.4
@@ -28420,9 +28513,19 @@ snapshots:
fsevents: 2.3.3
terser: 5.34.1
- vitefu@1.0.2(vite@5.4.8(@types/node@22.7.5)(terser@5.34.1)):
+ vite@5.4.9(@types/node@22.7.5)(terser@5.34.1):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.47
+ rollup: 4.24.0
optionalDependencies:
- vite: 5.4.8(@types/node@22.7.5)(terser@5.34.1)
+ '@types/node': 22.7.5
+ fsevents: 2.3.3
+ terser: 5.34.1
+
+ vitefu@1.0.3(vite@5.4.9(@types/node@22.7.5)(terser@5.34.1)):
+ optionalDependencies:
+ vite: 5.4.9(@types/node@22.7.5)(terser@5.34.1)
vitest@2.1.2(@types/node@22.7.5)(@vitest/ui@2.1.2)(happy-dom@15.7.4)(jsdom@25.0.1)(terser@5.34.1):
dependencies:
@@ -28721,7 +28824,7 @@ snapshots:
browserslist: 4.23.2
chrome-trace-event: 1.0.3
enhanced-resolve: 5.16.0
- es-module-lexer: 1.5.4
+ es-module-lexer: 1.5.0
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1