fumadocs-openapi 10.2.1 → 10.2.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 (278) hide show
  1. package/dist/generate-file.d.ts +53 -49
  2. package/dist/generate-file.d.ts.map +1 -1
  3. package/dist/generate-file.js +88 -102
  4. package/dist/generate-file.js.map +1 -0
  5. package/dist/index.d.ts +6 -6
  6. package/dist/index.js +3 -1
  7. package/dist/playground/client.d.ts +88 -72
  8. package/dist/playground/client.d.ts.map +1 -1
  9. package/dist/playground/client.js +446 -296
  10. package/dist/playground/client.js.map +1 -0
  11. package/dist/playground/components/inputs.js +395 -172
  12. package/dist/playground/components/inputs.js.map +1 -0
  13. package/dist/playground/components/oauth-dialog.js +270 -174
  14. package/dist/playground/components/oauth-dialog.js.map +1 -0
  15. package/dist/playground/components/server-select.js +115 -55
  16. package/dist/playground/components/server-select.js.map +1 -0
  17. package/dist/playground/fetcher.d.ts +10 -18
  18. package/dist/playground/fetcher.d.ts.map +1 -1
  19. package/dist/playground/fetcher.js +67 -75
  20. package/dist/playground/fetcher.js.map +1 -0
  21. package/dist/playground/get-default-values.js +23 -26
  22. package/dist/playground/get-default-values.js.map +1 -0
  23. package/dist/playground/index.d.ts +23 -13
  24. package/dist/playground/index.d.ts.map +1 -1
  25. package/dist/playground/index.js +87 -91
  26. package/dist/playground/index.js.map +1 -0
  27. package/dist/playground/lazy.js +9 -2
  28. package/dist/playground/lazy.js.map +1 -0
  29. package/dist/playground/schema.d.ts +18 -55
  30. package/dist/playground/schema.d.ts.map +1 -1
  31. package/dist/playground/schema.js +117 -106
  32. package/dist/playground/schema.js.map +1 -0
  33. package/dist/playground/status-info.js +49 -37
  34. package/dist/playground/status-info.js.map +1 -0
  35. package/dist/requests/generators/csharp.js +40 -50
  36. package/dist/requests/generators/csharp.js.map +1 -0
  37. package/dist/requests/generators/curl.js +28 -27
  38. package/dist/requests/generators/curl.js.map +1 -0
  39. package/dist/requests/generators/go.js +39 -35
  40. package/dist/requests/generators/go.js.map +1 -0
  41. package/dist/requests/generators/index.js +49 -43
  42. package/dist/requests/generators/index.js.map +1 -0
  43. package/dist/requests/generators/java.js +56 -67
  44. package/dist/requests/generators/java.js.map +1 -0
  45. package/dist/requests/generators/javascript.js +38 -45
  46. package/dist/requests/generators/javascript.js.map +1 -0
  47. package/dist/requests/generators/python.js +33 -37
  48. package/dist/requests/generators/python.js.map +1 -0
  49. package/dist/requests/media/adapter.d.ts +38 -84
  50. package/dist/requests/media/adapter.d.ts.map +1 -1
  51. package/dist/requests/media/adapter.js +122 -169
  52. package/dist/requests/media/adapter.js.map +1 -0
  53. package/dist/requests/media/encode.d.ts +12 -7
  54. package/dist/requests/media/encode.d.ts.map +1 -1
  55. package/dist/requests/media/encode.js +129 -109
  56. package/dist/requests/media/encode.js.map +1 -0
  57. package/dist/requests/media/resolve-adapter.js +28 -28
  58. package/dist/requests/media/resolve-adapter.js.map +1 -0
  59. package/dist/requests/string-utils.js +28 -35
  60. package/dist/requests/string-utils.js.map +1 -0
  61. package/dist/requests/to-python-object.js +16 -28
  62. package/dist/requests/to-python-object.js.map +1 -0
  63. package/dist/requests/types.d.ts +25 -21
  64. package/dist/requests/types.d.ts.map +1 -1
  65. package/dist/scalar/client.js +57 -20
  66. package/dist/scalar/client.js.map +1 -0
  67. package/dist/scalar/index.d.ts +8 -2
  68. package/dist/scalar/index.d.ts.map +1 -1
  69. package/dist/scalar/index.js +29 -19
  70. package/dist/scalar/index.js.map +1 -0
  71. package/dist/server/create.d.ts +29 -25
  72. package/dist/server/create.d.ts.map +1 -1
  73. package/dist/server/create.js +42 -39
  74. package/dist/server/create.js.map +1 -0
  75. package/dist/server/index.d.ts +3 -3
  76. package/dist/server/index.js +4 -2
  77. package/dist/server/proxy.d.ts +28 -28
  78. package/dist/server/proxy.d.ts.map +1 -1
  79. package/dist/server/proxy.js +58 -75
  80. package/dist/server/proxy.js.map +1 -0
  81. package/dist/server/source-api.d.ts +32 -25
  82. package/dist/server/source-api.d.ts.map +1 -1
  83. package/dist/server/source-api.js +82 -69
  84. package/dist/server/source-api.js.map +1 -0
  85. package/dist/types.d.ts +41 -36
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/ui/api-page.d.ts +140 -136
  88. package/dist/ui/api-page.d.ts.map +1 -1
  89. package/dist/ui/api-page.js +134 -118
  90. package/dist/ui/api-page.js.map +1 -0
  91. package/dist/ui/client/index.d.ts +30 -26
  92. package/dist/ui/client/index.d.ts.map +1 -1
  93. package/dist/ui/client/index.js +8 -2
  94. package/dist/ui/client/index.js.map +1 -0
  95. package/dist/ui/client/storage-key.js +16 -10
  96. package/dist/ui/client/storage-key.js.map +1 -0
  97. package/dist/ui/components/accordion.js +40 -14
  98. package/dist/ui/components/accordion.js.map +1 -0
  99. package/dist/ui/components/dialog.js +51 -15
  100. package/dist/ui/components/dialog.js.map +1 -0
  101. package/dist/ui/components/input.js +18 -8
  102. package/dist/ui/components/input.js.map +1 -0
  103. package/dist/ui/components/method-label.js +38 -33
  104. package/dist/ui/components/method-label.js.map +1 -0
  105. package/dist/ui/components/select.js +66 -15
  106. package/dist/ui/components/select.js.map +1 -0
  107. package/dist/ui/contexts/api.js +96 -85
  108. package/dist/ui/contexts/api.js.map +1 -0
  109. package/dist/ui/contexts/api.lazy.js +9 -2
  110. package/dist/ui/contexts/api.lazy.js.map +1 -0
  111. package/dist/ui/index.d.ts +2 -2
  112. package/dist/ui/index.js +3 -1
  113. package/dist/ui/operation/client.js +65 -27
  114. package/dist/ui/operation/client.js.map +1 -0
  115. package/dist/ui/operation/index.js +403 -186
  116. package/dist/ui/operation/index.js.map +1 -0
  117. package/dist/ui/operation/request-tabs.d.ts +15 -16
  118. package/dist/ui/operation/request-tabs.d.ts.map +1 -1
  119. package/dist/ui/operation/request-tabs.js +151 -131
  120. package/dist/ui/operation/request-tabs.js.map +1 -0
  121. package/dist/ui/operation/response-tabs.d.ts +27 -28
  122. package/dist/ui/operation/response-tabs.d.ts.map +1 -1
  123. package/dist/ui/operation/response-tabs.js +73 -56
  124. package/dist/ui/operation/response-tabs.js.map +1 -0
  125. package/dist/ui/operation/usage-tabs/client.js +117 -88
  126. package/dist/ui/operation/usage-tabs/client.js.map +1 -0
  127. package/dist/ui/operation/usage-tabs/index.d.ts +22 -21
  128. package/dist/ui/operation/usage-tabs/index.d.ts.map +1 -1
  129. package/dist/ui/operation/usage-tabs/index.js +63 -48
  130. package/dist/ui/operation/usage-tabs/index.js.map +1 -0
  131. package/dist/ui/operation/usage-tabs/lazy.js +11 -4
  132. package/dist/ui/operation/usage-tabs/lazy.js.map +1 -0
  133. package/dist/ui/schema/client.d.ts +11 -7
  134. package/dist/ui/schema/client.d.ts.map +1 -1
  135. package/dist/ui/schema/client.js +213 -127
  136. package/dist/ui/schema/client.js.map +1 -0
  137. package/dist/ui/schema/index.d.ts +51 -50
  138. package/dist/ui/schema/index.d.ts.map +1 -1
  139. package/dist/ui/schema/index.js +225 -248
  140. package/dist/ui/schema/index.js.map +1 -0
  141. package/dist/ui/schema/lazy.js +9 -2
  142. package/dist/ui/schema/lazy.js.map +1 -0
  143. package/dist/utils/cn.js +3 -1
  144. package/dist/utils/deep-equal.js +18 -26
  145. package/dist/utils/deep-equal.js.map +1 -0
  146. package/dist/utils/get-typescript-schema.js +21 -19
  147. package/dist/utils/get-typescript-schema.js.map +1 -0
  148. package/dist/utils/id-to-title.js +13 -16
  149. package/dist/utils/id-to-title.js.map +1 -0
  150. package/dist/utils/lazy.js +13 -11
  151. package/dist/utils/lazy.js.map +1 -0
  152. package/dist/utils/merge-schema.js +130 -174
  153. package/dist/utils/merge-schema.js.map +1 -0
  154. package/dist/utils/pages/builder.d.ts +80 -76
  155. package/dist/utils/pages/builder.d.ts.map +1 -1
  156. package/dist/utils/pages/builder.js +101 -118
  157. package/dist/utils/pages/builder.js.map +1 -0
  158. package/dist/utils/pages/preset-auto.d.ts +58 -55
  159. package/dist/utils/pages/preset-auto.d.ts.map +1 -1
  160. package/dist/utils/pages/preset-auto.js +124 -137
  161. package/dist/utils/pages/preset-auto.js.map +1 -0
  162. package/dist/utils/pages/to-body.js +21 -18
  163. package/dist/utils/pages/to-body.js.map +1 -0
  164. package/dist/utils/pages/to-static-data.js +48 -40
  165. package/dist/utils/pages/to-static-data.js.map +1 -0
  166. package/dist/utils/pages/to-text.d.ts +43 -41
  167. package/dist/utils/pages/to-text.d.ts.map +1 -1
  168. package/dist/utils/pages/to-text.js +93 -126
  169. package/dist/utils/pages/to-text.js.map +1 -0
  170. package/dist/utils/process-document.d.ts +18 -19
  171. package/dist/utils/process-document.d.ts.map +1 -1
  172. package/dist/utils/process-document.js +43 -54
  173. package/dist/utils/process-document.js.map +1 -0
  174. package/dist/utils/remove-undefined.js +18 -18
  175. package/dist/utils/remove-undefined.js.map +1 -0
  176. package/dist/utils/schema-to-string.js +46 -64
  177. package/dist/utils/schema-to-string.js.map +1 -0
  178. package/dist/utils/schema.d.ts +11 -27
  179. package/dist/utils/schema.d.ts.map +1 -1
  180. package/dist/utils/schema.js +43 -44
  181. package/dist/utils/schema.js.map +1 -0
  182. package/dist/utils/url.js +35 -56
  183. package/dist/utils/url.js.map +1 -0
  184. package/dist/utils/use-query.js +39 -33
  185. package/dist/utils/use-query.js.map +1 -0
  186. package/package.json +35 -34
  187. package/dist/index.d.ts.map +0 -1
  188. package/dist/playground/components/inputs.d.ts +0 -25
  189. package/dist/playground/components/inputs.d.ts.map +0 -1
  190. package/dist/playground/components/oauth-dialog.d.ts +0 -13
  191. package/dist/playground/components/oauth-dialog.d.ts.map +0 -1
  192. package/dist/playground/components/server-select.d.ts +0 -3
  193. package/dist/playground/components/server-select.d.ts.map +0 -1
  194. package/dist/playground/get-default-values.d.ts +0 -3
  195. package/dist/playground/get-default-values.d.ts.map +0 -1
  196. package/dist/playground/lazy.d.ts +0 -2
  197. package/dist/playground/lazy.d.ts.map +0 -1
  198. package/dist/playground/status-info.d.ts +0 -8
  199. package/dist/playground/status-info.d.ts.map +0 -1
  200. package/dist/requests/generators/csharp.d.ts +0 -3
  201. package/dist/requests/generators/csharp.d.ts.map +0 -1
  202. package/dist/requests/generators/curl.d.ts +0 -3
  203. package/dist/requests/generators/curl.d.ts.map +0 -1
  204. package/dist/requests/generators/go.d.ts +0 -3
  205. package/dist/requests/generators/go.d.ts.map +0 -1
  206. package/dist/requests/generators/index.d.ts +0 -3
  207. package/dist/requests/generators/index.d.ts.map +0 -1
  208. package/dist/requests/generators/java.d.ts +0 -3
  209. package/dist/requests/generators/java.d.ts.map +0 -1
  210. package/dist/requests/generators/javascript.d.ts +0 -3
  211. package/dist/requests/generators/javascript.d.ts.map +0 -1
  212. package/dist/requests/generators/python.d.ts +0 -3
  213. package/dist/requests/generators/python.d.ts.map +0 -1
  214. package/dist/requests/media/resolve-adapter.d.ts +0 -19
  215. package/dist/requests/media/resolve-adapter.d.ts.map +0 -1
  216. package/dist/requests/string-utils.d.ts +0 -7
  217. package/dist/requests/string-utils.d.ts.map +0 -1
  218. package/dist/requests/to-python-object.d.ts +0 -2
  219. package/dist/requests/to-python-object.d.ts.map +0 -1
  220. package/dist/requests/types.js +0 -1
  221. package/dist/scalar/client.d.ts +0 -7
  222. package/dist/scalar/client.d.ts.map +0 -1
  223. package/dist/server/index.d.ts.map +0 -1
  224. package/dist/types.js +0 -1
  225. package/dist/ui/client/storage-key.d.ts +0 -9
  226. package/dist/ui/client/storage-key.d.ts.map +0 -1
  227. package/dist/ui/components/accordion.d.ts +0 -8
  228. package/dist/ui/components/accordion.d.ts.map +0 -1
  229. package/dist/ui/components/dialog.d.ts +0 -20
  230. package/dist/ui/components/dialog.d.ts.map +0 -1
  231. package/dist/ui/components/input.d.ts +0 -6
  232. package/dist/ui/components/input.d.ts.map +0 -1
  233. package/dist/ui/components/method-label.d.ts +0 -10
  234. package/dist/ui/components/method-label.d.ts.map +0 -1
  235. package/dist/ui/components/select.d.ts +0 -14
  236. package/dist/ui/components/select.d.ts.map +0 -1
  237. package/dist/ui/contexts/api.d.ts +0 -33
  238. package/dist/ui/contexts/api.d.ts.map +0 -1
  239. package/dist/ui/contexts/api.lazy.d.ts +0 -2
  240. package/dist/ui/contexts/api.lazy.d.ts.map +0 -1
  241. package/dist/ui/icons.d.ts +0 -49
  242. package/dist/ui/icons.d.ts.map +0 -1
  243. package/dist/ui/icons.js +0 -281
  244. package/dist/ui/index.d.ts.map +0 -1
  245. package/dist/ui/operation/client.d.ts +0 -19
  246. package/dist/ui/operation/client.d.ts.map +0 -1
  247. package/dist/ui/operation/index.d.ts +0 -12
  248. package/dist/ui/operation/index.d.ts.map +0 -1
  249. package/dist/ui/operation/usage-tabs/client.d.ts +0 -23
  250. package/dist/ui/operation/usage-tabs/client.d.ts.map +0 -1
  251. package/dist/ui/operation/usage-tabs/lazy.d.ts +0 -4
  252. package/dist/ui/operation/usage-tabs/lazy.d.ts.map +0 -1
  253. package/dist/ui/schema/lazy.d.ts +0 -2
  254. package/dist/ui/schema/lazy.d.ts.map +0 -1
  255. package/dist/utils/cn.d.ts +0 -2
  256. package/dist/utils/cn.d.ts.map +0 -1
  257. package/dist/utils/deep-equal.d.ts +0 -2
  258. package/dist/utils/deep-equal.d.ts.map +0 -1
  259. package/dist/utils/get-typescript-schema.d.ts +0 -4
  260. package/dist/utils/get-typescript-schema.d.ts.map +0 -1
  261. package/dist/utils/id-to-title.d.ts +0 -2
  262. package/dist/utils/id-to-title.d.ts.map +0 -1
  263. package/dist/utils/lazy.d.ts +0 -5
  264. package/dist/utils/lazy.d.ts.map +0 -1
  265. package/dist/utils/merge-schema.d.ts +0 -7
  266. package/dist/utils/merge-schema.d.ts.map +0 -1
  267. package/dist/utils/pages/to-body.d.ts +0 -4
  268. package/dist/utils/pages/to-body.d.ts.map +0 -1
  269. package/dist/utils/pages/to-static-data.d.ts +0 -10
  270. package/dist/utils/pages/to-static-data.d.ts.map +0 -1
  271. package/dist/utils/remove-undefined.d.ts +0 -2
  272. package/dist/utils/remove-undefined.d.ts.map +0 -1
  273. package/dist/utils/schema-to-string.d.ts +0 -8
  274. package/dist/utils/schema-to-string.d.ts.map +0 -1
  275. package/dist/utils/url.d.ts +0 -11
  276. package/dist/utils/url.d.ts.map +0 -1
  277. package/dist/utils/use-query.d.ts +0 -8
  278. package/dist/utils/use-query.d.ts.map +0 -1
