@fumadocs/base-ui 16.7.0 → 16.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/css/generated/docs.css +5 -4
  2. package/css/generated/flux.css +3 -3
  3. package/css/generated/home.css +2 -3
  4. package/css/generated/notebook.css +4 -4
  5. package/css/generated/shared.css +2 -1
  6. package/dist/components/accordion.js +2 -2
  7. package/dist/components/dialog/search.js +2 -2
  8. package/dist/components/files.js +3 -3
  9. package/dist/components/heading.js +2 -2
  10. package/dist/components/sidebar/tabs/dropdown.js +1 -1
  11. package/dist/components/toc/index.d.ts +3 -2
  12. package/dist/components/toc/index.js +12 -2
  13. package/dist/components/ui/button.d.ts +1 -1
  14. package/dist/layouts/docs/client.d.ts +3 -3
  15. package/dist/layouts/docs/client.js +20 -23
  16. package/dist/layouts/docs/index.d.ts +1 -1
  17. package/dist/layouts/docs/page/index.d.ts +91 -3
  18. package/dist/layouts/docs/page/index.js +67 -7
  19. package/dist/layouts/docs/page/slots/breadcrumb.js +3 -1
  20. package/dist/layouts/docs/page/slots/container.js +2 -1
  21. package/dist/layouts/docs/page/slots/footer.js +1 -0
  22. package/dist/layouts/docs/page/slots/toc.d.ts +29 -1
  23. package/dist/layouts/docs/page/slots/toc.js +137 -4
  24. package/dist/layouts/docs/slots/container.js +2 -1
  25. package/dist/layouts/docs/slots/header.js +1 -0
  26. package/dist/layouts/docs/slots/sidebar.js +7 -7
  27. package/dist/layouts/flux/index.d.ts +4 -4
  28. package/dist/layouts/flux/index.js +8 -11
  29. package/dist/layouts/flux/page/index.d.ts +79 -3
  30. package/dist/layouts/flux/page/index.js +61 -7
  31. package/dist/layouts/flux/page/slots/breadcrumb.js +1 -0
  32. package/dist/layouts/flux/page/slots/container.js +2 -1
  33. package/dist/layouts/flux/page/slots/footer.js +1 -0
  34. package/dist/layouts/flux/page/slots/toc.d.ts +4 -1
  35. package/dist/layouts/flux/page/slots/toc.js +3 -2
  36. package/dist/layouts/flux/slots/container.js +1 -0
  37. package/dist/layouts/home/index.d.ts +3 -3
  38. package/dist/layouts/home/index.js +6 -8
  39. package/dist/layouts/home/slots/container.js +1 -0
  40. package/dist/layouts/home/slots/header.d.ts +1 -1
  41. package/dist/layouts/home/slots/header.js +5 -5
  42. package/dist/layouts/notebook/client.d.ts +3 -3
  43. package/dist/layouts/notebook/client.js +15 -18
  44. package/dist/layouts/notebook/index.d.ts +1 -1
  45. package/dist/layouts/notebook/page/index.d.ts +91 -3
  46. package/dist/layouts/notebook/page/index.js +67 -7
  47. package/dist/layouts/notebook/page/slots/breadcrumb.js +1 -0
  48. package/dist/layouts/notebook/page/slots/container.js +2 -1
  49. package/dist/layouts/notebook/page/slots/footer.js +1 -0
  50. package/dist/layouts/notebook/page/slots/toc.d.ts +29 -1
  51. package/dist/layouts/notebook/page/slots/toc.js +136 -4
  52. package/dist/layouts/notebook/slots/container.js +1 -0
  53. package/dist/layouts/notebook/slots/sidebar.js +5 -5
  54. package/dist/layouts/shared/client.d.ts +8 -8
  55. package/dist/layouts/shared/client.js +4 -4
  56. package/dist/layouts/shared/index.d.ts +6 -6
  57. package/dist/layouts/shared/page-actions.d.ts +2 -2
  58. package/dist/layouts/shared/page-actions.js +3 -3
  59. package/dist/layouts/shared/slots/search-trigger.d.ts +3 -3
  60. package/dist/page.d.ts +1 -2
  61. package/dist/page.js +1 -2
  62. package/package.json +4 -6
  63. package/dist/layouts/docs/page/client.d.ts +0 -98
  64. package/dist/layouts/docs/page/client.js +0 -110
  65. package/dist/layouts/docs/page/slots/toc-popover.d.ts +0 -31
  66. package/dist/layouts/docs/page/slots/toc-popover.js +0 -141
  67. package/dist/layouts/flux/page/client.d.ts +0 -82
  68. package/dist/layouts/flux/page/client.js +0 -94
  69. package/dist/layouts/notebook/page/client.d.ts +0 -98
  70. package/dist/layouts/notebook/page/client.js +0 -110
  71. package/dist/layouts/notebook/page/slots/toc-popover.d.ts +0 -31
  72. package/dist/layouts/notebook/page/slots/toc-popover.js +0 -141
