nimbus-docs 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts CHANGED
@@ -7,8 +7,6 @@ interface NimbusConfig {
7
7
  site: string;
8
8
  title: string;
9
9
  description?: string;
10
- /** Short text or symbol (max ~2 chars) used in the header logo. */
11
- logo: string;
12
10
  locale?: string;
13
11
  /** Label for the "Home" breadcrumb / root link. */
14
12
  homeLabel?: string;
@@ -16,8 +14,6 @@ interface NimbusConfig {
16
14
  github?: string | null;
17
15
  /** Edit-link URL pattern. `{path}` is replaced with the doc's repo path. */
18
16
  editPattern?: string | null;
19
- /** Footer text. */
20
- footer?: string;
21
17
  /**
22
18
  * Site-wide social/OG fallback image. Site-relative (e.g. `/og.png`) or
23
19
  * absolute URL. Used when a page doesn't supply its own `socialImage`
@@ -29,6 +25,14 @@ interface NimbusConfig {
29
25
  /** Site-wide head elements (meta, link, script, style). */
30
26
  head?: HeadElement[];
31
27
  sidebar?: SidebarConfig;
28
+ /**
29
+ * Site-wide chrome toggles. Both fields default to `true` (render).
30
+ * Per-page frontmatter (`sidebar: false`, `tableOfContents: false`) can
31
+ * override the site-wide default in the "off" direction. Merge is AND:
32
+ * chrome renders only when BOTH the site-wide flag AND the per-page
33
+ * field agree. There is no per-page opt-in to override a site-wide
34
+ * `false` — if you've turned a column off site-wide, it stays off.
35
+ */
32
36
  features?: FeaturesConfig;
33
37
  /**
34
38
  * Search backend. Absent means Pagefind. `false` disables framework search
@@ -130,11 +134,25 @@ interface VersionStatus {
130
134
  isDeprecated: boolean;
131
135
  isHidden: boolean;
132
136
  }
137
+ /**
138
+ * Site-wide chrome toggles. Each field is a kill switch for one
139
+ * piece of the docs layout that the user might want hidden everywhere.
140
+ * Per-page frontmatter (`sidebar: false`, `tableOfContents: false`) can
141
+ * additionally turn a column off for individual pages even when the
142
+ * site-wide flag is `true`.
143
+ *
144
+ * Kept intentionally narrow — fields here exist because they need to
145
+ * thread through layout + header + mobile dialog (non-trivial to remove
146
+ * by user-side edits alone). Everything else that "could be a feature
147
+ * flag" is instead handled by editing user-owned files (delete the
148
+ * `<Pagination />` from `DocsLayout.astro`, drop `editPattern` to hide
149
+ * edit links, etc.).
150
+ */
133
151
  interface FeaturesConfig {
134
- search?: boolean;
135
- editLinks?: boolean;
136
- pagination?: boolean;
137
- toc?: boolean;
152
+ /** Render the sidebar column site-wide. Default `true`. */
153
+ sidebar?: boolean;
154
+ /** Render the table-of-contents column site-wide. Default `true`. */
155
+ tableOfContents?: boolean;
138
156
  }
139
157
  interface SearchConfig {
140
158
  provider?: "pagefind" | "custom";
@@ -254,6 +272,16 @@ interface SidebarGroupItem {
254
272
  badge?: SidebarBadge;
255
273
  children: SidebarItem[];
256
274
  _indexId?: string;
275
+ /**
276
+ * Internal: the URL prefix where this group's content lives, when
277
+ * derived from an `autogenerate` config item. `deriveSidebarSections`
278
+ * uses this as the section's href instead of the first link's href —
279
+ * so a `Components` group autogenerated from a collection mounted at
280
+ * `/components` links the section tab to `/components` (the landing
281
+ * page) rather than `/components/accordion` (the alphabetically-first
282
+ * child).
283
+ */
284
+ _prefix?: string;
257
285
  }
258
286
  type SidebarItem = SidebarLinkItem | SidebarExternalLinkItem | SidebarGroupItem;
259
287
  interface TOCItem {
@@ -310,7 +338,6 @@ interface BannerProps {
310
338
  * Every field is something the Nimbus framework knows how to handle:
311
339
  * - `head` entries get concatenated with `config.head` in the layout.
312
340
  * - `noindex` emits `<meta name="robots" content="noindex">`.
313
- * - `aiDeprioritize` signals AI crawlers via the conventional meta.
314
341
  * - `title` / `description` populate `<title>` / `<meta name="description">`.
315
342
  */
316
343
  interface BasePageProps {
@@ -320,8 +347,6 @@ interface BasePageProps {
320
347
  head?: HeadElement[];
321
348
  /** Emit `<meta name="robots" content="noindex">`. */
322
349
  noindex?: boolean;
323
- /** Signal AI crawlers to deprioritize this page. */
324
- aiDeprioritize?: boolean;
325
350
  /** Absolute or site-relative URL for this page's markdown variant. */
326
351
  markdownUrl?: string;
327
352
  /**
@@ -367,20 +392,39 @@ interface BasePageProps {
367
392
  * project-specific extras.
368
393
  */
369
394
  interface DocsPageProps extends BasePageProps {
370
- /** Layout variant. `"splash"` skips the sidebar / TOC chrome. */
371
- template?: "doc" | "splash";
372
- /** Hide the search index entry for this page. */
373
- pagefind?: boolean;
395
+ /**
396
+ * Layout mode. `"custom"` skips all chrome (sidebar, TOC, pagination) —
397
+ * the framework gets out of the way for landing pages and custom layouts.
398
+ * Per-key toggles (`sidebar: false`, `tableOfContents: false`, etc.) can
399
+ * override individual pieces regardless of mode.
400
+ */
401
+ mode?: "doc" | "custom";
402
+ /**
403
+ * Whether the page is in the site search index. When undefined, derives
404
+ * from `noindex`: a non-crawlable page is by default not searchable.
405
+ */
406
+ searchable?: boolean;
374
407
  /** Don't render in production; treat as `noindex` in dev. */
375
408
  draft?: boolean;
376
409
  /** URL pointing at this page's source on the repo host (computed from `config.editPattern`). */
377
410
  editUrl?: string;
378
411
  /** Optional top-of-page banner. */
379
412
  banner?: BannerProps;
380
- /** From `getSidebar()`. */
381
- sidebar: SidebarItem[];
382
- /** From `getTOC()`. */
383
- headings: TOCItem[];
413
+ /**
414
+ * From `getSidebar()`. Pass `false` when the page opted out via
415
+ * `sidebar: false` in frontmatter — the layout treats `false` as
416
+ * "suppress all sidebar chrome" (desktop rail, mobile dialog, and the
417
+ * header menu button that opens it). An empty array still renders the
418
+ * column shell.
419
+ */
420
+ sidebar: SidebarItem[] | false;
421
+ /**
422
+ * From `getTOC()`. Pass `false` when the page opted out via
423
+ * `tableOfContents: false` in frontmatter — the layout treats `false`
424
+ * as "suppress the TOC rail entirely" rather than rendering an empty
425
+ * column.
426
+ */
427
+ headings: TOCItem[] | false;
384
428
  /** From `getBreadcrumbs()`. */
385
429
  breadcrumbs: Breadcrumb[];
386
430
  /** From `getPrevNext()`. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nimbus-docs",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Docs, for humans and agents",
@@ -43,8 +43,6 @@ export interface Props {
43
43
  description?: string;
44
44
  /** Emit `<meta name="robots" content="noindex">`. */
45
45
  noindex?: boolean;
46
- /** Emit `<meta name="ai-deprioritize" content="true">`. */
47
- aiDeprioritize?: boolean;
48
46
  /** Absolute or site-relative URL for the markdown variant of this page. */
49
47
  markdownUrl?: string;
50
48
  /**
@@ -73,7 +71,6 @@ const {
73
71
  title,
74
72
  description,
75
73
  noindex,
76
- aiDeprioritize,
77
74
  markdownUrl,
78
75
  socialImage,
79
76
  lastUpdated,
@@ -136,17 +133,39 @@ const canonical = Astro.site
136
133
 
137
134
  const fullTitle = title !== config.title ? `${title} | ${config.title}` : title;
138
135
  const resolvedDescription = description ?? config.description;
139
- const faviconHref = `${import.meta.env.BASE_URL}favicon.svg`;
140
136
  const lang = config.locale ?? "en";
141
137
 
142
138
  const isHomePage = Astro.url.pathname === "/";
143
139
  const ogType = isHomePage ? "website" : "article";
144
140
 
145
141
  // `process.cwd()` resolves to the consumer's project root at build time.
146
- // The check lets users drop a `public/opengraph.png` and have it picked
147
- // up as the default social image without touching config.
148
- const userOpenGraphImage = join(process.cwd(), "public", "opengraph.png");
149
- const defaultSocialImage = existsSync(userOpenGraphImage) ? "/opengraph.png" : "/og.png";
142
+ // The checks below let users drop files into `public/` and have them
143
+ // picked up automatically no config touch needed.
144
+ const publicDir = join(process.cwd(), "public");
145
+
146
+ // Favicon precedence: svg > ico > png. The first file that exists wins;
147
+ // when none exists we still emit the svg link so users who drop one in
148
+ // later don't need to touch the layout.
149
+ const faviconCandidates: ReadonlyArray<{ file: string; type: string }> = [
150
+ { file: "favicon.svg", type: "image/svg+xml" },
151
+ { file: "favicon.ico", type: "image/x-icon" },
152
+ { file: "favicon.png", type: "image/png" },
153
+ ];
154
+ const matchedFavicon =
155
+ faviconCandidates.find((c) => existsSync(join(publicDir, c.file))) ??
156
+ faviconCandidates[0];
157
+ const faviconHref = `${import.meta.env.BASE_URL}${matchedFavicon.file}`;
158
+ const faviconType = matchedFavicon.type;
159
+
160
+ // Social image precedence: page prop > config > `public/opengraph.png` >
161
+ // `public/logo.png` > generated `/og.png` fallback.
162
+ const userOpenGraphImage = join(publicDir, "opengraph.png");
163
+ const userLogoImage = join(publicDir, "logo.png");
164
+ const defaultSocialImage = existsSync(userOpenGraphImage)
165
+ ? "/opengraph.png"
166
+ : existsSync(userLogoImage)
167
+ ? "/logo.png"
168
+ : "/og.png";
150
169
  const socialImagePath = socialImage ?? config.socialImage ?? defaultSocialImage;
151
170
  const ogImage = socialImagePath
152
171
  ? Astro.site
@@ -187,9 +206,8 @@ const mergedHead = [...(config.head ?? []), ...pageHead];
187
206
  <meta name="generator" content={Astro.generator} />
188
207
  {resolvedDescription && <meta name="description" content={resolvedDescription} />}
189
208
  {noindex && <meta name="robots" content="noindex" />}
190
- {aiDeprioritize && <meta name="ai-deprioritize" content="true" />}
191
209
 
192
- <link rel="icon" type="image/svg+xml" href={faviconHref} />
210
+ <link rel="icon" type={faviconType} href={faviconHref} />
193
211
  {hasSite && canonical && <link rel="canonical" href={canonical} />}
194
212
  {hasSite && <link rel="sitemap" href="/sitemap-index.xml" />}
195
213
  {markdownUrl && !isHiddenVersion && (