@@ -1,145 +1,231 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { createContext, Fragment, use, useCallback, useEffect, useMemo, useRef, useState, } from 'react';
4
- import { Tabs, TabsContent, TabsList, TabsTrigger, } from 'fumadocs-ui/components/tabs';
5
- import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from 'fumadocs-ui/components/ui/collapsible';
6
- import { buttonVariants } from 'fumadocs-ui/components/ui/button';
7
- import { ChevronDown } from '../../ui/icons.js';
8
- import { Badge } from '../../ui/components/method-label.js';
9
- import { Popover, PopoverContent, PopoverTrigger, } from 'fumadocs-ui/components/ui/popover';
10
- import { cn } from '../../utils/cn.js';
11
- import { cva } from 'class-variance-authority';
12
- const typeVariants = cva('text-sm text-start text-fd-muted-foreground font-mono', {
13
- variants: {
14
- variant: {
15
- trigger: 'underline hover:text-fd-accent-foreground data-[state=open]:text-fd-accent-foreground',
16
- },
17
- },
18
- });
19
- const PropertyContext = createContext({
20
- renderRef: (props) => _jsx(RootRef, { ...props }),
21
- });
2
+
3
+ import { cn } from "../../utils/cn.js";
4
+ import { Badge } from "../components/method-label.js";
5
+ import { Fragment, createContext, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
6
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
+ import { ChevronDown } from "lucide-react";
8
+ import { cva } from "class-variance-authority";
9
+ import { buttonVariants } from "fumadocs-ui/components/ui/button";
10
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "fumadocs-ui/components/ui/collapsible";
11
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "fumadocs-ui/components/tabs";
12
+ import { Popover, PopoverContent, PopoverTrigger } from "fumadocs-ui/components/ui/popover";
13
+
14
+ //#region src/ui/schema/client.tsx
15
+ const typeVariants = cva("text-sm text-start text-fd-muted-foreground font-mono", { variants: { variant: { trigger: "underline hover:text-fd-accent-foreground data-[state=open]:text-fd-accent-foreground" } } });
16
+ const PropertyContext = createContext({ renderRef: (props) => /* @__PURE__ */ jsx(RootRef, { ...props }) });
22
17
  const DataContext = createContext(null);
23
18
  function useData() {
24
- return use(DataContext);
19
+ return use(DataContext);
25
20
  }
26
21
  function useProperty() {
27
- return use(PropertyContext);
22
+ return use(PropertyContext);
28
23
  }
29
- export function SchemaUI({ name, required = false, as = 'property', generated, }) {
30
- const schema = generated.refs[generated.$root];
31
- const context = useMemo(() => generated, [generated]);
32
- const isProperty = as === 'property' || !isExpandable(schema);
33
- return (_jsx(DataContext, { value: context, children: isProperty ? (_jsx(SchemaUIProperty, { name: name, "$type": generated.$root, overrides: {
34
- required,
35
- } })) : (_jsx(SchemaUIContent, { "$type": generated.$root })) }));
24
+ function SchemaUI({ name, required = false, as = "property", generated }) {
25
+ const schema = generated.refs[generated.$root];
26
+ return /* @__PURE__ */ jsx(DataContext, {
27
+ value: useMemo(() => generated, [generated]),
28
+ children: as === "property" || !isExpandable(schema) ? /* @__PURE__ */ jsx(SchemaUIProperty, {
29
+ name,
30
+ $type: generated.$root,
31
+ overrides: { required }
32
+ }) : /* @__PURE__ */ jsx(SchemaUIContent, { $type: generated.$root })
33
+ });
36
34
  }
37
35
  function SchemaUIContent({ $type }) {
38
- const { refs } = useData();
39
- const schema = refs[$type];
40
- let child = null;
41
- if (schema.type === 'or' && schema.items.length > 0) {
42
- child = (_jsxs(_Fragment, { children: [child, _jsxs(Tabs, { defaultValue: schema.items[0].$type, children: [_jsx(TabsList, { children: schema.items.map((item) => (_jsx(TabsTrigger, { value: item.$type, children: item.name }, item.$type))) }), schema.items.map((item) => (_jsx(TabsContent, { value: item.$type, forceMount: undefined, className: "py-0", children: _jsx(SchemaUIContent, { ...item }) }, item.$type)))] })] }));
43
- }
44
- if (schema.type === 'object' && schema.props.length > 0) {
45
- child = (_jsxs(_Fragment, { children: [child, schema.props.map((prop) => (_jsx(SchemaUIProperty, { name: prop.name, "$type": prop.$type, overrides: { required: prop.required } }, prop.name)))] }));
46
- }
47
- if (schema.type === 'array') {
48
- child = (_jsxs(_Fragment, { children: [child, _jsxs(Collapsible, { className: "my-2", children: [_jsxs(CollapsibleTrigger, { className: cn(buttonVariants({ color: 'secondary', size: 'sm' }), 'group px-3 py-2 data-[state=open]:rounded-b-none'), children: ["Array Item", _jsx(ChevronDown, { className: "size-4 text-fd-muted-foreground group-data-[state=open]:rotate-180" })] }), _jsx(CollapsibleContent, { className: "-mt-px bg-fd-card px-3 rounded-lg rounded-tl-none border shadow-sm", children: _jsx(SchemaUIContent, { "$type": schema.item.$type }) })] })] }));
49
- }
50
- return child;
36
+ const { refs } = useData();
37
+ const schema = refs[$type];
38
+ let child = null;
39
+ if (schema.type === "or" && schema.items.length > 0) child = /* @__PURE__ */ jsxs(Fragment$1, { children: [child, /* @__PURE__ */ jsxs(Tabs, {
40
+ defaultValue: schema.items[0].$type,
41
+ children: [/* @__PURE__ */ jsx(TabsList, { children: schema.items.map((item) => /* @__PURE__ */ jsx(TabsTrigger, {
42
+ value: item.$type,
43
+ children: item.name
44
+ }, item.$type)) }), schema.items.map((item) => /* @__PURE__ */ jsx(TabsContent, {
45
+ value: item.$type,
46
+ forceMount: void 0,
47
+ className: "py-0",
48
+ children: /* @__PURE__ */ jsx(SchemaUIContent, { ...item })
49
+ }, item.$type))]
50
+ })] });
51
+ if (schema.type === "object" && schema.props.length > 0) child = /* @__PURE__ */ jsxs(Fragment$1, { children: [child, schema.props.map((prop) => /* @__PURE__ */ jsx(SchemaUIProperty, {
52
+ name: prop.name,
53
+ $type: prop.$type,
54
+ overrides: { required: prop.required }
55
+ }, prop.name))] });
56
+ if (schema.type === "array") child = /* @__PURE__ */ jsxs(Fragment$1, { children: [child, /* @__PURE__ */ jsxs(Collapsible, {
57
+ className: "my-2",
58
+ children: [/* @__PURE__ */ jsxs(CollapsibleTrigger, {
59
+ className: cn(buttonVariants({
60
+ color: "secondary",
61
+ size: "sm"
62
+ }), "group px-3 py-2 data-[state=open]:rounded-b-none"),
63
+ children: ["Array Item", /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 text-fd-muted-foreground group-data-[state=open]:rotate-180" })]
64
+ }), /* @__PURE__ */ jsx(CollapsibleContent, {
65
+ className: "-mt-px bg-fd-card px-3 rounded-lg rounded-tl-none border shadow-sm",
66
+ children: /* @__PURE__ */ jsx(SchemaUIContent, { $type: schema.item.$type })
67
+ })]
68
+ })] });
69
+ return child;
51
70
  }
52
- function SchemaUIProperty({ name, $type, overrides, }) {
53
- const { renderRef } = useProperty();
54
- const { refs } = useData();
55
- const schema = refs[$type];
56
- let type = schema.typeName;
57
- if ((schema.type === 'or' || schema.type === 'and') &&
58
- schema.items.length > 0) {
59
- type = renderRef({
60
- text: schema.aliasName,
61
- pathName: name,
62
- $ref: $type,
63
- inlineUnion: true,
64
- });
65
- }
66
- if (schema.type === 'object' && schema.props.length > 0) {
67
- type = renderRef({
68
- text: schema.aliasName,
69
- pathName: name,
70
- $ref: $type,
71
- });
72
- }
73
- if (schema.type === 'array') {
74
- type = renderRef({
75
- text: schema.aliasName,
76
- pathName: name,
77
- $ref: schema.item.$type,
78
- });
79
- }
80
- return (_jsxs(Property, { name: name, type: type, deprecated: schema.deprecated, ...overrides, children: [schema.description, schema.infoTags && schema.infoTags.length > 0 && (_jsx("div", { className: "flex flex-row gap-2 flex-wrap my-2 not-prose empty:hidden", children: schema.infoTags.map((tag, i) => (_jsx(Fragment, { children: tag }, i))) }))] }));
71
+ function SchemaUIProperty({ name, $type, overrides }) {
72
+ const { renderRef } = useProperty();
73
+ const { refs } = useData();
74
+ const schema = refs[$type];
75
+ let type = schema.typeName;
76
+ if ((schema.type === "or" || schema.type === "and") && schema.items.length > 0) type = renderRef({
77
+ text: schema.aliasName,
78
+ pathName: name,
79
+ $ref: $type,
80
+ inlineUnion: true
81
+ });
82
+ if (schema.type === "object" && schema.props.length > 0) type = renderRef({
83
+ text: schema.aliasName,
84
+ pathName: name,
85
+ $ref: $type
86
+ });
87
+ if (schema.type === "array") type = renderRef({
88
+ text: schema.aliasName,
89
+ pathName: name,
90
+ $ref: schema.item.$type
91
+ });
92
+ return /* @__PURE__ */ jsxs(Property, {
93
+ name,
94
+ type,
95
+ deprecated: schema.deprecated,
96
+ ...overrides,
97
+ children: [schema.description, schema.infoTags && schema.infoTags.length > 0 && /* @__PURE__ */ jsx("div", {
98
+ className: "flex flex-row gap-2 flex-wrap my-2 not-prose empty:hidden",
99
+ children: schema.infoTags.map((tag, i) => /* @__PURE__ */ jsx(Fragment, { children: tag }, i))
100
+ })]
101
+ });
81
102
  }
82
- function SchemaUIPopover({ initialPath, }) {
83
- const [path, setPath] = useState(initialPath);
84
- const ref = useRef(null);
85
- const last = path.findLast((item) => item.$ref !== undefined);
86
- useEffect(() => {
87
- const element = ref.current;
88
- if (!element || !element.parentElement)
89
- return;
90
- // reset scroll
91
- element.parentElement.scrollTop = 0;
92
- }, [last?.$ref]);
93
- const context = useMemo(() => ({
94
- renderRef: (props) => (_jsx(LinkRef, { ...props, onInsert: (name, $ref) => {
95
- setPath((path) => [...path, { name, $ref }]);
96
- } })),
97
- }), []);
98
- if (!last)
99
- return;
100
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "sticky top-0 flex flex-row flex-wrap items-center text-sm font-medium font-mono bg-fd-muted p-2", children: path.map((item, i) => {
101
- const isDuplicated = path.some((other, j) => j < i && other.$ref === item.$ref);
102
- const className = cn(isDuplicated && 'text-orange-400', item.$ref && 'hover:underline hover:text-fd-accent-foreground');
103
- const node = item.$ref ? (_jsx("button", { onClick: () => setPath((path) => path.slice(0, i + 1)), className: className, children: item.name })) : (_jsx("span", { className: className, children: item.name }));
104
- return (_jsxs(Fragment, { children: [i > 0 && '.', node] }, i));
105
- }) }), _jsx(PropertyContext, { value: context, children: _jsx("div", { ref: ref, className: "px-2", children: _jsx(SchemaUIContent, { "$type": last.$ref }) }) })] }));
103
+ function SchemaUIPopover({ initialPath }) {
104
+ const [path, setPath] = useState(initialPath);
105
+ const ref = useRef(null);
106
+ const last = path.findLast((item) => item.$ref !== void 0);
107
+ useEffect(() => {
108
+ const element = ref.current;
109
+ if (!element || !element.parentElement) return;
110
+ element.parentElement.scrollTop = 0;
111
+ }, [last?.$ref]);
112
+ const context = useMemo(() => ({ renderRef: (props) => /* @__PURE__ */ jsx(LinkRef, {
113
+ ...props,
114
+ onInsert: (name, $ref) => {
115
+ setPath((path$1) => [...path$1, {
116
+ name,
117
+ $ref
118
+ }]);
119
+ }
120
+ }) }), []);
121
+ if (!last) return;
122
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
123
+ className: "sticky top-0 flex flex-row flex-wrap items-center text-sm font-medium font-mono bg-fd-muted p-2",
124
+ children: path.map((item, i) => {
125
+ const className = cn(path.some((other, j) => j < i && other.$ref === item.$ref) && "text-orange-400", item.$ref && "hover:underline hover:text-fd-accent-foreground");
126
+ const node = item.$ref ? /* @__PURE__ */ jsx("button", {
127
+ onClick: () => setPath((path$1) => path$1.slice(0, i + 1)),
128
+ className,
129
+ children: item.name
130
+ }) : /* @__PURE__ */ jsx("span", {
131
+ className,
132
+ children: item.name
133
+ });
134
+ return /* @__PURE__ */ jsxs(Fragment, { children: [i > 0 && ".", node] }, i);
135
+ })
136
+ }), /* @__PURE__ */ jsx(PropertyContext, {
137
+ value: context,
138
+ children: /* @__PURE__ */ jsx("div", {
139
+ ref,
140
+ className: "px-2",
141
+ children: /* @__PURE__ */ jsx(SchemaUIContent, { $type: last.$ref })
142
+ })
143
+ })] });
106
144
  }
