@clarify-labs/renderer 0.11.14 → 0.11.16

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.
Files changed (39) hide show
  1. package/output/{ClarifyShell-Dh4TgQkW.js → ClarifyShell-BdkOnYRO.js} +293 -300
  2. package/output/ClarifyShell-BdkOnYRO.js.map +1 -0
  3. package/output/{ClarifyShell-Cv4GYuCM.cjs → ClarifyShell-DwxpyL0U.cjs} +293 -300
  4. package/output/ClarifyShell-DwxpyL0U.cjs.map +1 -0
  5. package/output/{MermaidViewer-BRR8SGnK.cjs → MermaidViewer-CPEutQ9L.cjs} +3 -3
  6. package/output/{MermaidViewer-BRR8SGnK.cjs.map → MermaidViewer-CPEutQ9L.cjs.map} +1 -1
  7. package/output/{MermaidViewer-CSbKX396.js → MermaidViewer-DtswU1MF.js} +2 -2
  8. package/output/{MermaidViewer-CSbKX396.js.map → MermaidViewer-DtswU1MF.js.map} +1 -1
  9. package/output/{OpenApiOperation-MEemAiXJ.cjs → OpenApiOperation-DxJl8ziP.cjs} +5 -5
  10. package/output/{OpenApiOperation-MEemAiXJ.cjs.map → OpenApiOperation-DxJl8ziP.cjs.map} +1 -1
  11. package/output/{OpenApiOperation-B6WpfQ0n.js → OpenApiOperation-kL4Fxi0g.js} +4 -4
  12. package/output/{OpenApiOperation-B6WpfQ0n.js.map → OpenApiOperation-kL4Fxi0g.js.map} +1 -1
  13. package/output/{PageActions-B5PYif9Q.js → PageActions-BszP_J4e.js} +133 -133
  14. package/output/PageActions-BszP_J4e.js.map +1 -0
  15. package/output/{PageActions-DEAcLCtt.cjs → PageActions-CwJLUFUH.cjs} +133 -133
  16. package/output/PageActions-CwJLUFUH.cjs.map +1 -0
  17. package/output/{SearchDialog-boUYmwrD.js → SearchDialog-BKl8YlX5.js} +3 -3
  18. package/output/{SearchDialog-boUYmwrD.js.map → SearchDialog-BKl8YlX5.js.map} +1 -1
  19. package/output/{SearchDialog-Dz1kUiHe.cjs → SearchDialog-LCYjnaI0.cjs} +4 -4
  20. package/output/{SearchDialog-Dz1kUiHe.cjs.map → SearchDialog-LCYjnaI0.cjs.map} +1 -1
  21. package/output/app/AppShellLayout.d.ts +34 -0
  22. package/output/client.cjs +3 -3
  23. package/output/client.js +3 -3
  24. package/output/index.cjs +6 -6
  25. package/output/index.js +5 -5
  26. package/output/preview.cjs +2 -2
  27. package/output/preview.js +2 -2
  28. package/output/{render-Cn0R4zQQ.js → render-CRQXzd-y.js} +2 -2
  29. package/output/{render-Cn0R4zQQ.js.map → render-CRQXzd-y.js.map} +1 -1
  30. package/output/{render-WvWfRv-m.cjs → render-DHVpckNI.cjs} +2 -2
  31. package/output/{render-WvWfRv-m.cjs.map → render-DHVpckNI.cjs.map} +1 -1
  32. package/output/server.cjs +2 -2
  33. package/output/server.js +2 -2
  34. package/package.json +1 -1
  35. package/output/ClarifyShell-Cv4GYuCM.cjs.map +0 -1
  36. package/output/ClarifyShell-Dh4TgQkW.js.map +0 -1
  37. package/output/PageActions-B5PYif9Q.js.map +0 -1
  38. package/output/PageActions-DEAcLCtt.cjs.map +0 -1
  39. package/output/app/FooterRegion.d.ts +0 -5
@@ -1,9 +1,9 @@
1
1
  import { a as useConfig, c as useConfigUpdaterOptional, i as OpenApiSpecsContext, l as useLocale, n as ConfigProvider, o as useConfigOptional, r as LocaleContext, s as useConfigUpdater, t as useBuiltInText } from "./i18n-Zmmhz7FF.js";
2
- import { C as themeCookieName, D as resolveHomeHref, O as copyTextToClipboard, T as localizeHref, _ as getStoredLocalePreference, a as Navigation, d as isSameRoutePath, f as normalizeRoutePath, g as useTheme, h as ThemeProvider, i as Header, n as PageActionsProvider, o as SectionProvider, p as resolveLocalizedText, r as PageMetadata, s as useSectionStore, w as isExternalHref, x as storeLocalePreference } from "./PageActions-B5PYif9Q.js";
3
- import clsx from "clsx";
2
+ import { E as storeLocalePreference, O as themeCookieName, S as getStoredLocalePreference, _ as resolveHomeHref, a as Navigation, b as normalizeRoutePath, f as ThemeProvider, h as localizeHref, i as Header, m as isExternalHref, n as PageActionsProvider, o as SectionProvider, p as useTheme, r as PageMetadata, s as useSectionStore, v as copyTextToClipboard, x as resolveLocalizedText, y as isSameRoutePath } from "./PageActions-BszP_J4e.js";
4
3
  import { Component, Suspense, createContext, lazy, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
5
4
  import { Link, Route, Routes, useLocation, useNavigate } from "react-router-dom";
6
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import clsx from "clsx";
7
7
  import { ArrowRight, ChevronDown, ChevronLeft, ChevronRight, Settings, WandSparkles, X } from "lucide-react";
8
8
  //#region source/slots/context.tsx
9
9
  var UISlotContextValue = createContext(null);
@@ -151,6 +151,100 @@ function BuiltInNotFoundPage() {
151
151
  });
