zudoku 0.52.1 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/app/demo.js +2 -2
  2. package/dist/app/demo.js.map +1 -1
  3. package/dist/app/main.js +4 -4
  4. package/dist/app/standalone.js +3 -3
  5. package/dist/app/standalone.js.map +1 -1
  6. package/dist/config/validators/validate.d.ts +2 -2
  7. package/dist/config/validators/validate.js +3 -3
  8. package/dist/config/validators/validate.js.map +1 -1
  9. package/dist/flat-config.d.ts +325 -0
  10. package/dist/lib/components/Autocomplete.js +1 -1
  11. package/dist/lib/components/Autocomplete.js.map +1 -1
  12. package/dist/lib/components/Banner.js +1 -1
  13. package/dist/lib/components/Banner.js.map +1 -1
  14. package/dist/lib/components/Footer.js +1 -1
  15. package/dist/lib/components/Footer.js.map +1 -1
  16. package/dist/lib/components/Header.js +10 -10
  17. package/dist/lib/components/Header.js.map +1 -1
  18. package/dist/lib/components/Main.js +1 -1
  19. package/dist/lib/components/MobileTopNavigation.js +1 -1
  20. package/dist/lib/components/navigation/NavigationWrapper.js +1 -1
  21. package/dist/lib/core/ZudokuContext.d.ts +4 -4
  22. package/dist/lib/core/ZudokuContext.js +2 -2
  23. package/dist/lib/plugins/openapi/playground/BodyPanel.d.ts +2 -2
  24. package/dist/lib/plugins/openapi/playground/BodyPanel.js +4 -3
  25. package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
  26. package/dist/lib/plugins/openapi/playground/Headers.js +1 -1
  27. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  28. package/dist/lib/plugins/openapi/playground/PathParams.js +1 -1
  29. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  30. package/dist/lib/plugins/openapi/playground/Playground.js +8 -13
  31. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  32. package/dist/lib/plugins/openapi/playground/QueryParams.js +2 -2
  33. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  34. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.d.ts +3 -1
  35. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js +5 -2
  36. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js.map +1 -1
  37. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +6 -4
  38. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  39. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +3 -1
  40. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +2 -2
  41. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -1
  42. package/dist/lib/ui/Dialog.js +1 -1
  43. package/dist/lib/ui/Dialog.js.map +1 -1
  44. package/dist/vite/build.js +1 -1
  45. package/dist/vite/dev-server.js +1 -1
  46. package/lib/{Command-CPtGTZAL.js → Command-xsbs2uhf.js} +2 -2
  47. package/lib/{Command-CPtGTZAL.js.map → Command-xsbs2uhf.js.map} +1 -1
  48. package/lib/{Dialog-DGlrUTCS.js → Dialog-CiIdyz6a.js} +3 -3
  49. package/lib/Dialog-CiIdyz6a.js.map +1 -0
  50. package/lib/{MdxPage-D-QSUlMf.js → MdxPage-swXPJ0gf.js} +3 -3
  51. package/lib/{MdxPage-D-QSUlMf.js.map → MdxPage-swXPJ0gf.js.map} +1 -1
  52. package/lib/{OasProvider-DKB2uJU-.js → OasProvider-CDAM3TB1.js} +2 -2
  53. package/lib/{OasProvider-DKB2uJU-.js.map → OasProvider-CDAM3TB1.js.map} +1 -1
  54. package/lib/{OperationList-CccIt45w.js → OperationList-C9Hb9ql8.js} +6 -6
  55. package/lib/{OperationList-CccIt45w.js.map → OperationList-C9Hb9ql8.js.map} +1 -1
  56. package/lib/{Pagination-ClHXydm9.js → Pagination-VGlgeCmS.js} +2 -2
  57. package/lib/{Pagination-ClHXydm9.js.map → Pagination-VGlgeCmS.js.map} +1 -1
  58. package/lib/{RouteGuard-Bd-ppFbi.js → RouteGuard-CbKd7_9h.js} +2 -2
  59. package/lib/{RouteGuard-Bd-ppFbi.js.map → RouteGuard-CbKd7_9h.js.map} +1 -1
  60. package/lib/{SchemaList-DY3FBF2U.js → SchemaList-BAbh1BXO.js} +4 -4
  61. package/lib/{SchemaList-DY3FBF2U.js.map → SchemaList-BAbh1BXO.js.map} +1 -1
  62. package/lib/{SchemaView-matL2maR.js → SchemaView-C2Io712T.js} +3 -3
  63. package/lib/{SchemaView-matL2maR.js.map → SchemaView-C2Io712T.js.map} +1 -1
  64. package/lib/{SignUp-CfojO4Pb.js → SignUp-5RUdVhnq.js} +2 -2
  65. package/lib/{SignUp-CfojO4Pb.js.map → SignUp-5RUdVhnq.js.map} +1 -1
  66. package/lib/{circular-CqHpo7-e.js → circular-B42RaanD.js} +2 -2
  67. package/lib/{circular-CqHpo7-e.js.map → circular-B42RaanD.js.map} +1 -1
  68. package/lib/{createServer-ByKo3XCG.js → createServer-BKFsRuuk.js} +3 -3
  69. package/lib/{createServer-ByKo3XCG.js.map → createServer-BKFsRuuk.js.map} +1 -1
  70. package/lib/{errors-BsabiSKg.js → errors-CF2X_x5o.js} +3 -3
  71. package/lib/{errors-BsabiSKg.js.map → errors-CF2X_x5o.js.map} +1 -1
  72. package/lib/{index-CEfpz8vY.js → index-B6Re5_cx.js} +843 -832
  73. package/lib/index-B6Re5_cx.js.map +1 -0
  74. package/lib/{index-BIbCx5Fh.js → index-CLy1XyH0.js} +14 -14
  75. package/lib/{index-BIbCx5Fh.js.map → index-CLy1XyH0.js.map} +1 -1
  76. package/lib/ui/Command.js +1 -1
  77. package/lib/ui/Dialog.js +23 -23
  78. package/lib/ui/Dialog.js.map +1 -1
  79. package/lib/zudoku.auth-azureb2c.js +1 -1
  80. package/lib/zudoku.auth-clerk.js +1 -1
  81. package/lib/zudoku.auth-openid.js +1 -1
  82. package/lib/zudoku.components.js +2 -2
  83. package/lib/zudoku.plugin-api-catalog.js +2 -2
  84. package/lib/zudoku.plugin-api-keys.js +1 -1
  85. package/lib/zudoku.plugin-markdown.js +1 -1
  86. package/lib/zudoku.plugin-openapi.js +1 -1
  87. package/lib/zudoku.plugin-search-pagefind.js +3 -3
  88. package/package.json +1 -1
  89. package/src/app/demo.tsx +2 -2
  90. package/src/app/main.tsx +4 -4
  91. package/src/app/standalone.tsx +3 -3
  92. package/src/lib/components/Autocomplete.tsx +1 -1
  93. package/src/lib/components/Banner.tsx +1 -1
  94. package/src/lib/components/Footer.tsx +1 -1
  95. package/src/lib/components/Header.tsx +15 -17
  96. package/src/lib/components/Main.tsx +1 -1
  97. package/src/lib/components/MobileTopNavigation.tsx +2 -2
  98. package/src/lib/components/navigation/NavigationWrapper.tsx +1 -1
  99. package/src/lib/core/ZudokuContext.ts +5 -5
  100. package/src/lib/plugins/openapi/playground/BodyPanel.tsx +6 -5
  101. package/src/lib/plugins/openapi/playground/Headers.tsx +1 -1
  102. package/src/lib/plugins/openapi/playground/PathParams.tsx +1 -1
  103. package/src/lib/plugins/openapi/playground/Playground.tsx +73 -84
  104. package/src/lib/plugins/openapi/playground/QueryParams.tsx +3 -1
  105. package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +13 -2
  106. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +22 -17
  107. package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +6 -0
  108. package/src/lib/ui/Dialog.tsx +2 -2
  109. package/lib/Dialog-DGlrUTCS.js.map +0 -1
  110. package/lib/index-CEfpz8vY.js.map +0 -1