@@ -1,141 +0,0 @@
1
- "use client";
2
- import { useI18n } from "../../../../contexts/i18n.js";
3
- import { cn } from "../../../../utils/cn.js";
4
- import { TOCScrollArea, useTOCItems } from "../../../../components/toc/index.js";
5
- import { TOCItems } from "../../../../components/toc/default.js";
6
- import { TOCItems as TOCItems$1 } from "../../../../components/toc/clerk.js";
7
- import { useTreePath } from "../../../../contexts/tree.js";
8
- import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../../../components/ui/collapsible.js";
9
- import { useNotebookLayout } from "../../client.js";
10
- import { createContext, use, useEffect, useEffectEvent, useMemo, useRef, useState } from "react";
11
- import { jsx, jsxs } from "react/jsx-runtime";
12
- import { ChevronDown } from "lucide-react";
13
- import { useActiveAnchor } from "fumadocs-core/toc";
14
- //#region src/layouts/notebook/page/slots/toc-popover.tsx
15
- const TocPopoverContext = createContext(null);
16
- function TOCPopover({ container, trigger, content, header, footer, style }) {
17
- return /* @__PURE__ */ jsxs(PageTOCPopover, {
18
- ...container,
19
- children: [/* @__PURE__ */ jsx(PageTOCPopoverTrigger, { ...trigger }), /* @__PURE__ */ jsxs(PageTOCPopoverContent, {
20
- ...content,
21
- children: [
22
- header,
23
- /* @__PURE__ */ jsx(TOCScrollArea, { children: style === "clerk" ? /* @__PURE__ */ jsx(TOCItems$1, {}) : /* @__PURE__ */ jsx(TOCItems, {}) }),
24
- footer
25
- ]
26
- })]
27
- });
28
- }
29
- function PageTOCPopover({ className, children, ...rest }) {
30
- const ref = useRef(null);
31
- const [open, setOpen] = useState(false);
32
- const { isNavTransparent } = useNotebookLayout();
33
- const onClick = useEffectEvent((e) => {
34
- if (!open) return;
35
- if (ref.current && !ref.current.contains(e.target)) setOpen(false);
36
- });
37
- useEffect(() => {
38
- window.addEventListener("click", onClick);
39
- return () => {
40
- window.removeEventListener("click", onClick);
41
- };
42
- }, []);
43
- return /* @__PURE__ */ jsx(TocPopoverContext, {
44
- value: useMemo(() => ({
45
- open,
46
- setOpen
47
- }), [setOpen, open]),
48
- children: /* @__PURE__ */ jsx(Collapsible, {
49
- open,
50
- onOpenChange: setOpen,
51
- "data-toc-popover": "",
52
- className: cn("sticky top-(--fd-docs-row-2) z-10 [grid-area:toc-popover] h-(--fd-toc-popover-height) xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)]", className),
53
- ...rest,
54
- children: /* @__PURE__ */ jsx("header", {
55
- ref,
56
- className: cn("border-b backdrop-blur-sm transition-colors", (!isNavTransparent || open) && "bg-fd-background/80", open && "shadow-lg"),
57
- children
58
- })
59
- })
60
- });
61
- }
62
- function PageTOCPopoverTrigger({ className, ...props }) {
63
- const { text } = useI18n();
64
- const { open } = use(TocPopoverContext);
65
- const items = useTOCItems();
66
- const active = useActiveAnchor();
67
- const selected = useMemo(() => items.findIndex((item) => active === item.url.slice(1)), [items, active]);
68
- const path = useTreePath().at(-1);
69
- const showItem = selected !== -1 && !open;
70
- return /* @__PURE__ */ jsxs(CollapsibleTrigger, {
71
- className: cn("flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:size-4 md:px-6", className),
72
- "data-toc-popover-trigger": "",
73
- ...props,
74
- children: [
75
- /* @__PURE__ */ jsx(ProgressCircle, {
76
- value: (selected + 1) / Math.max(1, items.length),
77
- max: 1,
78
- className: cn("shrink-0", open && "text-fd-primary")
79
- }),
80
- /* @__PURE__ */ jsxs("span", {
81
- className: "grid flex-1 *:my-auto *:row-start-1 *:col-start-1",
82
- children: [/* @__PURE__ */ jsx("span", {
83
- className: cn("truncate transition-[opacity,translate,color]", open && "text-fd-foreground", showItem && "opacity-0 -translate-y-full pointer-events-none"),
84
- children: path?.name ?? text.toc
85
- }), /* @__PURE__ */ jsx("span", {
86
- className: cn("truncate transition-[opacity,translate]", !showItem && "opacity-0 translate-y-full pointer-events-none"),
87
- children: items[selected]?.title
88
- })]
89
- }),
90
- /* @__PURE__ */ jsx(ChevronDown, { className: cn("shrink-0 transition-transform mx-0.5", open && "rotate-180") })
91
- ]
92
- });
93
- }
94
- function clamp(input, min, max) {
95
- if (input < min) return min;
96
- if (input > max) return max;
97
- return input;
98
- }
99
- function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100, ...restSvgProps }) {
100
- const normalizedValue = clamp(value, min, max);
101
- const radius = (size - strokeWidth) / 2;
102
- const circumference = 2 * Math.PI * radius;
103
- const progress = normalizedValue / max * circumference;
104
- const circleProps = {
105
- cx: size / 2,
106
- cy: size / 2,
107
- r: radius,
108
- fill: "none",
109
- strokeWidth
110
- };
111
- return /* @__PURE__ */ jsxs("svg", {
112
- role: "progressbar",
113
- viewBox: `0 0 ${size} ${size}`,
114
- "aria-valuenow": normalizedValue,
115
- "aria-valuemin": min,
116
- "aria-valuemax": max,
117
- ...restSvgProps,
118
- children: [/* @__PURE__ */ jsx("circle", {
119
- ...circleProps,
120
- className: "stroke-current/25"
121
- }), /* @__PURE__ */ jsx("circle", {
122
- ...circleProps,
123
- stroke: "currentColor",
124
- strokeDasharray: circumference,
125
- strokeDashoffset: circumference - progress,
126
- strokeLinecap: "round",
127
- transform: `rotate(-90 ${size / 2} ${size / 2})`,
128
- className: "transition-all"
129
- })]
130
- });
131
- }
132
- function PageTOCPopoverContent(props) {
133
- return /* @__PURE__ */ jsx(CollapsibleContent, {
134
- "data-toc-popover-content": "",
135
- ...props,
136
- className: cn("flex flex-col px-4 max-h-[50vh] md:px-6", props.className),
137
- children: props.children
138
- });
139
- }
140
- //#endregion
141
- export { TOCPopover };