zudoku 0.66.2 → 0.66.3

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.
Files changed (161) hide show
  1. package/dist/config/validators/validate.d.ts +32 -3
  2. package/dist/config/validators/validate.js +1 -1
  3. package/dist/config/validators/validate.js.map +1 -1
  4. package/dist/flat-config.d.ts +1 -1
  5. package/dist/lib/auth/issuer.js +1 -1
  6. package/dist/lib/auth/issuer.js.map +1 -1
  7. package/dist/lib/authentication/authentication.d.ts +3 -2
  8. package/dist/lib/authentication/hook.d.ts +2 -0
  9. package/dist/lib/authentication/hook.js +10 -0
  10. package/dist/lib/authentication/hook.js.map +1 -1
  11. package/dist/lib/authentication/providers/firebase.js +67 -9
  12. package/dist/lib/authentication/providers/firebase.js.map +1 -1
  13. package/dist/lib/authentication/ui/EmailVerificationUi.d.ts +4 -0
  14. package/dist/lib/authentication/ui/EmailVerificationUi.js +34 -0
  15. package/dist/lib/authentication/ui/EmailVerificationUi.js.map +1 -0
  16. package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +7 -2
  17. package/dist/lib/authentication/ui/ZudokuAuthUi.js +43 -11
  18. package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -1
  19. package/dist/lib/authentication/utils/relativeRedirectUrl.d.ts +1 -0
  20. package/dist/lib/authentication/utils/relativeRedirectUrl.js +8 -0
  21. package/dist/lib/authentication/utils/relativeRedirectUrl.js.map +1 -0
  22. package/dist/lib/components/index.d.ts +2 -0
  23. package/dist/lib/errors/ErrorMessage.d.ts +3 -0
  24. package/dist/lib/errors/ErrorMessage.js +16 -0
  25. package/dist/lib/errors/ErrorMessage.js.map +1 -0
  26. package/dist/lib/hooks/index.d.ts +2 -0
  27. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +9 -172
  28. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  29. package/dist/lib/plugins/api-keys/index.d.ts +4 -1
  30. package/dist/lib/plugins/api-keys/index.js +19 -14
  31. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  32. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.d.ts +12 -0
  33. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js +133 -0
  34. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js.map +1 -0
  35. package/dist/lib/plugins/api-keys/settings/ApiKeyList.d.ts +4 -0
  36. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js +30 -0
  37. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js.map +1 -0
  38. package/dist/lib/plugins/api-keys/settings/RevealApiKey.d.ts +6 -0
  39. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js +39 -0
  40. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js.map +1 -0
  41. package/dist/vite/config.js +7 -0
  42. package/dist/vite/config.js.map +1 -1
  43. package/dist/vite/plugin-api-keys.js +4 -1
  44. package/dist/vite/plugin-api-keys.js.map +1 -1
  45. package/dist/vite/zuplo.d.ts +13 -0
  46. package/dist/vite/zuplo.js +15 -0
  47. package/dist/vite/zuplo.js.map +1 -0
  48. package/lib/{ClaudeLogo-CGRfGTk2.js → ClaudeLogo-BZslN9XF.js} +3 -3
  49. package/lib/{ClaudeLogo-CGRfGTk2.js.map → ClaudeLogo-BZslN9XF.js.map} +1 -1
  50. package/lib/{Drawer-Ci7XwhqT.js → Drawer-BRMcpfuF.js} +6 -6
  51. package/lib/{Drawer-Ci7XwhqT.js.map → Drawer-BRMcpfuF.js.map} +1 -1
  52. package/lib/Frame-DxlznfVd.js +205 -0
  53. package/lib/Frame-DxlznfVd.js.map +1 -0
  54. package/lib/{useMutation-C6RqWmTS.js → Input-D-kqEQ5M.js} +41 -23
  55. package/lib/Input-D-kqEQ5M.js.map +1 -0
  56. package/lib/{MdxPage-Bjf72BP3.js → MdxPage-B4zZq5aR.js} +8 -8
  57. package/lib/{MdxPage-Bjf72BP3.js.map → MdxPage-B4zZq5aR.js.map} +1 -1
  58. package/lib/{Mermaid-D_VSX7_Q.js → Mermaid-BjSczjLW.js} +3 -3
  59. package/lib/{Mermaid-D_VSX7_Q.js.map → Mermaid-BjSczjLW.js.map} +1 -1
  60. package/lib/{OAuthErrorPage-1Ekji0PK.js → OAuthErrorPage-DRY2hlga.js} +20 -21
  61. package/lib/{OAuthErrorPage-1Ekji0PK.js.map → OAuthErrorPage-DRY2hlga.js.map} +1 -1
  62. package/lib/{OasProvider-BZxmTyMM.js → OasProvider-lMwTD76Y.js} +4 -4
  63. package/lib/{OasProvider-BZxmTyMM.js.map → OasProvider-lMwTD76Y.js.map} +1 -1
  64. package/lib/{OperationList-B7nPIFB8.js → OperationList-Bm76b4vl.js} +23 -24
  65. package/lib/{OperationList-B7nPIFB8.js.map → OperationList-Bm76b4vl.js.map} +1 -1
  66. package/lib/{RouteGuard-9wjejsKm.js → RouteGuard-DGc32XJV.js} +4 -4
  67. package/lib/{RouteGuard-9wjejsKm.js.map → RouteGuard-DGc32XJV.js.map} +1 -1
  68. package/lib/{SchemaList-16_obkku.js → SchemaList-DX4FPogg.js} +7 -7
  69. package/lib/{SchemaList-16_obkku.js.map → SchemaList-DX4FPogg.js.map} +1 -1
  70. package/lib/SchemaView-CjXvSRxy.js +434 -0
  71. package/lib/SchemaView-CjXvSRxy.js.map +1 -0
  72. package/lib/{Select-CkxXP5I7.js → Secret-BxGpIhDP.js} +121 -121
  73. package/lib/Secret-BxGpIhDP.js.map +1 -0
  74. package/lib/{SignUp-D54_QWFy.js → SignUp-CntxjFGS.js} +4 -4
  75. package/lib/{SignUp-D54_QWFy.js.map → SignUp-CntxjFGS.js.map} +1 -1
  76. package/lib/{SyntaxHighlight-j_HRSPCU.js → SyntaxHighlight-Dgd0AaaX.js} +2 -2
  77. package/lib/{SyntaxHighlight-j_HRSPCU.js.map → SyntaxHighlight-Dgd0AaaX.js.map} +1 -1
  78. package/lib/{Toc-z05x698-.js → Toc-L1vGGHA1.js} +2 -2
  79. package/lib/{Toc-z05x698-.js.map → Toc-L1vGGHA1.js.map} +1 -1
  80. package/lib/{ZudokuContext-BXldanA8.js → ZudokuContext-DNHMZfcP.js} +33 -33
  81. package/lib/{ZudokuContext-BXldanA8.js.map → ZudokuContext-DNHMZfcP.js.map} +1 -1
  82. package/lib/{chunk-PVWAREVJ-dLIqswPy.js → chunk-PVWAREVJ-ClM0m2aJ.js} +19 -19
  83. package/lib/{chunk-PVWAREVJ-dLIqswPy.js.map → chunk-PVWAREVJ-ClM0m2aJ.js.map} +1 -1
  84. package/lib/{circular-D5sYCIWL.js → circular-BIN_WQ0c.js} +2 -2
  85. package/lib/{circular-D5sYCIWL.js.map → circular-BIN_WQ0c.js.map} +1 -1
  86. package/lib/{createServer-BlwU7lIr.js → createServer-BEl12QFw.js} +4 -4
  87. package/lib/{createServer-BlwU7lIr.js.map → createServer-BEl12QFw.js.map} +1 -1
  88. package/lib/createVariantComponent-CQVt-H3r.js +18 -0
  89. package/lib/createVariantComponent-CQVt-H3r.js.map +1 -0
  90. package/lib/{errors-BtC4Kn2j.js → errors-CtBbD47A.js} +2 -2
  91. package/lib/{errors-BtC4Kn2j.js.map → errors-CtBbD47A.js.map} +1 -1
  92. package/lib/{firebase-Ibm_tv3G.js → firebase-CT38ugg4.js} +1588 -1342
  93. package/lib/firebase-CT38ugg4.js.map +1 -0
  94. package/lib/hook-CHw_R_xu.js +52 -0
  95. package/lib/hook-CHw_R_xu.js.map +1 -0
  96. package/lib/{ErrorAlert-BUlG32M9.js → index-CG2v-T7-.js} +5373 -4335
  97. package/lib/index-CG2v-T7-.js.map +1 -0
  98. package/lib/{index-eKVhlB94.js → index-CISwSpdT.js} +2 -2
  99. package/lib/{index-eKVhlB94.js.map → index-CISwSpdT.js.map} +1 -1
  100. package/lib/{index-Css56y3F.js → index-DXXZDuSJ.js} +4 -4
  101. package/lib/{index-Css56y3F.js.map → index-DXXZDuSJ.js.map} +1 -1
  102. package/lib/{index-CeVTNcfF.js → index-jI2Fjpy-.js} +98 -99
  103. package/lib/{index-CeVTNcfF.js.map → index-jI2Fjpy-.js.map} +1 -1
  104. package/lib/{index.esm-BoKBnRoT.js → index.esm-Bu35TNgg.js} +16 -14
  105. package/lib/index.esm-Bu35TNgg.js.map +1 -0
  106. package/lib/{mutation-BoVlx8yA.js → mutation-DMHWqmFp.js} +2 -2
  107. package/lib/{mutation-BoVlx8yA.js.map → mutation-DMHWqmFp.js.map} +1 -1
  108. package/lib/ui/Drawer.js +2 -2
  109. package/lib/ui/SyntaxHighlight.js +2 -2
  110. package/lib/zudoku.__internal.js +507 -479
  111. package/lib/zudoku.__internal.js.map +1 -1
  112. package/lib/zudoku.auth-auth0.js +1 -1
  113. package/lib/zudoku.auth-azureb2c.js +4 -4
  114. package/lib/zudoku.auth-clerk.js +2 -2
  115. package/lib/zudoku.auth-firebase.js +6 -5
  116. package/lib/zudoku.auth-firebase.js.map +1 -1
  117. package/lib/zudoku.auth-openid.js +4 -4
  118. package/lib/zudoku.auth-supabase.js +5 -5
  119. package/lib/zudoku.components.js +20 -21
  120. package/lib/zudoku.components.js.map +1 -1
  121. package/lib/zudoku.hooks.js +3 -3
  122. package/lib/zudoku.mermaid.js +3 -3
  123. package/lib/zudoku.plugin-api-catalog.js +8 -9
  124. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  125. package/lib/zudoku.plugin-api-keys.js +580 -543
  126. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  127. package/lib/zudoku.plugin-custom-pages.js +1 -1
  128. package/lib/zudoku.plugin-markdown.js +1 -1
  129. package/lib/zudoku.plugin-openapi.js +3 -3
  130. package/lib/zudoku.plugin-redirect.js +1 -1
  131. package/lib/zudoku.plugin-search-pagefind.js +3 -3
  132. package/lib/zudoku.router.js +2 -2
  133. package/package.json +4 -2
  134. package/src/lib/auth/issuer.ts +1 -1
  135. package/src/lib/authentication/authentication.ts +8 -2
  136. package/src/lib/authentication/hook.ts +16 -0
  137. package/src/lib/authentication/providers/firebase.tsx +98 -6
  138. package/src/lib/authentication/ui/EmailVerificationUi.tsx +129 -0
  139. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +170 -38
  140. package/src/lib/authentication/utils/relativeRedirectUrl.ts +12 -0
  141. package/src/lib/errors/ErrorMessage.tsx +38 -0
  142. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +36 -476
  143. package/src/lib/plugins/api-keys/index.tsx +33 -18
  144. package/src/lib/plugins/api-keys/settings/ApiKeyItem.tsx +342 -0
  145. package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +64 -0
  146. package/src/lib/plugins/api-keys/settings/RevealApiKey.tsx +124 -0
  147. package/lib/ErrorAlert-BUlG32M9.js.map +0 -1
  148. package/lib/RouterError-DfTZblpv.js +0 -42
  149. package/lib/RouterError-DfTZblpv.js.map +0 -1
  150. package/lib/SchemaView-eyvR4bRt.js +0 -597
  151. package/lib/SchemaView-eyvR4bRt.js.map +0 -1
  152. package/lib/Select-CkxXP5I7.js.map +0 -1
  153. package/lib/createVariantComponent-B9_dVBvu.js +0 -35
  154. package/lib/createVariantComponent-B9_dVBvu.js.map +0 -1
  155. package/lib/firebase-Ibm_tv3G.js.map +0 -1
  156. package/lib/hook-BNxidGQq.js +0 -40
  157. package/lib/hook-BNxidGQq.js.map +0 -1
  158. package/lib/index-DSOi7zVM.js +0 -1059
  159. package/lib/index-DSOi7zVM.js.map +0 -1
  160. package/lib/index.esm-BoKBnRoT.js.map +0 -1
  161. package/lib/useMutation-C6RqWmTS.js.map +0 -1