107
145
  function RootRef({ text, $ref, pathName, inlineUnion }) {
108
- const { refs } = useData();
109
- const ref = useCallback((element) => {
110
- if (!element || element.style.getPropertyValue('--initial-height'))
111
- return;
112
- element.style.setProperty('--initial-height', `${element.clientHeight}px`);
113
- }, []);
114
- const schema = refs[$ref];
115
- if (inlineUnion && (schema.type === 'and' || schema.type === 'or')) {
116
- const sep = schema.type === 'and' ? '&' : '|';
117
- return (_jsx("span", { className: cn(typeVariants(), 'flex flex-row gap-2 items-center flex-wrap'), children: schema.items.map((item, i) => (_jsxs(Fragment, { children: [i > 0 && _jsx("span", { children: sep }), _jsx(RootRef, { pathName: pathName, text: item.name, "$ref": item.$type })] }, item.$type))) }));
118
- }
119
- if (!isExpandable(refs[$ref])) {
120
- return _jsx("span", { className: cn(typeVariants()), children: text });
121
- }
122
- return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { className: cn(typeVariants({ variant: 'trigger' })), children: text }), _jsx(PopoverContent, { ref: ref, className: "w-[600px] min-h-(--initial-height,0) max-h-[460px] p-0", children: _jsx(SchemaUIPopover, { initialPath: [
123
- {
124
- name: (_jsxs(_Fragment, { children: [pathName, schema.type === 'array' && '[]'] })),
125
- $ref: $ref,
126
- },
127
- ] }) })] }));
146
+ const { refs } = useData();
147
+ const ref = useCallback((element) => {
148
+ if (!element || element.style.getPropertyValue("--initial-height")) return;
149
+ element.style.setProperty("--initial-height", `${element.clientHeight}px`);
150
+ }, []);
151
+ const schema = refs[$ref];
152
+ if (inlineUnion && (schema.type === "and" || schema.type === "or")) {
153
+ const sep = schema.type === "and" ? "&" : "|";
154
+ return /* @__PURE__ */ jsx("span", {
155
+ className: cn(typeVariants(), "flex flex-row gap-2 items-center flex-wrap"),
156
+ children: schema.items.map((item, i) => /* @__PURE__ */ jsxs(Fragment, { children: [i > 0 && /* @__PURE__ */ jsx("span", { children: sep }), /* @__PURE__ */ jsx(RootRef, {
157
+ pathName,
158
+ text: item.name,
159
+ $ref: item.$type
160
+ })] }, item.$type))
161
+ });
162
+ }
163
+ if (!isExpandable(refs[$ref])) return /* @__PURE__ */ jsx("span", {
164
+ className: cn(typeVariants()),
165
+ children: text
166
+ });
167
+ return /* @__PURE__ */ jsxs(Popover, { children: [/* @__PURE__ */ jsx(PopoverTrigger, {
168
+ className: cn(typeVariants({ variant: "trigger" })),
169
+ children: text
170
+ }), /* @__PURE__ */ jsx(PopoverContent, {
171
+ ref,
172
+ className: "w-[600px] min-h-(--initial-height,0) max-h-[460px] p-0",
173
+ children: /* @__PURE__ */ jsx(SchemaUIPopover, { initialPath: [{
174
+ name: /* @__PURE__ */ jsxs(Fragment$1, { children: [pathName, schema.type === "array" && "[]"] }),
175
+ $ref
176
+ }] })
177
+ })] });
128
178
  }