package/lib/ui/Command.js CHANGED
@@ -2,7 +2,7 @@ import { j as o } from "../jsx-runtime-C5mzlN2N.js";
2
2
  import { _ as t } from "../index-CrcNWbel.js";
3
3
  import { Search as i } from "lucide-react";
4
4
  import * as s from "react";
5
- import { D as p, a as l } from "../Dialog-DGlrUTCS.js";
5
+ import { D as p, a as l } from "../Dialog-CiIdyz6a.js";
6
6
  import { c as r } from "../cn-wvCW-ho6.js";
7
7
  const m = s.forwardRef(({ className: a, ...e }, d) => /* @__PURE__ */ o.jsx(
8
8
  t,
package/lib/ui/Dialog.js CHANGED
@@ -1,91 +1,91 @@
1
1
  import { j as o } from "../jsx-runtime-C5mzlN2N.js";
2
- import * as a from "@radix-ui/react-dialog";
2
+ import * as e from "@radix-ui/react-dialog";
3
3
  import * as l from "react";
4
4
  import { XIcon as c } from "lucide-react";
5
5
  import { c as i } from "../cn-wvCW-ho6.js";
6
- const j = a.Root, b = a.Trigger, m = a.Portal, h = a.Close, n = l.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ o.jsx(
7
- a.Overlay,
6
+ const j = e.Root, b = e.Trigger, m = e.Portal, h = e.Close, n = l.forwardRef(({ className: a, ...t }, s) => /* @__PURE__ */ o.jsx(
7
+ e.Overlay,
8
8
  {
9
9
  ref: s,
10
10
  className: i(
11
11
  "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
12
- e
12
+ a
13
13
  ),
14
14
  ...t
15
15
  }
16
16
  ));
17
- n.displayName = a.Overlay.displayName;
18
- const f = l.forwardRef(({ className: e, children: t, showCloseButton: s = !0, ...d }, r) => /* @__PURE__ */ o.jsxs(m, { children: [
17
+ n.displayName = e.Overlay.displayName;
18
+ const f = l.forwardRef(({ className: a, children: t, showCloseButton: s = !0, ...d }, r) => /* @__PURE__ */ o.jsxs(m, { children: [
19
19
  /* @__PURE__ */ o.jsx(n, {}),
20
20
  /* @__PURE__ */ o.jsxs(
21
- a.Content,
21
+ e.Content,
22
22
  {
23
23
  ref: r,
24
24
  className: i(
25
25
  "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
26
- e
26
+ a
27
27
  ),
28
28
  ...d,
29
29
  children: [
30
30
  t,
31
- s && /* @__PURE__ */ o.jsxs(a.Close, { className: "absolute -right-2 -top-2 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
32
- /* @__PURE__ */ o.jsx(c, { className: "h-4 w-4" }),
31
+ s && /* @__PURE__ */ o.jsxs(e.Close, { className: "absolute left-1 top-1 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
32
+ /* @__PURE__ */ o.jsx(c, { className: "h-3 w-3", strokeWidth: 2 }),
33
33
  /* @__PURE__ */ o.jsx("span", { className: "sr-only", children: "Close" })
34
34
  ] })
35
35
  ]
36
36
  }
37
37
  )
38
38
  ] }));
39
- f.displayName = a.Content.displayName;
39
+ f.displayName = e.Content.displayName;
40
40
  const p = ({
41
- className: e,
41
+ className: a,
42
42
  ...t
43
43
  }) => /* @__PURE__ */ o.jsx(
44
44
  "div",
45
45
  {
46
46
  className: i(
47
47
  "flex flex-col space-y-1.5 text-center sm:text-left",
48
- e
48
+ a
49
49
  ),
50
50
  ...t
51
51
  }
52
52
  );
53
53
  p.displayName = "DialogHeader";
54
54
  const g = ({
55
- className: e,
55
+ className: a,
56
56
  ...t
57
57
  }) => /* @__PURE__ */ o.jsx(
58
58
  "div",
59
59
  {
60
60
  className: i(
61
61
  "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
62
- e
62
+ a
63
63
  ),
64
64
  ...t
65
65
  }
66
66
  );
67
67
  g.displayName = "DialogFooter";
68
- const x = l.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ o.jsx(
69
- a.Title,
68
+ const x = l.forwardRef(({ className: a, ...t }, s) => /* @__PURE__ */ o.jsx(
69
+ e.Title,
70
70
  {
71
71
  ref: s,
72
72
  className: i(
73
73
  "text-lg font-semibold leading-none tracking-tight",
74
- e
74
+ a
75
75
  ),
76
76
  ...t
77
77
  }
78
78
  ));
79
- x.displayName = a.Title.displayName;
80
- const u = l.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ o.jsx(
81
- a.Description,
79
+ x.displayName = e.Title.displayName;
80
+ const u = l.forwardRef(({ className: a, ...t }, s) => /* @__PURE__ */ o.jsx(
81
+ e.Description,
82
82
  {
83
83
  ref: s,
84
- className: i("text-sm text-muted-foreground", e),
84
+ className: i("text-sm text-muted-foreground", a),
85
85
  ...t
86
86
  }
87
87
  ));
88
- u.displayName = a.Description.displayName;
88
+ u.displayName = e.Description.displayName;
89
89
  export {
90
90
  j as Dialog,
91
91
  h as DialogClose,
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../src/lib/ui/Dialog.tsx"],"sourcesContent":["import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\n\nimport { XIcon } from \"lucide-react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n }\n>(({ className, children, showCloseButton = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close className=\"absolute -right-2 -top-2 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"names":["Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","React","className","props","ref","jsx","cn","DialogContent","children","showCloseButton","jsxs","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"mappings":";;;;;AAMA,MAAMA,IAASC,EAAgB,MAEzBC,IAAgBD,EAAgB,SAEhCE,IAAeF,EAAgB,QAE/BG,IAAcH,EAAgB,OAE9BI,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAc,cAAcJ,EAAgB,QAAQ;AAEpD,MAAMW,IAAgBN,EAAM,WAK1B,CAAC,EAAE,WAAAC,GAAW,UAAAM,GAAU,iBAAAC,IAAkB,IAAM,GAAGN,EAAS,GAAAC,6BAC3DN,GACC,EAAA,UAAA;AAAA,EAAAO,gBAAAA,EAAA,IAACL,GAAc,EAAA;AAAA,EACfU,gBAAAA,EAAA;AAAA,IAACd,EAAgB;AAAA,IAAhB;AAAA,MACC,KAAAQ;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAJ;AAAA,MACF;AAAA,MACC,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAK;AAAA,QACAC,KACEC,gBAAAA,EAAA,KAAAd,EAAgB,OAAhB,EAAsB,WAAU,qRAC/B,UAAA;AAAA,UAACS,gBAAAA,EAAAA,IAAAM,GAAA,EAAM,WAAU,UAAU,CAAA;AAAA,UAC1BN,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAU,WAAU,UAAK,QAAA,CAAA;AAAA,QAAA,EACjC,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAEJ,GACF,CACD;AACDE,EAAc,cAAcX,EAAgB,QAAQ;AAEpD,MAAMgB,IAAe,CAAC;AAAA,EACpB,WAAAV;AAAA,EACA,GAAGC;AACL,MACEE,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFS,EAAa,cAAc;AAE3B,MAAMC,IAAe,CAAC;AAAA,EACpB,WAAAX;AAAA,EACA,GAAGC;AACL,MACEE,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFU,EAAa,cAAc;AAErB,MAAAC,IAAcb,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AACDW,EAAY,cAAclB,EAAgB,MAAM;AAE1C,MAAAmB,IAAoBd,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDY,EAAkB,cAAcnB,EAAgB,YAAY;"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../src/lib/ui/Dialog.tsx"],"sourcesContent":["import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\n\nimport { XIcon } from \"lucide-react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n }\n>(({ className, children, showCloseButton = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close className=\"absolute left-1 top-1 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <XIcon className=\"h-3 w-3\" strokeWidth={2} />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"names":["Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","React","className","props","ref","jsx","cn","DialogContent","children","showCloseButton","jsxs","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"mappings":";;;;;AAMA,MAAMA,IAASC,EAAgB,MAEzBC,IAAgBD,EAAgB,SAEhCE,IAAeF,EAAgB,QAE/BG,IAAcH,EAAgB,OAE9BI,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAc,cAAcJ,EAAgB,QAAQ;AAEpD,MAAMW,IAAgBN,EAAM,WAK1B,CAAC,EAAE,WAAAC,GAAW,UAAAM,GAAU,iBAAAC,IAAkB,IAAM,GAAGN,EAAS,GAAAC,6BAC3DN,GACC,EAAA,UAAA;AAAA,EAAAO,gBAAAA,EAAA,IAACL,GAAc,EAAA;AAAA,EACfU,gBAAAA,EAAA;AAAA,IAACd,EAAgB;AAAA,IAAhB;AAAA,MACC,KAAAQ;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAJ;AAAA,MACF;AAAA,MACC,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAK;AAAA,QACAC,KACEC,gBAAAA,EAAA,KAAAd,EAAgB,OAAhB,EAAsB,WAAU,kRAC/B,UAAA;AAAA,UAAAS,gBAAAA,EAAA,IAACM,GAAM,EAAA,WAAU,WAAU,aAAa,GAAG;AAAA,UAC1CN,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAU,WAAU,UAAK,QAAA,CAAA;AAAA,QAAA,EACjC,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAEJ,GACF,CACD;AACDE,EAAc,cAAcX,EAAgB,QAAQ;AAEpD,MAAMgB,IAAe,CAAC;AAAA,EACpB,WAAAV;AAAA,EACA,GAAGC;AACL,MACEE,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFS,EAAa,cAAc;AAE3B,MAAMC,IAAe,CAAC;AAAA,EACpB,WAAAX;AAAA,EACA,GAAGC;AACL,MACEE,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFU,EAAa,cAAc;AAErB,MAAAC,IAAcb,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AACDW,EAAY,cAAclB,EAAgB,MAAM;AAE1C,MAAAmB,IAAoBd,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDY,EAAkB,cAAcnB,EAAgB,YAAY;"}
@@ -1,7 +1,7 @@
1
1
  import { j as yo } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { C as aa } from "./ClientOnly-E7hGysn1.js";
3
3
  import { j as sa, u as To } from "./hook-Bd0yS8M0.js";
4
- import { C as ca, A as qt, a as la } from "./errors-BsabiSKg.js";
4
+ import { C as ca, A as qt, a as la } from "./errors-CF2X_x5o.js";
5
5
  /*! @azure/msal-common v15.7.0 2025-05-30 */
6
6
  const d = {
7
7
  LIBRARY_NAME: "MSAL.JS",
@@ -1,6 +1,6 @@
1
1
  import { j as l } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { LogOutIcon as g } from "lucide-react";
3
- import { S as f, a as w, b as p } from "./SignUp-CfojO4Pb.js";
3
+ import { S as f, a as w, b as p } from "./SignUp-5RUdVhnq.js";
4
4
  import { u as n } from "./hook-Bd0yS8M0.js";
5
5
  const y = ({
6
6
  clerkPubKey: d,
@@ -2,7 +2,7 @@ import { j as ne } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { g as Le } from "./invariant-DAFpPywt.js";
3
3
  import { C as Ue } from "./ClientOnly-E7hGysn1.js";
4
4
  import { j as xe, u as S } from "./hook-Bd0yS8M0.js";
5
- import { C as Ce, O as re, A as R, a as Ie } from "./errors-BsabiSKg.js";
5
+ import { C as Ce, O as re, A as R, a as Ie } from "./errors-CF2X_x5o.js";
6
6
  var O = { exports: {} }, je = O.exports, oe;
7
7
  function De() {
8
8
  return oe || (oe = 1, function(t) {
@@ -1,9 +1,9 @@
1
- import "./RouteGuard-Bd-ppFbi.js";
1
+ import "./RouteGuard-CbKd7_9h.js";
2
2
  import "./index-ClhS5TxS.js";
3
3
  import "./chunk-DQRVZFIR-DHK7_Ilc.js";
4
4
  import "./hook-Bd0yS8M0.js";
5
5
  import "./Slot-DwZlQ-vX.js";
6
- import { e as C, f as d, j as h, B as k, m as l, C as S, i as B, H as c, c as y, L as E, M as g, g as H, R as L, d as M, S as R, h as T, T as Z, Z as f, b as A, l as b, k as j, n as v, u as w } from "./index-BIbCx5Fh.js";
6
+ import { e as C, f as d, j as h, B as k, m as l, C as S, i as B, H as c, c as y, L as E, M as g, g as H, R as L, d as M, S as R, h as T, T as Z, Z as f, b as A, l as b, k as j, n as v, u as w } from "./index-CLy1XyH0.js";
7
7
  import "./ui/Button.js";
8
8
  import "./ui/Callout.js";
9
9
  import "./ClientOnly-E7hGysn1.js";
@@ -2,8 +2,8 @@ import { j as t } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { s as f } from "./index-CcV90rin.js";
3
3
  import { d as b, m as j } from "./chunk-DQRVZFIR-DHK7_Ilc.js";
4
4
  import { u as x, c as v, j as d } from "./hook-Bd0yS8M0.js";
5
- import { H as y } from "./RouteGuard-Bd-ppFbi.js";
6
- import { L as N } from "./index-BIbCx5Fh.js";
5
+ import { H as y } from "./RouteGuard-CbKd7_9h.js";
6
+ import { L as N } from "./index-CLy1XyH0.js";
7
7
  import { H as k, M as S } from "./Slot-DwZlQ-vX.js";
8
8
  const w = ({
9
9
  items: n,
@@ -9,7 +9,7 @@ import { u as z, A as T, a as M } from "./Alert-CT_ViLrJ.js";
9
9
  import * as q from "react";
10
10
  import ye, { createContext as L, useLayoutEffect as ge, useEffect as je, useRef as k, useId as H, useContext as B, useInsertionEffect as Ce, useCallback as ve, useMemo as S, Children as we, isValidElement as ke, useState as b } from "react";
11
11
  import { C as be, a as Ee } from "./Card-DPhGbYUM.js";
12
- import { D as J, e as U, a as V, c as Y, b as G, d as Z, f as W, g as K } from "./Dialog-DGlrUTCS.js";
12
+ import { D as J, e as U, a as V, c as Y, b as G, d as Z, f as W, g as K } from "./Dialog-CiIdyz6a.js";
13
13
  import { Input as Ne } from "./ui/Input.js";
14
14
  import { c as P } from "./cn-wvCW-ho6.js";
15
15
  import { u as De } from "./CodeBlock-DAKxs_Tu.js";
@@ -4,7 +4,7 @@ const m = (t) => ({
4
4
  ([e, n]) => ({
5
5
  path: e,
6
6
  lazy: async () => {
7
- const { MdxPage: o } = await import("./MdxPage-D-QSUlMf.js"), { default: a, ...r } = await n();
7
+ const { MdxPage: o } = await import("./MdxPage-swXPJ0gf.js"), { default: a, ...r } = await n();
8
8
  return {
9
9
  element: /* @__PURE__ */ s.jsx(
10
10
  o,
@@ -3,7 +3,7 @@ import "lucide-react";
3
3
  import "./chunk-DQRVZFIR-DHK7_Ilc.js";
4
4
  import "./hook-Bd0yS8M0.js";
5
5
  import "./ui/Button.js";
6
- import { E as e, U as n, F as s } from "./index-CEfpz8vY.js";
6
+ import { E as e, U as n, F as s } from "./index-B6Re5_cx.js";
7
7
  export {
8
8
  e as GetNavigationOperationsQuery,
9
9
  n as UNTAGGED_PATH,
@@ -6,9 +6,9 @@ import { useRef as C, useLayoutEffect as T, useState as E } from "react";
6
6
  import { B as R } from "./Button-BE9IVkWV.js";
7
7
  import { ShieldAlertIcon as F, AlertTriangleIcon as q, InfoIcon as b, LightbulbIcon as z, BracketsIcon as A, FileTextIcon as P } from "lucide-react";
8
8
  import { c as u } from "./cn-wvCW-ho6.js";
9
- import { C as $, a as f, b as h, c as D, d as O, e as B } from "./Command-CPtGTZAL.js";
10
- import { b as U } from "./Dialog-DGlrUTCS.js";
11
- import { S as G } from "./RouteGuard-Bd-ppFbi.js";
9
+ import { C as $, a as f, b as h, c as D, d as O, e as B } from "./Command-xsbs2uhf.js";
10
+ import { b as U } from "./Dialog-CiIdyz6a.js";
11
+ import { S as G } from "./RouteGuard-CbKd7_9h.js";
12
12
  import { a as H, L as p } from "./chunk-DQRVZFIR-DHK7_Ilc.js";
13
13
  const K = {
14
14
  note: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zudoku",
3
- "version": "0.52.1",
3
+ "version": "0.53.0",
4
4
  "type": "module",
5
5
  "homepage": "https://zudoku.dev",
6
6
  "repository": {
package/src/app/demo.tsx CHANGED
@@ -30,8 +30,8 @@ if (!root) {
30
30
  // This directory is not processed by the tailwind plugin
31
31
 
32
32
  const config = {
33
- page: {
34
- pageTitle: "",
33
+ site: {
34
+ title: "",
35
35
  banner: {
36
36
  message: <DemoAnnouncement />,
37
37
  },
package/src/app/main.tsx CHANGED
@@ -36,12 +36,12 @@ export const convertZudokuConfigToOptions = (
36
36
  basePath: config.basePath,
37
37
  canonicalUrlOrigin: config.canonicalUrlOrigin,
38
38
  protectedRoutes: config.protectedRoutes,
39
- page: {
40
- ...config.page,
39
+ site: {
40
+ ...config.site,
41
41
  showPoweredBy:
42
42
  ZuploEnv.buildConfig?.entitlements.devPortalZuploBranding ??
43
- config.page?.showPoweredBy,
44
- logo: config.page?.logo,
43
+ config.site?.showPoweredBy,
44
+ logo: config.site?.logo,
45
45
  },
46
46
  slots: config.slots,
47
47
  metadata: {
@@ -13,14 +13,14 @@ if (!root) {
13
13
  }
14
14
 
15
15
  const apiUrl = root.getAttribute("data-api-url");
16
- const pageTitle = document.getElementsByTagName("title")[0]!.innerText;
16
+ const title = document.getElementsByTagName("title")[0]!.innerText;
17
17
  const logoUrl = root.getAttribute("data-logo-url");
18
18
 
19
19
  // IMPORTANT: This component must not contain tailwind classes
20
20
  // This directory is not processed by the tailwind plugin
21
21
 
22
22
  const config = {
23
- page: {
23
+ site: {
24
24
  logo: logoUrl
25
25
  ? {
26
26
  src: {
@@ -29,7 +29,7 @@ const config = {
29
29
  },
30
30
  }
31
31
  : undefined,
32
- pageTitle,
32
+ title,
33
33
  },
34
34
  navigation: [
35
35
  {
@@ -26,7 +26,7 @@ const AutocompletePopover = ({
26
26
  options,
27
27
  onChange,
28
28
  className,
29
- placeholder = "Enter value",
29
+ placeholder = "Value",
30
30
  onEnterPress,
31
31
  ref,
32
32
  }: AutocompleteProps) => {
@@ -12,7 +12,7 @@ const COLOR_MAP = {
12
12
  } as const;
13
13
 
14
14
  export const Banner = () => {
15
- const { page } = useZudoku();
15
+ const { site: page } = useZudoku();
16
16
  const [isBannerOpen, setIsBannerOpen] = useState(true);
17
17
 
18
18
  if (!page?.banner || !isBannerOpen) {
@@ -26,7 +26,7 @@ const SocialIcon = ({
26
26
  const isExternalUrl = (href: string) => /^https?:/.test(href);
27
27
 
28
28
  export const Footer = () => {
29
- const { page } = useZudoku();
29
+ const { site: page } = useZudoku();
30
30
  const footer = page?.footer;
31
31
 
32
32
  if (!footer) return null;
@@ -60,22 +60,22 @@ export const Header = memo(function HeaderInner() {
60
60
  const auth = useAuth();
61
61
  const { isAuthenticated, profile, isAuthEnabled } = useAuth();
62
62
  const context = useZudoku();
63
- const { page, plugins, options } = context;
63
+ const { site, plugins, options } = context;
64
64
 
65
65
  const accountItems = plugins
66
66
  .filter((p) => isProfileMenuPlugin(p))
67
67
  .flatMap((p) => p.getProfileMenuItems(context))
68
68
  .sort((i) => i.weight ?? 0);
69
69
 
70
- const logoLightSrc = page?.logo
71
- ? /https?:\/\//.test(page.logo.src.light)
72
- ? page.logo.src.light
73
- : joinUrl(options.basePath, page.logo.src.light)
70
+ const logoLightSrc = site?.logo
71
+ ? /https?:\/\//.test(site.logo.src.light)
72
+ ? site.logo.src.light
73
+ : joinUrl(options.basePath, site.logo.src.light)
74
74
  : undefined;
75
- const logoDarkSrc = page?.logo
76
- ? /https?:\/\//.test(page.logo.src.dark)
77
- ? page.logo.src.dark
78
- : joinUrl(options.basePath, page.logo.src.dark)
75
+ const logoDarkSrc = site?.logo
76
+ ? /https?:\/\//.test(site.logo.src.dark)
77
+ ? site.logo.src.dark
78
+ : joinUrl(options.basePath, site.logo.src.dark)
79
79
  : undefined;
80
80
 
81
81
  const borderBottom = "inset-shadow-[0_-1px_0_0_var(--border)]";
@@ -89,27 +89,25 @@ export const Header = memo(function HeaderInner() {
89
89
  <div className="flex">
90
90
  <Link to="/">
91
91
  <div className="flex items-center gap-3.5">
92
- {page?.logo && (
92
+ {site?.logo && (
93
93
  <>
94
94
  <img
95
95
  src={logoLightSrc}
96
- alt={page.logo.alt ?? page.pageTitle}
97
- style={{ width: page.logo.width }}
96
+ alt={site.logo.alt ?? site.title}
97
+ style={{ width: site.logo.width }}
98
98
  className="max-h-(--top-header-height) dark:hidden"
99
99
  loading="lazy"
100
100
  />
101
101
  <img
102
102
  src={logoDarkSrc}
103
- alt={page.logo.alt ?? page.pageTitle}
104
- style={{ width: page.logo.width }}
103
+ alt={site.logo.alt ?? site.title}
104
+ style={{ width: site.logo.width }}
105
105
  className="max-h-(--top-header-height) hidden dark:block"
106
106
  loading="lazy"
107
107
  />
108
108
  </>
109
109
  )}
110
- <span className="font-semibold text-2xl">
111
- {page?.pageTitle}
112
- </span>
110
+ <span className="font-semibold text-2xl">{site?.title}</span>
113
111
  </div>
114
112
  </Link>
115
113
  </div>
@@ -16,7 +16,7 @@ export const Main = ({ children }: PropsWithChildren) => {
16
16
 
17
17
  return (
18
18
  <Drawer
19
- direction={options.page?.dir === "rtl" ? "right" : "left"}
19
+ direction={options.site?.dir === "rtl" ? "right" : "left"}
20
20
  open={isDrawerOpen}
21
21
  onOpenChange={(open) => setDrawerOpen(open)}
22
22
  >
@@ -26,7 +26,7 @@ export const MobileTopNavigation = () => {
26
26
 
27
27
  return (
28
28
  <Drawer
29
- direction={options.page?.dir === "rtl" ? "left" : "right"}
29
+ direction={options.site?.dir === "rtl" ? "left" : "right"}
30
30
  open={drawerOpen}
31
31
  onOpenChange={(open) => setDrawerOpen(open)}
32
32
  >
@@ -62,7 +62,7 @@ export const MobileTopNavigation = () => {
62
62
  ))}
63
63
  </ul>
64
64
  </div>
65
- {options.page?.showPoweredBy !== false && (
65
+ {options.site?.showPoweredBy !== false && (
66
66
  <PoweredByZudoku className="grow-0 justify-center gap-1" />
67
67
  )}
68
68
  </div>
@@ -37,7 +37,7 @@ export const NavigationWrapper = ({
37
37
  </nav>
38
38
 
39
39
  <div className="bg-background border-t p-2 mx-5 gap-2 items-center mt-2 drop-shadow-[0_-3px_1px_rgba(0,0,0,0.015)] hidden lg:[&:has(>_:nth-child(1):last-child)]:flex">
40
- {options.page?.showPoweredBy !== false && <PoweredByZudoku />}
40
+ {options.site?.showPoweredBy !== false && <PoweredByZudoku />}
41
41
  </div>
42
42
  </div>
43
43
  );
@@ -54,10 +54,10 @@ type Metadata = Partial<{
54
54
  publisher: string;
55
55
  }>;
56
56
 
57
- type Page = Partial<{
57
+ type Site = Partial<{
58
58
  dir?: "ltr" | "rtl";
59
59
  showPoweredBy?: boolean;
60
- pageTitle?: string;
60
+ title?: string;
61
61
  logo?: {
62
62
  src: {
63
63
  light: string;
@@ -78,7 +78,7 @@ export type ZudokuContextOptions = {
78
78
  basePath?: string;
79
79
  canonicalUrlOrigin?: string;
80
80
  metadata?: Metadata;
81
- page?: Page;
81
+ site?: Site;
82
82
  authentication?: AuthenticationPlugin;
83
83
  navigation?: Navigation;
84
84
  plugins?: ZudokuPlugin[];
@@ -102,7 +102,7 @@ export class ZudokuContext {
102
102
  public plugins: NonNullable<ZudokuContextOptions["plugins"]>;
103
103
  public navigation: Navigation;
104
104
  public meta: ZudokuContextOptions["metadata"];
105
- public page: ZudokuContextOptions["page"];
105
+ public site: ZudokuContextOptions["site"];
106
106
  public readonly authentication?: ZudokuContextOptions["authentication"];
107
107
  public readonly queryClient: QueryClient;
108
108
  public readonly options: ZudokuContextOptions;
@@ -123,7 +123,7 @@ export class ZudokuContext {
123
123
  this.navigationPlugins = this.plugins.filter(isNavigationPlugin);
124
124
  this.authentication = this.plugins.find(isAuthenticationPlugin);
125
125
  this.meta = options.metadata;
126
- this.page = options.page;
126
+ this.site = options.site;
127
127
  this.plugins.forEach((plugin) => {
128
128
  if (!isEventConsumerPlugin(plugin)) return;
129
129
 
@@ -11,19 +11,18 @@ import {
11
11
  import ExamplesDropdown from "./ExamplesDropdown.js";
12
12
  import { type PlaygroundForm } from "./Playground.js";
13
13
 
14
- export const BodyPanel = ({ examples }: { examples?: Content }) => {
14
+ export const BodyPanel = ({ content }: { content?: Content }) => {
15
15
  const { register, setValue, watch } = useFormContext<PlaygroundForm>();
16
-
16
+ const examples = (content ?? []).flatMap((e) => e.examples);
17
17
  const headers = watch("headers");
18
-
19
18
  return (
20
19
  <Collapsible defaultOpen>
21
20
  <CollapsibleHeaderTrigger>
22
21
  <FileInput size={16} />
23
22
  <CollapsibleHeader>Body</CollapsibleHeader>
24
- {examples && examples.length > 0 && (
23
+ {content && examples.length > 0 ? (
25
24
  <ExamplesDropdown
26
- examples={examples}
25
+ examples={content}
27
26
  onSelect={(example, mediaType) => {
28
27
  setValue("body", JSON.stringify(example.value, null, 2));
29
28
  setValue("headers", [
@@ -36,6 +35,8 @@ export const BodyPanel = ({ examples }: { examples?: Content }) => {
36
35
  ]);
37
36
  }}
38
37
  />
38
+ ) : (
39
+ <div />
39
40
  )}
40
41
  </CollapsibleHeaderTrigger>
41
42
  <CollapsibleContent className="flex flex-col gap-2 ">
@@ -142,7 +142,7 @@ export const Headers = ({
142
142
  <TooltipTrigger asChild>
143
143
  <ParamsGridItem
144
144
  key={field.id}
145
- className="opacity-50 cursor-not-allowed font-mono text-xs"
145
+ className="opacity-50 cursor-not-allowed font-mono text-xs min-h-10"
146
146
  >
147
147
  <LockIcon size={16} />
148
148
  <Input
@@ -47,7 +47,7 @@ export const PathParams = ({
47
47
  <Input
48
48
  {...field}
49
49
  required
50
- placeholder="Enter value"
50
+ placeholder="Value"
51
51
  className="w-full truncate border-0 p-0 m-0 shadow-none text-xs font-mono focus-visible:ring-0"
52
52
  />
53
53
  )}