@@ -0,0 +1,205 @@
1
+ import { j as a } from "./jsx-runtime-BzflLqGi.js";
2
+ import { Slot as l } from "@radix-ui/react-slot";
3
+ import { c as m } from "./index-DI5SPFK9.js";
4
+ import { c as r } from "./cn-dYga0KKN.js";
5
+ import { Separator as d } from "./ui/Separator.js";
6
+ function g({ className: t, ...e }) {
7
+ return /* @__PURE__ */ a.jsx(
8
+ "div",
9
+ {
10
+ role: "list",
11
+ "data-slot": "item-group",
12
+ className: r("group/item-group flex flex-col", t),
13
+ ...e
14
+ }
15
+ );
16
+ }
17
+ function v({
18
+ className: t,
19
+ ...e
20
+ }) {
21
+ return /* @__PURE__ */ a.jsx(
22
+ d,
23
+ {
24
+ "data-slot": "item-separator",
25
+ orientation: "horizontal",
26
+ className: r("my-0", t),
27
+ ...e
28
+ }
29
+ );
30
+ }
31
+ const f = m(
32
+ "group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
33
+ {
34
+ variants: {
35
+ variant: {
36
+ default: "bg-transparent",
37
+ outline: "border-border",
38
+ muted: "bg-muted/50"
39
+ },
40
+ size: {
41
+ default: "p-4 gap-4 ",
42
+ sm: "py-3 px-4 gap-2.5"
43
+ }
44
+ },
45
+ defaultVariants: {
46
+ variant: "default",
47
+ size: "default"
48
+ }
49
+ }
50
+ );
51
+ function j({
52
+ className: t,
53
+ variant: e = "default",
54
+ size: o = "default",
55
+ asChild: s = !1,
56
+ ...n
57
+ }) {
58
+ const i = s ? l : "div";
59
+ return /* @__PURE__ */ a.jsx(
60
+ i,
61
+ {
62
+ "data-slot": "item",
63
+ "data-variant": e,
64
+ "data-size": o,
65
+ className: r(f({ variant: e, size: o, className: t })),
66
+ ...n
67
+ }
68
+ );
69
+ }
70
+ function N({ className: t, ...e }) {
71
+ return /* @__PURE__ */ a.jsx(
72
+ "div",
73
+ {
74
+ "data-slot": "item-content",
75
+ className: r(
76
+ "flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none",
77
+ t
78
+ ),
79
+ ...e
80
+ }
81
+ );
82
+ }
83
+ function h({ className: t, ...e }) {
84
+ return /* @__PURE__ */ a.jsx(
85
+ "div",
86
+ {
87
+ "data-slot": "item-title",
88
+ className: r(
89
+ "flex w-fit items-center gap-2 text-sm leading-snug font-medium",
90
+ t
91
+ ),
92
+ ...e
93
+ }
94
+ );
95
+ }
96
+ function F({ className: t, ...e }) {
97
+ return /* @__PURE__ */ a.jsx(
98
+ "p",
99
+ {
100
+ "data-slot": "item-description",
101
+ className: r(
102
+ "text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance",
103
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
104
+ t
105
+ ),
106
+ ...e
107
+ }
108
+ );
109
+ }
110
+ function I({ className: t, ...e }) {
111
+ return /* @__PURE__ */ a.jsx(
112
+ "div",
113
+ {
114
+ "data-slot": "item-actions",
115
+ className: r("flex items-center gap-2", t),
116
+ ...e
117
+ }
118
+ );
119
+ }
120
+ function w({ className: t, ...e }) {
121
+ return /* @__PURE__ */ a.jsx(
122
+ "div",
123
+ {
124
+ "data-slot": "frame",
125
+ className: r(
126
+ "relative flex flex-col rounded-2xl bg-muted p-1",
127
+ t
128
+ ),
129
+ ...e
130
+ }
131
+ );
132
+ }
133
+ function k({ className: t, ...e }) {
134
+ return /* @__PURE__ */ a.jsx(
135
+ "div",
136
+ {
137
+ "data-slot": "frame-panel",
138
+ className: r(
139
+ "relative bg-clip-padding rounded-xl border bg-card p-5 shadow-xs",
140
+ "before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]",
141
+ t
142
+ ),
143
+ ...e
144
+ }
145
+ );
146
+ }
147
+ function y({ className: t, ...e }) {
148
+ return /* @__PURE__ */ a.jsx(
149
+ "header",
150
+ {
151
+ "data-slot": "frame-panel-header",
152
+ className: r("flex flex-col p-4", t),
153
+ ...e
154
+ }
155
+ );
156
+ }
157
+ function _({ className: t, ...e }) {
158
+ return /* @__PURE__ */ a.jsx(
159
+ "div",
160
+ {
161
+ "data-slot": "frame-panel-title",
162
+ className: r("text-sm font-semibold", t),
163
+ ...e
164
+ }
165
+ );
166
+ }
167
+ function z({
168
+ className: t,
169
+ ...e
170
+ }) {
171
+ return /* @__PURE__ */ a.jsx(
172
+ "div",
173
+ {
174
+ "data-slot": "frame-panel-description",
175
+ className: r("text-sm text-muted-foreground", t),
176
+ ...e
177
+ }
178
+ );
179
+ }
180
+ function S({ className: t, ...e }) {
181
+ return /* @__PURE__ */ a.jsx(
182
+ "footer",
183
+ {
184
+ "data-slot": "frame-panel-footer",
185
+ className: r("flex flex-col gap-1 px-5 py-4", t),
186
+ ...e
187
+ }
188
+ );
189
+ }
190
+ export {
191
+ w as F,
192
+ j as I,
193
+ N as a,
194
+ h as b,
195
+ I as c,
196
+ k as d,
197
+ v as e,
198
+ g as f,
199
+ y as g,
200
+ z as h,
201
+ S as i,
202
+ _ as j,
203
+ F as k
204
+ };
205
+ //# sourceMappingURL=Frame-DxlznfVd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame-DxlznfVd.js","sources":["../src/lib/ui/Item.tsx","../src/lib/ui/Frame.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { Separator } from \"./Separator.js\";\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\"group/item-group flex flex-col\", className)}\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50\",\n },\n size: {\n default: \"p-4 gap-4 \",\n sm: \"py-3 px-4 gap-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none group-has-[[data-slot=item-description]]/item:translate-y-0.5\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n","import type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nfunction Frame({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame\"\n className={cn(\n \"relative flex flex-col rounded-2xl bg-muted p-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FramePanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame-panel\"\n className={cn(\n \"relative bg-clip-padding rounded-xl border bg-card p-5 shadow-xs\",\n \"before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FrameHeader({ className, ...props }: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"frame-panel-header\"\n className={cn(\"flex flex-col p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction FrameTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame-panel-title\"\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction FrameDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"frame-panel-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction FrameFooter({ className, ...props }: React.ComponentProps<\"footer\">) {\n return (\n <footer\n data-slot=\"frame-panel-footer\"\n className={cn(\"flex flex-col gap-1 px-5 py-4\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Frame,\n FramePanel,\n FrameHeader,\n FrameTitle,\n FrameDescription,\n FrameFooter,\n};\n"],"names":["ItemGroup","className","props","jsx","cn","ItemSeparator","Separator","itemVariants","cva","Item","variant","size","asChild","Comp","Slot","ItemContent","ItemTitle","ItemDescription","ItemActions","Frame","FramePanel","FrameHeader","FrameTitle","FrameDescription","FrameFooter"],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- import * as o from "react";
2
- import { g as l } from "./mutation-BoVlx8yA.js";
3
- import { S as p, s as d, h, n as a, f as b, g as m, i as f } from "./ZudokuContext-BXldanA8.js";
4
- var v = class extends p {
1
+ import * as r from "react";
2
+ import { g as c } from "./mutation-DMHWqmFp.js";
3
+ import { S as d, s as p, h as a, n as u, g as b, i as m, k as f } from "./ZudokuContext-DNHMZfcP.js";
4
+ import { j as v } from "./jsx-runtime-BzflLqGi.js";
5
+ import { c as g } from "./cn-dYga0KKN.js";
6
+ var y = class extends d {
5
7
  #e;
6
8
  #i = void 0;
7
9
  #t;
@@ -14,11 +16,11 @@ var v = class extends p {
14
16
  }
15
17
  setOptions(t) {
16
18
  const s = this.options;
17
- this.options = this.#e.defaultMutationOptions(t), d(this.options, s) || this.#e.getMutationCache().notify({
19
+ this.options = this.#e.defaultMutationOptions(t), p(this.options, s) || this.#e.getMutationCache().notify({
18
20
  type: "observerOptionsUpdated",
19
21
  mutation: this.#t,
20
22
  observer: this
21
- }), s?.mutationKey && this.options.mutationKey && h(s.mutationKey) !== h(this.options.mutationKey) ? this.reset() : this.#t?.state.status === "pending" && this.#t.setOptions(this.options);
23
+ }), s?.mutationKey && this.options.mutationKey && a(s.mutationKey) !== a(this.options.mutationKey) ? this.reset() : this.#t?.state.status === "pending" && this.#t.setOptions(this.options);
22
24
  }
