@clarify-labs/renderer 0.7.2 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/output/{ThemeRoot-UWj0iK1X.cjs → ClarifyShell-B74Fq4UU.cjs} +389 -161
- package/output/ClarifyShell-B74Fq4UU.cjs.map +1 -0
- package/output/{ThemeRoot-QULrwQf6.js → ClarifyShell-BPv2bxI4.js} +361 -157
- package/output/ClarifyShell-BPv2bxI4.js.map +1 -0
- package/output/{OpenApiOperation-BcyW_ULy.cjs → OpenApiOperation-BMXfV15v.cjs} +209 -7
- package/output/OpenApiOperation-BMXfV15v.cjs.map +1 -0
- package/output/{OpenApiOperation-tUKf7lZ4.js → OpenApiOperation-fJ3QQOJX.js} +205 -9
- package/output/OpenApiOperation-fJ3QQOJX.js.map +1 -0
- package/output/{PageActions-yoDRjkq8.js → PageActions-BwY7ierv.js} +55 -81
- package/output/PageActions-BwY7ierv.js.map +1 -0
- package/output/{PageActions-1RDCHcUY.cjs → PageActions-DOKkt2zo.cjs} +59 -79
- package/output/PageActions-DOKkt2zo.cjs.map +1 -0
- package/output/app/AppShell.d.ts +2 -3
- package/output/app/PageBanner.d.ts +0 -2
- package/output/app/PageFooter.d.ts +1 -5
- package/output/client.cjs +8 -8
- package/output/client.js +3 -3
- package/output/components/Code.d.ts +5 -1
- package/output/components/Mermaid.d.ts +7 -0
- package/output/components/index.d.ts +1 -0
- package/output/context.d.ts +1 -1
- package/output/core/i18n.d.ts +1 -1
- package/output/core/types.d.ts +8 -14
- package/output/index.cjs +27 -24
- package/output/index.cjs.map +1 -1
- package/output/index.d.ts +7 -4
- package/output/index.js +14 -14
- package/output/index.js.map +1 -1
- package/output/mdx/components.d.ts +3 -0
- package/output/mdx/primitives.d.ts +1 -0
- package/output/preview.cjs +3 -2
- package/output/preview.cjs.map +1 -1
- package/output/preview.js +3 -2
- package/output/preview.js.map +1 -1
- package/output/{render-psutGbsg.js → render-Cghgq1AQ.js} +10 -20
- package/output/render-Cghgq1AQ.js.map +1 -0
- package/output/{render-ByWbJbrA.cjs → render-ZSckbg74.cjs} +10 -20
- package/output/render-ZSckbg74.cjs.map +1 -0
- package/output/renderer.css +77 -21
- package/output/runtime/ClarifyShell.d.ts +22 -0
- package/output/server.cjs +10 -19
- package/output/server.cjs.map +1 -1
- package/output/server.js +10 -19
- package/output/server.js.map +1 -1
- package/output/shell/search/pagefind.d.ts +0 -1
- package/output/slots/RuntimeSlot.d.ts +58 -0
- package/output/slots/context.d.ts +20 -0
- package/output/slots/index.d.ts +5 -0
- package/output/slots/types.d.ts +50 -0
- package/output/utils/localized-text.d.ts +7 -0
- package/package.json +8 -3
- package/output/OpenApiOperation-BcyW_ULy.cjs.map +0 -1
- package/output/OpenApiOperation-tUKf7lZ4.js.map +0 -1
- package/output/PageActions-1RDCHcUY.cjs.map +0 -1
- package/output/PageActions-yoDRjkq8.js.map +0 -1
- package/output/ThemeRoot-QULrwQf6.js.map +0 -1
- package/output/ThemeRoot-UWj0iK1X.cjs.map +0 -1
- package/output/render-ByWbJbrA.cjs.map +0 -1
- package/output/render-psutGbsg.js.map +0 -1
|
@@ -1,11 +1,142 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-DakpK96I.cjs");
|
|
2
|
-
const require_PageActions = require("./PageActions-
|
|
2
|
+
const require_PageActions = require("./PageActions-DOKkt2zo.cjs");
|
|
3
3
|
let clsx = require("clsx");
|
|
4
4
|
clsx = require_chunk.__toESM(clsx, 1);
|
|
5
5
|
let react = require("react");
|
|
6
6
|
let react_router_dom = require("react-router-dom");
|
|
7
7
|
let lucide_react = require("lucide-react");
|
|
8
8
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
+
//#region source/slots/context.tsx
|
|
10
|
+
var SlotContextValue = (0, react.createContext)(null);
|
|
11
|
+
/**
|
|
12
|
+
* Provides an isolated {@link SlotContext} for a single slot component.
|
|
13
|
+
* `RuntimeSlot` wraps every rendered slot component with this provider.
|
|
14
|
+
*/
|
|
15
|
+
function SlotProvider(arg0) {
|
|
16
|
+
const { value, children } = arg0;
|
|
17
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlotContextValue.Provider, {
|
|
18
|
+
value,
|
|
19
|
+
children
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Reads the current slot context.
|
|
24
|
+
*
|
|
25
|
+
* Must be called inside a slot component (or a descendant). Calling it outside a
|
|
26
|
+
* slot provider throws, which helps plugin authors notice that the component was
|
|
27
|
+
* not mounted through a Clarify slot.
|
|
28
|
+
*/
|
|
29
|
+
function useSlot() {
|
|
30
|
+
const context = (0, react.useContext)(SlotContextValue);
|
|
31
|
+
if (!context) throw new Error("[clarify] useSlot must be called inside a slot component");
|
|
32
|
+
return context;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region source/slots/RuntimeSlot.tsx
|
|
36
|
+
var RuntimeSlotsContext = (0, react.createContext)({ slots: {} });
|
|
37
|
+
/**
|
|
38
|
+
* Makes the compiled slot registry and the current route available to every
|
|
39
|
+
* {@link RuntimeSlot} in the tree. Mounted once near the top of `AppShell`.
|
|
40
|
+
*/
|
|
41
|
+
function RuntimeSlotsProvider(arg0) {
|
|
42
|
+
const { slots, route, children } = arg0;
|
|
43
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlotsContext.Provider, {
|
|
44
|
+
value: {
|
|
45
|
+
slots: slots ?? {},
|
|
46
|
+
route
|
|
47
|
+
},
|
|
48
|
+
children
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Renders plugin components registered for a slot, in registration order.
|
|
53
|
+
*
|
|
54
|
+
* For extension slots (*.before/*.after), renders all plugin components.
|
|
55
|
+
* For replacement slots (*.replace), renders only the last registered plugin
|
|
56
|
+
* component (if any), and passes the default component through context.
|
|
57
|
+
*
|
|
58
|
+
* Each component is loaded via the import factory. If `_resolved` is set
|
|
59
|
+
* (SSR pre-resolution), the component is rendered synchronously for
|
|
60
|
+
* compatibility with `renderToString`. Otherwise, `React.lazy` + `Suspense`
|
|
61
|
+
* is used for client-side code-splitting.
|
|
62
|
+
*/
|
|
63
|
+
function RuntimeSlot(arg0) {
|
|
64
|
+
const { name, default: DefaultComponent } = arg0;
|
|
65
|
+
const { slots, route } = (0, react.useContext)(RuntimeSlotsContext);
|
|
66
|
+
const locale = require_PageActions.useLocale();
|
|
67
|
+
const entries = slots[name];
|
|
68
|
+
if (!entries || entries.length === 0) return DefaultComponent ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DefaultComponent, {}) : null;
|
|
69
|
+
if (name.endsWith(".replace")) {
|
|
70
|
+
const lastEntry = entries[entries.length - 1];
|
|
71
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlotProvider, {
|
|
72
|
+
value: {
|
|
73
|
+
name,
|
|
74
|
+
plugin: lastEntry.plugin,
|
|
75
|
+
route,
|
|
76
|
+
locale,
|
|
77
|
+
DefaultComponent
|
|
78
|
+
},
|
|
79
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlotEntryRenderer, { entry: lastEntry })
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: entries.map((entry) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlotProvider, {
|
|
83
|
+
value: {
|
|
84
|
+
name,
|
|
85
|
+
plugin: entry.plugin,
|
|
86
|
+
route,
|
|
87
|
+
locale
|
|
88
|
+
},
|
|
89
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlotEntryRenderer, { entry })
|
|
90
|
+
}, `${name}:${entry.plugin}`)) });
|
|
91
|
+
}
|
|
92
|
+
function SlotEntryRenderer(props) {
|
|
93
|
+
const { entry } = props;
|
|
94
|
+
if (entry._resolved) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(entry._resolved, {});
|
|
95
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LazySlotComponent, { loader: entry.component });
|
|
96
|
+
}
|
|
97
|
+
function LazySlotComponent(props) {
|
|
98
|
+
const { loader } = props;
|
|
99
|
+
const [Component, setComponent] = (0, react.useState)(null);
|
|
100
|
+
(0, react.useEffect)(() => {
|
|
101
|
+
let cancelled = false;
|
|
102
|
+
loader().then((mod) => {
|
|
103
|
+
if (!cancelled) setComponent(() => mod.default);
|
|
104
|
+
});
|
|
105
|
+
return () => {
|
|
106
|
+
cancelled = true;
|
|
107
|
+
};
|
|
108
|
+
}, [loader]);
|
|
109
|
+
if (!Component) return null;
|
|
110
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {});
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region source/assets/clarify.svg?url
|
|
114
|
+
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";
|
|
115
|
+
//#endregion
|
|
116
|
+
//#region source/app/BuiltWithClarify.tsx
|
|
117
|
+
function BuiltWithClarify() {
|
|
118
|
+
const t = require_PageActions.useBuiltInText();
|
|
119
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
|
|
120
|
+
href: "https://clarify.pub",
|
|
121
|
+
target: "_blank",
|
|
122
|
+
rel: "noreferrer",
|
|
123
|
+
"aria-label": t("builtWith.label"),
|
|
124
|
+
className: "clarify-built-with inline-flex items-center gap-1.5 rounded-full px-2 py-1 font-medium no-underline transition",
|
|
125
|
+
children: [
|
|
126
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("builtWith.prefix") }),
|
|
127
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
128
|
+
src: clarify_default,
|
|
129
|
+
alt: "",
|
|
130
|
+
className: "clarify-built-with-logo h-3.5 w-auto flex-none object-contain"
|
|
131
|
+
}),
|
|
132
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
133
|
+
className: "clarify-built-with-brand font-semibold",
|
|
134
|
+
children: "Clarify"
|
|
135
|
+
})
|
|
136
|
+
]
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//#endregion
|
|
9
140
|
//#region source/app/ErrorBoundary.tsx
|
|
10
141
|
function PageErrorPanel(props) {
|
|
11
142
|
const { title, description, reloadLabel, detailsLabel, pathLabel, typeLabel, messageLabel, stackLabel, componentStackLabel, timestampLabel, copyLabel, copiedLabel, path, error, errorInfo, occurredAt } = props;
|
|
@@ -88,7 +219,7 @@ function PageErrorPanel(props) {
|
|
|
88
219
|
children: messageLabel
|
|
89
220
|
}),
|
|
90
221
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
91
|
-
className: "mt-2 break-
|
|
222
|
+
className: "mt-2 wrap-break-word font-mono text-sm/6 font-semibold text-(--clarify-theme-tokens-colors-foreground)",
|
|
92
223
|
children: error.message
|
|
93
224
|
}),
|
|
94
225
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
@@ -96,14 +227,14 @@ function PageErrorPanel(props) {
|
|
|
96
227
|
children: stackLabel
|
|
97
228
|
}),
|
|
98
229
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
|
|
99
|
-
className: "mt-2 max-h-(--clarify-error-details-max-height) overflow-auto whitespace-pre-wrap break-
|
|
230
|
+
className: "mt-2 max-h-(--clarify-error-details-max-height) overflow-auto whitespace-pre-wrap wrap-break-word font-mono",
|
|
100
231
|
children: stack
|
|
101
232
|
}),
|
|
102
233
|
componentStack ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
103
234
|
className: "mt-6 font-semibold uppercase tracking-wide text-(--clarify-ui-text-faint)",
|
|
104
235
|
children: componentStackLabel
|
|
105
236
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
|
|
106
|
-
className: "mt-2 max-h-(--clarify-error-component-stack-max-height) overflow-auto whitespace-pre-wrap break-
|
|
237
|
+
className: "mt-2 max-h-(--clarify-error-component-stack-max-height) overflow-auto whitespace-pre-wrap wrap-break-word font-mono",
|
|
107
238
|
children: componentStack
|
|
108
239
|
})] }) : null
|
|
109
240
|
]
|
|
@@ -150,10 +281,6 @@ var PageErrorBoundary = class extends react.Component {
|
|
|
150
281
|
};
|
|
151
282
|
//#endregion
|
|
152
283
|
//#region source/app/PageBanner.tsx
|
|
153
|
-
function resolveLocalizedText$1(text, locale, fallbackLocale) {
|
|
154
|
-
if (typeof text === "string") return text;
|
|
155
|
-
return (locale ? text[locale] : void 0) ?? (fallbackLocale ? text[fallbackLocale] : void 0) ?? Object.values(text)[0] ?? "";
|
|
156
|
-
}
|
|
157
284
|
function bannerStorageKey(config, content) {
|
|
158
285
|
return `clarify:banner:dismissed:${config.title}:${content}`;
|
|
159
286
|
}
|
|
@@ -176,29 +303,30 @@ function PageBannerLink(props) {
|
|
|
176
303
|
});
|
|
177
304
|
}
|
|
178
305
|
function PageBanner(props) {
|
|
179
|
-
const {
|
|
306
|
+
const { currentLocale, onDismiss } = props;
|
|
180
307
|
const config = require_PageActions.useConfig();
|
|
181
308
|
const banner = config.banner;
|
|
182
|
-
const
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
309
|
+
const content = banner ? require_PageActions.resolveLocalizedText(banner.content, currentLocale, config.i18n?.defaultLocale) : "";
|
|
310
|
+
const storageKey = (0, react.useMemo)(() => {
|
|
311
|
+
if (!banner || !content) return "";
|
|
312
|
+
return bannerStorageKey(config, content);
|
|
313
|
+
}, [
|
|
314
|
+
config,
|
|
315
|
+
content,
|
|
316
|
+
banner
|
|
317
|
+
]);
|
|
187
318
|
const [dismissed, setDismissed] = (0, react.useState)(() => {
|
|
188
|
-
if (!
|
|
319
|
+
if (!banner?.dismissible || typeof window === "undefined") return false;
|
|
189
320
|
return window.localStorage.getItem(storageKey) === "1";
|
|
190
321
|
});
|
|
191
322
|
(0, react.useEffect)(() => {
|
|
192
323
|
if (dismissed) onDismiss?.();
|
|
193
324
|
}, [dismissed, onDismiss]);
|
|
194
|
-
if (
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
})
|
|
200
|
-
});
|
|
201
|
-
if (!builtInBanner || !content || dismissed) return null;
|
|
325
|
+
if (!banner) return null;
|
|
326
|
+
if (!content) return null;
|
|
327
|
+
if (dismissed) return null;
|
|
328
|
+
const link = banner.link;
|
|
329
|
+
const linkLabel = link ? require_PageActions.resolveLocalizedText(link.label, currentLocale, config.i18n?.defaultLocale) : "";
|
|
202
330
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
203
331
|
className: "clarify-banner relative flex min-h-12 items-center border-b border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) px-4 text-sm text-(--clarify-ui-text) dark:border-white/10",
|
|
204
332
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -213,7 +341,7 @@ function PageBanner(props) {
|
|
|
213
341
|
config,
|
|
214
342
|
locale: currentLocale
|
|
215
343
|
}) : null]
|
|
216
|
-
}),
|
|
344
|
+
}), banner.dismissible ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
217
345
|
type: "button",
|
|
218
346
|
className: "clarify-banner-dismiss absolute right-3 inline-flex size-8 items-center justify-center rounded-full text-(--clarify-ui-text-soft) transition hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-ui-text-strong)",
|
|
219
347
|
"aria-label": "Dismiss announcement",
|
|
@@ -229,38 +357,7 @@ function PageBanner(props) {
|
|
|
229
357
|
});
|
|
230
358
|
}
|
|
231
359
|
//#endregion
|
|
232
|
-
//#region source/assets/clarify.svg?url
|
|
233
|
-
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";
|
|
234
|
-
//#endregion
|
|
235
|
-
//#region source/app/BuiltWithClarify.tsx
|
|
236
|
-
function BuiltWithClarify() {
|
|
237
|
-
const t = require_PageActions.useBuiltInText();
|
|
238
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
|
|
239
|
-
href: "https://clarify.pub",
|
|
240
|
-
target: "_blank",
|
|
241
|
-
rel: "noreferrer",
|
|
242
|
-
"aria-label": t("builtWith.label"),
|
|
243
|
-
className: "clarify-built-with inline-flex items-center gap-1.5 rounded-full px-2 py-1 font-medium no-underline transition",
|
|
244
|
-
children: [
|
|
245
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("builtWith.prefix") }),
|
|
246
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
247
|
-
src: clarify_default,
|
|
248
|
-
alt: "",
|
|
249
|
-
className: "clarify-built-with-logo h-3.5 w-auto flex-none object-contain"
|
|
250
|
-
}),
|
|
251
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
252
|
-
className: "clarify-built-with-brand font-semibold",
|
|
253
|
-
children: "Clarify"
|
|
254
|
-
})
|
|
255
|
-
]
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
//#endregion
|
|
259
360
|
//#region source/app/PageFooter.tsx
|
|
260
|
-
function resolveLocalizedText(text, locale, fallbackLocale) {
|
|
261
|
-
if (typeof text === "string") return text;
|
|
262
|
-
return (locale ? text[locale] : void 0) ?? (fallbackLocale ? text[fallbackLocale] : void 0) ?? Object.values(text)[0] ?? "";
|
|
263
|
-
}
|
|
264
361
|
function localeForPath(config, pathname) {
|
|
265
362
|
const i18n = config.i18n;
|
|
266
363
|
if (!i18n) return void 0;
|
|
@@ -272,7 +369,7 @@ function FooterLink(arg0) {
|
|
|
272
369
|
const external = link.external ?? require_PageActions.isExternalHref(link.href);
|
|
273
370
|
const href = external ? link.href : require_PageActions.localizeHref(link.href, config, locale);
|
|
274
371
|
const className = "clarify-footer-link no-underline transition";
|
|
275
|
-
const label = resolveLocalizedText(link.label, locale, config.i18n?.defaultLocale);
|
|
372
|
+
const label = require_PageActions.resolveLocalizedText(link.label, locale, config.i18n?.defaultLocale);
|
|
276
373
|
if (external) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
277
374
|
href,
|
|
278
375
|
target: "_blank",
|
|
@@ -296,23 +393,21 @@ function SocialLink(arg0) {
|
|
|
296
393
|
children: name
|
|
297
394
|
});
|
|
298
395
|
}
|
|
299
|
-
function PageFooter(
|
|
396
|
+
function PageFooter() {
|
|
300
397
|
const config = require_PageActions.useConfig();
|
|
301
398
|
const locale = localeForPath(config, (0, react_router_dom.useLocation)().pathname);
|
|
302
399
|
const footer = config.footer;
|
|
303
|
-
const
|
|
304
|
-
const
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
400
|
+
const links = footer?.links ?? [];
|
|
401
|
+
const socials = Object.entries(footer?.socials ?? {});
|
|
402
|
+
const copyright = footer?.copyright ? require_PageActions.resolveLocalizedText(footer.copyright, locale, config.i18n?.defaultLocale) : void 0;
|
|
403
|
+
if (!Boolean(copyright || links.length > 0 || socials.length > 0)) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("footer", {
|
|
404
|
+
"aria-hidden": "true",
|
|
405
|
+
className: "clarify-page-footer mt-16 w-full border-t border-(--clarify-theme-tokens-colors-border) pt-8 lg:mt-24"
|
|
406
|
+
});
|
|
407
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("footer", {
|
|
310
408
|
className: "clarify-page-footer mt-16 flex w-full flex-col gap-4 border-t border-(--clarify-theme-tokens-colors-border) py-8 lg:mt-24",
|
|
311
|
-
children:
|
|
312
|
-
className: "clarify-footer-
|
|
313
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CustomFooter, {})
|
|
314
|
-
}) : hasBuiltInFooter ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
315
|
-
className: (0, clsx.default)("clarify-footer-content flex flex-col items-end gap-3 text-right", hasBuiltInFooter && "sm:items-start sm:text-left"),
|
|
409
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
410
|
+
className: (0, clsx.default)("clarify-footer-content flex flex-col items-end gap-3 text-right", "sm:items-start sm:text-left"),
|
|
316
411
|
children: [copyright ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
317
412
|
className: "clarify-footer-copyright m-0",
|
|
318
413
|
children: copyright
|
|
@@ -322,15 +417,12 @@ function PageFooter(props = {}) {
|
|
|
322
417
|
link,
|
|
323
418
|
locale,
|
|
324
419
|
config
|
|
325
|
-
}, `${link.href}-${resolveLocalizedText(link.label, locale, config.i18n?.defaultLocale)}`)), socials.map(([name, href]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SocialLink, {
|
|
420
|
+
}, `${link.href}-${require_PageActions.resolveLocalizedText(link.label, locale, config.i18n?.defaultLocale)}`)), socials.map(([name, href]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SocialLink, {
|
|
326
421
|
name,
|
|
327
422
|
href
|
|
328
423
|
}, name))]
|
|
329
424
|
}) : null]
|
|
330
|
-
})
|
|
331
|
-
className: "clarify-footer-brand flex justify-end self-end",
|
|
332
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BuiltWithClarify, {})
|
|
333
|
-
})]
|
|
425
|
+
})
|
|
334
426
|
});
|
|
335
427
|
}
|
|
336
428
|
//#endregion
|
|
@@ -489,6 +581,23 @@ function PageSkeleton() {
|
|
|
489
581
|
}
|
|
490
582
|
//#endregion
|
|
491
583
|
//#region source/app/AppShell.tsx
|
|
584
|
+
function BannerSlot(props) {
|
|
585
|
+
const { activeBannerKey, dismissedBannerKey, onDismiss, config, locale } = props;
|
|
586
|
+
function DefaultBannerComponent() {
|
|
587
|
+
if (!(Boolean(config.banner) && dismissedBannerKey !== activeBannerKey)) return null;
|
|
588
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageBanner, {
|
|
589
|
+
currentLocale: locale,
|
|
590
|
+
onDismiss
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, {
|
|
594
|
+
name: "page.banner.replace",
|
|
595
|
+
default: DefaultBannerComponent
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
function DefaultFooterComponent() {
|
|
599
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageFooter, {});
|
|
600
|
+
}
|
|
492
601
|
function routeForPath(routes, pathname) {
|
|
493
602
|
return routes.find((route) => require_PageActions.isSameRoutePath(route.path, pathname));
|
|
494
603
|
}
|
|
@@ -612,13 +721,13 @@ function NotFoundRouteElement(props) {
|
|
|
612
721
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RouteComponent, {});
|
|
613
722
|
}
|
|
614
723
|
function AppShell(arg0) {
|
|
615
|
-
const { config, routes, navigation,
|
|
724
|
+
const { config, routes, navigation, runtimeSlots } = arg0;
|
|
616
725
|
const location = (0, react_router_dom.useLocation)();
|
|
617
726
|
const navigate = (0, react_router_dom.useNavigate)();
|
|
618
727
|
const pathname = require_PageActions.normalizeRoutePath(location.pathname);
|
|
619
728
|
const currentRoute = routeForPath(routes, pathname);
|
|
620
729
|
const explicitLocale = explicitLocaleForPath(config, pathname);
|
|
621
|
-
const
|
|
730
|
+
const storedLocale = storedLocaleForConfig(config);
|
|
622
731
|
const currentLocale = explicitLocale ?? storedLocale ?? fallbackLocale(config);
|
|
623
732
|
const currentLocaleConfig = config.i18n?.locales.find((locale) => locale.code === currentLocale);
|
|
624
733
|
const notFoundRoute = currentRoute ? void 0 : notFoundRouteForPath(routes, pathname, currentLocale);
|
|
@@ -680,74 +789,88 @@ function AppShell(arg0) {
|
|
|
680
789
|
]);
|
|
681
790
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.LocaleContext.Provider, {
|
|
682
791
|
value: currentLocale,
|
|
683
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
component: bannerComponent,
|
|
792
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlotsProvider, {
|
|
793
|
+
slots: runtimeSlots,
|
|
794
|
+
route: currentRoute,
|
|
795
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_PageActions.SectionProvider, {
|
|
796
|
+
sections,
|
|
797
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.Header, {
|
|
798
|
+
config,
|
|
799
|
+
navigation: currentNavigation.items,
|
|
800
|
+
tabs: currentNavigation.tabs,
|
|
801
|
+
routes,
|
|
694
802
|
currentLocale,
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
className: "clarify-sidebar hidden lg:block lg:self-stretch lg:bg-(--clarify-theme-tokens-colors-background) lg:px-5 xl:px-6",
|
|
703
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
704
|
-
className: (0, clsx.default)("clarify-sidebar-scroll lg:sticky lg:z-30 lg:overflow-y-auto lg:pb-8", hasTabs && hasBanner && "lg:top-40 lg:h-(--clarify-sidebar-height-with-tabs-and-banner) lg:pt-10", hasTabs && !hasBanner && "lg:top-28 lg:h-(--clarify-sidebar-height-with-tabs) lg:pt-10", !hasTabs && hasBanner && "lg:top-[6.5rem] lg:h-(--clarify-sidebar-height-with-banner) lg:pt-10", !hasTabs && !hasBanner && "lg:top-14 lg:h-(--clarify-sidebar-height) lg:pt-10"),
|
|
705
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.Navigation, { navigation: currentNavigation.items })
|
|
706
|
-
})
|
|
707
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
708
|
-
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", hasTabs && hasBanner && "pt-[6.5rem] lg:pt-40", hasTabs && !hasBanner && "pt-14 lg:pt-28", !hasTabs && hasBanner && "pt-[6.5rem]", !hasTabs && !hasBanner && "pt-14"),
|
|
709
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_PageActions.PageActionsProvider, {
|
|
710
|
-
route: currentRoute,
|
|
711
|
-
routePrefix: config.routePrefix,
|
|
712
|
-
children: [
|
|
713
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("main", {
|
|
714
|
-
className: "clarify-main min-w-0 flex-auto",
|
|
715
|
-
"data-pagefind-body": true,
|
|
716
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageErrorBoundary, {
|
|
717
|
-
title: text("renderError.title"),
|
|
718
|
-
description: text("renderError.description"),
|
|
719
|
-
reloadLabel: text("renderError.reload"),
|
|
720
|
-
detailsLabel: text("renderError.details"),
|
|
721
|
-
pathLabel: text("renderError.path"),
|
|
722
|
-
typeLabel: text("renderError.type"),
|
|
723
|
-
messageLabel: text("renderError.message"),
|
|
724
|
-
stackLabel: text("renderError.stack"),
|
|
725
|
-
componentStackLabel: text("renderError.componentStack"),
|
|
726
|
-
timestampLabel: text("renderError.timestamp"),
|
|
727
|
-
copyLabel: text("actions.copy"),
|
|
728
|
-
copiedLabel: text("actions.copied"),
|
|
729
|
-
path: pathname,
|
|
730
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Suspense, {
|
|
731
|
-
fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageSkeleton, {}),
|
|
732
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_router_dom.Routes, { children: [renderRoutes.map((route) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
|
|
733
|
-
path: route.path,
|
|
734
|
-
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(route.component, {})
|
|
735
|
-
}, route.path)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
|
|
736
|
-
path: "*",
|
|
737
|
-
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NotFoundRouteElement, { component: NotFoundRouteComponent })
|
|
738
|
-
})] })
|
|
739
|
-
})
|
|
740
|
-
}, pathname)
|
|
741
|
-
}),
|
|
742
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageNavigation, {
|
|
743
|
-
navigation: currentNavigation.items,
|
|
744
|
-
currentRoute
|
|
745
|
-
}),
|
|
746
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageFooter, { component: footerComponent })
|
|
747
|
-
]
|
|
803
|
+
currentRoute,
|
|
804
|
+
banner: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BannerSlot, {
|
|
805
|
+
activeBannerKey,
|
|
806
|
+
dismissedBannerKey,
|
|
807
|
+
onDismiss: () => setDismissedBannerKey(activeBannerKey),
|
|
808
|
+
config,
|
|
809
|
+
locale: currentLocale
|
|
748
810
|
})
|
|
811
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
812
|
+
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)",
|
|
813
|
+
style: { "--clarify-header-offset": hasTabs && hasBanner ? "10rem" : hasTabs && !hasBanner ? "7rem" : !hasTabs && hasBanner ? "6.5rem" : "3.5rem" },
|
|
814
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
|
|
815
|
+
"data-pagefind-ignore": true,
|
|
816
|
+
className: "clarify-sidebar hidden lg:block lg:self-stretch lg:bg-(--clarify-theme-tokens-colors-background) lg:px-5 xl:px-6",
|
|
817
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
818
|
+
className: (0, clsx.default)("clarify-sidebar-scroll lg:sticky lg:z-30 lg:overflow-y-auto lg:pb-8", hasTabs && hasBanner && "lg:top-40 lg:h-(--clarify-sidebar-height-with-tabs-and-banner) lg:pt-10", hasTabs && !hasBanner && "lg:top-28 lg:h-(--clarify-sidebar-height-with-tabs) lg:pt-10", !hasTabs && hasBanner && "lg:top-26 lg:h-(--clarify-sidebar-height-with-banner) lg:pt-10", !hasTabs && !hasBanner && "lg:top-14 lg:h-(--clarify-sidebar-height) lg:pt-10"),
|
|
819
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.Navigation, { navigation: currentNavigation.items })
|
|
820
|
+
})
|
|
821
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
822
|
+
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", hasTabs && hasBanner && "pt-26 lg:pt-40", hasTabs && !hasBanner && "pt-14 lg:pt-28", !hasTabs && hasBanner && "pt-26", !hasTabs && !hasBanner && "pt-14"),
|
|
823
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_PageActions.PageActionsProvider, {
|
|
824
|
+
route: currentRoute,
|
|
825
|
+
routePrefix: config.routePrefix,
|
|
826
|
+
children: [
|
|
827
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("main", {
|
|
828
|
+
className: "clarify-main min-w-0 flex-auto",
|
|
829
|
+
"data-pagefind-body": true,
|
|
830
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageErrorBoundary, {
|
|
831
|
+
title: text("renderError.title"),
|
|
832
|
+
description: text("renderError.description"),
|
|
833
|
+
reloadLabel: text("renderError.reload"),
|
|
834
|
+
detailsLabel: text("renderError.details"),
|
|
835
|
+
pathLabel: text("renderError.path"),
|
|
836
|
+
typeLabel: text("renderError.type"),
|
|
837
|
+
messageLabel: text("renderError.message"),
|
|
838
|
+
stackLabel: text("renderError.stack"),
|
|
839
|
+
componentStackLabel: text("renderError.componentStack"),
|
|
840
|
+
timestampLabel: text("renderError.timestamp"),
|
|
841
|
+
copyLabel: text("actions.copy"),
|
|
842
|
+
copiedLabel: text("actions.copied"),
|
|
843
|
+
path: pathname,
|
|
844
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Suspense, {
|
|
845
|
+
fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageSkeleton, {}),
|
|
846
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_router_dom.Routes, { children: [renderRoutes.map((route) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
|
|
847
|
+
path: route.path,
|
|
848
|
+
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(route.component, {})
|
|
849
|
+
}, route.path)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_router_dom.Route, {
|
|
850
|
+
path: "*",
|
|
851
|
+
element: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NotFoundRouteElement, { component: NotFoundRouteComponent })
|
|
852
|
+
})] })
|
|
853
|
+
})
|
|
854
|
+
}, pathname)
|
|
855
|
+
}),
|
|
856
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageNavigation, {
|
|
857
|
+
navigation: currentNavigation.items,
|
|
858
|
+
currentRoute
|
|
859
|
+
}),
|
|
860
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, { name: "page.footer.before" }),
|
|
861
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeSlot, {
|
|
862
|
+
name: "page.footer.replace",
|
|
863
|
+
default: DefaultFooterComponent
|
|
864
|
+
}),
|
|
865
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
866
|
+
className: "flex justify-end",
|
|
867
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BuiltWithClarify, {})
|
|
868
|
+
})
|
|
869
|
+
]
|
|
870
|
+
})
|
|
871
|
+
})]
|
|
749
872
|
})]
|
|
750
|
-
})
|
|
873
|
+
})
|
|
751
874
|
})
|
|
752
875
|
});
|
|
753
876
|
}
|
|
@@ -1368,6 +1491,48 @@ var randomLayoutWidths = [
|
|
|
1368
1491
|
"128rem",
|
|
1369
1492
|
"144rem"
|
|
1370
1493
|
];
|
|
1494
|
+
var randomDarkAccentPairs = [
|
|
1495
|
+
{
|
|
1496
|
+
primary: "#34d399",
|
|
1497
|
+
accent: "#2dd4bf"
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
primary: "#60a5fa",
|
|
1501
|
+
accent: "#38bdf8"
|
|
1502
|
+
},
|
|
1503
|
+
{
|
|
1504
|
+
primary: "#a78bfa",
|
|
1505
|
+
accent: "#c084fc"
|
|
1506
|
+
},
|
|
1507
|
+
{
|
|
1508
|
+
primary: "#f472b6",
|
|
1509
|
+
accent: "#fb7185"
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
primary: "#fb923c",
|
|
1513
|
+
accent: "#facc15"
|
|
1514
|
+
},
|
|
1515
|
+
{
|
|
1516
|
+
primary: "#a3e635",
|
|
1517
|
+
accent: "#22c55e"
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
primary: "#22d3ee",
|
|
1521
|
+
accent: "#818cf8"
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
primary: "#f87171",
|
|
1525
|
+
accent: "#fb923c"
|
|
1526
|
+
},
|
|
1527
|
+
{
|
|
1528
|
+
primary: "#e879f9",
|
|
1529
|
+
accent: "#f472b6"
|
|
1530
|
+
},
|
|
1531
|
+
{
|
|
1532
|
+
primary: "#5eead4",
|
|
1533
|
+
accent: "#60a5fa"
|
|
1534
|
+
}
|
|
1535
|
+
];
|
|
1371
1536
|
function randomItem(items) {
|
|
1372
1537
|
return items[Math.floor(Math.random() * items.length)];
|
|
1373
1538
|
}
|
|
@@ -1380,26 +1545,36 @@ function modeColor(light, dark) {
|
|
|
1380
1545
|
dark
|
|
1381
1546
|
};
|
|
1382
1547
|
}
|
|
1548
|
+
function createRandomThemeSelection() {
|
|
1549
|
+
return {
|
|
1550
|
+
palette: randomItem(randomThemePalettes),
|
|
1551
|
+
darkAccents: randomItem(randomDarkAccentPairs),
|
|
1552
|
+
radius: randomItem(randomRadiusSets),
|
|
1553
|
+
maxWidth: randomItem(randomLayoutWidths)
|
|
1554
|
+
};
|
|
1555
|
+
}
|
|
1556
|
+
function createRandomThemeColors(selection) {
|
|
1557
|
+
const { palette, darkAccents } = selection;
|
|
1558
|
+
return {
|
|
1559
|
+
primary: modeColor(palette.primary, darkAccents.primary),
|
|
1560
|
+
accent: modeColor(palette.accent, darkAccents.accent),
|
|
1561
|
+
background: modeColor(palette.background, "#09090b"),
|
|
1562
|
+
foreground: modeColor(palette.foreground, "#f8fafc"),
|
|
1563
|
+
surface: modeColor(palette.surface, "#18181b"),
|
|
1564
|
+
muted: modeColor(palette.muted, "#a1a1aa"),
|
|
1565
|
+
border: modeColor(randomRgbMix(palette.foreground, palette.borderMix), "rgb(255 255 255 / 0.1)"),
|
|
1566
|
+
codeBackground: modeColor(randomRgbMix(palette.primary, palette.codeMix), "#18181b")
|
|
1567
|
+
};
|
|
1568
|
+
}
|
|
1383
1569
|
function createRandomTheme() {
|
|
1384
|
-
const
|
|
1385
|
-
const radius = randomItem(randomRadiusSets);
|
|
1386
|
-
const maxWidth = randomItem(randomLayoutWidths);
|
|
1570
|
+
const selection = createRandomThemeSelection();
|
|
1387
1571
|
return {
|
|
1388
1572
|
preset: "default",
|
|
1389
1573
|
tokens: {
|
|
1390
|
-
colors:
|
|
1391
|
-
|
|
1392
|
-
accent: modeColor(palette.accent, palette.primary),
|
|
1393
|
-
background: modeColor(palette.background, "#09090b"),
|
|
1394
|
-
foreground: modeColor(palette.foreground, "#f8fafc"),
|
|
1395
|
-
surface: modeColor(palette.surface, "#18181b"),
|
|
1396
|
-
muted: modeColor(palette.muted, "#a1a1aa"),
|
|
1397
|
-
border: modeColor(randomRgbMix(palette.foreground, palette.borderMix), "rgb(255 255 255 / 0.1)"),
|
|
1398
|
-
codeBackground: modeColor(randomRgbMix(palette.primary, palette.codeMix), "#18181b")
|
|
1399
|
-
},
|
|
1400
|
-
radius: { ...radius }
|
|
1574
|
+
colors: createRandomThemeColors(selection),
|
|
1575
|
+
radius: { ...selection.radius }
|
|
1401
1576
|
},
|
|
1402
|
-
layout: { maxWidth },
|
|
1577
|
+
layout: { maxWidth: selection.maxWidth },
|
|
1403
1578
|
editor: false
|
|
1404
1579
|
};
|
|
1405
1580
|
}
|
|
@@ -1951,6 +2126,35 @@ function ThemeRoot(props) {
|
|
|
1951
2126
|
});
|
|
1952
2127
|
}
|
|
1953
2128
|
//#endregion
|
|
2129
|
+
//#region source/runtime/ClarifyShell.tsx
|
|
2130
|
+
/**
|
|
2131
|
+
* Shared provider chain used by both client-side render and server-side
|
|
2132
|
+
* renderToHTML. Wraps AppShell with ConfigContext → OpenApisContext →
|
|
2133
|
+
* ThemeProvider → ThemeRoot.
|
|
2134
|
+
*
|
|
2135
|
+
* The outer Router (BrowserRouter / StaticRouter) is left to the caller
|
|
2136
|
+
* so each entry point can supply the correct router variant.
|
|
2137
|
+
*/
|
|
2138
|
+
function ClarifyShell(props) {
|
|
2139
|
+
const { config, routes, navigation, openApis, runtimeSlots, themeEditor = false } = props;
|
|
2140
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.ConfigContext.Provider, {
|
|
2141
|
+
value: config,
|
|
2142
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.OpenApisContext.Provider, {
|
|
2143
|
+
value: openApis,
|
|
2144
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PageActions.ThemeProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ThemeRoot, {
|
|
2145
|
+
theme: config.theme,
|
|
2146
|
+
themeEditor,
|
|
2147
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AppShell, {
|
|
2148
|
+
config,
|
|
2149
|
+
routes,
|
|
2150
|
+
navigation: navigation ?? [],
|
|
2151
|
+
runtimeSlots
|
|
2152
|
+
})
|
|
2153
|
+
}) })
|
|
2154
|
+
})
|
|
2155
|
+
});
|
|
2156
|
+
}
|
|
2157
|
+
//#endregion
|
|
1954
2158
|
Object.defineProperty(exports, "AppShell", {
|
|
1955
2159
|
enumerable: true,
|
|
1956
2160
|
get: function() {
|
|
@@ -1963,6 +2167,12 @@ Object.defineProperty(exports, "BuiltWithClarify", {
|
|
|
1963
2167
|
return BuiltWithClarify;
|
|
1964
2168
|
}
|
|
1965
2169
|
});
|
|
2170
|
+
Object.defineProperty(exports, "ClarifyShell", {
|
|
2171
|
+
enumerable: true,
|
|
2172
|
+
get: function() {
|
|
2173
|
+
return ClarifyShell;
|
|
2174
|
+
}
|
|
2175
|
+
});
|
|
1966
2176
|
Object.defineProperty(exports, "PageBanner", {
|
|
1967
2177
|
enumerable: true,
|
|
1968
2178
|
get: function() {
|
|
@@ -1975,16 +2185,28 @@ Object.defineProperty(exports, "PageFooter", {
|
|
|
1975
2185
|
return PageFooter;
|
|
1976
2186
|
}
|
|
1977
2187
|
});
|
|
1978
|
-
Object.defineProperty(exports, "
|
|
2188
|
+
Object.defineProperty(exports, "RuntimeSlot", {
|
|
1979
2189
|
enumerable: true,
|
|
1980
2190
|
get: function() {
|
|
1981
|
-
return
|
|
2191
|
+
return RuntimeSlot;
|
|
1982
2192
|
}
|
|
1983
2193
|
});
|
|
1984
|
-
Object.defineProperty(exports, "
|
|
2194
|
+
Object.defineProperty(exports, "RuntimeSlotsProvider", {
|
|
1985
2195
|
enumerable: true,
|
|
1986
2196
|
get: function() {
|
|
1987
|
-
return
|
|
2197
|
+
return RuntimeSlotsProvider;
|
|
2198
|
+
}
|
|
2199
|
+
});
|
|
2200
|
+
Object.defineProperty(exports, "SlotProvider", {
|
|
2201
|
+
enumerable: true,
|
|
2202
|
+
get: function() {
|
|
2203
|
+
return SlotProvider;
|
|
2204
|
+
}
|
|
2205
|
+
});
|
|
2206
|
+
Object.defineProperty(exports, "ThemeEditor", {
|
|
2207
|
+
enumerable: true,
|
|
2208
|
+
get: function() {
|
|
2209
|
+
return ThemeEditor;
|
|
1988
2210
|
}
|
|
1989
2211
|
});
|
|
1990
2212
|
Object.defineProperty(exports, "applyThemeVariables", {
|
|
@@ -2017,5 +2239,11 @@ Object.defineProperty(exports, "themeStorageKey", {
|
|
|
2017
2239
|
return themeStorageKey;
|
|
2018
2240
|
}
|
|
2019
2241
|
});
|
|
2242
|
+
Object.defineProperty(exports, "useSlot", {
|
|
2243
|
+
enumerable: true,
|
|
2244
|
+
get: function() {
|
|
2245
|
+
return useSlot;
|
|
2246
|
+
}
|
|
2247
|
+
});
|
|
2020
2248
|
|
|
2021
|
-
//# sourceMappingURL=
|
|
2249
|
+
//# sourceMappingURL=ClarifyShell-B74Fq4UU.cjs.map
|