Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: various bugs #337

Merged
merged 23 commits into from
Feb 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

node_modules
build
dist
Expand All @@ -24,6 +23,13 @@ lerna-debug.log
# solid
.solid
.vinxi
.netlify
.output

# kobalte dev
packages/core/dev/App.tsx
packages/core/dev/index.css
packages/core/NOTICE.txt

# VSC Settings
.vscode/settings.json
Expand Down
4 changes: 0 additions & 4 deletions .husky/commit-msg

This file was deleted.

4 changes: 0 additions & 4 deletions .husky/pre-commit

This file was deleted.

2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
*.tsx
*.json
*.cjs
pnpm-lock.json
pnpm-lock.yaml
8 changes: 8 additions & 0 deletions NOTICE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -229,3 +229,11 @@ This codebase contains a modified portion of code from the TC39 Temporal proposa
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

-------------------------------------------------------------------------------
This codebase contains a modified portion of code from Corvu which can be obtained at:
* SOURCE:
* https://github.com/corvudev/corvu/blob/main/packages/corvu/

* LICENSE:
* https://github.com/corvudev/corvu/blob/main/LICENSE
139 changes: 70 additions & 69 deletions apps/docs/package.json
Original file line number Diff line number Diff line change
@@ -1,71 +1,72 @@
{
"name": "@kobalte/docs",
"private": true,
"description": "Documentation website of Kobalte.",
"keywords": [
"solid",
"solidjs",
"ui",
"library",
"design-system",
"components",
"headless",
"unstyled",
"aria"
],
"homepage": "https://github.com/kobaltedev/kobalte/tree/main/apps/docs#readme",
"bugs": {
"url": "https://github.com/kobaltedev/kobalte/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/kobaltedev/kobalte.git"
},
"license": "MIT",
"author": "Fabien Marie-Louise <[email protected]>",
"type": "module",
"scripts": {
"build": "vinxi build",
"clean": "rm -rf .solid && rm -rf netlify && rm -rf .turbo && rm -rf node_modules && rm -rf dist",
"dev": "vinxi dev --host",
"start": "vinxi start"
},
"dependencies": {
"@docsearch/css": "3.5.2",
"@docsearch/js": "3.5.2",
"@kobalte/core": "0.12.1",
"@solidjs/meta": "0.29.3",
"@solidjs/router": "0.10.6",
"@tanstack/solid-virtual": "3.0.0-beta.6",
"clsx": "2.0.0",
"solid-js": "1.8.8",
"@solidjs/start": "0.4.11",
"vinxi": "0.1.10",
"undici": "5.23.0"
},
"devDependencies": {
"@kobalte/tailwindcss": "0.9.0",
"@mdx-js/mdx": "3.0.0",
"@mdx-js/rollup": "3.0.0",
"@tailwindcss/typography": "0.5.9",
"acorn": "8.10.0",
"autoprefixer": "10.4.15",
"github-slugger": "2.0.0",
"postcss": "8.4.28",
"rehype-pretty-code": "0.12.3",
"remark-shiki-twoslash": "3.1.3",
"rehype-raw": "7.0.0",
"rehype-slug": "6.0.0",
"remark-gfm": "4.0.0",
"shiki": "0.14.7",
"solid-mdx": "0.0.7",
"tailwindcss": "3.3.3",
"typescript": "4.9.5",
"unist-util-visit": "5.0.0",
"vite": "5.0.12",
"@vinxi/plugin-mdx": "3.7.1"
},
"engines": {
"node": ">=18"
}
"name": "@kobalte/docs",
"private": true,
"description": "Documentation website of Kobalte.",
"keywords": [
"solid",
"solidjs",
"ui",
"library",
"design-system",
"components",
"headless",
"unstyled",
"aria"
],
"homepage": "https://github.com/kobaltedev/kobalte/tree/main/apps/docs#readme",
"bugs": {
"url": "https://github.com/kobaltedev/kobalte/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/kobaltedev/kobalte.git"
},
"license": "MIT",
"author": "Fabien Marie-Louise <[email protected]>",
"type": "module",
"scripts": {
"build": "NODE_OPTIONS=\"--max-old-space-size=8192\" vinxi build",
"build:dev": "NODE_OPTIONS=\"--max-old-space-size=8192\" DEVELOPMENT=1 vinxi build",
"clean": "rm -rf .solid && rm -rf netlify && rm -rf .turbo && rm -rf node_modules && rm -rf dist",
"dev": "vinxi dev --host",
"start": "vinxi start"
},
"dependencies": {
"@docsearch/css": "3.5.2",
"@docsearch/js": "3.5.2",
"@kobalte/core": "0.12.1",
"@solidjs/meta": "0.29.3",
"@solidjs/router": "0.12.4",
"@tanstack/solid-virtual": "3.0.0-beta.6",
"clsx": "2.0.0",
"solid-js": "1.8.15",
"@solidjs/start": "0.5.10",
"vinxi": "0.3.3",
"undici": "5.23.0"
},
"devDependencies": {
"@kobalte/tailwindcss": "0.9.0",
"@mdx-js/mdx": "3.0.0",
"@mdx-js/rollup": "3.0.0",
"@tailwindcss/typography": "0.5.9",
"acorn": "8.10.0",
"autoprefixer": "10.4.15",
"github-slugger": "2.0.0",
"postcss": "8.4.28",
"rehype-pretty-code": "0.12.3",
"remark-shiki-twoslash": "3.1.3",
"rehype-raw": "7.0.0",
"rehype-slug": "6.0.0",
"remark-gfm": "4.0.0",
"shiki": "0.14.7",
"solid-mdx": "0.0.7",
"tailwindcss": "3.3.3",
"typescript": "4.9.5",
"unist-util-visit": "5.0.0",
"vite": "5.1.4",
"@vinxi/plugin-mdx": "3.7.1"
},
"engines": {
"node": ">=18"
}
}
72 changes: 35 additions & 37 deletions apps/docs/src/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,22 @@ import { getCookie } from "vinxi/server";
import toastStyles from "./examples/toast.module.css";
import { mdxComponents } from "./mdx-components";

