varvara-typedoc-theme 0.3.10 → 0.3.12

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.
@@ -81,10 +81,29 @@ dialog {
81
81
  background-color: var(--va-background-color-default);
82
82
  }
83
83
 
84
- .navigation-links a span {
84
+ .navigation-links a span,
85
+ .tsd-navigation a span {
85
86
  flex: 1;
86
87
  }
87
88
 
89
+ #tsd-sidebar-links a {
90
+ margin-bottom: 0;
91
+ }
92
+
93
+ .tsd-navigation {
94
+ margin-bottom: var(--va-space-4);
95
+
96
+ a {
97
+ width: 100%;
98
+ }
99
+ }
100
+
101
+ @media (min-width: 769px) {
102
+ .tsd-navigation .tsd-nav-link {
103
+ display: none;
104
+ }
105
+ }
106
+
88
107
  .site-menu {
89
108
  margin-top: 0;
90
109
  }
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import * as path from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import {
9
9
  DefaultTheme,
10
- JSX as JSX5,
10
+ JSX as JSX6,
11
11
  RendererEvent
12
12
  } from "typedoc";
13
13
 
@@ -17,28 +17,28 @@ import {
17
17
  } from "typedoc";
18
18
 
19
19
  // src/partials/footer.tsx
20
- import { i18n, JSX as JSX2 } from "typedoc";
20
+ import { i18n, JSX } from "typedoc";
21
21
  function footer(context) {
22
22
  const hideGenerator = context.options.getValue("hideGenerator");
23
- let generatorDisplay = /* @__PURE__ */ JSX2.createElement(JSX2.Fragment, null);
23
+ let generatorDisplay = /* @__PURE__ */ JSX.createElement(JSX.Fragment, null);
24
24
  if (!hideGenerator) {
25
25
  const message = i18n.theme_generated_using_typedoc();
26
26
  const index = message.indexOf("TypeDoc");
27
27
  if (index === -1) {
28
- generatorDisplay = /* @__PURE__ */ JSX2.createElement("p", {
28
+ generatorDisplay = /* @__PURE__ */ JSX.createElement("p", {
29
29
  class: "tsd-generator"
30
30
  }, message);
31
31
  } else {
32
32
  const pre = message.substring(0, index);
33
33
  const post = message.substring(index + "TypeDoc".length);
34
- generatorDisplay = /* @__PURE__ */ JSX2.createElement("p", {
34
+ generatorDisplay = /* @__PURE__ */ JSX.createElement("p", {
35
35
  class: "tsd-generator"
36
- }, pre, /* @__PURE__ */ JSX2.createElement("a", {
36
+ }, pre, /* @__PURE__ */ JSX.createElement("a", {
37
37
  href: "https://typedoc.org/",
38
38
  class: "va-link",
39
39
  target: "_blank",
40
40
  rel: "noopener"
41
- }, "TypeDoc"), " & ", /* @__PURE__ */ JSX2.createElement("a", {
41
+ }, "TypeDoc"), " & ", /* @__PURE__ */ JSX.createElement("a", {
42
42
  href: "https://varvara.js.org/",
43
43
  class: "va-link",
44
44
  target: "_blank",
@@ -47,19 +47,19 @@ function footer(context) {
47
47
  }
48
48
  }
49
49
  const customFooterHtml = context.options.getValue("customFooterHtml");
50
- let customFooterDisplay = /* @__PURE__ */ JSX2.createElement(JSX2.Fragment, null);
50
+ let customFooterDisplay = /* @__PURE__ */ JSX.createElement(JSX.Fragment, null);
51
51
  if (customFooterHtml) {
52
52
  if (context.options.getValue("customFooterHtmlDisableWrapper")) {
53
- customFooterDisplay = /* @__PURE__ */ JSX2.createElement(JSX2.Raw, {
53
+ customFooterDisplay = /* @__PURE__ */ JSX.createElement(JSX.Raw, {
54
54
  html: customFooterHtml
55
55
  });
56
56
  } else {
57
- customFooterDisplay = /* @__PURE__ */ JSX2.createElement("p", null, /* @__PURE__ */ JSX2.createElement(JSX2.Raw, {
57
+ customFooterDisplay = /* @__PURE__ */ JSX.createElement("p", null, /* @__PURE__ */ JSX.createElement(JSX.Raw, {
58
58
  html: customFooterHtml
59
59
  }));
60
60
  }
61
61
  }
62
- return /* @__PURE__ */ JSX2.createElement("footer", null, /* @__PURE__ */ JSX2.createElement("div", {
62
+ return /* @__PURE__ */ JSX.createElement("footer", null, /* @__PURE__ */ JSX.createElement("div", {
63
63
  class: "container"
64
64
  }, context.hook("footer.begin", context), generatorDisplay, customFooterDisplay, context.hook("footer.end", context)));
65
65
  }
@@ -67,7 +67,7 @@ function footer(context) {
67
67
  // src/partials/layout.tsx
68
68
  import { extname } from "node:path";
69
69
  import {
70
- JSX as JSX3
70
+ JSX as JSX2
71
71
  } from "typedoc";
72
72
 
73
73
  // src/utils.ts
@@ -106,65 +106,65 @@ function getHierarchyRoots(project) {
106
106
 
107
107
  // src/partials/layout.tsx
108
108
  function layout(context) {
109
- return (template, props) => /* @__PURE__ */ JSX3.createElement("html", {
109
+ return (template, props) => /* @__PURE__ */ JSX2.createElement("html", {
110
110
  class: "default",
111
111
  lang: context.options.getValue("lang"),
112
112
  "data-base": context.relativeURL("./")
113
- }, /* @__PURE__ */ JSX3.createElement("head", null, /* @__PURE__ */ JSX3.createElement("meta", {
113
+ }, /* @__PURE__ */ JSX2.createElement("head", null, /* @__PURE__ */ JSX2.createElement("meta", {
114
114
  charset: "utf-8"
115
- }), context.hook("head.begin", context), /* @__PURE__ */ JSX3.createElement("meta", {
115
+ }), context.hook("head.begin", context), /* @__PURE__ */ JSX2.createElement("meta", {
116
116
  "http-equiv": "x-ua-compatible",
117
117
  content: "IE=edge"
118
- }), /* @__PURE__ */ JSX3.createElement("title", null, props.model.isProject() ? getDisplayName(props.model) : `${getDisplayName(props.model)} | ${getDisplayName(props.project)}`), favicon(context), props.url === "index.html" && buildSiteMetadata(context), /* @__PURE__ */ JSX3.createElement("meta", {
118
+ }), /* @__PURE__ */ JSX2.createElement("title", null, props.model.isProject() ? getDisplayName(props.model) : `${getDisplayName(props.model)} | ${getDisplayName(props.project)}`), favicon(context), props.url === "index.html" && buildSiteMetadata(context), /* @__PURE__ */ JSX2.createElement("meta", {
119
119
  name: "description",
120
120
  content: `Documentation for ${props.project.name}`
121
- }), /* @__PURE__ */ JSX3.createElement("meta", {
121
+ }), /* @__PURE__ */ JSX2.createElement("meta", {
122
122
  name: "viewport",
123
123
  content: "width=device-width, initial-scale=1"
124
- }), /* @__PURE__ */ JSX3.createElement("link", {
124
+ }), /* @__PURE__ */ JSX2.createElement("link", {
125
125
  rel: "stylesheet",
126
126
  href: context.relativeURL("assets/style.css", true)
127
- }), /* @__PURE__ */ JSX3.createElement("link", {
127
+ }), /* @__PURE__ */ JSX2.createElement("link", {
128
128
  rel: "stylesheet",
129
129
  href: context.relativeURL("assets/highlight.css", true)
130
- }), /* @__PURE__ */ JSX3.createElement("script", {
130
+ }), /* @__PURE__ */ JSX2.createElement("script", {
131
131
  defer: true,
132
132
  src: context.relativeURL("assets/main.js", true)
133
- }), /* @__PURE__ */ JSX3.createElement("script", {
133
+ }), /* @__PURE__ */ JSX2.createElement("script", {
134
134
  async: true,
135
135
  src: context.relativeURL("assets/icons.js", true),
136
136
  id: "tsd-icons-script"
137
- }), /* @__PURE__ */ JSX3.createElement("script", {
137
+ }), /* @__PURE__ */ JSX2.createElement("script", {
138
138
  async: true,
139
139
  src: context.relativeURL("assets/search.js", true),
140
140
  id: "tsd-search-script"
141
- }), /* @__PURE__ */ JSX3.createElement("script", {
141
+ }), /* @__PURE__ */ JSX2.createElement("script", {
142
142
  async: true,
143
143
  src: context.relativeURL("assets/navigation.js", true),
144
144
  id: "tsd-nav-script"
145
- }), !!getHierarchyRoots(props.project).length && /* @__PURE__ */ JSX3.createElement("script", {
145
+ }), !!getHierarchyRoots(props.project).length && /* @__PURE__ */ JSX2.createElement("script", {
146
146
  async: true,
147
147
  src: context.relativeURL("assets/hierarchy.js", true),
148
148
  id: "tsd-hierarchy-script"
149
- }), context.hook("head.end", context), context.options.getValue("customCss") && /* @__PURE__ */ JSX3.createElement("link", {
149
+ }), context.hook("head.end", context), context.options.getValue("customCss") && /* @__PURE__ */ JSX2.createElement("link", {
150
150
  rel: "stylesheet",
151
151
  href: context.relativeURL("assets/custom.css", true)
152
- }), context.options.getValue("customJs") && /* @__PURE__ */ JSX3.createElement("script", {
152
+ }), context.options.getValue("customJs") && /* @__PURE__ */ JSX2.createElement("script", {
153
153
  defer: true,
154
154
  src: context.relativeURL("assets/custom.js", true)
155
- })), /* @__PURE__ */ JSX3.createElement("body", null, context.hook("body.begin", context), /* @__PURE__ */ JSX3.createElement("script", null, /* @__PURE__ */ JSX3.createElement(JSX3.Raw, {
155
+ })), /* @__PURE__ */ JSX2.createElement("body", null, context.hook("body.begin", context), /* @__PURE__ */ JSX2.createElement("script", null, /* @__PURE__ */ JSX2.createElement(JSX2.Raw, {
156
156
  html: 'document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";'
157
- })), /* @__PURE__ */ JSX3.createElement("div", {
157
+ })), /* @__PURE__ */ JSX2.createElement("div", {
158
158
  class: "container container-main"
159
- }, context.toolbar(props), /* @__PURE__ */ JSX3.createElement("div", {
159
+ }, context.toolbar(props), /* @__PURE__ */ JSX2.createElement("div", {
160
160
  class: "col-content"
161
- }, context.hook("content.begin", context), context.header(props), template(props), context.hook("content.end", context)), /* @__PURE__ */ JSX3.createElement("div", {
161
+ }, context.hook("content.begin", context), context.header(props), template(props), context.hook("content.end", context)), /* @__PURE__ */ JSX2.createElement("div", {
162
162
  class: "col-sidebar"
163
- }, /* @__PURE__ */ JSX3.createElement("div", {
163
+ }, /* @__PURE__ */ JSX2.createElement("div", {
164
164
  class: "page-menu"
165
- }, context.hook("pageSidebar.begin", context), context.pageSidebar(props), context.hook("pageSidebar.end", context)), /* @__PURE__ */ JSX3.createElement("div", {
165
+ }, context.hook("pageSidebar.begin", context), context.pageSidebar(props), context.hook("pageSidebar.end", context)), /* @__PURE__ */ JSX2.createElement("div", {
166
166
  class: "site-menu"
167
- }, context.hook("sidebar.begin", context), context.sidebar(props), context.hook("sidebar.end", context)))), context.footer(), /* @__PURE__ */ JSX3.createElement("div", {
167
+ }, context.hook("sidebar.begin", context), context.sidebar(props), context.hook("sidebar.end", context)))), context.footer(), /* @__PURE__ */ JSX2.createElement("div", {
168
168
  class: "overlay"
169
169
  }), context.hook("body.end", context)));
170
170
  }
@@ -174,18 +174,18 @@ function favicon(context) {
174
174
  return null;
175
175
  switch (extname(fav)) {
176
176
  case ".ico":
177
- return /* @__PURE__ */ JSX3.createElement("link", {
177
+ return /* @__PURE__ */ JSX2.createElement("link", {
178
178
  rel: "icon",
179
179
  href: context.relativeURL("assets/favicon.ico", true)
180
180
  });
181
181
  case ".png":
182
- return /* @__PURE__ */ JSX3.createElement("link", {
182
+ return /* @__PURE__ */ JSX2.createElement("link", {
183
183
  rel: "icon",
184
184
  href: context.relativeURL("assets/favicon.png", true),
185
185
  type: "image/png"
186
186
  });
187
187
  case ".svg":
188
- return /* @__PURE__ */ JSX3.createElement("link", {
188
+ return /* @__PURE__ */ JSX2.createElement("link", {
189
189
  rel: "icon",
190
190
  href: context.relativeURL("assets/favicon.svg", true),
191
191
  type: "image/svg+xml"
@@ -200,9 +200,9 @@ function buildSiteMetadata(context) {
200
200
  if (url.pathname !== "/") {
201
201
  return null;
202
202
  }
203
- return /* @__PURE__ */ JSX3.createElement("script", {
203
+ return /* @__PURE__ */ JSX2.createElement("script", {
204
204
  type: "application/ld+json"
205
- }, /* @__PURE__ */ JSX3.createElement(JSX3.Raw, {
205
+ }, /* @__PURE__ */ JSX2.createElement(JSX2.Raw, {
206
206
  html: JSON.stringify({
207
207
  "@context": "https://schema.org",
208
208
  "@type": "WebSite",
@@ -218,13 +218,14 @@ function buildSiteMetadata(context) {
218
218
  // src/partials/navigation.tsx
219
219
  import {
220
220
  i18n as i18n2,
221
+ JSX as JSX3,
221
222
  ReflectionFlag,
222
223
  ReflectionFlags,
223
224
  translateTagName
224
225
  } from "typedoc";
225
226
  function pageSidebar(context) {
226
227
  return (props) => {
227
- return /* @__PURE__ */ JSX.createElement("div", {
228
+ return /* @__PURE__ */ JSX3.createElement("div", {
228
229
  class: "va-button-group"
229
230
  }, context.settings(), context.pageNavigation(props));
230
231
  };
@@ -247,19 +248,19 @@ function settings(context) {
247
248
  visibilityOptions.push(buildFilterItem(context, key, ReflectionFlags.flagString(flagOptionNameToReflectionFlag[key]), defaultFilters[key]));
248
249
  }
249
250
  }
250
- return /* @__PURE__ */ JSX.createElement("details", {
251
+ return /* @__PURE__ */ JSX3.createElement("details", {
251
252
  class: "va-collapse settings tsd-accordion",
252
253
  open: false
253
- }, /* @__PURE__ */ JSX.createElement("summary", null, i18n2.theme_settings()), visibilityOptions.length && /* @__PURE__ */ JSX.createElement("details", {
254
+ }, /* @__PURE__ */ JSX3.createElement("summary", null, i18n2.theme_settings()), visibilityOptions.length && /* @__PURE__ */ JSX3.createElement("details", {
254
255
  class: "va-collapse"
255
- }, /* @__PURE__ */ JSX.createElement("summary", null, i18n2.theme_member_visibility()), ...visibilityOptions), /* @__PURE__ */ JSX.createElement("label", null, /* @__PURE__ */ JSX.createElement("span", null, i18n2.theme_theme()), /* @__PURE__ */ JSX.createElement("select", {
256
+ }, /* @__PURE__ */ JSX3.createElement("summary", null, i18n2.theme_member_visibility()), ...visibilityOptions), /* @__PURE__ */ JSX3.createElement("label", null, /* @__PURE__ */ JSX3.createElement("span", null, i18n2.theme_theme()), /* @__PURE__ */ JSX3.createElement("select", {
256
257
  id: "tsd-theme",
257
258
  class: "va-select"
258
- }, /* @__PURE__ */ JSX.createElement("option", {
259
+ }, /* @__PURE__ */ JSX3.createElement("option", {
259
260
  value: "os"
260
- }, i18n2.theme_os()), /* @__PURE__ */ JSX.createElement("option", {
261
+ }, i18n2.theme_os()), /* @__PURE__ */ JSX3.createElement("option", {
261
262
  value: "light"
262
- }, i18n2.theme_light()), /* @__PURE__ */ JSX.createElement("option", {
263
+ }, i18n2.theme_light()), /* @__PURE__ */ JSX3.createElement("option", {
263
264
  value: "dark"
264
265
  }, i18n2.theme_dark()))));
265
266
  };
@@ -273,7 +274,7 @@ function buildSectionNavigation(context, headings) {
273
274
  levels[levels.length - 1] = level;
274
275
  return;
275
276
  }
276
- const built = /* @__PURE__ */ JSX.createElement(JSX.Fragment, null, level.map((l) => /* @__PURE__ */ JSX.createElement(JSX.Fragment, null, l)));
277
+ const built = /* @__PURE__ */ JSX3.createElement(JSX3.Fragment, null, level.map((l) => /* @__PURE__ */ JSX3.createElement(JSX3.Fragment, null, l)));
277
278
  levels[levels.length - 1].push(built);
278
279
  }
279
280
  for (const heading of headings) {
@@ -285,11 +286,11 @@ function buildSectionNavigation(context, headings) {
285
286
  levels.push([]);
286
287
  }
287
288
  const icon = heading.kind && context.icons[heading.kind]();
288
- levels[levels.length - 1].push(/* @__PURE__ */ JSX.createElement("a", {
289
+ levels[levels.length - 1].push(/* @__PURE__ */ JSX3.createElement("a", {
289
290
  href: heading.link,
290
291
  class: [heading.classes, "va-button"].join(" "),
291
292
  style: !icon ? `padding-left: ${PADDING_PER_LEVEL * (inferredLevel - 1)}px` : ""
292
- }, icon, /* @__PURE__ */ JSX.createElement("span", null, heading.text)));
293
+ }, icon, /* @__PURE__ */ JSX3.createElement("span", null, heading.text)));
293
294
  }
294
295
  while (levels.length > 1) {
295
296
  finalizeLevel(true);
@@ -299,9 +300,9 @@ function buildSectionNavigation(context, headings) {
299
300
  return levels[0];
300
301
  }
301
302
  function buildFilterItem(_context, name, displayName, defaultValue) {
302
- return /* @__PURE__ */ JSX.createElement("label", {
303
+ return /* @__PURE__ */ JSX3.createElement("label", {
303
304
  class: "tsd-filter-item"
304
- }, /* @__PURE__ */ JSX.createElement("span", null, displayName), /* @__PURE__ */ JSX.createElement("input", {
305
+ }, /* @__PURE__ */ JSX3.createElement("span", null, displayName), /* @__PURE__ */ JSX3.createElement("input", {
305
306
  class: "tsd-filter-input va-checkbox",
306
307
  type: "checkbox",
307
308
  id: `tsd-filter-${name}`,
@@ -312,32 +313,32 @@ function buildFilterItem(_context, name, displayName, defaultValue) {
312
313
  function pageNavigation(context) {
313
314
  return (props) => {
314
315
  if (!props.pageSections.some((sect) => sect.headings.length)) {
315
- return /* @__PURE__ */ JSX.createElement(JSX.Fragment, null);
316
+ return /* @__PURE__ */ JSX3.createElement(JSX3.Fragment, null);
316
317
  }
317
318
  const sections = [];
318
319
  for (const section of props.pageSections) {
319
320
  if (section.title) {
320
- sections.push(/* @__PURE__ */ JSX.createElement("details", {
321
+ sections.push(/* @__PURE__ */ JSX3.createElement("details", {
321
322
  open: true,
322
323
  class: "va-collapse tsd-accordion"
323
- }, /* @__PURE__ */ JSX.createElement("summary", {
324
+ }, /* @__PURE__ */ JSX3.createElement("summary", {
324
325
  "data-key": `section-${section.title}`
325
326
  }, section.title), buildSectionNavigation(context, section.headings)));
326
327
  } else {
327
328
  sections.push(buildSectionNavigation(context, section.headings));
328
329
  }
329
330
  }
330
- return /* @__PURE__ */ JSX.createElement("details", {
331
+ return /* @__PURE__ */ JSX3.createElement("details", {
331
332
  open: false,
332
333
  class: "va-collapse page-navigation tsd-accordion"
333
- }, /* @__PURE__ */ JSX.createElement("summary", null, i18n2.theme_on_this_page()), sections);
334
+ }, /* @__PURE__ */ JSX3.createElement("summary", null, i18n2.theme_on_this_page()), sections);
334
335
  };
335
336
  }
336
337
  var navigation = (context) => (_props) => {
337
338
  const navigationData = context.getNavigation();
338
- return /* @__PURE__ */ JSX.createElement("nav", {
339
+ return /* @__PURE__ */ JSX3.createElement("nav", {
339
340
  class: "va-button-group"
340
- }, /* @__PURE__ */ JSX.createElement(Navigation, {
341
+ }, /* @__PURE__ */ JSX3.createElement(Navigation, {
341
342
  data: navigationData,
342
343
  context
343
344
  }));
@@ -345,15 +346,15 @@ var navigation = (context) => (_props) => {
345
346
  var Navigation = ({
346
347
  data,
347
348
  context
348
- }) => /* @__PURE__ */ JSX.createElement(JSX.Fragment, null, data.map((item) => item.children && item.children.length > 0 ? /* @__PURE__ */ JSX.createElement("details", {
349
+ }) => /* @__PURE__ */ JSX3.createElement(JSX3.Fragment, null, data.map((item) => item.children && item.children.length > 0 ? /* @__PURE__ */ JSX3.createElement("details", {
349
350
  class: "va-collapse tsd-accordion"
350
- }, /* @__PURE__ */ JSX.createElement("summary", {
351
+ }, /* @__PURE__ */ JSX3.createElement("summary", {
351
352
  class: "tsd-accordion-summary",
352
353
  "data-key": `section-${item.text}`
353
- }, item.kind && context.icons[item.kind](), item.text), /* @__PURE__ */ JSX.createElement(Navigation, {
354
+ }, item.kind && context.icons[item.kind](), item.text), /* @__PURE__ */ JSX3.createElement(Navigation, {
354
355
  data: item.children,
355
356
  context
356
- })) : /* @__PURE__ */ JSX.createElement(Item, {
357
+ })) : /* @__PURE__ */ JSX3.createElement(Item, {
357
358
  item,
358
359
  context
359
360
  })));
@@ -362,44 +363,68 @@ var Item = ({
362
363
  context
363
364
  }) => {
364
365
  const icon = item.kind && context.icons[item.kind]();
365
- return item.path ? /* @__PURE__ */ JSX.createElement("a", {
366
+ return item.path ? /* @__PURE__ */ JSX3.createElement("a", {
366
367
  href: context.relativeURL(item.path),
367
368
  class: "va-button"
368
- }, icon, /* @__PURE__ */ JSX.createElement("span", null, item.text)) : /* @__PURE__ */ JSX.createElement("span", {
369
+ }, icon, /* @__PURE__ */ JSX3.createElement("span", null, item.text)) : /* @__PURE__ */ JSX3.createElement("span", {
369
370
  class: "va-button"
370
- }, icon, /* @__PURE__ */ JSX.createElement("span", null, item.text));
371
+ }, icon, /* @__PURE__ */ JSX3.createElement("span", null, item.text));
371
372
  };
372
373
 
374
+ // src/partials/sidebar-links.tsx
375
+ import { JSX as JSX4 } from "typedoc";
376
+ function sidebarLinks(context) {
377
+ const links = Object.entries(context.options.getValue("sidebarLinks"));
378
+ const navLinks = Object.entries(context.options.getValue("navigationLinks"));
379
+ if (!links.length && !navLinks.length) {
380
+ return null;
381
+ }
382
+ return /* @__PURE__ */ JSX4.createElement("nav", {
383
+ id: "tsd-sidebar-links",
384
+ class: "tsd-navigation va-button-group"
385
+ }, links.map(([label, url]) => /* @__PURE__ */ JSX4.createElement("a", {
386
+ href: url,
387
+ class: "va-button tsd-nav-link"
388
+ }, /* @__PURE__ */ JSX4.createElement("span", null, label), /* @__PURE__ */ JSX4.createElement("i", {
389
+ class: "va-icon va-icon--external"
390
+ }))), navLinks.map(([label, url]) => /* @__PURE__ */ JSX4.createElement("a", {
391
+ href: url,
392
+ class: "va-button tsd-nav-link"
393
+ }, /* @__PURE__ */ JSX4.createElement("span", null, label), /* @__PURE__ */ JSX4.createElement("i", {
394
+ class: "va-icon va-icon--external"
395
+ }))));
396
+ }
397
+
373
398
  // src/partials/toolbar.tsx
374
399
  import {
375
400
  DeclarationReflection as DeclarationReflection2,
376
401
  i18n as i18n3,
377
- JSX as JSX4,
402
+ JSX as JSX5,
378
403
  ProjectReflection as ProjectReflection2
379
404
  } from "typedoc";
380
405
  function toolbar(context) {
381
- return (props) => /* @__PURE__ */ JSX4.createElement("header", {
406
+ return (props) => /* @__PURE__ */ JSX5.createElement("header", {
382
407
  class: "page-toolbar"
383
- }, /* @__PURE__ */ JSX4.createElement("div", {
408
+ }, /* @__PURE__ */ JSX5.createElement("div", {
384
409
  class: "va-button-group"
385
- }, /* @__PURE__ */ JSX4.createElement("div", {
410
+ }, /* @__PURE__ */ JSX5.createElement("div", {
386
411
  class: "va-button-group va-button-group--horizontal"
387
- }, /* @__PURE__ */ JSX4.createElement("a", {
412
+ }, /* @__PURE__ */ JSX5.createElement("a", {
388
413
  href: context.options.getValue("titleLink") || context.relativeURL("index.html"),
389
414
  class: "title va-button"
390
- }, /* @__PURE__ */ JSX4.createElement("b", null, props.project.name), (props.project instanceof DeclarationReflection2 || props.project instanceof ProjectReflection2) && props.project.packageVersion && /* @__PURE__ */ JSX4.createElement("span", {
415
+ }, /* @__PURE__ */ JSX5.createElement("b", null, props.project.name), (props.project instanceof DeclarationReflection2 || props.project instanceof ProjectReflection2) && props.project.packageVersion && /* @__PURE__ */ JSX5.createElement("span", {
391
416
  class: "version-badge"
392
- }, "v", props.project.packageVersion)), /* @__PURE__ */ JSX4.createElement("button", {
417
+ }, "v", props.project.packageVersion)), /* @__PURE__ */ JSX5.createElement("button", {
393
418
  id: "tsd-search-trigger",
394
419
  class: "va-button",
395
420
  "aria-label": i18n3.theme_search()
396
- }, i18n3.theme_search()), /* @__PURE__ */ JSX4.createElement("a", {
421
+ }, i18n3.theme_search()), /* @__PURE__ */ JSX5.createElement("a", {
397
422
  href: "#",
398
423
  class: "va-button",
399
424
  id: "tsd-toolbar-menu-trigger",
400
425
  "data-toggle": "menu",
401
426
  "aria-label": i18n3.theme_menu()
402
- }, /* @__PURE__ */ JSX4.createElement("svg", {
427
+ }, /* @__PURE__ */ JSX5.createElement("svg", {
403
428
  xmlns: "http://www.w3.org/2000/svg",
404
429
  fill: "none",
405
430
  viewBox: "0 0 24 24",
@@ -407,19 +432,19 @@ function toolbar(context) {
407
432
  width: "16",
408
433
  height: "16",
409
434
  stroke: "currentColor"
410
- }, /* @__PURE__ */ JSX4.createElement("path", {
435
+ }, /* @__PURE__ */ JSX5.createElement("path", {
411
436
  d: "M3.75 9h16.5m-16.5 6.75h16.5"
412
- })))), /* @__PURE__ */ JSX4.createElement("div", {
437
+ })))), /* @__PURE__ */ JSX5.createElement("div", {
413
438
  class: "navigation-links va-button-group"
414
- }, Object.entries(context.options.getValue("navigationLinks")).map(([label, url]) => /* @__PURE__ */ JSX4.createElement("a", {
439
+ }, Object.entries(context.options.getValue("navigationLinks")).map(([label, url]) => /* @__PURE__ */ JSX5.createElement("a", {
415
440
  href: url,
416
441
  class: "va-button"
417
- }, /* @__PURE__ */ JSX4.createElement("span", null, label), /* @__PURE__ */ JSX4.createElement("i", {
442
+ }, /* @__PURE__ */ JSX5.createElement("span", null, label), /* @__PURE__ */ JSX5.createElement("i", {
418
443
  class: "va-icon va-icon--external"
419
- }))))), /* @__PURE__ */ JSX4.createElement("dialog", {
444
+ }))))), /* @__PURE__ */ JSX5.createElement("dialog", {
420
445
  id: "tsd-search",
421
446
  "aria-label": i18n3.theme_search()
422
- }, /* @__PURE__ */ JSX4.createElement("input", {
447
+ }, /* @__PURE__ */ JSX5.createElement("input", {
423
448
  role: "combobox",
424
449
  class: "va-input",
425
450
  id: "tsd-search-input",
@@ -431,14 +456,14 @@ function toolbar(context) {
431
456
  autocomplete: "off",
432
457
  placeholder: i18n3.theme_search_placeholder(),
433
458
  maxLength: 100
434
- }), /* @__PURE__ */ JSX4.createElement("ul", {
459
+ }), /* @__PURE__ */ JSX5.createElement("ul", {
435
460
  role: "listbox",
436
461
  id: "tsd-search-results"
437
- }), /* @__PURE__ */ JSX4.createElement("div", {
462
+ }), /* @__PURE__ */ JSX5.createElement("div", {
438
463
  id: "tsd-search-status",
439
464
  "aria-live": "polite",
440
465
  "aria-atomic": "true"
441
- }, /* @__PURE__ */ JSX4.createElement("div", null, i18n3.theme_preparing_search_index()))));
466
+ }, /* @__PURE__ */ JSX5.createElement("div", null, i18n3.theme_preparing_search_index()))));
442
467
  }
443
468
 
444
469
  // src/themes/VarvaraThemeContext.ts
@@ -450,6 +475,7 @@ class VarvaraThemeContext extends DefaultThemeRenderContext {
450
475
  this.defaultLayout = layout(this);
451
476
  this.settings = settings(this);
452
477
  this.pageNavigation = pageNavigation(this);
478
+ this.sidebarLinks = () => sidebarLinks(this);
453
479
  }
454
480
  footer = () => footer(this);
455
481
  navigation = (context) => navigation(this)(context);
@@ -466,10 +492,10 @@ class VarvaraTheme extends DefaultTheme {
466
492
  fs.copyFileSync(varvaraCssPath, destPath);
467
493
  fs.cpSync(path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../assets/"), path.resolve(this.application.options.getValue("out"), "assets/"), { recursive: true });
468
494
  });
469
- renderer.hooks.on("head.end", (event) => /* @__PURE__ */ JSX5.createElement(JSX5.Fragment, null, /* @__PURE__ */ JSX5.createElement("link", {
495
+ renderer.hooks.on("head.end", (event) => /* @__PURE__ */ JSX6.createElement(JSX6.Fragment, null, /* @__PURE__ */ JSX6.createElement("link", {
470
496
  rel: "stylesheet",
471
497
  href: event.relativeURL("assets/varvara.css")
472
- }), /* @__PURE__ */ JSX5.createElement("link", {
498
+ }), /* @__PURE__ */ JSX6.createElement("link", {
473
499
  rel: "stylesheet",
474
500
  href: event.relativeURL("assets/overrides.css")
475
501
  })));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "varvara-typedoc-theme",
3
- "version": "0.3.10",
3
+ "version": "0.3.12",
4
4
  "author": "Marc Mariné <shenobi@gmail.com>",
5
5
  "repository": {
6
6
  "type": "git",