(globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["object" == typeof document ? document.currentScript : void 0, {
388734: e => {
"use strict";
e.s({
__iconNode: () => r,
default: () => n
});
var t = e.i(180981);
let r = [
["path", {
d: "M17 6.1H3",
key: "wptmhv"
}],
["path", {
d: "M21 12.1H3",
key: "1j38uz"
}],
["path", {
d: "M15.1 18H3",
key: "1nb16a"
}]
],
n = (0, t.default)("Text", r)
},
550702: e => {
"use strict";
e.s({
Text: () => t.default
});
var t = e.i(388734)
},
57281: e => {
"use strict";
e.s({
useColorScheme: () => r
});
var t = e.i(378469);
function r() {
let [e, r] = (0, t.useState)(() => window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
return (0, t.useEffect)(() => {
let e = window.matchMedia("(prefers-color-scheme: dark)"),
t = e => {
r(e.matches ? "dark" : "light")
};
return e.addEventListener("change", t), () => {
e.removeEventListener("change", t)
}
}, []), e
}
},
758904: e => {
"use strict";
e.s({
FaviconHandler: () => n
});
var t = e.i(892988),
r = e.i(57281);
function n() {
let e = (0, r.useColorScheme)();
return (0, t.jsx)("link", {
href: `/images/product-icons/repo-${e}-32x32.png`,
rel: "icon",
sizes: "any"
})
}
},
688450: e => {
"use strict";
e.s({
Close: () => er,
Content: () => X,
Description: () => et,
Dialog: () => j,
DialogContent: () => R,
DialogOverlay: () => N,
DialogTitle: () => q,
Overlay: () => Y,
Portal: () => G,
Root: () => K,
Title: () => ee,
Trigger: () => Q
});
var t = e.i(378469),
r = e.i(987373),
n = e.i(199933),
a = e.i(150924),
o = e.i(633599),
i = e.i(68945),
s = e.i(519876),
c = e.i(212582),
u = e.i(776313),
l = e.i(656310),
d = e.i(645488),
f = e.i(616542),
h = e.i(238621),
m = e.i(790583),
p = e.i(211049),
v = e.i(892988),
g = "Dialog",
[y, b] = (0, a.createContextScope)(g),
[w, x] = y(g),
j = e => {
let {
__scopeDialog: r,
children: n,
open: a,
defaultOpen: s,
onOpenChange: c,
modal: u = !0
} = e, l = (0, t.useRef)(null), d = (0, t.useRef)(null), [f = !1, h] = (0, i.useControllableState)({
prop: a,
defaultProp: s,
onChange: c
});
return (0, v.jsx)(w, {
scope: r,
triggerRef: l,
contentRef: d,
contentId: (0, o.useId)(),
titleId: (0, o.useId)(),
descriptionId: (0, o.useId)(),
open: f,
onOpenChange: h,
onOpenToggle: (0, t.useCallback)(() => h(e => !e), [h]),
modal: u,
children: n
})
};
j.displayName = g;
var S = "DialogTrigger",
P = (0, t.forwardRef)((e, t) => {
let {
__scopeDialog: a,
...o
} = e, i = x(S, a), s = (0, n.useComposedRefs)(t, i.triggerRef);
return (0, v.jsx)(d.Primitive.button, {
type: "button",
"aria-haspopup": "dialog",
"aria-expanded": i.open,
"aria-controls": i.contentId,
"data-state": B(i.open),
...o,
ref: s,
onClick: (0, r.composeEventHandlers)(e.onClick, i.onOpenToggle)
})
});
P.displayName = S;
var C = "DialogPortal",
[k, O] = y(C, {
forceMount: void 0
}),
E = e => {
let {
__scopeDialog: r,
forceMount: n,
children: a,
container: o
} = e, i = x(C, r);
return (0, v.jsx)(k, {
scope: r,
forceMount: n,
children: t.Children.map(a, e => (0, v.jsx)(l.Presence, {
present: n || i.open,
children: (0, v.jsx)(u.Portal, {
asChild: !0,
container: o,
children: e
})
}))
})
};
E.displayName = C;
var T = "DialogOverlay",
N = (0, t.forwardRef)((e, t) => {
let r = O(T, e.__scopeDialog),
{
forceMount: n = r.forceMount,
...a
} = e,
o = x(T, e.__scopeDialog);
return o.modal ? (0, v.jsx)(l.Presence, {
present: n || o.open,
children: (0, v.jsx)(L, {
...a,
ref: t
})
}) : null
});
N.displayName = T;
var L = (0, t.forwardRef)((e, t) => {
let {
__scopeDialog: r,
...n
} = e, a = x(T, r);
return (0, v.jsx)(h.RemoveScroll, {
as: p.Slot,
allowPinchZoom: !0,
shards: [a.contentRef],
children: (0, v.jsx)(d.Primitive.div, {
"data-state": B(a.open),
...n,
ref: t,
style: {
pointerEvents: "auto",
...n.style
}
})
})
}),
A = "DialogContent",
R = (0, t.forwardRef)((e, t) => {
let r = O(A, e.__scopeDialog),
{
forceMount: n = r.forceMount,
...a
} = e,
o = x(A, e.__scopeDialog);
return (0, v.jsx)(l.Presence, {
present: n || o.open,
children: o.modal ? (0, v.jsx)(H, {
...a,
ref: t
}) : (0, v.jsx)(M, {
...a,
ref: t
})
})
});
R.displayName = A;
var H = (0, t.forwardRef)((e, a) => {
let o = x(A, e.__scopeDialog),
i = (0, t.useRef)(null),
s = (0, n.useComposedRefs)(a, o.contentRef, i);
return (0, t.useEffect)(() => {
let e = i.current;
if (e) return (0, m.hideOthers)(e)
}, []), (0, v.jsx)(D, {
...e,
ref: s,
trapFocus: o.open,
disableOutsidePointerEvents: !0,
onCloseAutoFocus: (0, r.composeEventHandlers)(e.onCloseAutoFocus, e => {
e.preventDefault(), o.triggerRef.current?.focus()
}),
onPointerDownOutside: (0, r.composeEventHandlers)(e.onPointerDownOutside, e => {
let t = e.detail.originalEvent,
r = 0 === t.button && !0 === t.ctrlKey;
(2 === t.button || r) && e.preventDefault()
}),
onFocusOutside: (0, r.composeEventHandlers)(e.onFocusOutside, e => e.preventDefault())
})
}),
M = (0, t.forwardRef)((e, r) => {
let n = x(A, e.__scopeDialog),
a = (0, t.useRef)(!1),
o = (0, t.useRef)(!1);
return (0, v.jsx)(D, {
...e,
ref: r,
trapFocus: !1,
disableOutsidePointerEvents: !1,
onCloseAutoFocus: t => {
e.onCloseAutoFocus?.(t), t.defaultPrevented || (a.current || n.triggerRef.current?.focus(), t.preventDefault()), a.current = !1, o.current = !1
},
onInteractOutside: t => {
e.onInteractOutside?.(t), t.defaultPrevented || (a.current = !0, "pointerdown" === t.detail.originalEvent.type && (o.current = !0));
let r = t.target;
n.triggerRef.current?.contains(r) && t.preventDefault(), "focusin" === t.detail.originalEvent.type && o.current && t.preventDefault()
}
})
}),
D = (0, t.forwardRef)((e, r) => {
let {
__scopeDialog: a,
trapFocus: o,
onOpenAutoFocus: i,
onCloseAutoFocus: u,
...l
} = e, d = x(A, a), h = (0, t.useRef)(null), m = (0, n.useComposedRefs)(r, h);
return (0, f.useFocusGuards)(), (0, v.jsxs)(v.Fragment, {
children: [(0, v.jsx)(c.FocusScope, {
asChild: !0,
loop: !0,
trapped: o,
onMountAutoFocus: i,
onUnmountAutoFocus: u,
children: (0, v.jsx)(s.DismissableLayer, {
role: "dialog",
id: d.contentId,
"aria-describedby": d.descriptionId,
"aria-labelledby": d.titleId,
"data-state": B(d.open),
...l,
ref: m,
onDismiss: () => d.onOpenChange(!1)
})
}), (0, v.jsxs)(v.Fragment, {
children: [(0, v.jsx)(Z, {
titleId: d.titleId
}), (0, v.jsx)(U, {
contentRef: h,
descriptionId: d.descriptionId
})]
})]
})
}),
I = "DialogTitle",
q = (0, t.forwardRef)((e, t) => {
let {
__scopeDialog: r,
...n
} = e, a = x(I, r);
return (0, v.jsx)(d.Primitive.h2, {
id: a.titleId,
...n,
ref: t
})
});
q.displayName = I;
var V = "DialogDescription",
_ = (0, t.forwardRef)((e, t) => {
let {
__scopeDialog: r,
...n
} = e, a = x(V, r);
return (0, v.jsx)(d.Primitive.p, {
id: a.descriptionId,
...n,
ref: t
})
});
_.displayName = V;
var $ = "DialogClose",
F = (0, t.forwardRef)((e, t) => {
let {
__scopeDialog: n,
...a
} = e, o = x($, n);
return (0, v.jsx)(d.Primitive.button, {
type: "button",
...a,
ref: t,
onClick: (0, r.composeEventHandlers)(e.onClick, () => o.onOpenChange(!1))
})
});
function B(e) {
return e ? "open" : "closed"
}
F.displayName = $;
var W = "DialogTitleWarning",
[z, J] = (0, a.createContext)(W, {
contentName: A,
titleName: I,
docsSlug: "dialog"
}),
Z = ({
titleId: e
}) => {
let r = J(W),
n = `\`${r.contentName}\` requires a \`${r.titleName}\` for the component to be accessible for screen reader users.
If you want to hide the \`${r.titleName}\`, you can wrap it with our VisuallyHidden component.
For more information, see https://radix-ui.com/primitives/docs/components/${r.docsSlug}`;
return (0, t.useEffect)(() => {
e && (document.getElementById(e) || console.error(n))
}, [n, e]), null
},
U = ({
contentRef: e,
descriptionId: r
}) => {
let n = J("DialogDescriptionWarning"),
a = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;
return (0, t.useEffect)(() => {
let t = e.current?.getAttribute("aria-describedby");
r && t && (document.getElementById(r) || console.warn(a))
}, [a, e, r]), null
},
K = j,
Q = P,
G = E,
Y = N,
X = R,
ee = q,
et = _,
er = F
},
246108: e => {
"use strict";
e.s({
ThemeProvider: () => u,
useTheme: () => c
});
var t = e.i(378469),
r = (e, t, r, n, a, o, i, s) => {
let c = document.documentElement,
u = ["light", "dark"];
function l(t) {
var r;
(Array.isArray(e) ? e : [e]).forEach(e => {
let r = "class" === e,
n = r && o ? a.map(e => o[e] || e) : a;
r ? (c.classList.remove(...n), c.classList.add(o && o[t] ? o[t] : t)) : c.setAttribute(e, t)
}), r = t, s && u.includes(r) && (c.style.colorScheme = r)
}
if (n) l(n);
else try {
let e = localStorage.getItem(t) || r,
n = i && "system" === e ? window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : e;
l(n)
} catch (e) {}
},
n = ["light", "dark"],
a = "(prefers-color-scheme: dark)",
o = "undefined" == typeof window,
i = (0, t.createContext)(void 0),
s = {
setTheme: e => {},
themes: []
},
c = () => {
var e;
return null != (e = (0, t.useContext)(i)) ? e : s
},
u = e => (0, t.useContext)(i) ? (0, t.createElement)(t.Fragment, null, e.children) : (0, t.createElement)(d, {
...e
}),
l = ["light", "dark"],
d = ({
forcedTheme: e,
disableTransitionOnChange: r = !1,
enableSystem: o = !0,
enableColorScheme: s = !0,
storageKey: c = "theme",
themes: u = l,
defaultTheme: d = o ? "system" : "light",
attribute: v = "data-theme",
value: g,
children: y,
nonce: b,
scriptProps: w
}) => {
let [x, j] = (0, t.useState)(() => h(c, d)), [S, P] = (0, t.useState)(() => "system" === x ? p() : x), C = g ? Object.values(g) : u, k = (0, t.useCallback)(e => {
let t = e;
if (!t) return;
"system" === e && o && (t = p());
let a = g ? g[t] : t,
i = r ? m(b) : null,
c = document.documentElement,
u = e => {
"class" === e ? (c.classList.remove(...C), a && c.classList.add(a)) : e.startsWith("data-") && (a ? c.setAttribute(e, a) : c.removeAttribute(e))
};
if (Array.isArray(v) ? v.forEach(u) : u(v), s) {
let e = n.includes(d) ? d : null,
r = n.includes(t) ? t : e;
c.style.colorScheme = r
}
null == i || i()
}, [b]), O = (0, t.useCallback)(e => {
let t = "function" == typeof e ? e(x) : e;
j(t);
try {
localStorage.setItem(c, t)
} catch (e) {}
}, [x]), E = (0, t.useCallback)(t => {
P(p(t)), "system" === x && o && !e && k("system")
}, [x, e]);
(0, t.useEffect)(() => {
let e = window.matchMedia(a);
return e.addListener(E), E(e), () => e.removeListener(E)
}, [E]), (0, t.useEffect)(() => {
let e = e => {
e.key === c && (e.newValue ? j(e.newValue) : O(d))
};
return window.addEventListener("storage", e), () => window.removeEventListener("storage", e)
}, [O]), (0, t.useEffect)(() => {
k(null != e ? e : x)
}, [e, x]);
let T = (0, t.useMemo)(() => ({
theme: x,
setTheme: O,
forcedTheme: e,
resolvedTheme: "system" === x ? S : x,
themes: o ? [...u, "system"] : u,
systemTheme: o ? S : void 0
}), [x, O, e, S, o, u]);
return (0, t.createElement)(i.Provider, {
value: T
}, (0, t.createElement)(f, {
forcedTheme: e,
storageKey: c,
attribute: v,
enableSystem: o,
enableColorScheme: s,
defaultTheme: d,
value: g,
themes: u,
nonce: b,
scriptProps: w
}), y)
},
f = (0, t.memo)(({
forcedTheme: e,
storageKey: n,
attribute: a,
enableSystem: o,
enableColorScheme: i,
defaultTheme: s,
value: c,
themes: u,
nonce: l,
scriptProps: d
}) => {
let f = JSON.stringify([a, n, s, e, u, c, o, i]).slice(1, -1);
return (0, t.createElement)("script", {
...d,
suppressHydrationWarning: !0,
nonce: "undefined" == typeof window ? l : "",
dangerouslySetInnerHTML: {
__html: `(${r.toString()})(${f})`
}
})
}),
h = (e, t) => {
let r;
if (!o) {
try {
r = localStorage.getItem(e) || void 0
} catch (e) {}
return r || t
}
},
m = e => {
let t = document.createElement("style");
return e && t.setAttribute("nonce", e), t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")), document.head.appendChild(t), () => {
window.getComputedStyle(document.body), setTimeout(() => {
document.head.removeChild(t)
}, 1)
}
},
p = e => (e || (e = window.matchMedia(a)), e.matches ? "dark" : "light")
},
44894: e => {
"use strict";
e.s({
SearchOnly: () => s,
SearchProvider: () => i,
useSearchContext: () => a
});
var t = e.i(892988),
r = e.i(378469);
let n = (0, r.createContext)({
enabled: !1,
hotKey: [],
setOpenSearch: () => void 0
});
function a() {
return (0, r.useContext)(n)
}
function o() {
let [e, t] = (0, r.useState)("⌘");
return (0, r.useEffect)(() => {
window.navigator.userAgent.includes("Windows") && t("Ctrl")
}, []), e
}
function i({
SearchDialog: e,
children: a,
preload: i = !0,
options: s,
hotKey: c = [{
key: e => e.metaKey || e.ctrlKey,
display: (0, t.jsx)(o, {})
}, {
key: "k",
display: "K"
}],
links: u
}) {
let [l, d] = (0, r.useState)(!i && void 0);
return (0, r.useEffect)(() => {
let e = e => {
c.every(t => "string" == typeof t.key ? e.key === t.key : t.key(e)) && (d(!0), e.preventDefault())
};
return window.addEventListener("keydown", e), () => {
window.removeEventListener("keydown", e)
}
}, [c]), (0, t.jsxs)(n.Provider, {
value: (0, r.useMemo)(() => ({
enabled: !0,
hotKey: c,
setOpenSearch: d
}), [c]),
children: [void 0 !== l && (0, t.jsx)(e, {
open: l,
onOpenChange: d,
links: u,
...s
}), a]
})
}
function s({
children: e
}) {
if (a().enabled) return e
}
},
659825: e => {
"use strict";
e.s({
RootProvider: () => c
});
var t = e.i(892988),
r = e.i(246108),
n = e.i(588483),
a = e.i(226251),
o = e.i(99459),
i = e.i(44894);
e.i(401607), e.i(415605), e.i(201406);
let s = (0, n.default)(() => e.r(948415)(e.i), {
ssr: !1
});
function c({
children: e,
dir: n,
theme: {
enabled: c = !0,
...u
} = {},
search: l
}) {
let d = e;
return l?.enabled !== !1 && (d = (0, t.jsx)(i.SearchProvider, {
SearchDialog: s,
...l,
children: d
})), c && (d = (0, t.jsx)(r.ThemeProvider, {
attribute: "class",
defaultTheme: "system",
enableSystem: !0,
disableTransitionOnChange: !0,
...u,
children: d
})), (0, t.jsx)(a.DirectionProvider, {
dir: n ?? "ltr",
children: (0, t.jsx)(o.SidebarProvider, {
children: d
})
})
}
},
127460: e => {
"use strict";
e.s({}), e.i(892988), e.i(246108), e.i(588483), e.i(99459), e.i(44894), e.i(401607), e.i(415605), e.i(201406), e.i(659825)
},
518937: e => {
"use strict";
e.s({
gitHubRepoUrl: () => t
});
let t = "https://github.com/vercel/turborepo"
},
995069: e => {
"use strict";
e.s({
Moon: () => r
});
var t = e.i(892988);
let r = ({
className: e,
style: r
}) => (0, t.jsx)("svg", {
className: e,
height: "16",
strokeLinejoin: "round",
viewBox: "0 0 16 16",
width: "16",
style: {
color: "currentcolor",
...r
},
children: (0, t.jsx)("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M1.5 8.00005C1.5 5.53089 2.99198 3.40932 5.12349 2.48889C4.88136 3.19858 4.75 3.95936 4.75 4.7501C4.75 8.61609 7.88401 11.7501 11.75 11.7501C11.8995 11.7501 12.048 11.7454 12.1953 11.7361C11.0955 13.1164 9.40047 14.0001 7.5 14.0001C4.18629 14.0001 1.5 11.3138 1.5 8.00005ZM6.41706 0.577759C2.78784 1.1031 0 4.22536 0 8.00005C0 12.1422 3.35786 15.5001 7.5 15.5001C10.5798 15.5001 13.2244 13.6438 14.3792 10.9921L13.4588 9.9797C12.9218 10.155 12.3478 10.2501 11.75 10.2501C8.71243 10.2501 6.25 7.78767 6.25 4.7501C6.25 3.63431 6.58146 2.59823 7.15111 1.73217L6.41706 0.577759ZM13.25 1V1.75V2.75L14.25 2.75H15V4.25H14.25H13.25V5.25V6H11.75V5.25V4.25H10.75L10 4.25V2.75H10.75L11.75 2.75V1.75V1H13.25Z",
fill: "currentColor"
})
})
},
259947: e => {
"use strict";
e.s({
Sun: () => r
});
var t = e.i(892988);
let r = ({
className: e,
style: r
}) => (0, t.jsx)("svg", {
className: e,
height: "16",
strokeLinejoin: "round",
viewBox: "0 0 16 16",
width: "16",
style: {
color: "currentcolor",
...r
},
children: (0, t.jsx)("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M8.75 0.75V0H7.25V0.75V2V2.75H8.75V2V0.75ZM11.182 3.75732L11.7123 3.22699L12.0659 2.87344L12.5962 2.34311L13.6569 3.40377L13.1265 3.9341L12.773 4.28765L12.2426 4.81798L11.182 3.75732ZM8 10.5C9.38071 10.5 10.5 9.38071 10.5 8C10.5 6.61929 9.38071 5.5 8 5.5C6.61929 5.5 5.5 6.61929 5.5 8C5.5 9.38071 6.61929 10.5 8 10.5ZM8 12C10.2091 12 12 10.2091 12 8C12 5.79086 10.2091 4 8 4C5.79086 4 4 5.79086 4 8C4 10.2091 5.79086 12 8 12ZM13.25 7.25H14H15.25H16V8.75H15.25H14H13.25V7.25ZM0.75 7.25H0V8.75H0.75H2H2.75V7.25H2H0.75ZM2.87348 12.0659L2.34315 12.5962L3.40381 13.6569L3.93414 13.1265L4.28769 12.773L4.81802 12.2426L3.75736 11.182L3.22703 11.7123L2.87348 12.0659ZM3.75735 4.81798L3.22702 4.28765L2.87347 3.9341L2.34314 3.40377L3.4038 2.34311L3.93413 2.87344L4.28768 3.22699L4.81802 3.75732L3.75735 4.81798ZM12.0659 13.1265L12.5962 13.6569L13.6569 12.5962L13.1265 12.0659L12.773 11.7123L12.2426 11.182L11.182 12.2426L11.7123 12.773L12.0659 13.1265ZM8.75 13.25V14V15.25V16H7.25V15.25V14V13.25H8.75Z",
fill: "currentColor"
})
})
},
889593: e => {
"use strict";
e.s({
DeviceDesktop: () => r
});
var t = e.i(892988);
let r = ({
className: e,
style: r
}) => (0, t.jsx)("svg", {
className: e,
height: "16",
strokeLinejoin: "round",
viewBox: "0 0 16 16",
width: "16",
style: {
color: "currentcolor",
...r
},
children: (0, t.jsx)("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M0 2C0 1.44772 0.447715 1 1 1H15C15.5523 1 16 1.44772 16 2V10.5C16 11.0523 15.5523 11.5 15 11.5H8.75V14.5H9.75H10.5V16H9.75H6.25H5.5V14.5H6.25H7.25V11.5H1C0.447714 11.5 0 11.0523 0 10.5V2ZM1.5 2.5V10H14.5V2.5H1.5Z",
fill: "currentColor"
})
})
},
456795: e => {
e.v({
root: "theme-switcher-module__IeWOuW__root",
switch: "theme-switcher-module__IeWOuW__switch"
})
},
648202: e => {
"use strict";
e.s({
ThemeSwitcher: () => u
});
var t = e.i(892988),
r = e.i(246108),
n = e.i(378469),
a = e.i(207796),
o = e.i(995069),
i = e.i(259947),
s = e.i(889593),
c = e.i(456795);
function u({
className: e,
size: u = 28,
short: l = !1
}) {
let {
theme: d,
setTheme: f
} = (0, r.useTheme)(), [h, m] = (0, n.useState)(!1), p = u / 2;
return ((0, n.useEffect)(() => {
m(!0)
}, []), h) ? (0, t.jsxs)("div", {
className: (0, a.clsx)(c.default.root, e),
style: {
padding: l ? "0" : `${u/10.67}px`
},
role: "radiogroup",
children: [(0, t.jsx)("button", {
"aria-checked": "light" === d,
"aria-label": "Switch to light theme",
className: c.default.switch,
"data-active": "light" === d,
style: {
height: `${u}px`,
width: `${u}px`
},
"data-theme-switcher": !0,
onClick: () => {
f("light")
},
role: "radio",
type: "button",
children: (0, t.jsx)(i.Sun, {
style: {
width: p,
height: p
}
})
}), (0, t.jsx)("button", {
"aria-checked": "system" === d,
"aria-label": "Switch to system theme",
className: c.default.switch,
style: {
height: `${u}px`,
width: `${u}px`
},
"data-active": "system" === d,
"data-theme-switcher": !0,
onClick: () => {
f("system")
},
role: "radio",
type: "button",
children: (0, t.jsx)(s.DeviceDesktop, {
style: {
width: p,
height: p
}
})
}), (0, t.jsx)("button", {
"aria-checked": "dark" === d,
"aria-label": "Switch to dark theme",
className: c.default.switch,
style: {
height: `${u}px`,
width: `${u}px`
},
"data-active": "dark" === d,
"data-theme-switcher": !0,
onClick: () => {
f("dark")
},
role: "radio",
type: "button",
children: (0, t.jsx)(o.Moon, {
style: {
width: p,
height: p
}
})
})]
}) : null
}
},
692752: e => {
"use strict";
e.s({
MobileMenuProvider: () => o,
TopLevelMobileMenuProvider: () => c,
useMobileMenuContext: () => a,
useTopLevelMobileMenuContext: () => s
});
var t = e.i(892988),
r = e.i(378469);
let n = (0, r.createContext)(void 0),
a = () => {
let e = (0, r.useContext)(n);
if (!e) throw Error("useMobileMenuContext must be used within a MobileMenuProvider");
return e
},
o = ({
children: e
}) => {
let [a, o] = (0, r.useState)(!1);
return (0, t.jsx)(n.Provider, {
value: {
openMobileMenu: a,
setOpenMobileMenu: o
},
children: e
})
},
i = (0, r.createContext)(void 0),
s = () => {
let e = (0, r.useContext)(i);
if (!e) throw Error("useMobileMenuContext must be used within a MobileMenuProvider");
return e
},
c = ({
children: e
}) => {
let [n, a] = (0, r.useState)(!1);
return (0, t.jsx)(i.Provider, {
value: {
openMobileMenu: n,
setOpenMobileMenu: a
},
children: e
})
}
},
193099: e => {
"use strict";
e.s({
__iconNode: () => r,
default: () => n
});
var t = e.i(180981);
let r = [
["circle", {
cx: "11",
cy: "11",
r: "8",
key: "4ej97u"
}],
["path", {
d: "m21 21-4.3-4.3",
key: "1qie3q"
}]
],
n = (0, t.default)("Search", r)
},
218416: e => {
"use strict";
e.s({
SearchIcon: () => t.default
});
var t = e.i(193099)
},
542803: e => {
"use strict";
e.s({
useDocsSearch: () => o
});
var t, r = e.i(965790);
e.i(19987);
var n = e.i(378469),
a = new Map;
function o(i, s, c, u = 100, l = !1, d) {
let [f, h] = (0, n.useState)(""), [m, p] = (0, n.useState)("empty"), [v, g] = (0, n.useState)(), [y, b] = (0, n.useState)(!1), w = function(e, t = 1e3) {
let [r, a] = (0, n.useState)(e), o = (0, n.useRef)(void 0);
if (0 === t) return e;
if (e !== r && o.current?.value !== e) {
o.current && clearTimeout(o.current.handler);
let r = window.setTimeout(() => {
a(e)
}, t);
o.current = {
value: e,
handler: r
}
}
return r
}(f, u), x = (0, n.useRef)(void 0), j = (0, n.useMemo)(() => d ?? JSON.stringify([i.type, w, s, c]), [i.type, w, s, c, d]);
return (0, r.useOnChange)(j, () => {
let r = a.get(j);
if (x.current && (x.current(), x.current = void 0), r) {
b(!1), g(void 0), p(r);
return
}
b(!0);
let n = !1;
x.current = () => {
n = !0
}, (async function() {
if (0 === w.length && !l) return "empty";
if ("fetch" === i.type) {
let {
fetchDocs: t
} = await e.r(98812)(e.i);
return t(w, s, c, i)
}
if ("algolia" === i.type) {
let {
index: t,
type: r,
...n
} = i, {
searchDocs: a
} = await e.r(61608)(e.i);
return a(t, w, c, n)
}
if ("orama-cloud" === i.type) {
let {
searchDocs: t
} = await e.r(551282)(e.i);
return t(w, c, i)
}
let {
createStaticClient: r
} = await e.r(592367)(e.i);
return t || (t = r(i)), t.search(w, s, c)
})().then(e => {
a.set(j, e), n || (g(void 0), p(e))
}).catch(e => {
g(e)
}).finally(() => {
b(!1)
})
}), {
search: f,
setSearch: h,
query: {
isLoading: y,
data: m,
error: v
}
}
}
},
853090: e => {
"use strict";
e.s({
__iconNode: () => r,
default: () => n
});
var t = e.i(180981);
let r = [
["path", {
d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",
key: "1rqfz7"
}],
["path", {
d: "M14 2v4a2 2 0 0 0 2 2h4",
key: "tnqrlb"
}],
["path", {
d: "M10 9H8",
key: "b1mrlr"
}],
["path", {
d: "M16 13H8",
key: "t4e002"
}],
["path", {
d: "M16 17H8",
key: "z1uh3a"
}]
],
n = (0, t.default)("FileText", r)
},
552540: e => {
"use strict";
e.s({
FileText: () => t.default
});
var t = e.i(853090)
},
791843: e => {
"use strict";
e.s({
__iconNode: () => r,
default: () => n
});
var t = e.i(180981);
let r = [
["line", {
x1: "4",
x2: "20",
y1: "9",
y2: "9",
key: "4lhtct"
}],
["line", {
x1: "4",
x2: "20",
y1: "15",
y2: "15",
key: "vyu0kd"
}],
["line", {
x1: "10",
x2: "8",
y1: "3",
y2: "21",
key: "1ggp8o"
}],
["line", {
x1: "16",
x2: "14",
y1: "3",
y2: "21",
key: "weycgp"
}]
],
n = (0, t.default)("Hash", r)
},
190978: e => {
"use strict";
e.s({
Hash: () => t.default
});
var t = e.i(791843)
},
600489: e => {
"use strict";
e.s({
__iconNode: () => r,
default: () => n
});
var t = e.i(180981);
let r = [
["path", {
d: "M21 12a9 9 0 1 1-6.219-8.56",
key: "13zald"
}]
],
n = (0, t.default)("LoaderCircle", r)
},
68845: e => {
"use strict";
e.s({
Loader2: () => t.default
});
var t = e.i(600489)
},
167454: e => {
"use strict";
e.s({
SearchDialog: () => p,
TagsList: () => x
});
var t = e.i(892988),
r = e.i(552540),
n = e.i(190978),
a = e.i(68845),
o = e.i(218416),
i = e.i(550702),
s = e.i(559961),
c = e.i(378469),
u = e.i(401607);
e.i(806681);
var l = e.i(81805),
d = e.i(99459),
f = e.i(388398),
h = e.i(688450),
m = e.i(448805);
function p({
open: e,
onOpenChange: r,
footer: n,
links: a = [],
search: o,
onSearchChange: i,
isLoading: s,
...d
}) {
let {
text: m
} = (0, u.useI18n)(), p = (0, c.useMemo)(() => a.map(([e, t]) => ({
type: "page",
id: e,
content: e,
url: t
})), [a]);
return (0, t.jsxs)(h.Dialog, {
open: e,
onOpenChange: r,
children: [(0, t.jsx)(h.DialogOverlay, {
className: "fixed inset-0 z-50 bg-black/30 backdrop-blur-sm data-[state=closed]:animate-fd-fade-out data-[state=open]:animate-fd-fade-in"
}), (0, t.jsxs)(h.DialogContent, {
"aria-describedby": void 0,
className: "fixed left-1/2 top-[10vh] z-50 w-[98vw] max-w-screen-sm origin-left -translate-x-1/2 rounded-lg border bg-fd-popover text-fd-popover-foreground shadow-lg data-[state=closed]:animate-fd-dialog-out data-[state=open]:animate-fd-dialog-in",
children: [(0, t.jsx)(h.DialogTitle, {
className: "hidden",
children: m.search
}), (0, t.jsxs)("div", {
className: "flex flex-row items-center gap-2 px-3",
children: [(0, t.jsx)(y, {
isLoading: s ?? !1
}), (0, t.jsx)("input", {
value: o,
onChange: e => {
i(e.target.value)
},
placeholder: m.search,
className: "w-0 flex-1 bg-transparent py-3 text-base placeholder:text-fd-muted-foreground focus-visible:outline-none"
}), (0, t.jsx)("button", {
type: "button",
"aria-label": "Close Search",
onClick: () => r(!1),
className: (0, l.cn)((0, f.buttonVariants)({
color: "outline",
className: "text-xs p-1.5"
})),
children: "Esc"
})]
}), "empty" !== d.results || p.length > 0 ? (0, t.jsx)(g, {
items: "empty" === d.results ? p : d.results,
onSelect: () => r(!1)
}) : null, n ? (0, t.jsx)("div", {
className: "mt-auto flex flex-col border-t p-3",
children: n
}) : null]
})]
})
}
let v = {
text: (0, t.jsx)(i.Text, {
className: "size-4 text-fd-muted-foreground"
}),
heading: (0, t.jsx)(n.Hash, {
className: "size-4 text-fd-muted-foreground"
}),
page: (0, t.jsx)(r.FileText, {
className: "size-4 text-fd-muted-foreground"
})
};
function g({
items: e,
onSelect: r,
...n
}) {
let [a, o] = (0, c.useState)(), {
text: i
} = (0, u.useI18n)(), f = (0, s.useRouter)(), h = (0, d.useSidebar)();
e.length > 0 && (!a || e.every(e => e.id !== a)) && o(e[0].id);
let m = e => {
f.push(e), r?.(e), h.setOpen(!1)
};
function p(t) {
if (("ArrowDown" === t.key || "ArrowUp" == t.key) && (o(r => {
let n = e.findIndex(e => e.id === r);
return -1 === n ? e.at(0)?.id : e.at(("ArrowDown" === t.key ? n + 1 : n - 1) % e.length)?.id
}), t.preventDefault()), "Enter" === t.key) {
let r = e.find(e => e.id === a);
r && m(r.url), t.preventDefault()
}
}
let g = (0, c.useRef)(p);
return g.current = p, (0, c.useEffect)(() => {
let e = e => g.current?.(e);
return window.addEventListener("keydown", e), () => {
window.removeEventListener("keydown", e)
}
}, []), (0, t.jsxs)("div", {
...n,
className: (0, l.cn)("flex max-h-[460px] flex-col overflow-y-auto border-t p-2", n.className),
children: [0 === e.length ? (0, t.jsx)("div", {
className: "py-12 text-center text-sm",
children: i.searchNoResult
}) : null, e.map(e => (0, t.jsxs)(b, {
value: e.id,
active: a,
onActiveChange: o,
onClick: () => {
m(e.url)
},
children: ["page" !== e.type ? (0, t.jsx)("div", {
role: "none",
className: "ms-2 h-full min-h-10 w-px bg-fd-border"
}) : null, v[e.type], (0, t.jsx)("p", {
className: "w-0 flex-1 truncate",
children: e.content
})]
}, e.id))]
})
}
function y({
isLoading: e
}) {
return (0, t.jsxs)("div", {
className: "relative size-4",
children: [(0, t.jsx)(a.Loader2, {
className: (0, l.cn)("absolute size-full animate-spin text-fd-primary transition-opacity", !e && "opacity-0")
}), (0, t.jsx)(o.SearchIcon, {
className: (0, l.cn)("absolute size-full text-fd-muted-foreground transition-opacity", e && "opacity-0")
})]
})
}
function b({
active: e,
onActiveChange: r,
value: n,
...a
}) {
return (0, t.jsx)("button", {
ref: (0, c.useCallback)(t => {
e === n && t && t.scrollIntoView({
block: "nearest"
})
}, [e, n]),
type: "button",
"aria-selected": e === n,
onPointerMove: () => r(n),
...a,
className: (0, l.cn)("flex min-h-10 select-none flex-row items-center gap-2.5 rounded-lg px-2 text-start text-sm", e === n && "bg-fd-accent text-fd-accent-foreground", a.className),
children: a.children
})
}
let w = (0, m.cva)("rounded-md border px-2 py-0.5 text-xs font-medium text-fd-muted-foreground transition-colors", {
variants: {
active: {
true: "bg-fd-accent text-fd-accent-foreground"
}
}
});
function x({
tag: e,
onTagChange: r,
items: n,
allowClear: a,
...o
}) {
return (0, t.jsxs)("div", {
...o,
className: (0, l.cn)("flex flex-row items-center gap-1", o.className),
children: [n.map(n => (0, t.jsx)("button", {
type: "button",
"data-active": e === n.value,
className: (0, l.cn)(w({
active: e === n.value
}), n.props?.className),
onClick: () => {
e === n.value && a ? r(void 0) : r(n.value)
},
tabIndex: -1,
...n.props,
children: n.name
}, n.value)), o.children]
})
}
},
227879: e => {
"use strict";
e.s({
Analytics: () => l
});
var t = e.i(983505),
r = e.i(378469),
n = e.i(559961);
function a() {
return "undefined" != typeof window
}
function o() {
return "production"
}
function i() {
return "development" === ((a() ? window.vam : o()) || "production")
}
function s(e) {
return RegExp(`/${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=[/?#]|$)`)
}
function c(e) {
return (0, r.useEffect)(() => {
var t;
e.beforeSend && (null == (t = window.va) || t.call(window, "beforeSend", e.beforeSend))
}, [e.beforeSend]), (0, r.useEffect)(() => {
! function(e = {
debug: !0
}) {
var t;
if (!a()) return;
! function(e = "auto") {
if ("auto" === e) {
window.vam = o();
return
}
window.vam = e
}(e.mode), window.va || (window.va = function(...e) {
(window.vaq = window.vaq || []).push(e)
}), e.beforeSend && (null == (t = window.va) || t.call(window, "beforeSend", e.beforeSend));
let r = e.scriptSrc ? e.scriptSrc : i() ? "https://va.vercel-scripts.com/v1/script.debug.js" : e.basePath ? `${e.basePath}/insights/script.js` : "/_vercel/insights/script.js";
if (document.head.querySelector(`script[src*="${r}"]`)) return;
let n = document.createElement("script");
n.src = r, n.defer = !0, n.dataset.sdkn = "@vercel/analytics" + (e.framework ? `/${e.framework}` : ""), n.dataset.sdkv = "1.5.0", e.disableAutoTrack && (n.dataset.disableAutoTrack = "1"), e.endpoint ? n.dataset.endpoint = e.endpoint : e.basePath && (n.dataset.endpoint = `${e.basePath}/insights`), e.dsn && (n.dataset.dsn = e.dsn), n.onerror = () => {
let e = i() ? "Please check if any ad blockers are enabled and try again." : "Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";
console.log(`[Vercel Web Analytics] Failed to load script from ${r}. ${e}`)
}, i() && !1 === e.debug && (n.dataset.debug = "false"), document.head.appendChild(n)
}({
framework: e.framework || "react",
basePath: e.basePath ?? function() {
if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH
}(),
...void 0 !== e.route && {
disableAutoTrack: !0
},
...e
})
}, []), (0, r.useEffect)(() => {
e.route && e.path && function({
route: e,
path: t
}) {
var r;
null == (r = window.va) || r.call(window, "pageview", {
route: e,
path: t
})
}({
route: e.route,
path: e.path
})
}, [e.route, e.path]), null
}
function u(e) {
let {
route: a,
path: o
} = (() => {
let e = (0, n.useParams)(),
t = (0, n.useSearchParams)(),
r = (0, n.usePathname)();
return e ? {
route: function(e, t) {
if (!e || !t) return e;
let r = e;
try {
let e = Object.entries(t);
for (let [t, n] of e)
if (!Array.isArray(n)) {
let e = s(n);
e.test(r) && (r = r.replace(e, `/[${t}]`))
} for (let [t, n] of e)
if (Array.isArray(n)) {
let e = s(n.join("/"));
e.test(r) && (r = r.replace(e, `/[...${t}]`))
} return r
} catch (t) {
return e
}
}(r, Object.keys(e).length ? e : Object.fromEntries(t.entries())),
path: r
} : {
route: null,
path: r
}
})();
return r.default.createElement(c, {
path: o,
route: a,
...e,
basePath: function() {
if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH
}(),
framework: "next"
})
}
function l(e) {
return r.default.createElement(r.Suspense, {
fallback: null
}, r.default.createElement(u, {
...e
}))
}
},
531728: e => {
"use strict";
e.s({
SpeedInsights: () => c
});
var t = e.i(983505),
r = e.i(378469),
n = e.i(559961);
function a() {
return false
}
function o(e) {
return RegExp(`/${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=[/?#]|$)`)
}
function i(e) {
(0, r.useEffect)(() => {
var t;
e.beforeSend && (null == (t = window.si) || t.call(window, "beforeSend", e.beforeSend))
}, [e.beforeSend]);
let n = (0, r.useRef)(null);
return (0, r.useEffect)(() => {
if (n.current) e.route && n.current(e.route);
else {
let r = function(e = {}) {
var t;
if ("undefined" == typeof window || null === e.route) return null;
window.si || (window.si = function(...e) {
(window.siq = window.siq || []).push(e)
});
let r = e.scriptSrc ? e.scriptSrc : a() ? "https://va.vercel-scripts.com/v1/speed-insights/script.debug.js" : e.dsn ? "https://va.vercel-scripts.com/v1/speed-insights/script.js" : e.basePath ? `${e.basePath}/speed-insights/script.js` : "/_vercel/speed-insights/script.js";
if (document.head.querySelector(`script[src*="${r}"]`)) return null;
e.beforeSend && (null == (t = window.si) || t.call(window, "beforeSend", e.beforeSend));
let n = document.createElement("script");
return n.src = r, n.defer = !0, n.dataset.sdkn = "@vercel/speed-insights" + (e.framework ? `/${e.framework}` : ""), n.dataset.sdkv = "1.2.0", e.sampleRate && (n.dataset.sampleRate = e.sampleRate.toString()), e.route && (n.dataset.route = e.route), e.endpoint ? n.dataset.endpoint = e.endpoint : e.basePath && (n.dataset.endpoint = `${e.basePath}/speed-insights/vitals`), e.dsn && (n.dataset.dsn = e.dsn), a() && !1 === e.debug && (n.dataset.debug = "false"), n.onerror = () => {
console.log(`[Vercel Speed Insights] Failed to load script from ${r}. Please check if any content blockers are enabled and try again.`)
}, document.head.appendChild(n), {
setRoute: e => {
n.dataset.route = e ?? void 0
}
}
}({
framework: e.framework ?? "react",
basePath: e.basePath ?? function() {
if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH
}(),
...e
});
r && (n.current = r.setRoute)
}
}, [e.route]), null
}
function s(e) {
let a = (() => {
let e = (0, n.useParams)(),
t = (0, n.useSearchParams)() || new URLSearchParams,
r = (0, n.usePathname)();
return e ? function(e, t) {
if (!e || !t) return e;
let r = e;
try {
let e = Object.entries(t);
for (let [t, n] of e)
if (!Array.isArray(n)) {
let e = o(n);
e.test(r) && (r = r.replace(e, `/[${t}]`))
} for (let [t, n] of e)
if (Array.isArray(n)) {
let e = o(n.join("/"));
e.test(r) && (r = r.replace(e, `/[...${t}]`))
} return r
} catch (t) {
return e
}
}(r, Object.keys(e).length ? e : Object.fromEntries(t.entries())) : null
})();
return r.default.createElement(i, {
route: a,
...e,
framework: "next",
basePath: function() {
if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH
}()
})
}
function c(e) {
return r.default.createElement(r.Suspense, {
fallback: null
}, r.default.createElement(s, {
...e
}))
}
},
145151: e => {
"use strict";
e.s({
VercelTrackers: () => a
});
var t = e.i(892988),
r = e.i(227879),
n = e.i(531728);
function a() {
return (0, t.jsxs)(t.Fragment, {
children: [(0, t.jsx)(r.Analytics, {}), (0, t.jsx)(n.SpeedInsights, {})]
})
}
},
299188: function(e) {
var {
m: t,
e: r
} = e;
t.exports = function() {
"use strict";
function e(e, t) {
var r = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var n = Object.getOwnPropertySymbols(e);
t && (n = n.filter(function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable
})), r.push.apply(r, n)
}
return r
}
function t(t) {
for (var r = 1; r < arguments.length; r++) {
var n = null != arguments[r] ? arguments[r] : {};
r % 2 ? e(Object(n), !0).forEach(function(e) {
var r;
r = n[e], e in t ? Object.defineProperty(t, e, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
}) : t[e] = r
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : e(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
function r(e, t) {
return function(e) {
if (Array.isArray(e)) return e
}(e) || function(e, t) {
if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) {
var r = [],
n = !0,
a = !1,
o = void 0;
try {
for (var i, s = e[Symbol.iterator](); !(n = (i = s.next()).done) && (r.push(i.value), !t || r.length !== t); n = !0);
} catch (e) {
a = !0, o = e
} finally {
try {
n || null == s.return || s.return()
} finally {
if (a) throw o
}
}
return r
}
}(e, t) || function() {
throw TypeError("Invalid attempt to destructure non-iterable instance")
}()
}
function n(e) {
return function(e) {
if (Array.isArray(e)) {
for (var t = 0, r = Array(e.length); t < e.length; t++) r[t] = e[t];
return r
}
}(e) || function(e) {
if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
}(e) || function() {
throw TypeError("Invalid attempt to spread non-iterable instance")
}()
}
function a() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {
serializable: !0
},
t = {};
return {
get: function(r, n) {
var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
miss: function() {
return Promise.resolve()
}
},
o = JSON.stringify(r);
if (o in t) return Promise.resolve(e.serializable ? JSON.parse(t[o]) : t[o]);
var i = n(),
s = a && a.miss || function() {
return Promise.resolve()
};
return i.then(function(e) {
return s(e)
}).then(function() {
return i
})
},
set: function(r, n) {
return t[JSON.stringify(r)] = e.serializable ? JSON.stringify(n) : n, Promise.resolve(n)
},
delete: function(e) {
return delete t[JSON.stringify(e)], Promise.resolve()
},
clear: function() {
return t = {}, Promise.resolve()
}
}
}
function o(e, t) {
return t && Object.keys(t).forEach(function(r) {
e[r] = t[r](e)
}), e
}
function i(e) {
for (var t = arguments.length, r = Array(t > 1 ? t - 1 : 0), n = 1; n < t; n++) r[n - 1] = arguments[n];
var a = 0;
return e.replace(/%s/g, function() {
return encodeURIComponent(r[a++])
})
}
var s = {
WithinQueryParameters: 0,
WithinHeaders: 1
};
function c(e, t) {
var r = e || {},
n = r.data || {};
return Object.keys(r).forEach(function(e) {
-1 === ["timeout", "headers", "queryParameters", "data", "cacheable"].indexOf(e) && (n[e] = r[e])
}), {
data: Object.entries(n).length > 0 ? n : void 0,
timeout: r.timeout || t,
headers: r.headers || {},
queryParameters: r.queryParameters || {},
cacheable: r.cacheable
}
}
var u = {
Read: 1,
Write: 2,
Any: 3
};
function l(e) {
var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
return t(t({}, e), {}, {
status: r,
lastUpdate: Date.now()
})
}
function d(e) {
return "string" == typeof e ? {
protocol: "https",
url: e,
accept: u.Any
} : {
protocol: e.protocol || "https",
url: e.url,
accept: e.accept || u.Any
}
}
var f = "POST";
function h(e, r, a, o) {
var i, s, c, u = [],
f = function(e, r) {
if ("GET" !== e.method && (void 0 !== e.data || void 0 !== r.data)) return JSON.stringify(Array.isArray(e.data) ? e.data : t(t({}, e.data), r.data))
}(a, o),
h = (i = t(t({}, e.headers), o.headers), s = {}, Object.keys(i).forEach(function(e) {
var t = i[e];
s[e.toLowerCase()] = t
}), s),
g = a.method,
y = "GET" !== a.method ? {} : t(t({}, a.data), o.data),
b = t(t(t({
"x-algolia-agent": e.userAgent.value
}, e.queryParameters), y), o.queryParameters),
w = 0,
x = function t(r, n) {
var i, s, c, d, y = r.pop();
if (void 0 === y) throw {
name: "RetryError",
message: "Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support .",
transporterStackTrace: p(u)
};
var x = {
data: f,
headers: h,
method: g,
url: (i = y, s = a.path, c = m(b), d = "".concat(i.protocol, "://").concat(i.url, "/").concat("/" === s.charAt(0) ? s.substr(1) : s), c.length && (d += "?".concat(c)), d),
connectTimeout: n(w, e.timeouts.connect),
responseTimeout: n(w, o.timeout)
},
j = function(e) {
var t = {
request: x,
response: e,
host: y,
triesLeft: r.length
};
return u.push(t), t
},
S = {
onSuccess: function(e) {
try {
return JSON.parse(e.content)
} catch (t) {
throw {
name: "DeserializationError",
message: t.message,
response: e
}
}
},
onRetry: function(a) {
var o = j(a);
return a.isTimedOut && w++, Promise.all([e.logger.info("Retryable failure", v(o)), e.hostsCache.set(y, l(y, a.isTimedOut ? 3 : 2))]).then(function() {
return t(r, n)
})
},
onFail: function(e) {
throw j(e),
function(e, t) {
var r = e.content,
n = e.status,
a = r;
try {
a = JSON.parse(r).message
} catch (e) {}
return {
name: "ApiError",
message: a,
status: n,
transporterStackTrace: t
}
}(e, p(u))
}
};
return e.requester.send(x).then(function(e) {
var t, r, n;
return (t = e.status, e.isTimedOut || (r = e.isTimedOut, n = e.status, !r && 0 == ~~n) || 2 != ~~(t / 100) && 4 != ~~(t / 100)) ? S.onRetry(e) : 2 == ~~(e.status / 100) ? S.onSuccess(e) : S.onFail(e)
})
};
return (c = e.hostsCache, Promise.all(r.map(function(e) {
return c.get(e, function() {
return Promise.resolve(l(e))
})
})).then(function(e) {
var t = e.filter(function(e) {
return 1 === e.status || Date.now() - e.lastUpdate > 12e4
}),
a = e.filter(function(e) {
return 3 === e.status && Date.now() - e.lastUpdate <= 12e4
}),
o = [].concat(n(t), n(a));
return {
getTimeout: function(e, t) {
return (0 === a.length && 0 === e ? 1 : a.length + 3 + e) * t
},
statelessHosts: o.length > 0 ? o.map(function(e) {
return d(e)
}) : r
}
})).then(function(e) {
return x(n(e.statelessHosts).reverse(), e.getTimeout)
})
}
function m(e) {
return Object.keys(e).map(function(t) {
var r;
return i("%s=%s", t, (r = e[t], "[object Object]" === Object.prototype.toString.call(r) || "[object Array]" === Object.prototype.toString.call(r) ? JSON.stringify(e[t]) : e[t]))
}).join("&")
}
function p(e) {
return e.map(function(e) {
return v(e)
})
}
function v(e) {
var r = e.request.headers["x-algolia-api-key"] ? {
"x-algolia-api-key": "*****"
} : {};
return t(t({}, e), {}, {
request: t(t({}, e.request), {}, {
headers: t(t({}, e.request.headers), r)
})
})
}
var g = function(e) {
var n, a, i, l, f, m, p, v, g, y, b, w, x, j = e.appId,
S = (n = void 0 !== e.authMode ? e.authMode : s.WithinHeaders, a = {
"x-algolia-api-key": e.apiKey,
"x-algolia-application-id": j
}, {
headers: function() {
return n === s.WithinHeaders ? a : {}
},
queryParameters: function() {
return n === s.WithinQueryParameters ? a : {}
}
}),
P = (l = (i = t(t({
hosts: [{
url: "".concat(j, "-dsn.algolia.net"),
accept: u.Read
}, {
url: "".concat(j, ".algolia.net"),
accept: u.Write
}].concat(function(e) {
for (var t = e.length - 1; t > 0; t--) {
var r = Math.floor(Math.random() * (t + 1)),
n = e[t];
e[t] = e[r], e[r] = n
}
return e
}([{
url: "".concat(j, "-1.algolianet.com")
}, {
url: "".concat(j, "-2.algolianet.com")
}, {
url: "".concat(j, "-3.algolianet.com")
}]))
}, e), {}, {
headers: t(t(t({}, S.headers()), {
"content-type": "application/x-www-form-urlencoded"
}), e.headers),
queryParameters: t(t({}, S.queryParameters()), e.queryParameters)
})).hostsCache, f = i.logger, m = i.requester, p = i.requestsCache, v = i.responsesCache, g = i.timeouts, y = i.userAgent, b = i.hosts, w = i.queryParameters, x = {
hostsCache: l,
logger: f,
requester: m,
requestsCache: p,
responsesCache: v,
timeouts: g,
userAgent: y,
headers: i.headers,
queryParameters: w,
hosts: b.map(function(e) {
return d(e)
}),
read: function(e, t) {
var n = c(t, x.timeouts.read),
a = function() {
return h(x, x.hosts.filter(function(e) {
return 0 != (e.accept & u.Read)
}), e, n)
};
if (!0 !== (void 0 !== n.cacheable ? n.cacheable : e.cacheable)) return a();
var o = {
request: e,
mappedRequestOptions: n,
transporter: {
queryParameters: x.queryParameters,
headers: x.headers
}
};
return x.responsesCache.get(o, function() {
return x.requestsCache.get(o, function() {
return x.requestsCache.set(o, a()).then(function(e) {
return Promise.all([x.requestsCache.delete(o), e])
}, function(e) {
return Promise.all([x.requestsCache.delete(o), Promise.reject(e)])
}).then(function(e) {
var t = r(e, 2);
return t[0], t[1]
})
})
}, {
miss: function(e) {
return x.responsesCache.set(o, e)
}
})
},
write: function(e, t) {
return h(x, x.hosts.filter(function(e) {
return 0 != (e.accept & u.Write)
}), e, c(t, x.timeouts.write))
}
});
return o({
transporter: P,
appId: j,
addAlgoliaAgent: function(e, t) {
P.userAgent.add({
segment: e,
version: t
})
},
clearCache: function() {
return Promise.all([P.requestsCache.clear(), P.responsesCache.clear()]).then(function() {})
}
}, e.methods)
},
y = function(e) {
return function(t, r) {
return "GET" === t.method ? e.transporter.read(t, r) : e.transporter.write(t, r)
}
},
b = function(e) {
return function(t) {
var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return o({
transporter: e.transporter,
appId: e.appId,
indexName: t
}, r.methods)
}
},
w = function(e) {
return function(r, n) {
var a = r.map(function(e) {
return t(t({}, e), {}, {
params: m(e.params || {})
})
});
return e.transporter.read({
method: f,
path: "1/indexes/*/queries",
data: {
requests: a
},
cacheable: !0
}, n)
}
},
x = function(e) {
return function(r, n) {
return Promise.all(r.map(function(r) {
var a = r.params,
o = a.facetName,
i = a.facetQuery,
s = function(e, t) {
if (null == e) return {};
var r, n, a = function(e, t) {
if (null == e) return {};
var r, n, a = {},
o = Object.keys(e);
for (n = 0; n < o.length; n++) r = o[n], t.indexOf(r) >= 0 || (a[r] = e[r]);
return a
}(e, t);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
for (n = 0; n < o.length; n++) r = o[n], t.indexOf(r) >= 0 || Object.prototype.propertyIsEnumerable.call(e, r) && (a[r] = e[r])
}
return a
}(a, ["facetName", "facetQuery"]);
return b(e)(r.indexName, {
methods: {
searchForFacetValues: P
}
}).searchForFacetValues(o, i, t(t({}, n), s))
}))
}
},
j = function(e) {
return function(t, r, n) {
return e.transporter.read({
method: f,
path: i("1/answers/%s/prediction", e.indexName),
data: {
query: t,
queryLanguages: r
},
cacheable: !0
}, n)
}
},
S = function(e) {
return function(t, r) {
return e.transporter.read({
method: f,
path: i("1/indexes/%s/query", e.indexName),
data: {
query: t
},
cacheable: !0
}, r)
}
},
P = function(e) {
return function(t, r, n) {
return e.transporter.read({
method: f,
path: i("1/indexes/%s/facets/%s/query", e.indexName, t),
data: {
facetQuery: r
},
cacheable: !0
}, n)
}
},
C = function(e) {
return function(r, n) {
var a = r.map(function(e) {
return t(t({}, e), {}, {
threshold: e.threshold || 0
})
});
return e.transporter.read({
method: f,
path: "1/indexes/*/recommendations",
data: {
requests: a
},
cacheable: !0
}, n)
}
};
function k(e, o, i) {
var c, u, l, d, f, h, m, p;
return g(t(t(t({}, {
appId: e,
apiKey: o,
timeouts: {
connect: 1,
read: 2,
write: 30
},
requester: {
send: function(e) {
return new Promise(function(t) {
var r = new XMLHttpRequest;
r.open(e.method, e.url, !0), Object.keys(e.headers).forEach(function(t) {
return r.setRequestHeader(t, e.headers[t])
});
var n, a = function(e, n) {
return setTimeout(function() {
r.abort(), t({
status: 0,
content: n,
isTimedOut: !0
})
}, 1e3 * e)
},
o = a(e.connectTimeout, "Connection timeout");
r.onreadystatechange = function() {
r.readyState > r.OPENED && void 0 === n && (clearTimeout(o), n = a(e.responseTimeout, "Socket timeout"))
}, r.onerror = function() {
0 === r.status && (clearTimeout(o), clearTimeout(n), t({
content: r.responseText || "Network request failed",
status: r.status,
isTimedOut: !1
}))
}, r.onload = function() {
clearTimeout(o), clearTimeout(n), t({
content: r.responseText,
status: r.status,
isTimedOut: !1
})
}, r.send(e.data)
})
}
},
logger: {
debug: function(e, t) {
return Promise.resolve()
},
info: function(e, t) {
return Promise.resolve()
},
error: function(e, t) {
return console.error(e, t), Promise.resolve()
}
},
responsesCache: a(),
requestsCache: a({
serializable: !1
}),
hostsCache: function e(t) {
var a = n(t.caches),
o = a.shift();
return void 0 === o ? {
get: function(e, t) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
miss: function() {
return Promise.resolve()
}
};
return t().then(function(e) {
return Promise.all([e, n.miss(e)])
}).then(function(e) {
return r(e, 1)[0]
})
},
set: function(e, t) {
return Promise.resolve(t)
},
delete: function(e) {
return Promise.resolve()
},
clear: function() {
return Promise.resolve()
}
} : {
get: function(t, r) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
miss: function() {
return Promise.resolve()
}
};
return o.get(t, r, n).catch(function() {
return e({
caches: a
}).get(t, r, n)
})
},
set: function(t, r) {
return o.set(t, r).catch(function() {
return e({
caches: a
}).set(t, r)
})
},
delete: function(t) {
return o.delete(t).catch(function() {
return e({
caches: a
}).delete(t)
})
},
clear: function() {
return o.clear().catch(function() {
return e({
caches: a
}).clear()
})
}
}
}({
caches: [(c = {
key: "".concat("4.24.0", "-").concat(e)
}, l = "algoliasearch-client-js-".concat(c.key), d = function() {
return void 0 === u && (u = c.localStorage || window.localStorage), u
}, f = function() {
return JSON.parse(d().getItem(l) || "{}")
}, h = function(e) {
d().setItem(l, JSON.stringify(e))
}, m = function() {
var e = c.timeToLive ? 1e3 * c.timeToLive : null,
t = Object.fromEntries(Object.entries(f()).filter(function(e) {
return void 0 !== r(e, 2)[1].timestamp
}));
h(t), e && h(Object.fromEntries(Object.entries(t).filter(function(t) {
var n = r(t, 2)[1],
a = (new Date).getTime();
return !(n.timestamp + e < a)
})))
}, {
get: function(e, t) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
miss: function() {
return Promise.resolve()
}
};
return Promise.resolve().then(function() {
m();
var t = JSON.stringify(e);
return f()[t]
}).then(function(e) {
return Promise.all([e ? e.value : t(), void 0 !== e])
}).then(function(e) {
var t = r(e, 2),
a = t[0];
return Promise.all([a, t[1] || n.miss(a)])
}).then(function(e) {
return r(e, 1)[0]
})
},
set: function(e, t) {
return Promise.resolve().then(function() {
var r = f();
return r[JSON.stringify(e)] = {
timestamp: (new Date).getTime(),
value: t
}, d().setItem(l, JSON.stringify(r)), t
})
},
delete: function(e) {
return Promise.resolve().then(function() {
var t = f();
delete t[JSON.stringify(e)], d().setItem(l, JSON.stringify(t))
})
},
clear: function() {
return Promise.resolve().then(function() {
d().removeItem(l)
})
}
}), a()]
}),
userAgent: (p = {
value: "Algolia for JavaScript (".concat("4.24.0", ")"),
add: function(e) {
var t = "; ".concat(e.segment).concat(void 0 !== e.version ? " (".concat(e.version, ")") : "");
return -1 === p.value.indexOf(t) && (p.value = "".concat(p.value).concat(t)), p
}
}).add({
segment: "Browser",
version: "lite"
}),
authMode: s.WithinQueryParameters
}), i), {}, {
methods: {
search: w,
searchForFacetValues: x,
multipleQueries: w,
multipleSearchForFacetValues: x,
customRequest: y,
initIndex: function(e) {
return function(t) {
return b(e)(t, {
methods: {
search: S,
searchForFacetValues: P,
findAnswers: j
}
})
}
},
getRecommendations: C
}
}))
}
return k.version = "4.24.0", k
}()
},
23988: e => {
"use strict";
e.s({
default: () => i
});
var t = e.i(892988),
r = e.i(542803),
n = e.i(378469);
e.i(873959);
var a = e.i(965790),
o = e.i(167454);
function i({
index: e,
searchOptions: i,
tags: c,
defaultTag: u,
showAlgolia: l = !1,
allowClear: d = !1,
...f
}) {
let [h, m] = (0, n.useState)(u), {
search: p,
setSearch: v,
query: g
} = (0, r.useDocsSearch)({
type: "algolia",
index: e,
...i
}, void 0, h);
return (0, a.useOnChange)(u, e => {
m(e)
}), (0, t.jsx)(o.SearchDialog, {
search: p,
onSearchChange: v,
results: g.data ?? [],
isLoading: g.isLoading,
...f,
footer: c ? (0, t.jsxs)(t.Fragment, {
children: [(0, t.jsx)(o.TagsList, {
tag: h,
onTagChange: m,
items: c,
allowClear: d,
children: l ? (0, t.jsx)(s, {}) : null
}), f.footer]
}) : f.footer
})
}
function s() {
return (0, t.jsx)("a", {
href: "https://algolia.com",
rel: "noreferrer noopener",
className: "ms-auto text-xs text-fd-muted-foreground",
children: "Search powered by Algolia"
})
}
},
996117: e => {
"use strict";
e.s({
SearchDialog: () => i
}), e.i(983505);
var t = e.i(892988),
r = e.i(299188),
n = e.i(23988),
a = e.i(518937);
let o = (0, r.default)("NNTAHQI9C5", "68e1a40be597f44e4c4e5c33f6c17be1").initIndex("turbo_docs_production");
function i(e) {
return (0, t.jsx)(n.default, {
index: o,
...e,
links: [
["Home", "/"],
["Turborepo documentation", "/docs"],
["Blog", "/blog"],
["Changelog", `${a.gitHubRepoUrl}/releases`],
["Github", a.gitHubRepoUrl],
["Community", "https://community.vercel.com/tag/turborepo"]
]
})
}
},
409122: e => {
"use strict";
e.s({
RootProvider: () => o
});
var t = e.i(892988);
e.i(127460);
var r = e.i(659825),
n = e.i(996117),
a = e.i(692752);
function o({
children: e
}) {
return (0, t.jsx)(a.TopLevelMobileMenuProvider, {
children: (0, t.jsx)(r.RootProvider, {
search: {
SearchDialog: n.SearchDialog
},
children: e
})
})
}
},
948415: e => {
e.v(t => Promise.all(["static/chunks/cde6c87527614ff0.js"].map(t => e.l(t))).then(() => t(565780)))
},
592367: e => {
e.v(t => Promise.all(["static/chunks/55520c0fe94c9753.js", "static/chunks/ce52eb319b3e30d6.js"].map(t => e.l(t))).then(() => t(788553)))
},
551282: e => {
e.v(t => Promise.all(["static/chunks/5a6476cea4a86903.js"].map(t => e.l(t))).then(() => t(868350)))
},
61608: e => {
e.v(t => Promise.all(["static/chunks/1b3f36eba7a77671.js"].map(t => e.l(t))).then(() => t(320093)))
},
98812: e => {
e.v(t => Promise.all(["static/chunks/5b898a4b3c092c1e.js"].map(t => e.l(t))).then(() => t(981171)))
}
}]);