@clarify-labs/renderer 0.11.15 → 0.11.17

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,11 +1,11 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-DakpK96I.cjs");
2
2
  const require_i18n = require("./i18n-BMNCgF9o.cjs");
3
- const require_PageActions = require("./PageActions-DEAcLCtt.cjs");
4
- let clsx = require("clsx");
5
- clsx = require_rolldown_runtime.__toESM(clsx, 1);
3
+ const require_PageActions = require("./PageActions-CwJLUFUH.cjs");
6
4
  let react = require("react");
7
5
  let react_router_dom = require("react-router-dom");
8
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
+ let clsx = require("clsx");
8
+ clsx = require_rolldown_runtime.__toESM(clsx, 1);
9
9
  let lucide_react = require("lucide-react");
10
10
  //#region source/slots/context.tsx
11
11
  var UISlotContextValue = (0, react.createContext)(null);
@@ -153,6 +153,100 @@ function BuiltInNotFoundPage() {
153
153
  });
154
154
  }
155
155
  //#endregion
156
+ //#region source/assets/clarify.svg?url
157
+ 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";
158
+ //#endregion
159
+ //#region source/app/BuiltWithClarify.tsx
160
+ var CLARIFY_TRACKING_URL = "https://api.clarify.pub/track";
161
+ var CLARIFY_CLIENT_ID_KEY = "clarify.client_id";
162
+ function getClientId() {
163
+ const newClientId = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}.${Math.random()}`;
164
+ try {
165
+ const clientId = window.localStorage.getItem(CLARIFY_CLIENT_ID_KEY);
166
+ if (clientId) return clientId;
167
+ window.localStorage.setItem(CLARIFY_CLIENT_ID_KEY, newClientId);
168
+ return newClientId;
169
+ } catch {
170
+ return newClientId;
171
+ }
172
+ }
173
+ function getSiteHostname() {
174
+ return window.location.hostname.slice(0, 100);
175
+ }
176
+ function getPageLanguage() {
177
+ return (document.documentElement.lang || (typeof navigator === "undefined" ? "" : navigator.language)).slice(0, 100);
178
+ }
179
+ function getViewportCategory() {
180
+ if (window.innerWidth < 768) return "mobile";
181
+ if (window.innerWidth < 1024) return "tablet";
182
+ return "desktop";
183
+ }
184
+ function getTimezone() {
185
+ try {
186
+ return Intl.DateTimeFormat().resolvedOptions().timeZone.slice(0, 100);
187
+ } catch {
188
+ return "";
189
+ }
190
+ }
191
+ function getClarifyVersion(version) {
192
+ return version?.slice(0, 100) ?? "";
193
+ }
194
+ function createClarifySiteViewPayload(version) {
195
+ return JSON.stringify({
196
+ client_id: getClientId(),
197
+ event_name: "clarify_site_view",
198
+ params: {
199
+ timezone: getTimezone(),
200
+ site_hostname: getSiteHostname(),
201
+ page_language: getPageLanguage(),
202
+ clarify_version: getClarifyVersion(version),
203
+ viewport_category: getViewportCategory()
204
+ }
205
+ });
206
+ }
207
+ function registerClarifySiteView(version) {
208
+ if (typeof window === "undefined") return;
209
+ if (typeof document === "undefined") return;
210
+ if (typeof navigator === "undefined" || typeof navigator.sendBeacon !== "function") return;
211
+ let sent = false;
212
+ const send = () => {
213
+ if (sent) return;
214
+ sent = true;
215
+ navigator.sendBeacon(CLARIFY_TRACKING_URL, createClarifySiteViewPayload(version));
216
+ };
217
+ window.addEventListener("pagehide", send);
218
+ return () => window.removeEventListener("pagehide", send);
219
+ }
220
+ function BuiltWithClarify(props) {
221
+ const { version } = props;
222
+ const t = require_i18n.useBuiltInText();
223
+ (0, react.useEffect)(() => {
224
+ return registerClarifySiteView(version);
225
+ }, [version]);
226
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
227
+ className: "clarify-built-with inline-flex items-center gap-1.5",
228
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
229
+ target: "_blank",
230
+ rel: "noreferrer",
231
+ href: "https://clarify.pub",
232
+ "aria-label": t("builtWith.label"),
233
+ className: "clarify-built-with inline-flex items-center gap-1.5 rounded-full px-2 py-1 font-medium no-underline transition",
234
+ children: [
235
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("builtWith.prefix") }),
236
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
237
+ src: clarify_default,
238
+ alt: "",
239
+ className: "clarify-built-with-logo h-3.5 w-auto flex-none object-contain"
240
+ }),
241
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
242
+ className: "clarify-built-with-brand font-semibold",
243
+ children: "Clarify"
244
+ })
245
+ ]
246
+ })
247
+ });
248
+ }
249
+ //#endregion
156
250
  //#region source/app/RenderErrorPanel.tsx
157
251
  function RenderErrorPanel(props) {
158
252
  const { title, description, eyebrowLabel = "Render error", action, metadata = [], detailsLabel, detailsHeaderAction, detailsContent, titleId = "clarify-render-error-title", refreshLabel, onRefresh } = props;
@@ -330,181 +424,6 @@ var PageErrorBoundary = class extends react.Component {
330
424
  }
331
425
  };
332
426
  //#endregion
333
- //#region source/assets/clarify.svg?url
334
- 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";
335
- //#endregion
336
- //#region source/app/BuiltWithClarify.tsx
337
- var CLARIFY_TRACKING_URL = "https://api.clarify.pub/track";
338
- var CLARIFY_CLIENT_ID_KEY = "clarify.client_id";
339
- function getClientId() {
340
- const newClientId = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}.${Math.random()}`;
341
- try {
342
- const clientId = window.localStorage.getItem(CLARIFY_CLIENT_ID_KEY);
343
- if (clientId) return clientId;
344
- window.localStorage.setItem(CLARIFY_CLIENT_ID_KEY, newClientId);
345
- return newClientId;
346
- } catch {
347
- return newClientId;
348
- }
349
- }
350
- function getSiteHostname() {
351
- return window.location.hostname.slice(0, 100);
352
- }
353
- function getPageLanguage() {
354
- return (document.documentElement.lang || (typeof navigator === "undefined" ? "" : navigator.language)).slice(0, 100);
355
- }
356
- function getViewportCategory() {
357
- if (window.innerWidth < 768) return "mobile";
358
- if (window.innerWidth < 1024) return "tablet";
359
- return "desktop";
360
- }
361
- function getTimezone() {
362
- try {
363
- return Intl.DateTimeFormat().resolvedOptions().timeZone.slice(0, 100);
364
- } catch {
365
- return "";
366
- }
367
- }
368
- function getClarifyVersion(version) {
369
- return version?.slice(0, 100) ?? "";
370
- }
371
- function createClarifySiteViewPayload(version) {
372
- return JSON.stringify({
373
- client_id: getClientId(),
374
- event_name: "clarify_site_view",
375
- params: {
376
- timezone: getTimezone(),
377
- site_hostname: getSiteHostname(),
378
- page_language: getPageLanguage(),
379
- clarify_version: getClarifyVersion(version),
380
- viewport_category: getViewportCategory()
381
- }
382
- });
383
- }
384
- function registerClarifySiteView(version) {
385
- if (typeof window === "undefined") return;
386
- if (typeof document === "undefined") return;
387
- if (typeof navigator === "undefined" || typeof navigator.sendBeacon !== "function") return;
388
- let sent = false;
389
- const send = () => {
390
- if (sent) return;
391
- sent = true;
392
- navigator.sendBeacon(CLARIFY_TRACKING_URL, createClarifySiteViewPayload(version));
393
- };
394
- window.addEventListener("pagehide", send);
395
- return () => window.removeEventListener("pagehide", send);
396
- }
397
- function BuiltWithClarify(props) {
398
- const { version } = props;
399
- const t = require_i18n.useBuiltInText();
400
- (0, react.useEffect)(() => {
401
- return registerClarifySiteView(version);
402
- }, [version]);
403
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
404
- className: "clarify-built-with inline-flex items-center gap-1.5",
405
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
406
- target: "_blank",
407
- rel: "noreferrer",
408
- href: "https://clarify.pub",
409
- "aria-label": t("builtWith.label"),
410
- className: "clarify-built-with inline-flex items-center gap-1.5 rounded-full px-2 py-1 font-medium no-underline transition",
411
- children: [
412
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("builtWith.prefix") }),
413
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
414
- src: clarify_default,
415
- alt: "",
416
- className: "clarify-built-with-logo h-3.5 w-auto flex-none object-contain"
417
- }),
418
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
419
- className: "clarify-built-with-brand font-semibold",
420
- children: "Clarify"
421
- })
422
- ]
423
- })
424
- });
425
- }
426
- //#endregion
427
- //#region source/app/PageFooter.tsx
428
- function FooterLink(arg0) {
429
- const { link, locale, config } = arg0;
430
- const external = require_PageActions.isExternalHref(link.href);
431
- const href = external ? link.href : require_PageActions.localizeHref(link.href, config, locale);
432
- const className = "clarify-footer-link no-underline transition";
433
- const label = require_PageActions.resolveLocalizedText(link.label, locale, config.locales?.default);
434
- if (external) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
435
- href,
436
- target: "_blank",
437
- rel: "noreferrer",
438
- className,
439
- children: label
440
- });
441
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Link, {
442
- to: href,
443
- className,
444
- children: label
445
- });
446
- }
447
- function SocialLink(arg0) {
448
- const { name, href } = arg0;
449
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
450
- href,
451
- target: "_blank",
452
- rel: "noreferrer",
453
- className: "clarify-footer-social capitalize no-underline transition",
454
- children: name
455
- });
456
- }
457
- function PageFooter() {
458
- const config = require_i18n.useConfig();
459
- const locale = require_i18n.useLocale() ?? config.locales?.default;
460
- const footer = config.footer;
461
- const links = footer?.links ?? [];
462
- const socials = Object.entries(footer?.socials ?? {});
463
- const copyright = footer?.copyright ? require_PageActions.resolveLocalizedText(footer.copyright, locale, config.locales?.default) : void 0;
464
- if (!Boolean(copyright || links.length > 0 || socials.length > 0)) return null;
465
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("footer", {
466
- className: "clarify-page-footer w-full",
467
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
468
- className: (0, clsx.default)("clarify-footer-content flex flex-col items-start gap-2.5 text-left"),
469
- children: [copyright ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
470
- className: "clarify-footer-copyright m-0",
471
- children: copyright
472
- }) : null, links.length > 0 || socials.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
473
- className: "clarify-footer-links flex flex-wrap justify-start gap-x-4 gap-y-2",
474
- children: [links.map((link) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FooterLink, {
475
- link,
476
- locale,
477
- config
478
- }, `${link.href}-${require_PageActions.resolveLocalizedText(link.label, locale, config.locales?.default)}`)), socials.map(([name, href]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SocialLink, {
479
- name,
480
- href
481
- }, name))]
482
- }) : null]
483
- })
484
- });
485
- }
486
- //#endregion
487
- //#region source/app/FooterRegion.tsx
488
- function DefaultFooterComponent() {
489
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageFooter, {});
490
- }
491
- function FooterRegion(props) {
492
- const { version } = props;
493
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
494
- 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",
495
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
496
- className: "clarify-page-footer-slot min-w-0",
497
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, { name: "page.footer.before" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, {
498
- name: "page.footer.replace",
499
- default: DefaultFooterComponent
500
- })]
501
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
502
- className: "clarify-page-attribution flex justify-end sm:self-end",
503
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BuiltWithClarify, { version })
504
- })]
505
- });
506
- }
507
- //#endregion
508
427
  //#region source/app/PageBanner.tsx
