Skip to content

Commit 3463a3a

Browse files
committed
wip
1 parent b49c716 commit 3463a3a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+3775
-12417
lines changed

.github/workflows/static_checks.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ jobs:
2323
- name: Install tools & dependencies
2424
uses: ./.github/actions/install
2525

26-
- name: Generate virtual modules
27-
run: pnpm sync
28-
2926
- name: TypeScript check
3027
run: pnpm check:types
3128

app.config.ts

Lines changed: 0 additions & 177 deletions
This file was deleted.

global.d.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.

osmium/package.json

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "solidbase-osmium",
3-
"version": "0.0.0",
3+
"version": "0.0.0-dev",
44
"description": "Official SolidJS docs theme for SolidBase.",
55
"type": "module",
66
"scripts": {
@@ -15,5 +15,31 @@
1515
"solidbase",
1616
"theme"
1717
],
18-
"license": "MIT"
18+
"files": [
19+
"src"
20+
],
21+
"exports": {
22+
".": {
23+
"solid": "./src/index.tsx",
24+
"import": "./src/index.tsx",
25+
"types": "./src/index.tsx"
26+
}
27+
},
28+
"license": "MIT",
29+
"dependencies": {
30+
"@fontsource-variable/geist": "^5.2.8",
31+
"@fontsource-variable/geist-mono": "^5.2.7",
32+
"@kobalte/core": "^0.13.11",
33+
"@kobalte/solidbase": "^0.4.2",
34+
"@orama/core": "^1.2.19",
35+
"@solid-primitives/context": "^0.3.2",
36+
"@solidjs/router": "0.15.3",
37+
"solid-heroicons": "^3.2.4",
38+
"solid-js": "^1.9.11"
39+
},
40+
"devDependencies": {
41+
"@kobalte/tailwindcss": "^0.9.0",
42+
"@tailwindcss/typography": "^0.5.19",
43+
"tailwindcss": "^3.4.19"
44+
}
1945
}

osmium/src/context.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { createSignal } from "solid-js";
2+
import { createContextProvider } from "@solid-primitives/context";
3+
import { useOsmiumThemeFrontmatter } from "./frontmatter";
4+
5+
const [OsmiumThemeStateProvider, useOsmiumThemeStateContext] =
6+
createContextProvider(() => {
7+
const [sidebarOpen, setSidebarOpen] = createSignal(false);
8+
const [tocOpen, setTocOpen] = createSignal(false);
9+
const [navOpen, setNavOpen] = createSignal(false);
10+
const frontmatter = useOsmiumThemeFrontmatter();
11+
12+
return {
13+
sidebarOpen,
14+
setSidebarOpen,
15+
tocOpen,
16+
setTocOpen,
17+
navOpen,
18+
setNavOpen,
19+
frontmatter,
20+
};
21+
});
22+
23+
export function useOsmiumThemeState() {
24+
return (
25+
useOsmiumThemeStateContext() ??
26+
(() => {
27+
throw new Error(
28+
"useOsmiumThemeState must be used within a OsmiumThemeStateProvider"
29+
);
30+
})()
31+
);
32+
}
33+
34+
export { OsmiumThemeStateProvider };

osmium/src/frontmatter.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { BaseFrontmatter, useFrontmatter } from "@kobalte/solidbase/client";
2+
import { createMemo } from "solid-js";
3+
4+
export function useOsmiumThemeFrontmatter() {
5+
const frontmatter = useFrontmatter<OsmiumThemeFrontmatter>();
6+
7+
return createMemo(() => {
8+
const data = frontmatter();
9+
if (!data) return data;
10+
11+
data.editLink ??= true;
12+
data.lastUpdated ??= true;
13+
14+
if (data?.layout === "home") {
15+
data.sidebar = false;
16+
data.footer = false;
17+
data.toc = false;
18+
data.prev = false;
19+
data.next = false;
20+
data.editLink = false;
21+
data.lastUpdated = false;
22+
}
23+
24+
return data;
25+
});
26+
}
27+
28+
export type RelativePageConfig =
29+
| string
30+
| false
31+
| {
32+
text?: string;
33+
link?: string;
34+
};
35+
36+
interface OsmiumThemeBaseFrontmatter {
37+
sidebar?: boolean;
38+
footer?: boolean;
39+
toc?: boolean;
40+
prev?: RelativePageConfig;
41+
next?: RelativePageConfig;
42+
editLink?: boolean;
43+
lastUpdated?: boolean;
44+
}
45+
46+
interface HeroActionConfig {
47+
theme?: string;
48+
text?: string;
49+
link?: string;
50+
}
51+
52+
export interface HeroConfig {
53+
name?: string;
54+
text?: string;
55+
tagline?: string;
56+
image?: {
57+
src: string;
58+
alt?: string;
59+
};
60+
actions?: Array<HeroActionConfig>;
61+
}
62+
63+
export interface FeaturesConfig {
64+
icon?: string;
65+
title?: string;
66+
details?: string;
67+
}
68+
69+
interface HomeLayoutFrontmatter {
70+
layout?: "home";
71+
hero?: HeroConfig;
72+
features?: Array<FeaturesConfig>;
73+
}
74+
75+
export type OsmiumThemeFrontmatter = (BaseFrontmatter &
76+
OsmiumThemeBaseFrontmatter) &
77+
HomeLayoutFrontmatter;

0 commit comments

Comments
 (0)