129
- function LinkRef({ $ref, pathName, onInsert, text, }) {
130
- const { refs } = useData();
131
- if (!isExpandable(refs[$ref])) {
132
- return _jsx("span", { className: cn(typeVariants()), children: text });
133
- }
134
- return (_jsx("button", { className: cn(typeVariants({ variant: 'trigger' })), onClick: () => {
135
- onInsert(pathName, $ref);
136
- }, children: text }));
179
+ function LinkRef({ $ref, pathName, onInsert, text }) {
180
+ const { refs } = useData();
181
+ if (!isExpandable(refs[$ref])) return /* @__PURE__ */ jsx("span", {
182
+ className: cn(typeVariants()),
183
+ children: text
184
+ });
185
+ return /* @__PURE__ */ jsx("button", {
186
+ className: cn(typeVariants({ variant: "trigger" })),
187
+ onClick: () => {
188
+ onInsert(pathName, $ref);
189
+ },
190
+ children: text
191
+ });
137
192
  }
138
193
  function Property({ name, type, required, deprecated, nested = false, className, ...props }) {
139
- return (_jsxs("div", { className: cn('text-sm border-t', nested
140
- ? 'p-3 border-x bg-fd-card last:rounded-b-xl first:rounded-tr-xl last:border-b'
141
- : 'py-4 first:border-t-0', className), children: [_jsxs("div", { className: "flex flex-wrap items-center gap-3 not-prose", children: [_jsxs("span", { className: "font-medium font-mono text-fd-primary", children: [name, required ? (_jsx("span", { className: "text-red-400", children: "*" })) : (_jsx("span", { className: "text-fd-muted-foreground", children: "?" }))] }), typeof type === 'string' ? (_jsx("span", { className: "text-sm font-mono text-fd-muted-foreground", children: type })) : (type), deprecated && (_jsx(Badge, { color: "yellow", className: "ms-auto text-xs", children: "Deprecated" }))] }), _jsx("div", { className: "prose-no-margin pt-2.5 empty:hidden", children: props.children })] }));
194
+ return /* @__PURE__ */ jsxs("div", {
195
+ className: cn("text-sm border-t", nested ? "p-3 border-x bg-fd-card last:rounded-b-xl first:rounded-tr-xl last:border-b" : "py-4 first:border-t-0", className),
196
+ children: [/* @__PURE__ */ jsxs("div", {
197
+ className: "flex flex-wrap items-center gap-3 not-prose",
198
+ children: [
199
+ /* @__PURE__ */ jsxs("span", {
200
+ className: "font-medium font-mono text-fd-primary",
201
+ children: [name, required ? /* @__PURE__ */ jsx("span", {
202
+ className: "text-red-400",
203
+ children: "*"
204
+ }) : /* @__PURE__ */ jsx("span", {
205
+ className: "text-fd-muted-foreground",
206
+ children: "?"
207
+ })]
208
+ }),
209
+ typeof type === "string" ? /* @__PURE__ */ jsx("span", {
210
+ className: "text-sm font-mono text-fd-muted-foreground",
211
+ children: type
212
+ }) : type,
213
+ deprecated && /* @__PURE__ */ jsx(Badge, {
214
+ color: "yellow",
215
+ className: "ms-auto text-xs",
216
+ children: "Deprecated"
217
+ })
218
+ ]
219
+ }), /* @__PURE__ */ jsx("div", {
220
+ className: "prose-no-margin pt-2.5 empty:hidden",
221
+ children: props.children
222
+ })]
223
+ });
142
224
  }
143
225
  function isExpandable(schema) {
144
- return schema.type !== 'primitive';
226
+ return schema.type !== "primitive";
145
227
  }
228
+
229
+ //#endregion
230
+ export { SchemaUI };
231
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","names":["child: ReactNode","type: ReactNode","context: PropertyContextType","path"],"sources":["../../../src/ui/schema/client.tsx"],"sourcesContent":["'use client';\nimport {\n createContext,\n Fragment,\n type ReactNode,\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from 'fumadocs-ui/components/tabs';\nimport type { SchemaData, SchemaUIGeneratedData } from '@/ui/schema';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from 'fumadocs-ui/components/ui/collapsible';\nimport { buttonVariants } from 'fumadocs-ui/components/ui/button';\nimport { ChevronDown } from 'lucide-react';\nimport { Badge } from '@/ui/components/method-label';\nimport { Popover, PopoverContent, PopoverTrigger } from 'fumadocs-ui/components/ui/popover';\nimport { cn } from '@/utils/cn';\nimport { cva } from 'class-variance-authority';\n\ntype DataContextType = SchemaUIGeneratedData;\n\ninterface PropertyContextType {\n renderRef: (options: RenderRefOptions) => ReactNode;\n}\n\ninterface RenderRefOptions {\n text: ReactNode;\n pathName: ReactNode;\n $ref: string;\n\n inlineUnion?: boolean;\n}\n\nconst typeVariants = cva('text-sm text-start text-fd-muted-foreground font-mono', {\n variants: {\n variant: {\n trigger:\n 'underline hover:text-fd-accent-foreground data-[state=open]:text-fd-accent-foreground',\n },\n },\n});\n\nconst PropertyContext = createContext<PropertyContextType>({\n renderRef: (props) => <RootRef {...props} />,\n});\n\nconst DataContext = createContext<DataContextType | null>(null);\n\nfunction useData() {\n return use(DataContext)!;\n}\n\nfunction useProperty() {\n return use(PropertyContext);\n}\n\nexport interface SchemaUIProps {\n name: string;\n required?: boolean;\n as?: 'property' | 'body';\n\n generated: SchemaUIGeneratedData;\n}\n\nexport function SchemaUI({ name, required = false, as = 'property', generated }: SchemaUIProps) {\n const schema = generated.refs[generated.$root];\n const context: DataContextType = useMemo(() => generated, [generated]);\n const isProperty = as === 'property' || !isExpandable(schema);\n\n return (\n <DataContext value={context}>\n {isProperty ? (\n <SchemaUIProperty\n name={name}\n $type={generated.$root}\n overrides={{\n required,\n }}\n />\n ) : (\n <SchemaUIContent $type={generated.$root} />\n )}\n </DataContext>\n );\n}\n\nfunction SchemaUIContent({ $type }: { $type: string }) {\n const { refs } = useData();\n const schema = refs[$type];\n let child: ReactNode = null;\n\n if (schema.type === 'or' && schema.items.length > 0) {\n child = (\n <>\n {child}\n <Tabs defaultValue={schema.items[0].$type}>\n <TabsList>\n {schema.items.map((item) => (\n <TabsTrigger key={item.$type} value={item.$type}>\n {item.name}\n </TabsTrigger>\n ))}\n </TabsList>\n {schema.items.map((item) => (\n <TabsContent\n key={item.$type}\n value={item.$type}\n forceMount={undefined}\n className=\"py-0\"\n >\n <SchemaUIContent {...item} />\n </TabsContent>\n ))}\n </Tabs>\n </>\n );\n }\n\n if (schema.type === 'object' && schema.props.length > 0) {\n child = (\n <>\n {child}\n {schema.props.map((prop) => (\n <SchemaUIProperty\n key={prop.name}\n name={prop.name}\n $type={prop.$type}\n overrides={{ required: prop.required }}\n />\n ))}\n </>\n );\n }\n\n if (schema.type === 'array') {\n child = (\n <>\n {child}\n <Collapsible className=\"my-2\">\n <CollapsibleTrigger\n className={cn(\n buttonVariants({ color: 'secondary', size: 'sm' }),\n 'group px-3 py-2 data-[state=open]:rounded-b-none',\n )}\n >\n Array Item\n <ChevronDown className=\"size-4 text-fd-muted-foreground group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"-mt-px bg-fd-card px-3 rounded-lg rounded-tl-none border shadow-sm\">\n <SchemaUIContent $type={schema.item.$type} />\n </CollapsibleContent>\n </Collapsible>\n </>\n );\n }\n\n return child;\n}\n\nfunction SchemaUIProperty({\n name,\n $type,\n overrides,\n}: {\n name: ReactNode;\n $type: string;\n overrides?: Partial<PropertyProps>;\n}) {\n const { renderRef } = useProperty();\n const { refs } = useData();\n const schema = refs[$type];\n\n let type: ReactNode = schema.typeName;\n if ((schema.type === 'or' || schema.type === 'and') && schema.items.length > 0) {\n type = renderRef({\n text: schema.aliasName,\n pathName: name,\n $ref: $type,\n inlineUnion: true,\n });\n }\n\n if (schema.type === 'object' && schema.props.length > 0) {\n type = renderRef({\n text: schema.aliasName,\n pathName: name,\n $ref: $type,\n });\n }\n\n if (schema.type === 'array') {\n type = renderRef({\n text: schema.aliasName,\n pathName: name,\n $ref: schema.item.$type,\n });\n }\n\n return (\n <Property name={name} type={type} deprecated={schema.deprecated} {...overrides}>\n {schema.description}\n {schema.infoTags && schema.infoTags.length > 0 && (\n <div className=\"flex flex-row gap-2 flex-wrap my-2 not-prose empty:hidden\">\n {schema.infoTags.map((tag, i) => (\n <Fragment key={i}>{tag}</Fragment>\n ))}\n </div>\n )}\n </Property>\n );\n}\n\nfunction SchemaUIPopover({ initialPath }: { initialPath: { name: ReactNode; $ref?: string }[] }) {\n const [path, setPath] = useState(initialPath);\n const ref = useRef<HTMLDivElement>(null);\n const last = path.findLast((item) => item.$ref !== undefined);\n\n useEffect(() => {\n const element = ref.current;\n if (!element || !element.parentElement) return;\n\n // reset scroll\n element.parentElement.scrollTop = 0;\n }, [last?.$ref]);\n\n const context: PropertyContextType = useMemo(\n () => ({\n renderRef: (props) => (\n <LinkRef\n {...props}\n onInsert={(name, $ref) => {\n setPath((path) => [...path, { name, $ref }]);\n }}\n />\n ),\n }),\n [],\n );\n\n if (!last) return;\n\n return (\n <>\n <div className=\"sticky top-0 flex flex-row flex-wrap items-center text-sm font-medium font-mono bg-fd-muted p-2\">\n {path.map((item, i) => {\n const isDuplicated = path.some((other, j) => j < i && other.$ref === item.$ref);\n const className = cn(\n isDuplicated && 'text-orange-400',\n item.$ref && 'hover:underline hover:text-fd-accent-foreground',\n );\n\n const node = item.$ref ? (\n <button onClick={() => setPath((path) => path.slice(0, i + 1))} className={className}>\n {item.name}\n </button>\n ) : (\n <span className={className}>{item.name}</span>\n );\n\n return (\n <Fragment key={i}>\n {i > 0 && '.'}\n {node}\n </Fragment>\n );\n })}\n </div>\n <PropertyContext value={context}>\n <div ref={ref} className=\"px-2\">\n <SchemaUIContent $type={last.$ref!} />\n </div>\n </PropertyContext>\n </>\n );\n}\n\nfunction RootRef({ text, $ref, pathName, inlineUnion }: RenderRefOptions) {\n const { refs } = useData();\n const ref = useCallback((element: HTMLDivElement | null) => {\n if (!element || element.style.getPropertyValue('--initial-height')) return;\n\n element.style.setProperty('--initial-height', `${element.clientHeight}px`);\n }, []);\n\n const schema = refs[$ref];\n\n if (inlineUnion && (schema.type === 'and' || schema.type === 'or')) {\n const sep = schema.type === 'and' ? '&' : '|';\n return (\n <span className={cn(typeVariants(), 'flex flex-row gap-2 items-center flex-wrap')}>\n {schema.items.map((item, i) => (\n <Fragment key={item.$type}>\n {i > 0 && <span>{sep}</span>}\n <RootRef pathName={pathName} text={item.name} $ref={item.$type} />\n </Fragment>\n ))}\n </span>\n );\n }\n\n if (!isExpandable(refs[$ref])) {\n return <span className={cn(typeVariants())}>{text}</span>;\n }\n\n return (\n <Popover>\n <PopoverTrigger className={cn(typeVariants({ variant: 'trigger' }))}>{text}</PopoverTrigger>\n <PopoverContent ref={ref} className=\"w-[600px] min-h-(--initial-height,0) max-h-[460px] p-0\">\n <SchemaUIPopover\n initialPath={[\n {\n name: (\n <>\n {pathName}\n {schema.type === 'array' && '[]'}\n </>\n ),\n $ref: $ref,\n },\n ]}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nfunction LinkRef({\n $ref,\n pathName,\n onInsert,\n text,\n}: RenderRefOptions & {\n onInsert: (name: ReactNode, $ref: string) => void;\n}) {\n const { refs } = useData();\n if (!isExpandable(refs[$ref])) {\n return <span className={cn(typeVariants())}>{text}</span>;\n }\n\n return (\n <button\n className={cn(typeVariants({ variant: 'trigger' }))}\n onClick={() => {\n onInsert(pathName, $ref);\n }}\n >\n {text}\n </button>\n );\n}\n\ninterface PropertyProps {\n name: ReactNode;\n type: ReactNode;\n required?: boolean;\n deprecated?: boolean;\n nested?: boolean;\n\n children?: ReactNode;\n className?: string;\n}\n\nfunction Property({\n name,\n type,\n required,\n deprecated,\n nested = false,\n className,\n ...props\n}: PropertyProps) {\n return (\n <div\n className={cn(\n 'text-sm border-t',\n nested\n ? 'p-3 border-x bg-fd-card last:rounded-b-xl first:rounded-tr-xl last:border-b'\n : 'py-4 first:border-t-0',\n className,\n )}\n >\n <div className=\"flex flex-wrap items-center gap-3 not-prose\">\n <span className=\"font-medium font-mono text-fd-primary\">\n {name}\n {required ? (\n <span className=\"text-red-400\">*</span>\n ) : (\n <span className=\"text-fd-muted-foreground\">?</span>\n )}\n </span>\n {typeof type === 'string' ? (\n <span className=\"text-sm font-mono text-fd-muted-foreground\">{type}</span>\n ) : (\n type\n )}\n {deprecated && (\n <Badge color=\"yellow\" className=\"ms-auto text-xs\">\n Deprecated\n </Badge>\n )}\n </div>\n <div className=\"prose-no-margin pt-2.5 empty:hidden\">{props.children}</div>\n </div>\n );\n}\n\nfunction isExpandable(schema: SchemaData) {\n return schema.type !== 'primitive';\n}\n"],"mappings":"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"}
@@ -1,59 +1,60 @@
1
- import type { ReactNode } from 'react';
2
- import type { ResolvedSchema } from '../../utils/schema.js';
3
- import type { RenderContext } from '../../types.js';
4
- import type { SchemaUIProps } from '../../ui/schema/client.js';
5
- export interface FieldBase {
6
- description?: ReactNode;
7
- infoTags?: ReactNode[];
8
- typeName: string;
9
- aliasName: string;
10
- deprecated?: boolean;
1
+ import { ResolvedSchema } from "../../utils/schema.js";
2
+ import { SchemaUIProps } from "./client.js";
3
+ import "../../types.js";
4
+ import { ReactNode } from "react";
5
+ import "react/jsx-runtime";
6
+
7
+ //#region src/ui/schema/index.d.ts
8
+ interface FieldBase {
9
+ description?: ReactNode;
10
+ infoTags?: ReactNode[];
11
+ typeName: string;
12
+ aliasName: string;
13
+ deprecated?: boolean;
11
14
  }
12
- export type SchemaData = FieldBase & ({
13
- type: 'primitive';
15
+ type SchemaData = FieldBase & ({
16
+ type: 'primitive';
14
17
  } | {
15
- type: 'object';
16
- props: {
17
- name: string;
18
- $type: string;
19
- required: boolean;
20
- }[];
18
+ type: 'object';
19
+ props: {
20
+ name: string;
21
+ $type: string;
22
+ required: boolean;
23
+ }[];
21
24
  } | {
22
- type: 'array';
23
- item: {
24
- $type: string;
25
- };
25
+ type: 'array';
26
+ item: {
27
+ $type: string;
28
+ };
26
29
  } | {
27
- type: 'or';
28
- items: {
29
- name: string;
30
- $type: string;
31
- }[];
30
+ type: 'or';
31
+ items: {
32
+ name: string;
33
+ $type: string;
34
+ }[];
32
35
  } | {
33
- type: 'and';
34
- items: {
35
- name: string;
36
- $type: string;
37
- }[];
36
+ type: 'and';
37
+ items: {
38
+ name: string;
39
+ $type: string;
40
+ }[];
38
41
  });
39
- export interface SchemaUIOptions {
40
- root: ResolvedSchema;
41
- client: Omit<SchemaUIProps, 'generated'>;
42
- /**
43
- * include read only props
44
- */
45
- readOnly?: boolean;
46
- /**
47
- * include write only props
48
- */
49
- writeOnly?: boolean;
42
+ interface SchemaUIOptions {
43
+ root: ResolvedSchema;
44
+ client: Omit<SchemaUIProps, 'generated'>;
45
+ /**
46
+ * include read only props
47
+ */
48
+ readOnly?: boolean;
49
+ /**
50
+ * include write only props
51
+ */
52
+ writeOnly?: boolean;
50
53
  }
51
- export interface SchemaUIGeneratedData {
52
- $root: string;
53
- refs: Record<string, SchemaData>;
54
+ interface SchemaUIGeneratedData {
55
+ $root: string;
56
+ refs: Record<string, SchemaData>;
54
57
  }
55
- export declare function Schema({ ctx, ...options }: SchemaUIOptions & {
56
- ctx: RenderContext;
57
- }): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<ReactNode> | null | undefined;
58
- export declare function generateSchemaUI({ root, readOnly, writeOnly }: SchemaUIOptions, ctx: RenderContext): SchemaUIGeneratedData;
58
+ //#endregion
59
+ export { SchemaUIGeneratedData, SchemaUIOptions };
59
60
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/schema/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IAEvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAChC,CACI;IACE,IAAI,EAAE,WAAW,CAAC;CACnB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,EAAE,CAAC;CACL,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,GACD;IACE,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL,CACJ,CAAC;AAEJ,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAClC;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,GAAG,OAAO,EACX,EAAE,eAAe,GAAG;IACnB,GAAG,EAAE,aAAa,CAAC;CACpB,8IAWA;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,EAC9C,GAAG,EAAE,aAAa,GACjB,qBAAqB,CA+RvB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/ui/schema/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAQiB,SAAA;gBACD;aACH;EAFI,QAAA,EAAA,MAAS;EAUd,SAAA,EAAA,MAAU;EAmCL,UAAA,CAAA,EAAA,OAAe;;AAEjB,KArCH,UAAA,GAAa,SAqCV,GAAA,CAAA;EAAL,IAAA,EAAA,WAAA;CAAI,GAAA;EAYG,IAAA,EAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;UAdA,eAAA;QACT;UACE,KAAK;;;;;;;;;;UAYE,qBAAA;;QAET,eAAe"}