509
428
  function bannerStorageKey(config, content) {
510
429
  return `clarify:banner:dismissed:${config.title}:${content}`;
@@ -592,6 +511,66 @@ function PageBanner(props) {
592
511
  });
593
512
  }
594
513
  //#endregion
514
+ //#region source/app/PageFooter.tsx
515
+ function FooterLink(arg0) {
516
+ const { link, locale, config } = arg0;
517
+ const external = require_PageActions.isExternalHref(link.href);
518
+ const href = external ? link.href : require_PageActions.localizeHref(link.href, config, locale);
519
+ const className = "clarify-footer-link no-underline transition";
520
+ const label = require_PageActions.resolveLocalizedText(link.label, locale, config.locales?.default);
521
+ if (external) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
522
+ href,
523
+ target: "_blank",
524
+ rel: "noreferrer",
525
+ className,
526
+ children: label
527
+ });
528
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Link, {
529
+ to: href,
530
+ className,
531
+ children: label
532
+ });
533
+ }
534
+ function SocialLink(arg0) {
535
+ const { name, href } = arg0;
536
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
537
+ href,
538
+ target: "_blank",
539
+ rel: "noreferrer",
540
+ className: "clarify-footer-social capitalize no-underline transition",
541
+ children: name
542
+ });
543
+ }
544
+ function PageFooter() {
545
+ const config = require_i18n.useConfig();
546
+ const locale = require_i18n.useLocale() ?? config.locales?.default;
547
+ const footer = config.footer;
548
+ const links = footer?.links ?? [];
549
+ const socials = Object.entries(footer?.socials ?? {});
550
+ const copyright = footer?.copyright ? require_PageActions.resolveLocalizedText(footer.copyright, locale, config.locales?.default) : void 0;
551
+ if (!Boolean(copyright || links.length > 0 || socials.length > 0)) return null;
552
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("footer", {
553
+ className: "clarify-page-footer w-full",
554
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
555
+ className: (0, clsx.default)("clarify-footer-content flex flex-col items-start gap-2.5 text-left"),
556
+ children: [copyright ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
557
+ className: "clarify-footer-copyright m-0",
558
+ children: copyright
559
+ }) : null, links.length > 0 || socials.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
560
+ className: "clarify-footer-links flex flex-wrap justify-start gap-x-4 gap-y-2",
561
+ children: [links.map((link) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FooterLink, {
562
+ link,
563
+ locale,
564
+ config
565
+ }, `${link.href}-${require_PageActions.resolveLocalizedText(link.label, locale, config.locales?.default)}`)), socials.map(([name, href]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SocialLink, {
566
+ name,
567
+ href
568
+ }, name))]
569
+ }) : null]
570
+ })
571
+ });
572
+ }
573
+ //#endregion
595
574
  //#region source/app/PageNavigation.tsx