export const mods = /*#__PURE__*/ import.meta.glob<
true,
string,
{
getHeadings: () => {
depth: number;
text: string;
slug: string;
}[];
}
>("./routes/docs/**/*.{md,mdx}", {
eager: true,
query: {
meta: "",
},
});
//export const mods = /*#__PURE__*/ import.meta.glob<
// true,
// string,
// {
// getHeadings: () => {
// depth: number;
// text: string;
// slug: string;
// }[];
// }
//>("./routes/docs/**/*.{md,mdx}", {
// eager: true,
// query: {
// meta: "",
// },
//});

function getServerCookies() {
"use server";
Expand All @@ -52,28 +52,26 @@ export default function App() {
return (
<Router
root={(props) => (
<Suspense>
<MetaProvider>
<Title>Kobalte</Title>
<ColorModeScript storageType={storageManager.type} />
<ColorModeProvider storageManager={storageManager}>
<MDXProvider components={mdxComponents}>
{props.children}
<MetaProvider>
<Title>Kobalte</Title>
<ColorModeScript storageType={storageManager.type} />
<ColorModeProvider storageManager={storageManager}>
<MDXProvider components={mdxComponents}>
<Suspense>{props.children}</Suspense>

<Portal>
<Toast.Region>
<Toast.List class={toastStyles.toast__list} />
</Toast.Region>
<Toast.Region regionId="custom-region-id">
<Toast.List
class={toastStyles["toast__list-custom-region"]}
/>
</Toast.Region>
</Portal>
</MDXProvider>
</ColorModeProvider>
</MetaProvider>
</Suspense>
<Portal>
<Toast.Region>
<Toast.List class={toastStyles.toast__list} />
</Toast.Region>
<Toast.Region regionId="custom-region-id">
<Toast.List
class={toastStyles["toast__list-custom-region"]}
/>
</Toast.Region>
</Portal>
</MDXProvider>
</ColorModeProvider>
</MetaProvider>
)}
>
<FileRoutes />
Expand Down
73 changes: 64 additions & 9 deletions apps/docs/src/components/table-of-contents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ import {
Suspense,
createEffect,
createSignal,
on,
onCleanup,
} from "solid-js";
import { isServer } from "solid-js/web";
import { mods } from "../app";

interface TocItem {
Expand Down Expand Up @@ -79,22 +81,74 @@ function useCurrentSection(tableOfContents: Accessor<TocItem[] | undefined>) {
return currentSection;
}

const getTOC = cache(async (pathname: string) => {
"use server";

const mod = mods[`./routes${pathname}.mdx`] ?? mods[`./routes${pathname}.md`];
return !mod
? []
: mod.getHeadings().filter((h) => h.depth > 1 && h.depth <= 3);
}, "toc");
//const getTOC = cache(async (pathname: string) => {
// "use server";
//
// const mod = mods[`./routes${pathname}.mdx`] ?? mods[`./routes${pathname}.md`];
// return !mod
// ? []
// : mod.getHeadings().filter((h) => h.depth > 1 && h.depth <= 3);
//}, "toc");

function updateHeadings(setter: Setter<TocItem[]>) {
if (document.getElementsByTagName("article").length === 0) {
setTimeout(() => updateHeadings(setter), 1);
return;
}

console.log("update");

setter(
[
...document
.getElementsByTagName("article")[0]
.querySelectorAll("h1, h2, h3, h4, h5, h6"),
].map((element) => ({
depth: Number(element.tagName.substr(1)),
text: element.textContent!,
slug: element.id,
})),
);
}

export function TableOfContents() {
const path = useLocation();

const toc = createAsync(() => getTOC(path.pathname));
// const toc = createAsync(() => getTOC(path.pathname));

const [toc, setToc] = createSignal<TocItem[]>([]);

createEffect(
on(
() => path.pathname,
(pathname) => {
if (isServer) return;

updateHeadings(setToc);
},
),
);

const currentSection = useCurrentSection(toc);

createEffect(
on(
() => currentSection(),
(currentSection) => {
if (isServer) return;

const element = document.querySelector(
`a[data-toc-slug="${currentSection}"]`,
);

element?.scrollIntoView({
behavior: "smooth",
block: "nearest",
});
},
),
);

return (
<div class="hidden xl:sticky xl:top-[4.5rem] xl:block xl:h-[calc(100vh-4.5rem)] xl:flex-none xl:overflow-y-auto xl:py-4 xl:pr-6">
<nav aria-labelledby="on-this-page-title" class="w-56">
Expand All @@ -111,6 +165,7 @@ export function TableOfContents() {
<li>
<h3>
<a
data-toc-slug={section.slug}
href={`${path.pathname}#${section.slug}`}
class={clsx(
"block w-full font-sans transition font-normal rounded px-3 py-2 hover:bg-sky-50 dark:hover:bg-sky-900/20",
Expand Down
3 changes: 1 addition & 2 deletions apps/docs/src/entry-server.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { createHandler } from "@solidjs/start/entry";
import { StartServer } from "@solidjs/start/server";
import { StartServer, createHandler } from "@solidjs/start/server";

export default createHandler(() => (
<StartServer
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/src/mdx-components.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const mdxComponents = {

return (
<h1 {...others}>
<MetaTitle>{local.children} – Kobalte</MetaTitle>
<MetaTitle>{`${local.children} – Kobalte`}</MetaTitle>
{local.children}
</h1>
);
Expand Down
Loading
Loading