23
25
  onUnsubscribe() {
24
26
  this.hasListeners() || this.#t?.removeObserver(this);
@@ -36,7 +38,7 @@ var v = class extends p {
36
38
  return this.#s = s, this.#t?.removeObserver(this), this.#t = this.#e.getMutationCache().build(this.#e, this.options), this.#t.addObserver(this), this.#t.execute(t);
37
39
  }
38
40
  #r() {
39
- const t = this.#t?.state ?? l();
41
+ const t = this.#t?.state ?? c();
40
42
  this.#i = {
41
43
  ...t,
42
44
  isPending: t.status === "pending",
@@ -48,7 +50,7 @@ var v = class extends p {
48
50
  };
49
51
  }
50
52
  #o(t) {
51
- a.batch(() => {
53
+ u.batch(() => {
52
54
  if (this.#s && this.hasListeners()) {
53
55
  const s = this.#i.variables, i = this.#i.context;
54
56
  t?.type === "success" ? (this.#s.onSuccess?.(t.data, s, i), this.#s.onSettled?.(t.data, null, s, i)) : t?.type === "error" && (this.#s.onError?.(t.error, s, i), this.#s.onSettled?.(
@@ -64,34 +66,50 @@ var v = class extends p {
64
66
  });
65
67
  }
66
68
  };
67
- function g(t, s) {
68
- const i = b(s), [e] = o.useState(
69
- () => new v(
69
+ function C(t, s) {
70
+ const i = b(s), [e] = r.useState(
71
+ () => new y(
70
72
  i,
71
73
  t
72
74
  )
73
75
  );
74
- o.useEffect(() => {
76
+ r.useEffect(() => {
75
77
  e.setOptions(t);
76
78
  }, [e, t]);
77
- const r = o.useSyncExternalStore(
78
- o.useCallback(
79
- (n) => e.subscribe(a.batchCalls(n)),
79
+ const o = r.useSyncExternalStore(
80
+ r.useCallback(
81
+ (n) => e.subscribe(u.batchCalls(n)),
80
82
  [e]
81
83
  ),
82
84
  () => e.getCurrentResult(),
83
85
  () => e.getCurrentResult()
84
- ), u = o.useCallback(
85
- (n, c) => {
86
- e.mutate(n, c).catch(m);
86
+ ), h = r.useCallback(
87
+ (n, l) => {
88
+ e.mutate(n, l).catch(m);
87
89
  },
88
90
  [e]
89
91
  );
90
- if (r.error && f(e.options.throwOnError, [r.error]))
91
- throw r.error;
92
- return { ...r, mutate: u, mutateAsync: r.mutate };
92
+ if (o.error && f(e.options.throwOnError, [o.error]))
93
+ throw o.error;
94
+ return { ...o, mutate: h, mutateAsync: o.mutate };
93
95
  }
96
+ const x = r.forwardRef(
97
+ ({ className: t, type: s, ...i }, e) => /* @__PURE__ */ v.jsx(
98
+ "input",
99
+ {
100
+ type: s,
101
+ className: g(
102
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
103
+ t
104
+ ),
105
+ ref: e,
106
+ ...i
107
+ }
108
+ )
109
+ );
110
+ x.displayName = "Input";
94
111
  export {
95
- g as u
112
+ x as I,
113
+ C as u
96
114
  };
97
- //# sourceMappingURL=useMutation-C6RqWmTS.js.map
115
+ //# sourceMappingURL=Input-D-kqEQ5M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-D-kqEQ5M.js","sources":["../../../node_modules/.pnpm/@tanstack+query-core@5.85.5/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../node_modules/.pnpm/@tanstack+react-query@5.85.5_react@19.2.1/node_modules/@tanstack/react-query/build/modern/useMutation.js","../src/lib/ui/Input.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 {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.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 * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\ntype InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\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","Input","className","type","props","ref","jsx","cn"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,17 +1,17 @@
1
1
  import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
- import { s as H } from "./index-eKVhlB94.js";
2
+ import { s as H } from "./index-CISwSpdT.js";
3
3
  import { H as R } from "./index.esm-DtzT_KoE.js";
4
4
  import { CheckIcon as U, CopyIcon as _, ChevronDownIcon as $, Link2Icon as A, ExternalLinkIcon as q, EditIcon as B } from "lucide-react";
5
5
  import { useState as F, useEffect as G } from "react";
6
- import { a as V } from "./chunk-PVWAREVJ-dLIqswPy.js";
6
+ import { a as V } from "./chunk-PVWAREVJ-ClM0m2aJ.js";
7
7
  import { B as j } from "./Button-CynVW1JV.js";
8
8
  import { D as W, a as X, b as J, c as l } from "./DropdownMenu-C8SX_-S_.js";
9
9
  import { C as K } from "./CategoryHeading-DhmodDcq.js";
10
- import { T as O, H as f } from "./ErrorAlert-BUlG32M9.js";
11
- import { T as Q } from "./Toc-z05x698-.js";
12
- import { b as Y, j as Z, d as ee } from "./ZudokuContext-BXldanA8.js";
13
- import { C as se, a as oe, P as ie } from "./ClaudeLogo-CGRfGTk2.js";
14
- import { u as ne } from "./index-Css56y3F.js";
10
+ import { T as O, H as f } from "./index-CG2v-T7-.js";
11
+ import { T as Q } from "./Toc-L1vGGHA1.js";
12
+ import { b as Y, j as Z, d as ee } from "./ZudokuContext-DNHMZfcP.js";
13
+ import { C as se, a as oe, P as ie } from "./ClaudeLogo-BZslN9XF.js";
14
+ import { u as ne } from "./index-DXXZDuSJ.js";
15
15
  const ae = {
16
16
  h2: ({ children: i, id: n }) => /* @__PURE__ */ e.jsx(f, { level: 2, id: n, registerNavigationAnchor: !0, children: i }),
17
17
  h3: ({ children: i, id: n }) => /* @__PURE__ */ e.jsx(f, { level: 3, id: n, registerNavigationAnchor: !0, children: i })
@@ -207,4 +207,4 @@ const ae = {
207
207
  export {
208
208
  ve as MdxPage
209
209
  };
210
- //# sourceMappingURL=MdxPage-Bjf72BP3.js.map
210
+ //# sourceMappingURL=MdxPage-B4zZq5aR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MdxPage-Bjf72BP3.js","sources":["../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n CopyIcon,\n EditIcon,\n ExternalLinkIcon,\n Link2Icon,\n} from \"lucide-react\";\nimport { type PropsWithChildren, useEffect, useState } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Toc } from \"../../components/navigation/Toc.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport { Pagination } from \"../../components/Pagination.js\";\nimport { Typography } from \"../../components/Typography.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { ChatGPTLogo } from \"./assets/ChatGPTLogo.js\";\nimport { ClaudeLogo } from \"./assets/ClaudeLogo.js\";\nimport type { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\ndeclare global {\n interface Window {\n __getReactRefreshIgnoredExports?: (args: {\n id: string;\n }) => string[] | undefined;\n }\n}\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n basePath,\n frontmatter = {},\n defaultOptions,\n __filepath,\n tableOfContents,\n excerpt,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n basePath: string;\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const location = useLocation();\n const [isCopied, setIsCopied] = useState(false);\n\n const title = frontmatter.title;\n const description = frontmatter.description ?? excerpt;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n title ?? tableOfContents.find((item) => item.depth === 1)?.value;\n const hidePager =\n frontmatter.disable_pager ??\n frontmatter.disablePager ??\n defaultOptions?.disablePager ??\n false;\n\n const showLastModified =\n frontmatter.showLastModified ?? defaultOptions?.showLastModified ?? true;\n\n const lastModifiedDate = frontmatter.lastModifiedTime\n ? new Date(frontmatter.lastModifiedTime)\n : null;\n\n const editConfig =\n frontmatter.suggestEdit !== false &&\n (frontmatter.suggestEdit ?? defaultOptions?.suggestEdit);\n\n const editUrl = editConfig\n ? editConfig.url.replaceAll(\"{filePath}\", __filepath)\n : null;\n const editText = editConfig ? editConfig.text || \"Edit this page\" : null;\n\n const copyMarkdownConfig =\n frontmatter.copyPage !== false && defaultOptions?.copyPage !== false;\n\n const markdownUrl = joinUrl(basePath, `${location.pathname}.md`);\n\n const handleCopyMarkdown = async () => {\n const response = await fetch(markdownUrl);\n if (!response.ok) throw new Error(\"Failed to fetch markdown\");\n const markdown = await response.text();\n void navigator.clipboard.writeText(markdown);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = usePrevNext();\n\n useEffect(() => {\n if (process.env.NODE_ENV === \"development\") {\n window.__getReactRefreshIgnoredExports = ({ id }) => {\n if (!id.endsWith(__filepath)) return;\n\n return [\"frontmatter\", \"tableOfContents\"];\n };\n\n return () => {\n window.__getReactRefreshIgnoredExports = undefined;\n };\n }\n }, [__filepath]);\n\n return (\n <div\n className=\"grid grid-cols-1 xl:grid-cols-(--sidecar-grid-cols) gap-8 justify-between\"\n data-pagefind-filter=\"section:markdown\"\n data-pagefind-meta=\"section:markdown\"\n >\n <Helmet>\n <title>{pageTitle}</title>\n {description && <meta name=\"description\" content={description} />}\n </Helmet>\n <Typography className=\"max-w-full xl:w-full xl:max-w-3xl flex-1 shrink pt-(--padding-content-top)\">\n {(category || title) && (\n <header className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1\">\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </div>\n {copyMarkdownConfig && (\n <div className=\"flex items-center border rounded-md\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCopyMarkdown}\n className=\"rounded-r-none border-r gap-2 h-7\"\n >\n {isCopied ? (\n <CheckIcon size={14} className=\"text-emerald-600\" />\n ) : (\n <CopyIcon size={14} />\n )}\n <span>Copy page</span>\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n className=\"rounded-l-none\"\n >\n <ChevronDownIcon size={14} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() =>\n void navigator.clipboard.writeText(window.location.href)\n }\n >\n <Link2Icon className=\"size-4\" />\n Copy link to page\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\" asChild>\n <a\n href={markdownUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLinkIcon className=\"size-4\" />\n Open Markdown page\n </a>\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://claude.ai/new?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ClaudeLogo className=\"size-4\" />\n Open in Claude\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://chatgpt.com/?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ChatGPTLogo className=\"size-4\" />\n Open in ChatGPT\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )}\n </header>\n )}\n\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n <div className=\"h-16\" />\n {(showLastModified && lastModifiedDate) || editUrl ? (\n <div className=\"flex justify-between text-xs text-muted-foreground \">\n <div />\n <div className=\"flex items-center gap-2\">\n <div>\n {editUrl && (\n <Button asChild variant=\"ghost\" size=\"sm\">\n <a\n href={editUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1\"\n >\n <EditIcon size={12} />\n {editText}\n </a>\n </Button>\n )}\n </div>\n <div>\n {showLastModified && lastModifiedDate && (\n <div\n title={lastModifiedDate.toLocaleString(undefined, {\n dateStyle: \"full\",\n timeStyle: \"medium\",\n })}\n >\n Last modified on{\" \"}\n <time dateTime={lastModifiedDate.toISOString()}>\n {lastModifiedDate.toLocaleDateString(\"en-US\", {\n dateStyle: \"long\",\n })}\n </time>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n {!hidePager && (\n <>\n <div className=\"h-px bg-border mt-2 mb-6\" />\n <Pagination\n prev={prev ? { to: prev.id, label: prev.label ?? \"\" } : undefined}\n next={next ? { to: next.id, label: next.label ?? \"\" } : undefined}\n className=\"mb-10\"\n />\n </>\n )}\n </Typography>\n <div className=\"hidden xl:block\" data-pagefind-ignore=\"all\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["MarkdownHeadings","children","id","jsx","Heading","MdxPage","MdxComponent","basePath","frontmatter","defaultOptions","__filepath","tableOfContents","excerpt","categoryTitle","useCurrentItem","location","useLocation","isCopied","setIsCopied","useState","title","description","category","hideToc","pageTitle","item","hidePager","showLastModified","lastModifiedDate","editConfig","editUrl","editText","copyMarkdownConfig","markdownUrl","joinUrl","handleCopyMarkdown","response","markdown","tocEntries","showToc","prev","next","usePrevNext","useEffect","jsxs","Helmet","Typography","CategoryHeading","slugify","Button","CheckIcon","CopyIcon","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Link2Icon","ExternalLinkIcon","prompt","ClaudeLogo","ChatGPTLogo","useMDXComponents","EditIcon","Fragment","Pagination","Toc"],"mappings":"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"}
1
+ {"version":3,"file":"MdxPage-B4zZq5aR.js","sources":["../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n CopyIcon,\n EditIcon,\n ExternalLinkIcon,\n Link2Icon,\n} from \"lucide-react\";\nimport { type PropsWithChildren, useEffect, useState } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Toc } from \"../../components/navigation/Toc.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport { Pagination } from \"../../components/Pagination.js\";\nimport { Typography } from \"../../components/Typography.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { ChatGPTLogo } from \"./assets/ChatGPTLogo.js\";\nimport { ClaudeLogo } from \"./assets/ClaudeLogo.js\";\nimport type { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\ndeclare global {\n interface Window {\n __getReactRefreshIgnoredExports?: (args: {\n id: string;\n }) => string[] | undefined;\n }\n}\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n basePath,\n frontmatter = {},\n defaultOptions,\n __filepath,\n tableOfContents,\n excerpt,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n basePath: string;\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const location = useLocation();\n const [isCopied, setIsCopied] = useState(false);\n\n const title = frontmatter.title;\n const description = frontmatter.description ?? excerpt;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n title ?? tableOfContents.find((item) => item.depth === 1)?.value;\n const hidePager =\n frontmatter.disable_pager ??\n frontmatter.disablePager ??\n defaultOptions?.disablePager ??\n false;\n\n const showLastModified =\n frontmatter.showLastModified ?? defaultOptions?.showLastModified ?? true;\n\n const lastModifiedDate = frontmatter.lastModifiedTime\n ? new Date(frontmatter.lastModifiedTime)\n : null;\n\n const editConfig =\n frontmatter.suggestEdit !== false &&\n (frontmatter.suggestEdit ?? defaultOptions?.suggestEdit);\n\n const editUrl = editConfig\n ? editConfig.url.replaceAll(\"{filePath}\", __filepath)\n : null;\n const editText = editConfig ? editConfig.text || \"Edit this page\" : null;\n\n const copyMarkdownConfig =\n frontmatter.copyPage !== false && defaultOptions?.copyPage !== false;\n\n const markdownUrl = joinUrl(basePath, `${location.pathname}.md`);\n\n const handleCopyMarkdown = async () => {\n const response = await fetch(markdownUrl);\n if (!response.ok) throw new Error(\"Failed to fetch markdown\");\n const markdown = await response.text();\n void navigator.clipboard.writeText(markdown);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = usePrevNext();\n\n useEffect(() => {\n if (process.env.NODE_ENV === \"development\") {\n window.__getReactRefreshIgnoredExports = ({ id }) => {\n if (!id.endsWith(__filepath)) return;\n\n return [\"frontmatter\", \"tableOfContents\"];\n };\n\n return () => {\n window.__getReactRefreshIgnoredExports = undefined;\n };\n }\n }, [__filepath]);\n\n return (\n <div\n className=\"grid grid-cols-1 xl:grid-cols-(--sidecar-grid-cols) gap-8 justify-between\"\n data-pagefind-filter=\"section:markdown\"\n data-pagefind-meta=\"section:markdown\"\n >\n <Helmet>\n <title>{pageTitle}</title>\n {description && <meta name=\"description\" content={description} />}\n </Helmet>\n <Typography className=\"max-w-full xl:w-full xl:max-w-3xl flex-1 shrink pt-(--padding-content-top)\">\n {(category || title) && (\n <header className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1\">\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </div>\n {copyMarkdownConfig && (\n <div className=\"flex items-center border rounded-md\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCopyMarkdown}\n className=\"rounded-r-none border-r gap-2 h-7\"\n >\n {isCopied ? (\n <CheckIcon size={14} className=\"text-emerald-600\" />\n ) : (\n <CopyIcon size={14} />\n )}\n <span>Copy page</span>\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n className=\"rounded-l-none\"\n >\n <ChevronDownIcon size={14} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() =>\n void navigator.clipboard.writeText(window.location.href)\n }\n >\n <Link2Icon className=\"size-4\" />\n Copy link to page\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\" asChild>\n <a\n href={markdownUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLinkIcon className=\"size-4\" />\n Open Markdown page\n </a>\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://claude.ai/new?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ClaudeLogo className=\"size-4\" />\n Open in Claude\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://chatgpt.com/?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ChatGPTLogo className=\"size-4\" />\n Open in ChatGPT\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )}\n </header>\n )}\n\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n <div className=\"h-16\" />\n {(showLastModified && lastModifiedDate) || editUrl ? (\n <div className=\"flex justify-between text-xs text-muted-foreground \">\n <div />\n <div className=\"flex items-center gap-2\">\n <div>\n {editUrl && (\n <Button asChild variant=\"ghost\" size=\"sm\">\n <a\n href={editUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1\"\n >\n <EditIcon size={12} />\n {editText}\n </a>\n </Button>\n )}\n </div>\n <div>\n {showLastModified && lastModifiedDate && (\n <div\n title={lastModifiedDate.toLocaleString(undefined, {\n dateStyle: \"full\",\n timeStyle: \"medium\",\n })}\n >\n Last modified on{\" \"}\n <time dateTime={lastModifiedDate.toISOString()}>\n {lastModifiedDate.toLocaleDateString(\"en-US\", {\n dateStyle: \"long\",\n })}\n </time>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n {!hidePager && (\n <>\n <div className=\"h-px bg-border mt-2 mb-6\" />\n <Pagination\n prev={prev ? { to: prev.id, label: prev.label ?? \"\" } : undefined}\n next={next ? { to: next.id, label: next.label ?? \"\" } : undefined}\n className=\"mb-10\"\n />\n </>\n )}\n </Typography>\n <div className=\"hidden xl:block\" data-pagefind-ignore=\"all\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["MarkdownHeadings","children","id","jsx","Heading","MdxPage","MdxComponent","basePath","frontmatter","defaultOptions","__filepath","tableOfContents","excerpt","categoryTitle","useCurrentItem","location","useLocation","isCopied","setIsCopied","useState","title","description","category","hideToc","pageTitle","item","hidePager","showLastModified","lastModifiedDate","editConfig","editUrl","editText","copyMarkdownConfig","markdownUrl","joinUrl","handleCopyMarkdown","response","markdown","tocEntries","showToc","prev","next","usePrevNext","useEffect","jsxs","Helmet","Typography","CategoryHeading","slugify","Button","CheckIcon","CopyIcon","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Link2Icon","ExternalLinkIcon","prompt","ClaudeLogo","ChatGPTLogo","useMDXComponents","EditIcon","Fragment","Pagination","Toc"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { j as r } from "./jsx-runtime-BzflLqGi.js";
2
- import { k as f } from "./ZudokuContext-BXldanA8.js";
2
+ import { f } from "./ZudokuContext-DNHMZfcP.js";
3
3
  import { useId as p } from "react";
4
4
  import { c as g } from "./index-DI5SPFK9.js";
5
5
  import { c as i } from "./cn-dYga0KKN.js";
6
- import { a as v } from "./index-Css56y3F.js";
6
+ import { a as v } from "./index-DXXZDuSJ.js";
7
7
  import { S as x } from "./Spinner-CI6bRyZw.js";
8
8
  const h = g(
9
9
  "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",
@@ -99,4 +99,4 @@ export {
99
99
  y as a,
100
100
  j as b
101
101
  };
102
- //# sourceMappingURL=Mermaid-D_VSX7_Q.js.map
102
+ //# sourceMappingURL=Mermaid-BjSczjLW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Mermaid-D_VSX7_Q.js","sources":["../src/lib/ui/Alert.tsx","../src/lib/components/Mermaid.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * 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","import { useQuery } from \"@tanstack/react-query\";\nimport type { MermaidConfig } from \"mermaid\";\nimport type { ComponentProps } from \"react\";\nimport { useId } from \"react\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\nimport { useTheme } from \"../hooks/index.js\";\nimport { Spinner } from \"./Spinner.js\";\n\nexport type MermaidProps = {\n chart: string;\n config?: MermaidConfig;\n} & ComponentProps<\"div\">;\n\nlet mermaidPromise: Promise<typeof import(\"mermaid\").default> | null = null;\n\nconst loadMermaid = () => {\n if (!mermaidPromise) {\n mermaidPromise = import(\"mermaid\")\n .then((mod) => mod.default)\n .catch((error) => {\n throw new Error(\n \"Mermaid is not installed. Please install it with: npm install mermaid\",\n { cause: error },\n );\n });\n }\n return mermaidPromise;\n};\n\nexport const Mermaid = ({ chart, config, ...props }: MermaidProps) => {\n const id = useId();\n const theme = useTheme();\n\n const {\n data: svg,\n error,\n isPending,\n } = useQuery({\n queryKey: [\"mermaid\", chart, config, theme.resolvedTheme],\n queryFn: async () => {\n const mermaid = await loadMermaid();\n mermaid.initialize({\n theme: theme.resolvedTheme === \"dark\" ? \"dark\" : \"base\",\n ...config,\n });\n\n const { svg } = await mermaid.render(id, chart);\n return svg;\n },\n enabled: typeof window !== \"undefined\",\n retry: false,\n });\n\n if (error)\n return (\n <Alert className=\"flex flex-col gap-2\" variant=\"destructive\">\n <AlertTitle>Mermaid Error</AlertTitle>\n <AlertDescription className=\"overflow-auto wrap-break-word whitespace-pre-wrap font-mono text-xs\">\n {error.message}\n </AlertDescription>\n </Alert>\n );\n\n if (isPending) return <Spinner />;\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: Mermaid generates valid SVG\n return <div {...props} dangerouslySetInnerHTML={{ __html: svg }} />;\n};\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","mermaidPromise","loadMermaid","mod","error","Mermaid","chart","config","id","useId","theme","useTheme","svg","isPending","useQuery","mermaid","jsxs","Spinner"],"mappings":";;;;;;;AAIA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAqE;AACnE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAL,GAAW,GAAGE,KAAsC;AACxE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAiB;AAAA,EACxB,WAAAN;AAAA,EACA,GAAGE;AACL,GAAgC;AAC9B,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;ACjDA,IAAIK,IAAmE;AAEvE,MAAMC,IAAc,OACbD,MACHA,IAAiB,OAAO,SAAS,EAC9B,KAAK,CAACE,MAAQA,EAAI,OAAO,EACzB,MAAM,CAACC,MAAU;AAChB,QAAM,IAAI;AAAA,IACR;AAAA,IACA,EAAE,OAAOA,EAAA;AAAA,EAAM;AAEnB,CAAC,IAEEH,IAGII,IAAU,CAAC,EAAE,OAAAC,GAAO,QAAAC,GAAQ,GAAGX,QAA0B;AACpE,QAAMY,IAAKC,EAAA,GACLC,IAAQC,EAAA,GAER;AAAA,IACJ,MAAMC;AAAA,IACN,OAAAR;AAAA,IACA,WAAAS;AAAA,EAAA,IACEC,EAAS;AAAA,IACX,UAAU,CAAC,WAAWR,GAAOC,GAAQG,EAAM,aAAa;AAAA,IACxD,SAAS,YAAY;AACnB,YAAMK,IAAU,MAAMb,EAAA;AACtB,MAAAa,EAAQ,WAAW;AAAA,QACjB,OAAOL,EAAM,kBAAkB,SAAS,SAAS;AAAA,QACjD,GAAGH;AAAA,MAAA,CACJ;AAED,YAAM,EAAE,KAAAK,EAAAA,IAAQ,MAAMG,EAAQ,OAAOP,GAAIF,CAAK;AAC9C,aAAOM;AAAAA,IACT;AAAA,IACA,SAAS,OAAO,SAAW;AAAA,IAC3B,OAAO;AAAA,EAAA,CACR;AAED,SAAIR,IAEAY,gBAAAA,EAAAA,KAACvB,GAAA,EAAM,WAAU,uBAAsB,SAAQ,eAC7C,UAAA;AAAA,IAAAI,gBAAAA,EAAAA,IAACE,KAAW,UAAA,gBAAA,CAAa;AAAA,IACzBF,gBAAAA,EAAAA,IAACG,GAAA,EAAiB,WAAU,uEACzB,YAAM,QAAA,CACT;AAAA,EAAA,GACF,IAGAa,IAAkBhB,gBAAAA,MAACoB,GAAA,CAAA,CAAQ,IAGxBpB,gBAAAA,EAAAA,IAAC,SAAK,GAAGD,GAAO,yBAAyB,EAAE,QAAQgB,KAAO;AACnE;"}
1
+ {"version":3,"file":"Mermaid-BjSczjLW.js","sources":["../src/lib/ui/Alert.tsx","../src/lib/components/Mermaid.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * 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","import { useQuery } from \"@tanstack/react-query\";\nimport type { MermaidConfig } from \"mermaid\";\nimport type { ComponentProps } from \"react\";\nimport { useId } from \"react\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\nimport { useTheme } from \"../hooks/index.js\";\nimport { Spinner } from \"./Spinner.js\";\n\nexport type MermaidProps = {\n chart: string;\n config?: MermaidConfig;\n} & ComponentProps<\"div\">;\n\nlet mermaidPromise: Promise<typeof import(\"mermaid\").default> | null = null;\n\nconst loadMermaid = () => {\n if (!mermaidPromise) {\n mermaidPromise = import(\"mermaid\")\n .then((mod) => mod.default)\n .catch((error) => {\n throw new Error(\n \"Mermaid is not installed. Please install it with: npm install mermaid\",\n { cause: error },\n );\n });\n }\n return mermaidPromise;\n};\n\nexport const Mermaid = ({ chart, config, ...props }: MermaidProps) => {\n const id = useId();\n const theme = useTheme();\n\n const {\n data: svg,\n error,\n isPending,\n } = useQuery({\n queryKey: [\"mermaid\", chart, config, theme.resolvedTheme],\n queryFn: async () => {\n const mermaid = await loadMermaid();\n mermaid.initialize({\n theme: theme.resolvedTheme === \"dark\" ? \"dark\" : \"base\",\n ...config,\n });\n\n const { svg } = await mermaid.render(id, chart);\n return svg;\n },\n enabled: typeof window !== \"undefined\",\n retry: false,\n });\n\n if (error)\n return (\n <Alert className=\"flex flex-col gap-2\" variant=\"destructive\">\n <AlertTitle>Mermaid Error</AlertTitle>\n <AlertDescription className=\"overflow-auto wrap-break-word whitespace-pre-wrap font-mono text-xs\">\n {error.message}\n </AlertDescription>\n </Alert>\n );\n\n if (isPending) return <Spinner />;\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: Mermaid generates valid SVG\n return <div {...props} dangerouslySetInnerHTML={{ __html: svg }} />;\n};\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","mermaidPromise","loadMermaid","mod","error","Mermaid","chart","config","id","useId","theme","useTheme","svg","isPending","useQuery","mermaid","jsxs","Spinner"],"mappings":";;;;;;;AAIA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAqE;AACnE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAL,GAAW,GAAGE,KAAsC;AACxE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAiB;AAAA,EACxB,WAAAN;AAAA,EACA,GAAGE;AACL,GAAgC;AAC9B,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;ACjDA,IAAIK,IAAmE;AAEvE,MAAMC,IAAc,OACbD,MACHA,IAAiB,OAAO,SAAS,EAC9B,KAAK,CAACE,MAAQA,EAAI,OAAO,EACzB,MAAM,CAACC,MAAU;AAChB,QAAM,IAAI;AAAA,IACR;AAAA,IACA,EAAE,OAAOA,EAAA;AAAA,EAAM;AAEnB,CAAC,IAEEH,IAGII,IAAU,CAAC,EAAE,OAAAC,GAAO,QAAAC,GAAQ,GAAGX,QAA0B;AACpE,QAAMY,IAAKC,EAAA,GACLC,IAAQC,EAAA,GAER;AAAA,IACJ,MAAMC;AAAA,IACN,OAAAR;AAAA,IACA,WAAAS;AAAA,EAAA,IACEC,EAAS;AAAA,IACX,UAAU,CAAC,WAAWR,GAAOC,GAAQG,EAAM,aAAa;AAAA,IACxD,SAAS,YAAY;AACnB,YAAMK,IAAU,MAAMb,EAAA;AACtB,MAAAa,EAAQ,WAAW;AAAA,QACjB,OAAOL,EAAM,kBAAkB,SAAS,SAAS;AAAA,QACjD,GAAGH;AAAA,MAAA,CACJ;AAED,YAAM,EAAE,KAAAK,EAAAA,IAAQ,MAAMG,EAAQ,OAAOP,GAAIF,CAAK;AAC9C,aAAOM;AAAAA,IACT;AAAA,IACA,SAAS,OAAO,SAAW;AAAA,IAC3B,OAAO;AAAA,EAAA,CACR;AAED,SAAIR,IAEAY,gBAAAA,EAAAA,KAACvB,GAAA,EAAM,WAAU,uBAAsB,SAAQ,eAC7C,UAAA;AAAA,IAAAI,gBAAAA,EAAAA,IAACE,KAAW,UAAA,gBAAA,CAAa;AAAA,IACzBF,gBAAAA,EAAAA,IAACG,GAAA,EAAiB,WAAU,uEACzB,YAAM,QAAA,CACT;AAAA,EAAA,GACF,IAGAa,IAAkBhB,gBAAAA,MAACoB,GAAA,CAAA,CAAQ,IAGxBpB,gBAAAA,EAAAA,IAAC,SAAK,GAAGD,GAAO,yBAAyB,EAAE,QAAQgB,KAAO;AACnE;"}
@@ -1,29 +1,28 @@
1
1
  import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
- import { e as m, j as h } from "./ZudokuContext-BXldanA8.js";
3
- import { N as g, L as y } from "./chunk-PVWAREVJ-dLIqswPy.js";
4
- import { u as _ } from "./index-DSOi7zVM.js";
5
- import { O as d } from "./errors-BtC4Kn2j.js";
6
- import { HomeIcon as v } from "lucide-react";
7
- import { H as f, T as o } from "./ErrorAlert-BUlG32M9.js";
2
+ import { e as m, j as h } from "./ZudokuContext-DNHMZfcP.js";
3
+ import { N as g, L as y } from "./chunk-PVWAREVJ-ClM0m2aJ.js";
4
+ import { a as _, H as v, T as o } from "./index-CG2v-T7-.js";
5
+ import { O as d } from "./errors-CtBbD47A.js";
6
+ import { HomeIcon as f } from "lucide-react";
8
7
  import { Button as c } from "./ui/Button.js";
9
- import { u as x } from "./hook-BNxidGQq.js";
8
+ import { u as x } from "./hook-CHw_R_xu.js";
10
9
  function w(r, i, n = "/") {
11
10
  return r.startsWith(i) ? n !== "/" && r.startsWith(i + n) ? r.slice(i.length + n.length) : r.slice(i.length) : r;
12
11
  }
13
- function U({
12
+ function S({
14
13
  handleCallback: r
15
14
  }) {
16
15
  const { options: i } = _(), n = m({
17
16
  retry: !1,
18
17
  queryKey: ["oauth-callback"],
19
18
  queryFn: async () => {
20
- const a = new URL(window.location.href), t = a.searchParams.get("error"), s = a.searchParams.get("error_description") ?? void 0, p = a.searchParams.get("error_uri") ?? void 0;
21
- if (t)
19
+ const a = new URL(window.location.href), s = a.searchParams.get("error"), t = a.searchParams.get("error_description") ?? void 0, p = a.searchParams.get("error_uri") ?? void 0;
20
+ if (s)
22
21
  throw new d(
23
- `OAuth error '${t}': ${s}`,
22
+ `OAuth error '${s}': ${t}`,
24
23
  {
25
- error: t,
26
- error_description: s,
24
+ error: s,
25
+ error_description: t,
27
26
  error_uri: p
28
27
  }
29
28
  );
@@ -90,15 +89,15 @@ const l = {
90
89
  message: "An unexpected error occurred during authentication. Please try again or contact support."
91
90
  }
92
91
  };
93
- function q({ error: r }) {
92
+ function U({ error: r }) {
94
93
  const { login: i } = x();
95
94
  if (!(r instanceof d))
96
95
  throw r;
97
- const a = r.error.error, t = l[a] ?? l.unknown_error;
96
+ const a = r.error.error, s = l[a] ?? l.unknown_error;
98
97
  return /* @__PURE__ */ e.jsx("div", { className: "min-h-[400px] flex items-center justify-center p-4", children: /* @__PURE__ */ e.jsxs("div", { className: "max-w-md w-full text-center space-y-6", children: [
99
98
  /* @__PURE__ */ e.jsxs("div", { className: "space-y-4 items-center", children: [
100
- /* @__PURE__ */ e.jsx(f, { level: 2, className: "text-2xl inline-block font-bold", children: k[a] || "Authentication Error" }),
101
- /* @__PURE__ */ e.jsx(o, { className: "text-gray-600 dark:text-gray-300 leading-relaxed", children: t?.message })
99
+ /* @__PURE__ */ e.jsx(v, { level: 2, className: "text-2xl inline-block font-bold", children: k[a] || "Authentication Error" }),
100
+ /* @__PURE__ */ e.jsx(o, { className: "text-gray-600 dark:text-gray-300 leading-relaxed", children: s?.message })
102
101
  ] }),
103
102
  /* @__PURE__ */ e.jsxs("div", { className: "space-y-3 pt-4", children: [
104
103
  /* @__PURE__ */ e.jsx("div", { className: "space-y-2", children: (a === "access_denied" || a === "invalid_grant" || a === "token_expired") && /* @__PURE__ */ e.jsx(
@@ -111,7 +110,7 @@ function q({ error: r }) {
111
110
  }
112
111
  ) }),
113
112
  /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: /* @__PURE__ */ e.jsx(c, { asChild: !0, className: "flex-1", variant: "outline", children: /* @__PURE__ */ e.jsxs(y, { to: "/", children: [
114
- /* @__PURE__ */ e.jsx(v, { className: "w-4 h-4 mr-2" }),
113
+ /* @__PURE__ */ e.jsx(f, { className: "w-4 h-4 mr-2" }),
115
114
  "Go Home"
116
115
  ] }) }) })
117
116
  ] }),
@@ -144,7 +143,7 @@ const k = {
144
143
  temporarily_unavailable: "This is usually temporary. Try again in a few minutes."
145
144
  };
146
145
  export {
147
- U as C,
148
- q as O
146
+ S as C,
147
+ U as O
149
148
  };
150
- //# sourceMappingURL=OAuthErrorPage-1Ekji0PK.js.map
149
+ //# sourceMappingURL=OAuthErrorPage-DRY2hlga.js.map