zudoku 0.3.0-dev.83 → 0.3.0-dev.84
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/cli.js +5 -1
- package/dist/app/demo.js +5 -4
- package/dist/app/demo.js.map +1 -1
- package/dist/app/main.js +3 -1
- package/dist/app/main.js.map +1 -1
- package/dist/app/standalone.js +5 -4
- package/dist/app/standalone.js.map +1 -1
- package/dist/config/validators/ResolvedSidebarSchema.d.ts +18 -0
- package/dist/config/validators/ResolvedSidebarSchema.js +76 -0
- package/dist/config/validators/ResolvedSidebarSchema.js.map +1 -0
- package/dist/config/validators/SidebarSchema.d.ts +177 -0
- package/dist/config/validators/SidebarSchema.js +71 -0
- package/dist/config/validators/SidebarSchema.js.map +1 -0
- package/dist/config/validators/validate.d.ts +411 -59
- package/dist/config/validators/validate.js +22 -4
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/lib/components/DevPortal.js +1 -1
- package/dist/lib/components/DevPortal.js.map +1 -1
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/Heading.d.ts +1 -1
- package/dist/lib/components/Layout.js +2 -2
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/TopNavigation.js +5 -5
- package/dist/lib/components/TopNavigation.js.map +1 -1
- package/dist/lib/components/context/DevPortalProvider.d.ts +9 -3
- package/dist/lib/components/context/DevPortalProvider.js +11 -23
- package/dist/lib/components/context/DevPortalProvider.js.map +1 -1
- package/dist/lib/components/context/ThemeContext.d.ts +1 -4
- package/dist/lib/components/context/ThemeContext.js +3 -29
- package/dist/lib/components/context/ThemeContext.js.map +1 -1
- package/dist/lib/components/context/ThemeProvider.d.ts +4 -0
- package/dist/lib/components/context/ThemeProvider.js +23 -0
- package/dist/lib/components/context/ThemeProvider.js.map +1 -0
- package/dist/lib/components/navigation/Sidebar.d.ts +1 -0
- package/dist/lib/components/navigation/Sidebar.js +12 -0
- package/dist/lib/components/navigation/Sidebar.js.map +1 -0
- package/dist/lib/components/navigation/SidebarBadge.d.ts +22 -0
- package/dist/lib/components/navigation/SidebarBadge.js +24 -0
- package/dist/lib/components/navigation/SidebarBadge.js.map +1 -0
- package/dist/lib/components/navigation/SidebarCategory.d.ts +5 -0
- package/dist/lib/components/navigation/SidebarCategory.js +33 -0
- package/dist/lib/components/navigation/SidebarCategory.js.map +1 -0
- package/dist/lib/components/navigation/SidebarItem.d.ts +12 -0
- package/dist/lib/components/navigation/SidebarItem.js +42 -0
- package/dist/lib/components/navigation/SidebarItem.js.map +1 -0
- package/dist/lib/components/navigation/{SideNavigationWrapper.d.ts → SidebarWrapper.d.ts} +1 -1
- package/dist/lib/components/navigation/{SideNavigationWrapper.js → SidebarWrapper.js} +2 -2
- package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -0
- package/dist/lib/components/navigation/utils.d.ts +16 -0
- package/dist/lib/components/navigation/utils.js +85 -0
- package/dist/lib/components/navigation/utils.js.map +1 -0
- package/dist/lib/core/DevPortalContext.d.ts +9 -32
- package/dist/lib/core/DevPortalContext.js +8 -5
- package/dist/lib/core/DevPortalContext.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +6 -8
- package/dist/lib/core/plugins.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js +5 -36
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/markdown/generateRoutes.js +20 -43
- package/dist/lib/plugins/markdown/generateRoutes.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +12 -2
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/index.js +14 -11
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +1 -1
- package/dist/lib/util/useScrollToAnchor.js +31 -17
- package/dist/lib/util/useScrollToAnchor.js.map +1 -1
- package/dist/vite/plugin-sidebar.d.ts +3 -0
- package/dist/vite/plugin-sidebar.js +23 -0
- package/dist/vite/plugin-sidebar.js.map +1 -0
- package/dist/vite/plugin.js +2 -0
- package/dist/vite/plugin.js.map +1 -1
- package/lib/{AuthenticationPlugin-XS0DoAhE.js → AuthenticationPlugin-DgwV0hVu.js} +7 -7
- package/lib/{AuthenticationPlugin-XS0DoAhE.js.map → AuthenticationPlugin-DgwV0hVu.js.map} +1 -1
- package/lib/{CategoryHeading-DCmchnA1.js → CategoryHeading-BWq12Bfa.js} +3 -3
- package/lib/{CategoryHeading-DCmchnA1.js.map → CategoryHeading-BWq12Bfa.js.map} +1 -1
- package/lib/{Combination-C442XfGG.js → Combination-DkycFHkm.js} +4 -4
- package/lib/{Combination-C442XfGG.js.map → Combination-DkycFHkm.js.map} +1 -1
- package/lib/{DevPortalProvider-BWeAysxF.js → DevPortalProvider-CTxoCHIT.js} +375 -417
- package/lib/DevPortalProvider-CTxoCHIT.js.map +1 -0
- package/lib/DeveloperHint-BQSFXH01.js +10 -0
- package/lib/{DeveloperHint-DQVwIery.js.map → DeveloperHint-BQSFXH01.js.map} +1 -1
- package/lib/{Input-3IEt27jb.js → Input-BclXSY0g.js} +5 -5
- package/lib/{Input-3IEt27jb.js.map → Input-BclXSY0g.js.map} +1 -1
- package/lib/{Markdown-QsZ-PHET.js → Markdown-B_Gax7at.js} +1136 -1152
- package/lib/{Markdown-QsZ-PHET.js.map → Markdown-B_Gax7at.js.map} +1 -1
- package/lib/{MdxPage-CA1WmW14.js → MdxPage-Crlr0GmN.js} +67 -81
- package/lib/MdxPage-Crlr0GmN.js.map +1 -0
- package/lib/{OperationList-CHK_erYP.js → OperationList-nQ0bd8TU.js} +8 -8
- package/lib/{OperationList-CHK_erYP.js.map → OperationList-nQ0bd8TU.js.map} +1 -1
- package/lib/Route-CNvxEBnR.js +14 -0
- package/lib/{Route-D70pGn9n.js.map → Route-CNvxEBnR.js.map} +1 -1
- package/lib/{SlotletProvider-B71hNEUL.js → SlotletProvider-CzMAO73_.js} +12 -12
- package/lib/{SlotletProvider-B71hNEUL.js.map → SlotletProvider-CzMAO73_.js.map} +1 -1
- package/lib/Spinner-fF-Xv-gw.js +274 -0
- package/lib/Spinner-fF-Xv-gw.js.map +1 -0
- package/lib/index-7kcHaXD6.js +1771 -0
- package/lib/index-7kcHaXD6.js.map +1 -0
- package/lib/{index-Bl6YeerK.js → index-CgCPw6Jn.js} +1026 -1043
- package/lib/index-CgCPw6Jn.js.map +1 -0
- package/lib/{index-BH-Ub36F.js → index-DkuZvRNP.js} +4 -4
- package/lib/{index-BH-Ub36F.js.map → index-DkuZvRNP.js.map} +1 -1
- package/lib/joinPath-VeNuJa7y.js +8 -0
- package/lib/joinPath-VeNuJa7y.js.map +1 -0
- package/lib/jsx-runtime-B6kdoens.js +635 -0
- package/lib/jsx-runtime-B6kdoens.js.map +1 -0
- package/lib/{AnchorLink-BZcpTwOs.js → utils-CzT_9Tsn.js} +258 -214
- package/lib/utils-CzT_9Tsn.js.map +1 -0
- package/lib/zudoku.auth-clerk.js +1 -1
- package/lib/zudoku.auth-openid.js +2 -2
- package/lib/zudoku.components.js +1229 -1227
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.plugin-api-keys.js +19 -19
- package/lib/zudoku.plugin-custom-page.js +2 -2
- package/lib/zudoku.plugin-markdown.js +21 -38
- package/lib/zudoku.plugin-markdown.js.map +1 -1
- package/lib/zudoku.plugin-openapi.js +8 -6
- package/lib/zudoku.plugin-openapi.js.map +1 -1
- package/package.json +4 -1
- package/src/app/demo.tsx +5 -4
- package/src/app/main.css +2 -2
- package/src/app/main.tsx +3 -1
- package/src/app/standalone.tsx +5 -4
- package/src/lib/components/DevPortal.tsx +1 -1
- package/src/lib/components/Header.tsx +2 -2
- package/src/lib/components/Layout.tsx +2 -2
- package/src/lib/components/TopNavigation.tsx +5 -5
- package/src/lib/components/context/DevPortalProvider.ts +11 -28
- package/src/lib/components/context/ThemeContext.tsx +3 -41
- package/src/lib/components/context/ThemeProvider.tsx +27 -0
- package/src/lib/components/navigation/{SideNavigation.tsx → Sidebar.tsx} +7 -7
- package/src/lib/components/navigation/SidebarBadge.tsx +40 -0
- package/src/lib/components/navigation/SidebarCategory.tsx +105 -0
- package/src/lib/components/navigation/SidebarItem.tsx +96 -0
- package/src/lib/components/navigation/{SideNavigationWrapper.tsx → SidebarWrapper.tsx} +1 -1
- package/src/lib/components/navigation/utils.ts +120 -0
- package/src/lib/core/DevPortalContext.ts +12 -44
- package/src/lib/core/plugins.ts +6 -13
- package/src/lib/plugins/markdown/MdxPage.tsx +14 -50
- package/src/lib/plugins/markdown/generateRoutes.tsx +29 -57
- package/src/lib/plugins/openapi/Sidecar.tsx +15 -2
- package/src/lib/plugins/openapi/index.tsx +17 -23
- package/src/lib/plugins/openapi/interfaces.ts +1 -1
- package/src/lib/util/useScrollToAnchor.ts +39 -18
- package/dist/lib/components/navigation/SideNavigation.d.ts +0 -1
- package/dist/lib/components/navigation/SideNavigation.js +0 -12
- package/dist/lib/components/navigation/SideNavigation.js.map +0 -1
- package/dist/lib/components/navigation/SideNavigationCategory.d.ts +0 -4
- package/dist/lib/components/navigation/SideNavigationCategory.js +0 -26
- package/dist/lib/components/navigation/SideNavigationCategory.js.map +0 -1
- package/dist/lib/components/navigation/SideNavigationItem.d.ts +0 -9
- package/dist/lib/components/navigation/SideNavigationItem.js +0 -44
- package/dist/lib/components/navigation/SideNavigationItem.js.map +0 -1
- package/dist/lib/components/navigation/SideNavigationWrapper.js.map +0 -1
- package/dist/lib/components/navigation/useNavigationCollapsibleState.d.ts +0 -9
- package/dist/lib/components/navigation/useNavigationCollapsibleState.js +0 -28
- package/dist/lib/components/navigation/useNavigationCollapsibleState.js.map +0 -1
- package/dist/lib/components/navigation/util.d.ts +0 -8
- package/dist/lib/components/navigation/util.js +0 -15
- package/dist/lib/components/navigation/util.js.map +0 -1
- package/dist/lib/plugins/openapi/MethodBadge.d.ts +0 -13
- package/dist/lib/plugins/openapi/MethodBadge.js +0 -26
- package/dist/lib/plugins/openapi/MethodBadge.js.map +0 -1
- package/dist/lib/util/traverseNavigation.d.ts +0 -6
- package/dist/lib/util/traverseNavigation.js +0 -30
- package/dist/lib/util/traverseNavigation.js.map +0 -1
- package/lib/AnchorLink-BZcpTwOs.js.map +0 -1
- package/lib/DevPortalProvider-BWeAysxF.js.map +0 -1
- package/lib/DeveloperHint-DQVwIery.js +0 -10
- package/lib/MdxPage-CA1WmW14.js.map +0 -1
- package/lib/Route-D70pGn9n.js +0 -13
- package/lib/Spinner-Coi7ORUV.js +0 -244
- package/lib/Spinner-Coi7ORUV.js.map +0 -1
- package/lib/index-Bl6YeerK.js.map +0 -1
- package/lib/index-Dt-pU7Vu.js +0 -916
- package/lib/index-Dt-pU7Vu.js.map +0 -1
- package/lib/jsx-runtime-CJBdjYYx.js +0 -1526
- package/lib/jsx-runtime-CJBdjYYx.js.map +0 -1
- package/src/lib/components/navigation/SideNavigationCategory.tsx +0 -72
- package/src/lib/components/navigation/SideNavigationItem.tsx +0 -148
- package/src/lib/components/navigation/useNavigationCollapsibleState.ts +0 -42
- package/src/lib/components/navigation/util.ts +0 -38
- package/src/lib/plugins/openapi/MethodBadge.tsx +0 -36
- package/src/lib/util/traverseNavigation.ts +0 -55
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { HTTPSnippet } from "@zudoku/httpsnippet";
|
|
2
2
|
import { Fragment, useMemo, useTransition } from "react";
|
|
3
3
|
import { useSearchParams } from "react-router-dom";
|
|
4
|
+
import { TextColorMap } from "../../components/navigation/SidebarBadge.js";
|
|
4
5
|
import { SyntaxHighlight } from "../../components/SyntaxHighlight.js";
|
|
5
6
|
import type { SchemaObject } from "../../oas/parser/index.js";
|
|
6
7
|
import { cn } from "../../util/cn.js";
|
|
7
8
|
import { ColorizedParam } from "./ColorizedParam.js";
|
|
8
9
|
import { useOasConfig } from "./context.js";
|
|
9
10
|
import { graphql } from "./graphql/index.js";
|
|
10
|
-
import { MethodTextColorMap } from "./MethodBadge.js";
|
|
11
11
|
import type { OperationListItemResult } from "./OperationList.js";
|
|
12
12
|
import { PlaygroundDialogWrapper } from "./PlaygroundDialogWrapper.js";
|
|
13
13
|
import { RequestBodySidecarBox } from "./RequestBodySidecarBox.js";
|
|
@@ -71,6 +71,17 @@ export const GetServerQuery = graphql(/* GraphQL */ `
|
|
|
71
71
|
|
|
72
72
|
const context = { suspense: true };
|
|
73
73
|
|
|
74
|
+
const methodToColor = {
|
|
75
|
+
get: TextColorMap.green,
|
|
76
|
+
post: TextColorMap.blue,
|
|
77
|
+
put: TextColorMap.yellow,
|
|
78
|
+
delete: TextColorMap.red,
|
|
79
|
+
patch: TextColorMap.purple,
|
|
80
|
+
options: TextColorMap.indigo,
|
|
81
|
+
head: TextColorMap.gray,
|
|
82
|
+
trace: TextColorMap.gray,
|
|
83
|
+
};
|
|
84
|
+
|
|
74
85
|
export const Sidecar = ({
|
|
75
86
|
operation,
|
|
76
87
|
}: {
|
|
@@ -83,7 +94,9 @@ export const Sidecar = ({
|
|
|
83
94
|
context,
|
|
84
95
|
});
|
|
85
96
|
const methodTextColor =
|
|
86
|
-
|
|
97
|
+
methodToColor[
|
|
98
|
+
operation.method.toLocaleLowerCase() as keyof typeof methodToColor
|
|
99
|
+
] ?? TextColorMap.gray;
|
|
87
100
|
|
|
88
101
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
89
102
|
const [, startTransition] = useTransition();
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { matchPath, useRouteError, type RouteObject } from "react-router-dom";
|
|
2
|
-
import {
|
|
3
|
-
type DevPortalPlugin,
|
|
4
|
-
type PluginNavigationCategory,
|
|
5
|
-
} from "../../core/plugins.js";
|
|
2
|
+
import { type DevPortalPlugin } from "../../core/plugins.js";
|
|
6
3
|
import { graphql } from "./graphql/index.js";
|
|
7
|
-
import { MethodBadge } from "./MethodBadge.js";
|
|
8
4
|
import {
|
|
9
5
|
Client as UrqlClient,
|
|
10
6
|
cacheExchange,
|
|
@@ -14,10 +10,12 @@ import {
|
|
|
14
10
|
import { useQuery } from "@tanstack/react-query";
|
|
15
11
|
import { CirclePlayIcon, LogInIcon } from "lucide-react";
|
|
16
12
|
import { createClient } from "zudoku/openapi-worker";
|
|
13
|
+
import type { ResolvedSidebarItem } from "../../../config/validators/ResolvedSidebarSchema.js";
|
|
17
14
|
import { useAuth } from "../../authentication/hook.js";
|
|
18
15
|
import { ErrorPage } from "../../components/ErrorPage.js";
|
|
19
16
|
import { SyntaxHighlight } from "../../components/SyntaxHighlight.js";
|
|
20
17
|
import { Button } from "../../ui/Button.js";
|
|
18
|
+
import { joinPath } from "../../util/joinPath.js";
|
|
21
19
|
import { OasPluginConfig } from "./interfaces.js";
|
|
22
20
|
import type { PlaygroundContentProps } from "./playground/Playground.js";
|
|
23
21
|
import { PlaygroundDialog } from "./playground/PlaygroundDialog.js";
|
|
@@ -62,7 +60,7 @@ type InternalOasPluginConfig = { inMemory?: boolean };
|
|
|
62
60
|
export const openApiPlugin = (
|
|
63
61
|
config: OasPluginConfig & InternalOasPluginConfig,
|
|
64
62
|
): DevPortalPlugin => {
|
|
65
|
-
const basePath = config.
|
|
63
|
+
const basePath = joinPath(config.navigationId ?? "/reference");
|
|
66
64
|
|
|
67
65
|
const client = config.server
|
|
68
66
|
? new UrqlClient({
|
|
@@ -152,30 +150,26 @@ export const openApiPlugin = (
|
|
|
152
150
|
|
|
153
151
|
const categories = data.schema.tags
|
|
154
152
|
.filter((tag) => tag.operations.length > 0)
|
|
155
|
-
.map<
|
|
156
|
-
|
|
153
|
+
.map<ResolvedSidebarItem>((tag) => ({
|
|
154
|
+
type: "category",
|
|
157
155
|
label: tag.name ?? "",
|
|
158
156
|
collapsible: false,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
<MethodBadge method={operation.method} />
|
|
169
|
-
</div>
|
|
170
|
-
),
|
|
157
|
+
collapsed: false,
|
|
158
|
+
items: tag.operations.map((operation) => ({
|
|
159
|
+
type: "link",
|
|
160
|
+
label: operation.summary ?? operation.path,
|
|
161
|
+
href: `#${operation.slug}`,
|
|
162
|
+
badge: {
|
|
163
|
+
label: operation.method,
|
|
164
|
+
color: "green",
|
|
165
|
+
},
|
|
171
166
|
})),
|
|
172
167
|
}));
|
|
173
168
|
|
|
174
169
|
categories.unshift({
|
|
175
|
-
|
|
170
|
+
type: "link",
|
|
176
171
|
label: "Overview",
|
|
177
|
-
|
|
178
|
-
children: [{ path: "#description", label: "Description" }],
|
|
172
|
+
href: "#description",
|
|
179
173
|
});
|
|
180
174
|
|
|
181
175
|
return categories;
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
import { useLocation } from "react-router-dom";
|
|
3
3
|
import { useViewportAnchor } from "../components/context/ViewportAnchorContext.js";
|
|
4
|
+
import { DATA_ANCHOR_ATTR } from "../components/navigation/SidebarItem.js";
|
|
5
|
+
|
|
6
|
+
const scrollIntoViewIfNeeded = (
|
|
7
|
+
element: Element | null,
|
|
8
|
+
options: ScrollIntoViewOptions = { block: "center" },
|
|
9
|
+
) => {
|
|
10
|
+
if (!element) return;
|
|
11
|
+
|
|
12
|
+
const rect = element.getBoundingClientRect();
|
|
13
|
+
const isInView =
|
|
14
|
+
rect.top >= 0 &&
|
|
15
|
+
rect.left >= 0 &&
|
|
16
|
+
rect.bottom <=
|
|
17
|
+
(window.innerHeight || document.documentElement.clientHeight) &&
|
|
18
|
+
rect.right <= (window.innerWidth || document.documentElement.clientWidth);
|
|
19
|
+
|
|
20
|
+
if (isInView) return;
|
|
21
|
+
|
|
22
|
+
element.scrollIntoView(options);
|
|
23
|
+
};
|
|
4
24
|
|
|
5
25
|
export const useScrollToAnchor = () => {
|
|
6
26
|
const location = useLocation();
|
|
@@ -9,30 +29,31 @@ export const useScrollToAnchor = () => {
|
|
|
9
29
|
useEffect(() => {
|
|
10
30
|
if (!location.hash) return;
|
|
11
31
|
|
|
12
|
-
const hash = location.hash.split("/")[0].slice(1);
|
|
32
|
+
const hash = decodeURIComponent(location.hash.split("/")[0].slice(1));
|
|
13
33
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
34
|
+
const scrollToElement = () => {
|
|
35
|
+
const element = document.getElementById(hash);
|
|
36
|
+
const link = document.querySelector(`[${DATA_ANCHOR_ATTR}="${hash}"]`);
|
|
37
|
+
|
|
38
|
+
if (element) {
|
|
18
39
|
element.scrollIntoView();
|
|
40
|
+
scrollIntoViewIfNeeded(link);
|
|
19
41
|
requestIdleCallback(() => setActiveAnchor(hash));
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
23
44
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const element = document.getElementById(decodeURIComponent(hash));
|
|
27
|
-
if (!element) return;
|
|
45
|
+
return false;
|
|
46
|
+
};
|
|
28
47
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
48
|
+
if (!scrollToElement()) {
|
|
49
|
+
const observer = new MutationObserver((_, obs) => {
|
|
50
|
+
if (!scrollToElement()) return;
|
|
51
|
+
obs.disconnect();
|
|
52
|
+
});
|
|
33
53
|
|
|
34
|
-
|
|
54
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
35
55
|
|
|
36
|
-
|
|
56
|
+
return () => observer.disconnect();
|
|
57
|
+
}
|
|
37
58
|
}, [location.hash, setActiveAnchor]);
|
|
38
59
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const SideNavigation: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useRef } from "react";
|
|
3
|
-
import { useNavigation } from "../context/DevPortalProvider.js";
|
|
4
|
-
import { Slotlet } from "../SlotletProvider.js";
|
|
5
|
-
import { SideNavigationCategory } from "./SideNavigationCategory.js";
|
|
6
|
-
import { SideNavigationWrapper } from "./SideNavigationWrapper.js";
|
|
7
|
-
export const SideNavigation = () => {
|
|
8
|
-
const navRef = useRef(null);
|
|
9
|
-
const navigation = useNavigation();
|
|
10
|
-
return (_jsxs(SideNavigationWrapper, { ref: navRef, pushMainContent: navigation.data.items.length > 0, children: [_jsx(Slotlet, { name: "zudoku-before-navigation" }), navigation.data.items.map((category) => (_jsx(SideNavigationCategory, { category: category }, category.label))), _jsx(Slotlet, { name: "zudoku-after-navigation" })] }));
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=SideNavigation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavigation.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,MAAM,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,OAAO,CACL,MAAC,qBAAqB,IACpB,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,aAEjD,KAAC,OAAO,IAAC,IAAI,EAAC,0BAA0B,GAAG,EAC1C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACvC,KAAC,sBAAsB,IAAsB,QAAQ,EAAE,QAAQ,IAAlC,QAAQ,CAAC,KAAK,CAAwB,CACpE,CAAC,EACF,KAAC,OAAO,IAAC,IAAI,EAAC,yBAAyB,GAAG,IACpB,CACzB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as Collapsible from "@radix-ui/react-collapsible";
|
|
3
|
-
import { ChevronRightIcon } from "lucide-react";
|
|
4
|
-
import { useLocation } from "react-router-dom";
|
|
5
|
-
import { cn } from "../../util/cn.js";
|
|
6
|
-
import { joinPath } from "../../util/joinPath.js";
|
|
7
|
-
import { useTopNavigationItem } from "../context/DevPortalProvider.js";
|
|
8
|
-
import { useViewportAnchor } from "../context/ViewportAnchorContext.js";
|
|
9
|
-
import { SideNavigationItem } from "./SideNavigationItem.js";
|
|
10
|
-
import { useNavigationCollapsibleState } from "./useNavigationCollapsibleState.js";
|
|
11
|
-
import { checkHasActiveItem } from "./util.js";
|
|
12
|
-
export const SideNavigationCategory = ({ category, }) => {
|
|
13
|
-
const { activeAnchor } = useViewportAnchor();
|
|
14
|
-
const navItem = useTopNavigationItem();
|
|
15
|
-
const location = useLocation();
|
|
16
|
-
const isCollapsible = category.collapsible ?? true;
|
|
17
|
-
const collapsibleProps = useNavigationCollapsibleState({
|
|
18
|
-
item: category,
|
|
19
|
-
path: navItem?.path ?? "",
|
|
20
|
-
defaultOpen: () => !isCollapsible ||
|
|
21
|
-
category.expanded ||
|
|
22
|
-
checkHasActiveItem(category, location.pathname, navItem?.path ?? ""),
|
|
23
|
-
});
|
|
24
|
-
return (_jsxs(Collapsible.Root, { ...collapsibleProps, children: [category.label.length > 0 ? (_jsx(Collapsible.Trigger, { asChild: isCollapsible, disabled: !isCollapsible, children: _jsxs("h5", { className: cn("flex group items-center justify-between cursor-pointer font-semibold text-foreground/90 px-[--padding-nav-item] py-1.5 rounded-lg transition-colors duration-300 -mx-[--padding-nav-item]", isCollapsible ? "hover:bg-accent" : "cursor-auto"), children: [category.label, isCollapsible && (_jsx(ChevronRightIcon, { className: "group-data-[state=open]:rotate-90 transition", size: 16 }))] }) })) : ("Endpoints"), _jsx(Collapsible.Content, { className: "CollapsibleContent -mx-[--padding-nav-item]", children: _jsx("ul", { className: "space-y-0.5 mt-1.5 mb-4 ms-3", children: category.children.map((item, i) => (_jsx(SideNavigationItem, { category: category, item: item, activeAnchor: activeAnchor, currentTopNavItem: navItem, basePath: joinPath(navItem?.path, category.path) }, i))) }) })] }, category.label));
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=SideNavigationCategory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavigationCategory.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigationCategory.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,GAGT,EAAE,EAAE;IACH,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC;IAEnD,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;QACrD,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;QACzB,WAAW,EAAE,GAAG,EAAE,CAChB,CAAC,aAAa;YACd,QAAQ,CAAC,QAAQ;YACjB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;KACvE,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,WAAW,CAAC,IAAI,OAA0B,gBAAgB,aACxD,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3B,KAAC,WAAW,CAAC,OAAO,IAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,aAAa,YACnE,cACE,SAAS,EAAE,EAAE,CACX,2LAA2L,EAC3L,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAClD,aAEA,QAAQ,CAAC,KAAK,EACd,aAAa,IAAI,CAChB,KAAC,gBAAgB,IACf,SAAS,EAAC,8CAA8C,EACxD,IAAI,EAAE,EAAE,GACR,CACH,IACE,GACe,CACvB,CAAC,CAAC,CAAC,CACF,WAAW,CACZ,EACD,KAAC,WAAW,CAAC,OAAO,IAAC,SAAS,EAAC,6CAA6C,YAE1E,aAAI,SAAS,EAAC,8BAA8B,YACzC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAClC,KAAC,kBAAkB,IAEjB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,OAAO,EAC1B,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAL3C,CAAC,CAMN,CACH,CAAC,GACC,GACe,KAnCD,QAAQ,CAAC,KAAK,CAoClB,CACpB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { NavigationCategory, NavigationCategoryItem, NavigationItem } from "../../core/DevPortalContext.js";
|
|
2
|
-
export declare const DATA_ANCHOR_ATTR = "data-anchor";
|
|
3
|
-
export declare const SideNavigationItem: ({ category, item, activeAnchor, currentTopNavItem, basePath, }: {
|
|
4
|
-
category: NavigationCategory;
|
|
5
|
-
item: NavigationCategoryItem;
|
|
6
|
-
activeAnchor?: string;
|
|
7
|
-
currentTopNavItem?: NavigationItem;
|
|
8
|
-
basePath?: string;
|
|
9
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as Collapsible from "@radix-ui/react-collapsible";
|
|
3
|
-
import { cva } from "class-variance-authority";
|
|
4
|
-
import { ChevronRightIcon, ExternalLinkIcon } from "lucide-react";
|
|
5
|
-
import { NavLink, useLocation } from "react-router-dom";
|
|
6
|
-
import { cn } from "../../util/cn.js";
|
|
7
|
-
import { joinPath } from "../../util/joinPath.js";
|
|
8
|
-
import { AnchorLink } from "../AnchorLink.js";
|
|
9
|
-
import { useNavigationCollapsibleState } from "./useNavigationCollapsibleState.js";
|
|
10
|
-
import { checkHasActiveItem, isLinkItem, isPathItem } from "./util.js";
|
|
11
|
-
const navigationListItem = cva("flex px-[--padding-nav-item] py-1.5 rounded-lg hover:bg-accent transition-colors duration-300", {
|
|
12
|
-
variants: {
|
|
13
|
-
isActive: {
|
|
14
|
-
true: "text-primary font-medium",
|
|
15
|
-
false: "text-foreground/80",
|
|
16
|
-
},
|
|
17
|
-
isMuted: {
|
|
18
|
-
true: "text-foreground/30",
|
|
19
|
-
false: "",
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
export const DATA_ANCHOR_ATTR = "data-anchor";
|
|
24
|
-
export const SideNavigationItem = ({ category, item, activeAnchor, currentTopNavItem, basePath = "", }) => {
|
|
25
|
-
const currentPath = isPathItem(item) ? joinPath(basePath, item.path) : "";
|
|
26
|
-
const location = useLocation();
|
|
27
|
-
const collapsibleProps = useNavigationCollapsibleState({
|
|
28
|
-
item,
|
|
29
|
-
path: currentPath,
|
|
30
|
-
defaultOpen: () => checkHasActiveItem(item, location.pathname, basePath),
|
|
31
|
-
});
|
|
32
|
-
if (isLinkItem(item)) {
|
|
33
|
-
const classes = cn("flex items-center gap-2", navigationListItem({
|
|
34
|
-
isActive: item.href === location.pathname,
|
|
35
|
-
}));
|
|
36
|
-
return item.href.startsWith("http") ? (_jsxs("a", { className: classes, href: item.href, target: "_blank", rel: "noopener noreferrer", children: [item.label, _jsx(ExternalLinkIcon, { size: 14 })] })) : (_jsx(NavLink, { className: classes, to: item.href, children: item.label }));
|
|
37
|
-
}
|
|
38
|
-
const linkContent = (_jsxs("div", { className: "flex justify-between w-full", children: [_jsxs("div", { className: "flex items-center gap-2 truncate w-full", children: [item.icon, typeof item.label !== "string" ? (item.label) : (_jsx("span", { className: "truncate", children: item.label }))] }), item.children && (_jsx(ChevronRightIcon, { size: 16, className: "transition shrink-0 group-data-[state=open]:rotate-90" }))] }));
|
|
39
|
-
return (_jsx("li", { title: typeof item.label === "string" ? item.label : item.title, children: item.children ? (_jsxs(Collapsible.Root, { ...collapsibleProps, className: "flex flex-col", children: [_jsx(Collapsible.Trigger, { className: cn("group text-start", navigationListItem({ isActive: false })), children: linkContent }), _jsx(Collapsible.Content, { className: "CollapsibleContent ms-[calc(var(--padding-nav-item)*1.125)]", children: _jsx("ul", { className: "mt-1 border-l ps-1.5", children: item.children.map((child) => (_jsx(SideNavigationItem, { category: category, item: child, activeAnchor: activeAnchor, currentTopNavItem: currentTopNavItem, basePath: currentPath }, isPathItem(child) ? child.path : child.href))) }) })] })) : item.path.startsWith("#") ? (_jsx(AnchorLink, { to: item.path, [DATA_ANCHOR_ATTR]: item.path, className: navigationListItem({
|
|
40
|
-
isActive: item.path.slice(1) === activeAnchor,
|
|
41
|
-
isMuted: item.muted,
|
|
42
|
-
}), children: linkContent })) : (_jsx(NavLink, { className: ({ isActive }) => navigationListItem({ isActive }), to: currentPath, children: linkContent })) }));
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=SideNavigationItem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavigationItem.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigationItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavigationWrapper.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigationWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAG7C,SAAS,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,GAAG;IACrE,OAAO,CACL,iCAKmB,MAAM,CAAC,eAAe,CAAC,EACxC,SAAS,EAAE,EAAE,CACX,iOAAiO,EACjO,SAAS,CACV,EACD,GAAG,EAAE,GAAG,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CollapsibleProps } from "@radix-ui/react-collapsible";
|
|
2
|
-
import type { NavigationNode } from "../../util/traverseNavigation.js";
|
|
3
|
-
export declare const useNavigationCollapsibleState: ({ item, defaultOpen, path, }: {
|
|
4
|
-
item: NavigationNode;
|
|
5
|
-
defaultOpen: () => boolean;
|
|
6
|
-
path: string;
|
|
7
|
-
}) => Partial<CollapsibleProps> & {
|
|
8
|
-
"data-animate": boolean;
|
|
9
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef, useState } from "react";
|
|
2
|
-
import { useLocation } from "react-router-dom";
|
|
3
|
-
import { checkHasActiveItem } from "./util.js";
|
|
4
|
-
export const useNavigationCollapsibleState = ({ item, defaultOpen, path, }) => {
|
|
5
|
-
const [open, setOpen] = useState(defaultOpen);
|
|
6
|
-
const location = useLocation();
|
|
7
|
-
const previousLocationPath = useRef(location.pathname);
|
|
8
|
-
const [shouldAnimate, setShouldAnimate] = useState(false);
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
if (!open && previousLocationPath.current !== location.pathname) {
|
|
11
|
-
setOpen(checkHasActiveItem(item, location.pathname, path));
|
|
12
|
-
}
|
|
13
|
-
previousLocationPath.current = location.pathname;
|
|
14
|
-
}, [open, item, path, location.pathname]);
|
|
15
|
-
const onOpenChange = () => {
|
|
16
|
-
setShouldAnimate(true);
|
|
17
|
-
setOpen((prev) => !prev);
|
|
18
|
-
};
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
setShouldAnimate(false);
|
|
21
|
-
}, []);
|
|
22
|
-
return {
|
|
23
|
-
open,
|
|
24
|
-
onOpenChange,
|
|
25
|
-
"data-animate": shouldAnimate,
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=useNavigationCollapsibleState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationCollapsibleState.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/useNavigationCollapsibleState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,IAAI,EACJ,WAAW,EACX,IAAI,GAKL,EAA2D,EAAE;IAC5D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAChE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,oBAAoB,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnD,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,cAAc,EAAE,aAAa;KAC9B,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { HrefNavigationCategoryItem, PathNavigationCategoryItem } from "../../core/DevPortalContext.js";
|
|
2
|
-
import { type NavigationNode } from "../../util/traverseNavigation.js";
|
|
3
|
-
export declare const isPathItem: (item: NavigationNode) => item is PathNavigationCategoryItem;
|
|
4
|
-
export declare const isLinkItem: (item: NavigationNode) => item is HrefNavigationCategoryItem;
|
|
5
|
-
/**
|
|
6
|
-
* Recursively checks if the current item or any of its children are active.
|
|
7
|
-
*/
|
|
8
|
-
export declare const checkHasActiveItem: (item: NavigationNode, locationPath: string, basePath: string) => boolean;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { matchPath } from "react-router-dom";
|
|
2
|
-
import { traverseNavigationNode, } from "../../util/traverseNavigation.js";
|
|
3
|
-
export const isPathItem = (item) => "path" in item;
|
|
4
|
-
export const isLinkItem = (item) => "href" in item;
|
|
5
|
-
/**
|
|
6
|
-
* Recursively checks if the current item or any of its children are active.
|
|
7
|
-
*/
|
|
8
|
-
export const checkHasActiveItem = (item, locationPath, basePath) => {
|
|
9
|
-
return Boolean(traverseNavigationNode(item, (node, fullPath) => {
|
|
10
|
-
if (isPathItem(node) && matchPath(fullPath, locationPath)) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
}, basePath));
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=util.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EACL,sBAAsB,GAEvB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAoB,EACgB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAoB,EACgB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAoB,EACpB,YAAoB,EACpB,QAAgB,EAChB,EAAE;IACF,OAAO,OAAO,CACZ,sBAAsB,CACpB,IAAI,EACJ,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QACjB,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EACD,QAAQ,CACT,CACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare const MethodTextColorMap: {
|
|
2
|
-
get: string;
|
|
3
|
-
post: string;
|
|
4
|
-
put: string;
|
|
5
|
-
delete: string;
|
|
6
|
-
patch: string;
|
|
7
|
-
options: string;
|
|
8
|
-
head: string;
|
|
9
|
-
trace: string;
|
|
10
|
-
};
|
|
11
|
-
export declare const MethodBadge: ({ method }: {
|
|
12
|
-
method: string;
|
|
13
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from "../../util/cn.js";
|
|
3
|
-
export const MethodTextColorMap = {
|
|
4
|
-
get: "text-green-600",
|
|
5
|
-
post: "text-sky-600",
|
|
6
|
-
put: "text-yellow-600",
|
|
7
|
-
delete: "text-red-600",
|
|
8
|
-
patch: "text-purple-600",
|
|
9
|
-
options: "text-indigo-600",
|
|
10
|
-
head: "text-gray-600",
|
|
11
|
-
trace: "text-gray-600",
|
|
12
|
-
};
|
|
13
|
-
const MethodColorMap = {
|
|
14
|
-
get: "bg-green-400 dark:bg-green-800",
|
|
15
|
-
post: "bg-sky-400 dark:bg-sky-800",
|
|
16
|
-
put: "bg-yellow-400 dark:bg-yellow-800",
|
|
17
|
-
delete: "bg-red-400 dark:bg-red-800",
|
|
18
|
-
patch: "bg-purple-400 dark:bg-purple-600",
|
|
19
|
-
options: "bg-indigo-400 dark:bg-indigo-600",
|
|
20
|
-
head: "bg-gray-400 dark:bg-gray-600",
|
|
21
|
-
trace: "bg-gray-400 dark:bg-gray-600",
|
|
22
|
-
};
|
|
23
|
-
export const MethodBadge = ({ method }) => {
|
|
24
|
-
return (_jsx("span", { className: cn("mt-0.5 flex items-center duration-200 transition-opacity text-center uppercase font-mono text-[0.65rem] font-bold rounded text-background dark:text-zinc-50 h-4 px-1", MethodColorMap[method]), children: method }));
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=MethodBadge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MethodBadge.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/MethodBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,gBAAgB;IACrB,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,iBAAiB;IACtB,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,iBAAiB;IACxB,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,GAAG,EAAE,gCAAgC;IACrC,IAAI,EAAE,4BAA4B;IAClC,GAAG,EAAE,kCAAkC;IACvC,MAAM,EAAE,4BAA4B;IACpC,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,8BAA8B;IACpC,KAAK,EAAE,8BAA8B;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAsB,EAAE,EAAE;IAC5D,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,sKAAsK,EACtK,cAAc,CAAC,MAAqC,CAAC,CACtD,YAEA,MAAM,GACF,CACR,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { NavigationCategory, NavigationCategoryItem, NavigationItem } from "../core/DevPortalContext.js";
|
|
2
|
-
export type NavigationNode = NavigationCategoryItem | NavigationCategory;
|
|
3
|
-
type Callback<T> = (node: NavigationNode, fullPath: string, parentNodes: NavigationNode[]) => T | undefined;
|
|
4
|
-
export declare const traverseNavigationNode: <T>(node: NavigationNode, callback: Callback<T>, parentPath: string, parentNodes?: NavigationNode[]) => T | undefined;
|
|
5
|
-
export declare const traverseNavigation: <T>(navItem: NavigationItem, callback: Callback<T>) => T | undefined;
|
|
6
|
-
export {};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { isPathItem } from "../components/navigation/util.js";
|
|
2
|
-
import { joinPath } from "./joinPath.js";
|
|
3
|
-
export const traverseNavigationNode = (node, callback, parentPath, parentNodes = []) => {
|
|
4
|
-
const newPath = isPathItem(node)
|
|
5
|
-
? joinPath(parentPath, node.path)
|
|
6
|
-
: parentPath;
|
|
7
|
-
const result = callback(node, newPath, parentNodes);
|
|
8
|
-
if (result !== undefined)
|
|
9
|
-
return result;
|
|
10
|
-
if ("children" in node && node.children) {
|
|
11
|
-
const newParentNodes = [...parentNodes, node];
|
|
12
|
-
for (const child of node.children) {
|
|
13
|
-
const childResult = traverseNavigationNode(child, callback, newPath, newParentNodes);
|
|
14
|
-
if (childResult !== undefined)
|
|
15
|
-
return childResult;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return undefined;
|
|
19
|
-
};
|
|
20
|
-
export const traverseNavigation = (navItem, callback) => {
|
|
21
|
-
if (navItem.categories) {
|
|
22
|
-
for (const category of navItem.categories) {
|
|
23
|
-
const result = traverseNavigationNode(category, callback, navItem.path);
|
|
24
|
-
if (result !== undefined)
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return undefined;
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=traverseNavigation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traverseNavigation.js","sourceRoot":"","sources":["../../../src/lib/util/traverseNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAM9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAoB,EACpB,QAAqB,EACrB,UAAkB,EAClB,cAAgC,EAAE,EACnB,EAAE;IACjB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;QACjC,CAAC,CAAC,UAAU,CAAC;IACf,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAEpD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,sBAAsB,CACxC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,cAAc,CACf,CAAC;YACF,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,WAAW,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAuB,EACvB,QAAqB,EACN,EAAE;IACjB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|