152
152
  }
153
153
  //#endregion
154
+ //#region source/assets/clarify.svg?url
155
+ var clarify_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='279px'%20height='200px'%20viewBox='0%200%20279%20200'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3eclarify%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='clarify'%20transform='translate(-0,%200.0054)'%3e%3cpath%20d='M44.867217,0.0054376148%20C130.715579,1.00591567%20200,70.9091172%20200,156.994562%20L199.986321,155.127494%20C199.384888,180.009127%20179.026368,199.994562%20154,199.994562%20L46,199.994562%20C20.5949015,199.994562%200,179.399661%200,153.994562%20L0,45.9945624%20C0,21.0975659%2019.7793434,0.820282524%2044.4815926,0.0191499894%20Z'%20fill='%2300D492'%3e%3c/path%3e%3cpath%20d='M123.867217,0.0054376148%20C209.715579,1.00591567%20279,70.9091172%20279,156.994562%20L278.986321,155.127494%20C278.384888,180.009127%20258.026368,199.994562%20233,199.994562%20L125,199.994562%20C99.5949015,199.994562%2079,179.399661%2079,153.994562%20L79,45.9945624%20C79,21.0975659%2098.7793434,0.820282524%20123.481593,0.0191499894%20Z'%20id='clarify-right'%20fill-opacity='0.6'%20fill='%2300F6C9'%20transform='translate(179,%20100)%20rotate(-90)%20translate(-179,%20-100)'%3e%3c/path%3e%3cpath%20d='M199.979267,154.416906%20L199.984438,155.157125%20L199.962366,155.872459%20C198.977251,180.406837%20178.776104,199.994562%20154,199.994562%20L124.372438,199.994125%20L124.249053,199.994081%20C99.6939678,199.603921%2079.8122712,179.973634%2079.01915,155.518407%20L79.0054376,155.132783%20C79.5830823,105.566626%20103.129768,61.5221348%20139.498462,33.1463428%20C175.69419,61.3871018%20199.186123,105.143863%20199.979267,154.416906%20Z'%20id='形状结合'%20fill='%2300F692'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
156
+ //#endregion
157
+ //#region source/app/BuiltWithClarify.tsx
158
+ var CLARIFY_TRACKING_URL = "https://api.clarify.pub/track";
159
+ var CLARIFY_CLIENT_ID_KEY = "clarify.client_id";
160
+ function getClientId() {
161
+ const newClientId = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}.${Math.random()}`;
162
+ try {
163
+ const clientId = window.localStorage.getItem(CLARIFY_CLIENT_ID_KEY);
164
+ if (clientId) return clientId;
165
+ window.localStorage.setItem(CLARIFY_CLIENT_ID_KEY, newClientId);
166
+ return newClientId;
167
+ } catch {
168
+ return newClientId;
169
+ }
170
+ }
171
+ function getSiteHostname() {
172
+ return window.location.hostname.slice(0, 100);
173
+ }
174
+ function getPageLanguage() {
175
+ return (document.documentElement.lang || (typeof navigator === "undefined" ? "" : navigator.language)).slice(0, 100);
176
+ }
177
+ function getViewportCategory() {
178
+ if (window.innerWidth < 768) return "mobile";
179
+ if (window.innerWidth < 1024) return "tablet";
180
+ return "desktop";
181
+ }
182
+ function getTimezone() {
183
+ try {
184
+ return Intl.DateTimeFormat().resolvedOptions().timeZone.slice(0, 100);
185
+ } catch {
186
+ return "";
187
+ }
188
+ }
189
+ function getClarifyVersion(version) {
190
+ return version?.slice(0, 100) ?? "";
191
+ }
192
+ function createClarifySiteViewPayload(version) {
193
+ return JSON.stringify({
194
+ client_id: getClientId(),
195
+ event_name: "clarify_site_view",
196
+ params: {
197
+ timezone: getTimezone(),
198
+ site_hostname: getSiteHostname(),
199
+ page_language: getPageLanguage(),
200
+ clarify_version: getClarifyVersion(version),
201
+ viewport_category: getViewportCategory()
202
+ }
203
+ });
204
+ }
205
+ function registerClarifySiteView(version) {
206
+ if (typeof window === "undefined") return;
207
+ if (typeof document === "undefined") return;
208
+ if (typeof navigator === "undefined" || typeof navigator.sendBeacon !== "function") return;
209
+ let sent = false;
210
+ const send = () => {
211
+ if (sent) return;
212
+ sent = true;
213
+ navigator.sendBeacon(CLARIFY_TRACKING_URL, createClarifySiteViewPayload(version));
214
+ };
215
+ window.addEventListener("pagehide", send);
216
+ return () => window.removeEventListener("pagehide", send);
217
+ }
218
+ function BuiltWithClarify(props) {
219
+ const { version } = props;
220
+ const t = useBuiltInText();
221
+ useEffect(() => {
222
+ return registerClarifySiteView(version);
223
+ }, [version]);
224
+ return /* @__PURE__ */ jsx("div", {
225
+ className: "clarify-built-with inline-flex items-center gap-1.5",
226
+ children: /* @__PURE__ */ jsxs("a", {
227
+ target: "_blank",
228
+ rel: "noreferrer",
229
+ href: "https://clarify.pub",
230
+ "aria-label": t("builtWith.label"),
231
+ className: "clarify-built-with inline-flex items-center gap-1.5 rounded-full px-2 py-1 font-medium no-underline transition",
232
+ children: [
233
+ /* @__PURE__ */ jsx("span", { children: t("builtWith.prefix") }),
234
+ /* @__PURE__ */ jsx("img", {
235
+ src: clarify_default,
236
+ alt: "",
237
+ className: "clarify-built-with-logo h-3.5 w-auto flex-none object-contain"
238
+ }),
239
+ /* @__PURE__ */ jsx("span", {
240
+ className: "clarify-built-with-brand font-semibold",
241
+ children: "Clarify"
242
+ })
243
+ ]
244
+ })
245
+ });
246
+ }
247
+ //#endregion
154
248
  //#region source/app/RenderErrorPanel.tsx
155
249
  function RenderErrorPanel(props) {
156
250
  const { title, description, eyebrowLabel = "Render error", action, metadata = [], detailsLabel, detailsHeaderAction, detailsContent, titleId = "clarify-render-error-title", refreshLabel, onRefresh } = props;
@@ -328,181 +422,6 @@ var PageErrorBoundary = class extends Component {
328
422
  }
329
423
  };
330
424
  //#endregion
331
- //#region source/assets/clarify.svg?url
332
- var clarify_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='279px'%20height='200px'%20viewBox='0%200%20279%20200'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3eclarify%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='clarify'%20transform='translate(-0,%200.0054)'%3e%3cpath%20d='M44.867217,0.0054376148%20C130.715579,1.00591567%20200,70.9091172%20200,156.994562%20L199.986321,155.127494%20C199.384888,180.009127%20179.026368,199.994562%20154,199.994562%20L46,199.994562%20C20.5949015,199.994562%200,179.399661%200,153.994562%20L0,45.9945624%20C0,21.0975659%2019.7793434,0.820282524%2044.4815926,0.0191499894%20Z'%20fill='%2300D492'%3e%3c/path%3e%3cpath%20d='M123.867217,0.0054376148%20C209.715579,1.00591567%20279,70.9091172%20279,156.994562%20L278.986321,155.127494%20C278.384888,180.009127%20258.026368,199.994562%20233,199.994562%20L125,199.994562%20C99.5949015,199.994562%2079,179.399661%2079,153.994562%20L79,45.9945624%20C79,21.0975659%2098.7793434,0.820282524%20123.481593,0.0191499894%20Z'%20id='clarify-right'%20fill-opacity='0.6'%20fill='%2300F6C9'%20transform='translate(179,%20100)%20rotate(-90)%20translate(-179,%20-100)'%3e%3c/path%3e%3cpath%20d='M199.979267,154.416906%20L199.984438,155.157125%20L199.962366,155.872459%20C198.977251,180.406837%20178.776104,199.994562%20154,199.994562%20L124.372438,199.994125%20L124.249053,199.994081%20C99.6939678,199.603921%2079.8122712,179.973634%2079.01915,155.518407%20L79.0054376,155.132783%20C79.5830823,105.566626%20103.129768,61.5221348%20139.498462,33.1463428%20C175.69419,61.3871018%20199.186123,105.143863%20199.979267,154.416906%20Z'%20id='形状结合'%20fill='%2300F692'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
333
- //#endregion
334
- //#region source/app/BuiltWithClarify.tsx
335
- var CLARIFY_TRACKING_URL = "https://api.clarify.pub/track";
336
- var CLARIFY_CLIENT_ID_KEY = "clarify.client_id";
337
- function getClientId() {
338
- const newClientId = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}.${Math.random()}`;
339
- try {
340
- const clientId = window.localStorage.getItem(CLARIFY_CLIENT_ID_KEY);
341
- if (clientId) return clientId;
342
- window.localStorage.setItem(CLARIFY_CLIENT_ID_KEY, newClientId);
343
- return newClientId;
344
- } catch {
345
- return newClientId;
346
- }
347
- }
348
- function getSiteHostname() {
349
- return window.location.hostname.slice(0, 100);
350
- }
351
- function getPageLanguage() {
352
- return (document.documentElement.lang || (typeof navigator === "undefined" ? "" : navigator.language)).slice(0, 100);
353
- }
354
- function getViewportCategory() {
355
- if (window.innerWidth < 768) return "mobile";
356
- if (window.innerWidth < 1024) return "tablet";
357
- return "desktop";
358
- }
359
- function getTimezone() {
360
- try {
361
- return Intl.DateTimeFormat().resolvedOptions().timeZone.slice(0, 100);
362
- } catch {
363
- return "";
364
- }
365
- }
366
- function getClarifyVersion(version) {
367
- return version?.slice(0, 100) ?? "";
368
- }
369
- function createClarifySiteViewPayload(version) {
370
- return JSON.stringify({
371
- client_id: getClientId(),
372
- event_name: "clarify_site_view",
373
- params: {
374
- timezone: getTimezone(),
375
- site_hostname: getSiteHostname(),
376
- page_language: getPageLanguage(),
377
- clarify_version: getClarifyVersion(version),
378
- viewport_category: getViewportCategory()
379
- }
380
- });
381
- }
382
- function registerClarifySiteView(version) {
383
- if (typeof window === "undefined") return;
384
- if (typeof document === "undefined") return;
385
- if (typeof navigator === "undefined" || typeof navigator.sendBeacon !== "function") return;
386
- let sent = false;
387
- const send = () => {
388
- if (sent) return;
389
- sent = true;
390
- navigator.sendBeacon(CLARIFY_TRACKING_URL, createClarifySiteViewPayload(version));
391
- };
392
- window.addEventListener("pagehide", send);
393
- return () => window.removeEventListener("pagehide", send);
394
- }
395
- function BuiltWithClarify(props) {
396
- const { version } = props;
397
- const t = useBuiltInText();
398
- useEffect(() => {
399
- return registerClarifySiteView(version);
400
- }, [version]);
401
- return /* @__PURE__ */ jsx("div", {
402
- className: "clarify-built-with inline-flex items-center gap-1.5",
403
- children: /* @__PURE__ */ jsxs("a", {
404
- target: "_blank",
405
- rel: "noreferrer",
406
- href: "https://clarify.pub",
407
- "aria-label": t("builtWith.label"),
408
- className: "clarify-built-with inline-flex items-center gap-1.5 rounded-full px-2 py-1 font-medium no-underline transition",
409
- children: [
410
- /* @__PURE__ */ jsx("span", { children: t("builtWith.prefix") }),
411
- /* @__PURE__ */ jsx("img", {
412
- src: clarify_default,
413
- alt: "",
414
- className: "clarify-built-with-logo h-3.5 w-auto flex-none object-contain"
415
- }),
416
- /* @__PURE__ */ jsx("span", {
417
- className: "clarify-built-with-brand font-semibold",
418
- children: "Clarify"
419
- })
420
- ]
421
- })
422
- });
423
- }
424
- //#endregion
425
- //#region source/app/PageFooter.tsx
426
- function FooterLink(arg0) {
427
- const { link, locale, config } = arg0;
428
- const external = isExternalHref(link.href);
429
- const href = external ? link.href : localizeHref(link.href, config, locale);
430
- const className = "clarify-footer-link no-underline transition";
431
- const label = resolveLocalizedText(link.label, locale, config.locales?.default);
432
- if (external) return /* @__PURE__ */ jsx("a", {
433
- href,
434
- target: "_blank",
435
- rel: "noreferrer",
436
- className,
437
- children: label
438
- });
439
- return /* @__PURE__ */ jsx(Link, {
440
- to: href,
441
- className,
442
- children: label
443
- });
444
- }
445
- function SocialLink(arg0) {
446
- const { name, href } = arg0;
447
- return /* @__PURE__ */ jsx("a", {
448
- href,
449
- target: "_blank",
450
- rel: "noreferrer",
451
- className: "clarify-footer-social capitalize no-underline transition",
452
- children: name
453
- });
454
- }
455
- function PageFooter() {
456
- const config = useConfig();
457
- const locale = useLocale() ?? config.locales?.default;
458
- const footer = config.footer;
459
- const links = footer?.links ?? [];
460
- const socials = Object.entries(footer?.socials ?? {});
461
- const copyright = footer?.copyright ? resolveLocalizedText(footer.copyright, locale, config.locales?.default) : void 0;
462
- if (!Boolean(copyright || links.length > 0 || socials.length > 0)) return null;
463
- return /* @__PURE__ */ jsx("footer", {
464
- className: "clarify-page-footer w-full",
465
- children: /* @__PURE__ */ jsxs("div", {
466
- className: clsx("clarify-footer-content flex flex-col items-start gap-2.5 text-left"),
467
- children: [copyright ? /* @__PURE__ */ jsx("p", {
468
- className: "clarify-footer-copyright m-0",
469
- children: copyright
470
- }) : null, links.length > 0 || socials.length > 0 ? /* @__PURE__ */ jsxs("div", {
471
- className: "clarify-footer-links flex flex-wrap justify-start gap-x-4 gap-y-2",
472
- children: [links.map((link) => /* @__PURE__ */ jsx(FooterLink, {
473
- link,
474
- locale,
475
- config
476
- }, `${link.href}-${resolveLocalizedText(link.label, locale, config.locales?.default)}`)), socials.map(([name, href]) => /* @__PURE__ */ jsx(SocialLink, {
477
- name,
478
- href
479
- }, name))]
480
- }) : null]
481
- })
482
- });
483
- }
484
- //#endregion
485
- //#region source/app/FooterRegion.tsx
486
- function DefaultFooterComponent() {
487
- return /* @__PURE__ */ jsx(PageFooter, {});
488
- }
489
- function FooterRegion(props) {
490
- const { version } = props;
491
- return /* @__PURE__ */ jsxs("div", {
492
- className: "clarify-page-footer-region mt-8 grid gap-5 border-t border-(--clarify-theme-tokens-colors-border) pt-6 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-end",
493
- children: [/* @__PURE__ */ jsxs("div", {
494
- className: "clarify-page-footer-slot min-w-0",
495
- children: [/* @__PURE__ */ jsx(RuntimeSlot, { name: "page.footer.before" }), /* @__PURE__ */ jsx(RuntimeSlot, {
496
- name: "page.footer.replace",
497
- default: DefaultFooterComponent
498
- })]
499
- }), /* @__PURE__ */ jsx("div", {
500
- className: "clarify-page-attribution flex justify-end sm:self-end",
501
- children: /* @__PURE__ */ jsx(BuiltWithClarify, { version })
502
- })]
503
- });
504
- }
505
- //#endregion
506
425
  //#region source/app/PageBanner.tsx
