@geenius/docs 0.9.0 → 0.11.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/CHANGELOG.md +12 -0
- package/package.json +7 -7
- package/packages/react/dist/index.js +201 -148
- package/packages/react/dist/index.js.map +1 -1
- package/packages/react-css/dist/index.css +30 -18
- package/packages/react-css/dist/index.css.map +1 -1
- package/packages/shared/dist/index.d.ts +49 -4
- package/packages/shared/dist/index.js +51 -5
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/solidjs/dist/index.js +190 -143
- package/packages/solidjs/dist/index.js.map +1 -1
- package/packages/solidjs-css/dist/index.css +30 -18
- package/packages/solidjs-css/dist/index.css.map +1 -1
|
@@ -3,6 +3,7 @@ import { clsx } from 'clsx';
|
|
|
3
3
|
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'solid-js/h/jsx-runtime';
|
|
5
5
|
import remarkGfm from 'remark-gfm';
|
|
6
|
+
import { Dynamic } from 'solid-js/web';
|
|
6
7
|
import { SolidMarkdown } from 'solid-markdown';
|
|
7
8
|
import { AnimatePresence, motion } from '@geenius/motion/solidjs';
|
|
8
9
|
|
|
@@ -15,8 +16,8 @@ function Breadcrumbs(props) {
|
|
|
15
16
|
return null;
|
|
16
17
|
}
|
|
17
18
|
return /* @__PURE__ */ jsx("nav", { class: cn("flex items-center gap-1.5 text-sm", props.class), "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsx(For, { each: props.items, children: (item, idx) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18
|
-
/* @__PURE__ */ jsx(Show, { when: idx() > 0, children: /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", class: "h-3.5 w-3.5 shrink-0 text-
|
|
19
|
-
/* @__PURE__ */ jsx(Show, { when: idx() === props.items.length - 1, fallback: /* @__PURE__ */ jsx("a", { href: item.href, class: "truncate text-
|
|
19
|
+
/* @__PURE__ */ jsx(Show, { when: idx() > 0, children: /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", class: "h-3.5 w-3.5 shrink-0 text-foreground/20", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsx("path", { d: "M6 4l4 4-4 4", stroke: "currentColor", "stroke-width": "1.5" }) }) }),
|
|
20
|
+
/* @__PURE__ */ jsx(Show, { when: idx() === props.items.length - 1, fallback: /* @__PURE__ */ jsx("a", { href: item.href, class: "truncate text-foreground/40 transition-colors hover:text-foreground/70", children: item.title }), children: /* @__PURE__ */ jsx("span", { class: "truncate text-foreground/60", children: item.title }) })
|
|
20
21
|
] }) }) });
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -178,7 +179,7 @@ function createHeading(Tag, className) {
|
|
|
178
179
|
return (props) => {
|
|
179
180
|
const text = getNodeText(props.children);
|
|
180
181
|
const id = slugify(text);
|
|
181
|
-
return /* @__PURE__ */ jsx(
|
|
182
|
+
return /* @__PURE__ */ jsx(Dynamic, { component: Tag, id, class: cn(className), children: /* @__PURE__ */ jsx("a", { href: `#${id}`, class: "transition-colors hover:text-primary", children: props.children }) });
|
|
182
183
|
};
|
|
183
184
|
}
|
|
184
185
|
function DocPage(props) {
|
|
@@ -190,27 +191,27 @@ function DocPage(props) {
|
|
|
190
191
|
h1: createHeading("h1", "scroll-mt-20 mt-8 mb-4 text-3xl font-bold"),
|
|
191
192
|
h2: createHeading(
|
|
192
193
|
"h2",
|
|
193
|
-
"scroll-mt-20 mt-8 mb-3 border-b border-
|
|
194
|
+
"scroll-mt-20 mt-8 mb-3 border-b border-border/60 pb-2 text-2xl font-bold"
|
|
194
195
|
),
|
|
195
196
|
h3: createHeading("h3", "scroll-mt-20 mt-6 mb-2 text-xl font-semibold"),
|
|
196
197
|
h4: createHeading("h4", "scroll-mt-20 mt-4 mb-2 text-lg font-medium"),
|
|
197
|
-
p: (componentProps) => /* @__PURE__ */ jsx("p", { class: "my-3 leading-relaxed text-
|
|
198
|
+
p: (componentProps) => /* @__PURE__ */ jsx("p", { class: "my-3 leading-relaxed text-foreground/80", children: componentProps.children }),
|
|
198
199
|
a: (componentProps) => /* @__PURE__ */ jsx(
|
|
199
200
|
"a",
|
|
200
201
|
{
|
|
201
202
|
href: componentProps.href,
|
|
202
203
|
target: componentProps.href?.startsWith("/") ? void 0 : "_blank",
|
|
203
204
|
rel: componentProps.href?.startsWith("/") ? void 0 : "noreferrer noopener",
|
|
204
|
-
class: "underline underline-offset-2 transition-colors hover:text-
|
|
205
|
+
class: "underline underline-offset-2 transition-colors hover:text-primary",
|
|
205
206
|
children: componentProps.children
|
|
206
207
|
}
|
|
207
208
|
),
|
|
208
|
-
code: (componentProps) => componentProps.class ? /* @__PURE__ */ jsx("code", { class: componentProps.class, children: componentProps.children }) : /* @__PURE__ */ jsx("code", { class: "rounded bg-
|
|
209
|
-
pre: (componentProps) => /* @__PURE__ */ jsx("pre", { class: "my-4 overflow-x-auto rounded-lg bg-
|
|
210
|
-
blockquote: (componentProps) => /* @__PURE__ */ jsx("blockquote", { class: "my-4 rounded-r-lg border-l-4 border-
|
|
211
|
-
table: (componentProps) => /* @__PURE__ */ jsx("div", { class: "my-4 overflow-x-auto rounded-lg border border-
|
|
212
|
-
th: (componentProps) => /* @__PURE__ */ jsx("th", { class: "border-b border-
|
|
213
|
-
td: (componentProps) => /* @__PURE__ */ jsx("td", { class: "border-b border-
|
|
209
|
+
code: (componentProps) => componentProps.class ? /* @__PURE__ */ jsx("code", { class: componentProps.class, children: componentProps.children }) : /* @__PURE__ */ jsx("code", { class: "rounded bg-foreground/10 px-1.5 py-0.5 text-sm text-primary", children: componentProps.children }),
|
|
210
|
+
pre: (componentProps) => /* @__PURE__ */ jsx("pre", { class: "my-4 overflow-x-auto rounded-lg bg-background/80 p-4 text-sm leading-relaxed", children: componentProps.children }),
|
|
211
|
+
blockquote: (componentProps) => /* @__PURE__ */ jsx("blockquote", { class: "my-4 rounded-r-lg border-l-4 border-primary/40 bg-foreground/5 py-3 pl-4 pr-4 text-foreground/70 italic", children: componentProps.children }),
|
|
212
|
+
table: (componentProps) => /* @__PURE__ */ jsx("div", { class: "my-4 overflow-x-auto rounded-lg border border-border/60", children: /* @__PURE__ */ jsx("table", { class: "w-full text-sm", children: componentProps.children }) }),
|
|
213
|
+
th: (componentProps) => /* @__PURE__ */ jsx("th", { class: "border-b border-border/60 bg-foreground/5 px-4 py-2.5 text-left font-semibold", children: componentProps.children }),
|
|
214
|
+
td: (componentProps) => /* @__PURE__ */ jsx("td", { class: "border-b border-border/40 px-4 py-2 text-foreground/70 last:border-none", children: componentProps.children })
|
|
214
215
|
},
|
|
215
216
|
children: props.page.content
|
|
216
217
|
}
|
|
@@ -273,7 +274,7 @@ function DocSearch(props) {
|
|
|
273
274
|
initial: { opacity: 0 },
|
|
274
275
|
animate: { opacity: 1 },
|
|
275
276
|
exit: { opacity: 0 },
|
|
276
|
-
class: "fixed inset-0 bg-
|
|
277
|
+
class: "fixed inset-0 bg-background/80 backdrop-blur-md",
|
|
277
278
|
onClick: () => {
|
|
278
279
|
props.onClose();
|
|
279
280
|
previousFocus?.focus();
|
|
@@ -288,16 +289,16 @@ function DocSearch(props) {
|
|
|
288
289
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
289
290
|
exit: { opacity: 0, scale: 0.95, y: -20 },
|
|
290
291
|
transition: { type: "spring", damping: 25, stiffness: 250 },
|
|
291
|
-
class: "relative z-10 w-full max-w-xl overflow-hidden rounded-2xl border border-
|
|
292
|
+
class: "relative z-10 w-full max-w-xl overflow-hidden rounded-2xl border border-border/60 bg-card/40 backdrop-blur-3xl shadow-2xl ring-1 ring-border/40",
|
|
292
293
|
role: "dialog",
|
|
293
294
|
"aria-modal": "true",
|
|
294
295
|
"aria-labelledby": `${dialogId}-title`,
|
|
295
296
|
onKeyDown: handleKeyDown,
|
|
296
297
|
onClick: (e) => e.stopPropagation(),
|
|
297
298
|
children: [
|
|
298
|
-
/* @__PURE__ */ jsxs("div", { class: "flex items-center gap-3 border-b border-
|
|
299
|
+
/* @__PURE__ */ jsxs("div", { class: "flex items-center gap-3 border-b border-border/60 px-5 py-4 bg-foreground/5", children: [
|
|
299
300
|
/* @__PURE__ */ jsx("h2", { id: `${dialogId}-title`, class: "sr-only", children: "Search documentation" }),
|
|
300
|
-
/* @__PURE__ */ jsx("svg", { "aria-hidden": "true", class: "h-5 w-5 shrink-0 text-
|
|
301
|
+
/* @__PURE__ */ jsx("svg", { "aria-hidden": "true", class: "h-5 w-5 shrink-0 text-foreground/40", viewBox: "0 0 20 20", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { "fill-rule": "evenodd", d: "M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z", "clip-rule": "evenodd" }) }),
|
|
301
302
|
/* @__PURE__ */ jsx(
|
|
302
303
|
"input",
|
|
303
304
|
{
|
|
@@ -309,10 +310,10 @@ function DocSearch(props) {
|
|
|
309
310
|
"aria-label": "Search documentation",
|
|
310
311
|
"aria-controls": `${dialogId}-results`,
|
|
311
312
|
"aria-activedescendant": activeResultId(),
|
|
312
|
-
class: "flex-1 bg-transparent text-sm text-
|
|
313
|
+
class: "flex-1 bg-transparent text-sm text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-0"
|
|
313
314
|
}
|
|
314
315
|
),
|
|
315
|
-
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-
|
|
316
|
+
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-border/60 bg-foreground/5 px-1.5 py-0.5 text-[11px] text-foreground/30 font-medium", children: "ESC" })
|
|
316
317
|
] }),
|
|
317
318
|
/* @__PURE__ */ jsxs(
|
|
318
319
|
"div",
|
|
@@ -328,7 +329,7 @@ function DocSearch(props) {
|
|
|
328
329
|
initial: { opacity: 0 },
|
|
329
330
|
animate: { opacity: 1 },
|
|
330
331
|
exit: { opacity: 0 },
|
|
331
|
-
class: "flex flex-col items-center py-10 text-center text-
|
|
332
|
+
class: "flex flex-col items-center py-10 text-center text-foreground/30",
|
|
332
333
|
children: [
|
|
333
334
|
/* @__PURE__ */ jsxs("svg", { "aria-hidden": "true", class: "mb-3 h-10 w-10 opacity-50", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: [
|
|
334
335
|
/* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8", "stroke-width": "1.5" }),
|
|
@@ -349,7 +350,7 @@ function DocSearch(props) {
|
|
|
349
350
|
initial: { opacity: 0 },
|
|
350
351
|
animate: { opacity: 1 },
|
|
351
352
|
exit: { opacity: 0 },
|
|
352
|
-
class: "py-8 text-center text-sm text-
|
|
353
|
+
class: "py-8 text-center text-sm text-foreground/30",
|
|
353
354
|
children: "Start typing to search\u2026"
|
|
354
355
|
}
|
|
355
356
|
) })
|
|
@@ -366,41 +367,44 @@ function DocSearch(props) {
|
|
|
366
367
|
"aria-selected": idx() === activeIndex(),
|
|
367
368
|
onMouseEnter: () => setActiveIndex(idx()),
|
|
368
369
|
onClick: () => props.onSelect(result),
|
|
369
|
-
class:
|
|
370
|
+
class: cn(
|
|
371
|
+
"group relative my-0.5 flex w-full flex-col gap-1 rounded-xl px-4 py-3 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",
|
|
372
|
+
idx() === activeIndex() ? "bg-primary/15 text-foreground ring-1 ring-primary/30" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
373
|
+
),
|
|
370
374
|
children: [
|
|
371
375
|
/* @__PURE__ */ jsx(Show, { when: idx() === activeIndex(), children: /* @__PURE__ */ jsx(
|
|
372
376
|
motion.div,
|
|
373
377
|
{
|
|
374
378
|
layoutId: "search-active-bg",
|
|
375
|
-
class: "absolute inset-0 bg-
|
|
379
|
+
class: "absolute inset-0 rounded-xl bg-primary/10",
|
|
376
380
|
transition: { type: "spring", stiffness: 300, damping: 30 }
|
|
377
381
|
}
|
|
378
382
|
) }),
|
|
379
383
|
/* @__PURE__ */ jsxs("div", { class: "relative z-10 flex items-center gap-2", children: [
|
|
380
|
-
/* @__PURE__ */ jsx("span", { class: "rounded bg-
|
|
384
|
+
/* @__PURE__ */ jsx("span", { class: "rounded bg-primary/20 px-1.5 py-0.5 text-[10px] font-medium text-primary", children: result.sectionTitle }),
|
|
381
385
|
/* @__PURE__ */ jsx("span", { class: "text-sm font-medium", children: result.pageTitle })
|
|
382
386
|
] }),
|
|
383
|
-
/* @__PURE__ */ jsx("p", { class: "relative z-10 truncate text-xs text-
|
|
384
|
-
/* @__PURE__ */ jsx(Show, { when: result.tags.length > 0, children: /* @__PURE__ */ jsx("div", { class: "relative z-10 flex gap-1 mt-1", children: /* @__PURE__ */ jsx(For, { each: result.tags.slice(0, 3), children: (tag) => /* @__PURE__ */ jsx("span", { class: "rounded bg-
|
|
387
|
+
/* @__PURE__ */ jsx("p", { class: "relative z-10 truncate text-xs text-foreground/40", children: highlightMatch(result.highlight, props.query) }),
|
|
388
|
+
/* @__PURE__ */ jsx(Show, { when: result.tags.length > 0, children: /* @__PURE__ */ jsx("div", { class: "relative z-10 flex gap-1 mt-1", children: /* @__PURE__ */ jsx(For, { each: result.tags.slice(0, 3), children: (tag) => /* @__PURE__ */ jsx("span", { class: "rounded border border-border bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground", children: tag }) }) }) })
|
|
385
389
|
]
|
|
386
390
|
}
|
|
387
391
|
) })
|
|
388
392
|
]
|
|
389
393
|
}
|
|
390
394
|
),
|
|
391
|
-
/* @__PURE__ */ jsxs("div", { class: "flex items-center gap-4 border-t border-
|
|
395
|
+
/* @__PURE__ */ jsxs("div", { class: "flex items-center gap-4 border-t border-border/60 px-5 py-2.5 text-[11px] text-foreground/30 bg-background/70", children: [
|
|
392
396
|
/* @__PURE__ */ jsxs("span", { class: "flex items-center gap-1", children: [
|
|
393
|
-
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-
|
|
397
|
+
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]", children: "\u2191" }),
|
|
394
398
|
" ",
|
|
395
|
-
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-
|
|
399
|
+
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]", children: "\u2193" }),
|
|
396
400
|
" navigate"
|
|
397
401
|
] }),
|
|
398
402
|
/* @__PURE__ */ jsxs("span", { class: "flex items-center gap-1", children: [
|
|
399
|
-
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-
|
|
403
|
+
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]", children: "\u21B5" }),
|
|
400
404
|
" select"
|
|
401
405
|
] }),
|
|
402
406
|
/* @__PURE__ */ jsxs("span", { class: "flex items-center gap-1", children: [
|
|
403
|
-
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-
|
|
407
|
+
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]", children: "esc" }),
|
|
404
408
|
" close"
|
|
405
409
|
] })
|
|
406
410
|
] })
|
|
@@ -432,18 +436,22 @@ function DocSidebar(props) {
|
|
|
432
436
|
{
|
|
433
437
|
type: "button",
|
|
434
438
|
onClick: () => toggle(section.id),
|
|
435
|
-
|
|
439
|
+
"aria-expanded": hasContent() ? isExpanded() : void 0,
|
|
440
|
+
class: cn(
|
|
441
|
+
"flex w-full items-center gap-2 rounded-xl px-3 py-2 text-left text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",
|
|
442
|
+
isExpanded() ? "bg-muted text-foreground" : "text-foreground hover:bg-muted/70"
|
|
443
|
+
),
|
|
436
444
|
whileHover: { x: 2 },
|
|
437
445
|
whileTap: { scale: 0.98 },
|
|
438
446
|
children: [
|
|
439
447
|
/* @__PURE__ */ jsx(Show, { when: section.icon, children: /* @__PURE__ */ jsx("span", { class: "text-base", children: section.icon }) }),
|
|
440
|
-
/* @__PURE__ */ jsx("span", { class: "flex-1 truncate
|
|
441
|
-
/* @__PURE__ */ jsx(Show, { when: section.pageCount != null, children: /* @__PURE__ */ jsx("span", { class: "text-xs tabular-nums opacity-50
|
|
448
|
+
/* @__PURE__ */ jsx("span", { class: "flex-1 truncate", children: section.title }),
|
|
449
|
+
/* @__PURE__ */ jsx(Show, { when: section.pageCount != null, children: /* @__PURE__ */ jsx("span", { class: "text-xs tabular-nums opacity-50 text-muted-foreground", children: section.pageCount }) }),
|
|
442
450
|
/* @__PURE__ */ jsx(Show, { when: hasContent(), children: /* @__PURE__ */ jsx(
|
|
443
451
|
motion.svg,
|
|
444
452
|
{
|
|
445
453
|
animate: { rotate: isExpanded() ? 90 : 0 },
|
|
446
|
-
class: "h-3.5 w-3.5 shrink-0 text-
|
|
454
|
+
class: "h-3.5 w-3.5 shrink-0 text-muted-foreground",
|
|
447
455
|
viewBox: "0 0 16 16",
|
|
448
456
|
fill: "currentColor",
|
|
449
457
|
children: /* @__PURE__ */ jsx("path", { d: "M6 4l4 4-4 4", stroke: "currentColor", "stroke-width": "2", fill: "none" })
|
|
@@ -459,7 +467,7 @@ function DocSidebar(props) {
|
|
|
459
467
|
animate: { height: "auto", opacity: 1 },
|
|
460
468
|
exit: { height: 0, opacity: 0 },
|
|
461
469
|
transition: { duration: 0.2, ease: "easeInOut" },
|
|
462
|
-
class: "ml-2 overflow-hidden border-l border-
|
|
470
|
+
class: "ml-2 overflow-hidden border-l border-border pl-2",
|
|
463
471
|
children: [
|
|
464
472
|
/* @__PURE__ */ jsx(For, { each: pages(), children: (page) => /* @__PURE__ */ jsx(
|
|
465
473
|
motion.button,
|
|
@@ -468,7 +476,10 @@ function DocSidebar(props) {
|
|
|
468
476
|
onClick: () => props.onNavigate(page, section),
|
|
469
477
|
whileHover: { x: 2 },
|
|
470
478
|
whileTap: { scale: 0.98 },
|
|
471
|
-
class:
|
|
479
|
+
class: cn(
|
|
480
|
+
"my-0.5 flex w-full items-center gap-2 rounded-lg px-3 py-1.5 text-left text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",
|
|
481
|
+
props.currentPageId === page.id ? "bg-primary/10 font-semibold text-primary ring-1 ring-primary/20" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
482
|
+
),
|
|
472
483
|
children: /* @__PURE__ */ jsx("span", { class: "truncate", children: page.title })
|
|
473
484
|
}
|
|
474
485
|
) }),
|
|
@@ -479,7 +490,7 @@ function DocSidebar(props) {
|
|
|
479
490
|
] });
|
|
480
491
|
};
|
|
481
492
|
return /* @__PURE__ */ jsxs("nav", { class: cn("flex flex-col gap-1 py-4", props.class), children: [
|
|
482
|
-
/* @__PURE__ */ jsx("div", { class: "px-4 pb-3 text-xs font-bold uppercase tracking-widest text-
|
|
493
|
+
/* @__PURE__ */ jsx("div", { class: "px-4 pb-3 text-xs font-bold uppercase tracking-widest text-muted-foreground", children: "Documentation" }),
|
|
483
494
|
/* @__PURE__ */ jsx(For, { each: topLevel(), children: (s) => renderSection(s, 0) })
|
|
484
495
|
] });
|
|
485
496
|
}
|
|
@@ -493,7 +504,7 @@ function TocLink(props) {
|
|
|
493
504
|
href: `#${props.item.id}`,
|
|
494
505
|
class: cn(
|
|
495
506
|
"block truncate border-l-2 py-1 text-[13px] transition-all relative",
|
|
496
|
-
isActive() ? "border-
|
|
507
|
+
isActive() ? "border-primary text-primary font-medium" : "border-transparent text-foreground/40 hover:text-foreground/80 hover:border-border/80"
|
|
497
508
|
),
|
|
498
509
|
style: { "padding-left": `${12 + depth() * 12}px` },
|
|
499
510
|
whileHover: { x: 2 },
|
|
@@ -510,7 +521,7 @@ function TableOfContents(props) {
|
|
|
510
521
|
return null;
|
|
511
522
|
}
|
|
512
523
|
return /* @__PURE__ */ jsxs("nav", { class: cn("sticky top-24", props.class), children: [
|
|
513
|
-
/* @__PURE__ */ jsx("h4", { class: "mb-3 text-xs font-semibold uppercase tracking-widest text-
|
|
524
|
+
/* @__PURE__ */ jsx("h4", { class: "mb-3 text-xs font-semibold uppercase tracking-widest text-foreground/40", children: "On this page" }),
|
|
514
525
|
/* @__PURE__ */ jsx(motion.div, { class: "flex flex-col relative", layoutRoot: true, children: /* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsx(For, { each: props.toc, children: (item) => /* @__PURE__ */ jsx(motion.div, { initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, children: /* @__PURE__ */ jsx(TocLink, { item, activeId: props.activeId }) }) }) }) })
|
|
515
526
|
] });
|
|
516
527
|
}
|
|
@@ -518,8 +529,8 @@ function DocsLayout(props) {
|
|
|
518
529
|
const resolvedChildren = children(() => props.children);
|
|
519
530
|
const breadcrumbs = () => props.breadcrumbs ?? [];
|
|
520
531
|
const toc = () => props.toc ?? [];
|
|
521
|
-
return /* @__PURE__ */ jsxs("div", { class: cn("flex min-h-screen bg-
|
|
522
|
-
/* @__PURE__ */ jsx("aside", { class: "sticky top-0 hidden h-screen w-[260px] shrink-0 overflow-y-auto border-r border-
|
|
532
|
+
return /* @__PURE__ */ jsxs("div", { class: cn("flex min-h-screen bg-background text-foreground", props.class), children: [
|
|
533
|
+
/* @__PURE__ */ jsx("aside", { class: "sticky top-0 hidden h-screen w-[260px] shrink-0 overflow-y-auto border-r border-border bg-card lg:block", children: /* @__PURE__ */ jsx(
|
|
523
534
|
DocSidebar,
|
|
524
535
|
{
|
|
525
536
|
sections: props.sections,
|
|
@@ -574,7 +585,7 @@ function EditButton(props) {
|
|
|
574
585
|
target: "_blank",
|
|
575
586
|
rel: "noopener noreferrer",
|
|
576
587
|
class: cn(
|
|
577
|
-
"inline-flex items-center gap-1.5 rounded-lg border border-
|
|
588
|
+
"inline-flex items-center gap-1.5 rounded-lg border border-border/60 px-3 py-1.5 text-xs text-foreground/40 transition-colors hover:border-border/80 hover:text-foreground/60",
|
|
578
589
|
props.class
|
|
579
590
|
),
|
|
580
591
|
children: [
|
|
@@ -588,14 +599,14 @@ function PageNavigation(props) {
|
|
|
588
599
|
if (!props.prev && !props.next) {
|
|
589
600
|
return null;
|
|
590
601
|
}
|
|
591
|
-
return /* @__PURE__ */ jsxs("div", { class: cn("mt-12 flex items-stretch gap-4 border-t border-
|
|
592
|
-
/* @__PURE__ */ jsx(Show, { when: props.prev, fallback: /* @__PURE__ */ jsx("div", { class: "flex-1" }), children: (prev) => /* @__PURE__ */ jsxs("a", { href: prev().href, class: "group flex flex-1 flex-col rounded-xl border border-
|
|
593
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs text-
|
|
594
|
-
/* @__PURE__ */ jsx("span", { class: "mt-1 text-sm font-medium text-
|
|
602
|
+
return /* @__PURE__ */ jsxs("div", { class: cn("mt-12 flex items-stretch gap-4 border-t border-border/60 pt-8", props.class), children: [
|
|
603
|
+
/* @__PURE__ */ jsx(Show, { when: props.prev, fallback: /* @__PURE__ */ jsx("div", { class: "flex-1" }), children: (prev) => /* @__PURE__ */ jsxs("a", { href: prev().href, class: "group flex flex-1 flex-col rounded-xl border border-border/60 p-4 transition-all hover:border-primary/40 hover:bg-foreground/5", children: [
|
|
604
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs text-foreground/40 group-hover:text-primary transition-colors", children: "\u2190 Previous" }),
|
|
605
|
+
/* @__PURE__ */ jsx("span", { class: "mt-1 text-sm font-medium text-foreground/80 group-hover:text-foreground transition-colors truncate", children: prev().title })
|
|
595
606
|
] }) }),
|
|
596
|
-
/* @__PURE__ */ jsx(Show, { when: props.next, fallback: /* @__PURE__ */ jsx("div", { class: "flex-1" }), children: (next) => /* @__PURE__ */ jsxs("a", { href: next().href, class: "group flex flex-1 flex-col items-end rounded-xl border border-
|
|
597
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs text-
|
|
598
|
-
/* @__PURE__ */ jsx("span", { class: "mt-1 text-sm font-medium text-
|
|
607
|
+
/* @__PURE__ */ jsx(Show, { when: props.next, fallback: /* @__PURE__ */ jsx("div", { class: "flex-1" }), children: (next) => /* @__PURE__ */ jsxs("a", { href: next().href, class: "group flex flex-1 flex-col items-end rounded-xl border border-border/60 p-4 text-right transition-all hover:border-primary/40 hover:bg-foreground/5", children: [
|
|
608
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs text-foreground/40 group-hover:text-primary transition-colors", children: "Next \u2192" }),
|
|
609
|
+
/* @__PURE__ */ jsx("span", { class: "mt-1 text-sm font-medium text-foreground/80 group-hover:text-foreground transition-colors truncate", children: next().title })
|
|
599
610
|
] }) })
|
|
600
611
|
] });
|
|
601
612
|
}
|
|
@@ -604,13 +615,20 @@ function VersionSelector(props) {
|
|
|
604
615
|
return null;
|
|
605
616
|
}
|
|
606
617
|
const [isOpen, setIsOpen] = createSignal(false);
|
|
618
|
+
const menuId = createUniqueId();
|
|
607
619
|
return /* @__PURE__ */ jsxs("div", { class: cn("relative", props.class), children: [
|
|
608
620
|
/* @__PURE__ */ jsxs(
|
|
609
621
|
"button",
|
|
610
622
|
{
|
|
611
623
|
type: "button",
|
|
612
624
|
onClick: () => setIsOpen(!isOpen()),
|
|
613
|
-
|
|
625
|
+
"aria-expanded": isOpen(),
|
|
626
|
+
"aria-haspopup": "listbox",
|
|
627
|
+
"aria-controls": menuId,
|
|
628
|
+
class: cn(
|
|
629
|
+
"flex items-center gap-1.5 rounded-lg border border-border bg-card/60 px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",
|
|
630
|
+
isOpen() && "border-primary/30 text-foreground"
|
|
631
|
+
),
|
|
614
632
|
children: [
|
|
615
633
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
616
634
|
"v",
|
|
@@ -620,7 +638,7 @@ function VersionSelector(props) {
|
|
|
620
638
|
"svg",
|
|
621
639
|
{
|
|
622
640
|
"aria-hidden": "true",
|
|
623
|
-
class:
|
|
641
|
+
class: cn("h-3 w-3 transition-transform", isOpen() && "rotate-180"),
|
|
624
642
|
viewBox: "0 0 16 16",
|
|
625
643
|
children: /* @__PURE__ */ jsx("path", { d: "M4 6l4 4 4-4", stroke: "currentColor", "stroke-width": "2", fill: "none" })
|
|
626
644
|
}
|
|
@@ -628,22 +646,41 @@ function VersionSelector(props) {
|
|
|
628
646
|
]
|
|
629
647
|
}
|
|
630
648
|
),
|
|
631
|
-
/* @__PURE__ */ jsx(Show, { when: isOpen(), children: /* @__PURE__ */ jsx(
|
|
632
|
-
"
|
|
649
|
+
/* @__PURE__ */ jsx(Show, { when: isOpen(), children: /* @__PURE__ */ jsx(
|
|
650
|
+
"div",
|
|
633
651
|
{
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
652
|
+
id: menuId,
|
|
653
|
+
role: "listbox",
|
|
654
|
+
class: "absolute right-0 top-full z-20 mt-1 min-w-[120px] overflow-hidden rounded-lg border border-border bg-popover shadow-xl",
|
|
655
|
+
onKeyDown: (event) => {
|
|
656
|
+
if (event.key === "Escape") {
|
|
657
|
+
event.preventDefault();
|
|
658
|
+
setIsOpen(false);
|
|
659
|
+
}
|
|
638
660
|
},
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
661
|
+
children: /* @__PURE__ */ jsx(For, { each: props.versions, children: (v) => /* @__PURE__ */ jsxs(
|
|
662
|
+
"button",
|
|
663
|
+
{
|
|
664
|
+
type: "button",
|
|
665
|
+
role: "option",
|
|
666
|
+
"aria-selected": v === props.current,
|
|
667
|
+
onClick: () => {
|
|
668
|
+
props.onSelect(v);
|
|
669
|
+
setIsOpen(false);
|
|
670
|
+
},
|
|
671
|
+
class: cn(
|
|
672
|
+
"flex w-full items-center px-3 py-2 text-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring/40",
|
|
673
|
+
v === props.current ? "bg-primary/15 text-primary" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
674
|
+
),
|
|
675
|
+
children: [
|
|
676
|
+
"v",
|
|
677
|
+
v,
|
|
678
|
+
v === props.current && /* @__PURE__ */ jsx("span", { class: "ml-auto text-[10px]", children: "\u2713" })
|
|
679
|
+
]
|
|
680
|
+
}
|
|
681
|
+
) })
|
|
645
682
|
}
|
|
646
|
-
) })
|
|
683
|
+
) })
|
|
647
684
|
] });
|
|
648
685
|
}
|
|
649
686
|
function createDocSearch(searchFn, debounceMs = 250) {
|
|
@@ -692,8 +729,8 @@ function DocSearchPage(props) {
|
|
|
692
729
|
Show,
|
|
693
730
|
{
|
|
694
731
|
when: props.tree() !== void 0,
|
|
695
|
-
fallback: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-
|
|
696
|
-
children: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-
|
|
732
|
+
fallback: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-background px-6 py-16", props.class), children: /* @__PURE__ */ jsx("div", { class: "mx-auto max-w-2xl", children: /* @__PURE__ */ jsx("div", { class: "mb-8 h-12 animate-pulse rounded-xl bg-foreground/5" }) }) }),
|
|
733
|
+
children: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-background text-foreground", props.class), children: /* @__PURE__ */ jsxs("div", { class: "mx-auto max-w-2xl px-6 py-16", children: [
|
|
697
734
|
/* @__PURE__ */ jsx("h1", { class: "mb-8 text-2xl font-bold", children: "Search Documentation" }),
|
|
698
735
|
/* @__PURE__ */ jsxs("div", { class: "relative mb-8", children: [
|
|
699
736
|
/* @__PURE__ */ jsx(
|
|
@@ -704,10 +741,11 @@ function DocSearchPage(props) {
|
|
|
704
741
|
onInput: (e) => setQuery(e.currentTarget.value),
|
|
705
742
|
placeholder: "Type to search\u2026",
|
|
706
743
|
autofocus: true,
|
|
707
|
-
|
|
744
|
+
"aria-label": "Search documentation",
|
|
745
|
+
class: "w-full rounded-xl border border-border bg-card/60 py-3.5 pl-12 pr-4 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
708
746
|
}
|
|
709
747
|
),
|
|
710
|
-
/* @__PURE__ */ jsx(Show, { when: isSearching(), children: /* @__PURE__ */ jsx("div", { class: "absolute right-4 top-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx("div", { class: "h-4 w-4 animate-spin rounded-full border-2 border-
|
|
748
|
+
/* @__PURE__ */ jsx(Show, { when: isSearching(), children: /* @__PURE__ */ jsx("div", { class: "absolute right-4 top-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx("div", { class: "h-4 w-4 animate-spin rounded-full border-2 border-border/60 border-t-primary" }) }) })
|
|
711
749
|
] }),
|
|
712
750
|
/* @__PURE__ */ jsx(Show, { when: results().length > 0, children: /* @__PURE__ */ jsx("div", { class: "space-y-2", children: /* @__PURE__ */ jsx(For, { each: results(), children: (result) => {
|
|
713
751
|
const section = () => sections().find((s) => s.slug === result.sectionSlug);
|
|
@@ -721,24 +759,24 @@ function DocSearchPage(props) {
|
|
|
721
759
|
const s = section();
|
|
722
760
|
if (p && s && props.onSelectPage) props.onSelectPage(p, s);
|
|
723
761
|
},
|
|
724
|
-
class: "flex w-full flex-col gap-1.5 rounded-xl border border-
|
|
762
|
+
class: "flex w-full flex-col gap-1.5 rounded-xl border border-border bg-card/40 p-4 text-left transition-all hover:border-primary/20 hover:bg-card",
|
|
725
763
|
children: [
|
|
726
764
|
/* @__PURE__ */ jsxs("div", { class: "flex items-center gap-2", children: [
|
|
727
|
-
/* @__PURE__ */ jsx("span", { class: "rounded bg-
|
|
728
|
-
/* @__PURE__ */ jsx("span", { class: "text-sm font-medium text-
|
|
765
|
+
/* @__PURE__ */ jsx("span", { class: "rounded bg-primary/20 px-2 py-0.5 text-[10px] font-medium text-primary", children: result.sectionTitle }),
|
|
766
|
+
/* @__PURE__ */ jsx("span", { class: "text-sm font-medium text-foreground/90", children: result.pageTitle })
|
|
729
767
|
] }),
|
|
730
|
-
/* @__PURE__ */ jsx("p", { class: "text-xs leading-relaxed text-
|
|
768
|
+
/* @__PURE__ */ jsx("p", { class: "text-xs leading-relaxed text-foreground/40", children: highlightMatch(result.highlight, query()) })
|
|
731
769
|
]
|
|
732
770
|
}
|
|
733
771
|
);
|
|
734
772
|
} }) }) }),
|
|
735
773
|
/* @__PURE__ */ jsx(Show, { when: query().trim() && results().length === 0 && !isSearching(), children: /* @__PURE__ */ jsxs("div", { class: "flex flex-col items-center py-16 text-center", children: [
|
|
736
774
|
/* @__PURE__ */ jsx("div", { class: "mb-4 text-5xl opacity-30", children: "\u{1F50D}" }),
|
|
737
|
-
/* @__PURE__ */ jsx("h3", { class: "text-lg font-medium text-
|
|
775
|
+
/* @__PURE__ */ jsx("h3", { class: "text-lg font-medium text-foreground/60", children: "No results found" })
|
|
738
776
|
] }) }),
|
|
739
777
|
/* @__PURE__ */ jsx(Show, { when: !query().trim(), children: /* @__PURE__ */ jsxs("div", { class: "flex flex-col items-center py-16 text-center", children: [
|
|
740
778
|
/* @__PURE__ */ jsx("div", { class: "mb-4 text-5xl opacity-20", children: "\u{1F4D6}" }),
|
|
741
|
-
/* @__PURE__ */ jsx("p", { class: "text-sm text-
|
|
779
|
+
/* @__PURE__ */ jsx("p", { class: "text-sm text-foreground/30", children: "Start typing to search across all documentation" })
|
|
742
780
|
] }) })
|
|
743
781
|
] }) })
|
|
744
782
|
}
|
|
@@ -792,18 +830,18 @@ function DocsAdminPage(props) {
|
|
|
792
830
|
Show,
|
|
793
831
|
{
|
|
794
832
|
when: props.tree?.() !== void 0,
|
|
795
|
-
fallback: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-
|
|
796
|
-
children: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-
|
|
833
|
+
fallback: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-background px-6 py-12", props.class), children: /* @__PURE__ */ jsx("div", { class: "mx-auto max-w-6xl", children: /* @__PURE__ */ jsx("div", { class: "mb-8 h-10 w-48 animate-pulse rounded bg-muted/60" }) }) }),
|
|
834
|
+
children: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-background text-foreground", props.class), children: /* @__PURE__ */ jsxs("div", { class: "mx-auto max-w-6xl px-6 py-12", children: [
|
|
797
835
|
/* @__PURE__ */ jsx("h1", { class: "mb-8 text-2xl font-bold", children: "Docs Admin" }),
|
|
798
836
|
/* @__PURE__ */ jsxs("div", { class: "grid gap-6 md:grid-cols-2", children: [
|
|
799
|
-
/* @__PURE__ */ jsxs("div", { class: "rounded-xl border border-
|
|
837
|
+
/* @__PURE__ */ jsxs("div", { class: "rounded-xl border border-border bg-card/40 p-5", children: [
|
|
800
838
|
/* @__PURE__ */ jsxs("div", { class: "mb-4 flex items-center justify-between", children: [
|
|
801
|
-
/* @__PURE__ */ jsx("h2", { class: "text-lg font-semibold text-
|
|
802
|
-
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowSF(!showSF()), class: "rounded-lg bg-
|
|
839
|
+
/* @__PURE__ */ jsx("h2", { class: "text-lg font-semibold text-foreground", children: "Sections" }),
|
|
840
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowSF(!showSF()), class: "rounded-lg bg-primary px-3 py-1.5 text-xs font-medium hover:bg-primary/90", children: "+ Add" })
|
|
803
841
|
] }),
|
|
804
|
-
/* @__PURE__ */ jsx(Show, { when: showSF(), children: /* @__PURE__ */ jsxs("div", { class: "mb-4 space-y-2 rounded-lg border border-
|
|
842
|
+
/* @__PURE__ */ jsx(Show, { when: showSF(), children: /* @__PURE__ */ jsxs("div", { class: "mb-4 space-y-2 rounded-lg border border-border bg-card/60 p-4", children: [
|
|
805
843
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-section-title", children: [
|
|
806
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
844
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Title" }),
|
|
807
845
|
/* @__PURE__ */ jsx(
|
|
808
846
|
"input",
|
|
809
847
|
{
|
|
@@ -812,12 +850,12 @@ function DocsAdminPage(props) {
|
|
|
812
850
|
placeholder: "Getting Started",
|
|
813
851
|
value: sectionForm().title,
|
|
814
852
|
onInput: (e) => setSectionForm({ ...sectionForm(), title: e.currentTarget.value }),
|
|
815
|
-
class: "w-full rounded-lg border border-
|
|
853
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
816
854
|
}
|
|
817
855
|
)
|
|
818
856
|
] }),
|
|
819
857
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-section-slug", children: [
|
|
820
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
858
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Slug" }),
|
|
821
859
|
/* @__PURE__ */ jsx(
|
|
822
860
|
"input",
|
|
823
861
|
{
|
|
@@ -826,12 +864,12 @@ function DocsAdminPage(props) {
|
|
|
826
864
|
placeholder: "getting-started",
|
|
827
865
|
value: sectionForm().slug,
|
|
828
866
|
onInput: (e) => setSectionForm({ ...sectionForm(), slug: e.currentTarget.value }),
|
|
829
|
-
class: "w-full rounded-lg border border-
|
|
867
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
830
868
|
}
|
|
831
869
|
)
|
|
832
870
|
] }),
|
|
833
871
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-section-icon", children: [
|
|
834
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
872
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Icon" }),
|
|
835
873
|
/* @__PURE__ */ jsx(
|
|
836
874
|
"input",
|
|
837
875
|
{
|
|
@@ -840,12 +878,12 @@ function DocsAdminPage(props) {
|
|
|
840
878
|
placeholder: "\u{1F4DA}",
|
|
841
879
|
value: sectionForm().icon,
|
|
842
880
|
onInput: (e) => setSectionForm({ ...sectionForm(), icon: e.currentTarget.value }),
|
|
843
|
-
class: "w-full rounded-lg border border-
|
|
881
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
844
882
|
}
|
|
845
883
|
)
|
|
846
884
|
] }),
|
|
847
885
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-section-description", children: [
|
|
848
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
886
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Description" }),
|
|
849
887
|
/* @__PURE__ */ jsx(
|
|
850
888
|
"input",
|
|
851
889
|
{
|
|
@@ -854,19 +892,19 @@ function DocsAdminPage(props) {
|
|
|
854
892
|
placeholder: "Overview pages and onboarding guides.",
|
|
855
893
|
value: sectionForm().description,
|
|
856
894
|
onInput: (e) => setSectionForm({ ...sectionForm(), description: e.currentTarget.value }),
|
|
857
|
-
class: "w-full rounded-lg border border-
|
|
895
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
858
896
|
}
|
|
859
897
|
)
|
|
860
898
|
] }),
|
|
861
899
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-section-access", children: [
|
|
862
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
900
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Access" }),
|
|
863
901
|
/* @__PURE__ */ jsxs(
|
|
864
902
|
"select",
|
|
865
903
|
{
|
|
866
904
|
id: "docs-admin-section-access",
|
|
867
905
|
value: sectionForm().access,
|
|
868
906
|
onChange: (e) => setSectionForm({ ...sectionForm(), access: toDocAccess(e.currentTarget.value) }),
|
|
869
|
-
class: "w-full rounded-lg border border-
|
|
907
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20",
|
|
870
908
|
children: [
|
|
871
909
|
/* @__PURE__ */ jsx("option", { value: "public", children: "Public" }),
|
|
872
910
|
/* @__PURE__ */ jsx("option", { value: "team", children: "Team" }),
|
|
@@ -882,20 +920,28 @@ function DocsAdminPage(props) {
|
|
|
882
920
|
type: "button",
|
|
883
921
|
disabled: !canCreateSection(),
|
|
884
922
|
onClick: async () => {
|
|
885
|
-
await props.admin.createSection({
|
|
923
|
+
await props.admin.createSection({
|
|
924
|
+
...sectionForm(),
|
|
925
|
+
order: sections().length,
|
|
926
|
+
icon: sectionForm().icon || void 0,
|
|
927
|
+
description: sectionForm().description || void 0
|
|
928
|
+
});
|
|
886
929
|
setSectionForm(initialSectionForm());
|
|
887
930
|
setShowSF(false);
|
|
888
931
|
},
|
|
889
|
-
class: "rounded-lg bg-
|
|
932
|
+
class: "rounded-lg bg-primary px-4 py-2 text-xs font-medium disabled:cursor-not-allowed disabled:opacity-40 hover:bg-primary/90",
|
|
890
933
|
children: "Create"
|
|
891
934
|
}
|
|
892
935
|
),
|
|
893
|
-
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowSF(false), class: "rounded-lg border border-
|
|
936
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowSF(false), class: "rounded-lg border border-border px-4 py-2 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground", children: "Cancel" })
|
|
894
937
|
] })
|
|
895
938
|
] }) }),
|
|
896
939
|
/* @__PURE__ */ jsxs("div", { class: "space-y-1", children: [
|
|
897
|
-
/* @__PURE__ */ jsx(Show, { when: sections().length === 0, children: /* @__PURE__ */ jsx("p", { class: "py-8 text-center text-sm text-
|
|
898
|
-
/* @__PURE__ */ jsx(For, { each: sections(), children: (section) => /* @__PURE__ */ jsxs("div", { class:
|
|
940
|
+
/* @__PURE__ */ jsx(Show, { when: sections().length === 0, children: /* @__PURE__ */ jsx("p", { class: "py-8 text-center text-sm text-muted-foreground", children: "No sections" }) }),
|
|
941
|
+
/* @__PURE__ */ jsx(For, { each: sections(), children: (section) => /* @__PURE__ */ jsxs("div", { class: cn(
|
|
942
|
+
"group flex items-center gap-2 rounded-lg px-3 py-2.5",
|
|
943
|
+
selectedId() === section.id ? "bg-primary/15 text-primary" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
944
|
+
), children: [
|
|
899
945
|
/* @__PURE__ */ jsxs(
|
|
900
946
|
"button",
|
|
901
947
|
{
|
|
@@ -917,7 +963,7 @@ function DocsAdminPage(props) {
|
|
|
917
963
|
e.stopPropagation();
|
|
918
964
|
if (confirm(`Delete "${section.title}"?`)) props.admin.deleteSection(section.id);
|
|
919
965
|
},
|
|
920
|
-
class: "rounded p-1 text-
|
|
966
|
+
class: "rounded p-1 text-muted-foreground/60 opacity-0 transition-opacity group-hover:opacity-100 hover:text-destructive",
|
|
921
967
|
"aria-label": `Delete section ${section.title}`,
|
|
922
968
|
children: "\u2715"
|
|
923
969
|
}
|
|
@@ -925,15 +971,15 @@ function DocsAdminPage(props) {
|
|
|
925
971
|
] }) })
|
|
926
972
|
] })
|
|
927
973
|
] }),
|
|
928
|
-
/* @__PURE__ */ jsxs("div", { class: "rounded-xl border border-
|
|
974
|
+
/* @__PURE__ */ jsxs("div", { class: "rounded-xl border border-border bg-card/40 p-5", children: [
|
|
929
975
|
/* @__PURE__ */ jsxs("div", { class: "mb-4 flex items-center justify-between", children: [
|
|
930
|
-
/* @__PURE__ */ jsx("h2", { class: "text-lg font-semibold text-
|
|
931
|
-
/* @__PURE__ */ jsx(Show, { when: selectedSection(), children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowPF(!showPF()), class: "rounded-lg bg-
|
|
976
|
+
/* @__PURE__ */ jsx("h2", { class: "text-lg font-semibold text-foreground", children: selectedSection() ? `Pages \u2014 ${selectedSection()?.title}` : "Pages" }),
|
|
977
|
+
/* @__PURE__ */ jsx(Show, { when: selectedSection(), children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowPF(!showPF()), class: "rounded-lg bg-primary px-3 py-1.5 text-xs font-medium hover:bg-primary/90", children: "+ Add" }) })
|
|
932
978
|
] }),
|
|
933
|
-
/* @__PURE__ */ jsx(Show, { when: !selectedSection(), children: /* @__PURE__ */ jsx("p", { class: "py-16 text-center text-sm text-
|
|
934
|
-
/* @__PURE__ */ jsx(Show, { when: showPF() && selectedSection(), children: /* @__PURE__ */ jsxs("div", { class: "mb-4 space-y-2 rounded-lg border border-
|
|
979
|
+
/* @__PURE__ */ jsx(Show, { when: !selectedSection(), children: /* @__PURE__ */ jsx("p", { class: "py-16 text-center text-sm text-muted-foreground", children: "Select a section" }) }),
|
|
980
|
+
/* @__PURE__ */ jsx(Show, { when: showPF() && selectedSection(), children: /* @__PURE__ */ jsxs("div", { class: "mb-4 space-y-2 rounded-lg border border-border bg-card/60 p-4", children: [
|
|
935
981
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-page-title", children: [
|
|
936
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
982
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Title" }),
|
|
937
983
|
/* @__PURE__ */ jsx(
|
|
938
984
|
"input",
|
|
939
985
|
{
|
|
@@ -942,12 +988,12 @@ function DocsAdminPage(props) {
|
|
|
942
988
|
placeholder: "Install the package",
|
|
943
989
|
value: pageForm().title,
|
|
944
990
|
onInput: (e) => setPageForm({ ...pageForm(), title: e.currentTarget.value }),
|
|
945
|
-
class: "w-full rounded-lg border border-
|
|
991
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
946
992
|
}
|
|
947
993
|
)
|
|
948
994
|
] }),
|
|
949
995
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-page-slug", children: [
|
|
950
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
996
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Slug" }),
|
|
951
997
|
/* @__PURE__ */ jsx(
|
|
952
998
|
"input",
|
|
953
999
|
{
|
|
@@ -956,12 +1002,12 @@ function DocsAdminPage(props) {
|
|
|
956
1002
|
placeholder: "install",
|
|
957
1003
|
value: pageForm().slug,
|
|
958
1004
|
onInput: (e) => setPageForm({ ...pageForm(), slug: e.currentTarget.value }),
|
|
959
|
-
class: "w-full rounded-lg border border-
|
|
1005
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
960
1006
|
}
|
|
961
1007
|
)
|
|
962
1008
|
] }),
|
|
963
1009
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-page-content", children: [
|
|
964
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
1010
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Content (MDX)" }),
|
|
965
1011
|
/* @__PURE__ */ jsx(
|
|
966
1012
|
"textarea",
|
|
967
1013
|
{
|
|
@@ -970,12 +1016,12 @@ function DocsAdminPage(props) {
|
|
|
970
1016
|
value: pageForm().content,
|
|
971
1017
|
onInput: (e) => setPageForm({ ...pageForm(), content: e.currentTarget.value }),
|
|
972
1018
|
rows: 4,
|
|
973
|
-
class: "w-full rounded-lg border border-
|
|
1019
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20 resize-y"
|
|
974
1020
|
}
|
|
975
1021
|
)
|
|
976
1022
|
] }),
|
|
977
1023
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-page-tags", children: [
|
|
978
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
1024
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Tags" }),
|
|
979
1025
|
/* @__PURE__ */ jsx(
|
|
980
1026
|
"input",
|
|
981
1027
|
{
|
|
@@ -984,19 +1030,19 @@ function DocsAdminPage(props) {
|
|
|
984
1030
|
placeholder: "setup, install",
|
|
985
1031
|
value: pageForm().tags,
|
|
986
1032
|
onInput: (e) => setPageForm({ ...pageForm(), tags: e.currentTarget.value }),
|
|
987
|
-
class: "w-full rounded-lg border border-
|
|
1033
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20"
|
|
988
1034
|
}
|
|
989
1035
|
)
|
|
990
1036
|
] }),
|
|
991
1037
|
/* @__PURE__ */ jsxs("label", { class: "block space-y-1", for: "docs-admin-page-access", children: [
|
|
992
|
-
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-
|
|
1038
|
+
/* @__PURE__ */ jsx("span", { class: "text-xs font-medium text-muted-foreground", children: "Access" }),
|
|
993
1039
|
/* @__PURE__ */ jsxs(
|
|
994
1040
|
"select",
|
|
995
1041
|
{
|
|
996
1042
|
id: "docs-admin-page-access",
|
|
997
1043
|
value: pageForm().access,
|
|
998
1044
|
onChange: (e) => setPageForm({ ...pageForm(), access: toDocAccess(e.currentTarget.value) }),
|
|
999
|
-
class: "w-full rounded-lg border border-
|
|
1045
|
+
class: "w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20",
|
|
1000
1046
|
children: [
|
|
1001
1047
|
/* @__PURE__ */ jsx("option", { value: "public", children: "Public" }),
|
|
1002
1048
|
/* @__PURE__ */ jsx("option", { value: "team", children: "Team" }),
|
|
@@ -1018,25 +1064,25 @@ function DocsAdminPage(props) {
|
|
|
1018
1064
|
setPageForm(initialPageForm());
|
|
1019
1065
|
setShowPF(false);
|
|
1020
1066
|
},
|
|
1021
|
-
class: "rounded-lg bg-
|
|
1067
|
+
class: "rounded-lg bg-primary px-4 py-2 text-xs font-medium disabled:cursor-not-allowed disabled:opacity-40 hover:bg-primary/90",
|
|
1022
1068
|
children: "Create"
|
|
1023
1069
|
}
|
|
1024
1070
|
),
|
|
1025
|
-
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowPF(false), class: "rounded-lg border border-
|
|
1071
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setShowPF(false), class: "rounded-lg border border-border px-4 py-2 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground", children: "Cancel" })
|
|
1026
1072
|
] })
|
|
1027
1073
|
] }) }),
|
|
1028
|
-
/* @__PURE__ */ jsx(Show, { when: selectedSection() && sectionPages().length > 0, children: /* @__PURE__ */ jsx("div", { class: "space-y-1", children: /* @__PURE__ */ jsx(For, { each: sectionPages(), children: (page) => /* @__PURE__ */ jsxs("div", { class: "group flex items-center gap-3 rounded-lg px-3 py-2.5 hover:bg-
|
|
1074
|
+
/* @__PURE__ */ jsx(Show, { when: selectedSection() && sectionPages().length > 0, children: /* @__PURE__ */ jsx("div", { class: "space-y-1", children: /* @__PURE__ */ jsx(For, { each: sectionPages(), children: (page) => /* @__PURE__ */ jsxs("div", { class: "group flex items-center gap-3 rounded-lg px-3 py-2.5 transition-colors hover:bg-muted", children: [
|
|
1029
1075
|
/* @__PURE__ */ jsxs("div", { class: "flex-1 min-w-0", children: [
|
|
1030
|
-
/* @__PURE__ */ jsx("p", { class: "text-sm font-medium text-
|
|
1031
|
-
/* @__PURE__ */ jsxs("p", { class: "text-[11px] text-
|
|
1076
|
+
/* @__PURE__ */ jsx("p", { class: "text-sm font-medium text-foreground truncate", children: page.title }),
|
|
1077
|
+
/* @__PURE__ */ jsxs("p", { class: "text-[11px] text-muted-foreground", children: [
|
|
1032
1078
|
"/",
|
|
1033
1079
|
page.slug
|
|
1034
1080
|
] })
|
|
1035
1081
|
] }),
|
|
1036
|
-
/* @__PURE__ */ jsx("span", { class:
|
|
1082
|
+
/* @__PURE__ */ jsx("span", { class: cn("shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium", page.status === "published" ? "bg-success/15 text-success" : page.status === "archived" ? "bg-muted text-muted-foreground" : "bg-warning/15 text-warning"), children: page.status }),
|
|
1037
1083
|
/* @__PURE__ */ jsxs("div", { class: "flex items-center gap-1 opacity-0 group-hover:opacity-100", children: [
|
|
1038
|
-
/* @__PURE__ */ jsx(Show, { when: page.status === "draft", children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => props.admin.publishPage(page.id), class: "rounded px-2 py-1 text-[11px] text-
|
|
1039
|
-
/* @__PURE__ */ jsx(Show, { when: page.status === "published", children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => props.admin.archivePage(page.id), class: "rounded px-2 py-1 text-[11px] text-
|
|
1084
|
+
/* @__PURE__ */ jsx(Show, { when: page.status === "draft", children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => props.admin.publishPage(page.id), class: "rounded px-2 py-1 text-[11px] text-success hover:bg-success/10", children: "Publish" }) }),
|
|
1085
|
+
/* @__PURE__ */ jsx(Show, { when: page.status === "published", children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => props.admin.archivePage(page.id), class: "rounded px-2 py-1 text-[11px] text-warning hover:bg-warning/10", children: "Archive" }) }),
|
|
1040
1086
|
/* @__PURE__ */ jsx(
|
|
1041
1087
|
"button",
|
|
1042
1088
|
{
|
|
@@ -1044,14 +1090,14 @@ function DocsAdminPage(props) {
|
|
|
1044
1090
|
onClick: () => {
|
|
1045
1091
|
if (confirm(`Delete "${page.title}"?`)) props.admin.deletePage(page.id);
|
|
1046
1092
|
},
|
|
1047
|
-
class: "rounded p-1 text-
|
|
1093
|
+
class: "rounded p-1 text-muted-foreground/60 hover:text-destructive",
|
|
1048
1094
|
"aria-label": `Delete page ${page.title}`,
|
|
1049
1095
|
children: "\u2715"
|
|
1050
1096
|
}
|
|
1051
1097
|
)
|
|
1052
1098
|
] })
|
|
1053
1099
|
] }) }) }) }),
|
|
1054
|
-
/* @__PURE__ */ jsx(Show, { when: selectedSection() && sectionPages().length === 0 && !showPF(), children: /* @__PURE__ */ jsx("p", { class: "py-12 text-center text-sm text-
|
|
1100
|
+
/* @__PURE__ */ jsx(Show, { when: selectedSection() && sectionPages().length === 0 && !showPF(), children: /* @__PURE__ */ jsx("p", { class: "py-12 text-center text-sm text-muted-foreground", children: "No pages in this section" }) })
|
|
1055
1101
|
] })
|
|
1056
1102
|
] })
|
|
1057
1103
|
] }) })
|
|
@@ -1111,10 +1157,10 @@ function DocsIndexPage(props) {
|
|
|
1111
1157
|
Show,
|
|
1112
1158
|
{
|
|
1113
1159
|
when: !docs.isLoading(),
|
|
1114
|
-
fallback: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-
|
|
1115
|
-
/* @__PURE__ */ jsx("div", { class: "mb-10 h-10 w-64 animate-pulse rounded-lg bg-
|
|
1116
|
-
/* @__PURE__ */ jsx("div", { class: "mb-8 h-12 w-full max-w-xl animate-pulse rounded-xl bg-
|
|
1117
|
-
/* @__PURE__ */ jsx("div", { class: "grid gap-4 md:grid-cols-2 lg:grid-cols-3", children: /* @__PURE__ */ jsx(For, { each: Array(6), children: () => /* @__PURE__ */ jsx("div", { class: "h-36 animate-pulse rounded-xl bg-
|
|
1160
|
+
fallback: /* @__PURE__ */ jsx("div", { class: cn("min-h-screen bg-background px-6 py-16", props.class), children: /* @__PURE__ */ jsxs("div", { class: "mx-auto max-w-5xl", children: [
|
|
1161
|
+
/* @__PURE__ */ jsx("div", { class: "mb-10 h-10 w-64 animate-pulse rounded-lg bg-foreground/5" }),
|
|
1162
|
+
/* @__PURE__ */ jsx("div", { class: "mb-8 h-12 w-full max-w-xl animate-pulse rounded-xl bg-foreground/5" }),
|
|
1163
|
+
/* @__PURE__ */ jsx("div", { class: "grid gap-4 md:grid-cols-2 lg:grid-cols-3", children: /* @__PURE__ */ jsx(For, { each: Array(6), children: () => /* @__PURE__ */ jsx("div", { class: "h-36 animate-pulse rounded-xl bg-foreground/5" }) }) })
|
|
1118
1164
|
] }) }),
|
|
1119
1165
|
children: /* @__PURE__ */ jsx(
|
|
1120
1166
|
Show,
|
|
@@ -1124,30 +1170,31 @@ function DocsIndexPage(props) {
|
|
|
1124
1170
|
"div",
|
|
1125
1171
|
{
|
|
1126
1172
|
class: cn(
|
|
1127
|
-
"flex min-h-screen flex-col items-center justify-center bg-
|
|
1173
|
+
"flex min-h-screen flex-col items-center justify-center bg-background text-center",
|
|
1128
1174
|
props.class
|
|
1129
1175
|
),
|
|
1130
1176
|
children: [
|
|
1131
1177
|
/* @__PURE__ */ jsx("div", { class: "mb-4 text-6xl opacity-30", children: "\u{1F4DA}" }),
|
|
1132
|
-
/* @__PURE__ */ jsx("h2", { class: "mb-2 text-xl font-semibold text-
|
|
1133
|
-
/* @__PURE__ */ jsx("p", { class: "max-w-sm text-sm text-
|
|
1178
|
+
/* @__PURE__ */ jsx("h2", { class: "mb-2 text-xl font-semibold text-foreground/80", children: "No documentation yet" }),
|
|
1179
|
+
/* @__PURE__ */ jsx("p", { class: "max-w-sm text-sm text-foreground/40", children: "Create your first section and pages to get started." })
|
|
1134
1180
|
]
|
|
1135
1181
|
}
|
|
1136
1182
|
),
|
|
1137
|
-
children: /* @__PURE__ */ jsxs("div", { class: cn("min-h-screen bg-
|
|
1183
|
+
children: /* @__PURE__ */ jsxs("div", { class: cn("min-h-screen bg-background text-foreground", props.class), children: [
|
|
1138
1184
|
/* @__PURE__ */ jsxs("div", { class: "mx-auto max-w-5xl px-6 py-16", children: [
|
|
1139
1185
|
/* @__PURE__ */ jsx("h1", { class: "mb-2 text-4xl font-bold tracking-tight", children: "Documentation" }),
|
|
1140
|
-
/* @__PURE__ */ jsx("p", { class: "mb-10 text-lg text-
|
|
1186
|
+
/* @__PURE__ */ jsx("p", { class: "mb-10 text-lg text-foreground/50", children: "Browse guides, API references, and tutorials." }),
|
|
1141
1187
|
/* @__PURE__ */ jsxs(
|
|
1142
1188
|
"button",
|
|
1143
1189
|
{
|
|
1144
1190
|
type: "button",
|
|
1145
1191
|
onClick: () => setIsSearchOpen(true),
|
|
1146
|
-
|
|
1192
|
+
"aria-haspopup": "dialog",
|
|
1193
|
+
class: "mb-12 flex w-full max-w-xl items-center gap-3 rounded-xl border border-border bg-card/60 px-5 py-3.5 text-left text-sm text-muted-foreground transition-colors hover:border-primary/20 hover:bg-card",
|
|
1147
1194
|
children: [
|
|
1148
1195
|
/* @__PURE__ */ jsx("svg", { "aria-hidden": "true", class: "h-4.5 w-4.5 shrink-0", viewBox: "0 0 20 20", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { "fill-rule": "evenodd", d: "M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z", "clip-rule": "evenodd" }) }),
|
|
1149
1196
|
/* @__PURE__ */ jsx("span", { class: "flex-1", children: "Search documentation\u2026" }),
|
|
1150
|
-
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-
|
|
1197
|
+
/* @__PURE__ */ jsx("kbd", { class: "rounded border border-border/60 bg-foreground/5 px-2 py-0.5 text-[11px]", children: "\u2318K" })
|
|
1151
1198
|
]
|
|
1152
1199
|
}
|
|
1153
1200
|
),
|
|
@@ -1159,12 +1206,12 @@ function DocsIndexPage(props) {
|
|
|
1159
1206
|
const fp = section.pages?.[0];
|
|
1160
1207
|
if (fp && props.onSelectPage) props.onSelectPage(fp, section);
|
|
1161
1208
|
},
|
|
1162
|
-
class: "group flex flex-col rounded-xl border border-
|
|
1209
|
+
class: "group flex flex-col rounded-xl border border-border bg-card/40 p-5 text-left transition-all hover:border-primary/30 hover:bg-card",
|
|
1163
1210
|
children: [
|
|
1164
1211
|
/* @__PURE__ */ jsx(Show, { when: section.icon, children: /* @__PURE__ */ jsx("span", { class: "mb-3 text-2xl", children: section.icon }) }),
|
|
1165
|
-
/* @__PURE__ */ jsx("h3", { class: "mb-1.5 text-base font-semibold text-
|
|
1166
|
-
/* @__PURE__ */ jsx(Show, { when: section.description, children: /* @__PURE__ */ jsx("p", { class: "mb-3 flex-1 text-sm leading-relaxed text-
|
|
1167
|
-
/* @__PURE__ */ jsx("div", { class: "text-xs text-
|
|
1212
|
+
/* @__PURE__ */ jsx("h3", { class: "mb-1.5 text-base font-semibold text-foreground/90 group-hover:text-foreground", children: section.title }),
|
|
1213
|
+
/* @__PURE__ */ jsx(Show, { when: section.description, children: /* @__PURE__ */ jsx("p", { class: "mb-3 flex-1 text-sm leading-relaxed text-foreground/40", children: section.description }) }),
|
|
1214
|
+
/* @__PURE__ */ jsx("div", { class: "text-xs text-foreground/25", children: /* @__PURE__ */ jsxs("span", { children: [
|
|
1168
1215
|
section.pageCount ?? 0,
|
|
1169
1216
|
" pages"
|
|
1170
1217
|
] }) })
|
|
@@ -1271,9 +1318,9 @@ function DocViewPage(props) {
|
|
|
1271
1318
|
Show,
|
|
1272
1319
|
{
|
|
1273
1320
|
when: !docs.isLoading() && props.page() !== void 0,
|
|
1274
|
-
fallback: /* @__PURE__ */ jsxs("div", { class: cn("flex min-h-screen bg-
|
|
1275
|
-
/* @__PURE__ */ jsx("div", { class: "hidden w-[260px] shrink-0 border-r border-
|
|
1276
|
-
/* @__PURE__ */ jsx("div", { class: "flex-1 px-10 py-8", children: /* @__PURE__ */ jsx("div", { class: "mx-auto max-w-3xl space-y-4", children: /* @__PURE__ */ jsx("div", { class: "h-10 w-96 animate-pulse rounded bg-
|
|
1321
|
+
fallback: /* @__PURE__ */ jsxs("div", { class: cn("flex min-h-screen bg-background", props.class), children: [
|
|
1322
|
+
/* @__PURE__ */ jsx("div", { class: "hidden w-[260px] shrink-0 border-r border-border bg-card lg:block", children: /* @__PURE__ */ jsx("div", { class: "space-y-3 p-4", children: Array.from({ length: 8 }).map(() => /* @__PURE__ */ jsx("div", { class: "h-8 animate-pulse rounded-lg bg-foreground/5" })) }) }),
|
|
1323
|
+
/* @__PURE__ */ jsx("div", { class: "flex-1 px-10 py-8", children: /* @__PURE__ */ jsx("div", { class: "mx-auto max-w-3xl space-y-4", children: /* @__PURE__ */ jsx("div", { class: "h-10 w-96 animate-pulse rounded bg-foreground/5" }) }) })
|
|
1277
1324
|
] }),
|
|
1278
1325
|
children: /* @__PURE__ */ jsx(
|
|
1279
1326
|
Show,
|
|
@@ -1283,12 +1330,12 @@ function DocViewPage(props) {
|
|
|
1283
1330
|
"div",
|
|
1284
1331
|
{
|
|
1285
1332
|
class: cn(
|
|
1286
|
-
"flex min-h-screen flex-col items-center justify-center bg-
|
|
1333
|
+
"flex min-h-screen flex-col items-center justify-center bg-background text-center",
|
|
1287
1334
|
props.class
|
|
1288
1335
|
),
|
|
1289
1336
|
children: [
|
|
1290
1337
|
/* @__PURE__ */ jsx("div", { class: "mb-4 text-6xl opacity-30", children: "\u{1F50D}" }),
|
|
1291
|
-
/* @__PURE__ */ jsx("h2", { class: "mb-2 text-xl font-semibold text-
|
|
1338
|
+
/* @__PURE__ */ jsx("h2", { class: "mb-2 text-xl font-semibold text-foreground/80", children: "Page not found" })
|
|
1292
1339
|
]
|
|
1293
1340
|
}
|
|
1294
1341
|
),
|
|
@@ -1305,7 +1352,7 @@ function DocViewPage(props) {
|
|
|
1305
1352
|
children: [
|
|
1306
1353
|
/* @__PURE__ */ jsxs("div", { class: "mb-8", children: [
|
|
1307
1354
|
/* @__PURE__ */ jsx("h1", { class: "mb-3 text-3xl font-bold tracking-tight", children: page().title }),
|
|
1308
|
-
/* @__PURE__ */ jsxs("div", { class: "flex flex-wrap items-center gap-4 text-sm text-
|
|
1355
|
+
/* @__PURE__ */ jsxs("div", { class: "flex flex-wrap items-center gap-4 text-sm text-foreground/40", children: [
|
|
1309
1356
|
/* @__PURE__ */ jsx("span", { children: page().author.name }),
|
|
1310
1357
|
/* @__PURE__ */ jsx(Show, { when: page().readingTime > 0, children: /* @__PURE__ */ jsxs("span", { children: [
|
|
1311
1358
|
page().readingTime,
|
|
@@ -1318,7 +1365,7 @@ function DocViewPage(props) {
|
|
|
1318
1365
|
] })
|
|
1319
1366
|
] }),
|
|
1320
1367
|
/* @__PURE__ */ jsx(DocPage, { page: page() }),
|
|
1321
|
-
/* @__PURE__ */ jsx("div", { class: "mt-10 flex items-center justify-between border-t border-
|
|
1368
|
+
/* @__PURE__ */ jsx("div", { class: "mt-10 flex items-center justify-between border-t border-border/40 pt-6", children: /* @__PURE__ */ jsx(EditButton, { pageSlug: page().slug, editUrl: props.editPageUrl }) }),
|
|
1322
1369
|
/* @__PURE__ */ jsx(PageNavigation, { prev: nav().prev, next: nav().next })
|
|
1323
1370
|
]
|
|
1324
1371
|
}
|