596
575
  function flattenNavigation(nodes) {
597
576
  return nodes.flatMap((node) => node.children?.length ? flattenNavigation(node.children) : [node]);
@@ -748,6 +727,123 @@ function PageSkeleton() {
748
727
  });
749
728
  }
750
729
  //#endregion
730
+ //#region source/app/AppShellLayout.tsx
731
+ function NotFoundRouteElement(props) {
732
+ const { component: RouteComponent } = props;
733
+ if (!RouteComponent) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BuiltInNotFoundPage, {});
734
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RouteComponent, {});
735
+ }
736
+ function BannerSlot(props) {
737
+ const { activeBannerKey, dismissedBannerKey, bannerResolved, onDismiss, config, locale } = props;
738
+ function DefaultBannerComponent() {
739
+ if (!(bannerResolved && Boolean(config.banner) && dismissedBannerKey !== activeBannerKey)) return null;
740
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageBanner, {
741
+ currentLocale: locale,
742
+ onDismiss
743
+ });
744
+ }
745
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, {
746
+ name: "page.banner.replace",
747
+ default: DefaultBannerComponent
748
+ });
749
+ }
750
+ function DefaultFooterComponent() {
751
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageFooter, {});
752
+ }
753
+ function AppShellLayout(props) {
754
+ const { config, routes, currentRoute, currentLocale, currentNavigation, notFoundRouteComponent, layout, headerRef, headerTopAreaRef, layoutConfig, pathname, text, activeBannerKey, dismissedBannerKey, bannerResolved, onDismissBanner } = props;
755
+ const layoutStyle = { "--clarify-header-offset": layoutConfig.headerOffset };
756
+ const routeElements = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_router_dom.Routes, { children: [routes.map((route) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
757
+ path: route.path,
758
+ element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(route.component, {})
759
+ }, route.path)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
760
+ path: "*",
761
+ element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NotFoundRouteElement, { component: notFoundRouteComponent })
762
+ })] });
763
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.Header, {
764
+ ref: headerRef,
765
+ topAreaRef: headerTopAreaRef,
766
+ navigation: currentNavigation.items,
767
+ tabs: currentNavigation.tabs,
768
+ routes: props.routes,
769
+ currentLocale,
770
+ currentRoute,
771
+ banner: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BannerSlot, {
772
+ activeBannerKey,
773
+ dismissedBannerKey,
774
+ bannerResolved,
775
+ onDismiss: onDismissBanner,
776
+ config,
777
+ locale: currentLocale
778
+ })
779
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
780
+ 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)",
781
+ style: layoutStyle,
782
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
783
+ "data-pagefind-ignore": true,
784
+ className: "clarify-sidebar hidden lg:block lg:self-stretch lg:bg-(--clarify-theme-tokens-colors-background) lg:px-5 xl:px-6",
785
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
786
+ className: (0, clsx.default)("clarify-sidebar-scroll lg:sticky lg:z-30 lg:overflow-y-auto lg:pb-8", layoutConfig.sidebarScrollClassName),
787
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.Navigation, {
788
+ navigation: currentNavigation.items,
789
+ currentLocale
790
+ })
791
+ })
792
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
793
+ className: (0, clsx.default)("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"),
794
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_PageActions.PageActionsProvider, {
795
+ route: currentRoute,
796
+ locale: currentLocale,
797
+ children: [
798
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("main", {
799
+ className: "clarify-main min-w-0 flex-auto",
800
+ "data-pagefind-body": true,
801
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageErrorBoundary, {
802
+ title: text("renderError.title"),
803
+ description: text("renderError.description"),
804
+ reloadLabel: text("renderError.reload"),
805
+ detailsLabel: text("renderError.details"),
806
+ pathLabel: text("renderError.path"),
807
+ typeLabel: text("renderError.type"),
808
+ messageLabel: text("renderError.message"),
809
+ stackLabel: text("renderError.stack"),
810
+ componentStackLabel: text("renderError.componentStack"),
811
+ copyLabel: text("actions.copy"),
812
+ copiedLabel: text("actions.copied"),
813
+ path: pathname,
814
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Suspense, {
815
+ fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageSkeleton, {}),
816
+ children: routeElements
817
+ })
818
+ }, pathname)
819
+ }),
820
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.PageMetadata, {
821
+ updatedAt: currentRoute?.updatedAt,
822
+ locale: currentLocale
823
+ }),
824
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageNavigation, {
825
+ navigation: currentNavigation.items,
826
+ currentRoute
827
+ }),
828
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
829
+ 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",
830
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
831
+ className: "clarify-page-footer-slot min-w-0",
832
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, { name: "page.footer.before" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, {
833
+ name: "page.footer.replace",
834
+ default: DefaultFooterComponent
835
+ })]
836
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
837
+ className: "clarify-page-attribution flex justify-end sm:self-end",
838
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BuiltWithClarify, { version: config.version })
839
+ })]
840
+ })
841
+ ]
842
+ })
843
+ })]
844
+ })] });
845
+ }
846
+ //#endregion
751
847
  //#region source/app/SectionHashSync.tsx