507
426
  function bannerStorageKey(config, content) {
508
427
  return `clarify:banner:dismissed:${config.title}:${content}`;
@@ -590,6 +509,66 @@ function PageBanner(props) {
590
509
  });
591
510
  }
592
511
  //#endregion
512
+ //#region source/app/PageFooter.tsx
513
+ function FooterLink(arg0) {
514
+ const { link, locale, config } = arg0;
515
+ const external = isExternalHref(link.href);
516
+ const href = external ? link.href : localizeHref(link.href, config, locale);
517
+ const className = "clarify-footer-link no-underline transition";
518
+ const label = resolveLocalizedText(link.label, locale, config.locales?.default);
519
+ if (external) return /* @__PURE__ */ jsx("a", {
520
+ href,
521
+ target: "_blank",
522
+ rel: "noreferrer",
523
+ className,
524
+ children: label
525
+ });
526
+ return /* @__PURE__ */ jsx(Link, {
527
+ to: href,
528
+ className,
529
+ children: label
530
+ });
531
+ }
532
+ function SocialLink(arg0) {
533
+ const { name, href } = arg0;
534
+ return /* @__PURE__ */ jsx("a", {
535
+ href,
536
+ target: "_blank",
537
+ rel: "noreferrer",
538
+ className: "clarify-footer-social capitalize no-underline transition",
539
+ children: name
540
+ });
541
+ }
542
+ function PageFooter() {
543
+ const config = useConfig();
544
+ const locale = useLocale() ?? config.locales?.default;
545
+ const footer = config.footer;
546
+ const links = footer?.links ?? [];
547
+ const socials = Object.entries(footer?.socials ?? {});
548
+ const copyright = footer?.copyright ? resolveLocalizedText(footer.copyright, locale, config.locales?.default) : void 0;
549
+ if (!Boolean(copyright || links.length > 0 || socials.length > 0)) return null;
550
+ return /* @__PURE__ */ jsx("footer", {
551
+ className: "clarify-page-footer w-full",
552
+ children: /* @__PURE__ */ jsxs("div", {
553
+ className: clsx("clarify-footer-content flex flex-col items-start gap-2.5 text-left"),
554
+ children: [copyright ? /* @__PURE__ */ jsx("p", {
555
+ className: "clarify-footer-copyright m-0",
556
+ children: copyright
557
+ }) : null, links.length > 0 || socials.length > 0 ? /* @__PURE__ */ jsxs("div", {
558
+ className: "clarify-footer-links flex flex-wrap justify-start gap-x-4 gap-y-2",
559
+ children: [links.map((link) => /* @__PURE__ */ jsx(FooterLink, {
560
+ link,
561
+ locale,
562
+ config
563
+ }, `${link.href}-${resolveLocalizedText(link.label, locale, config.locales?.default)}`)), socials.map(([name, href]) => /* @__PURE__ */ jsx(SocialLink, {
564
+ name,
565
+ href
566
+ }, name))]
567
+ }) : null]
568
+ })
569
+ });
570
+ }
571
+ //#endregion
593
572
  //#region source/app/PageNavigation.tsx
