diff --git a/packages/roadplan-ui/package.json b/packages/roadplan-ui/package.json
index ce3063b..0018246 100644
--- a/packages/roadplan-ui/package.json
+++ b/packages/roadplan-ui/package.json
@@ -1,5 +1,5 @@
{
- "name": "my-qwik-library-name",
+ "name": "roadplan-ui",
"version": "0.0.1",
"description": "Create a reusable Qwik component library",
"main": "./lib/index.qwik.mjs",
@@ -37,6 +37,7 @@
},
"devDependencies": {
"@builder.io/qwik": "1.5.5",
+ "@builder.io/qwik-city": "^1.5.5",
"@types/eslint": "^8.56.10",
"@types/node": "^20.12.7",
"@typescript-eslint/eslint-plugin": "^7.7.1",
@@ -48,6 +49,7 @@
"typescript": "5.4.5",
"undici": "*",
"vite": "^5.2.10",
- "vite-tsconfig-paths": "^4.2.1"
+ "vite-tsconfig-paths": "^4.2.1",
+ "shiki": "^1.3.0"
}
}
diff --git a/packages/roadplan-ui/src/Icons/CheckIcon.tsx b/packages/roadplan-ui/src/Icons/CheckIcon.tsx
new file mode 100644
index 0000000..f02110f
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/CheckIcon.tsx
@@ -0,0 +1,20 @@
+import { component$ } from "@builder.io/qwik";
+
+export const CheckIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/ChevronIcon.tsx b/packages/roadplan-ui/src/Icons/ChevronIcon.tsx
new file mode 100644
index 0000000..9ed5fac
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/ChevronIcon.tsx
@@ -0,0 +1,18 @@
+import { component$ } from "@builder.io/qwik";
+
+export const ChevronIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/CloseIcon.tsx b/packages/roadplan-ui/src/Icons/CloseIcon.tsx
new file mode 100644
index 0000000..321f169
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/CloseIcon.tsx
@@ -0,0 +1,20 @@
+import { component$ } from "@builder.io/qwik";
+
+export const CloseIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/CopyIcon.tsx b/packages/roadplan-ui/src/Icons/CopyIcon.tsx
new file mode 100644
index 0000000..4fe7e84
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/CopyIcon.tsx
@@ -0,0 +1,21 @@
+import { component$ } from "@builder.io/qwik";
+
+export const CopyIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/ForkIcon.tsx b/packages/roadplan-ui/src/Icons/ForkIcon.tsx
new file mode 100644
index 0000000..e98c24f
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/ForkIcon.tsx
@@ -0,0 +1,17 @@
+import { component$ } from "@builder.io/qwik";
+
+export const ForkIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/GitHubIcon.tsx b/packages/roadplan-ui/src/Icons/GitHubIcon.tsx
new file mode 100644
index 0000000..c21fed5
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/GitHubIcon.tsx
@@ -0,0 +1,21 @@
+import { component$ } from "@builder.io/qwik";
+
+export const GitHubIcon = component$<{ classes?: string }>(
+ ({ classes = "w-8 h8" }) => {
+ return (
+
+ );
+ },
+);
diff --git a/packages/roadplan-ui/src/Icons/MenuIcon.tsx b/packages/roadplan-ui/src/Icons/MenuIcon.tsx
new file mode 100644
index 0000000..42e9676
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/MenuIcon.tsx
@@ -0,0 +1,21 @@
+import { component$ } from "@builder.io/qwik";
+
+export const MenuIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/StarIcon.tsx b/packages/roadplan-ui/src/Icons/StarIcon.tsx
new file mode 100644
index 0000000..384a4c7
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/StarIcon.tsx
@@ -0,0 +1,17 @@
+import { component$ } from "@builder.io/qwik";
+
+export const StarIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/ThemeDarkIcon.tsx b/packages/roadplan-ui/src/Icons/ThemeDarkIcon.tsx
new file mode 100644
index 0000000..decebfe
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/ThemeDarkIcon.tsx
@@ -0,0 +1,19 @@
+import { component$ } from "@builder.io/qwik";
+
+export const ThemeDarkIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/Icons/ThemeLightIcon.tsx b/packages/roadplan-ui/src/Icons/ThemeLightIcon.tsx
new file mode 100644
index 0000000..426046d
--- /dev/null
+++ b/packages/roadplan-ui/src/Icons/ThemeLightIcon.tsx
@@ -0,0 +1,19 @@
+import { component$ } from "@builder.io/qwik";
+
+export const ThemeLightIcon = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/docs-components/Aside/Aside.tsx b/packages/roadplan-ui/src/docs-components/Aside/Aside.tsx
new file mode 100644
index 0000000..129a9b3
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-components/Aside/Aside.tsx
@@ -0,0 +1,31 @@
+import { component$ } from "@builder.io/qwik";
+import { useContent } from "@builder.io/qwik-city";
+
+export const Aside = component$(() => {
+ const { menu } = useContent();
+
+ return (
+
+ {(menu?.items || []).map(({ text, items }, idx) => (
+
+ -
+
{text}
+ {(items || []).map(({ text, href }, idx) => (
+
+ ))}
+
+
+ ))}
+
+ );
+});
diff --git a/packages/roadplan-ui/src/docs-components/Footer/Footer.tsx b/packages/roadplan-ui/src/docs-components/Footer/Footer.tsx
new file mode 100644
index 0000000..6135ae4
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-components/Footer/Footer.tsx
@@ -0,0 +1,24 @@
+import { component$ } from "@builder.io/qwik";
+import { GitHubIcon } from "../../Icons/GitHubIcon";
+
+export const Footer = component$(() => {
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/docs-components/Header/Header.tsx b/packages/roadplan-ui/src/docs-components/Header/Header.tsx
new file mode 100644
index 0000000..7c076f4
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-components/Header/Header.tsx
@@ -0,0 +1,125 @@
+/* eslint-disable qwik/jsx-img */
+import { component$, useSignal } from "@builder.io/qwik";
+
+import { CloseIcon } from "../../Icons/CloseIcon";
+import { GitHubIcon } from "../../Icons/GitHubIcon";
+import { MenuIcon } from "../../Icons/MenuIcon";
+import { Aside } from "../Aside/Aside";
+import { ThemeSelector } from "../ThemeSelector/ThemeSelector";
+import { VersionSelector } from "../VersionSelector/VersionSelector";
+
+type Props = {
+ links?: { name: string; href: string }[];
+ showMenu?: boolean;
+ siteTitle?: string;
+ isVersionSelector?: boolean;
+};
+export const Header = component$(
+ ({ links = [], showMenu = true, siteTitle, isVersionSelector = false }) => {
+ const showAsideSig = useSignal(false);
+ return (
+
+
+
+
+
+ {isVersionSelector &&
}
+
+
+
+
+
+
+ {showAsideSig.value && (
+
+ )}
+
+ );
+ },
+);
diff --git a/packages/roadplan-ui/src/docs-components/ThemeSelector/ThemeSelector.tsx b/packages/roadplan-ui/src/docs-components/ThemeSelector/ThemeSelector.tsx
new file mode 100644
index 0000000..09bb970
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-components/ThemeSelector/ThemeSelector.tsx
@@ -0,0 +1,26 @@
+import { component$, useContext } from "@builder.io/qwik";
+import { StoreContext } from "../../docs-layout/classic-layout";
+import { ThemeDarkIcon } from "../../Icons/ThemeDarkIcon";
+import { ThemeLightIcon } from "../../Icons/ThemeLightIcon";
+
+export const ThemeSelector = component$(() => {
+ const store = useContext(StoreContext);
+ return (
+ {
+ store.theme = store.theme === "light" ? "dark" : "light";
+ const newTheme = store.theme === "light" ? "light" : "dark";
+ document.documentElement.className = newTheme;
+ localStorage.setItem("theme", store.theme);
+ }}
+ >
+
+
+
+
+
+
+
+ );
+});
diff --git a/packages/roadplan-ui/src/docs-components/Toc/Toc.tsx b/packages/roadplan-ui/src/docs-components/Toc/Toc.tsx
new file mode 100644
index 0000000..d185bd4
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-components/Toc/Toc.tsx
@@ -0,0 +1,22 @@
+import { component$ } from "@builder.io/qwik";
+import { useContent } from "@builder.io/qwik-city";
+
+export const Toc = component$(() => {
+ const { headings } = useContent();
+
+ return (
+
+
On this page
+ {(headings || []).map(({ text, id }, idx) => (
+
+ ))}
+
+ );
+});
diff --git a/packages/roadplan-ui/src/docs-components/VersionSelector/VersionSelector.tsx b/packages/roadplan-ui/src/docs-components/VersionSelector/VersionSelector.tsx
new file mode 100644
index 0000000..e33d845
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-components/VersionSelector/VersionSelector.tsx
@@ -0,0 +1,77 @@
+import { component$, useComputed$, useSignal } from "@builder.io/qwik";
+import { useLocation, useNavigate } from "@builder.io/qwik-city";
+import { ChevronIcon } from "../../Icons/ChevronIcon";
+
+const paths = import.meta.glob("/src/routes/versions/**/*", { eager: true });
+
+let versions = Object.keys(paths)
+ .filter((path) => path.indexOf("/src/routes/versions/") === 0)
+ .map((path) => {
+ path = path.replace("/src/routes/versions/", "");
+ const folders = path.split("/");
+ return folders[0];
+ })
+ .filter((path) => path.indexOf(".mdx") === -1)
+ .sort((a, b) => (b === "latest" ? 1 : a > b ? -1 : 1));
+
+versions = [...new Set(versions)];
+
+export const VersionSelector = component$(() => {
+ const location = useLocation();
+ const versionSig = useComputed$(
+ () => location.url.pathname.replace("/versions/", "").split("/")[0],
+ );
+ const navigate = useNavigate();
+ const showSig = useSignal(false);
+ return (
+
+
+ {showSig.value && (
+
+ )}
+
+ );
+});
diff --git a/packages/roadplan-ui/src/docs-layout/classic-layout/index.tsx b/packages/roadplan-ui/src/docs-layout/classic-layout/index.tsx
new file mode 100644
index 0000000..0a7de4f
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-layout/classic-layout/index.tsx
@@ -0,0 +1,60 @@
+import {
+ component$,
+ createContextId,
+ Slot,
+ useContextProvider,
+ useStore,
+ useVisibleTask$,
+} from "@builder.io/qwik";
+import { Aside as DefaultAside } from "../../docs-components/Aside/Aside";
+import { Footer as DefaultFooter } from "../../docs-components/Footer/Footer";
+import { Header as DefaultHeader } from "../../docs-components/Header/Header";
+import { Toc as DefaultToc } from "../../docs-components/Toc/Toc";
+import { MDXProvider } from "../../state/MDXProvider";
+import { components } from "../../user-components/MdxComponents/MdxComponents";
+import { config } from "../docs-config";
+
+type Store = {
+ theme: "light" | "dark";
+};
+
+export const StoreContext = createContextId("Store");
+
+type layoutProps = {
+ config?: config;
+};
+
+export default component$(({ config }) => {
+ const store = useStore({ theme: "light" });
+ useContextProvider(StoreContext, store);
+
+ const { Aside, Header, Footer, Toc } = config?.components ?? {};
+ // eslint-disable-next-line qwik/no-use-visible-task
+ useVisibleTask$(() => {
+ const theme = localStorage.getItem("theme") as Store["theme"];
+ store.theme = theme;
+ });
+ return (
+
+
+ {Header != null ?
:
}
+
+
+
+
+
+
+ {Toc != null ? : }
+
+
+ {Footer != null ?
:
}
+
+
+ );
+});
diff --git a/packages/roadplan-ui/src/docs-layout/docs-config.ts b/packages/roadplan-ui/src/docs-layout/docs-config.ts
new file mode 100644
index 0000000..4d7d281
--- /dev/null
+++ b/packages/roadplan-ui/src/docs-layout/docs-config.ts
@@ -0,0 +1,10 @@
+import { type Component } from "@builder.io/qwik";
+
+export type config = {
+ components?: {
+ Aside?: Component;
+ Footer?: Component;
+ Header?: Component;
+ Toc?: Component;
+ };
+};
diff --git a/packages/roadplan-ui/src/index.ts b/packages/roadplan-ui/src/index.ts
index d89790f..ddc4f38 100644
--- a/packages/roadplan-ui/src/index.ts
+++ b/packages/roadplan-ui/src/index.ts
@@ -1 +1,29 @@
export { Button } from "./components/Button/Button";
+
+// export docs-components
+export { Aside } from "./docs-components/Aside/Aside";
+export { Footer } from "./docs-components/Footer/Footer";
+export { Header } from "./docs-components/Header/Header";
+export { ThemeSelector } from "./docs-components/ThemeSelector/ThemeSelector";
+export { Toc } from "./docs-components/Toc/Toc";
+export { VersionSelector } from "./docs-components/VersionSelector/VersionSelector";
+
+// export docs-layout
+export { default as ClassicLayout } from "./docs-layout/classic-layout";
+
+// export Icons
+export { CheckIcon } from "./Icons/CheckIcon";
+export { ChevronIcon } from "./Icons/ChevronIcon";
+export { CloseIcon } from "./Icons/CloseIcon";
+export { CopyIcon } from "./Icons/CopyIcon";
+export { ForkIcon } from "./Icons/ForkIcon";
+export { GitHubIcon } from "./Icons/GitHubIcon";
+export { MenuIcon } from "./Icons/MenuIcon";
+export { StarIcon } from "./Icons/StarIcon";
+export { ThemeDarkIcon } from "./Icons/ThemeDarkIcon";
+export { ThemeLightIcon } from "./Icons/ThemeLightIcon";
+
+// export user-components
+export { CopyButton } from "./user-components/CopyButton/CopyButton";
+export { Highlight } from "./user-components/Highlight/Highlight";
+export { components } from "./user-components/MdxComponents/MdxComponents";
diff --git a/packages/roadplan-ui/src/root.tsx b/packages/roadplan-ui/src/root.tsx
index cde5946..ae55ecc 100644
--- a/packages/roadplan-ui/src/root.tsx
+++ b/packages/roadplan-ui/src/root.tsx
@@ -1,15 +1,22 @@
-import { Button } from "./components/Button/Button";
+import {
+ QwikCityProvider,
+ RouterOutlet,
+ ServiceWorkerRegister,
+} from "@builder.io/qwik-city";
export default () => {
return (
<>
-
-
- Qwik Blank App
-
-
-
-
+
+
+
+ Qwik Blank App
+
+
+
+
+
+
>
);
};
diff --git a/packages/roadplan-ui/src/routes/index.tsx b/packages/roadplan-ui/src/routes/index.tsx
new file mode 100644
index 0000000..0f75b16
--- /dev/null
+++ b/packages/roadplan-ui/src/routes/index.tsx
@@ -0,0 +1,4 @@
+import { component$ } from "@builder.io/qwik";
+import ClassicLayout from "../docs-layout/classic-layout";
+
+export default component$(() => );
diff --git a/packages/roadplan-ui/src/state/MDXProvider.tsx b/packages/roadplan-ui/src/state/MDXProvider.tsx
new file mode 100644
index 0000000..e1a2502
--- /dev/null
+++ b/packages/roadplan-ui/src/state/MDXProvider.tsx
@@ -0,0 +1,50 @@
+import {
+ Slot,
+ component$,
+ createContextId,
+ useContext,
+ useContextProvider,
+ type Component,
+} from "@builder.io/qwik";
+
+export const MDXContext = createContextId("MDXContext");
+
+export interface Components {
+ [tag: string]: Component;
+}
+
+/**
+ * Get current components from the MDX Context.
+ */
+export function useMDXComponents() {
+ return useContext(MDXContext, {});
+}
+
+export const DefaultWrapper = component$(() => {
+ return ;
+});
+
+/**
+ * Provider for MDX context
+ */
+export const MDXProvider = component$(
+ ({
+ components,
+ disableParentContext,
+ }: {
+ components: Components;
+ disableParentContext?: boolean;
+ }) => {
+ let allComponents = useMDXComponents();
+ if (disableParentContext) {
+ allComponents = components;
+ } else {
+ allComponents = { ...allComponents, ...components };
+ }
+ useContextProvider(MDXContext, {
+ wrapper: DefaultWrapper,
+ ...allComponents,
+ });
+ return ;
+ },
+);
diff --git a/packages/roadplan-ui/src/user-components/CopyButton/CopyButton.tsx b/packages/roadplan-ui/src/user-components/CopyButton/CopyButton.tsx
new file mode 100644
index 0000000..6a81d5f
--- /dev/null
+++ b/packages/roadplan-ui/src/user-components/CopyButton/CopyButton.tsx
@@ -0,0 +1,40 @@
+import type { QwikIntrinsicElements } from "@builder.io/qwik";
+import { $, component$, useSignal, useTask$ } from "@builder.io/qwik";
+import { CheckIcon } from "../../Icons/CheckIcon";
+import { CopyIcon } from "../../Icons/CopyIcon";
+
+type CopyButtonProps = QwikIntrinsicElements["button"] & {
+ code: string;
+ src?: string;
+};
+export async function copyToClipboardWithMeta(value: string) {
+ navigator.clipboard.writeText(value);
+}
+
+export const CopyButton = component$(({ code, ...props }) => {
+ const hasCopied = useSignal(false);
+
+ useTask$(({ track }) => {
+ track(() => hasCopied.value);
+ setTimeout(
+ $(() => {
+ hasCopied.value = false;
+ }),
+ 2000,
+ );
+ });
+
+ return (
+
+ );
+});
diff --git a/packages/roadplan-ui/src/user-components/Highlight/Highlight.tsx b/packages/roadplan-ui/src/user-components/Highlight/Highlight.tsx
new file mode 100644
index 0000000..4b29661
--- /dev/null
+++ b/packages/roadplan-ui/src/user-components/Highlight/Highlight.tsx
@@ -0,0 +1,84 @@
+import type { ClassList, PropsOf } from "@builder.io/qwik";
+import { $, component$, useSignal, useTask$ } from "@builder.io/qwik";
+import { getHighlighterCore } from "shiki";
+import css from "shiki/langs/css.mjs";
+import html from "shiki/langs/html.mjs";
+import tsx from "shiki/langs/tsx.mjs";
+import poimandres from "shiki/themes/poimandres.mjs";
+import { CopyButton } from "../CopyButton/CopyButton";
+
+export type HighlightProps = PropsOf<"div"> & {
+ code: string;
+ copyCodeClass?: ClassList;
+ language?: "tsx" | "html" | "css";
+ splitCommentStart?: string;
+ splitCommentEnd?: string;
+};
+
+export const Highlight = component$(
+ ({
+ code,
+ copyCodeClass,
+ language = "tsx",
+ splitCommentStart = "{/* start */}",
+ splitCommentEnd = "{/* end */}",
+ ...props
+ }: HighlightProps) => {
+ const codeSig = useSignal("");
+
+ const addShiki$ = $(async () => {
+ let modifiedCode: string = code;
+
+ let partsOfCode = modifiedCode.split(splitCommentStart);
+ if (partsOfCode.length > 1) {
+ modifiedCode = partsOfCode[1];
+ }
+
+ partsOfCode = modifiedCode.split(splitCommentEnd);
+ if (partsOfCode.length > 1) {
+ modifiedCode = partsOfCode[0];
+ }
+
+ const highlighter = await getHighlighterCore({
+ themes: [poimandres],
+ langs: [html, css, tsx],
+ loadWasm: import("shiki/wasm"),
+ });
+
+ const str = highlighter.codeToHtml(modifiedCode, {
+ lang: language,
+ themes: {
+ light: "poimandres",
+ dark: "poimandres",
+ },
+ });
+ codeSig.value = str.toString();
+ });
+
+ useTask$(async ({ track }) => {
+ track(() => code);
+ await addShiki$();
+ });
+
+ return (
+
+ );
+ },
+);
diff --git a/packages/roadplan-ui/src/user-components/MdxComponents/MdxComponents.tsx b/packages/roadplan-ui/src/user-components/MdxComponents/MdxComponents.tsx
new file mode 100644
index 0000000..ae91a6e
--- /dev/null
+++ b/packages/roadplan-ui/src/user-components/MdxComponents/MdxComponents.tsx
@@ -0,0 +1,30 @@
+import type { QwikIntrinsicElements } from "@builder.io/qwik";
+import { Slot, component$ } from "@builder.io/qwik";
+import { CopyButton } from "../CopyButton/CopyButton";
+
+export const components: Record = {
+ pre: component$<
+ QwikIntrinsicElements["div"] & {
+ __rawString__?: string;
+ }
+ >(({ __rawString__ }) => {
+ return (
+
+ );
+ }),
+ code: component$(({ ...props }) => {
+ return (
+
+
+
+ );
+ }),
+};
diff --git a/packages/roadplan-ui/vite.config.ts b/packages/roadplan-ui/vite.config.ts
index dab77fb..7c13ca4 100644
--- a/packages/roadplan-ui/vite.config.ts
+++ b/packages/roadplan-ui/vite.config.ts
@@ -1,7 +1,8 @@
-import { defineConfig } from "vite";
-import pkg from "./package.json";
+import { qwikCity } from "@builder.io/qwik-city/vite";
import { qwikVite } from "@builder.io/qwik/optimizer";
+import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
+import pkg from "./package.json";
const { dependencies = {}, peerDependencies = {} } = pkg as any;
const makeRegex = (dep) => new RegExp(`^${dep}(/.*)?$`);
@@ -25,6 +26,6 @@ export default defineConfig(() => {
],
},
},
- plugins: [qwikVite(), tsconfigPaths()],
+ plugins: [qwikVite(), qwikCity(), tsconfigPaths()],
};
});
diff --git a/packages/template/package.json b/packages/template/package.json
index abc651b..fc3db5c 100644
--- a/packages/template/package.json
+++ b/packages/template/package.json
@@ -24,21 +24,21 @@
"qwik": "qwik"
},
"devDependencies": {
- "@builder.io/qwik-city": "^1.5.2",
"@builder.io/qwik": "^1.5.2",
+ "@builder.io/qwik-city": "^1.5.2",
"@types/eslint": "^8.56.7",
"@types/estree-jsx": "^1.0.5",
"@types/node": "^20.12.7",
"@typescript-eslint/eslint-plugin": "^7.6.0",
"@typescript-eslint/parser": "^7.6.0",
"autoprefixer": "^10.4.19",
- "eslint-plugin-qwik": "1.5.2",
"eslint": "^8.51.0",
+ "eslint-plugin-qwik": "1.5.2",
"postcss": "^8.4.38",
- "prettier-plugin-tailwindcss": "^0.5.13",
"prettier": "^3.2.5",
+ "prettier-plugin-tailwindcss": "^0.5.13",
"rehype-pretty-code": "^0.13.1",
- "roadplan-ui": "file:../roadplan-ui",
+ "roadplan-ui": "^0.0.1",
"sass": "^1.74.1",
"shiki": "^1.3.0",
"tailwindcss": "3.4.3",
@@ -46,7 +46,7 @@
"undici": "^6.12.0",
"unified": "^11.0.4",
"unist-util-visit": "^5.0.0",
- "vite-tsconfig-paths": "^4.3.2",
- "vite": "^5.2.8"
+ "vite": "^5.2.8",
+ "vite-tsconfig-paths": "^4.3.2"
}
}
diff --git a/packages/template/src/routes/layout.tsx b/packages/template/src/routes/layout.tsx
index 3f238cd..c265297 100644
--- a/packages/template/src/routes/layout.tsx
+++ b/packages/template/src/routes/layout.tsx
@@ -1,5 +1,4 @@
import {
- Slot,
component$,
createContextId,
useContextProvider,
@@ -7,12 +6,7 @@ import {
useVisibleTask$,
} from "@builder.io/qwik";
import { type RequestHandler } from "@builder.io/qwik-city";
-import { Aside } from "~/components/Aside/Aside";
-import { Footer } from "~/components/Footer/Footer";
-import { Header } from "~/components/Header/Header";
-import { components } from "~/components/MdxComponents/MdxComponents";
-import { Toc } from "~/components/Toc/Toc";
-import { MDXProvider } from "~/state/MDXProvider";
+import { ClassicLayout } from "roadplan-ui";
export const onGet: RequestHandler = async ({ cacheControl }) => {
// Control caching for this request for best performance and to reduce hosting costs:
@@ -39,27 +33,5 @@ export default component$(() => {
const theme = localStorage.getItem("theme") as Store["theme"];
store.theme = theme;
});
- return (
-
-
-
- );
+ return ;
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2761290..0ed3f3d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -40,85 +40,14 @@ importers:
specifier: ^5.2.2
version: 5.2.2
- packages/create-roadplan/template:
- devDependencies:
- '@builder.io/qwik':
- specifier: ^1.5.2
- version: 1.5.2(@types/node@20.12.7)(sass@1.74.1)(undici@6.12.0)
- '@builder.io/qwik-city':
- specifier: ^1.5.2
- version: 1.5.2(@types/node@20.12.7)(rollup@4.14.1)(sass@1.74.1)
- '@types/eslint':
- specifier: ^8.56.7
- version: 8.56.7
- '@types/estree-jsx':
- specifier: ^1.0.5
- version: 1.0.5
- '@types/node':
- specifier: ^20.12.7
- version: 20.12.7
- '@typescript-eslint/eslint-plugin':
- specifier: ^7.6.0
- version: 7.6.0(@typescript-eslint/parser@7.6.0(eslint@8.54.0)(typescript@5.4.5))(eslint@8.54.0)(typescript@5.4.5)
- '@typescript-eslint/parser':
- specifier: ^7.6.0
- version: 7.6.0(eslint@8.54.0)(typescript@5.4.5)
- autoprefixer:
- specifier: ^10.4.19
- version: 10.4.19(postcss@8.4.38)
- eslint:
- specifier: ^8.51.0
- version: 8.54.0
- eslint-plugin-qwik:
- specifier: 1.5.2
- version: 1.5.2(eslint@8.54.0)
- postcss:
- specifier: ^8.4.38
- version: 8.4.38
- prettier:
- specifier: ^3.2.5
- version: 3.2.5
- prettier-plugin-tailwindcss:
- specifier: ^0.5.13
- version: 0.5.13(prettier@3.2.5)
- rehype-pretty-code:
- specifier: ^0.13.1
- version: 0.13.1(shiki@1.3.0)
- sass:
- specifier: ^1.74.1
- version: 1.74.1
- shiki:
- specifier: ^1.3.0
- version: 1.3.0
- tailwindcss:
- specifier: 3.4.3
- version: 3.4.3
- typescript:
- specifier: ^5.4.5
- version: 5.4.5
- undici:
- specifier: ^6.12.0
- version: 6.12.0
- unified:
- specifier: ^11.0.4
- version: 11.0.4
- unist-util-visit:
- specifier: ^5.0.0
- version: 5.0.0
- vite:
- specifier: ^5.2.8
- version: 5.2.8(@types/node@20.12.7)(sass@1.74.1)
- vite-tsconfig-paths:
- specifier: ^4.3.2
- version: 4.3.2(typescript@5.4.5)(vite@5.2.8(@types/node@20.12.7)(sass@1.74.1))
-
- packages/create-roadplan/template/server: {}
-
packages/roadplan-ui:
devDependencies:
'@builder.io/qwik':
specifier: 1.5.5
version: 1.5.5(@types/node@20.12.7)(sass@1.74.1)(undici@6.12.0)
+ '@builder.io/qwik-city':
+ specifier: ^1.5.5
+ version: 1.5.5(@types/node@20.12.7)(rollup@4.14.1)(sass@1.74.1)
'@types/eslint':
specifier: ^8.56.10
version: 8.56.10
@@ -143,6 +72,9 @@ importers:
prettier:
specifier: ^3.2.5
version: 3.2.5
+ shiki:
+ specifier: ^1.3.0
+ version: 1.3.0
typescript:
specifier: 5.4.5
version: 5.4.5
@@ -201,7 +133,7 @@ importers:
specifier: ^0.13.1
version: 0.13.1(shiki@1.3.0)
roadplan-ui:
- specifier: file:../roadplan-ui
+ specifier: ^0.0.1
version: link:../roadplan-ui
sass:
specifier: ^1.74.1
@@ -262,6 +194,10 @@ packages:
resolution: {integrity: sha512-hQ9OxIgfMg7msfPV/oowlzT6sOSJqtZD+8svEzPFsTeYwxkZZV7g0QEudsO0xX5htWj9bcDlE19SCPI2kvL/qA==}
engines: {node: '>=16.8.0 <18.0.0 || >=18.11'}
+ '@builder.io/qwik-city@1.5.5':
+ resolution: {integrity: sha512-Xi/1WqrB91CpZcAXs43OC87+7h89hJczJp43FXUMrvTHGeUsR/udhpz6SZWI/mHh0PFNx6f0A59tPmtDDzYl0Q==}
+ engines: {node: '>=16.8.0 <18.0.0 || >=18.11'}
+
'@builder.io/qwik@1.5.2':
resolution: {integrity: sha512-dUz61FEhC7NjJx0xDnCz6+F6uSBZgJUeur9+EYekpP/BNe2pr4ZH5FORcEOLetJtmxezR6EwTU3GeDLl5159Jg==}
engines: {node: '>=16.8.0 <18.0.0 || >=18.11'}
@@ -801,6 +737,9 @@ packages:
'@types/mdx@2.0.12':
resolution: {integrity: sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw==}
+ '@types/mdx@2.0.13':
+ resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
+
'@types/ms@0.7.34':
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
@@ -3684,11 +3623,33 @@ snapshots:
- supports-color
- terser
+ '@builder.io/qwik-city@1.5.5(@types/node@20.12.7)(rollup@4.14.1)(sass@1.74.1)':
+ dependencies:
+ '@mdx-js/mdx': 3.0.1
+ '@types/mdx': 2.0.13
+ source-map: 0.7.4
+ svgo: 3.2.0
+ undici: 6.12.0
+ vfile: 6.0.1
+ vite: 5.2.11(@types/node@20.12.7)(sass@1.74.1)
+ vite-imagetools: 6.2.9(rollup@4.14.1)
+ zod: 3.22.4
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - rollup
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
'@builder.io/qwik@1.5.2(@types/node@20.12.7)(sass@1.74.1)(undici@6.12.0)':
dependencies:
csstype: 3.1.3
undici: 6.12.0
- vite: 5.2.8(@types/node@20.12.7)(sass@1.74.1)
+ vite: 5.2.11(@types/node@20.12.7)(sass@1.74.1)
transitivePeerDependencies:
- '@types/node'
- less
@@ -3975,7 +3936,7 @@ snapshots:
'@types/estree': 1.0.5
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
- '@types/mdx': 2.0.12
+ '@types/mdx': 2.0.13
collapse-white-space: 2.1.0
devlop: 1.1.0
estree-util-build-jsx: 3.0.1
@@ -4151,6 +4112,8 @@ snapshots:
'@types/mdx@2.0.12': {}
+ '@types/mdx@2.0.13': {}
+
'@types/ms@0.7.34': {}
'@types/node@20.12.7':