752
848
  var HASH_UPDATE_DEBOUNCE_MS = 120;
753
849
  function replaceHash(sectionId) {
@@ -819,20 +915,6 @@ function SectionHashSync(arg0) {
819
915
  }
820
916
  //#endregion
821
917
  //#region source/app/AppShell.tsx
822
- function BannerSlot(props) {
823
- const { activeBannerKey, dismissedBannerKey, bannerResolved, onDismiss, config, locale } = props;
824
- function DefaultBannerComponent() {
825
- if (!(bannerResolved && Boolean(config.banner) && dismissedBannerKey !== activeBannerKey)) return null;
826
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageBanner, {
827
- currentLocale: locale,
828
- onDismiss
829
- });
830
- }
831
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, {
832
- name: "page.banner.replace",
833
- default: DefaultBannerComponent
834
- });
835
- }
836
918
  function routeForPath(routes, pathname) {
837
919
  return routes.find((route) => require_PageActions.isSameRoutePath(route.path, pathname));
838
920
  }
@@ -1124,11 +1206,6 @@ function getLayoutVariant(hasTabs, hasBanner) {
1124
1206
  function getAppShellLayoutConfig(hasTabs, hasBanner) {
1125
1207
  return appShellLayoutConfig[getLayoutVariant(hasTabs, hasBanner)];
1126
1208
  }
1127
- function NotFoundRouteElement(props) {
1128
- const { component: RouteComponent } = props;
1129
- if (!RouteComponent) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BuiltInNotFoundPage, {});
1130
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RouteComponent, {});
1131
- }
1132
1209
  function AppShell(arg0) {
1133
1210
  const { routes, navigation, runtimeSlots } = arg0;
1134
1211
  const config = require_i18n.useConfig();
@@ -1159,103 +1236,6 @@ function AppShell(arg0) {
1159
1236
  config,
1160
1237
  route: currentRoute ?? notFoundRoute
1161
1238
  });