594
573
  function flattenNavigation(nodes) {
595
574
  return nodes.flatMap((node) => node.children?.length ? flattenNavigation(node.children) : [node]);
@@ -746,6 +725,123 @@ function PageSkeleton() {
746
725
  });
747
726
  }
748
727
  //#endregion
728
+ //#region source/app/AppShellLayout.tsx
729
+ function NotFoundRouteElement(props) {
730
+ const { component: RouteComponent } = props;
731
+ if (!RouteComponent) return /* @__PURE__ */ jsx(BuiltInNotFoundPage, {});
732
+ return /* @__PURE__ */ jsx(RouteComponent, {});
733
+ }
734
+ function BannerSlot(props) {
735
+ const { activeBannerKey, dismissedBannerKey, bannerResolved, onDismiss, config, locale } = props;
736
+ function DefaultBannerComponent() {
737
+ if (!(bannerResolved && Boolean(config.banner) && dismissedBannerKey !== activeBannerKey)) return null;
738
+ return /* @__PURE__ */ jsx(PageBanner, {
739
+ currentLocale: locale,
740
+ onDismiss
741
+ });
742
+ }
743
+ return /* @__PURE__ */ jsx(RuntimeSlot, {
744
+ name: "page.banner.replace",
745
+ default: DefaultBannerComponent
746
+ });
747
+ }
748
+ function DefaultFooterComponent() {
749
+ return /* @__PURE__ */ jsx(PageFooter, {});
750
+ }
751
+ function AppShellLayout(props) {
752
+ const { config, routes, currentRoute, currentLocale, currentNavigation, notFoundRouteComponent, layout, headerRef, headerTopAreaRef, layoutConfig, pathname, text, activeBannerKey, dismissedBannerKey, bannerResolved, onDismissBanner } = props;
753
+ const layoutStyle = { "--clarify-header-offset": layoutConfig.headerOffset };
754
+ const routeElements = /* @__PURE__ */ jsxs(Routes, { children: [routes.map((route) => /* @__PURE__ */ jsx(Route, {
755
+ path: route.path,
756
+ element: /* @__PURE__ */ jsx(route.component, {})
757
+ }, route.path)), /* @__PURE__ */ jsx(Route, {
758
+ path: "*",
759
+ element: /* @__PURE__ */ jsx(NotFoundRouteElement, { component: notFoundRouteComponent })
760
+ })] });
761
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Header, {
762
+ ref: headerRef,
763
+ topAreaRef: headerTopAreaRef,
764
+ navigation: currentNavigation.items,
765
+ tabs: currentNavigation.tabs,
766
+ routes: props.routes,
767
+ currentLocale,
768
+ currentRoute,
769
+ banner: /* @__PURE__ */ jsx(BannerSlot, {
770
+ activeBannerKey,
771
+ dismissedBannerKey,
772
+ bannerResolved,
773
+ onDismiss: onDismissBanner,
774
+ config,
775
+ locale: currentLocale
776
+ })
777
+ }), /* @__PURE__ */ jsxs("div", {
778
+ className: "clarify-layout mx-auto grid w-full max-w-(--clarify-theme-layout-max-width) grid-cols-1 lg:grid-cols-(--clarify-layout-sidebar-grid) xl:grid-cols-(--clarify-layout-sidebar-grid-wide)",
779
+ style: layoutStyle,
780
+ children: [/* @__PURE__ */ jsx("aside", {
781
+ "data-pagefind-ignore": true,
782
+ className: "clarify-sidebar hidden lg:block lg:self-stretch lg:bg-(--clarify-theme-tokens-colors-background) lg:px-5 xl:px-6",
783
+ children: /* @__PURE__ */ jsx("div", {
784
+ className: clsx("clarify-sidebar-scroll lg:sticky lg:z-30 lg:overflow-y-auto lg:pb-8", layoutConfig.sidebarScrollClassName),
785
+ children: /* @__PURE__ */ jsx(Navigation, {
786
+ navigation: currentNavigation.items,
787
+ currentLocale
788
+ })
789
+ })
790
+ }), /* @__PURE__ */ jsx("div", {
791
+ className: clsx("clarify-content @container relative flex min-h-screen min-w-0 flex-col px-4 pb-12 sm:px-6 lg:px-8 xl:px-10", layoutConfig.contentClassName, layout === "blog" && "clarify-content-blog"),
792
+ children: /* @__PURE__ */ jsxs(PageActionsProvider, {
793
+ route: currentRoute,
794
+ locale: currentLocale,
795
+ children: [
796
+ /* @__PURE__ */ jsx("main", {
797
+ className: "clarify-main min-w-0 flex-auto",
798
+ "data-pagefind-body": true,
799
+ children: /* @__PURE__ */ jsx(PageErrorBoundary, {
800
+ title: text("renderError.title"),
801
+ description: text("renderError.description"),
802
+ reloadLabel: text("renderError.reload"),
803
+ detailsLabel: text("renderError.details"),
804
+ pathLabel: text("renderError.path"),
805
+ typeLabel: text("renderError.type"),
806
+ messageLabel: text("renderError.message"),
807
+ stackLabel: text("renderError.stack"),
808
+ componentStackLabel: text("renderError.componentStack"),
809
+ copyLabel: text("actions.copy"),
810
+ copiedLabel: text("actions.copied"),
811
+ path: pathname,
812
+ children: /* @__PURE__ */ jsx(Suspense, {
813
+ fallback: /* @__PURE__ */ jsx(PageSkeleton, {}),
814
+ children: routeElements
815
+ })
816
+ }, pathname)
817
+ }),
818
+ /* @__PURE__ */ jsx(PageMetadata, {
819
+ updatedAt: currentRoute?.updatedAt,
820
+ locale: currentLocale
821
+ }),
822
+ /* @__PURE__ */ jsx(PageNavigation, {
823
+ navigation: currentNavigation.items,
824
+ currentRoute
825
+ }),
826
+ /* @__PURE__ */ jsxs("div", {
827
+ className: "clarify-page-footer-region mt-8 grid gap-5 border-t border-(--clarify-theme-tokens-colors-border) pt-6 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-end",
828
+ children: [/* @__PURE__ */ jsxs("div", {
829
+ className: "clarify-page-footer-slot min-w-0",
830
+ children: [/* @__PURE__ */ jsx(RuntimeSlot, { name: "page.footer.before" }), /* @__PURE__ */ jsx(RuntimeSlot, {
831
+ name: "page.footer.replace",
832
+ default: DefaultFooterComponent
833
+ })]
834
+ }), /* @__PURE__ */ jsx("div", {
835
+ className: "clarify-page-attribution flex justify-end sm:self-end",
836
+ children: /* @__PURE__ */ jsx(BuiltWithClarify, { version: config.version })
837
+ })]
838
+ })
839
+ ]
840
+ })
841
+ })]
842
+ })] });
843
+ }
844
+ //#endregion
749
845
  //#region source/app/SectionHashSync.tsx
