zudoku 0.53.2 → 0.53.4
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/app/main.js +3 -9
- package/dist/app/main.js.map +1 -1
- package/dist/lib/components/Banner.js +1 -1
- package/dist/lib/components/Banner.js.map +1 -1
- package/dist/lib/components/CategoryHeading.js +1 -1
- package/dist/lib/components/CategoryHeading.js.map +1 -1
- package/dist/lib/components/Header.js +1 -1
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/Pagination.js +1 -1
- package/dist/lib/components/Pagination.js.map +1 -1
- package/dist/lib/components/StatusPage.js +4 -0
- package/dist/lib/components/StatusPage.js.map +1 -1
- package/dist/lib/components/navigation/NavigationWrapper.js +1 -1
- package/dist/lib/components/navigation/NavigationWrapper.js.map +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/search-inkeep/index.d.ts +5 -22
- package/dist/lib/plugins/search-inkeep/index.js +35 -29
- package/dist/lib/plugins/search-inkeep/index.js.map +1 -1
- package/dist/lib/plugins/search-inkeep/inkeep.d.ts +5 -21
- package/dist/lib/plugins/search-inkeep/inkeep.js +10 -19
- package/dist/lib/plugins/search-inkeep/inkeep.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js +1 -1
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/ResultList.d.ts +1 -1
- package/dist/lib/plugins/search-pagefind/ResultList.js +12 -5
- package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -1
- package/dist/lib/ui/Alert.d.ts +1 -1
- package/dist/vite/build.js +7 -1
- package/dist/vite/build.js.map +1 -1
- package/dist/vite/plugin-mdx.js +2 -3
- package/dist/vite/plugin-mdx.js.map +1 -1
- package/lib/{Alert-CT_ViLrJ.js → Alert-SijAp9LN.js} +3 -3
- package/lib/Alert-SijAp9LN.js.map +1 -0
- package/lib/{MdxPage-8UuEK446.js → MdxPage-BFKqQsmK.js} +19 -19
- package/lib/{MdxPage-8UuEK446.js.map → MdxPage-BFKqQsmK.js.map} +1 -1
- package/lib/{OasProvider-BsWpguVO.js → OasProvider-Bdyvd6Ic.js} +2 -2
- package/lib/{OasProvider-BsWpguVO.js.map → OasProvider-Bdyvd6Ic.js.map} +1 -1
- package/lib/{OperationList-PnZbf3b2.js → OperationList-YZ7k-Rkt.js} +172 -172
- package/lib/{OperationList-PnZbf3b2.js.map → OperationList-YZ7k-Rkt.js.map} +1 -1
- package/lib/{Pagination-DY7gCrm4.js → Pagination-EViy7EHt.js} +9 -8
- package/lib/Pagination-EViy7EHt.js.map +1 -0
- package/lib/{RouteGuard-CbKd7_9h.js → RouteGuard-CX6A77iy.js} +2 -2
- package/lib/{RouteGuard-CbKd7_9h.js.map → RouteGuard-CX6A77iy.js.map} +1 -1
- package/lib/{SchemaList-D6k4DKWH.js → SchemaList--_f8Azv0.js} +8 -8
- package/lib/{SchemaList-D6k4DKWH.js.map → SchemaList--_f8Azv0.js.map} +1 -1
- package/lib/{SchemaView-BhgJ9WB8.js → SchemaView-7XWvSrbX.js} +4 -4
- package/lib/{SchemaView-BhgJ9WB8.js.map → SchemaView-7XWvSrbX.js.map} +1 -1
- package/lib/{SignUp-CpUD6DUM.js → SignUp-CXCezG-m.js} +3 -3
- package/lib/{SignUp-CpUD6DUM.js.map → SignUp-CXCezG-m.js.map} +1 -1
- package/lib/{Slot-DwZlQ-vX.js → Slot-tFjhrd8V.js} +14 -6
- package/lib/Slot-tFjhrd8V.js.map +1 -0
- package/lib/{SyntaxHighlight-CrjhGEwT.js → SyntaxHighlight-Bp_UsIXG.js} +754 -754
- package/lib/SyntaxHighlight-Bp_UsIXG.js.map +1 -0
- package/lib/{Toc-WCmwFkX-.js → Toc-Ck0YQtmd.js} +2 -2
- package/lib/{Toc-WCmwFkX-.js.map → Toc-Ck0YQtmd.js.map} +1 -1
- package/lib/{circular-BUMjK3JF.js → circular-BtKlhs07.js} +2 -2
- package/lib/{circular-BUMjK3JF.js.map → circular-BtKlhs07.js.map} +1 -1
- package/lib/{createServer-BPz8ZCrd.js → createServer-Di2U1Dg0.js} +4 -4
- package/lib/{createServer-BPz8ZCrd.js.map → createServer-Di2U1Dg0.js.map} +1 -1
- package/lib/{errors-DY-qOx9n.js → errors-Dv_yAK6M.js} +4 -4
- package/lib/{errors-DY-qOx9n.js.map → errors-Dv_yAK6M.js.map} +1 -1
- package/lib/{hook-Bd0yS8M0.js → hook-CZjW2buS.js} +420 -413
- package/lib/hook-CZjW2buS.js.map +1 -0
- package/lib/{index-dVBKCNMa.js → index-BTqwnlI5.js} +13 -13
- package/lib/{index-dVBKCNMa.js.map → index-BTqwnlI5.js.map} +1 -1
- package/lib/index-Bm35Tkgf.js +107 -0
- package/lib/index-Bm35Tkgf.js.map +1 -0
- package/lib/{index-CcV90rin.js → index-CeQqiMIG.js} +2 -2
- package/lib/{index-CcV90rin.js.map → index-CeQqiMIG.js.map} +1 -1
- package/lib/{index-C_xVKbf9.js → index-DKCEJ4Kd.js} +1056 -1040
- package/lib/index-DKCEJ4Kd.js.map +1 -0
- package/lib/ui/Alert.js.map +1 -1
- package/lib/ui/SyntaxHighlight.js +2 -2
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-azureb2c.js +1553 -1556
- package/lib/zudoku.auth-azureb2c.js.map +1 -1
- package/lib/zudoku.auth-clerk.js +2 -2
- package/lib/zudoku.auth-openid.js +2 -2
- package/lib/zudoku.components.js +5 -5
- package/lib/zudoku.hooks.js +3 -3
- package/lib/zudoku.plugin-api-catalog.js +5 -5
- package/lib/zudoku.plugin-api-keys.js +3 -3
- package/lib/zudoku.plugin-custom-pages.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +2 -2
- package/lib/zudoku.plugin-search-inkeep.js +54 -57
- package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +107 -103
- package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
- package/package.json +13 -12
- package/src/app/main.tsx +6 -14
- package/src/lib/components/Banner.tsx +0 -1
- package/src/lib/components/CategoryHeading.tsx +4 -1
- package/src/lib/components/Header.tsx +4 -1
- package/src/lib/components/Pagination.tsx +1 -0
- package/src/lib/components/StatusPage.tsx +5 -0
- package/src/lib/components/navigation/NavigationWrapper.tsx +4 -1
- package/src/lib/plugins/markdown/MdxPage.tsx +1 -1
- package/src/lib/plugins/openapi/OperationList.tsx +3 -1
- package/src/lib/plugins/search-inkeep/index.tsx +54 -58
- package/src/lib/plugins/search-inkeep/inkeep.ts +19 -21
- package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +1 -0
- package/src/lib/plugins/search-pagefind/ResultList.tsx +13 -4
- package/src/lib/ui/Alert.tsx +1 -1
- package/lib/Alert-CT_ViLrJ.js.map +0 -1
- package/lib/Pagination-DY7gCrm4.js.map +0 -1
- package/lib/Slot-DwZlQ-vX.js.map +0 -1
- package/lib/SyntaxHighlight-CrjhGEwT.js.map +0 -1
- package/lib/hook-Bd0yS8M0.js.map +0 -1
- package/lib/index-C_xVKbf9.js.map +0 -1
- package/lib/index-ClhS5TxS.js +0 -107
- package/lib/index-ClhS5TxS.js.map +0 -1
|
@@ -81,7 +81,10 @@ export const Header = memo(function HeaderInner() {
|
|
|
81
81
|
const borderBottom = "inset-shadow-[0_-1px_0_0_var(--border)]";
|
|
82
82
|
|
|
83
83
|
return (
|
|
84
|
-
<header
|
|
84
|
+
<header
|
|
85
|
+
className="sticky lg:top-0 z-10 bg-background/80 backdrop-blur w-full"
|
|
86
|
+
data-pagefind-ignore="all"
|
|
87
|
+
>
|
|
85
88
|
<Banner />
|
|
86
89
|
<div className={cn(borderBottom, "relative")}>
|
|
87
90
|
<PageProgress />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import { ErrorPage } from "./ErrorPage.js";
|
|
3
|
+
import { NotFoundPage } from "./NotFoundPage.js";
|
|
3
4
|
|
|
4
5
|
type StatusPageProps = {
|
|
5
6
|
statusCode: number;
|
|
@@ -79,6 +80,10 @@ const getDefaultContent = (
|
|
|
79
80
|
};
|
|
80
81
|
|
|
81
82
|
export const StatusPage = ({ statusCode, message }: StatusPageProps) => {
|
|
83
|
+
if (statusCode === 404) {
|
|
84
|
+
return <NotFoundPage />;
|
|
85
|
+
}
|
|
86
|
+
|
|
82
87
|
const defaultContent = getDefaultContent(statusCode);
|
|
83
88
|
|
|
84
89
|
return (
|
|
@@ -19,7 +19,10 @@ export const NavigationWrapper = ({
|
|
|
19
19
|
}, []);
|
|
20
20
|
|
|
21
21
|
return (
|
|
22
|
-
<div
|
|
22
|
+
<div
|
|
23
|
+
className="grid sticky top-(--header-height) lg:h-[calc(100vh-var(--header-height))] grid-rows-[1fr_min-content] border-r"
|
|
24
|
+
data-pagefind-ignore="all"
|
|
25
|
+
>
|
|
23
26
|
<nav
|
|
24
27
|
ref={navRef}
|
|
25
28
|
className={cn(
|
|
@@ -220,6 +220,8 @@ export const OperationList = ({
|
|
|
220
220
|
: undefined,
|
|
221
221
|
};
|
|
222
222
|
|
|
223
|
+
const helmetTitle = [schema.tag.name, title].filter(Boolean).join(" - ");
|
|
224
|
+
|
|
223
225
|
return (
|
|
224
226
|
<div
|
|
225
227
|
className="pt-(--padding-content-top)"
|
|
@@ -227,7 +229,7 @@ export const OperationList = ({
|
|
|
227
229
|
data-pagefind-meta="section:openapi"
|
|
228
230
|
>
|
|
229
231
|
<Helmet>
|
|
230
|
-
<title>{
|
|
232
|
+
{helmetTitle && <title>{helmetTitle}</title>}
|
|
231
233
|
{metaDescription && (
|
|
232
234
|
<meta name="description" content={metaDescription} />
|
|
233
235
|
)}
|
|
@@ -1,102 +1,98 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
|
+
InkeepBaseSettings,
|
|
3
|
+
InkeepComponentInstance,
|
|
4
|
+
InkeepJS,
|
|
5
|
+
InkeepSettings,
|
|
6
|
+
} from "@inkeep/cxkit-types";
|
|
7
|
+
import { useEffect, useMemo, useState } from "react";
|
|
2
8
|
import { ClientOnly } from "../../components/ClientOnly.js";
|
|
3
9
|
import type { ZudokuPlugin } from "../../core/plugins.js";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
organizationDisplayName?: string;
|
|
11
|
-
primaryBrandColor: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
interface InkeepEmbedConfig {
|
|
15
|
-
componentType: string;
|
|
16
|
-
targetElement: HTMLElement;
|
|
17
|
-
properties: unknown;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
interface InkeepWidget {
|
|
21
|
-
render: (config: InkeepEmbedConfig & { isOpen: boolean }) => void;
|
|
22
|
-
}
|
|
10
|
+
import {
|
|
11
|
+
aiChatSettings,
|
|
12
|
+
baseSettings,
|
|
13
|
+
modalSettings,
|
|
14
|
+
searchSettings,
|
|
15
|
+
} from "./inkeep.js";
|
|
23
16
|
|
|
24
17
|
declare global {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
18
|
+
interface Window {
|
|
19
|
+
Inkeep: InkeepJS | undefined;
|
|
20
|
+
}
|
|
28
21
|
}
|
|
29
22
|
|
|
30
23
|
const InkeepSearch = ({
|
|
31
|
-
prefilledQuery,
|
|
32
24
|
isOpen,
|
|
33
25
|
onClose,
|
|
34
26
|
settings,
|
|
35
27
|
}: {
|
|
36
28
|
isOpen: boolean;
|
|
37
29
|
onClose: () => void;
|
|
38
|
-
|
|
39
|
-
settings: PluginInkeepBaseSettings;
|
|
30
|
+
settings: InkeepBaseSettings;
|
|
40
31
|
}) => {
|
|
41
|
-
const
|
|
42
|
-
const widgetRef = useRef<InkeepWidget | null>(null);
|
|
43
|
-
const [isInkeepAvailable, setIsInkeepAvailable] = useState(
|
|
44
|
-
typeof Inkeep !== "undefined",
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
const config: InkeepEmbedConfig = useMemo(
|
|
32
|
+
const config = useMemo<InkeepSettings>(
|
|
48
33
|
() => ({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
baseSettings: {
|
|
35
|
+
...baseSettings,
|
|
36
|
+
...settings,
|
|
37
|
+
colorMode: {
|
|
38
|
+
sync: {
|
|
39
|
+
target: "html",
|
|
40
|
+
attributes: ["class"],
|
|
41
|
+
isDarkMode: (attrs) => attrs["class"]?.includes("dark") ?? false,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
modalSettings: {
|
|
46
|
+
...modalSettings,
|
|
47
|
+
onOpenChange: (newOpen: boolean) => {
|
|
48
|
+
if (!newOpen) onClose();
|
|
58
49
|
},
|
|
59
|
-
aiChatSettings,
|
|
60
50
|
},
|
|
51
|
+
searchSettings,
|
|
52
|
+
aiChatSettings,
|
|
61
53
|
}),
|
|
62
|
-
[
|
|
54
|
+
[onClose, settings],
|
|
55
|
+
);
|
|
56
|
+
const [searchInstance, setSearchInstance] = useState<
|
|
57
|
+
InkeepComponentInstance | undefined
|
|
58
|
+
>(
|
|
59
|
+
typeof window !== "undefined" && window.Inkeep?.ModalSearchAndChat
|
|
60
|
+
? window.Inkeep.ModalSearchAndChat(config)!
|
|
61
|
+
: undefined,
|
|
63
62
|
);
|
|
64
63
|
|
|
65
64
|
useEffect(() => {
|
|
66
|
-
if (
|
|
65
|
+
if (searchInstance) return;
|
|
67
66
|
|
|
68
67
|
const checkInkeep = setInterval(() => {
|
|
69
|
-
if (typeof
|
|
70
|
-
|
|
68
|
+
if (typeof window !== "undefined" && window.Inkeep?.ModalSearchAndChat) {
|
|
69
|
+
const inkeep = window.Inkeep.ModalSearchAndChat(config)!;
|
|
70
|
+
setSearchInstance(inkeep);
|
|
71
71
|
clearInterval(checkInkeep);
|
|
72
72
|
}
|
|
73
73
|
}, 100);
|
|
74
74
|
|
|
75
75
|
return () => clearInterval(checkInkeep);
|
|
76
|
-
}, [
|
|
76
|
+
}, [config, searchInstance]);
|
|
77
77
|
|
|
78
78
|
useEffect(() => {
|
|
79
|
-
if (!
|
|
80
|
-
|
|
81
|
-
widgetRef.current = Inkeep().embed(config);
|
|
82
|
-
}, [config, isInkeepAvailable]);
|
|
79
|
+
if (!searchInstance) return;
|
|
83
80
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}, [config, isOpen]);
|
|
81
|
+
searchInstance.update({ modalSettings: { isOpen } });
|
|
82
|
+
}, [isOpen, searchInstance]);
|
|
87
83
|
|
|
88
|
-
return
|
|
84
|
+
return null;
|
|
89
85
|
};
|
|
90
86
|
|
|
91
87
|
export const inkeepSearchPlugin = (
|
|
92
|
-
settings:
|
|
88
|
+
settings: InkeepBaseSettings,
|
|
93
89
|
): ZudokuPlugin => {
|
|
94
90
|
return {
|
|
95
91
|
getHead: () => {
|
|
96
92
|
return (
|
|
97
93
|
<script
|
|
98
94
|
type="module"
|
|
99
|
-
src="https://
|
|
95
|
+
src="https://cdn.jsdelivr.net/npm/@inkeep/cxkit-js@0.5.90/+esm"
|
|
100
96
|
defer
|
|
101
97
|
/>
|
|
102
98
|
);
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
variant: "no-shadow",
|
|
8
|
-
},
|
|
9
|
-
},
|
|
10
|
-
SearchBarTrigger: {
|
|
11
|
-
defaultProps: {
|
|
12
|
-
size: "expand",
|
|
13
|
-
variant: "subtle", // Choose from 'emphasized' or 'subtle'
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
} as const;
|
|
1
|
+
import type {
|
|
2
|
+
InkeepAIChatSettings,
|
|
3
|
+
InkeepBaseSettings,
|
|
4
|
+
InkeepModalSettings,
|
|
5
|
+
InkeepSearchSettings,
|
|
6
|
+
} from "@inkeep/cxkit-types";
|
|
19
7
|
|
|
20
|
-
const
|
|
8
|
+
const baseSettings: InkeepBaseSettings = {
|
|
9
|
+
primaryBrandColor: "#26D6FF",
|
|
10
|
+
};
|
|
21
11
|
|
|
22
|
-
const
|
|
12
|
+
const modalSettings: InkeepModalSettings = {
|
|
13
|
+
shortcutKey: "k",
|
|
14
|
+
};
|
|
23
15
|
|
|
24
|
-
const
|
|
16
|
+
const searchSettings: InkeepSearchSettings = {
|
|
17
|
+
placeholder: "Search...",
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const aiChatSettings: InkeepAIChatSettings = {
|
|
21
|
+
aiAssistantName: "Assistant",
|
|
22
|
+
};
|
|
25
23
|
|
|
26
24
|
export { aiChatSettings, baseSettings, modalSettings, searchSettings };
|
|
@@ -2,6 +2,7 @@ import { BracketsIcon, FileTextIcon } from "lucide-react";
|
|
|
2
2
|
import { useLayoutEffect, useRef } from "react";
|
|
3
3
|
import { Link, useNavigate } from "react-router";
|
|
4
4
|
import { CommandGroup, CommandItem, CommandList } from "zudoku/ui/Command.js";
|
|
5
|
+
import { joinUrl } from "../../util/joinUrl.js";
|
|
5
6
|
import {
|
|
6
7
|
type PagefindSearchFragment,
|
|
7
8
|
type PagefindSubResult,
|
|
@@ -22,6 +23,7 @@ const sortSubResults = (a: PagefindSubResult, b: PagefindSubResult) => {
|
|
|
22
23
|
const hoverClassname = `cursor-pointer border border-transparent data-[selected=true]:border-border`;
|
|
23
24
|
|
|
24
25
|
export const ResultList = ({
|
|
26
|
+
basePath,
|
|
25
27
|
searchResults,
|
|
26
28
|
searchTerm,
|
|
27
29
|
onClose,
|
|
@@ -42,6 +44,13 @@ export const ResultList = ({
|
|
|
42
44
|
});
|
|
43
45
|
}, [searchTerm]);
|
|
44
46
|
|
|
47
|
+
const stripBasePath = (url: string) => {
|
|
48
|
+
if (basePath && url.startsWith(basePath)) {
|
|
49
|
+
return joinUrl(url.slice(basePath.length));
|
|
50
|
+
}
|
|
51
|
+
return url;
|
|
52
|
+
};
|
|
53
|
+
|
|
45
54
|
return (
|
|
46
55
|
<CommandList className="max-h-[450px]" ref={commandListRef}>
|
|
47
56
|
{searchTerm && searchResults.length > 0 && (
|
|
@@ -60,11 +69,11 @@ export const ResultList = ({
|
|
|
60
69
|
value={`${result.meta.title}-${result.url}`}
|
|
61
70
|
className={hoverClassname}
|
|
62
71
|
onSelect={() => {
|
|
63
|
-
void navigate(result.url);
|
|
72
|
+
void navigate(stripBasePath(result.url));
|
|
64
73
|
onClose();
|
|
65
74
|
}}
|
|
66
75
|
>
|
|
67
|
-
<Link to={result.url}>
|
|
76
|
+
<Link to={stripBasePath(result.url)}>
|
|
68
77
|
{result.meta.section === "openapi" ? (
|
|
69
78
|
<BracketsIcon />
|
|
70
79
|
) : (
|
|
@@ -83,11 +92,11 @@ export const ResultList = ({
|
|
|
83
92
|
value={`sub-${result.meta.title}-${subResult.url}`}
|
|
84
93
|
className={hoverClassname}
|
|
85
94
|
onSelect={() => {
|
|
86
|
-
void navigate(subResult.url);
|
|
95
|
+
void navigate(stripBasePath(subResult.url));
|
|
87
96
|
onClose();
|
|
88
97
|
}}
|
|
89
98
|
>
|
|
90
|
-
<Link to={subResult.url} onClick={onClose}>
|
|
99
|
+
<Link to={stripBasePath(subResult.url)} onClick={onClose}>
|
|
91
100
|
<div className="flex flex-col items-start gap-2 ms-2.5 ps-5 border-l border-muted-foreground/50">
|
|
92
101
|
<span className="font-bold">{subResult.title}</span>
|
|
93
102
|
<span
|
package/src/lib/ui/Alert.tsx
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Alert-CT_ViLrJ.js","sources":["../../../node_modules/.pnpm/@tanstack+query-core@5.74.3/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../node_modules/.pnpm/@tanstack+react-query@5.74.3_react@19.1.0/node_modules/@tanstack/react-query/build/modern/useMutation.js","../src/lib/ui/Alert.tsx"],"sourcesContent":["// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const context = this.#currentResult.context;\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(action.data, variables, context);\n this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(action.error, variables, context);\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport { MutationObserver, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { noop, shouldThrowError } from \"./utils.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n"],"names":["MutationObserver","Subscribable","#client","#currentResult","#currentMutation","#mutateOptions","client","options","#updateResult","prevOptions","shallowEqualObjects","hashKey","action","#notify","variables","state","getDefaultState","notifyManager","context","listener","useMutation","queryClient","useQueryClient","observer","React","result","onStoreChange","mutate","mutateOptions","noop","shouldThrowError","alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination-DY7gCrm4.js","sources":["../src/lib/components/Pagination.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport { Link } from \"react-router\";\nimport { cn } from \"../util/cn.js\";\nimport { Button } from \"./index.js\";\n\nexport const Pagination = ({\n prev,\n next,\n className,\n}: {\n prev: { to: string; label: string } | undefined;\n next: { to: string; label: string } | undefined;\n className?: string;\n}) => {\n const linkClass =\n \"group transition-all p-5 space-x-1 rtl:space-x-reverse transition-all hover:text-foreground\";\n\n return (\n <div\n className={cn(\n \"flex -mx-4 text-muted-foreground font-semibold\",\n prev ? \"justify-between\" : \"justify-end\",\n className,\n )}\n >\n {prev && (\n <Button variant=\"ghost\" asChild>\n <Link to={prev.to} relative=\"path\" className={linkClass}>\n <ArrowLeftIcon size={14} strokeWidth={2.5} />\n <span className=\"text-lg truncate\">{prev.label}</span>\n </Link>\n </Button>\n )}\n {next && (\n <Button variant=\"ghost\" asChild>\n <Link to={next.to} relative=\"path\" className={linkClass}>\n <span className=\"text-lg truncate\">{next.label}</span>\n <ArrowRightIcon size={14} strokeWidth={2.5} />\n </Link>\n </Button>\n )}\n </div>\n );\n};\n"],"names":["Pagination","prev","next","className","linkClass","jsxs","cn","jsx","Button","Link","ArrowLeftIcon","ArrowRightIcon"],"mappings":";;;;;AAKO,MAAMA,IAAa,CAAC;AAAA,EACzB,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AACF,MAIM;AACJ,QAAMC,IACJ;AAGA,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAL,IAAO,oBAAoB;AAAA,QAC3BE;AAAA,MACF;AAAA,MAEC,UAAA;AAAA,QAAAF,KACEM,gBAAAA,EAAAA,IAAAC,GAAA,EAAO,SAAQ,SAAQ,SAAO,IAC7B,UAAAH,gBAAAA,EAAAA,KAACI,GAAK,EAAA,IAAIR,EAAK,IAAI,UAAS,QAAO,WAAWG,GAC5C,UAAA;AAAA,UAAAG,gBAAAA,EAAA,IAACG,GAAc,EAAA,MAAM,IAAI,aAAa,KAAK;AAAA,UAC1CH,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAU,oBAAoB,YAAK,MAAM,CAAA;AAAA,QAAA,EAAA,CACjD,EACF,CAAA;AAAA,QAEDL,KACCK,gBAAAA,EAAAA,IAACC,GAAO,EAAA,SAAQ,SAAQ,SAAO,IAC7B,UAACH,gBAAAA,EAAAA,KAAAI,GAAA,EAAK,IAAIP,EAAK,IAAI,UAAS,QAAO,WAAWE,GAC5C,UAAA;AAAA,UAAAG,gBAAAA,EAAA,IAAC,QAAK,EAAA,WAAU,oBAAoB,UAAAL,EAAK,OAAM;AAAA,UAC9CK,gBAAAA,EAAA,IAAAI,GAAA,EAAe,MAAM,IAAI,aAAa,IAAK,CAAA;AAAA,QAAA,EAAA,CAC9C,EACF,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ;AAEJ;"}
|