zudoku 0.34.4 → 0.35.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/config/config.d.ts +13 -8
- package/dist/config/validators/common.d.ts +977 -111
- package/dist/config/validators/common.js +26 -1
- package/dist/config/validators/common.js.map +1 -1
- package/dist/config/validators/validate.d.ts +357 -42
- package/dist/lib/authentication/providers/clerk.d.ts +2 -2
- package/dist/lib/authentication/providers/supabase.d.ts +4 -0
- package/dist/lib/authentication/providers/supabase.js +112 -0
- package/dist/lib/authentication/providers/supabase.js.map +1 -0
- package/dist/lib/components/Header.js +3 -3
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/InlineCode.js +1 -1
- package/dist/lib/components/InlineCode.js.map +1 -1
- package/dist/lib/components/Layout.js +4 -10
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/Main.d.ts +2 -0
- package/dist/lib/components/Main.js +15 -0
- package/dist/lib/components/Main.js.map +1 -0
- package/dist/lib/components/context/ViewportAnchorContext.d.ts +2 -4
- package/dist/lib/components/context/ViewportAnchorContext.js +2 -4
- package/dist/lib/components/context/ViewportAnchorContext.js.map +1 -1
- package/dist/lib/components/index.d.ts +2 -1
- package/dist/lib/components/navigation/Sidebar.d.ts +3 -1
- package/dist/lib/components/navigation/Sidebar.js +2 -4
- package/dist/lib/components/navigation/Sidebar.js.map +1 -1
- package/dist/lib/components/navigation/SidebarWrapper.d.ts +8 -6
- package/dist/lib/components/navigation/SidebarWrapper.js +1 -2
- package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
- package/dist/lib/core/RouteGuard.js +2 -1
- package/dist/lib/core/RouteGuard.js.map +1 -1
- package/dist/lib/oas/graphql/index.js +34 -0
- package/dist/lib/oas/graphql/index.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.d.ts +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +2 -1
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +9 -4
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/SimpleSelect.js +1 -1
- package/dist/lib/plugins/openapi/SimpleSelect.js.map +1 -1
- package/dist/lib/plugins/openapi/graphql/gql.d.ts +1 -1
- package/dist/lib/plugins/openapi/graphql/gql.js +1 -1
- package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
- package/dist/lib/plugins/openapi/graphql/graphql.d.ts +6 -0
- package/dist/lib/plugins/openapi/graphql/graphql.js +2 -0
- package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
- package/dist/lib/plugins/openapi/index.d.ts +1 -1
- package/dist/lib/plugins/openapi/index.js +8 -8
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +7 -10
- package/dist/lib/ui/Callout.d.ts +2 -1
- package/dist/lib/ui/Callout.js +3 -2
- package/dist/lib/ui/Callout.js.map +1 -1
- package/dist/lib/util/MdxComponents.d.ts +2 -1
- package/dist/vite/plugin-api.js +5 -9
- package/dist/vite/plugin-api.js.map +1 -1
- package/lib/{Callout-B_sEhkYd.js → Callout-B2vsR09t.js} +70 -52
- package/lib/{Callout-B_sEhkYd.js.map → Callout-B2vsR09t.js.map} +1 -1
- package/lib/Drawer-kDAfOq_2.js +1133 -0
- package/lib/Drawer-kDAfOq_2.js.map +1 -0
- package/lib/{Markdown-DZXjQjpH.js → Markdown-D1Y3cd9l.js} +4471 -3315
- package/lib/Markdown-D1Y3cd9l.js.map +1 -0
- package/lib/{MdxPage-52vRwa_7.js → MdxPage-CUL_SQzW.js} +9 -9
- package/lib/MdxPage-CUL_SQzW.js.map +1 -0
- package/lib/{OasProvider-CDyf845G.js → OasProvider-DEL8ulKm.js} +2 -2
- package/lib/{OasProvider-CDyf845G.js.map → OasProvider-DEL8ulKm.js.map} +1 -1
- package/lib/{OperationList-DdCWaqeE.js → OperationList-D6goKbzX.js} +179 -179
- package/lib/OperationList-D6goKbzX.js.map +1 -0
- package/lib/{SlotletProvider-TydSHROc.js → SlotletProvider-iDmNlxD5.js} +2 -2
- package/lib/{SlotletProvider-TydSHROc.js.map → SlotletProvider-iDmNlxD5.js.map} +1 -1
- package/lib/{createServer-DmusVVsi.js → createServer-BNBGpbLa.js} +1764 -1734
- package/lib/{createServer-DmusVVsi.js.map → createServer-BNBGpbLa.js.map} +1 -1
- package/lib/{index-BO-sA1cw.js → index-PKytqmuw.js} +348 -346
- package/lib/index-PKytqmuw.js.map +1 -0
- package/lib/prism-bash.min-HHIMdNJ_.js.map +1 -1
- package/lib/prism-csharp.min-bQAo2pmx.js.map +1 -1
- package/lib/prism-java.min-BpvsOuIa.js.map +1 -1
- package/lib/prism-javascript.min-CEqHqgbm.js.map +1 -1
- package/lib/prism-json.min-B1GJqK1k.js.map +1 -1
- package/lib/prism-markdown.min-C0Qn0m-5.js.map +1 -1
- package/lib/prism-markup-BNGj0Tvm.js.map +1 -1
- package/lib/prism-objectivec.min-BXSWqpJJ.js.map +1 -1
- package/lib/prism-ruby.min-Dx9KO9ds.js.map +1 -1
- package/lib/prism-typescript.min-CD7H2IYQ.js.map +1 -1
- package/lib/ui/Callout.js +39 -21
- package/lib/ui/Callout.js.map +1 -1
- package/lib/ui/Drawer.js +14 -1129
- package/lib/ui/Drawer.js.map +1 -1
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.components.js +675 -621
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.plugin-api-catalog.js +1 -1
- package/lib/zudoku.plugin-api-keys.js +1 -1
- package/lib/zudoku.plugin-custom-pages.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +1 -1
- package/package.json +11 -6
- package/src/app/main.css +5 -3
- package/src/lib/authentication/providers/clerk.tsx +2 -2
- package/src/lib/authentication/providers/supabase.tsx +151 -0
- package/src/lib/components/Header.tsx +10 -6
- package/src/lib/components/InlineCode.tsx +1 -1
- package/src/lib/components/Layout.tsx +5 -40
- package/src/lib/components/Main.tsx +47 -0
- package/src/lib/components/context/ViewportAnchorContext.tsx +3 -9
- package/src/lib/components/navigation/Sidebar.tsx +7 -9
- package/src/lib/components/navigation/SidebarWrapper.tsx +13 -15
- package/src/lib/core/RouteGuard.tsx +2 -1
- package/src/lib/oas/graphql/index.ts +35 -0
- package/src/lib/plugins/markdown/MdxPage.tsx +2 -2
- package/src/lib/plugins/openapi/OperationList.tsx +3 -2
- package/src/lib/plugins/openapi/Sidecar.tsx +11 -4
- package/src/lib/plugins/openapi/SimpleSelect.tsx +1 -1
- package/src/lib/plugins/openapi/graphql/gql.ts +3 -3
- package/src/lib/plugins/openapi/graphql/graphql.ts +8 -0
- package/src/lib/plugins/openapi/index.tsx +10 -11
- package/src/lib/plugins/openapi/interfaces.ts +11 -15
- package/src/lib/ui/Callout.tsx +28 -10
- package/lib/Markdown-DZXjQjpH.js.map +0 -1
- package/lib/MdxPage-52vRwa_7.js.map +0 -1
- package/lib/OperationList-DdCWaqeE.js.map +0 -1
- package/lib/index-BO-sA1cw.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClerkAuthenticationConfig } from "../../../config/config.js";
|
|
2
|
-
import { AuthenticationProviderInitializer } from "../authentication.js";
|
|
1
|
+
import { type ClerkAuthenticationConfig } from "../../../config/config.js";
|
|
2
|
+
import { type AuthenticationProviderInitializer } from "../authentication.js";
|
|
3
3
|
declare const clerkAuth: AuthenticationProviderInitializer<ClerkAuthenticationConfig>;
|
|
4
4
|
export default clerkAuth;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type SupabaseAuthenticationConfig } from "../../../config/config.js";
|
|
2
|
+
import { type AuthenticationProviderInitializer } from "../authentication.js";
|
|
3
|
+
declare const supabaseAuth: AuthenticationProviderInitializer<SupabaseAuthenticationConfig>;
|
|
4
|
+
export default supabaseAuth;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { createClient, } from "@supabase/supabase-js";
|
|
2
|
+
import { AuthenticationPlugin } from "../AuthenticationPlugin.js";
|
|
3
|
+
import { AuthorizationError } from "../errors.js";
|
|
4
|
+
import { useAuthState } from "../state.js";
|
|
5
|
+
class SupabaseAuthPlugin extends AuthenticationPlugin {
|
|
6
|
+
}
|
|
7
|
+
class SupabaseAuthenticationProvider {
|
|
8
|
+
client;
|
|
9
|
+
provider;
|
|
10
|
+
redirectToAfterSignUp;
|
|
11
|
+
redirectToAfterSignIn;
|
|
12
|
+
redirectToAfterSignOut;
|
|
13
|
+
constructor({ supabaseUrl, supabaseKey, provider, redirectToAfterSignUp, redirectToAfterSignIn, redirectToAfterSignOut, basePath, }) {
|
|
14
|
+
this.provider = provider;
|
|
15
|
+
this.client = createClient(supabaseUrl, supabaseKey, {
|
|
16
|
+
auth: {
|
|
17
|
+
autoRefreshToken: true,
|
|
18
|
+
persistSession: true,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const root = basePath ?? "/";
|
|
22
|
+
this.redirectToAfterSignUp = redirectToAfterSignUp ?? root;
|
|
23
|
+
this.redirectToAfterSignIn = redirectToAfterSignIn ?? root;
|
|
24
|
+
this.redirectToAfterSignOut = redirectToAfterSignOut ?? root;
|
|
25
|
+
this.client.auth.onAuthStateChange(async (event, session) => {
|
|
26
|
+
if (session && (event === "SIGNED_IN" || event === "TOKEN_REFRESHED")) {
|
|
27
|
+
await this.updateUserState(session);
|
|
28
|
+
}
|
|
29
|
+
else if (event === "SIGNED_OUT") {
|
|
30
|
+
useAuthState.setState({
|
|
31
|
+
isAuthenticated: false,
|
|
32
|
+
isPending: false,
|
|
33
|
+
profile: undefined,
|
|
34
|
+
providerData: undefined,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async updateUserState(session) {
|
|
40
|
+
const { user } = session;
|
|
41
|
+
const profile = {
|
|
42
|
+
sub: user.id,
|
|
43
|
+
email: user.email,
|
|
44
|
+
name: user.user_metadata.full_name || user.user_metadata.name,
|
|
45
|
+
emailVerified: user.email_confirmed_at != null,
|
|
46
|
+
pictureUrl: user.user_metadata.avatar_url,
|
|
47
|
+
};
|
|
48
|
+
useAuthState.setState({
|
|
49
|
+
isAuthenticated: true,
|
|
50
|
+
isPending: false,
|
|
51
|
+
profile,
|
|
52
|
+
providerData: { session },
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async getAccessToken() {
|
|
56
|
+
const { data, error } = await this.client.auth.getSession();
|
|
57
|
+
if (error || !data.session) {
|
|
58
|
+
throw new AuthorizationError("User is not authenticated");
|
|
59
|
+
}
|
|
60
|
+
return data.session.access_token;
|
|
61
|
+
}
|
|
62
|
+
signUp = async ({ redirectTo }) => {
|
|
63
|
+
const finalRedirectTo = redirectTo ?? this.redirectToAfterSignUp;
|
|
64
|
+
// Open Supabase Auth UI in a new window
|
|
65
|
+
await this.client.auth.signInWithOAuth({
|
|
66
|
+
provider: this.provider,
|
|
67
|
+
options: {
|
|
68
|
+
redirectTo: window.location.origin + finalRedirectTo,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
signIn = async ({ redirectTo }) => {
|
|
73
|
+
const finalRedirectTo = redirectTo ?? this.redirectToAfterSignIn;
|
|
74
|
+
await this.client.auth.signInWithOAuth({
|
|
75
|
+
provider: this.provider,
|
|
76
|
+
options: {
|
|
77
|
+
redirectTo: window.location.origin + finalRedirectTo,
|
|
78
|
+
queryParams: {
|
|
79
|
+
access_type: "offline",
|
|
80
|
+
prompt: "consent",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
signOut = async () => {
|
|
86
|
+
await new Promise((resolve) => {
|
|
87
|
+
const { data } = this.client.auth.onAuthStateChange(async (event) => {
|
|
88
|
+
if (event !== "SIGNED_OUT")
|
|
89
|
+
return;
|
|
90
|
+
data.subscription.unsubscribe();
|
|
91
|
+
resolve();
|
|
92
|
+
});
|
|
93
|
+
void this.client.auth.signOut();
|
|
94
|
+
});
|
|
95
|
+
useAuthState.setState({
|
|
96
|
+
isAuthenticated: false,
|
|
97
|
+
isPending: false,
|
|
98
|
+
profile: undefined,
|
|
99
|
+
providerData: undefined,
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
getAuthenticationPlugin = () => new SupabaseAuthPlugin();
|
|
103
|
+
onPageLoad = async () => {
|
|
104
|
+
const { data, error } = await this.client.auth.getSession();
|
|
105
|
+
if (!error && data.session) {
|
|
106
|
+
await this.updateUserState(data.session);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const supabaseAuth = (options) => new SupabaseAuthenticationProvider(options);
|
|
111
|
+
export default supabaseAuth;
|
|
112
|
+
//# sourceMappingURL=supabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../../../src/lib/authentication/providers/supabase.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Link } from "react-router";
|
|
|
4
4
|
import { Button } from "zudoku/ui/Button.js";
|
|
5
5
|
import { Skeleton } from "zudoku/ui/Skeleton.js";
|
|
6
6
|
import { useAuth } from "../authentication/hook.js";
|
|
7
|
-
import { isProfileMenuPlugin } from "../core/plugins.js";
|
|
7
|
+
import { isProfileMenuPlugin, } from "../core/plugins.js";
|
|
8
8
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "../ui/DropdownMenu.js";
|
|
9
9
|
import { joinUrl } from "../util/joinUrl.js";
|
|
10
10
|
import { Banner } from "./Banner.js";
|
|
@@ -29,11 +29,11 @@ export const Header = memo(function HeaderInner() {
|
|
|
29
29
|
.filter((p) => isProfileMenuPlugin(p))
|
|
30
30
|
.flatMap((p) => p.getProfileMenuItems(context))
|
|
31
31
|
.sort((i) => i.weight ?? 0);
|
|
32
|
-
return (_jsxs("header", { className: "sticky lg:top-0 z-10 bg-background/80 backdrop-blur w-full", children: [_jsx(Banner, {}), _jsx("div", { className: "border-b", children: _jsxs("div", { className: "max-w-screen-2xl 2xl:border-x mx-auto
|
|
32
|
+
return (_jsxs("header", { className: "sticky lg:top-0 z-10 bg-background/80 backdrop-blur w-full", children: [_jsx(Banner, {}), _jsx("div", { className: "border-b", children: _jsxs("div", { className: "max-w-screen-2xl 2xl:border-x mx-auto flex relative items-center justify-between px-4 lg:px-8 h-[--top-header-height]", children: [_jsx("div", { className: "flex", children: _jsx(Link, { to: "/", children: _jsxs("div", { className: "flex items-center gap-3.5", children: [page?.logo && (_jsxs(_Fragment, { children: [_jsx("img", { src: /https?:\/\//.test(page.logo.src.light)
|
|
33
33
|
? page.logo.src.light
|
|
34
34
|
: joinUrl(import.meta.env.BASE_URL, page.logo.src.light), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: "h-10 dark:hidden", loading: "lazy" }), _jsx("img", { src: /https?:\/\//.test(page.logo.src.dark)
|
|
35
35
|
? page.logo.src.dark
|
|
36
|
-
: joinUrl(import.meta.env.BASE_URL, page.logo.src.dark), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: "h-10 hidden dark:block", loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }),
|
|
36
|
+
: joinUrl(import.meta.env.BASE_URL, page.logo.src.dark), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: "h-10 hidden dark:block", loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }), _jsx("div", { className: "absolute inset-x-0 justify-center items-center hidden lg:flex w-full pointer-events-none", children: _jsx(Search, { className: "pointer-events-auto" }) }), _jsxs("div", { className: "flex items-center gap-8", children: [_jsx(MobileTopNavigation, {}), _jsxs("div", { className: "hidden lg:flex items-center justify-self-end text-sm gap-2", children: [_jsx(Slotlet, { name: "head-navigation-start" }), isAuthEnabled && (_jsx(ClientOnly, { fallback: _jsx(Skeleton, { className: "rounded h-5 w-24 mr-4" }), children: !isAuthenticated ? (_jsx(Button, { variant: "ghost", onClick: () => auth.login(), children: "Login" })) : (Object.values(accountItems).length > 0 && (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", children: profile?.name ? `${profile.name}` : "My Account" }) }), _jsxs(DropdownMenuContent, { className: "w-56", children: [_jsxs(DropdownMenuLabel, { children: [profile?.name ? `${profile.name}` : "My Account", profile?.email && (_jsx("div", { className: "font-normal text-muted-foreground", children: profile.email }))] }), accountItems.filter((i) => i.category === "top")
|
|
37
37
|
.length > 0 && _jsx(DropdownMenuSeparator, {}), accountItems
|
|
38
38
|
.filter((i) => i.category === "top")
|
|
39
39
|
.map((i) => (_jsx(RecursiveMenu, { item: i }, i.label))), accountItems.filter((i) => !i.category || i.category === "middle").length > 0 && _jsx(DropdownMenuSeparator, {}), accountItems
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,5 @@ export const InlineCode = ({ className, children, selectOnClick, }) => (_jsx("co
|
|
|
8
8
|
range.selectNodeContents(e.currentTarget);
|
|
9
9
|
selection?.removeAllRanges();
|
|
10
10
|
selection?.addRange(range);
|
|
11
|
-
}, className: cn("font-mono border p-1 py-0.5 rounded bg-border/50 dark:bg-border/70
|
|
11
|
+
}, className: cn("font-mono border p-1 py-0.5 rounded bg-border/50 dark:bg-border/70 [overflow-wrap:anywhere]", className), children: children }));
|
|
12
12
|
//# sourceMappingURL=InlineCode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineCode.js","sourceRoot":"","sources":["../../../src/lib/components/InlineCode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,SAAS,EACT,QAAQ,EACR,aAAa,GAKd,EAAE,EAAE,CAAC,CACJ,eACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC1C,SAAS,EAAE,eAAe,EAAE,CAAC;QAC7B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,EACD,SAAS,EAAE,EAAE,CACX,
|
|
1
|
+
{"version":3,"file":"InlineCode.js","sourceRoot":"","sources":["../../../src/lib/components/InlineCode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,SAAS,EACT,QAAQ,EACR,aAAa,GAKd,EAAE,EAAE,CAAC,CACJ,eACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC1C,SAAS,EAAE,eAAe,EAAE,CAAC;QAC7B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,EACD,SAAS,EAAE,EAAE,CACX,6FAA6F,EAC7F,SAAS,CACV,YAEA,QAAQ,GACJ,CACR,CAAC"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Helmet } from "@zudoku/react-helmet-async";
|
|
3
|
-
import {
|
|
4
|
-
import { Suspense, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { Suspense, useEffect, useRef } from "react";
|
|
5
4
|
import { Outlet, useLocation, useNavigation } from "react-router";
|
|
6
5
|
import { useSpinDelay } from "spin-delay";
|
|
7
|
-
import { Drawer, DrawerTrigger } from "../ui/Drawer.js";
|
|
8
|
-
import { cn } from "../util/cn.js";
|
|
9
6
|
import { useScrollToAnchor } from "../util/useScrollToAnchor.js";
|
|
10
7
|
import { useScrollToTop } from "../util/useScrollToTop.js";
|
|
11
8
|
import { useViewportAnchor } from "./context/ViewportAnchorContext.js";
|
|
12
9
|
import { useZudoku } from "./context/ZudokuContext.js";
|
|
13
10
|
import { Header } from "./Header.js";
|
|
14
|
-
import {
|
|
11
|
+
import { Main } from "./Main.js";
|
|
15
12
|
import { Slotlet } from "./SlotletProvider.js";
|
|
16
13
|
import { Spinner } from "./Spinner.js";
|
|
17
|
-
const LoadingFallback = () => (_jsx("main", { className: "
|
|
14
|
+
const LoadingFallback = () => (_jsx("main", { className: "col-span-full grid place-items-center", children: _jsx(Spinner, {}) }));
|
|
18
15
|
export const Layout = ({ children }) => {
|
|
19
16
|
const location = useLocation();
|
|
20
17
|
const { setActiveAnchor } = useViewportAnchor();
|
|
@@ -39,9 +36,6 @@ export const Layout = ({ children }) => {
|
|
|
39
36
|
delay: 300,
|
|
40
37
|
minDuration: 500,
|
|
41
38
|
});
|
|
42
|
-
|
|
43
|
-
return (_jsxs(_Fragment, { children: [import.meta.env.MODE === "standalone" && (_jsx("style", { children: `:root { --top-nav-height: 0px; }` })), _jsxs(Helmet, { titleTemplate: meta?.title, children: [meta?.description && (_jsx("meta", { name: "description", content: meta.description })), meta?.favicon && _jsx("link", { rel: "icon", href: meta.favicon })] }), _jsx(Slotlet, { name: "layout-before-head" }), _jsx(Header, {}), _jsx(Slotlet, { name: "layout-after-head" }), _jsx("div", { className: "w-full min-h-[calc(100vh-var(--header-height))] max-w-screen-2xl mx-auto px-4 lg:px-8 2xl:border-x", children: showSpinner ? (_jsx(LoadingFallback, {})) : (_jsx(Suspense, { fallback: _jsx(LoadingFallback, {}), children: _jsxs(Drawer, { direction: "left", open: isDrawerOpen, onOpenChange: (open) => setDrawerOpen(open), children: [_jsx(Sidebar, { onRequestClose: () => setDrawerOpen(false) }), _jsx("div", { className: cn("lg:hidden -mx-4 px-4 py-2 sticky bg-background/80 backdrop-blur z-10 top-0 left-0 right-0 border-b", "peer-data-[navigation=false]:hidden"), children: _jsxs(DrawerTrigger, { className: "flex items-center gap-2", children: [_jsx(PanelLeftIcon, { size: 16, strokeWidth: 1.5 }), _jsx("span", { className: "text-sm", children: "Menu" })] }) }), _jsxs("main", { "data-pagefind-body": true, className: cn("h-full dark:border-white/10 translate-x-0", "lg:overflow-visible",
|
|
44
|
-
// This works in tandem with the `SidebarWrapper` component
|
|
45
|
-
"lg:peer-data-[navigation=true]:w-[calc(100%-var(--side-nav-width))]", "lg:peer-data-[navigation=true]:translate-x-[--side-nav-width] lg:peer-data-[navigation=true]:pl-12"), children: [_jsx(Slotlet, { name: "zudoku-before-content" }), children ?? _jsx(Outlet, {}), _jsx(Slotlet, { name: "zudoku-after-content" })] })] }) })) })] }));
|
|
39
|
+
return (_jsxs(_Fragment, { children: [import.meta.env.MODE === "standalone" && (_jsx("style", { children: `:root { --top-nav-height: 0px; }` })), _jsxs(Helmet, { titleTemplate: meta?.title, children: [meta?.description && (_jsx("meta", { name: "description", content: meta.description })), meta?.favicon && _jsx("link", { rel: "icon", href: meta.favicon })] }), _jsx(Slotlet, { name: "layout-before-head" }), _jsx(Header, {}), _jsx(Slotlet, { name: "layout-after-head" }), _jsx("div", { className: "grid lg:grid-cols-[var(--side-nav-width)_1fr] max-w-screen-2xl w-full lg:mx-auto px-4 lg:px-8 2xl:border-x", children: showSpinner ? (_jsx(LoadingFallback, {})) : (_jsx(Suspense, { fallback: _jsx(LoadingFallback, {}), children: _jsx(Main, { children: children ?? _jsx(Outlet, {}) }) })) })] }));
|
|
46
40
|
};
|
|
47
41
|
//# sourceMappingURL=Layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PanelLeftIcon } from "lucide-react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Drawer, DrawerTrigger } from "zudoku/ui/Drawer.js";
|
|
5
|
+
import { cn } from "../util/cn.js";
|
|
6
|
+
import { useCurrentNavigation } from "./context/ZudokuContext.js";
|
|
7
|
+
import { Sidebar } from "./navigation/Sidebar.js";
|
|
8
|
+
import { Slotlet } from "./SlotletProvider.js";
|
|
9
|
+
export const Main = ({ children }) => {
|
|
10
|
+
const [isDrawerOpen, setDrawerOpen] = useState(false);
|
|
11
|
+
const { sidebar } = useCurrentNavigation();
|
|
12
|
+
const hasSidebar = sidebar.length > 0;
|
|
13
|
+
return (_jsxs(Drawer, { direction: "left", open: isDrawerOpen, onOpenChange: (open) => setDrawerOpen(open), children: [hasSidebar && (_jsx(Sidebar, { onRequestClose: () => setDrawerOpen(false), sidebar: sidebar })), hasSidebar && (_jsx("div", { className: "lg:hidden -mx-4 px-4 py-2 sticky bg-background/80 backdrop-blur z-10 top-0 left-0 right-0 border-b", children: _jsxs(DrawerTrigger, { className: "flex items-center gap-2", children: [_jsx(PanelLeftIcon, { size: 16, strokeWidth: 1.5 }), _jsx("span", { className: "text-sm", children: "Menu" })] }) })), _jsxs("main", { "data-pagefind-body": true, className: cn("h-auto dark:border-white/10 translate-x-0", hasSidebar ? "lg:pl-12" : "col-span-full"), children: [_jsx(Slotlet, { name: "zudoku-before-content" }), children, _jsx(Slotlet, { name: "zudoku-after-content" })] })] }));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=Main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../../../src/lib/components/Main.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAA0B,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACtD,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtC,OAAO,CACL,MAAC,MAAM,IACL,SAAS,EAAC,MAAM,EAChB,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aAE1C,UAAU,IAAI,CACb,KAAC,OAAO,IACN,cAAc,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAC1C,OAAO,EAAE,OAAO,GAChB,CACH,EACA,UAAU,IAAI,CACb,cAAK,SAAS,EAAC,oGAAoG,YACjH,MAAC,aAAa,IAAC,SAAS,EAAC,yBAAyB,aAChD,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAI,EAC7C,eAAM,SAAS,EAAC,SAAS,qBAAY,IACvB,GACZ,CACP,EACD,4CAEE,SAAS,EAAE,EAAE,CACX,2CAA2C,EAC3C,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAC1C,aAED,KAAC,OAAO,IAAC,IAAI,EAAC,uBAAuB,GAAG,EACvC,QAAQ,EACT,KAAC,OAAO,IAAC,IAAI,EAAC,sBAAsB,GAAG,IAClC,IACA,CACV,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type PropsWithChildren } from "react";
|
|
2
2
|
type AnchorContextType = {
|
|
3
3
|
activeAnchor?: string;
|
|
4
4
|
setActiveAnchor: (anchor: string) => void;
|
|
@@ -9,7 +9,5 @@ export declare const useViewportAnchor: () => AnchorContextType;
|
|
|
9
9
|
export declare const useRegisterAnchorElement: () => {
|
|
10
10
|
ref: (el: HTMLElement | null) => void;
|
|
11
11
|
};
|
|
12
|
-
export declare const ViewportAnchorProvider: ({ children
|
|
13
|
-
children: ReactNode;
|
|
14
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare const ViewportAnchorProvider: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
|
|
15
13
|
export {};
|
|
@@ -25,7 +25,7 @@ export const useRegisterAnchorElement = () => {
|
|
|
25
25
|
}, []);
|
|
26
26
|
return { ref: setRef };
|
|
27
27
|
};
|
|
28
|
-
export const ViewportAnchorProvider = ({ children
|
|
28
|
+
export const ViewportAnchorProvider = ({ children }) => {
|
|
29
29
|
const [activeAnchor, setActiveAnchor] = useState("");
|
|
30
30
|
const observerRef = useRef(null);
|
|
31
31
|
const registeredElements = useRef(new Set());
|
|
@@ -38,9 +38,7 @@ export const ViewportAnchorProvider = ({ children, }) => {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}, {
|
|
41
|
-
|
|
42
|
-
// see --header-height in `main.css`
|
|
43
|
-
rootMargin: "115px 0px -80% 0px",
|
|
41
|
+
rootMargin: "0px 0px -80% 0px",
|
|
44
42
|
threshold: 0.75,
|
|
45
43
|
});
|
|
46
44
|
// Process any elements that tried to register before observer was ready
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewportAnchorContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ViewportAnchorContext.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ViewportAnchorContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ViewportAnchorContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -46,11 +46,12 @@ export declare const StatusPage: ({ statusCode, message }: {
|
|
|
46
46
|
statusCode: number;
|
|
47
47
|
message?: import("react").ReactNode;
|
|
48
48
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
49
|
-
export declare const Callout: ({ type, children, title, className }: {
|
|
49
|
+
export declare const Callout: ({ type, children, title, className, icon, }: {
|
|
50
50
|
type: "info" | "note" | "tip" | "caution" | "danger";
|
|
51
51
|
title?: string;
|
|
52
52
|
children: import("react").ReactNode;
|
|
53
53
|
className?: string;
|
|
54
|
+
icon?: boolean;
|
|
54
55
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
55
56
|
export declare const Markdown: import("react").MemoExoticComponent<({ content, className }: {
|
|
56
57
|
content: string;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { SidebarItem as SidebarItemType } from "../../../config/validators/SidebarSchema.js";
|
|
2
|
+
export declare const Sidebar: ({ onRequestClose, sidebar, }: {
|
|
2
3
|
onRequestClose?: () => void;
|
|
4
|
+
sidebar: SidebarItemType[];
|
|
3
5
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,17 +3,15 @@ import { useEffect, useRef } from "react";
|
|
|
3
3
|
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
|
|
4
4
|
import { DrawerContent, DrawerTitle } from "../../ui/Drawer.js";
|
|
5
5
|
import { scrollIntoViewIfNeeded } from "../../util/scrollIntoViewIfNeeded.js";
|
|
6
|
-
import { useCurrentNavigation } from "../context/ZudokuContext.js";
|
|
7
6
|
import { Slotlet } from "../SlotletProvider.js";
|
|
8
7
|
import { SidebarItem } from "./SidebarItem.js";
|
|
9
8
|
import { SidebarWrapper } from "./SidebarWrapper.js";
|
|
10
|
-
export const Sidebar = ({ onRequestClose, }) => {
|
|
9
|
+
export const Sidebar = ({ onRequestClose, sidebar, }) => {
|
|
11
10
|
const navRef = useRef(null);
|
|
12
|
-
const navigation = useCurrentNavigation();
|
|
13
11
|
useEffect(() => {
|
|
14
12
|
const active = navRef.current?.querySelector('[aria-current="page"]');
|
|
15
13
|
scrollIntoViewIfNeeded(active ?? null);
|
|
16
14
|
}, []);
|
|
17
|
-
return (_jsxs(_Fragment, { children: [_jsxs(SidebarWrapper, { ref: navRef,
|
|
15
|
+
return (_jsxs(_Fragment, { children: [_jsxs(SidebarWrapper, { ref: navRef, children: [_jsx(Slotlet, { name: "zudoku-before-navigation" }), sidebar.map((item) => (_jsx(SidebarItem, { item: item }, item.label))), _jsx(Slotlet, { name: "zudoku-after-navigation" })] }), _jsx(DrawerContent, { className: "lg:hidden h-[100dvh] left-0 w-[320px] rounded-none", "aria-describedby": undefined, children: _jsxs("div", { className: "p-4 overflow-y-auto overscroll-none", children: [_jsx(VisuallyHidden, { children: _jsx(DrawerTitle, { children: "Sidebar" }) }), sidebar.map((item) => (_jsx(SidebarItem, { item: item, onRequestClose: onRequestClose }, item.label)))] }) })] }));
|
|
18
16
|
};
|
|
19
17
|
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/Sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/Sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACtB,cAAc,EACd,OAAO,GAIR,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACtE,sBAAsB,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,8BACE,MAAC,cAAc,IAAC,GAAG,EAAE,MAAM,aACzB,KAAC,OAAO,IAAC,IAAI,EAAC,0BAA0B,GAAG,EAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrB,KAAC,WAAW,IAAkB,IAAI,EAAE,IAAI,IAAtB,IAAI,CAAC,KAAK,CAAgB,CAC7C,CAAC,EACF,KAAC,OAAO,IAAC,IAAI,EAAC,yBAAyB,GAAG,IAC3B,EACjB,KAAC,aAAa,IACZ,SAAS,EAAC,oDAAoD,sBAC5C,SAAS,YAE3B,eAAK,SAAS,EAAC,qCAAqC,aAClD,KAAC,cAAc,cACb,KAAC,WAAW,0BAAsB,GACnB,EAChB,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrB,KAAC,WAAW,IAEV,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,IAFzB,IAAI,CAAC,KAAK,CAGf,CACH,CAAC,IACE,GACQ,IACf,CACJ,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
className
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
1
|
+
import { type PropsWithChildren, type Ref } from "react";
|
|
2
|
+
export declare const SidebarWrapper: {
|
|
3
|
+
({ children, className, ref, }: PropsWithChildren<{
|
|
4
|
+
className?: string;
|
|
5
|
+
ref?: Ref<HTMLDivElement>;
|
|
6
|
+
}>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
displayName: string;
|
|
8
|
+
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef } from "react";
|
|
3
2
|
import { cn } from "../../util/cn.js";
|
|
4
|
-
export const SidebarWrapper =
|
|
3
|
+
export const SidebarWrapper = ({ children, className, ref, }) => (_jsx("nav", { className: cn("hidden lg:flex h-full scrollbar peer flex-col overflow-y-auto shrink-0 text-sm border-r pr-6", "sticky top-[--header-height] h-[calc(100vh-var(--header-height))]", "-mx-[--padding-nav-item] max-w-[--side-nav-width] pb-20 pt-[--padding-content-top] scroll-pt-2 gap-2", className), ref: ref, children: children }));
|
|
5
4
|
SidebarWrapper.displayName = "SidebarWrapper";
|
|
6
5
|
//# sourceMappingURL=SidebarWrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarWrapper.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SidebarWrapper.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SidebarWrapper.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SidebarWrapper.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,GAAG,GAIH,EAAE,EAAE,CAAC,CACL,cACE,SAAS,EAAE,EAAE,CACX,8FAA8F,EAC9F,mEAAmE,EACnE,sGAAsG,EACtG,SAAS,CACV,EACD,GAAG,EAAE,GAAG,YAEP,QAAQ,GACL,CACP,CAAC;AAEF,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC"}
|
|
@@ -12,7 +12,8 @@ export const RouteGuard = () => {
|
|
|
12
12
|
const navigate = useNavigate();
|
|
13
13
|
const location = useLocation();
|
|
14
14
|
const latestPath = useLatest(location.pathname);
|
|
15
|
-
const
|
|
15
|
+
const { protectedRoutes = [] } = zudoku.options;
|
|
16
|
+
const isProtected = protectedRoutes.some((path) => matchPath({ path, end: true }, location.pathname));
|
|
16
17
|
useQuery({
|
|
17
18
|
queryKey: ["login-redirect"],
|
|
18
19
|
queryFn: async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteGuard.js","sourceRoot":"","sources":["../../../src/lib/core/RouteGuard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"RouteGuard.js","sourceRoot":"","sources":["../../../src/lib/core/RouteGuard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAEhD,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAClD,CAAC;IAEF,QAAQ,CAAC;QACP,QAAQ,EAAE,CAAC,gBAAgB,CAAC;QAC5B,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,MAAM,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;gBAClC,UAAU,EAAE,UAAU,CAAC,OAAO;aAC/B,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EACL,OAAO,MAAM,KAAK,WAAW;YAC7B,WAAW;YACX,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,IAAI,CAAC,eAAe;KACxB,CAAC,CAAC;IAEH,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,YAED,MAAC,aAAa,eACZ,KAAC,YAAY,cACX,KAAC,WAAW,oCAAgC,GAC/B,EACf,KAAC,iBAAiB,mDAEE,IACN,GACT,CACV,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,IAAI,WAAW,CAAC,+BAA+B,EAAE;YACrD,KAAK,EAAE,+BAA+B;YACtC,aAAa,EACX,8DAA8D;SACjE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAC,MAAM,KAAG,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -18,6 +18,15 @@ const builder = new SchemaBuilder({
|
|
|
18
18
|
const JSONScalar = builder.addScalarType("JSON", GraphQLJSON);
|
|
19
19
|
const JSONObjectScalar = builder.addScalarType("JSONObject", GraphQLJSONObject);
|
|
20
20
|
const JSONSchemaScalar = builder.addScalarType("JSONSchema", GraphQLJSONSchema);
|
|
21
|
+
const resolveExtensions = (obj) => {
|
|
22
|
+
const extensions = {};
|
|
23
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
24
|
+
if (key.startsWith("x-")) {
|
|
25
|
+
extensions[key] = value;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return extensions;
|
|
29
|
+
};
|
|
21
30
|
export const getAllTags = (schema) => {
|
|
22
31
|
const rootTags = schema.tags ?? [];
|
|
23
32
|
const operationTags = new Set(Object.values(schema.paths ?? {})
|
|
@@ -97,6 +106,11 @@ const TagItem = builder.objectRef("TagItem").implement({
|
|
|
97
106
|
fields: (t) => ({
|
|
98
107
|
name: t.exposeString("name"),
|
|
99
108
|
description: t.exposeString("description", { nullable: true }),
|
|
109
|
+
extensions: t.field({
|
|
110
|
+
type: JSONObjectScalar,
|
|
111
|
+
resolve: (parent) => resolveExtensions(parent),
|
|
112
|
+
nullable: true,
|
|
113
|
+
}),
|
|
100
114
|
}),
|
|
101
115
|
});
|
|
102
116
|
const EncodingItem = builder
|
|
@@ -150,6 +164,11 @@ const ParameterItem = builder
|
|
|
150
164
|
nullable: true,
|
|
151
165
|
}),
|
|
152
166
|
schema: t.expose("schema", { type: JSONSchemaScalar, nullable: true }),
|
|
167
|
+
extensions: t.field({
|
|
168
|
+
type: JSONObjectScalar,
|
|
169
|
+
resolve: (parent) => resolveExtensions(parent),
|
|
170
|
+
nullable: true,
|
|
171
|
+
}),
|
|
153
172
|
}),
|
|
154
173
|
});
|
|
155
174
|
const MediaTypeItem = builder
|
|
@@ -180,6 +199,11 @@ const ResponseItem = builder
|
|
|
180
199
|
content: t.expose("content", { type: [MediaTypeItem], nullable: true }),
|
|
181
200
|
headers: t.expose("headers", { type: JSONScalar, nullable: true }),
|
|
182
201
|
links: t.expose("links", { type: JSONScalar, nullable: true }),
|
|
202
|
+
extensions: t.field({
|
|
203
|
+
type: JSONObjectScalar,
|
|
204
|
+
resolve: (parent) => resolveExtensions(parent),
|
|
205
|
+
nullable: true,
|
|
206
|
+
}),
|
|
183
207
|
}),
|
|
184
208
|
});
|
|
185
209
|
const OperationItem = builder
|
|
@@ -261,6 +285,11 @@ const OperationItem = builder
|
|
|
261
285
|
nullable: true,
|
|
262
286
|
}),
|
|
263
287
|
deprecated: t.exposeBoolean("deprecated", { nullable: true }),
|
|
288
|
+
extensions: t.field({
|
|
289
|
+
type: JSONObjectScalar,
|
|
290
|
+
resolve: (parent) => resolveExtensions(parent),
|
|
291
|
+
nullable: true,
|
|
292
|
+
}),
|
|
264
293
|
}),
|
|
265
294
|
});
|
|
266
295
|
const Schema = builder.objectRef("Schema").implement({
|
|
@@ -319,6 +348,11 @@ const Schema = builder.objectRef("Schema").implement({
|
|
|
319
348
|
(!args.untagged || (op.tags ?? []).length === 0));
|
|
320
349
|
}),
|
|
321
350
|
}),
|
|
351
|
+
extensions: t.field({
|
|
352
|
+
type: JSONObjectScalar,
|
|
353
|
+
resolve: (root) => resolveExtensions(root),
|
|
354
|
+
nullable: true,
|
|
355
|
+
}),
|
|
322
356
|
}),
|
|
323
357
|
});
|
|
324
358
|
const SchemaSource = builder.enumType("SchemaType", {
|