boltdocs 1.7.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SearchDialog-GOZ6X53X.css → SearchDialog-BEVZQ74P.css} +202 -15
- package/dist/{SearchDialog-6Z7CUAYJ.mjs → SearchDialog-MEWGAONO.mjs} +1 -1
- package/dist/{chunk-SFVOGJ2W.mjs → chunk-OZLYRXAD.mjs} +228 -149
- package/dist/client/index.css +202 -15
- package/dist/client/index.d.mts +25 -4
- package/dist/client/index.d.ts +25 -4
- package/dist/client/index.js +439 -309
- package/dist/client/index.mjs +29 -1
- package/dist/client/ssr.css +202 -15
- package/dist/client/ssr.d.mts +1 -1
- package/dist/client/ssr.d.ts +1 -1
- package/dist/client/ssr.js +276 -175
- package/dist/client/ssr.mjs +1 -1
- package/dist/{config-D68h41CA.d.ts → config-BsFQ-ErD.d.mts} +9 -0
- package/dist/{config-D68h41CA.d.mts → config-BsFQ-ErD.d.ts} +9 -0
- package/dist/node/index.d.mts +4 -2
- package/dist/node/index.d.ts +4 -2
- package/dist/node/index.js +2 -1
- package/dist/node/index.mjs +2 -1
- package/dist/{types-BbceAHA0.d.mts → types-Dj-bfnC3.d.mts} +2 -0
- package/dist/{types-BbceAHA0.d.ts → types-Dj-bfnC3.d.ts} +2 -0
- package/package.json +1 -1
- package/src/client/index.ts +2 -0
- package/src/client/theme/components/mdx/Field.tsx +60 -0
- package/src/client/theme/components/mdx/index.ts +3 -0
- package/src/client/theme/components/mdx/mdx-components.css +95 -0
- package/src/client/theme/styles/variables.css +1 -1
- package/src/client/theme/styles.css +1 -0
- package/src/client/theme/ui/CopyMarkdown/CopyMarkdown.tsx +82 -0
- package/src/client/theme/ui/CopyMarkdown/copy-markdown.css +114 -0
- package/src/client/theme/ui/CopyMarkdown/index.ts +1 -0
- package/src/client/theme/ui/Layout/Layout.tsx +7 -0
- package/src/client/theme/ui/Layout/base.css +18 -1
- package/src/client/theme/ui/Link/link-preview.css +1 -20
- package/src/client/types.ts +2 -0
- package/src/node/config.ts +6 -0
- package/src/node/routes/parser.ts +1 -0
- package/src/node/routes/types.ts +2 -0
package/dist/client/index.js
CHANGED
|
@@ -1937,6 +1937,97 @@ var init_ErrorBoundary2 = __esm({
|
|
|
1937
1937
|
}
|
|
1938
1938
|
});
|
|
1939
1939
|
|
|
1940
|
+
// src/client/theme/ui/CopyMarkdown/copy-markdown.css
|
|
1941
|
+
var init_copy_markdown = __esm({
|
|
1942
|
+
"src/client/theme/ui/CopyMarkdown/copy-markdown.css"() {
|
|
1943
|
+
}
|
|
1944
|
+
});
|
|
1945
|
+
|
|
1946
|
+
// src/client/theme/ui/CopyMarkdown/CopyMarkdown.tsx
|
|
1947
|
+
function CopyMarkdown({ content, config }) {
|
|
1948
|
+
const [isOpen, setIsOpen] = (0, import_react16.useState)(false);
|
|
1949
|
+
const [copied, setCopied] = (0, import_react16.useState)(false);
|
|
1950
|
+
const dropdownRef = (0, import_react16.useRef)(null);
|
|
1951
|
+
const isEnabled = config !== false;
|
|
1952
|
+
const buttonText = typeof config === "object" ? config.text || "Copy Markdown" : "Copy Markdown";
|
|
1953
|
+
(0, import_react16.useEffect)(() => {
|
|
1954
|
+
function handleClickOutside(event) {
|
|
1955
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
1956
|
+
setIsOpen(false);
|
|
1957
|
+
}
|
|
1958
|
+
}
|
|
1959
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
1960
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
1961
|
+
}, []);
|
|
1962
|
+
if (!isEnabled || !content) return null;
|
|
1963
|
+
const handleCopy = () => {
|
|
1964
|
+
navigator.clipboard.writeText(content);
|
|
1965
|
+
setCopied(true);
|
|
1966
|
+
setIsOpen(false);
|
|
1967
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
1968
|
+
};
|
|
1969
|
+
const handleOpenRaw = () => {
|
|
1970
|
+
const blob = new Blob([content], { type: "text/plain;charset=utf-8" });
|
|
1971
|
+
const url = URL.createObjectURL(blob);
|
|
1972
|
+
window.open(url, "_blank");
|
|
1973
|
+
setIsOpen(false);
|
|
1974
|
+
};
|
|
1975
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "boltdocs-copy-markdown", ref: dropdownRef, children: [
|
|
1976
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "copy-btn-group", children: [
|
|
1977
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1978
|
+
"button",
|
|
1979
|
+
{
|
|
1980
|
+
className: "copy-btn",
|
|
1981
|
+
onClick: handleCopy,
|
|
1982
|
+
"aria-label": "Copy Markdown",
|
|
1983
|
+
children: [
|
|
1984
|
+
copied ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.Check, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.Copy, { size: 16 }),
|
|
1985
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "copy-label", children: copied ? "Copied!" : buttonText })
|
|
1986
|
+
]
|
|
1987
|
+
}
|
|
1988
|
+
),
|
|
1989
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1990
|
+
"button",
|
|
1991
|
+
{
|
|
1992
|
+
className: `copy-dropdown-toggle ${isOpen ? "is-active" : ""}`,
|
|
1993
|
+
onClick: () => setIsOpen(!isOpen),
|
|
1994
|
+
"aria-label": "More options",
|
|
1995
|
+
"aria-expanded": isOpen,
|
|
1996
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.ChevronDown, { size: 14, className: "arrow-icon" })
|
|
1997
|
+
}
|
|
1998
|
+
)
|
|
1999
|
+
] }),
|
|
2000
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "copy-dropdown", children: [
|
|
2001
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("button", { className: "copy-option", onClick: handleCopy, children: [
|
|
2002
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.Copy, { size: 14 }),
|
|
2003
|
+
"Copy Markdown"
|
|
2004
|
+
] }),
|
|
2005
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("button", { className: "copy-option", onClick: handleOpenRaw, children: [
|
|
2006
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.ExternalLink, { size: 14 }),
|
|
2007
|
+
"View as Markdown"
|
|
2008
|
+
] })
|
|
2009
|
+
] })
|
|
2010
|
+
] });
|
|
2011
|
+
}
|
|
2012
|
+
var import_react16, import_lucide_react10, import_jsx_runtime21;
|
|
2013
|
+
var init_CopyMarkdown = __esm({
|
|
2014
|
+
"src/client/theme/ui/CopyMarkdown/CopyMarkdown.tsx"() {
|
|
2015
|
+
"use strict";
|
|
2016
|
+
import_react16 = require("react");
|
|
2017
|
+
import_lucide_react10 = require("lucide-react");
|
|
2018
|
+
init_copy_markdown();
|
|
2019
|
+
import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2020
|
+
}
|
|
2021
|
+
});
|
|
2022
|
+
|
|
2023
|
+
// src/client/theme/ui/CopyMarkdown/index.ts
|
|
2024
|
+
var init_CopyMarkdown2 = __esm({
|
|
2025
|
+
"src/client/theme/ui/CopyMarkdown/index.ts"() {
|
|
2026
|
+
"use strict";
|
|
2027
|
+
init_CopyMarkdown();
|
|
2028
|
+
}
|
|
2029
|
+
});
|
|
2030
|
+
|
|
1940
2031
|
// src/client/theme/styles.css
|
|
1941
2032
|
var init_styles = __esm({
|
|
1942
2033
|
"src/client/theme/styles.css"() {
|
|
@@ -1975,14 +2066,14 @@ function ThemeLayout({
|
|
|
1975
2066
|
const prevPage = localIndex > 0 ? filteredRoutes[localIndex - 1] : null;
|
|
1976
2067
|
const nextPage = localIndex >= 0 && localIndex < filteredRoutes.length - 1 ? filteredRoutes[localIndex + 1] : null;
|
|
1977
2068
|
const { preload } = usePreload();
|
|
1978
|
-
|
|
2069
|
+
import_react17.default.useEffect(() => {
|
|
1979
2070
|
if (prevPage?.path) preload(prevPage.path);
|
|
1980
2071
|
if (nextPage?.path) preload(nextPage.path);
|
|
1981
2072
|
}, [prevPage, nextPage, preload]);
|
|
1982
|
-
return /* @__PURE__ */ (0,
|
|
1983
|
-
/* @__PURE__ */ (0,
|
|
1984
|
-
background !== void 0 ? background : /* @__PURE__ */ (0,
|
|
1985
|
-
head !== void 0 ? head : /* @__PURE__ */ (0,
|
|
2073
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: `boltdocs-layout ${className}`, style, children: [
|
|
2074
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ProgressBar, {}),
|
|
2075
|
+
background !== void 0 ? background : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(BackgroundGradient, {}),
|
|
2076
|
+
head !== void 0 ? head : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1986
2077
|
Head,
|
|
1987
2078
|
{
|
|
1988
2079
|
siteTitle,
|
|
@@ -1990,7 +2081,7 @@ function ThemeLayout({
|
|
|
1990
2081
|
routes
|
|
1991
2082
|
}
|
|
1992
2083
|
),
|
|
1993
|
-
navbar !== void 0 ? navbar : /* @__PURE__ */ (0,
|
|
2084
|
+
navbar !== void 0 ? navbar : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1994
2085
|
Navbar,
|
|
1995
2086
|
{
|
|
1996
2087
|
config,
|
|
@@ -2000,43 +2091,52 @@ function ThemeLayout({
|
|
|
2000
2091
|
currentVersion
|
|
2001
2092
|
}
|
|
2002
2093
|
),
|
|
2003
|
-
/* @__PURE__ */ (0,
|
|
2004
|
-
sidebar !== void 0 ? sidebar : /* @__PURE__ */ (0,
|
|
2005
|
-
/* @__PURE__ */ (0,
|
|
2006
|
-
breadcrumbs !== void 0 ? breadcrumbs : /* @__PURE__ */ (0,
|
|
2007
|
-
/* @__PURE__ */ (0,
|
|
2008
|
-
|
|
2009
|
-
|
|
2094
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "boltdocs-main-container", children: [
|
|
2095
|
+
sidebar !== void 0 ? sidebar : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Sidebar, { routes: filteredRoutes, config }),
|
|
2096
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("main", { className: "boltdocs-content", children: [
|
|
2097
|
+
breadcrumbs !== void 0 ? breadcrumbs : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Breadcrumbs, { routes: filteredRoutes, config }),
|
|
2098
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "boltdocs-page", children: [
|
|
2099
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "boltdocs-page-header", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2100
|
+
CopyMarkdown,
|
|
2101
|
+
{
|
|
2102
|
+
content: routes[currentIndex]?._rawContent,
|
|
2103
|
+
config: config.themeConfig?.copyMarkdown
|
|
2104
|
+
}
|
|
2105
|
+
) }),
|
|
2106
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ErrorBoundary, { children })
|
|
2107
|
+
] }),
|
|
2108
|
+
(prevPage || nextPage) && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("nav", { className: "page-nav", "aria-label": "Pagination", children: [
|
|
2109
|
+
prevPage ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2010
2110
|
Link,
|
|
2011
2111
|
{
|
|
2012
2112
|
to: prevPage.path || "/",
|
|
2013
2113
|
className: "page-nav-link page-nav-link--prev",
|
|
2014
2114
|
children: [
|
|
2015
|
-
/* @__PURE__ */ (0,
|
|
2016
|
-
/* @__PURE__ */ (0,
|
|
2017
|
-
/* @__PURE__ */ (0,
|
|
2115
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "page-nav-info", children: [
|
|
2116
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "page-nav-label", children: "Previous" }),
|
|
2117
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "page-nav-title", children: prevPage.title })
|
|
2018
2118
|
] }),
|
|
2019
|
-
/* @__PURE__ */ (0,
|
|
2119
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react11.ChevronLeft, { className: "page-nav-arrow", size: 16 })
|
|
2020
2120
|
]
|
|
2021
2121
|
}
|
|
2022
|
-
) : /* @__PURE__ */ (0,
|
|
2023
|
-
nextPage ? /* @__PURE__ */ (0,
|
|
2122
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", {}),
|
|
2123
|
+
nextPage ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2024
2124
|
Link,
|
|
2025
2125
|
{
|
|
2026
2126
|
to: nextPage.path || "/",
|
|
2027
2127
|
className: "page-nav-link page-nav-link--next",
|
|
2028
2128
|
children: [
|
|
2029
|
-
/* @__PURE__ */ (0,
|
|
2030
|
-
/* @__PURE__ */ (0,
|
|
2031
|
-
/* @__PURE__ */ (0,
|
|
2129
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "page-nav-info", children: [
|
|
2130
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "page-nav-label", children: "Next" }),
|
|
2131
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "page-nav-title", children: nextPage.title })
|
|
2032
2132
|
] }),
|
|
2033
|
-
/* @__PURE__ */ (0,
|
|
2133
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react11.ChevronRight, { className: "page-nav-arrow", size: 16 })
|
|
2034
2134
|
]
|
|
2035
2135
|
}
|
|
2036
|
-
) : /* @__PURE__ */ (0,
|
|
2136
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", {})
|
|
2037
2137
|
] })
|
|
2038
2138
|
] }),
|
|
2039
|
-
toc !== void 0 ? toc : /* @__PURE__ */ (0,
|
|
2139
|
+
toc !== void 0 ? toc : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2040
2140
|
OnThisPage,
|
|
2041
2141
|
{
|
|
2042
2142
|
headings: routes[currentIndex]?.headings,
|
|
@@ -2048,14 +2148,14 @@ function ThemeLayout({
|
|
|
2048
2148
|
] })
|
|
2049
2149
|
] });
|
|
2050
2150
|
}
|
|
2051
|
-
var
|
|
2151
|
+
var import_react17, import_react_router_dom10, import_lucide_react11, import_jsx_runtime22;
|
|
2052
2152
|
var init_Layout = __esm({
|
|
2053
2153
|
"src/client/theme/ui/Layout/Layout.tsx"() {
|
|
2054
2154
|
"use strict";
|
|
2055
|
-
|
|
2155
|
+
import_react17 = __toESM(require("react"));
|
|
2056
2156
|
import_react_router_dom10 = require("react-router-dom");
|
|
2057
2157
|
init_Link2();
|
|
2058
|
-
|
|
2158
|
+
import_lucide_react11 = require("lucide-react");
|
|
2059
2159
|
init_preload();
|
|
2060
2160
|
init_Navbar2();
|
|
2061
2161
|
init_Sidebar2();
|
|
@@ -2071,8 +2171,9 @@ var init_Layout = __esm({
|
|
|
2071
2171
|
init_BackgroundGradient2();
|
|
2072
2172
|
init_ProgressBar3();
|
|
2073
2173
|
init_ErrorBoundary2();
|
|
2174
|
+
init_CopyMarkdown2();
|
|
2074
2175
|
init_styles();
|
|
2075
|
-
|
|
2176
|
+
import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2076
2177
|
}
|
|
2077
2178
|
});
|
|
2078
2179
|
|
|
@@ -2086,23 +2187,23 @@ var init_Layout2 = __esm({
|
|
|
2086
2187
|
|
|
2087
2188
|
// src/client/theme/ui/NotFound/NotFound.tsx
|
|
2088
2189
|
function NotFound() {
|
|
2089
|
-
return /* @__PURE__ */ (0,
|
|
2090
|
-
/* @__PURE__ */ (0,
|
|
2091
|
-
/* @__PURE__ */ (0,
|
|
2092
|
-
/* @__PURE__ */ (0,
|
|
2093
|
-
/* @__PURE__ */ (0,
|
|
2094
|
-
/* @__PURE__ */ (0,
|
|
2190
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "boltdocs-not-found", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "not-found-content", children: [
|
|
2191
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "not-found-code", children: "404" }),
|
|
2192
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("h1", { className: "not-found-title", children: "Page Not Found" }),
|
|
2193
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "not-found-text", children: "The page you're looking for doesn't exist or has been moved." }),
|
|
2194
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Link, { to: "/", className: "not-found-link", children: [
|
|
2195
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react12.ArrowLeft, { size: 16 }),
|
|
2095
2196
|
" Go to Home"
|
|
2096
2197
|
] })
|
|
2097
2198
|
] }) });
|
|
2098
2199
|
}
|
|
2099
|
-
var
|
|
2200
|
+
var import_lucide_react12, import_jsx_runtime23;
|
|
2100
2201
|
var init_NotFound = __esm({
|
|
2101
2202
|
"src/client/theme/ui/NotFound/NotFound.tsx"() {
|
|
2102
2203
|
"use strict";
|
|
2103
2204
|
init_Link2();
|
|
2104
|
-
|
|
2105
|
-
|
|
2205
|
+
import_lucide_react12 = require("lucide-react");
|
|
2206
|
+
import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2106
2207
|
}
|
|
2107
2208
|
});
|
|
2108
2209
|
|
|
@@ -2116,16 +2217,16 @@ var init_NotFound2 = __esm({
|
|
|
2116
2217
|
|
|
2117
2218
|
// src/client/theme/ui/Loading/Loading.tsx
|
|
2118
2219
|
function Loading() {
|
|
2119
|
-
return /* @__PURE__ */ (0,
|
|
2120
|
-
/* @__PURE__ */ (0,
|
|
2121
|
-
/* @__PURE__ */ (0,
|
|
2220
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "boltdocs-loading", children: [
|
|
2221
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "loading-spinner" }),
|
|
2222
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "loading-text", children: "Loading..." })
|
|
2122
2223
|
] });
|
|
2123
2224
|
}
|
|
2124
|
-
var
|
|
2225
|
+
var import_jsx_runtime24;
|
|
2125
2226
|
var init_Loading = __esm({
|
|
2126
2227
|
"src/client/theme/ui/Loading/Loading.tsx"() {
|
|
2127
2228
|
"use strict";
|
|
2128
|
-
|
|
2229
|
+
import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2129
2230
|
}
|
|
2130
2231
|
});
|
|
2131
2232
|
|
|
@@ -2139,35 +2240,35 @@ var init_Loading2 = __esm({
|
|
|
2139
2240
|
|
|
2140
2241
|
// src/client/theme/components/CodeBlock/CodeBlock.tsx
|
|
2141
2242
|
function CodeBlock({ children, ...props }) {
|
|
2142
|
-
const [copied, setCopied] = (0,
|
|
2143
|
-
const preRef = (0,
|
|
2144
|
-
const handleCopy = (0,
|
|
2243
|
+
const [copied, setCopied] = (0, import_react18.useState)(false);
|
|
2244
|
+
const preRef = (0, import_react18.useRef)(null);
|
|
2245
|
+
const handleCopy = (0, import_react18.useCallback)(async () => {
|
|
2145
2246
|
const code = preRef.current?.textContent || "";
|
|
2146
2247
|
copyToClipboard(code);
|
|
2147
2248
|
setCopied(true);
|
|
2148
2249
|
setTimeout(() => setCopied(false), 2e3);
|
|
2149
2250
|
}, []);
|
|
2150
|
-
return /* @__PURE__ */ (0,
|
|
2151
|
-
/* @__PURE__ */ (0,
|
|
2251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "code-block-wrapper", children: [
|
|
2252
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2152
2253
|
"button",
|
|
2153
2254
|
{
|
|
2154
2255
|
className: `code-block-copy ${copied ? "copied" : ""}`,
|
|
2155
2256
|
onClick: handleCopy,
|
|
2156
2257
|
"aria-label": "Copy code",
|
|
2157
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
2258
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react13.Check, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react13.Copy, { size: 16 })
|
|
2158
2259
|
}
|
|
2159
2260
|
),
|
|
2160
|
-
/* @__PURE__ */ (0,
|
|
2261
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("pre", { ref: preRef, ...props, children })
|
|
2161
2262
|
] });
|
|
2162
2263
|
}
|
|
2163
|
-
var
|
|
2264
|
+
var import_react18, import_lucide_react13, import_jsx_runtime25;
|
|
2164
2265
|
var init_CodeBlock = __esm({
|
|
2165
2266
|
"src/client/theme/components/CodeBlock/CodeBlock.tsx"() {
|
|
2166
2267
|
"use strict";
|
|
2167
|
-
|
|
2168
|
-
|
|
2268
|
+
import_react18 = require("react");
|
|
2269
|
+
import_lucide_react13 = require("lucide-react");
|
|
2169
2270
|
init_utils();
|
|
2170
|
-
|
|
2271
|
+
import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2171
2272
|
}
|
|
2172
2273
|
});
|
|
2173
2274
|
|
|
@@ -2189,9 +2290,9 @@ function Video({
|
|
|
2189
2290
|
preload = "metadata",
|
|
2190
2291
|
...rest
|
|
2191
2292
|
}) {
|
|
2192
|
-
const containerRef = (0,
|
|
2193
|
-
const [isVisible, setIsVisible] = (0,
|
|
2194
|
-
(0,
|
|
2293
|
+
const containerRef = (0, import_react19.useRef)(null);
|
|
2294
|
+
const [isVisible, setIsVisible] = (0, import_react19.useState)(false);
|
|
2295
|
+
(0, import_react19.useEffect)(() => {
|
|
2195
2296
|
const el = containerRef.current;
|
|
2196
2297
|
if (!el) return;
|
|
2197
2298
|
const observer = new IntersectionObserver(
|
|
@@ -2206,7 +2307,7 @@ function Video({
|
|
|
2206
2307
|
observer.observe(el);
|
|
2207
2308
|
return () => observer.disconnect();
|
|
2208
2309
|
}, []);
|
|
2209
|
-
return /* @__PURE__ */ (0,
|
|
2310
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref: containerRef, className: "boltdocs-video-wrapper", children: isVisible ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2210
2311
|
"video",
|
|
2211
2312
|
{
|
|
2212
2313
|
className: "boltdocs-video",
|
|
@@ -2221,7 +2322,7 @@ function Video({
|
|
|
2221
2322
|
"Your browser does not support the video tag."
|
|
2222
2323
|
]
|
|
2223
2324
|
}
|
|
2224
|
-
) : /* @__PURE__ */ (0,
|
|
2325
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2225
2326
|
"div",
|
|
2226
2327
|
{
|
|
2227
2328
|
className: "boltdocs-video-placeholder",
|
|
@@ -2230,12 +2331,12 @@ function Video({
|
|
|
2230
2331
|
}
|
|
2231
2332
|
) });
|
|
2232
2333
|
}
|
|
2233
|
-
var
|
|
2334
|
+
var import_react19, import_jsx_runtime26;
|
|
2234
2335
|
var init_Video = __esm({
|
|
2235
2336
|
"src/client/theme/components/Video/Video.tsx"() {
|
|
2236
2337
|
"use strict";
|
|
2237
|
-
|
|
2238
|
-
|
|
2338
|
+
import_react19 = require("react");
|
|
2339
|
+
import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2239
2340
|
}
|
|
2240
2341
|
});
|
|
2241
2342
|
|
|
@@ -2252,14 +2353,14 @@ var init_Video2 = __esm({
|
|
|
2252
2353
|
});
|
|
2253
2354
|
|
|
2254
2355
|
// src/client/theme/icons/npm.tsx
|
|
2255
|
-
var
|
|
2356
|
+
var import_jsx_runtime27, NPM;
|
|
2256
2357
|
var init_npm = __esm({
|
|
2257
2358
|
"src/client/theme/icons/npm.tsx"() {
|
|
2258
2359
|
"use strict";
|
|
2259
|
-
|
|
2260
|
-
NPM = (props) => /* @__PURE__ */ (0,
|
|
2261
|
-
/* @__PURE__ */ (0,
|
|
2262
|
-
/* @__PURE__ */ (0,
|
|
2360
|
+
import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2361
|
+
NPM = (props) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("svg", { ...props, viewBox: "0 0 2500 2500", children: [
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { fill: "#c00", d: "M0 0h2500v2500H0z" }),
|
|
2363
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2263
2364
|
"path",
|
|
2264
2365
|
{
|
|
2265
2366
|
fill: "#fff",
|
|
@@ -2271,69 +2372,69 @@ var init_npm = __esm({
|
|
|
2271
2372
|
});
|
|
2272
2373
|
|
|
2273
2374
|
// src/client/theme/icons/pnpm.tsx
|
|
2274
|
-
var
|
|
2375
|
+
var import_jsx_runtime28, Pnpm;
|
|
2275
2376
|
var init_pnpm = __esm({
|
|
2276
2377
|
"src/client/theme/icons/pnpm.tsx"() {
|
|
2277
2378
|
"use strict";
|
|
2278
|
-
|
|
2279
|
-
Pnpm = (props) => /* @__PURE__ */ (0,
|
|
2379
|
+
import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2380
|
+
Pnpm = (props) => /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2280
2381
|
"svg",
|
|
2281
2382
|
{
|
|
2282
2383
|
...props,
|
|
2283
2384
|
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
2284
2385
|
viewBox: "76.58987244897958 44 164.00775510204068 164",
|
|
2285
2386
|
children: [
|
|
2286
|
-
/* @__PURE__ */ (0,
|
|
2287
|
-
/* @__PURE__ */ (0,
|
|
2387
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("defs", { children: [
|
|
2388
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2288
2389
|
"path",
|
|
2289
2390
|
{
|
|
2290
2391
|
d: "M237.6 95L187.6 95L187.6 45L237.6 45L237.6 95Z",
|
|
2291
2392
|
id: "pnpm_dark__b45vdTD8hs"
|
|
2292
2393
|
}
|
|
2293
2394
|
),
|
|
2294
|
-
/* @__PURE__ */ (0,
|
|
2395
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2295
2396
|
"path",
|
|
2296
2397
|
{
|
|
2297
2398
|
d: "M182.59 95L132.59 95L132.59 45L182.59 45L182.59 95Z",
|
|
2298
2399
|
id: "pnpm_dark__a40WtxIl8d"
|
|
2299
2400
|
}
|
|
2300
2401
|
),
|
|
2301
|
-
/* @__PURE__ */ (0,
|
|
2402
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2302
2403
|
"path",
|
|
2303
2404
|
{
|
|
2304
2405
|
d: "M127.59 95L77.59 95L77.59 45L127.59 45L127.59 95Z",
|
|
2305
2406
|
id: "pnpm_dark__h2CN9AEEpe"
|
|
2306
2407
|
}
|
|
2307
2408
|
),
|
|
2308
|
-
/* @__PURE__ */ (0,
|
|
2409
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2309
2410
|
"path",
|
|
2310
2411
|
{
|
|
2311
2412
|
d: "M237.6 150L187.6 150L187.6 100L237.6 100L237.6 150Z",
|
|
2312
2413
|
id: "pnpm_dark__dqv5133G8"
|
|
2313
2414
|
}
|
|
2314
2415
|
),
|
|
2315
|
-
/* @__PURE__ */ (0,
|
|
2416
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2316
2417
|
"path",
|
|
2317
2418
|
{
|
|
2318
2419
|
d: "M182.59 150L132.59 150L132.59 100L182.59 100L182.59 150Z",
|
|
2319
2420
|
id: "pnpm_dark__b1Lv79ypvm"
|
|
2320
2421
|
}
|
|
2321
2422
|
),
|
|
2322
|
-
/* @__PURE__ */ (0,
|
|
2423
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2323
2424
|
"path",
|
|
2324
2425
|
{
|
|
2325
2426
|
d: "M182.59 205L132.59 205L132.59 155L182.59 155L182.59 205Z",
|
|
2326
2427
|
id: "pnpm_dark__hy1IZWwLX"
|
|
2327
2428
|
}
|
|
2328
2429
|
),
|
|
2329
|
-
/* @__PURE__ */ (0,
|
|
2430
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2330
2431
|
"path",
|
|
2331
2432
|
{
|
|
2332
2433
|
d: "M237.6 205L187.6 205L187.6 155L237.6 155L237.6 205Z",
|
|
2333
2434
|
id: "pnpm_dark__akQfjxQes"
|
|
2334
2435
|
}
|
|
2335
2436
|
),
|
|
2336
|
-
/* @__PURE__ */ (0,
|
|
2437
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2337
2438
|
"path",
|
|
2338
2439
|
{
|
|
2339
2440
|
d: "M127.59 205L77.59 205L77.59 155L127.59 155L127.59 205Z",
|
|
@@ -2341,15 +2442,15 @@ var init_pnpm = __esm({
|
|
|
2341
2442
|
}
|
|
2342
2443
|
)
|
|
2343
2444
|
] }),
|
|
2344
|
-
/* @__PURE__ */ (0,
|
|
2345
|
-
/* @__PURE__ */ (0,
|
|
2346
|
-
/* @__PURE__ */ (0,
|
|
2347
|
-
/* @__PURE__ */ (0,
|
|
2348
|
-
/* @__PURE__ */ (0,
|
|
2349
|
-
/* @__PURE__ */ (0,
|
|
2350
|
-
/* @__PURE__ */ (0,
|
|
2351
|
-
/* @__PURE__ */ (0,
|
|
2352
|
-
/* @__PURE__ */ (0,
|
|
2445
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("g", { children: [
|
|
2446
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__b45vdTD8hs", fill: "#f9ad00" }) }),
|
|
2447
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__a40WtxIl8d", fill: "#f9ad00" }) }),
|
|
2448
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__h2CN9AEEpe", fill: "#f9ad00" }) }),
|
|
2449
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__dqv5133G8", fill: "#f9ad00" }) }),
|
|
2450
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__b1Lv79ypvm", fill: "#ffffff" }) }),
|
|
2451
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__hy1IZWwLX", fill: "#ffffff" }) }),
|
|
2452
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__akQfjxQes", fill: "#ffffff" }) }),
|
|
2453
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("use", { xlinkHref: "#pnpm_dark__bdSrwE5pk", fill: "#ffffff" }) })
|
|
2353
2454
|
] })
|
|
2354
2455
|
]
|
|
2355
2456
|
}
|
|
@@ -2358,62 +2459,62 @@ var init_pnpm = __esm({
|
|
|
2358
2459
|
});
|
|
2359
2460
|
|
|
2360
2461
|
// src/client/theme/icons/bun.tsx
|
|
2361
|
-
var
|
|
2462
|
+
var import_jsx_runtime29, Bun;
|
|
2362
2463
|
var init_bun = __esm({
|
|
2363
2464
|
"src/client/theme/icons/bun.tsx"() {
|
|
2364
2465
|
"use strict";
|
|
2365
|
-
|
|
2366
|
-
Bun = (props) => /* @__PURE__ */ (0,
|
|
2367
|
-
/* @__PURE__ */ (0,
|
|
2368
|
-
/* @__PURE__ */ (0,
|
|
2466
|
+
import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2467
|
+
Bun = (props) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("svg", { ...props, viewBox: "0 0 80 70", children: [
|
|
2468
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("path", { d: "M71.09 20.74c-.16-.17-.33-.34-.5-.5s-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5A26.46 26.46 0 0 1 75.5 35.7c0 16.57-16.82 30.05-37.5 30.05-11.58 0-21.94-4.23-28.83-10.86l.5.5.5.5.5.5.5.5.5.5.5.5.5.5C19.55 65.3 30.14 69.75 42 69.75c20.68 0 37.5-13.48 37.5-30 0-7.06-3.04-13.75-8.41-19.01Z" }),
|
|
2469
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2369
2470
|
"path",
|
|
2370
2471
|
{
|
|
2371
2472
|
d: "M73 35.7c0 15.21-15.67 27.54-35 27.54S3 50.91 3 35.7C3 26.27 9 17.94 18.22 13S33.18 3 38 3s8.94 4.13 19.78 10C67 17.94 73 26.27 73 35.7Z",
|
|
2372
2473
|
style: { fill: "#fbf0df" }
|
|
2373
2474
|
}
|
|
2374
2475
|
),
|
|
2375
|
-
/* @__PURE__ */ (0,
|
|
2476
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2376
2477
|
"path",
|
|
2377
2478
|
{
|
|
2378
2479
|
d: "M73 35.7a21.67 21.67 0 0 0-.8-5.78c-2.73 33.3-43.35 34.9-59.32 24.94A40 40 0 0 0 38 63.24c19.3 0 35-12.35 35-27.54Z",
|
|
2379
2480
|
style: { fill: "#f6dece" }
|
|
2380
2481
|
}
|
|
2381
2482
|
),
|
|
2382
|
-
/* @__PURE__ */ (0,
|
|
2483
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2383
2484
|
"path",
|
|
2384
2485
|
{
|
|
2385
2486
|
d: "M24.53 11.17C29 8.49 34.94 3.46 40.78 3.45A9.29 9.29 0 0 0 38 3c-2.42 0-5 1.25-8.25 3.13-1.13.66-2.3 1.39-3.54 2.15-2.33 1.44-5 3.07-8 4.7C8.69 18.13 3 26.62 3 35.7v1.19c6.06-21.41 17.07-23.04 21.53-25.72Z",
|
|
2386
2487
|
style: { fill: "#fffefc" }
|
|
2387
2488
|
}
|
|
2388
2489
|
),
|
|
2389
|
-
/* @__PURE__ */ (0,
|
|
2490
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2390
2491
|
"path",
|
|
2391
2492
|
{
|
|
2392
2493
|
d: "M35.12 5.53A16.41 16.41 0 0 1 29.49 18c-.28.25-.06.73.3.59 3.37-1.31 7.92-5.23 6-13.14-.08-.45-.67-.33-.67.08Zm2.27 0A16.24 16.24 0 0 1 39 19c-.12.35.31.65.55.36 2.19-2.8 4.1-8.36-1.62-14.36-.29-.26-.74.14-.54.49Zm2.76-.17A16.42 16.42 0 0 1 47 17.12a.33.33 0 0 0 .65.11c.92-3.49.4-9.44-7.17-12.53-.4-.16-.66.38-.33.62Zm-18.46 10.4a16.94 16.94 0 0 0 10.47-9c.18-.36.75-.22.66.18-1.73 8-7.52 9.67-11.12 9.45-.38.01-.37-.52-.01-.63Z",
|
|
2393
2494
|
style: { fill: "#ccbea7", fillRule: "evenodd" }
|
|
2394
2495
|
}
|
|
2395
2496
|
),
|
|
2396
|
-
/* @__PURE__ */ (0,
|
|
2397
|
-
/* @__PURE__ */ (0,
|
|
2398
|
-
/* @__PURE__ */ (0,
|
|
2497
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("path", { d: "M38 65.75C17.32 65.75.5 52.27.5 35.7c0-10 6.18-19.33 16.53-24.92 3-1.6 5.57-3.21 7.86-4.62 1.26-.78 2.45-1.51 3.6-2.19C32 1.89 35 .5 38 .5s5.62 1.2 8.9 3.14c1 .57 2 1.19 3.07 1.87 2.49 1.54 5.3 3.28 9 5.27C69.32 16.37 75.5 25.69 75.5 35.7c0 16.57-16.82 30.05-37.5 30.05ZM38 3c-2.42 0-5 1.25-8.25 3.13-1.13.66-2.3 1.39-3.54 2.15-2.33 1.44-5 3.07-8 4.7C8.69 18.13 3 26.62 3 35.7c0 15.19 15.7 27.55 35 27.55S73 50.89 73 35.7c0-9.08-5.69-17.57-15.22-22.7-3.78-2-6.73-3.88-9.12-5.36-1.09-.67-2.09-1.29-3-1.84C42.63 4 40.42 3 38 3Z" }),
|
|
2498
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("g", { children: [
|
|
2499
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2399
2500
|
"path",
|
|
2400
2501
|
{
|
|
2401
2502
|
d: "M45.05 43a8.93 8.93 0 0 1-2.92 4.71 6.81 6.81 0 0 1-4 1.88A6.84 6.84 0 0 1 34 47.71 8.93 8.93 0 0 1 31.12 43a.72.72 0 0 1 .8-.81h12.34a.72.72 0 0 1 .79.81Z",
|
|
2402
2503
|
style: { fill: "#b71422" }
|
|
2403
2504
|
}
|
|
2404
2505
|
),
|
|
2405
|
-
/* @__PURE__ */ (0,
|
|
2506
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2406
2507
|
"path",
|
|
2407
2508
|
{
|
|
2408
2509
|
d: "M34 47.79a6.91 6.91 0 0 0 4.12 1.9 6.91 6.91 0 0 0 4.11-1.9 10.63 10.63 0 0 0 1-1.07 6.83 6.83 0 0 0-4.9-2.31 6.15 6.15 0 0 0-5 2.78c.23.21.43.41.67.6Z",
|
|
2409
2510
|
style: { fill: "#ff6164" }
|
|
2410
2511
|
}
|
|
2411
2512
|
),
|
|
2412
|
-
/* @__PURE__ */ (0,
|
|
2413
|
-
/* @__PURE__ */ (0,
|
|
2513
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("path", { d: "M34.16 47a5.36 5.36 0 0 1 4.19-2.08 6 6 0 0 1 4 1.69c.23-.25.45-.51.66-.77a7 7 0 0 0-4.71-1.93 6.36 6.36 0 0 0-4.89 2.36 9.53 9.53 0 0 0 .75.73Z" }),
|
|
2514
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("path", { d: "M38.09 50.19a7.42 7.42 0 0 1-4.45-2 9.52 9.52 0 0 1-3.11-5.05 1.2 1.2 0 0 1 .26-1 1.41 1.41 0 0 1 1.13-.51h12.34a1.44 1.44 0 0 1 1.13.51 1.19 1.19 0 0 1 .25 1 9.52 9.52 0 0 1-3.11 5.05 7.42 7.42 0 0 1-4.44 2Zm-6.17-7.4c-.16 0-.2.07-.21.09a8.29 8.29 0 0 0 2.73 4.37A6.23 6.23 0 0 0 38.09 49a6.28 6.28 0 0 0 3.65-1.73 8.3 8.3 0 0 0 2.72-4.37.21.21 0 0 0-.2-.09Z" })
|
|
2414
2515
|
] }),
|
|
2415
|
-
/* @__PURE__ */ (0,
|
|
2416
|
-
/* @__PURE__ */ (0,
|
|
2516
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("g", { children: [
|
|
2517
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2417
2518
|
"ellipse",
|
|
2418
2519
|
{
|
|
2419
2520
|
cx: "53.22",
|
|
@@ -2423,7 +2524,7 @@ var init_bun = __esm({
|
|
|
2423
2524
|
style: { fill: "#febbd0" }
|
|
2424
2525
|
}
|
|
2425
2526
|
),
|
|
2426
|
-
/* @__PURE__ */ (0,
|
|
2527
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2427
2528
|
"ellipse",
|
|
2428
2529
|
{
|
|
2429
2530
|
cx: "22.95",
|
|
@@ -2433,14 +2534,14 @@ var init_bun = __esm({
|
|
|
2433
2534
|
style: { fill: "#febbd0" }
|
|
2434
2535
|
}
|
|
2435
2536
|
),
|
|
2436
|
-
/* @__PURE__ */ (0,
|
|
2537
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2437
2538
|
"path",
|
|
2438
2539
|
{
|
|
2439
2540
|
d: "M25.7 38.8a5.51 5.51 0 1 0-5.5-5.51 5.51 5.51 0 0 0 5.5 5.51Zm24.77 0A5.51 5.51 0 1 0 45 33.29a5.5 5.5 0 0 0 5.47 5.51Z",
|
|
2440
2541
|
style: { fillRule: "evenodd" }
|
|
2441
2542
|
}
|
|
2442
2543
|
),
|
|
2443
|
-
/* @__PURE__ */ (0,
|
|
2544
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2444
2545
|
"path",
|
|
2445
2546
|
{
|
|
2446
2547
|
d: "M24 33.64a2.07 2.07 0 1 0-2.06-2.07A2.07 2.07 0 0 0 24 33.64Zm24.77 0a2.07 2.07 0 1 0-2.06-2.07 2.07 2.07 0 0 0 2.04 2.07Z",
|
|
@@ -2453,12 +2554,12 @@ var init_bun = __esm({
|
|
|
2453
2554
|
});
|
|
2454
2555
|
|
|
2455
2556
|
// src/client/theme/icons/deno.tsx
|
|
2456
|
-
var
|
|
2557
|
+
var import_jsx_runtime30, Deno;
|
|
2457
2558
|
var init_deno = __esm({
|
|
2458
2559
|
"src/client/theme/icons/deno.tsx"() {
|
|
2459
2560
|
"use strict";
|
|
2460
|
-
|
|
2461
|
-
Deno = (props) => /* @__PURE__ */ (0,
|
|
2561
|
+
import_jsx_runtime30 = require("react/jsx-runtime");
|
|
2562
|
+
Deno = (props) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2462
2563
|
"svg",
|
|
2463
2564
|
{
|
|
2464
2565
|
...props,
|
|
@@ -2468,7 +2569,7 @@ var init_deno = __esm({
|
|
|
2468
2569
|
strokeMiterlimit: "2",
|
|
2469
2570
|
clipRule: "evenodd",
|
|
2470
2571
|
viewBox: "0 0 441 441",
|
|
2471
|
-
children: /* @__PURE__ */ (0,
|
|
2572
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2472
2573
|
"path",
|
|
2473
2574
|
{
|
|
2474
2575
|
fill: "currentColor",
|
|
@@ -2515,19 +2616,19 @@ function PackageManagerTabs({
|
|
|
2515
2616
|
pkg = "",
|
|
2516
2617
|
className = ""
|
|
2517
2618
|
}) {
|
|
2518
|
-
const [activeTab, setActiveTab] = (0,
|
|
2519
|
-
const [copied, setCopied] = (0,
|
|
2619
|
+
const [activeTab, setActiveTab] = (0, import_react20.useState)("npm");
|
|
2620
|
+
const [copied, setCopied] = (0, import_react20.useState)(false);
|
|
2520
2621
|
const activeCommand = getCommandForManager(activeTab, command, pkg);
|
|
2521
|
-
const handleCopy = (0,
|
|
2622
|
+
const handleCopy = (0, import_react20.useCallback)(async () => {
|
|
2522
2623
|
copyToClipboard(activeCommand);
|
|
2523
2624
|
setCopied(true);
|
|
2524
2625
|
setTimeout(() => setCopied(false), 2e3);
|
|
2525
2626
|
}, [activeCommand]);
|
|
2526
|
-
return /* @__PURE__ */ (0,
|
|
2527
|
-
/* @__PURE__ */ (0,
|
|
2627
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `pkg-tabs-wrapper ${className}`, children: [
|
|
2628
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "pkg-tabs-header", children: MANAGERS.map((mgr) => {
|
|
2528
2629
|
const Icon = mgr.icon;
|
|
2529
2630
|
const isActive = activeTab === mgr.id;
|
|
2530
|
-
return /* @__PURE__ */ (0,
|
|
2631
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
2531
2632
|
"button",
|
|
2532
2633
|
{
|
|
2533
2634
|
className: `pkg-tab-btn ${isActive ? "active" : ""}`,
|
|
@@ -2535,40 +2636,40 @@ function PackageManagerTabs({
|
|
|
2535
2636
|
"aria-selected": isActive,
|
|
2536
2637
|
role: "tab",
|
|
2537
2638
|
children: [
|
|
2538
|
-
/* @__PURE__ */ (0,
|
|
2539
|
-
/* @__PURE__ */ (0,
|
|
2639
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Icon, { className: "pkg-tab-icon", width: "16", height: "16" }),
|
|
2640
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { children: mgr.label })
|
|
2540
2641
|
]
|
|
2541
2642
|
},
|
|
2542
2643
|
mgr.id
|
|
2543
2644
|
);
|
|
2544
2645
|
}) }),
|
|
2545
|
-
/* @__PURE__ */ (0,
|
|
2546
|
-
/* @__PURE__ */ (0,
|
|
2646
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "code-block-wrapper pkg-tabs-content", children: [
|
|
2647
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2547
2648
|
"button",
|
|
2548
2649
|
{
|
|
2549
2650
|
className: `code-block-copy ${copied ? "copied" : ""}`,
|
|
2550
2651
|
onClick: handleCopy,
|
|
2551
2652
|
type: "button",
|
|
2552
2653
|
"aria-label": "Copy code",
|
|
2553
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
2654
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react14.Check, { size: 14 }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react14.Copy, { size: 14 })
|
|
2554
2655
|
}
|
|
2555
2656
|
),
|
|
2556
|
-
/* @__PURE__ */ (0,
|
|
2657
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("pre", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("code", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "line", children: activeCommand }) }) })
|
|
2557
2658
|
] })
|
|
2558
2659
|
] });
|
|
2559
2660
|
}
|
|
2560
|
-
var
|
|
2661
|
+
var import_react20, import_lucide_react14, import_jsx_runtime31, MANAGERS;
|
|
2561
2662
|
var init_PackageManagerTabs = __esm({
|
|
2562
2663
|
"src/client/theme/components/PackageManagerTabs/PackageManagerTabs.tsx"() {
|
|
2563
2664
|
"use strict";
|
|
2564
|
-
|
|
2565
|
-
|
|
2665
|
+
import_react20 = require("react");
|
|
2666
|
+
import_lucide_react14 = require("lucide-react");
|
|
2566
2667
|
init_npm();
|
|
2567
2668
|
init_pnpm();
|
|
2568
2669
|
init_bun();
|
|
2569
2670
|
init_deno();
|
|
2570
2671
|
init_utils();
|
|
2571
|
-
|
|
2672
|
+
import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2572
2673
|
MANAGERS = [
|
|
2573
2674
|
{ id: "npm", label: "npm", icon: NPM },
|
|
2574
2675
|
{ id: "pnpm", label: "pnpm", icon: Pnpm },
|
|
@@ -2592,7 +2693,7 @@ var init_PackageManagerTabs2 = __esm({
|
|
|
2592
2693
|
|
|
2593
2694
|
// src/client/app/index.tsx
|
|
2594
2695
|
function useConfig() {
|
|
2595
|
-
return (0,
|
|
2696
|
+
return (0, import_react23.useContext)(ConfigContext);
|
|
2596
2697
|
}
|
|
2597
2698
|
function AppShell({
|
|
2598
2699
|
initialRoutes,
|
|
@@ -2603,8 +2704,8 @@ function AppShell({
|
|
|
2603
2704
|
homePage: HomePage,
|
|
2604
2705
|
components: customComponents = {}
|
|
2605
2706
|
}) {
|
|
2606
|
-
const [routesInfo, setRoutesInfo] = (0,
|
|
2607
|
-
const [config] = (0,
|
|
2707
|
+
const [routesInfo, setRoutesInfo] = (0, import_react21.useState)(initialRoutes);
|
|
2708
|
+
const [config] = (0, import_react21.useState)(initialConfig);
|
|
2608
2709
|
const resolveRoutes = (infos) => {
|
|
2609
2710
|
return infos.filter(
|
|
2610
2711
|
(route) => !(HomePage && (route.path === "/" || route.path === ""))
|
|
@@ -2615,35 +2716,35 @@ function AppShell({
|
|
|
2615
2716
|
const loader = loaderKey ? modules[loaderKey] : null;
|
|
2616
2717
|
return {
|
|
2617
2718
|
...route,
|
|
2618
|
-
Component:
|
|
2719
|
+
Component: import_react21.default.lazy(() => {
|
|
2619
2720
|
if (!loader)
|
|
2620
|
-
return Promise.resolve({ default: () => /* @__PURE__ */ (0,
|
|
2721
|
+
return Promise.resolve({ default: () => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(NotFound, {}) });
|
|
2621
2722
|
return loader();
|
|
2622
2723
|
})
|
|
2623
2724
|
};
|
|
2624
2725
|
});
|
|
2625
2726
|
};
|
|
2626
|
-
const [resolvedRoutes, setResolvedRoutes] = (0,
|
|
2727
|
+
const [resolvedRoutes, setResolvedRoutes] = (0, import_react21.useState)(
|
|
2627
2728
|
() => resolveRoutes(initialRoutes)
|
|
2628
2729
|
);
|
|
2629
|
-
(0,
|
|
2730
|
+
(0, import_react21.useEffect)(() => {
|
|
2630
2731
|
if (hot) {
|
|
2631
2732
|
hot.on("boltdocs:routes-update", (newRoutes) => {
|
|
2632
2733
|
setRoutesInfo(newRoutes);
|
|
2633
2734
|
});
|
|
2634
2735
|
}
|
|
2635
2736
|
}, [hot]);
|
|
2636
|
-
(0,
|
|
2737
|
+
(0, import_react21.useEffect)(() => {
|
|
2637
2738
|
setResolvedRoutes(resolveRoutes(routesInfo));
|
|
2638
2739
|
}, [routesInfo, modules, docsDirName]);
|
|
2639
|
-
return /* @__PURE__ */ (0,
|
|
2640
|
-
/* @__PURE__ */ (0,
|
|
2641
|
-
/* @__PURE__ */ (0,
|
|
2642
|
-
HomePage && /* @__PURE__ */ (0,
|
|
2740
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ConfigContext.Provider, { value: config, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(PreloadProvider, { routes: routesInfo, modules, children: [
|
|
2741
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ScrollHandler, {}),
|
|
2742
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_react_router_dom11.Routes, { children: [
|
|
2743
|
+
HomePage && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2643
2744
|
import_react_router_dom11.Route,
|
|
2644
2745
|
{
|
|
2645
2746
|
path: "/",
|
|
2646
|
-
element: /* @__PURE__ */ (0,
|
|
2747
|
+
element: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2647
2748
|
ThemeLayout,
|
|
2648
2749
|
{
|
|
2649
2750
|
config,
|
|
@@ -2652,20 +2753,20 @@ function AppShell({
|
|
|
2652
2753
|
toc: null,
|
|
2653
2754
|
breadcrumbs: null,
|
|
2654
2755
|
...config.themeConfig?.layoutProps,
|
|
2655
|
-
children: /* @__PURE__ */ (0,
|
|
2756
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(HomePage, {})
|
|
2656
2757
|
}
|
|
2657
2758
|
)
|
|
2658
2759
|
}
|
|
2659
2760
|
),
|
|
2660
|
-
/* @__PURE__ */ (0,
|
|
2761
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2661
2762
|
import_react_router_dom11.Route,
|
|
2662
2763
|
{
|
|
2663
|
-
element: /* @__PURE__ */ (0,
|
|
2664
|
-
children: resolvedRoutes.map((route) => /* @__PURE__ */ (0,
|
|
2764
|
+
element: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DocsLayout, { config, routes: routesInfo }),
|
|
2765
|
+
children: resolvedRoutes.map((route) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2665
2766
|
import_react_router_dom11.Route,
|
|
2666
2767
|
{
|
|
2667
2768
|
path: route.path === "" ? "/" : route.path,
|
|
2668
|
-
element: /* @__PURE__ */ (0,
|
|
2769
|
+
element: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react21.default.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Loading, {}), children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2669
2770
|
MdxPage,
|
|
2670
2771
|
{
|
|
2671
2772
|
Component: route.Component,
|
|
@@ -2678,17 +2779,17 @@ function AppShell({
|
|
|
2678
2779
|
},
|
|
2679
2780
|
"docs-layout"
|
|
2680
2781
|
),
|
|
2681
|
-
/* @__PURE__ */ (0,
|
|
2782
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2682
2783
|
import_react_router_dom11.Route,
|
|
2683
2784
|
{
|
|
2684
2785
|
path: "*",
|
|
2685
|
-
element: /* @__PURE__ */ (0,
|
|
2786
|
+
element: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2686
2787
|
ThemeLayout,
|
|
2687
2788
|
{
|
|
2688
2789
|
config,
|
|
2689
2790
|
routes: routesInfo,
|
|
2690
2791
|
...config.themeConfig?.layoutProps,
|
|
2691
|
-
children: /* @__PURE__ */ (0,
|
|
2792
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(NotFound, {})
|
|
2692
2793
|
}
|
|
2693
2794
|
)
|
|
2694
2795
|
}
|
|
@@ -2698,7 +2799,7 @@ function AppShell({
|
|
|
2698
2799
|
}
|
|
2699
2800
|
function ScrollHandler() {
|
|
2700
2801
|
const { pathname, hash } = (0, import_react_router_dom11.useLocation)();
|
|
2701
|
-
(0,
|
|
2802
|
+
(0, import_react23.useLayoutEffect)(() => {
|
|
2702
2803
|
const container = document.querySelector(".boltdocs-content");
|
|
2703
2804
|
if (!container) return;
|
|
2704
2805
|
if (hash) {
|
|
@@ -2725,13 +2826,13 @@ function DocsLayout({
|
|
|
2725
2826
|
config,
|
|
2726
2827
|
routes
|
|
2727
2828
|
}) {
|
|
2728
|
-
return /* @__PURE__ */ (0,
|
|
2829
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2729
2830
|
ThemeLayout,
|
|
2730
2831
|
{
|
|
2731
2832
|
config,
|
|
2732
2833
|
routes,
|
|
2733
2834
|
...config.themeConfig?.layoutProps,
|
|
2734
|
-
children: /* @__PURE__ */ (0,
|
|
2835
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react_router_dom11.Outlet, {})
|
|
2735
2836
|
}
|
|
2736
2837
|
);
|
|
2737
2838
|
}
|
|
@@ -2740,7 +2841,7 @@ function MdxPage({
|
|
|
2740
2841
|
customComponents = {}
|
|
2741
2842
|
}) {
|
|
2742
2843
|
const allComponents = { ...mdxComponents, ...customComponents };
|
|
2743
|
-
return /* @__PURE__ */ (0,
|
|
2844
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react22.MDXProvider, { components: allComponents, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Component2, {}) });
|
|
2744
2845
|
}
|
|
2745
2846
|
function createBoltdocsApp(options) {
|
|
2746
2847
|
const { target, routes, docsDirName, config, modules, hot, homePage } = options;
|
|
@@ -2750,7 +2851,7 @@ function createBoltdocsApp(options) {
|
|
|
2750
2851
|
`[boltdocs] Mount target "${target}" not found in document.`
|
|
2751
2852
|
);
|
|
2752
2853
|
}
|
|
2753
|
-
const app = /* @__PURE__ */ (0,
|
|
2854
|
+
const app = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react21.default.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react_router_dom11.BrowserRouter, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2754
2855
|
AppShell,
|
|
2755
2856
|
{
|
|
2756
2857
|
initialRoutes: routes,
|
|
@@ -2765,27 +2866,27 @@ function createBoltdocsApp(options) {
|
|
|
2765
2866
|
container.innerHTML = "";
|
|
2766
2867
|
import_client.default.createRoot(container).render(app);
|
|
2767
2868
|
}
|
|
2768
|
-
var
|
|
2869
|
+
var import_react21, import_client, import_react_router_dom11, import_react22, import_react23, import_lucide_react15, import_jsx_runtime32, ConfigContext, Video2, PackageManagerTabs2, Heading, mdxComponents;
|
|
2769
2870
|
var init_app = __esm({
|
|
2770
2871
|
"src/client/app/index.tsx"() {
|
|
2771
2872
|
"use strict";
|
|
2772
|
-
|
|
2873
|
+
import_react21 = __toESM(require("react"));
|
|
2773
2874
|
import_client = __toESM(require("react-dom/client"));
|
|
2774
2875
|
import_react_router_dom11 = require("react-router-dom");
|
|
2775
2876
|
init_Layout2();
|
|
2776
2877
|
init_NotFound2();
|
|
2777
2878
|
init_Loading2();
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2879
|
+
import_react22 = require("@mdx-js/react");
|
|
2880
|
+
import_react23 = require("react");
|
|
2881
|
+
import_lucide_react15 = require("lucide-react");
|
|
2781
2882
|
init_CodeBlock2();
|
|
2782
2883
|
init_preload();
|
|
2783
|
-
|
|
2784
|
-
ConfigContext = (0,
|
|
2785
|
-
Video2 = (0,
|
|
2884
|
+
import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2885
|
+
ConfigContext = (0, import_react23.createContext)(null);
|
|
2886
|
+
Video2 = (0, import_react23.lazy)(
|
|
2786
2887
|
() => Promise.resolve().then(() => (init_Video2(), Video_exports)).then((m) => ({ default: m.Video }))
|
|
2787
2888
|
);
|
|
2788
|
-
PackageManagerTabs2 = (0,
|
|
2889
|
+
PackageManagerTabs2 = (0, import_react23.lazy)(
|
|
2789
2890
|
() => Promise.resolve().then(() => (init_PackageManagerTabs2(), PackageManagerTabs_exports)).then((m) => ({
|
|
2790
2891
|
default: m.PackageManagerTabs
|
|
2791
2892
|
}))
|
|
@@ -2796,21 +2897,21 @@ var init_app = __esm({
|
|
|
2796
2897
|
children
|
|
2797
2898
|
}) => {
|
|
2798
2899
|
const Tag = `h${level}`;
|
|
2799
|
-
return /* @__PURE__ */ (0,
|
|
2900
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Tag, { id, className: "boltdocs-heading", children: [
|
|
2800
2901
|
children,
|
|
2801
|
-
id && /* @__PURE__ */ (0,
|
|
2902
|
+
id && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("a", { href: `#${id}`, className: "header-anchor", "aria-label": "Anchor", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react15.Link, { size: 16 }) })
|
|
2802
2903
|
] });
|
|
2803
2904
|
};
|
|
2804
2905
|
mdxComponents = {
|
|
2805
|
-
h1: (props) => /* @__PURE__ */ (0,
|
|
2806
|
-
h2: (props) => /* @__PURE__ */ (0,
|
|
2807
|
-
h3: (props) => /* @__PURE__ */ (0,
|
|
2808
|
-
h4: (props) => /* @__PURE__ */ (0,
|
|
2809
|
-
h5: (props) => /* @__PURE__ */ (0,
|
|
2810
|
-
h6: (props) => /* @__PURE__ */ (0,
|
|
2811
|
-
pre: (props) => /* @__PURE__ */ (0,
|
|
2812
|
-
video: (props) => /* @__PURE__ */ (0,
|
|
2813
|
-
PackageManagerTabs: (props) => /* @__PURE__ */ (0,
|
|
2906
|
+
h1: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Heading, { level: 1, ...props }),
|
|
2907
|
+
h2: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Heading, { level: 2, ...props }),
|
|
2908
|
+
h3: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Heading, { level: 3, ...props }),
|
|
2909
|
+
h4: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Heading, { level: 4, ...props }),
|
|
2910
|
+
h5: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Heading, { level: 5, ...props }),
|
|
2911
|
+
h6: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Heading, { level: 6, ...props }),
|
|
2912
|
+
pre: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(CodeBlock, { ...props, children: props.children }),
|
|
2913
|
+
video: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react23.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "video-skeleton" }), children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Video2, { ...props }) }),
|
|
2914
|
+
PackageManagerTabs: (props) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react23.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "pkg-tabs-skeleton" }), children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(PackageManagerTabs2, { ...props }) })
|
|
2814
2915
|
};
|
|
2815
2916
|
}
|
|
2816
2917
|
});
|
|
@@ -2827,6 +2928,7 @@ __export(client_exports, {
|
|
|
2827
2928
|
Cards: () => Cards,
|
|
2828
2929
|
CodeBlock: () => CodeBlock,
|
|
2829
2930
|
Danger: () => Danger,
|
|
2931
|
+
Field: () => Field,
|
|
2830
2932
|
FileTree: () => FileTree,
|
|
2831
2933
|
Head: () => Head,
|
|
2832
2934
|
InfoBox: () => InfoBox,
|
|
@@ -2858,10 +2960,10 @@ init_Breadcrumbs2();
|
|
|
2858
2960
|
init_BackgroundGradient2();
|
|
2859
2961
|
|
|
2860
2962
|
// src/client/theme/components/Playground/Playground.tsx
|
|
2861
|
-
var
|
|
2963
|
+
var import_react24 = __toESM(require("react"));
|
|
2862
2964
|
var import_react_live = require("react-live");
|
|
2863
|
-
var
|
|
2864
|
-
var
|
|
2965
|
+
var import_lucide_react16 = require("lucide-react");
|
|
2966
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2865
2967
|
function prepareCode(raw) {
|
|
2866
2968
|
const trimmed = raw.trim();
|
|
2867
2969
|
const fnMatch = trimmed.match(/export\s+default\s+function\s+(\w+)/);
|
|
@@ -2894,48 +2996,48 @@ function Playground({
|
|
|
2894
2996
|
}
|
|
2895
2997
|
const prepared = prepareCode(initialCode);
|
|
2896
2998
|
const useNoInline = forceNoInline ?? prepared.noInline;
|
|
2897
|
-
const [copied, setCopied] = (0,
|
|
2898
|
-
const [activeCode, setActiveCode] = (0,
|
|
2999
|
+
const [copied, setCopied] = (0, import_react24.useState)(false);
|
|
3000
|
+
const [activeCode, setActiveCode] = (0, import_react24.useState)(prepared.code);
|
|
2899
3001
|
const handleCopy = () => {
|
|
2900
3002
|
navigator.clipboard.writeText(activeCode);
|
|
2901
3003
|
setCopied(true);
|
|
2902
3004
|
setTimeout(() => setCopied(false), 2e3);
|
|
2903
3005
|
};
|
|
2904
|
-
const extendedScope = { React:
|
|
2905
|
-
return /* @__PURE__ */ (0,
|
|
3006
|
+
const extendedScope = { React: import_react24.default, ...scope };
|
|
3007
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "boltdocs-playground", "data-readonly": readonly, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2906
3008
|
import_react_live.LiveProvider,
|
|
2907
3009
|
{
|
|
2908
3010
|
code: activeCode,
|
|
2909
3011
|
scope: extendedScope,
|
|
2910
3012
|
theme: void 0,
|
|
2911
3013
|
noInline: useNoInline,
|
|
2912
|
-
children: /* @__PURE__ */ (0,
|
|
2913
|
-
/* @__PURE__ */ (0,
|
|
2914
|
-
/* @__PURE__ */ (0,
|
|
2915
|
-
/* @__PURE__ */ (0,
|
|
2916
|
-
/* @__PURE__ */ (0,
|
|
2917
|
-
/* @__PURE__ */ (0,
|
|
3014
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "playground-split-container", children: [
|
|
3015
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "playground-panel playground-editor-panel", children: [
|
|
3016
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "playground-panel-header", children: [
|
|
3017
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "playground-panel-title", children: [
|
|
3018
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react16.Terminal, { size: 14 }),
|
|
3019
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { children: readonly ? "Code Example" : "Live Editor" })
|
|
2918
3020
|
] }),
|
|
2919
|
-
/* @__PURE__ */ (0,
|
|
3021
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2920
3022
|
"button",
|
|
2921
3023
|
{
|
|
2922
3024
|
className: "playground-copy-btn",
|
|
2923
3025
|
onClick: handleCopy,
|
|
2924
3026
|
title: "Copy code",
|
|
2925
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
3027
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react16.Check, { size: 14 }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react16.Copy, { size: 14 })
|
|
2926
3028
|
}
|
|
2927
3029
|
)
|
|
2928
3030
|
] }),
|
|
2929
|
-
/* @__PURE__ */ (0,
|
|
3031
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "playground-panel-content playground-editor", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_live.LiveEditor, { disabled: readonly, onChange: setActiveCode }) })
|
|
2930
3032
|
] }),
|
|
2931
|
-
/* @__PURE__ */ (0,
|
|
2932
|
-
/* @__PURE__ */ (0,
|
|
2933
|
-
/* @__PURE__ */ (0,
|
|
2934
|
-
/* @__PURE__ */ (0,
|
|
3033
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "playground-panel playground-preview-panel", children: [
|
|
3034
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "playground-panel-header", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "playground-panel-title", children: [
|
|
3035
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react16.Play, { size: 14 }),
|
|
3036
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { children: "Preview" })
|
|
2935
3037
|
] }) }),
|
|
2936
|
-
/* @__PURE__ */ (0,
|
|
2937
|
-
/* @__PURE__ */ (0,
|
|
2938
|
-
/* @__PURE__ */ (0,
|
|
3038
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "playground-panel-content playground-preview", children: [
|
|
3039
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_live.LivePreview, {}),
|
|
3040
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_live.LiveError, { className: "playground-error" })
|
|
2939
3041
|
] })
|
|
2940
3042
|
] })
|
|
2941
3043
|
] })
|
|
@@ -2950,7 +3052,7 @@ init_CodeBlock2();
|
|
|
2950
3052
|
init_Video2();
|
|
2951
3053
|
|
|
2952
3054
|
// src/client/theme/components/mdx/Button.tsx
|
|
2953
|
-
var
|
|
3055
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2954
3056
|
function Button({
|
|
2955
3057
|
variant = "primary",
|
|
2956
3058
|
size = "md",
|
|
@@ -2961,7 +3063,7 @@ function Button({
|
|
|
2961
3063
|
}) {
|
|
2962
3064
|
const cls = `ld-btn ld-btn--${variant} ld-btn--${size} ${className}`.trim();
|
|
2963
3065
|
if (href) {
|
|
2964
|
-
return /* @__PURE__ */ (0,
|
|
3066
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
2965
3067
|
"a",
|
|
2966
3068
|
{
|
|
2967
3069
|
href,
|
|
@@ -2972,18 +3074,18 @@ function Button({
|
|
|
2972
3074
|
}
|
|
2973
3075
|
);
|
|
2974
3076
|
}
|
|
2975
|
-
return /* @__PURE__ */ (0,
|
|
3077
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("button", { className: cls, ...rest, children });
|
|
2976
3078
|
}
|
|
2977
3079
|
|
|
2978
3080
|
// src/client/theme/components/mdx/Badge.tsx
|
|
2979
|
-
var
|
|
3081
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2980
3082
|
function Badge({
|
|
2981
3083
|
variant = "default",
|
|
2982
3084
|
children,
|
|
2983
3085
|
className = "",
|
|
2984
3086
|
...rest
|
|
2985
3087
|
}) {
|
|
2986
|
-
return /* @__PURE__ */ (0,
|
|
3088
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2987
3089
|
"span",
|
|
2988
3090
|
{
|
|
2989
3091
|
className: `ld-badge ld-badge--${variant} ${className}`.trim(),
|
|
@@ -2994,14 +3096,14 @@ function Badge({
|
|
|
2994
3096
|
}
|
|
2995
3097
|
|
|
2996
3098
|
// src/client/theme/components/mdx/Card.tsx
|
|
2997
|
-
var
|
|
3099
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2998
3100
|
function Cards({
|
|
2999
3101
|
cols = 3,
|
|
3000
3102
|
children,
|
|
3001
3103
|
className = "",
|
|
3002
3104
|
...rest
|
|
3003
3105
|
}) {
|
|
3004
|
-
return /* @__PURE__ */ (0,
|
|
3106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: `ld-cards ld-cards--${cols} ${className}`.trim(), ...rest, children });
|
|
3005
3107
|
}
|
|
3006
3108
|
function Card({
|
|
3007
3109
|
title,
|
|
@@ -3011,13 +3113,13 @@ function Card({
|
|
|
3011
3113
|
className = "",
|
|
3012
3114
|
...rest
|
|
3013
3115
|
}) {
|
|
3014
|
-
const inner = /* @__PURE__ */ (0,
|
|
3015
|
-
icon && /* @__PURE__ */ (0,
|
|
3016
|
-
title && /* @__PURE__ */ (0,
|
|
3017
|
-
children && /* @__PURE__ */ (0,
|
|
3116
|
+
const inner = /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
|
|
3117
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "ld-card__icon", children: icon }),
|
|
3118
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h3", { className: "ld-card__title", children: title }),
|
|
3119
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "ld-card__body", children })
|
|
3018
3120
|
] });
|
|
3019
3121
|
if (href) {
|
|
3020
|
-
return /* @__PURE__ */ (0,
|
|
3122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3021
3123
|
"a",
|
|
3022
3124
|
{
|
|
3023
3125
|
href,
|
|
@@ -3027,34 +3129,34 @@ function Card({
|
|
|
3027
3129
|
}
|
|
3028
3130
|
);
|
|
3029
3131
|
}
|
|
3030
|
-
return /* @__PURE__ */ (0,
|
|
3132
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: `ld-card ${className}`.trim(), ...rest, children: inner });
|
|
3031
3133
|
}
|
|
3032
3134
|
|
|
3033
3135
|
// src/client/theme/components/mdx/Tabs.tsx
|
|
3034
|
-
var
|
|
3136
|
+
var import_react25 = require("react");
|
|
3035
3137
|
init_CodeBlock2();
|
|
3036
3138
|
init_npm();
|
|
3037
3139
|
init_pnpm();
|
|
3038
3140
|
init_bun();
|
|
3039
3141
|
init_deno();
|
|
3040
|
-
var
|
|
3142
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
3041
3143
|
function Tab({ children }) {
|
|
3042
|
-
const content = typeof children === "string" ? /* @__PURE__ */ (0,
|
|
3043
|
-
return /* @__PURE__ */ (0,
|
|
3144
|
+
const content = typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(CodeBlock, { className: "language-bash", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("code", { children: children.trim() }) }) : children;
|
|
3145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "ld-tab-panel", children: content });
|
|
3044
3146
|
}
|
|
3045
3147
|
var getIconForLabel = (label) => {
|
|
3046
3148
|
const l = label.toLowerCase();
|
|
3047
|
-
if (l.includes("pnpm")) return /* @__PURE__ */ (0,
|
|
3048
|
-
if (l.includes("npm")) return /* @__PURE__ */ (0,
|
|
3049
|
-
if (l.includes("bun")) return /* @__PURE__ */ (0,
|
|
3050
|
-
if (l.includes("deno")) return /* @__PURE__ */ (0,
|
|
3149
|
+
if (l.includes("pnpm")) return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Pnpm, {});
|
|
3150
|
+
if (l.includes("npm")) return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(NPM, {});
|
|
3151
|
+
if (l.includes("bun")) return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Bun, {});
|
|
3152
|
+
if (l.includes("deno")) return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Deno, {});
|
|
3051
3153
|
return null;
|
|
3052
3154
|
};
|
|
3053
3155
|
function Tabs2({ defaultIndex = 0, children }) {
|
|
3054
|
-
const [active, setActive] = (0,
|
|
3055
|
-
const tabRefs = (0,
|
|
3056
|
-
const tabs =
|
|
3057
|
-
(child) => (0,
|
|
3156
|
+
const [active, setActive] = (0, import_react25.useState)(defaultIndex);
|
|
3157
|
+
const tabRefs = (0, import_react25.useRef)([]);
|
|
3158
|
+
const tabs = import_react25.Children.toArray(children).filter(
|
|
3159
|
+
(child) => (0, import_react25.isValidElement)(child) && child.props?.label
|
|
3058
3160
|
);
|
|
3059
3161
|
const handleKeyDown = (e) => {
|
|
3060
3162
|
let newIndex = active;
|
|
@@ -3068,11 +3170,11 @@ function Tabs2({ defaultIndex = 0, children }) {
|
|
|
3068
3170
|
tabRefs.current[newIndex]?.focus();
|
|
3069
3171
|
}
|
|
3070
3172
|
};
|
|
3071
|
-
return /* @__PURE__ */ (0,
|
|
3072
|
-
/* @__PURE__ */ (0,
|
|
3173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "ld-tabs", children: [
|
|
3174
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "ld-tabs__bar", role: "tablist", onKeyDown: handleKeyDown, children: tabs.map((child, i) => {
|
|
3073
3175
|
const label = child.props.label;
|
|
3074
3176
|
const Icon = getIconForLabel(label);
|
|
3075
|
-
return /* @__PURE__ */ (0,
|
|
3177
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
3076
3178
|
"button",
|
|
3077
3179
|
{
|
|
3078
3180
|
role: "tab",
|
|
@@ -3087,13 +3189,13 @@ function Tabs2({ defaultIndex = 0, children }) {
|
|
|
3087
3189
|
onClick: () => setActive(i),
|
|
3088
3190
|
children: [
|
|
3089
3191
|
Icon,
|
|
3090
|
-
/* @__PURE__ */ (0,
|
|
3192
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: label })
|
|
3091
3193
|
]
|
|
3092
3194
|
},
|
|
3093
3195
|
i
|
|
3094
3196
|
);
|
|
3095
3197
|
}) }),
|
|
3096
|
-
/* @__PURE__ */ (0,
|
|
3198
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3097
3199
|
"div",
|
|
3098
3200
|
{
|
|
3099
3201
|
className: "ld-tabs__content",
|
|
@@ -3107,14 +3209,14 @@ function Tabs2({ defaultIndex = 0, children }) {
|
|
|
3107
3209
|
}
|
|
3108
3210
|
|
|
3109
3211
|
// src/client/theme/components/mdx/Admonition.tsx
|
|
3110
|
-
var
|
|
3111
|
-
var
|
|
3212
|
+
var import_lucide_react17 = require("lucide-react");
|
|
3213
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
3112
3214
|
var ICON_MAP2 = {
|
|
3113
|
-
note: /* @__PURE__ */ (0,
|
|
3114
|
-
tip: /* @__PURE__ */ (0,
|
|
3115
|
-
info: /* @__PURE__ */ (0,
|
|
3116
|
-
warning: /* @__PURE__ */ (0,
|
|
3117
|
-
danger: /* @__PURE__ */ (0,
|
|
3215
|
+
note: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react17.Bookmark, { size: 18 }),
|
|
3216
|
+
tip: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react17.Lightbulb, { size: 18 }),
|
|
3217
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react17.Info, { size: 18 }),
|
|
3218
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react17.AlertTriangle, { size: 18 }),
|
|
3219
|
+
danger: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react17.ShieldAlert, { size: 18 })
|
|
3118
3220
|
};
|
|
3119
3221
|
var LABEL_MAP = {
|
|
3120
3222
|
note: "Note",
|
|
@@ -3130,35 +3232,35 @@ function Admonition({
|
|
|
3130
3232
|
className = "",
|
|
3131
3233
|
...rest
|
|
3132
3234
|
}) {
|
|
3133
|
-
return /* @__PURE__ */ (0,
|
|
3235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
3134
3236
|
"div",
|
|
3135
3237
|
{
|
|
3136
3238
|
className: `ld-admonition ld-admonition--${type} ${className}`.trim(),
|
|
3137
3239
|
role: type === "warning" || type === "danger" ? "alert" : "note",
|
|
3138
3240
|
...rest,
|
|
3139
3241
|
children: [
|
|
3140
|
-
/* @__PURE__ */ (0,
|
|
3141
|
-
/* @__PURE__ */ (0,
|
|
3142
|
-
/* @__PURE__ */ (0,
|
|
3242
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "ld-admonition__header", children: [
|
|
3243
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "ld-admonition__icon", children: ICON_MAP2[type] }),
|
|
3244
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "ld-admonition__title", children: title || LABEL_MAP[type] })
|
|
3143
3245
|
] }),
|
|
3144
|
-
/* @__PURE__ */ (0,
|
|
3246
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "ld-admonition__body", children })
|
|
3145
3247
|
]
|
|
3146
3248
|
}
|
|
3147
3249
|
);
|
|
3148
3250
|
}
|
|
3149
|
-
var Note = (props) => /* @__PURE__ */ (0,
|
|
3150
|
-
var Tip = (props) => /* @__PURE__ */ (0,
|
|
3151
|
-
var Warning = (props) => /* @__PURE__ */ (0,
|
|
3152
|
-
var Danger = (props) => /* @__PURE__ */ (0,
|
|
3153
|
-
var InfoBox = (props) => /* @__PURE__ */ (0,
|
|
3251
|
+
var Note = (props) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Admonition, { type: "note", ...props });
|
|
3252
|
+
var Tip = (props) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Admonition, { type: "tip", ...props });
|
|
3253
|
+
var Warning = (props) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Admonition, { type: "warning", ...props });
|
|
3254
|
+
var Danger = (props) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Admonition, { type: "danger", ...props });
|
|
3255
|
+
var InfoBox = (props) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Admonition, { type: "info", ...props });
|
|
3154
3256
|
|
|
3155
3257
|
// src/client/theme/components/mdx/List.tsx
|
|
3156
|
-
var
|
|
3157
|
-
var
|
|
3158
|
-
var
|
|
3258
|
+
var import_react26 = __toESM(require("react"));
|
|
3259
|
+
var import_lucide_react18 = require("lucide-react");
|
|
3260
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
3159
3261
|
var ICON_MAP3 = {
|
|
3160
|
-
checked: /* @__PURE__ */ (0,
|
|
3161
|
-
arrow: /* @__PURE__ */ (0,
|
|
3262
|
+
checked: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react18.Check, { size: 14, className: "ld-list__icon" }),
|
|
3263
|
+
arrow: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react18.ChevronRight, { size: 14, className: "ld-list__icon" })
|
|
3162
3264
|
};
|
|
3163
3265
|
function List({
|
|
3164
3266
|
variant = "default",
|
|
@@ -3167,27 +3269,27 @@ function List({
|
|
|
3167
3269
|
...rest
|
|
3168
3270
|
}) {
|
|
3169
3271
|
if (variant === "default") {
|
|
3170
|
-
return /* @__PURE__ */ (0,
|
|
3272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("ul", { className: `ld-list ${className}`.trim(), ...rest, children });
|
|
3171
3273
|
}
|
|
3172
3274
|
const icon = ICON_MAP3[variant];
|
|
3173
|
-
return /* @__PURE__ */ (0,
|
|
3174
|
-
if (!
|
|
3175
|
-
return /* @__PURE__ */ (0,
|
|
3275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("ul", { className: `ld-list ld-list--${variant} ${className}`.trim(), ...rest, children: import_react26.Children.map(children, (child) => {
|
|
3276
|
+
if (!import_react26.default.isValidElement(child)) return child;
|
|
3277
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("li", { className: "ld-list__item", children: [
|
|
3176
3278
|
icon,
|
|
3177
|
-
/* @__PURE__ */ (0,
|
|
3279
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ld-list__text", children: child.props.children })
|
|
3178
3280
|
] });
|
|
3179
3281
|
}) });
|
|
3180
3282
|
}
|
|
3181
3283
|
|
|
3182
3284
|
// src/client/theme/components/mdx/FileTree.tsx
|
|
3183
|
-
var
|
|
3184
|
-
var
|
|
3185
|
-
var
|
|
3285
|
+
var import_react27 = __toESM(require("react"));
|
|
3286
|
+
var import_lucide_react19 = require("lucide-react");
|
|
3287
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
3186
3288
|
function getTextContent(node) {
|
|
3187
3289
|
if (typeof node === "string") return node;
|
|
3188
3290
|
if (typeof node === "number") return node.toString();
|
|
3189
3291
|
if (Array.isArray(node)) return node.map(getTextContent).join("");
|
|
3190
|
-
if ((0,
|
|
3292
|
+
if ((0, import_react27.isValidElement)(node)) {
|
|
3191
3293
|
return getTextContent(node.props.children);
|
|
3192
3294
|
}
|
|
3193
3295
|
return "";
|
|
@@ -3195,14 +3297,14 @@ function getTextContent(node) {
|
|
|
3195
3297
|
function getFileIcon(filename) {
|
|
3196
3298
|
const name = filename.toLowerCase();
|
|
3197
3299
|
if (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx") || name.endsWith(".json") || name.endsWith(".mjs") || name.endsWith(".cjs") || name.endsWith(".astro") || name.endsWith(".vue") || name.endsWith(".svelte")) {
|
|
3198
|
-
return /* @__PURE__ */ (0,
|
|
3300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react19.FileCode, { size: 16, strokeWidth: 2, className: "ld-file-tree__icon-file" });
|
|
3199
3301
|
}
|
|
3200
3302
|
if (name.endsWith(".md") || name.endsWith(".mdx") || name.endsWith(".txt")) {
|
|
3201
|
-
return /* @__PURE__ */ (0,
|
|
3303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react19.FileText, { size: 16, strokeWidth: 2, className: "ld-file-tree__icon-file" });
|
|
3202
3304
|
}
|
|
3203
3305
|
if (name.endsWith(".png") || name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".svg") || name.endsWith(".gif")) {
|
|
3204
|
-
return /* @__PURE__ */ (0,
|
|
3205
|
-
|
|
3306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3307
|
+
import_lucide_react19.FileImage,
|
|
3206
3308
|
{
|
|
3207
3309
|
size: 16,
|
|
3208
3310
|
strokeWidth: 2,
|
|
@@ -3210,7 +3312,7 @@ function getFileIcon(filename) {
|
|
|
3210
3312
|
}
|
|
3211
3313
|
);
|
|
3212
3314
|
}
|
|
3213
|
-
return /* @__PURE__ */ (0,
|
|
3315
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react19.File, { size: 16, strokeWidth: 2, className: "ld-file-tree__icon-file" });
|
|
3214
3316
|
}
|
|
3215
3317
|
function isListElement(node, tag) {
|
|
3216
3318
|
if (typeof node.type === "string") {
|
|
@@ -3232,25 +3334,25 @@ function FolderNode({
|
|
|
3232
3334
|
nestedNodes,
|
|
3233
3335
|
depth
|
|
3234
3336
|
}) {
|
|
3235
|
-
const [isOpen, setIsOpen] = (0,
|
|
3236
|
-
return /* @__PURE__ */ (0,
|
|
3237
|
-
/* @__PURE__ */ (0,
|
|
3337
|
+
const [isOpen, setIsOpen] = (0, import_react27.useState)(true);
|
|
3338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("li", { className: "ld-file-tree__item", children: [
|
|
3339
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
3238
3340
|
"div",
|
|
3239
3341
|
{
|
|
3240
3342
|
className: "ld-file-tree__label ld-file-tree__label--folder",
|
|
3241
3343
|
onClick: () => setIsOpen(!isOpen),
|
|
3242
3344
|
style: { cursor: "pointer" },
|
|
3243
3345
|
children: [
|
|
3244
|
-
/* @__PURE__ */ (0,
|
|
3245
|
-
|
|
3346
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ld-file-tree__icon ld-file-tree__icon--chevron", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3347
|
+
import_lucide_react19.ChevronRight,
|
|
3246
3348
|
{
|
|
3247
3349
|
size: 14,
|
|
3248
3350
|
className: `ld-file-tree__chevron ${isOpen ? "ld-file-tree__chevron--open" : ""}`,
|
|
3249
3351
|
strokeWidth: 3
|
|
3250
3352
|
}
|
|
3251
3353
|
) }),
|
|
3252
|
-
/* @__PURE__ */ (0,
|
|
3253
|
-
|
|
3354
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ld-file-tree__icon", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3355
|
+
import_lucide_react19.Folder,
|
|
3254
3356
|
{
|
|
3255
3357
|
size: 16,
|
|
3256
3358
|
strokeWidth: 2,
|
|
@@ -3259,30 +3361,30 @@ function FolderNode({
|
|
|
3259
3361
|
fillOpacity: 0.15
|
|
3260
3362
|
}
|
|
3261
3363
|
) }),
|
|
3262
|
-
/* @__PURE__ */ (0,
|
|
3364
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ld-file-tree__name", children: labelText })
|
|
3263
3365
|
]
|
|
3264
3366
|
}
|
|
3265
3367
|
),
|
|
3266
|
-
isOpen && nestedNodes.length > 0 && /* @__PURE__ */ (0,
|
|
3368
|
+
isOpen && nestedNodes.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "ld-file-tree__nested", children: nestedNodes.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react27.default.Fragment, { children: parseNode(child, depth) }, index)) })
|
|
3267
3369
|
] });
|
|
3268
3370
|
}
|
|
3269
3371
|
function parseNode(node, depth = 0) {
|
|
3270
|
-
if (!(0,
|
|
3372
|
+
if (!(0, import_react27.isValidElement)(node)) {
|
|
3271
3373
|
return node;
|
|
3272
3374
|
}
|
|
3273
3375
|
if (isListElement(node, "ul")) {
|
|
3274
|
-
return /* @__PURE__ */ (0,
|
|
3376
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3275
3377
|
"ul",
|
|
3276
3378
|
{
|
|
3277
3379
|
className: `ld-file-tree__list ${depth === 0 ? "ld-file-tree__list--root" : ""}`,
|
|
3278
|
-
children:
|
|
3380
|
+
children: import_react27.Children.map(node.props.children, (child, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react27.default.Fragment, { children: parseNode(child, depth + 1) }, index))
|
|
3279
3381
|
}
|
|
3280
3382
|
);
|
|
3281
3383
|
}
|
|
3282
3384
|
if (isListElement(node, "li")) {
|
|
3283
|
-
const children =
|
|
3385
|
+
const children = import_react27.Children.toArray(node.props.children);
|
|
3284
3386
|
const nestedListIndex = children.findIndex(
|
|
3285
|
-
(child) => (0,
|
|
3387
|
+
(child) => (0, import_react27.isValidElement)(child) && isListElement(child, "ul")
|
|
3286
3388
|
);
|
|
3287
3389
|
const hasNested = nestedListIndex !== -1;
|
|
3288
3390
|
const labelNodes = hasNested ? children.slice(0, nestedListIndex) : children;
|
|
@@ -3292,7 +3394,7 @@ function parseNode(node, depth = 0) {
|
|
|
3292
3394
|
const labelText = isExplicitDir ? rawLabelContent.slice(0, -1) : rawLabelContent;
|
|
3293
3395
|
const isFolder = hasNested || isExplicitDir;
|
|
3294
3396
|
if (isFolder) {
|
|
3295
|
-
return /* @__PURE__ */ (0,
|
|
3397
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3296
3398
|
FolderNode,
|
|
3297
3399
|
{
|
|
3298
3400
|
labelText,
|
|
@@ -3301,25 +3403,25 @@ function parseNode(node, depth = 0) {
|
|
|
3301
3403
|
}
|
|
3302
3404
|
);
|
|
3303
3405
|
}
|
|
3304
|
-
return /* @__PURE__ */ (0,
|
|
3305
|
-
/* @__PURE__ */ (0,
|
|
3306
|
-
/* @__PURE__ */ (0,
|
|
3307
|
-
/* @__PURE__ */ (0,
|
|
3406
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("li", { className: "ld-file-tree__item", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "ld-file-tree__label ld-file-tree__label--file", children: [
|
|
3407
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ld-file-tree__icon ld-file-tree__icon--spacer" }),
|
|
3408
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ld-file-tree__icon", children: getFileIcon(labelText) }),
|
|
3409
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ld-file-tree__name", children: labelText })
|
|
3308
3410
|
] }) });
|
|
3309
3411
|
}
|
|
3310
3412
|
if (node.props.children) {
|
|
3311
|
-
return
|
|
3413
|
+
return import_react27.Children.map(node.props.children, (child, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react27.default.Fragment, { children: parseNode(child, depth) }, index));
|
|
3312
3414
|
}
|
|
3313
3415
|
return node;
|
|
3314
3416
|
}
|
|
3315
3417
|
function FileTree({ children }) {
|
|
3316
|
-
return /* @__PURE__ */ (0,
|
|
3418
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "ld-file-tree", dir: "ltr", children: import_react27.Children.map(children, (child) => parseNode(child, 0)) });
|
|
3317
3419
|
}
|
|
3318
3420
|
|
|
3319
3421
|
// src/client/theme/components/mdx/Table.tsx
|
|
3320
|
-
var
|
|
3321
|
-
var
|
|
3322
|
-
var
|
|
3422
|
+
var import_react28 = require("react");
|
|
3423
|
+
var import_lucide_react20 = require("lucide-react");
|
|
3424
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3323
3425
|
function Table({
|
|
3324
3426
|
headers,
|
|
3325
3427
|
data,
|
|
@@ -3329,9 +3431,9 @@ function Table({
|
|
|
3329
3431
|
paginated = false,
|
|
3330
3432
|
pageSize = 10
|
|
3331
3433
|
}) {
|
|
3332
|
-
const [sortConfig, setSortConfig] = (0,
|
|
3333
|
-
const [currentPage, setCurrentPage] = (0,
|
|
3334
|
-
const processedData = (0,
|
|
3434
|
+
const [sortConfig, setSortConfig] = (0, import_react28.useState)(null);
|
|
3435
|
+
const [currentPage, setCurrentPage] = (0, import_react28.useState)(1);
|
|
3436
|
+
const processedData = (0, import_react28.useMemo)(() => {
|
|
3335
3437
|
if (!data) return [];
|
|
3336
3438
|
let items = [...data];
|
|
3337
3439
|
if (sortable && sortConfig !== null) {
|
|
@@ -3348,7 +3450,7 @@ function Table({
|
|
|
3348
3450
|
return items;
|
|
3349
3451
|
}, [data, sortConfig, sortable]);
|
|
3350
3452
|
const totalPages = Math.ceil(processedData.length / pageSize);
|
|
3351
|
-
const paginatedData = (0,
|
|
3453
|
+
const paginatedData = (0, import_react28.useMemo)(() => {
|
|
3352
3454
|
if (!paginated) return processedData;
|
|
3353
3455
|
const start = (currentPage - 1) * pageSize;
|
|
3354
3456
|
return processedData.slice(start, start + pageSize);
|
|
@@ -3363,74 +3465,101 @@ function Table({
|
|
|
3363
3465
|
};
|
|
3364
3466
|
const renderSortIcon = (index) => {
|
|
3365
3467
|
if (!sortable) return null;
|
|
3366
|
-
if (sortConfig?.key !== index) return /* @__PURE__ */ (0,
|
|
3367
|
-
return sortConfig.direction === "asc" ? /* @__PURE__ */ (0,
|
|
3468
|
+
if (sortConfig?.key !== index) return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react20.ChevronDown, { size: 14, className: "ld-table-sort-icon ld-table-sort-icon--hidden" });
|
|
3469
|
+
return sortConfig.direction === "asc" ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react20.ChevronUp, { size: 14, className: "ld-table-sort-icon" }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react20.ChevronDown, { size: 14, className: "ld-table-sort-icon" });
|
|
3368
3470
|
};
|
|
3369
|
-
const tableContent = children ? children : /* @__PURE__ */ (0,
|
|
3370
|
-
headers && /* @__PURE__ */ (0,
|
|
3471
|
+
const tableContent = children ? children : /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
|
|
3472
|
+
headers && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("tr", { children: headers.map((header, i) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3371
3473
|
"th",
|
|
3372
3474
|
{
|
|
3373
3475
|
onClick: () => requestSort(i),
|
|
3374
3476
|
className: sortable ? "ld-table-header--sortable" : "",
|
|
3375
|
-
children: /* @__PURE__ */ (0,
|
|
3477
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "ld-table-header-content", children: [
|
|
3376
3478
|
header,
|
|
3377
3479
|
renderSortIcon(i)
|
|
3378
3480
|
] })
|
|
3379
3481
|
},
|
|
3380
3482
|
i
|
|
3381
3483
|
)) }) }),
|
|
3382
|
-
paginatedData && /* @__PURE__ */ (0,
|
|
3484
|
+
paginatedData && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("tbody", { children: paginatedData.map((row, i) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("tr", { children: row.map((cell, j) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("td", { children: cell }, j)) }, i)) })
|
|
3383
3485
|
] });
|
|
3384
|
-
return /* @__PURE__ */ (0,
|
|
3385
|
-
/* @__PURE__ */ (0,
|
|
3386
|
-
paginated && totalPages > 1 && /* @__PURE__ */ (0,
|
|
3387
|
-
/* @__PURE__ */ (0,
|
|
3486
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: `ld-table-container ${className}`.trim(), children: [
|
|
3487
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "ld-table-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("table", { className: "ld-table", children: tableContent }) }),
|
|
3488
|
+
paginated && totalPages > 1 && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "ld-table-pagination", children: [
|
|
3489
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "ld-table-pagination-info", children: [
|
|
3388
3490
|
"Page ",
|
|
3389
3491
|
currentPage,
|
|
3390
3492
|
" of ",
|
|
3391
3493
|
totalPages
|
|
3392
3494
|
] }),
|
|
3393
|
-
/* @__PURE__ */ (0,
|
|
3394
|
-
/* @__PURE__ */ (0,
|
|
3495
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "ld-table-pagination-controls", children: [
|
|
3496
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3395
3497
|
"button",
|
|
3396
3498
|
{
|
|
3397
3499
|
onClick: () => setCurrentPage(1),
|
|
3398
3500
|
disabled: currentPage === 1,
|
|
3399
3501
|
className: "ld-table-pagination-btn",
|
|
3400
|
-
children: /* @__PURE__ */ (0,
|
|
3502
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react20.ChevronsLeft, { size: 16 })
|
|
3401
3503
|
}
|
|
3402
3504
|
),
|
|
3403
|
-
/* @__PURE__ */ (0,
|
|
3505
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3404
3506
|
"button",
|
|
3405
3507
|
{
|
|
3406
3508
|
onClick: () => setCurrentPage((prev) => Math.max(prev - 1, 1)),
|
|
3407
3509
|
disabled: currentPage === 1,
|
|
3408
3510
|
className: "ld-table-pagination-btn",
|
|
3409
|
-
children: /* @__PURE__ */ (0,
|
|
3511
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react20.ChevronLeft, { size: 16 })
|
|
3410
3512
|
}
|
|
3411
3513
|
),
|
|
3412
|
-
/* @__PURE__ */ (0,
|
|
3514
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3413
3515
|
"button",
|
|
3414
3516
|
{
|
|
3415
3517
|
onClick: () => setCurrentPage((prev) => Math.min(prev + 1, totalPages)),
|
|
3416
3518
|
disabled: currentPage === totalPages,
|
|
3417
3519
|
className: "ld-table-pagination-btn",
|
|
3418
|
-
children: /* @__PURE__ */ (0,
|
|
3520
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react20.ChevronRight, { size: 16 })
|
|
3419
3521
|
}
|
|
3420
3522
|
),
|
|
3421
|
-
/* @__PURE__ */ (0,
|
|
3523
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3422
3524
|
"button",
|
|
3423
3525
|
{
|
|
3424
3526
|
onClick: () => setCurrentPage(totalPages),
|
|
3425
3527
|
disabled: currentPage === totalPages,
|
|
3426
3528
|
className: "ld-table-pagination-btn",
|
|
3427
|
-
children: /* @__PURE__ */ (0,
|
|
3529
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react20.ChevronsRight, { size: 16 })
|
|
3428
3530
|
}
|
|
3429
3531
|
)
|
|
3430
3532
|
] })
|
|
3431
3533
|
] })
|
|
3432
3534
|
] });
|
|
3433
3535
|
}
|
|
3536
|
+
|
|
3537
|
+
// src/client/theme/components/mdx/Field.tsx
|
|
3538
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3539
|
+
function Field({
|
|
3540
|
+
name,
|
|
3541
|
+
type,
|
|
3542
|
+
defaultValue,
|
|
3543
|
+
required = false,
|
|
3544
|
+
children,
|
|
3545
|
+
id,
|
|
3546
|
+
className = ""
|
|
3547
|
+
}) {
|
|
3548
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: `ld-field ${className}`.trim(), id, children: [
|
|
3549
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "ld-field__header", children: [
|
|
3550
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "ld-field__signature", children: [
|
|
3551
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("code", { className: "ld-field__name", children: name }),
|
|
3552
|
+
type && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ld-field__type-badge", children: type }),
|
|
3553
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ld-field__required-badge", children: "required" })
|
|
3554
|
+
] }),
|
|
3555
|
+
defaultValue && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "ld-field__default", children: [
|
|
3556
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ld-field__default-label", children: "Default:" }),
|
|
3557
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("code", { className: "ld-field__default-value", children: defaultValue })
|
|
3558
|
+
] })
|
|
3559
|
+
] }),
|
|
3560
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "ld-field__content", children })
|
|
3561
|
+
] });
|
|
3562
|
+
}
|
|
3434
3563
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3435
3564
|
0 && (module.exports = {
|
|
3436
3565
|
Admonition,
|
|
@@ -3442,6 +3571,7 @@ function Table({
|
|
|
3442
3571
|
Cards,
|
|
3443
3572
|
CodeBlock,
|
|
3444
3573
|
Danger,
|
|
3574
|
+
Field,
|
|
3445
3575
|
FileTree,
|
|
3446
3576
|
Head,
|
|
3447
3577
|
InfoBox,
|