750
846
  var HASH_UPDATE_DEBOUNCE_MS = 120;
751
847
  function replaceHash(sectionId) {
@@ -817,20 +913,6 @@ function SectionHashSync(arg0) {
817
913
  }
818
914
  //#endregion
819
915
  //#region source/app/AppShell.tsx
820
- function BannerSlot(props) {
821
- const { activeBannerKey, dismissedBannerKey, bannerResolved, onDismiss, config, locale } = props;
822
- function DefaultBannerComponent() {
823
- if (!(bannerResolved && Boolean(config.banner) && dismissedBannerKey !== activeBannerKey)) return null;
824
- return /* @__PURE__ */ jsx(PageBanner, {
825
- currentLocale: locale,
826
- onDismiss
827
- });
828
- }
829
- return /* @__PURE__ */ jsx(RuntimeSlot, {
830
- name: "page.banner.replace",
831
- default: DefaultBannerComponent
832
- });
833
- }
834
916
  function routeForPath(routes, pathname) {
835
917
  return routes.find((route) => isSameRoutePath(route.path, pathname));
836
918
  }
@@ -1122,11 +1204,6 @@ function getLayoutVariant(hasTabs, hasBanner) {
1122
1204
  function getAppShellLayoutConfig(hasTabs, hasBanner) {
1123
1205
  return appShellLayoutConfig[getLayoutVariant(hasTabs, hasBanner)];
1124
1206
  }
1125
- function NotFoundRouteElement(props) {
1126
- const { component: RouteComponent } = props;
1127
- if (!RouteComponent) return /* @__PURE__ */ jsx(BuiltInNotFoundPage, {});
1128
- return /* @__PURE__ */ jsx(RouteComponent, {});
1129
- }
1130
1207
  function AppShell(arg0) {
1131
1208
  const { routes, navigation, runtimeSlots } = arg0;
1132
1209
  const config = useConfig();
@@ -1157,103 +1234,6 @@ function AppShell(arg0) {
1157
1234
  config,
1158
1235
  route: currentRoute ?? notFoundRoute
1159
1236
  });
1160
- const layoutStyle = { "--clarify-header-offset": layoutConfig.headerOffset };
1161
- function renderBannerSlot() {
1162
- return /* @__PURE__ */ jsx(BannerSlot, {
1163
- activeBannerKey,
1164
- dismissedBannerKey,
1165
- bannerResolved,
1166
- onDismiss: dismissBanner,
1167
- config,
1168
- locale: currentLocale
1169
- });
1170
- }
1171
- function renderHeader() {
1172
- return /* @__PURE__ */ jsx(Header, {
1173
- ref: headerRef,
1174
- topAreaRef: headerTopAreaRef,
1175
- navigation: currentNavigation.items,
1176
- tabs: currentNavigation.tabs,
1177
- routes,
1178
- currentLocale,
1179
- currentRoute,
1180
- banner: renderBannerSlot()
1181
- });
1182
- }
1183
- function renderSidebar() {
1184
- return /* @__PURE__ */ jsx("aside", {
1185
- "data-pagefind-ignore": true,
1186
- className: "clarify-sidebar hidden lg:block lg:self-stretch lg:bg-(--clarify-theme-tokens-colors-background) lg:px-5 xl:px-6",
1187
- children: /* @__PURE__ */ jsx("div", {
1188
- className: clsx("clarify-sidebar-scroll lg:sticky lg:z-30 lg:overflow-y-auto lg:pb-8", layoutConfig.sidebarScrollClassName),
1189
- children: /* @__PURE__ */ jsx(Navigation, {
1190
- navigation: currentNavigation.items,
1191
- currentLocale
1192
- })
1193
- })
1194
- });
1195
- }
1196
- function renderRouteElements() {
1197
- return /* @__PURE__ */ jsxs(Routes, { children: [renderRoutes.map((route) => /* @__PURE__ */ jsx(Route, {
1198
- path: route.path,
1199
- element: /* @__PURE__ */ jsx(route.component, {})
1200
- }, route.path)), /* @__PURE__ */ jsx(Route, {
1201
- path: "*",
1202
- element: /* @__PURE__ */ jsx(NotFoundRouteElement, { component: NotFoundRouteComponent })
1203
- })] });
1204
- }
1205
- function renderMain() {
1206
- return /* @__PURE__ */ jsx("main", {
1207
- className: "clarify-main min-w-0 flex-auto",
1208
- "data-pagefind-body": true,
1209
- children: /* @__PURE__ */ jsx(PageErrorBoundary, {
1210
- title: text("renderError.title"),
1211
- description: text("renderError.description"),
1212
- reloadLabel: text("renderError.reload"),
1213
- detailsLabel: text("renderError.details"),
1214
- pathLabel: text("renderError.path"),
1215
- typeLabel: text("renderError.type"),
1216
- messageLabel: text("renderError.message"),
1217
- stackLabel: text("renderError.stack"),
1218
- componentStackLabel: text("renderError.componentStack"),
1219
- copyLabel: text("actions.copy"),
1220
- copiedLabel: text("actions.copied"),
1221
- path: pathname,
1222
- children: /* @__PURE__ */ jsx(Suspense, {
1223
- fallback: /* @__PURE__ */ jsx(PageSkeleton, {}),
1224
- children: renderRouteElements()
1225
- })
1226
- }, pathname)
1227
- });
1228
- }
1229
- function renderContent() {
1230
- return /* @__PURE__ */ jsx("div", {
1231
- className: clsx("clarify-content @container relative flex min-h-screen min-w-0 flex-col px-4 pb-12 sm:px-6 lg:px-8 xl:px-10", layoutConfig.contentClassName, layout === "blog" && "clarify-content-blog"),
1232
- children: /* @__PURE__ */ jsxs(PageActionsProvider, {
1233
- route: currentRoute,
1234
- locale: currentLocale,
1235
- children: [
1236
- renderMain(),
1237
- /* @__PURE__ */ jsx(PageMetadata, {
1238
- updatedAt: currentRoute?.updatedAt,
1239
- locale: currentLocale
1240
- }),
1241
- /* @__PURE__ */ jsx(PageNavigation, {
1242
- navigation: currentNavigation.items,
1243
- currentRoute
1244
- }),
1245
- /* @__PURE__ */ jsx(FooterRegion, { version: config.version })
1246
- ]
1247
- })
1248
- });
1249
- }
1250
- function renderLayout() {
1251
- return /* @__PURE__ */ jsxs("div", {
1252
- className: "clarify-layout mx-auto grid w-full max-w-(--clarify-theme-layout-max-width) grid-cols-1 lg:grid-cols-(--clarify-layout-sidebar-grid) xl:grid-cols-(--clarify-layout-sidebar-grid-wide)",
1253
- style: layoutStyle,
1254
- children: [renderSidebar(), renderContent()]
1255
- });
1256
- }
1257
1237
  return /* @__PURE__ */ jsx(LocaleContext.Provider, {
1258
1238
  value: currentLocale,
1259
1239
  children: /* @__PURE__ */ jsx(RuntimeSlotsProvider, {
@@ -1262,11 +1242,24 @@ function AppShell(arg0) {
1262
1242
  children: /* @__PURE__ */ jsxs(SectionProvider, {
1263
1243
  sections,
1264
1244
  headerTopAreaRef,
1265
- children: [
1266
- /* @__PURE__ */ jsx(SectionHashSync, { hashScrollSuppressedUntilRef }),
1267
- renderHeader(),
1268
- renderLayout()
1269
- ]
1245
+ children: [/* @__PURE__ */ jsx(SectionHashSync, { hashScrollSuppressedUntilRef }), /* @__PURE__ */ jsx(AppShellLayout, {
1246
+ config,
1247
+ routes: renderRoutes,
1248
+ currentRoute,
1249
+ currentLocale,
1250
+ currentNavigation,
1251
+ notFoundRouteComponent: NotFoundRouteComponent,
1252
+ layout,
1253
+ headerRef,
1254
+ headerTopAreaRef,
1255
+ layoutConfig,
1256
+ pathname,
1257
+ text,
1258
+ activeBannerKey,
1259
+ dismissedBannerKey,
1260
+ bannerResolved,
1261
+ onDismissBanner: dismissBanner
1262
+ })]
1270
1263
  })
1271
1264
  })
1272
1265
  });
@@ -2645,6 +2638,6 @@ function ClarifyShell(props) {
2645
2638
  });
2646
2639
  }
2647
2640
  //#endregion
2648
- export { themeBootstrapScript as a, AppShell as c, BuiltWithClarify as d, RenderErrorPanel as f, useSlot as g, SlotProvider as h, themeEditorPresets as i, PageBanner as l, RuntimeSlotsProvider as m, ThemeEditor as n, themePresets as o, RuntimeSlot as p, applyThemeVariables as r, themeStorageKey as s, ClarifyShell as t, PageFooter as u };
2641
+ export { themeBootstrapScript as a, AppShell as c, RenderErrorPanel as d, BuiltWithClarify as f, useSlot as g, SlotProvider as h, themeEditorPresets as i, PageFooter as l, RuntimeSlotsProvider as m, ThemeEditor as n, themePresets as o, RuntimeSlot as p, applyThemeVariables as r, themeStorageKey as s, ClarifyShell as t, PageBanner as u };
2649
2642
 
2650
- //# sourceMappingURL=ClarifyShell-Dh4TgQkW.js.map
2643
+ //# sourceMappingURL=ClarifyShell-BdkOnYRO.js.map