1162
- const layoutStyle = { "--clarify-header-offset": layoutConfig.headerOffset };
1163
- function renderBannerSlot() {
1164
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BannerSlot, {
1165
- activeBannerKey,
1166
- dismissedBannerKey,
1167
- bannerResolved,
1168
- onDismiss: dismissBanner,
1169
- config,
1170
- locale: currentLocale
1171
- });
1172
- }
1173
- function renderHeader() {
1174
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.Header, {
1175
- ref: headerRef,
1176
- topAreaRef: headerTopAreaRef,
1177
- navigation: currentNavigation.items,
1178
- tabs: currentNavigation.tabs,
1179
- routes,
1180
- currentLocale,
1181
- currentRoute,
1182
- banner: renderBannerSlot()
1183
- });
1184
- }
1185
- function renderSidebar() {
1186
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
1187
- "data-pagefind-ignore": true,
1188
- className: "clarify-sidebar hidden lg:block lg:self-stretch lg:bg-(--clarify-theme-tokens-colors-background) lg:px-5 xl:px-6",
1189
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1190
- className: (0, clsx.default)("clarify-sidebar-scroll lg:sticky lg:z-30 lg:overflow-y-auto lg:pb-8", layoutConfig.sidebarScrollClassName),
1191
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.Navigation, {
1192
- navigation: currentNavigation.items,
1193
- currentLocale
1194
- })
1195
- })
1196
- });
1197
- }
1198
- function renderRouteElements() {
1199
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_router_dom.Routes, { children: [renderRoutes.map((route) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
1200
- path: route.path,
1201
- element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(route.component, {})
1202
- }, route.path)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
1203
- path: "*",
1204
- element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NotFoundRouteElement, { component: NotFoundRouteComponent })
1205
- })] });
1206
- }
1207
- function renderMain() {
1208
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("main", {
1209
- className: "clarify-main min-w-0 flex-auto",
1210
- "data-pagefind-body": true,
1211
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageErrorBoundary, {
1212
- title: text("renderError.title"),
1213
- description: text("renderError.description"),
1214
- reloadLabel: text("renderError.reload"),
1215
- detailsLabel: text("renderError.details"),
1216
- pathLabel: text("renderError.path"),
1217
- typeLabel: text("renderError.type"),
1218
- messageLabel: text("renderError.message"),
1219
- stackLabel: text("renderError.stack"),
1220
- componentStackLabel: text("renderError.componentStack"),
1221
- copyLabel: text("actions.copy"),
1222
- copiedLabel: text("actions.copied"),
1223
- path: pathname,
1224
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Suspense, {
1225
- fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageSkeleton, {}),
1226
- children: renderRouteElements()
1227
- })
1228
- }, pathname)
1229
- });
1230
- }
1231
- function renderContent() {
1232
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1233
- className: (0, clsx.default)("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"),
1234
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_PageActions.PageActionsProvider, {
1235
- route: currentRoute,
1236
- locale: currentLocale,
1237
- children: [
1238
- renderMain(),
1239
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.PageMetadata, {
1240
- updatedAt: currentRoute?.updatedAt,
1241
- locale: currentLocale
1242
- }),
1243
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageNavigation, {
1244
- navigation: currentNavigation.items,
1245
- currentRoute
1246
- }),
1247
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FooterRegion, { version: config.version })
1248
- ]
1249
- })
1250
- });
1251
- }
1252
- function renderLayout() {
1253
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1254
- 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)",
1255
- style: layoutStyle,
1256
- children: [renderSidebar(), renderContent()]
1257
- });
1258
- }
1259
1239
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_i18n.LocaleContext.Provider, {
1260
1240
  value: currentLocale,
1261
1241
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlotsProvider, {
@@ -1264,11 +1244,24 @@ function AppShell(arg0) {
1264
1244
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_PageActions.SectionProvider, {
1265
1245
  sections,
1266
1246
  headerTopAreaRef,
1267
- children: [
1268
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SectionHashSync, { hashScrollSuppressedUntilRef }),
1269
- renderHeader(),
1270
- renderLayout()
1271
- ]
1247
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SectionHashSync, { hashScrollSuppressedUntilRef }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AppShellLayout, {
1248
+ config,
1249
+ routes: renderRoutes,
1250
+ currentRoute,
1251
+ currentLocale,
1252
+ currentNavigation,
1253
+ notFoundRouteComponent: NotFoundRouteComponent,
1254
+ layout,
1255
+ headerRef,
1256
+ headerTopAreaRef,
1257
+ layoutConfig,
1258
+ pathname,
1259
+ text,
1260
+ activeBannerKey,
1261
+ dismissedBannerKey,
1262
+ bannerResolved,
1263
+ onDismissBanner: dismissBanner
1264
+ })]
1272
1265
  })
1273
1266
  })
1274
1267
  });
@@ -2744,4 +2737,4 @@ Object.defineProperty(exports, "useSlot", {
2744
2737
  }
2745
2738
  });
2746
2739
 
2747
- //# sourceMappingURL=ClarifyShell-Cv4GYuCM.cjs.map
2740
+ //# sourceMappingURL=ClarifyShell-DwxpyL0U.cjs.map