@usecross/docs 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +51 -4
- package/dist/index.js +592 -145
- package/dist/index.js.map +1 -1
- package/dist/ssr.d.ts +1 -1
- package/dist/ssr.js +79 -1
- package/dist/ssr.js.map +1 -1
- package/dist/{types-CCdOzu28.d.ts → types-DlF8TX2Q.d.ts} +22 -1
- package/package.json +1 -1
- package/src/app.tsx +6 -3
- package/src/components/DocSetSelector.tsx +239 -0
- package/src/components/DocsLayout.tsx +35 -26
- package/src/components/HomePage.tsx +59 -36
- package/src/components/Sidebar.tsx +16 -6
- package/src/components/ThemeProvider.tsx +125 -0
- package/src/components/ThemeToggle.tsx +188 -0
- package/src/components/index.ts +3 -0
- package/src/index.ts +8 -0
- package/src/ssr.tsx +6 -1
- package/src/styles.css +64 -0
- package/src/types.ts +22 -0
package/dist/index.js
CHANGED
|
@@ -117,48 +117,473 @@ function InlineCode({ children }) {
|
|
|
117
117
|
return /* @__PURE__ */ jsx("code", { className: "rounded bg-slate-100 px-1.5 py-0.5 text-sm font-medium text-slate-800", children });
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
// src/components/DocSetSelector.tsx
|
|
121
|
+
import { useState as useState2, useRef, useEffect as useEffect2 } from "react";
|
|
122
|
+
import { router } from "@inertiajs/react";
|
|
123
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
124
|
+
var ChevronUpDownIcon = ({ className }) => /* @__PURE__ */ jsx2(
|
|
125
|
+
"svg",
|
|
126
|
+
{
|
|
127
|
+
className,
|
|
128
|
+
viewBox: "0 0 16 16",
|
|
129
|
+
fill: "none",
|
|
130
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
131
|
+
children: /* @__PURE__ */ jsx2(
|
|
132
|
+
"path",
|
|
133
|
+
{
|
|
134
|
+
d: "M5 6l3-3 3 3M5 10l3 3 3-3",
|
|
135
|
+
stroke: "currentColor",
|
|
136
|
+
strokeWidth: "1.5",
|
|
137
|
+
strokeLinecap: "round",
|
|
138
|
+
strokeLinejoin: "round"
|
|
139
|
+
}
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
var CheckIcon = ({ className }) => /* @__PURE__ */ jsx2(
|
|
144
|
+
"svg",
|
|
145
|
+
{
|
|
146
|
+
className,
|
|
147
|
+
viewBox: "0 0 16 16",
|
|
148
|
+
fill: "none",
|
|
149
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
150
|
+
children: /* @__PURE__ */ jsx2(
|
|
151
|
+
"path",
|
|
152
|
+
{
|
|
153
|
+
d: "M3.5 8.5l3 3 6-6.5",
|
|
154
|
+
stroke: "currentColor",
|
|
155
|
+
strokeWidth: "1.75",
|
|
156
|
+
strokeLinecap: "round",
|
|
157
|
+
strokeLinejoin: "round"
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
var PackageIcon = ({ className }) => /* @__PURE__ */ jsxs2(
|
|
163
|
+
"svg",
|
|
164
|
+
{
|
|
165
|
+
className,
|
|
166
|
+
viewBox: "0 0 20 20",
|
|
167
|
+
fill: "none",
|
|
168
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
169
|
+
children: [
|
|
170
|
+
/* @__PURE__ */ jsx2(
|
|
171
|
+
"path",
|
|
172
|
+
{
|
|
173
|
+
d: "M10 2L17 6v8l-7 4-7-4V6l7-4z",
|
|
174
|
+
stroke: "currentColor",
|
|
175
|
+
strokeWidth: "1.5",
|
|
176
|
+
strokeLinejoin: "round"
|
|
177
|
+
}
|
|
178
|
+
),
|
|
179
|
+
/* @__PURE__ */ jsx2(
|
|
180
|
+
"path",
|
|
181
|
+
{
|
|
182
|
+
d: "M10 10v8M10 10l7-4M10 10L3 6",
|
|
183
|
+
stroke: "currentColor",
|
|
184
|
+
strokeWidth: "1.5",
|
|
185
|
+
strokeLinecap: "round",
|
|
186
|
+
strokeLinejoin: "round"
|
|
187
|
+
}
|
|
188
|
+
)
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
function DocSetSelector({ docSets, currentDocSet, className }) {
|
|
193
|
+
const [isOpen, setIsOpen] = useState2(false);
|
|
194
|
+
const dropdownRef = useRef(null);
|
|
195
|
+
const current = docSets.find((ds) => ds.slug === currentDocSet) || docSets[0];
|
|
196
|
+
useEffect2(() => {
|
|
197
|
+
const handleClickOutside = (event) => {
|
|
198
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
199
|
+
setIsOpen(false);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
if (isOpen) {
|
|
203
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
204
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
205
|
+
}
|
|
206
|
+
}, [isOpen]);
|
|
207
|
+
useEffect2(() => {
|
|
208
|
+
const handleEscape = (event) => {
|
|
209
|
+
if (event.key === "Escape") setIsOpen(false);
|
|
210
|
+
};
|
|
211
|
+
if (isOpen) {
|
|
212
|
+
document.addEventListener("keydown", handleEscape);
|
|
213
|
+
return () => document.removeEventListener("keydown", handleEscape);
|
|
214
|
+
}
|
|
215
|
+
}, [isOpen]);
|
|
216
|
+
const handleSelect = (docSet) => {
|
|
217
|
+
setIsOpen(false);
|
|
218
|
+
if (docSet.slug !== currentDocSet) {
|
|
219
|
+
router.visit(`${docSet.prefix}/`);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
return /* @__PURE__ */ jsxs2("div", { className: cn("relative", className), ref: dropdownRef, children: [
|
|
223
|
+
/* @__PURE__ */ jsxs2(
|
|
224
|
+
"button",
|
|
225
|
+
{
|
|
226
|
+
onClick: () => setIsOpen(!isOpen),
|
|
227
|
+
className: cn(
|
|
228
|
+
"w-full flex items-center gap-2.5 px-3 py-2",
|
|
229
|
+
"bg-gray-100/80 dark:bg-white/5",
|
|
230
|
+
"border border-gray-200 dark:border-white/10",
|
|
231
|
+
"rounded-lg",
|
|
232
|
+
"hover:bg-gray-200/80 dark:hover:bg-white/10",
|
|
233
|
+
"transition-colors duration-150",
|
|
234
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/50"
|
|
235
|
+
),
|
|
236
|
+
"aria-label": "Select documentation",
|
|
237
|
+
"aria-expanded": isOpen,
|
|
238
|
+
"aria-haspopup": "listbox",
|
|
239
|
+
children: [
|
|
240
|
+
/* @__PURE__ */ jsx2("div", { className: "flex-shrink-0 w-5 h-5 flex items-center justify-center text-gray-600 dark:text-gray-400", children: current.icon ? /* @__PURE__ */ jsx2("span", { className: "text-base leading-none", children: current.icon }) : current.iconUrl ? /* @__PURE__ */ jsx2("img", { src: current.iconUrl, alt: "", className: "w-5 h-5" }) : /* @__PURE__ */ jsx2(PackageIcon, { className: "w-5 h-5" }) }),
|
|
241
|
+
/* @__PURE__ */ jsx2("span", { className: "flex-1 text-left text-sm font-medium text-gray-900 dark:text-white truncate", children: current.name }),
|
|
242
|
+
/* @__PURE__ */ jsx2(ChevronUpDownIcon, { className: "flex-shrink-0 w-4 h-4 text-gray-400 dark:text-gray-500" })
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
),
|
|
246
|
+
/* @__PURE__ */ jsx2(
|
|
247
|
+
"div",
|
|
248
|
+
{
|
|
249
|
+
className: cn(
|
|
250
|
+
"absolute left-0 right-0 mt-1.5",
|
|
251
|
+
"py-1",
|
|
252
|
+
"bg-white dark:bg-[#1a1a1a]",
|
|
253
|
+
"border border-gray-200 dark:border-white/10",
|
|
254
|
+
"rounded-lg",
|
|
255
|
+
"shadow-lg shadow-black/5 dark:shadow-black/30",
|
|
256
|
+
"z-50",
|
|
257
|
+
"transition-all duration-150 ease-out origin-top",
|
|
258
|
+
isOpen ? "opacity-100 scale-100" : "opacity-0 scale-95 pointer-events-none"
|
|
259
|
+
),
|
|
260
|
+
role: "listbox",
|
|
261
|
+
"aria-label": "Select documentation set",
|
|
262
|
+
children: docSets.map((docSet) => {
|
|
263
|
+
const isSelected = docSet.slug === currentDocSet;
|
|
264
|
+
return /* @__PURE__ */ jsxs2(
|
|
265
|
+
"button",
|
|
266
|
+
{
|
|
267
|
+
onClick: () => handleSelect(docSet),
|
|
268
|
+
className: cn(
|
|
269
|
+
"w-full flex items-center gap-2.5 px-3 py-2",
|
|
270
|
+
"transition-colors duration-100",
|
|
271
|
+
"focus:outline-none",
|
|
272
|
+
isSelected ? "bg-primary-50 dark:bg-primary-500/10" : "hover:bg-gray-50 dark:hover:bg-white/5"
|
|
273
|
+
),
|
|
274
|
+
role: "option",
|
|
275
|
+
"aria-selected": isSelected,
|
|
276
|
+
children: [
|
|
277
|
+
/* @__PURE__ */ jsx2("div", { className: cn(
|
|
278
|
+
"flex-shrink-0 w-5 h-5 flex items-center justify-center",
|
|
279
|
+
isSelected ? "text-primary-600 dark:text-primary-400" : "text-gray-500 dark:text-gray-400"
|
|
280
|
+
), children: docSet.icon ? /* @__PURE__ */ jsx2("span", { className: "text-base leading-none", children: docSet.icon }) : docSet.iconUrl ? /* @__PURE__ */ jsx2("img", { src: docSet.iconUrl, alt: "", className: "w-5 h-5" }) : /* @__PURE__ */ jsx2(PackageIcon, { className: "w-5 h-5" }) }),
|
|
281
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex-1 text-left min-w-0", children: [
|
|
282
|
+
/* @__PURE__ */ jsx2(
|
|
283
|
+
"div",
|
|
284
|
+
{
|
|
285
|
+
className: cn(
|
|
286
|
+
"text-sm font-medium truncate",
|
|
287
|
+
isSelected ? "text-primary-700 dark:text-primary-300" : "text-gray-900 dark:text-white"
|
|
288
|
+
),
|
|
289
|
+
children: docSet.name
|
|
290
|
+
}
|
|
291
|
+
),
|
|
292
|
+
docSet.description && /* @__PURE__ */ jsx2("div", { className: cn(
|
|
293
|
+
"text-xs truncate",
|
|
294
|
+
isSelected ? "text-primary-600/70 dark:text-primary-400/70" : "text-gray-500 dark:text-gray-400"
|
|
295
|
+
), children: docSet.description })
|
|
296
|
+
] }),
|
|
297
|
+
isSelected && /* @__PURE__ */ jsx2(CheckIcon, { className: "flex-shrink-0 w-4 h-4 text-primary-600 dark:text-primary-400" })
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
docSet.slug || "_root"
|
|
301
|
+
);
|
|
302
|
+
})
|
|
303
|
+
}
|
|
304
|
+
)
|
|
305
|
+
] });
|
|
306
|
+
}
|
|
307
|
+
|
|
120
308
|
// src/components/DocsLayout.tsx
|
|
121
309
|
import { Head, Link as Link2, usePage } from "@inertiajs/react";
|
|
122
|
-
import { useState as
|
|
310
|
+
import { useState as useState5 } from "react";
|
|
123
311
|
|
|
124
312
|
// src/components/Sidebar.tsx
|
|
125
313
|
import { Link } from "@inertiajs/react";
|
|
126
|
-
import { jsx as
|
|
127
|
-
function Sidebar({ nav, currentPath, className }) {
|
|
128
|
-
return /* @__PURE__ */
|
|
129
|
-
/* @__PURE__ */
|
|
130
|
-
/* @__PURE__ */
|
|
131
|
-
|
|
314
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
315
|
+
function Sidebar({ nav, currentPath, className, docSets, currentDocSet }) {
|
|
316
|
+
return /* @__PURE__ */ jsxs3("nav", { className: cn("space-y-6", className), children: [
|
|
317
|
+
docSets && docSets.length > 1 && /* @__PURE__ */ jsx3(DocSetSelector, { docSets, currentDocSet: currentDocSet ?? "", className: "mb-6" }),
|
|
318
|
+
/* @__PURE__ */ jsx3("div", { className: "space-y-8", children: nav.map((section) => /* @__PURE__ */ jsxs3("div", { children: [
|
|
319
|
+
/* @__PURE__ */ jsx3("h3", { className: "mb-3 text-xs font-mono uppercase tracking-widest text-gray-500 dark:text-gray-400", children: section.title }),
|
|
320
|
+
/* @__PURE__ */ jsx3("ul", { className: "space-y-1 border-l-2 border-gray-200 dark:border-gray-700", children: section.items.map((item) => /* @__PURE__ */ jsx3("li", { children: /* @__PURE__ */ jsx3(
|
|
321
|
+
Link,
|
|
322
|
+
{
|
|
323
|
+
href: item.href,
|
|
324
|
+
className: cn(
|
|
325
|
+
"block border-l-2 py-1.5 pl-4 text-sm transition-colors -ml-0.5",
|
|
326
|
+
currentPath === item.href ? "border-primary-500 text-gray-900 dark:text-white font-bold" : "border-transparent text-gray-600 dark:text-gray-300 hover:border-gray-900 dark:hover:border-white hover:text-gray-900 dark:hover:text-white"
|
|
327
|
+
),
|
|
328
|
+
children: item.title
|
|
329
|
+
}
|
|
330
|
+
) }, item.href)) })
|
|
331
|
+
] }, section.title)) })
|
|
332
|
+
] });
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// src/components/ThemeToggle.tsx
|
|
336
|
+
import { useState as useState4, useRef as useRef2, useEffect as useEffect4 } from "react";
|
|
337
|
+
|
|
338
|
+
// src/components/ThemeProvider.tsx
|
|
339
|
+
import { createContext, useContext, useEffect as useEffect3, useState as useState3 } from "react";
|
|
340
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
341
|
+
var ThemeContext = createContext(null);
|
|
342
|
+
var STORAGE_KEY = "cross-docs-theme";
|
|
343
|
+
function getSystemTheme() {
|
|
344
|
+
if (typeof window === "undefined") return "light";
|
|
345
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
346
|
+
}
|
|
347
|
+
function getStoredTheme() {
|
|
348
|
+
if (typeof window === "undefined") return null;
|
|
349
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
|
350
|
+
if (stored === "light" || stored === "dark" || stored === "system") {
|
|
351
|
+
return stored;
|
|
352
|
+
}
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
function ThemeProvider({
|
|
356
|
+
children,
|
|
357
|
+
defaultTheme: defaultTheme2 = "system",
|
|
358
|
+
forcedTheme
|
|
359
|
+
}) {
|
|
360
|
+
const [theme, setThemeState] = useState3(() => {
|
|
361
|
+
if (typeof window === "undefined") return defaultTheme2;
|
|
362
|
+
return getStoredTheme() ?? defaultTheme2;
|
|
363
|
+
});
|
|
364
|
+
const [resolvedTheme, setResolvedTheme] = useState3(() => {
|
|
365
|
+
if (forcedTheme) return forcedTheme;
|
|
366
|
+
if (typeof window === "undefined") return "light";
|
|
367
|
+
if (theme === "system") return getSystemTheme();
|
|
368
|
+
return theme;
|
|
369
|
+
});
|
|
370
|
+
useEffect3(() => {
|
|
371
|
+
if (forcedTheme) {
|
|
372
|
+
setResolvedTheme(forcedTheme);
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
const updateResolvedTheme = () => {
|
|
376
|
+
if (theme === "system") {
|
|
377
|
+
setResolvedTheme(getSystemTheme());
|
|
378
|
+
} else {
|
|
379
|
+
setResolvedTheme(theme);
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
updateResolvedTheme();
|
|
383
|
+
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
384
|
+
const handleChange = () => {
|
|
385
|
+
if (theme === "system") {
|
|
386
|
+
setResolvedTheme(getSystemTheme());
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
390
|
+
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
391
|
+
}, [theme, forcedTheme]);
|
|
392
|
+
useEffect3(() => {
|
|
393
|
+
const root = document.documentElement;
|
|
394
|
+
root.classList.remove("light", "dark");
|
|
395
|
+
root.classList.add(resolvedTheme);
|
|
396
|
+
}, [resolvedTheme]);
|
|
397
|
+
const setTheme = (newTheme) => {
|
|
398
|
+
setThemeState(newTheme);
|
|
399
|
+
localStorage.setItem(STORAGE_KEY, newTheme);
|
|
400
|
+
};
|
|
401
|
+
return /* @__PURE__ */ jsx4(ThemeContext.Provider, { value: { theme, resolvedTheme, setTheme }, children });
|
|
402
|
+
}
|
|
403
|
+
function useTheme() {
|
|
404
|
+
const context = useContext(ThemeContext);
|
|
405
|
+
if (!context) {
|
|
406
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
407
|
+
}
|
|
408
|
+
return context;
|
|
409
|
+
}
|
|
410
|
+
var themeInitScript = `
|
|
411
|
+
(function() {
|
|
412
|
+
try {
|
|
413
|
+
var stored = localStorage.getItem('${STORAGE_KEY}');
|
|
414
|
+
var theme = stored === 'light' || stored === 'dark' ? stored :
|
|
415
|
+
(stored === 'system' || !stored) && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
416
|
+
document.documentElement.classList.add(theme);
|
|
417
|
+
} catch (e) {}
|
|
418
|
+
})();
|
|
419
|
+
`.trim();
|
|
420
|
+
|
|
421
|
+
// src/components/ThemeToggle.tsx
|
|
422
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
423
|
+
var SunIcon = ({ className }) => /* @__PURE__ */ jsxs4("svg", { className, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
424
|
+
/* @__PURE__ */ jsx5("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "1.5" }),
|
|
425
|
+
/* @__PURE__ */ jsx5("path", { d: "M12 5V3M12 21v-2M5 12H3m18 0h-2M7.05 7.05 5.636 5.636m12.728 12.728L16.95 16.95M7.05 16.95l-1.414 1.414M18.364 5.636 16.95 7.05", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
|
|
426
|
+
] });
|
|
427
|
+
var MoonIcon = ({ className }) => /* @__PURE__ */ jsx5("svg", { className, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx5("path", { d: "M21.752 15.002A9.718 9.718 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
428
|
+
var MonitorIcon = ({ className }) => /* @__PURE__ */ jsxs4("svg", { className, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
429
|
+
/* @__PURE__ */ jsx5("rect", { x: "2", y: "3", width: "20", height: "14", rx: "2", stroke: "currentColor", strokeWidth: "1.5" }),
|
|
430
|
+
/* @__PURE__ */ jsx5("path", { d: "M8 21h8m-4-4v4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
|
|
431
|
+
] });
|
|
432
|
+
var themeOptions = [
|
|
433
|
+
{ value: "light", label: "Light", icon: SunIcon },
|
|
434
|
+
{ value: "dark", label: "Dark", icon: MoonIcon },
|
|
435
|
+
{ value: "system", label: "System", icon: MonitorIcon }
|
|
436
|
+
];
|
|
437
|
+
function ThemeToggle({ className, size = "md" }) {
|
|
438
|
+
const { theme, resolvedTheme, setTheme } = useTheme();
|
|
439
|
+
const [isOpen, setIsOpen] = useState4(false);
|
|
440
|
+
const dropdownRef = useRef2(null);
|
|
441
|
+
useEffect4(() => {
|
|
442
|
+
const handleClickOutside = (event) => {
|
|
443
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
444
|
+
setIsOpen(false);
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
if (isOpen) {
|
|
448
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
449
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
450
|
+
}
|
|
451
|
+
}, [isOpen]);
|
|
452
|
+
useEffect4(() => {
|
|
453
|
+
const handleEscape = (event) => {
|
|
454
|
+
if (event.key === "Escape") setIsOpen(false);
|
|
455
|
+
};
|
|
456
|
+
if (isOpen) {
|
|
457
|
+
document.addEventListener("keydown", handleEscape);
|
|
458
|
+
return () => document.removeEventListener("keydown", handleEscape);
|
|
459
|
+
}
|
|
460
|
+
}, [isOpen]);
|
|
461
|
+
const iconSizes = {
|
|
462
|
+
sm: "w-[18px] h-[18px]",
|
|
463
|
+
md: "w-5 h-5",
|
|
464
|
+
lg: "w-[22px] h-[22px]"
|
|
465
|
+
};
|
|
466
|
+
return /* @__PURE__ */ jsxs4("div", { className: "relative", ref: dropdownRef, children: [
|
|
467
|
+
/* @__PURE__ */ jsxs4(
|
|
468
|
+
"button",
|
|
132
469
|
{
|
|
133
|
-
|
|
470
|
+
onClick: () => setIsOpen(!isOpen),
|
|
134
471
|
className: cn(
|
|
135
|
-
"
|
|
136
|
-
|
|
472
|
+
"relative inline-flex items-center justify-center",
|
|
473
|
+
"rounded-full p-4",
|
|
474
|
+
"text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white",
|
|
475
|
+
"hover:bg-gray-100 dark:hover:bg-white/10",
|
|
476
|
+
"transition-all duration-200 ease-out",
|
|
477
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/50 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-[#0f0f0f]",
|
|
478
|
+
iconSizes[size],
|
|
479
|
+
className
|
|
137
480
|
),
|
|
138
|
-
|
|
481
|
+
"aria-label": "Toggle theme",
|
|
482
|
+
"aria-expanded": isOpen,
|
|
483
|
+
"aria-haspopup": "listbox",
|
|
484
|
+
children: [
|
|
485
|
+
/* @__PURE__ */ jsx5(
|
|
486
|
+
SunIcon,
|
|
487
|
+
{
|
|
488
|
+
className: cn(
|
|
489
|
+
iconSizes[size],
|
|
490
|
+
"absolute inset-0 m-auto transition-all duration-300 ease-out",
|
|
491
|
+
resolvedTheme === "light" ? "rotate-0 scale-100 opacity-100" : "rotate-90 scale-75 opacity-0"
|
|
492
|
+
)
|
|
493
|
+
}
|
|
494
|
+
),
|
|
495
|
+
/* @__PURE__ */ jsx5(
|
|
496
|
+
MoonIcon,
|
|
497
|
+
{
|
|
498
|
+
className: cn(
|
|
499
|
+
iconSizes[size],
|
|
500
|
+
"absolute inset-0 m-auto transition-all duration-300 ease-out",
|
|
501
|
+
resolvedTheme === "dark" ? "rotate-0 scale-100 opacity-100" : "-rotate-90 scale-75 opacity-0"
|
|
502
|
+
)
|
|
503
|
+
}
|
|
504
|
+
)
|
|
505
|
+
]
|
|
139
506
|
}
|
|
140
|
-
)
|
|
141
|
-
|
|
507
|
+
),
|
|
508
|
+
/* @__PURE__ */ jsx5(
|
|
509
|
+
"div",
|
|
510
|
+
{
|
|
511
|
+
className: cn(
|
|
512
|
+
"absolute right-0 mt-2 min-w-[140px]",
|
|
513
|
+
"p-1",
|
|
514
|
+
"bg-white dark:bg-[#171717]",
|
|
515
|
+
"border border-gray-200 dark:border-[#262626]",
|
|
516
|
+
"rounded-xl",
|
|
517
|
+
"shadow-lg shadow-black/5 dark:shadow-black/40",
|
|
518
|
+
"z-50",
|
|
519
|
+
"transition-all duration-200 ease-out origin-top-right",
|
|
520
|
+
isOpen ? "opacity-100 scale-100 translate-y-0" : "opacity-0 scale-95 -translate-y-1 pointer-events-none"
|
|
521
|
+
),
|
|
522
|
+
role: "listbox",
|
|
523
|
+
"aria-label": "Select theme",
|
|
524
|
+
children: themeOptions.map((option, index) => {
|
|
525
|
+
const Icon = option.icon;
|
|
526
|
+
const isSelected = theme === option.value;
|
|
527
|
+
return /* @__PURE__ */ jsxs4(
|
|
528
|
+
"button",
|
|
529
|
+
{
|
|
530
|
+
onClick: () => {
|
|
531
|
+
setTheme(option.value);
|
|
532
|
+
setIsOpen(false);
|
|
533
|
+
},
|
|
534
|
+
className: cn(
|
|
535
|
+
"w-full flex items-center gap-2.5 px-3 py-2",
|
|
536
|
+
"rounded-lg",
|
|
537
|
+
"text-[13px] font-medium",
|
|
538
|
+
"transition-all duration-150 ease-out",
|
|
539
|
+
"focus:outline-none",
|
|
540
|
+
isSelected ? "text-gray-900 dark:text-white bg-gray-100 dark:bg-[#262626]" : "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-[#1f1f1f]"
|
|
541
|
+
),
|
|
542
|
+
role: "option",
|
|
543
|
+
"aria-selected": isSelected,
|
|
544
|
+
style: {
|
|
545
|
+
animationDelay: isOpen ? `${index * 25}ms` : "0ms"
|
|
546
|
+
},
|
|
547
|
+
children: [
|
|
548
|
+
/* @__PURE__ */ jsx5(Icon, { className: cn(
|
|
549
|
+
"w-4 h-4 flex-shrink-0",
|
|
550
|
+
"transition-transform duration-150",
|
|
551
|
+
isSelected ? "scale-110" : "scale-100"
|
|
552
|
+
) }),
|
|
553
|
+
/* @__PURE__ */ jsx5("span", { className: "flex-1 text-left", children: option.label }),
|
|
554
|
+
/* @__PURE__ */ jsx5("div", { className: cn(
|
|
555
|
+
"w-1.5 h-1.5 rounded-full",
|
|
556
|
+
"transition-all duration-200",
|
|
557
|
+
isSelected ? "bg-primary-500 scale-100 opacity-100" : "bg-transparent scale-0 opacity-0"
|
|
558
|
+
) })
|
|
559
|
+
]
|
|
560
|
+
},
|
|
561
|
+
option.value
|
|
562
|
+
);
|
|
563
|
+
})
|
|
564
|
+
}
|
|
565
|
+
)
|
|
566
|
+
] });
|
|
142
567
|
}
|
|
143
568
|
|
|
144
569
|
// src/components/DocsLayout.tsx
|
|
145
|
-
import { jsx as
|
|
570
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
146
571
|
function MobileMenuButton({ onClick, isOpen }) {
|
|
147
|
-
return /* @__PURE__ */
|
|
572
|
+
return /* @__PURE__ */ jsxs5(
|
|
148
573
|
"button",
|
|
149
574
|
{
|
|
150
575
|
onClick,
|
|
151
|
-
className: "inline-flex items-center justify-center p-2 -ml-2 text-
|
|
576
|
+
className: "inline-flex items-center justify-center p-2 -ml-2 text-gray-700 hover:text-primary-500 dark:text-gray-300 dark:hover:text-primary-400 lg:hidden transition-colors",
|
|
152
577
|
"aria-expanded": isOpen,
|
|
153
578
|
children: [
|
|
154
|
-
/* @__PURE__ */
|
|
155
|
-
isOpen ? /* @__PURE__ */
|
|
579
|
+
/* @__PURE__ */ jsx6("span", { className: "sr-only", children: isOpen ? "Close menu" : "Open menu" }),
|
|
580
|
+
isOpen ? /* @__PURE__ */ jsx6("svg", { className: "h-6 w-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx6("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) : /* @__PURE__ */ jsx6("svg", { className: "h-6 w-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx6("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }) })
|
|
156
581
|
]
|
|
157
582
|
}
|
|
158
583
|
);
|
|
159
584
|
}
|
|
160
585
|
function GitHubIcon() {
|
|
161
|
-
return /* @__PURE__ */
|
|
586
|
+
return /* @__PURE__ */ jsx6("svg", { className: "w-6 h-6", fill: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx6(
|
|
162
587
|
"path",
|
|
163
588
|
{
|
|
164
589
|
fillRule: "evenodd",
|
|
@@ -180,63 +605,67 @@ function DocsLayout({
|
|
|
180
605
|
footer
|
|
181
606
|
}) {
|
|
182
607
|
const sharedProps = usePage().props;
|
|
183
|
-
const { nav, currentPath } = sharedProps;
|
|
184
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
608
|
+
const { nav, currentPath, docSets, currentDocSet } = sharedProps;
|
|
609
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState5(false);
|
|
610
|
+
const { resolvedTheme } = useTheme();
|
|
185
611
|
const logoUrl = propLogoUrl ?? sharedProps.logoUrl;
|
|
186
612
|
const logoInvertedUrl = propLogoInvertedUrl ?? sharedProps.logoInvertedUrl;
|
|
187
613
|
const githubUrl = propGithubUrl ?? sharedProps.githubUrl;
|
|
188
614
|
const navLinks = propNavLinks ?? sharedProps.navLinks ?? [];
|
|
189
|
-
const headerLogo = logoInverted || logo || (logoInvertedUrl ? /* @__PURE__ */
|
|
615
|
+
const headerLogo = logoInverted || logo || (logoInvertedUrl ? /* @__PURE__ */ jsx6("img", { src: logoInvertedUrl, alt: "Logo", className: "h-8" }) : logoUrl ? /* @__PURE__ */ jsx6("img", { src: logoUrl, alt: "Logo", className: "h-8" }) : null);
|
|
190
616
|
const footerLogoUrl = sharedProps.footerLogoUrl || logoUrl;
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
617
|
+
const footerLogoInvertedUrl = sharedProps.footerLogoInvertedUrl || logoInvertedUrl;
|
|
618
|
+
const currentFooterLogoUrl = resolvedTheme === "dark" ? footerLogoInvertedUrl || footerLogoUrl : footerLogoUrl;
|
|
619
|
+
const footerLogo = logo || (currentFooterLogoUrl ? /* @__PURE__ */ jsx6("img", { src: currentFooterLogoUrl, alt: "Logo", className: "h-6" }) : null);
|
|
620
|
+
return /* @__PURE__ */ jsxs5("div", { className: "min-h-screen bg-white dark:bg-[#0f0f0f] flex flex-col transition-colors duration-200", children: [
|
|
621
|
+
/* @__PURE__ */ jsx6(Head, { title }),
|
|
622
|
+
/* @__PURE__ */ jsx6("nav", { className: "fixed w-full z-50 bg-white/95 dark:bg-[#0f0f0f]/95 backdrop-blur-sm border-b border-gray-200 dark:border-gray-800 transition-colors", children: /* @__PURE__ */ jsx6("div", { className: "px-4 lg:px-10", children: /* @__PURE__ */ jsxs5("div", { className: "flex justify-between h-16 items-center", children: [
|
|
623
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-2", children: [
|
|
624
|
+
/* @__PURE__ */ jsx6(MobileMenuButton, { onClick: () => setMobileMenuOpen(!mobileMenuOpen), isOpen: mobileMenuOpen }),
|
|
625
|
+
headerLogo ? /* @__PURE__ */ jsx6(Link2, { href: "/", className: "flex items-center", children: headerLogo }) : /* @__PURE__ */ jsx6(Link2, { href: "/", className: "font-bold text-lg text-gray-900 dark:text-white", children: "Docs" })
|
|
198
626
|
] }),
|
|
199
|
-
/* @__PURE__ */
|
|
200
|
-
|
|
627
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-6", children: [
|
|
628
|
+
/* @__PURE__ */ jsx6("div", { className: "-mr-2", children: /* @__PURE__ */ jsx6(ThemeToggle, { size: "sm" }) }),
|
|
629
|
+
navLinks.map((link) => /* @__PURE__ */ jsx6(
|
|
201
630
|
Link2,
|
|
202
631
|
{
|
|
203
632
|
href: link.href,
|
|
204
|
-
className: "text-
|
|
633
|
+
className: "hidden sm:block text-gray-700 dark:text-gray-300 font-medium hover:text-primary-600 dark:hover:text-primary-400 transition-colors",
|
|
205
634
|
children: link.label
|
|
206
635
|
},
|
|
207
636
|
link.href
|
|
208
637
|
)),
|
|
209
|
-
githubUrl && /* @__PURE__ */
|
|
638
|
+
githubUrl && /* @__PURE__ */ jsx6(
|
|
210
639
|
"a",
|
|
211
640
|
{
|
|
212
641
|
href: githubUrl,
|
|
213
642
|
target: "_blank",
|
|
214
643
|
rel: "noopener noreferrer",
|
|
215
|
-
className: "text-
|
|
216
|
-
children: /* @__PURE__ */
|
|
644
|
+
className: "text-gray-700 dark:text-gray-300 hover:text-primary-600 dark:hover:text-primary-400 transition-colors",
|
|
645
|
+
children: /* @__PURE__ */ jsx6(GitHubIcon, {})
|
|
217
646
|
}
|
|
218
647
|
)
|
|
219
648
|
] })
|
|
220
649
|
] }) }) }),
|
|
221
|
-
mobileMenuOpen && /* @__PURE__ */
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
-
/* @__PURE__ */
|
|
650
|
+
mobileMenuOpen && /* @__PURE__ */ jsxs5("div", { className: "fixed inset-0 z-40 lg:hidden", children: [
|
|
651
|
+
/* @__PURE__ */ jsx6("div", { className: "fixed inset-0 bg-black/50 dark:bg-black/70", onClick: () => setMobileMenuOpen(false) }),
|
|
652
|
+
/* @__PURE__ */ jsx6("div", { className: "fixed inset-y-0 left-0 w-64 overflow-y-auto bg-white dark:bg-[#0f0f0f] px-4 py-6 pt-20 border-r border-gray-200 dark:border-gray-800 transition-colors", children: /* @__PURE__ */ jsx6(Sidebar, { nav, currentPath, docSets, currentDocSet }) })
|
|
224
653
|
] }),
|
|
225
|
-
/* @__PURE__ */
|
|
226
|
-
/* @__PURE__ */
|
|
227
|
-
/* @__PURE__ */
|
|
654
|
+
/* @__PURE__ */ jsx6("div", { className: "bg-white dark:bg-[#0f0f0f] pt-16 w-full flex-1 transition-colors", children: /* @__PURE__ */ jsxs5("div", { className: "flex", children: [
|
|
655
|
+
/* @__PURE__ */ jsx6("aside", { className: "hidden lg:block w-72 flex-shrink-0 border-r border-gray-200 dark:border-gray-800 min-h-[calc(100vh-4rem)] transition-colors", children: /* @__PURE__ */ jsx6("nav", { className: "sticky top-16 px-4 py-6 max-h-[calc(100vh-4rem)] overflow-y-auto", children: /* @__PURE__ */ jsx6(Sidebar, { nav, currentPath, docSets, currentDocSet }) }) }),
|
|
656
|
+
/* @__PURE__ */ jsx6("main", { className: "flex-1 min-w-0 p-4 lg:px-10 lg:py-6", children: /* @__PURE__ */ jsx6("article", { className: "prose prose-lg max-w-3xl prose-headings:font-bold prose-headings:tracking-tight prose-h1:text-3xl prose-h1:mb-4 prose-h2:text-2xl prose-h2:mt-10 first:prose-h2:mt-0 prose-h3:text-xl prose-a:text-primary-600 dark:prose-a:text-primary-400 prose-a:no-underline hover:prose-a:underline prose-code:bg-gray-100 dark:prose-code:bg-gray-800 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-code:before:content-none prose-code:after:content-none dark:prose-headings:text-white dark:prose-strong:text-white dark:text-gray-300", children }) })
|
|
228
657
|
] }) }),
|
|
229
|
-
footer || /* @__PURE__ */
|
|
230
|
-
footerLogo && /* @__PURE__ */
|
|
231
|
-
/* @__PURE__ */
|
|
232
|
-
navLinks.map((link) => /* @__PURE__ */
|
|
233
|
-
githubUrl && /* @__PURE__ */
|
|
658
|
+
footer || /* @__PURE__ */ jsx6("footer", { className: "border-t border-gray-200 dark:border-gray-800 py-8 bg-white dark:bg-[#0f0f0f] transition-colors", children: /* @__PURE__ */ jsxs5("div", { className: "px-4 lg:px-10 flex flex-col md:flex-row justify-between items-center gap-6", children: [
|
|
659
|
+
footerLogo && /* @__PURE__ */ jsx6(Link2, { href: "/", children: footerLogo }),
|
|
660
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex gap-8 text-sm text-gray-600 dark:text-gray-400", children: [
|
|
661
|
+
navLinks.map((link) => /* @__PURE__ */ jsx6(Link2, { href: link.href, className: "hover:text-black dark:hover:text-white transition-colors", children: link.label }, link.href)),
|
|
662
|
+
githubUrl && /* @__PURE__ */ jsx6(
|
|
234
663
|
"a",
|
|
235
664
|
{
|
|
236
665
|
href: githubUrl,
|
|
237
666
|
target: "_blank",
|
|
238
667
|
rel: "noopener noreferrer",
|
|
239
|
-
className: "hover:text-black transition-colors",
|
|
668
|
+
className: "hover:text-black dark:hover:text-white transition-colors",
|
|
240
669
|
children: "GitHub"
|
|
241
670
|
}
|
|
242
671
|
)
|
|
@@ -249,7 +678,7 @@ function DocsLayout({
|
|
|
249
678
|
import ReactMarkdown from "react-markdown";
|
|
250
679
|
import remarkGfm from "remark-gfm";
|
|
251
680
|
import rehypeRaw from "rehype-raw";
|
|
252
|
-
import { Fragment, jsx as
|
|
681
|
+
import { Fragment, jsx as jsx7 } from "react/jsx-runtime";
|
|
253
682
|
function Markdown({ content, components }) {
|
|
254
683
|
const lowercaseComponents = components ? Object.entries(components).reduce(
|
|
255
684
|
(acc, [name, Component]) => {
|
|
@@ -258,7 +687,7 @@ function Markdown({ content, components }) {
|
|
|
258
687
|
},
|
|
259
688
|
{}
|
|
260
689
|
) : {};
|
|
261
|
-
return /* @__PURE__ */
|
|
690
|
+
return /* @__PURE__ */ jsx7(
|
|
262
691
|
ReactMarkdown,
|
|
263
692
|
{
|
|
264
693
|
remarkPlugins: [remarkGfm],
|
|
@@ -267,14 +696,14 @@ function Markdown({ content, components }) {
|
|
|
267
696
|
...lowercaseComponents,
|
|
268
697
|
// Override pre to avoid double wrapping with CodeBlock
|
|
269
698
|
pre({ children }) {
|
|
270
|
-
return /* @__PURE__ */
|
|
699
|
+
return /* @__PURE__ */ jsx7(Fragment, { children });
|
|
271
700
|
},
|
|
272
701
|
// Custom code block rendering with syntax highlighting
|
|
273
702
|
code({ node, className, children, ...props }) {
|
|
274
703
|
const match = /language-(\w+)/.exec(className || "");
|
|
275
704
|
const isInline = !match && !className;
|
|
276
705
|
if (isInline) {
|
|
277
|
-
return /* @__PURE__ */
|
|
706
|
+
return /* @__PURE__ */ jsx7(
|
|
278
707
|
"code",
|
|
279
708
|
{
|
|
280
709
|
className: "rounded bg-gray-100 px-1.5 py-0.5 text-sm font-medium text-gray-800 dark:bg-gray-800 dark:text-gray-200",
|
|
@@ -287,7 +716,7 @@ function Markdown({ content, components }) {
|
|
|
287
716
|
const titleMatch = /title="([^"]+)"/.exec(meta);
|
|
288
717
|
const filename = titleMatch ? titleMatch[1] : void 0;
|
|
289
718
|
const showLineNumbers = meta.includes("showLineNumbers");
|
|
290
|
-
return /* @__PURE__ */
|
|
719
|
+
return /* @__PURE__ */ jsx7(
|
|
291
720
|
CodeBlock,
|
|
292
721
|
{
|
|
293
722
|
code: String(children).replace(/\n$/, ""),
|
|
@@ -300,7 +729,7 @@ function Markdown({ content, components }) {
|
|
|
300
729
|
// Custom link styling
|
|
301
730
|
a({ href, children }) {
|
|
302
731
|
const isExternal = href?.startsWith("http");
|
|
303
|
-
return /* @__PURE__ */
|
|
732
|
+
return /* @__PURE__ */ jsx7(
|
|
304
733
|
"a",
|
|
305
734
|
{
|
|
306
735
|
href,
|
|
@@ -312,13 +741,13 @@ function Markdown({ content, components }) {
|
|
|
312
741
|
},
|
|
313
742
|
// Tables
|
|
314
743
|
table({ children }) {
|
|
315
|
-
return /* @__PURE__ */
|
|
744
|
+
return /* @__PURE__ */ jsx7("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx7("table", { className: "w-full text-left text-sm", children }) });
|
|
316
745
|
},
|
|
317
746
|
th({ children }) {
|
|
318
|
-
return /* @__PURE__ */
|
|
747
|
+
return /* @__PURE__ */ jsx7("th", { className: "border-b border-gray-200 bg-gray-50 px-4 py-2 font-semibold dark:border-gray-700 dark:bg-gray-800", children });
|
|
319
748
|
},
|
|
320
749
|
td({ children }) {
|
|
321
|
-
return /* @__PURE__ */
|
|
750
|
+
return /* @__PURE__ */ jsx7("td", { className: "border-b border-gray-200 px-4 py-2 dark:border-gray-700", children });
|
|
322
751
|
}
|
|
323
752
|
},
|
|
324
753
|
children: content
|
|
@@ -327,32 +756,32 @@ function Markdown({ content, components }) {
|
|
|
327
756
|
}
|
|
328
757
|
|
|
329
758
|
// src/context/ComponentsContext.tsx
|
|
330
|
-
import { createContext, useContext } from "react";
|
|
331
|
-
import { jsx as
|
|
332
|
-
var ComponentsContext =
|
|
759
|
+
import { createContext as createContext2, useContext as useContext2 } from "react";
|
|
760
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
761
|
+
var ComponentsContext = createContext2({});
|
|
333
762
|
function ComponentsProvider({
|
|
334
763
|
children,
|
|
335
764
|
components
|
|
336
765
|
}) {
|
|
337
|
-
return /* @__PURE__ */
|
|
766
|
+
return /* @__PURE__ */ jsx8(ComponentsContext.Provider, { value: { components }, children });
|
|
338
767
|
}
|
|
339
768
|
function useComponents() {
|
|
340
|
-
return
|
|
769
|
+
return useContext2(ComponentsContext);
|
|
341
770
|
}
|
|
342
771
|
|
|
343
772
|
// src/components/DocsPage.tsx
|
|
344
|
-
import { jsx as
|
|
773
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
345
774
|
function DocsPage({ content, ...layoutProps }) {
|
|
346
775
|
const { components } = useComponents();
|
|
347
|
-
return /* @__PURE__ */
|
|
776
|
+
return /* @__PURE__ */ jsx9(DocsLayout, { title: content?.title ?? "", description: content?.description, ...layoutProps, children: /* @__PURE__ */ jsx9(Markdown, { content: content?.body ?? "", components }) });
|
|
348
777
|
}
|
|
349
778
|
|
|
350
779
|
// src/components/EmojiConfetti.tsx
|
|
351
|
-
import { useState as
|
|
352
|
-
import { jsx as
|
|
780
|
+
import { useState as useState6, useCallback } from "react";
|
|
781
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
353
782
|
function EmojiConfetti({ children, emoji }) {
|
|
354
|
-
const [particles, setParticles] =
|
|
355
|
-
const [isActive, setIsActive] =
|
|
783
|
+
const [particles, setParticles] = useState6([]);
|
|
784
|
+
const [isActive, setIsActive] = useState6(false);
|
|
356
785
|
const triggerBurst = useCallback(() => {
|
|
357
786
|
if (isActive) return;
|
|
358
787
|
setIsActive(true);
|
|
@@ -379,17 +808,17 @@ function EmojiConfetti({ children, emoji }) {
|
|
|
379
808
|
setIsActive(false);
|
|
380
809
|
}, 1e3);
|
|
381
810
|
}, [isActive]);
|
|
382
|
-
return /* @__PURE__ */
|
|
811
|
+
return /* @__PURE__ */ jsxs6(
|
|
383
812
|
"span",
|
|
384
813
|
{
|
|
385
814
|
className: "relative inline-block",
|
|
386
815
|
onMouseEnter: triggerBurst,
|
|
387
816
|
children: [
|
|
388
817
|
children,
|
|
389
|
-
/* @__PURE__ */
|
|
818
|
+
/* @__PURE__ */ jsx10("span", { className: "absolute inset-0 pointer-events-none overflow-visible", children: particles.map((p) => {
|
|
390
819
|
const endX = p.x + Math.cos(p.angle) * p.velocity;
|
|
391
820
|
const endY = p.y + Math.sin(p.angle) * p.velocity;
|
|
392
|
-
return /* @__PURE__ */
|
|
821
|
+
return /* @__PURE__ */ jsx10(
|
|
393
822
|
"span",
|
|
394
823
|
{
|
|
395
824
|
className: "absolute",
|
|
@@ -415,39 +844,39 @@ function EmojiConfetti({ children, emoji }) {
|
|
|
415
844
|
|
|
416
845
|
// src/components/HomePage.tsx
|
|
417
846
|
import { Head as Head2, Link as Link3 } from "@inertiajs/react";
|
|
418
|
-
import { createContext as
|
|
419
|
-
import { Fragment as Fragment2, jsx as
|
|
420
|
-
var HomePageContext =
|
|
847
|
+
import { createContext as createContext3, useContext as useContext3, useState as useState7 } from "react";
|
|
848
|
+
import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
849
|
+
var HomePageContext = createContext3(null);
|
|
421
850
|
function useHomePage() {
|
|
422
|
-
const context =
|
|
851
|
+
const context = useContext3(HomePageContext);
|
|
423
852
|
if (!context) {
|
|
424
853
|
throw new Error("HomePage sub-components must be used within <HomePage>");
|
|
425
854
|
}
|
|
426
855
|
return context;
|
|
427
856
|
}
|
|
428
857
|
function InstallCommand({ command }) {
|
|
429
|
-
const [copied, setCopied] =
|
|
858
|
+
const [copied, setCopied] = useState7(false);
|
|
430
859
|
const copyToClipboard = async () => {
|
|
431
860
|
await navigator.clipboard.writeText(command);
|
|
432
861
|
setCopied(true);
|
|
433
862
|
setTimeout(() => setCopied(false), 2e3);
|
|
434
863
|
};
|
|
435
|
-
return /* @__PURE__ */
|
|
864
|
+
return /* @__PURE__ */ jsxs7(
|
|
436
865
|
"button",
|
|
437
866
|
{
|
|
438
867
|
onClick: copyToClipboard,
|
|
439
|
-
className: "group relative flex items-center bg-
|
|
868
|
+
className: "group relative flex items-center bg-gray-900 dark:bg-white border border-gray-900 dark:border-white px-4 h-14 font-mono text-sm text-white dark:text-gray-900 hover:bg-white dark:hover:bg-gray-900 hover:text-gray-900 dark:hover:text-white transition-colors cursor-pointer",
|
|
440
869
|
children: [
|
|
441
|
-
/* @__PURE__ */
|
|
442
|
-
/* @__PURE__ */
|
|
443
|
-
/* @__PURE__ */
|
|
870
|
+
/* @__PURE__ */ jsx11("span", { className: "text-primary-500 dark:text-primary-600 mr-2", children: "$" }),
|
|
871
|
+
/* @__PURE__ */ jsx11("span", { children: command }),
|
|
872
|
+
/* @__PURE__ */ jsx11(
|
|
444
873
|
"svg",
|
|
445
874
|
{
|
|
446
875
|
className: `ml-4 w-4 h-4 transition ${copied ? "text-green-400" : "opacity-50 group-hover:opacity-100"}`,
|
|
447
876
|
fill: "none",
|
|
448
877
|
stroke: "currentColor",
|
|
449
878
|
viewBox: "0 0 24 24",
|
|
450
|
-
children: /* @__PURE__ */
|
|
879
|
+
children: /* @__PURE__ */ jsx11(
|
|
451
880
|
"path",
|
|
452
881
|
{
|
|
453
882
|
strokeLinecap: "round",
|
|
@@ -458,10 +887,10 @@ function InstallCommand({ command }) {
|
|
|
458
887
|
)
|
|
459
888
|
}
|
|
460
889
|
),
|
|
461
|
-
/* @__PURE__ */
|
|
890
|
+
/* @__PURE__ */ jsx11(
|
|
462
891
|
"span",
|
|
463
892
|
{
|
|
464
|
-
className: `absolute -top-8 left-1/2 -translate-x-1/2 bg-
|
|
893
|
+
className: `absolute -top-8 left-1/2 -translate-x-1/2 bg-gray-900 dark:bg-white text-white dark:text-gray-900 text-xs py-1 px-2 rounded transition-opacity duration-300 whitespace-nowrap ${copied ? "opacity-100" : "opacity-0"}`,
|
|
465
894
|
children: "Copied!"
|
|
466
895
|
}
|
|
467
896
|
)
|
|
@@ -470,7 +899,7 @@ function InstallCommand({ command }) {
|
|
|
470
899
|
);
|
|
471
900
|
}
|
|
472
901
|
function GitHubIcon2() {
|
|
473
|
-
return /* @__PURE__ */
|
|
902
|
+
return /* @__PURE__ */ jsx11("svg", { className: "w-6 h-6", fill: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx11(
|
|
474
903
|
"path",
|
|
475
904
|
{
|
|
476
905
|
fillRule: "evenodd",
|
|
@@ -482,32 +911,33 @@ function GitHubIcon2() {
|
|
|
482
911
|
function DefaultLogo() {
|
|
483
912
|
const { title, logoUrl } = useHomePage();
|
|
484
913
|
if (logoUrl) {
|
|
485
|
-
return /* @__PURE__ */
|
|
914
|
+
return /* @__PURE__ */ jsx11(Link3, { href: "/", className: "flex items-center", children: /* @__PURE__ */ jsx11("img", { src: logoUrl, alt: title, className: "h-8" }) });
|
|
486
915
|
}
|
|
487
|
-
return /* @__PURE__ */
|
|
916
|
+
return /* @__PURE__ */ jsx11(Link3, { href: "/", className: "font-bold text-lg text-gray-900 dark:text-white", children: title });
|
|
488
917
|
}
|
|
489
918
|
function HomeHeader({ renderLogo } = {}) {
|
|
490
919
|
const { navLinks, githubUrl } = useHomePage();
|
|
491
|
-
return /* @__PURE__ */
|
|
492
|
-
renderLogo ? renderLogo() : /* @__PURE__ */
|
|
493
|
-
/* @__PURE__ */
|
|
494
|
-
|
|
920
|
+
return /* @__PURE__ */ jsx11("nav", { className: "fixed w-full z-50 bg-white/95 dark:bg-[#0f0f0f]/95 backdrop-blur-sm border-b border-gray-200 dark:border-gray-800 transition-colors", children: /* @__PURE__ */ jsx11("div", { className: "px-4 lg:px-10", children: /* @__PURE__ */ jsxs7("div", { className: "flex justify-between h-16 items-center", children: [
|
|
921
|
+
renderLogo ? renderLogo() : /* @__PURE__ */ jsx11(DefaultLogo, {}),
|
|
922
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-6", children: [
|
|
923
|
+
/* @__PURE__ */ jsx11("div", { className: "-mr-2", children: /* @__PURE__ */ jsx11(ThemeToggle, { size: "sm" }) }),
|
|
924
|
+
navLinks.map((link) => /* @__PURE__ */ jsx11(
|
|
495
925
|
Link3,
|
|
496
926
|
{
|
|
497
927
|
href: link.href,
|
|
498
|
-
className: "text-
|
|
928
|
+
className: "hidden sm:block text-gray-700 dark:text-gray-300 font-medium hover:text-primary-600 dark:hover:text-primary-400 transition-colors",
|
|
499
929
|
children: link.label
|
|
500
930
|
},
|
|
501
931
|
link.href
|
|
502
932
|
)),
|
|
503
|
-
githubUrl && /* @__PURE__ */
|
|
933
|
+
githubUrl && /* @__PURE__ */ jsx11(
|
|
504
934
|
"a",
|
|
505
935
|
{
|
|
506
936
|
href: githubUrl,
|
|
507
937
|
target: "_blank",
|
|
508
938
|
rel: "noopener noreferrer",
|
|
509
|
-
className: "text-
|
|
510
|
-
children: /* @__PURE__ */
|
|
939
|
+
className: "text-gray-700 dark:text-gray-300 hover:text-primary-600 dark:hover:text-primary-400 transition-colors",
|
|
940
|
+
children: /* @__PURE__ */ jsx11(GitHubIcon2, {})
|
|
511
941
|
}
|
|
512
942
|
)
|
|
513
943
|
] })
|
|
@@ -515,39 +945,39 @@ function HomeHeader({ renderLogo } = {}) {
|
|
|
515
945
|
}
|
|
516
946
|
function HomeHero() {
|
|
517
947
|
const { title, tagline, description, ctaText, ctaHref, installCommand, heroLogoUrl } = useHomePage();
|
|
518
|
-
return /* @__PURE__ */
|
|
519
|
-
/* @__PURE__ */
|
|
520
|
-
heroLogoUrl ? /* @__PURE__ */
|
|
948
|
+
return /* @__PURE__ */ jsx11("section", { className: "pt-16", children: /* @__PURE__ */ jsx11("div", { className: "px-4 lg:px-10 py-16 lg:py-24", children: /* @__PURE__ */ jsxs7("div", { className: "max-w-4xl", children: [
|
|
949
|
+
/* @__PURE__ */ jsx11("div", { className: "mb-4 text-sm font-mono uppercase tracking-widest text-gray-500 dark:text-gray-400", children: tagline }),
|
|
950
|
+
heroLogoUrl ? /* @__PURE__ */ jsx11("h1", { className: "mb-6 lg:mb-8", children: /* @__PURE__ */ jsx11(
|
|
521
951
|
"img",
|
|
522
952
|
{
|
|
523
953
|
src: heroLogoUrl,
|
|
524
954
|
alt: title,
|
|
525
955
|
className: "h-auto w-auto max-w-[580px]"
|
|
526
956
|
}
|
|
527
|
-
) }) : /* @__PURE__ */
|
|
528
|
-
/* @__PURE__ */
|
|
529
|
-
/* @__PURE__ */
|
|
530
|
-
/* @__PURE__ */
|
|
957
|
+
) }) : /* @__PURE__ */ jsx11("h1", { className: "text-5xl lg:text-7xl font-bold tracking-tight mb-6 text-gray-900 dark:text-white", children: title }),
|
|
958
|
+
/* @__PURE__ */ jsx11("p", { className: "text-xl lg:text-2xl text-gray-600 dark:text-gray-300 max-w-2xl leading-relaxed mb-8", children: description }),
|
|
959
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex flex-col sm:flex-row gap-3", children: [
|
|
960
|
+
/* @__PURE__ */ jsx11(
|
|
531
961
|
Link3,
|
|
532
962
|
{
|
|
533
963
|
href: ctaHref,
|
|
534
|
-
className: "inline-flex items-center justify-center px-8 h-14 bg-
|
|
964
|
+
className: "inline-flex items-center justify-center px-8 h-14 bg-gray-900 dark:bg-white text-white dark:text-gray-900 font-bold text-lg hover:bg-primary-500 dark:hover:bg-primary-500 dark:hover:text-white transition-colors border border-gray-900 dark:border-white hover:border-primary-500 dark:hover:border-primary-500",
|
|
535
965
|
children: ctaText
|
|
536
966
|
}
|
|
537
967
|
),
|
|
538
|
-
installCommand && /* @__PURE__ */
|
|
968
|
+
installCommand && /* @__PURE__ */ jsx11(InstallCommand, { command: installCommand })
|
|
539
969
|
] })
|
|
540
970
|
] }) }) });
|
|
541
971
|
}
|
|
542
972
|
function HomeFeatureItem({ feature, index, totalFeatures }) {
|
|
543
|
-
return /* @__PURE__ */
|
|
973
|
+
return /* @__PURE__ */ jsxs7(
|
|
544
974
|
"div",
|
|
545
975
|
{
|
|
546
|
-
className: `p-4 lg:p-10 border-b sm:border-b border-gray-200 ${index % 2 === 0 ? "sm:border-r" : ""} ${index >= totalFeatures - 2 ? "sm:border-b-0" : ""} ${index === totalFeatures - 1 && totalFeatures % 2 === 1 ? "border-b-0" : ""}`,
|
|
976
|
+
className: `p-4 lg:p-10 border-b sm:border-b border-gray-200 dark:border-gray-800 ${index % 2 === 0 ? "sm:border-r" : ""} ${index >= totalFeatures - 2 ? "sm:border-b-0" : ""} ${index === totalFeatures - 1 && totalFeatures % 2 === 1 ? "border-b-0" : ""} transition-colors`,
|
|
547
977
|
children: [
|
|
548
|
-
/* @__PURE__ */
|
|
549
|
-
/* @__PURE__ */
|
|
550
|
-
/* @__PURE__ */
|
|
978
|
+
/* @__PURE__ */ jsx11("div", { className: "text-5xl font-bold text-primary-500 dark:text-primary-400 mb-4", children: String(index + 1).padStart(2, "0") }),
|
|
979
|
+
/* @__PURE__ */ jsx11("h3", { className: "text-xl font-bold mb-2 text-gray-900 dark:text-white", children: feature.title }),
|
|
980
|
+
/* @__PURE__ */ jsx11("p", { className: "text-gray-600 dark:text-gray-300", children: feature.description })
|
|
551
981
|
]
|
|
552
982
|
}
|
|
553
983
|
);
|
|
@@ -557,17 +987,17 @@ function HomeFeatures({ renderFeature } = {}) {
|
|
|
557
987
|
if (features.length === 0) {
|
|
558
988
|
return null;
|
|
559
989
|
}
|
|
560
|
-
return /* @__PURE__ */
|
|
561
|
-
/* @__PURE__ */
|
|
562
|
-
/* @__PURE__ */
|
|
563
|
-
/* @__PURE__ */
|
|
990
|
+
return /* @__PURE__ */ jsx11("section", { className: "border-t border-gray-200 dark:border-gray-800 transition-colors", children: /* @__PURE__ */ jsxs7("div", { className: "grid grid-cols-12", children: [
|
|
991
|
+
/* @__PURE__ */ jsxs7("div", { className: "col-span-12 lg:col-span-4 p-4 lg:p-10 border-b lg:border-b-0 lg:border-r border-gray-200 dark:border-gray-800 transition-colors", children: [
|
|
992
|
+
/* @__PURE__ */ jsx11("div", { className: "text-sm font-mono uppercase tracking-widest text-gray-500 dark:text-gray-400 mb-4", children: "Features" }),
|
|
993
|
+
/* @__PURE__ */ jsxs7("h2", { className: "text-4xl lg:text-5xl font-bold tracking-tight text-gray-900 dark:text-white", children: [
|
|
564
994
|
"Why ",
|
|
565
995
|
title,
|
|
566
996
|
"?"
|
|
567
997
|
] })
|
|
568
998
|
] }),
|
|
569
|
-
/* @__PURE__ */
|
|
570
|
-
(feature, index) => renderFeature ? /* @__PURE__ */
|
|
999
|
+
/* @__PURE__ */ jsx11("div", { className: "col-span-12 lg:col-span-8 grid grid-cols-1 sm:grid-cols-2", children: features.map(
|
|
1000
|
+
(feature, index) => renderFeature ? /* @__PURE__ */ jsx11("div", { children: renderFeature(feature, index, HomeFeatureItem) }, index) : /* @__PURE__ */ jsx11(
|
|
571
1001
|
HomeFeatureItem,
|
|
572
1002
|
{
|
|
573
1003
|
feature,
|
|
@@ -581,42 +1011,44 @@ function HomeFeatures({ renderFeature } = {}) {
|
|
|
581
1011
|
}
|
|
582
1012
|
function HomeCTA() {
|
|
583
1013
|
const { ctaHref } = useHomePage();
|
|
584
|
-
return /* @__PURE__ */
|
|
585
|
-
/* @__PURE__ */
|
|
586
|
-
/* @__PURE__ */
|
|
587
|
-
/* @__PURE__ */
|
|
588
|
-
/* @__PURE__ */
|
|
1014
|
+
return /* @__PURE__ */ jsx11("section", { className: "border-t border-gray-200 dark:border-gray-800 transition-colors", children: /* @__PURE__ */ jsxs7("div", { className: "grid grid-cols-12 items-center", children: [
|
|
1015
|
+
/* @__PURE__ */ jsxs7("div", { className: "col-span-12 lg:col-span-8 p-4 lg:p-10", children: [
|
|
1016
|
+
/* @__PURE__ */ jsx11("h2", { className: "text-4xl lg:text-6xl font-bold tracking-tight mb-4 text-gray-900 dark:text-white", children: "Ready to start?" }),
|
|
1017
|
+
/* @__PURE__ */ jsx11("p", { className: "text-xl text-gray-600 dark:text-gray-300 mb-8 max-w-2xl", children: "Get up and running in minutes. Check out our documentation to learn more." }),
|
|
1018
|
+
/* @__PURE__ */ jsx11(
|
|
589
1019
|
Link3,
|
|
590
1020
|
{
|
|
591
1021
|
href: ctaHref,
|
|
592
|
-
className: "inline-flex items-center justify-center px-8 py-4 bg-primary-500 text-white font-bold text-lg hover:bg-
|
|
1022
|
+
className: "inline-flex items-center justify-center px-8 py-4 bg-primary-500 text-white font-bold text-lg hover:bg-gray-900 dark:hover:bg-white dark:hover:text-gray-900 transition-colors border border-primary-500 hover:border-gray-900 dark:hover:border-white",
|
|
593
1023
|
children: "Read the Docs"
|
|
594
1024
|
}
|
|
595
1025
|
)
|
|
596
1026
|
] }),
|
|
597
|
-
/* @__PURE__ */
|
|
1027
|
+
/* @__PURE__ */ jsx11(
|
|
598
1028
|
Link3,
|
|
599
1029
|
{
|
|
600
1030
|
href: ctaHref,
|
|
601
|
-
className: "col-span-12 lg:col-span-4 h-full bg-primary-500 hidden lg:flex items-center justify-center p-4 lg:p-10 hover:bg-
|
|
602
|
-
children: /* @__PURE__ */
|
|
1031
|
+
className: "col-span-12 lg:col-span-4 h-full bg-primary-500 hidden lg:flex items-center justify-center p-4 lg:p-10 hover:bg-gray-900 dark:hover:bg-white transition-colors min-h-[200px] group",
|
|
1032
|
+
children: /* @__PURE__ */ jsx11("div", { className: "text-white group-hover:text-white dark:group-hover:text-gray-900 text-8xl font-bold transition-colors", children: "\u2192" })
|
|
603
1033
|
}
|
|
604
1034
|
)
|
|
605
1035
|
] }) });
|
|
606
1036
|
}
|
|
607
1037
|
function HomeFooter() {
|
|
608
|
-
const { title, logoUrl, footerLogoUrl, navLinks, githubUrl } = useHomePage();
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
1038
|
+
const { title, logoUrl, footerLogoUrl, footerLogoInvertedUrl, navLinks, githubUrl } = useHomePage();
|
|
1039
|
+
const { resolvedTheme } = useTheme();
|
|
1040
|
+
const currentLogoUrl = resolvedTheme === "dark" ? footerLogoInvertedUrl || footerLogoUrl || logoUrl : footerLogoUrl || logoUrl;
|
|
1041
|
+
return /* @__PURE__ */ jsx11("footer", { className: "border-t border-gray-200 dark:border-gray-800 py-8 bg-white dark:bg-[#0f0f0f] transition-colors", children: /* @__PURE__ */ jsxs7("div", { className: "px-4 lg:px-10 flex flex-col md:flex-row justify-between items-center gap-6", children: [
|
|
1042
|
+
currentLogoUrl && /* @__PURE__ */ jsx11(Link3, { href: "/", children: /* @__PURE__ */ jsx11("img", { src: currentLogoUrl, alt: title, className: "h-6" }) }),
|
|
1043
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex gap-8 text-sm text-gray-600 dark:text-gray-300", children: [
|
|
1044
|
+
navLinks.map((link) => /* @__PURE__ */ jsx11(Link3, { href: link.href, className: "hover:text-black dark:hover:text-white transition-colors", children: link.label }, link.href)),
|
|
1045
|
+
githubUrl && /* @__PURE__ */ jsx11(
|
|
614
1046
|
"a",
|
|
615
1047
|
{
|
|
616
1048
|
href: githubUrl,
|
|
617
1049
|
target: "_blank",
|
|
618
1050
|
rel: "noopener noreferrer",
|
|
619
|
-
className: "hover:text-black transition-colors",
|
|
1051
|
+
className: "hover:text-black dark:hover:text-white transition-colors",
|
|
620
1052
|
children: "GitHub"
|
|
621
1053
|
}
|
|
622
1054
|
)
|
|
@@ -624,22 +1056,32 @@ function HomeFooter() {
|
|
|
624
1056
|
] }) });
|
|
625
1057
|
}
|
|
626
1058
|
function HomeSpacer() {
|
|
627
|
-
return /* @__PURE__ */
|
|
1059
|
+
return /* @__PURE__ */ jsx11(
|
|
628
1060
|
"div",
|
|
629
1061
|
{
|
|
630
|
-
className: "grow",
|
|
1062
|
+
className: "grow dark:hidden",
|
|
631
1063
|
style: { backgroundImage: "linear-gradient(rgb(229, 231, 235) 1px, transparent 1px)" }
|
|
632
1064
|
}
|
|
633
1065
|
);
|
|
634
1066
|
}
|
|
1067
|
+
function HomeSpacerDark() {
|
|
1068
|
+
return /* @__PURE__ */ jsx11(
|
|
1069
|
+
"div",
|
|
1070
|
+
{
|
|
1071
|
+
className: "grow hidden dark:block",
|
|
1072
|
+
style: { backgroundImage: "linear-gradient(rgb(38, 38, 38) 1px, transparent 1px)" }
|
|
1073
|
+
}
|
|
1074
|
+
);
|
|
1075
|
+
}
|
|
635
1076
|
function DefaultHomeLayout() {
|
|
636
|
-
return /* @__PURE__ */
|
|
637
|
-
/* @__PURE__ */
|
|
638
|
-
/* @__PURE__ */
|
|
639
|
-
/* @__PURE__ */
|
|
640
|
-
/* @__PURE__ */
|
|
641
|
-
/* @__PURE__ */
|
|
642
|
-
/* @__PURE__ */
|
|
1077
|
+
return /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
1078
|
+
/* @__PURE__ */ jsx11(HomeHeader, {}),
|
|
1079
|
+
/* @__PURE__ */ jsx11(HomeHero, {}),
|
|
1080
|
+
/* @__PURE__ */ jsx11(HomeFeatures, {}),
|
|
1081
|
+
/* @__PURE__ */ jsx11(HomeCTA, {}),
|
|
1082
|
+
/* @__PURE__ */ jsx11(HomeSpacer, {}),
|
|
1083
|
+
/* @__PURE__ */ jsx11(HomeSpacerDark, {}),
|
|
1084
|
+
/* @__PURE__ */ jsx11(HomeFooter, {})
|
|
643
1085
|
] });
|
|
644
1086
|
}
|
|
645
1087
|
function HomePage({
|
|
@@ -651,9 +1093,9 @@ function HomePage({
|
|
|
651
1093
|
...props,
|
|
652
1094
|
navLinks
|
|
653
1095
|
};
|
|
654
|
-
return /* @__PURE__ */
|
|
655
|
-
/* @__PURE__ */
|
|
656
|
-
children || /* @__PURE__ */
|
|
1096
|
+
return /* @__PURE__ */ jsx11(HomePageContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs7("div", { className: "min-h-screen bg-white dark:bg-[#0f0f0f] flex flex-col transition-colors duration-200", children: [
|
|
1097
|
+
/* @__PURE__ */ jsx11(Head2, { title: props.title }),
|
|
1098
|
+
children || /* @__PURE__ */ jsx11(DefaultHomeLayout, {})
|
|
657
1099
|
] }) });
|
|
658
1100
|
}
|
|
659
1101
|
HomePage.Header = HomeHeader;
|
|
@@ -666,7 +1108,7 @@ HomePage.Footer = HomeFooter;
|
|
|
666
1108
|
// src/app.tsx
|
|
667
1109
|
import { createInertiaApp } from "@inertiajs/react";
|
|
668
1110
|
import { createRoot, hydrateRoot } from "react-dom/client";
|
|
669
|
-
import { jsx as
|
|
1111
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
670
1112
|
function createDocsApp(config) {
|
|
671
1113
|
const { pages, title, components } = config;
|
|
672
1114
|
if (typeof window !== "undefined") {
|
|
@@ -683,7 +1125,7 @@ function createDocsApp(config) {
|
|
|
683
1125
|
return page;
|
|
684
1126
|
},
|
|
685
1127
|
setup({ el, App, props }) {
|
|
686
|
-
const appElement = /* @__PURE__ */
|
|
1128
|
+
const appElement = /* @__PURE__ */ jsx12(ThemeProvider, { children: /* @__PURE__ */ jsx12(ComponentsProvider, { components, children: /* @__PURE__ */ jsx12(App, { ...props }) }) });
|
|
687
1129
|
if (el.hasChildNodes()) {
|
|
688
1130
|
hydrateRoot(el, appElement);
|
|
689
1131
|
} else {
|
|
@@ -694,6 +1136,7 @@ function createDocsApp(config) {
|
|
|
694
1136
|
}
|
|
695
1137
|
export {
|
|
696
1138
|
CodeBlock,
|
|
1139
|
+
DocSetSelector,
|
|
697
1140
|
DocsLayout,
|
|
698
1141
|
DocsPage,
|
|
699
1142
|
EmojiConfetti,
|
|
@@ -707,9 +1150,13 @@ export {
|
|
|
707
1150
|
InlineCode,
|
|
708
1151
|
Markdown,
|
|
709
1152
|
Sidebar,
|
|
1153
|
+
ThemeProvider,
|
|
1154
|
+
ThemeToggle,
|
|
710
1155
|
cn,
|
|
711
1156
|
configureHighlighter,
|
|
712
1157
|
createDocsApp,
|
|
713
|
-
getHighlighter
|
|
1158
|
+
getHighlighter,
|
|
1159
|
+
themeInitScript,
|
|
1160
|
+
useTheme
|
|
714
1161
|
};
|
|
715
1162
|
//# sourceMappingURL=index.js.map
|