Skip to content

Commit e46db49

Browse files
committed
refactor: migrate navbar property to visibility
1 parent 78e5f79 commit e46db49

File tree

9 files changed

+53
-40
lines changed

9 files changed

+53
-40
lines changed

.astro/collections/docDefaults.schema.json

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,15 @@
2222
"collection": {
2323
"type": "array"
2424
},
25-
"navbar": {
26-
"type": "boolean",
27-
"default": false
25+
"visibility": {
26+
"type": "array",
27+
"items": {
28+
"type": "string",
29+
"enum": [
30+
"navbar"
31+
]
32+
},
33+
"default": []
2834
},
2935
"$schema": {
3036
"type": "string"

.astro/content-modules.mjs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11

22
export default new Map([
33
["content/blog/index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fblog%2Findex.mdx&astroContentModuleFlag=true")],
4-
["content/blog/welcome.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fblog%2Fwelcome.mdx&astroContentModuleFlag=true")],
54
["content/blog/lorem_ipsum.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fblog%2Florem_ipsum.mdx&astroContentModuleFlag=true")],
6-
["content/index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Findex.mdx&astroContentModuleFlag=true")],
7-
["content/docs/framework/_default.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fframework%2F_default.mdx&astroContentModuleFlag=true")],
8-
["content/docs/syntax/_default.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fsyntax%2F_default.mdx&astroContentModuleFlag=true")],
5+
["content/blog/welcome.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fblog%2Fwelcome.mdx&astroContentModuleFlag=true")],
96
["content/docs/framework/blog.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fframework%2Fblog.mdx&astroContentModuleFlag=true")],
107
["content/docs/framework/configuration.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fframework%2Fconfiguration.mdx&astroContentModuleFlag=true")],
118
["content/docs/framework/deploy.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fframework%2Fdeploy.mdx&astroContentModuleFlag=true")],
@@ -15,7 +12,10 @@ export default new Map([
1512
["content/docs/framework/project-structure.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fframework%2Fproject-structure.mdx&astroContentModuleFlag=true")],
1613
["content/docs/framework/routing.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fframework%2Frouting.mdx&astroContentModuleFlag=true")],
1714
["content/docs/syntax/alert.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fsyntax%2Falert.mdx&astroContentModuleFlag=true")],
15+
["content/docs/syntax/markdown.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fsyntax%2Fmarkdown.mdx&astroContentModuleFlag=true")],
1816
["content/docs/syntax/code-block.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fsyntax%2Fcode-block.mdx&astroContentModuleFlag=true")],
1917
["content/docs/syntax/text.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fsyntax%2Ftext.mdx&astroContentModuleFlag=true")],
20-
["content/docs/syntax/markdown.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fsyntax%2Fmarkdown.mdx&astroContentModuleFlag=true")]]);
18+
["content/docs/framework/_default.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fframework%2F_default.mdx&astroContentModuleFlag=true")],
19+
["content/docs/syntax/_default.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Fdocs%2Fsyntax%2F_default.mdx&astroContentModuleFlag=true")],
20+
["content/index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=content%2Findex.mdx&astroContentModuleFlag=true")]]);
2121

.astro/data-store.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

content/docs/framework/_default.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ directory: framework
44
description: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
55
permalink: framework
66
icon: lucide:cuboid
7-
navbar: true
7+
visibility:
8+
- navbar
89
collection:
910
- getting-started: false
1011
- installation: true

content/docs/framework/docs.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ title: First file
9090
description: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
9191
permalink: first-file
9292
icon: lucide:file
93+
visibility:
94+
- navbar
9395
---
9496
```
9597

@@ -99,7 +101,7 @@ export const docSchema = z.object({
99101
description: z.string(),
100102
permalink: z.string().optional(),
101103
icon: z.string().optional(),
102-
navbar: z.boolean().default(false),
104+
visibility: z.array(z.enum(["navbar"])).default([]),
103105
});
104106
```
105107

content/docs/syntax/_default.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ directory: syntax
44
description: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
55
permalink: syntax
66
icon: lucide:pencil-line
7-
navbar: false
7+
visibility:
8+
- navbar
89
collection:
910
- text: true
1011
- markdown: true

src/content.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export const docDefaultSchema = z.object({
1717
icon: z.string().optional(),
1818
directory: z.string(),
1919
collection: z.array(z.any()),
20-
navbar: z.boolean().default(false),
20+
visibility: z.array(z.enum(["navbar"])).default([]),
2121
});
2222

2323
export const docDefaults = defineCollection({

src/lib/layouts/BaseLayout.astro

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,12 @@ const derivedDocs = await load();
5555
</head>
5656
<body class="relative min-h-screen">
5757
<div class="min-h-screen flex flex-col">
58-
<Navbar docs={derivedDocs} client:only />
58+
<Navbar
59+
docs={derivedDocs.filter((entry) =>
60+
entry.visibility.includes("navbar"),
61+
)}
62+
client:only
63+
/>
5964
<slot />
6065
<Footer client:only />
6166
</div>

src/lib/utils.ts

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -69,32 +69,30 @@ export function useDocumentation(astro: {
6969
const defaults = await getCollection("docDefaults");
7070

7171
return Promise.all(
72-
defaults
73-
.filter((entry) => entry.data.navbar)
74-
.map(async (entry) => {
75-
let children = await Promise.all(
76-
entry.data.collection.map(async (child) => {
77-
const [filename, visible] = Object.entries(child)[0];
78-
const element = await getEntry(
79-
entry.data.directory as any,
80-
filename as any,
81-
);
82-
83-
if (!element) {
84-
console.error(`Element not found: ${filename}`);
85-
return null;
86-
}
87-
88-
return {
89-
...element,
90-
visible,
91-
href: `/docs/${entry.data.permalink}/${(element as any).data.permalink}`,
92-
};
93-
}),
94-
);
95-
96-
return { ...entry.data, collection: children };
97-
}),
72+
defaults.map(async (entry) => {
73+
let children = await Promise.all(
74+
entry.data.collection.map(async (child) => {
75+
const [filename, visible] = Object.entries(child)[0];
76+
const element = await getEntry(
77+
entry.data.directory as any,
78+
filename as any,
79+
);
80+
81+
if (!element) {
82+
console.error(`Element not found: ${filename}`);
83+
return null;
84+
}
85+
86+
return {
87+
...element,
88+
visible,
89+
href: `/docs/${entry.data.permalink}/${(element as any).data.permalink}`,
90+
};
91+
}),
92+
);
93+
94+
return { ...entry.data, collection: children };
95+
}),
9896
);
9997
}
10098

0 commit comments

Comments
 (0)