fumadocs-openapi 10.3.16 → 10.3.17

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 (148) hide show
  1. package/css/generated/shared.css +1 -0
  2. package/dist/generate-file.js +1 -2
  3. package/dist/generate-file.js.map +1 -1
  4. package/dist/index.js +1 -2
  5. package/dist/playground/client.d.ts +4 -3
  6. package/dist/playground/client.d.ts.map +1 -1
  7. package/dist/playground/client.js +2 -4
  8. package/dist/playground/client.js.map +1 -1
  9. package/dist/playground/components/inputs.js +2 -4
  10. package/dist/playground/components/inputs.js.map +1 -1
  11. package/dist/playground/components/oauth-dialog.js +1 -2
  12. package/dist/playground/components/oauth-dialog.js.map +1 -1
  13. package/dist/playground/components/server-select.js +2 -4
  14. package/dist/playground/components/server-select.js.map +1 -1
  15. package/dist/playground/fetcher.js +1 -2
  16. package/dist/playground/fetcher.js.map +1 -1
  17. package/dist/playground/index.d.ts +2 -7
  18. package/dist/playground/index.d.ts.map +1 -1
  19. package/dist/playground/index.js +23 -3
  20. package/dist/playground/index.js.map +1 -1
  21. package/dist/playground/lazy.js +2 -4
  22. package/dist/playground/lazy.js.map +1 -1
  23. package/dist/playground/schema.js +1 -2
  24. package/dist/playground/schema.js.map +1 -1
  25. package/dist/playground/status-info.js +1 -2
  26. package/dist/playground/status-info.js.map +1 -1
  27. package/dist/requests/generators/all.js +1 -2
  28. package/dist/requests/generators/all.js.map +1 -1
  29. package/dist/requests/generators/csharp.js +1 -2
  30. package/dist/requests/generators/csharp.js.map +1 -1
  31. package/dist/requests/generators/curl.js +1 -2
  32. package/dist/requests/generators/curl.js.map +1 -1
  33. package/dist/requests/generators/go.js +1 -2
  34. package/dist/requests/generators/go.js.map +1 -1
  35. package/dist/requests/generators/index.js +1 -1
  36. package/dist/requests/generators/java.js +1 -2
  37. package/dist/requests/generators/java.js.map +1 -1
  38. package/dist/requests/generators/javascript.js +1 -2
  39. package/dist/requests/generators/javascript.js.map +1 -1
  40. package/dist/requests/generators/python.js +1 -2
  41. package/dist/requests/generators/python.js.map +1 -1
  42. package/dist/requests/media/adapter.js +2 -3
  43. package/dist/requests/media/adapter.js.map +1 -1
  44. package/dist/requests/media/encode.d.ts.map +1 -1
  45. package/dist/requests/media/encode.js +1 -2
  46. package/dist/requests/media/encode.js.map +1 -1
  47. package/dist/requests/media/resolve-adapter.js +1 -1
  48. package/dist/requests/media/resolve-adapter.js.map +1 -1
  49. package/dist/requests/string-utils.js +1 -2
  50. package/dist/requests/string-utils.js.map +1 -1
  51. package/dist/requests/to-python-object.js +1 -1
  52. package/dist/scalar/client.js +2 -4
  53. package/dist/scalar/client.js.map +1 -1
  54. package/dist/scalar/index.js +1 -2
  55. package/dist/scalar/index.js.map +1 -1
  56. package/dist/server/create.js +1 -2
  57. package/dist/server/create.js.map +1 -1
  58. package/dist/server/index.js +1 -2
  59. package/dist/server/proxy.js +1 -1
  60. package/dist/server/proxy.js.map +1 -1
  61. package/dist/server/source-api.js +1 -2
  62. package/dist/server/source-api.js.map +1 -1
  63. package/dist/ui/api-page.js +1 -2
  64. package/dist/ui/api-page.js.map +1 -1
  65. package/dist/ui/base.js +1 -2
  66. package/dist/ui/base.js.map +1 -1
  67. package/dist/ui/client/index.js +2 -3
  68. package/dist/ui/client/index.js.map +1 -1
  69. package/dist/ui/client/storage-key.js +1 -2
  70. package/dist/ui/client/storage-key.js.map +1 -1
  71. package/dist/ui/components/accordion.js +2 -4
  72. package/dist/ui/components/accordion.js.map +1 -1
  73. package/dist/ui/components/dialog.js +3 -5
  74. package/dist/ui/components/dialog.js.map +1 -1
  75. package/dist/ui/components/input.js +1 -2
  76. package/dist/ui/components/input.js.map +1 -1
  77. package/dist/ui/components/method-label.js +1 -2
  78. package/dist/ui/components/method-label.js.map +1 -1
  79. package/dist/ui/components/select.js +2 -3
  80. package/dist/ui/components/select.js.map +1 -1
  81. package/dist/ui/contexts/api.js +2 -4
  82. package/dist/ui/contexts/api.js.map +1 -1
  83. package/dist/ui/contexts/api.lazy.js +2 -4
  84. package/dist/ui/contexts/api.lazy.js.map +1 -1
  85. package/dist/ui/full.client.js +2 -4
  86. package/dist/ui/full.client.js.map +1 -1
  87. package/dist/ui/full.js +1 -2
  88. package/dist/ui/full.js.map +1 -1
  89. package/dist/ui/index.js +1 -2
  90. package/dist/ui/operation/client.js +2 -4
  91. package/dist/ui/operation/client.js.map +1 -1
  92. package/dist/ui/operation/index.js +1 -2
  93. package/dist/ui/operation/index.js.map +1 -1
  94. package/dist/ui/operation/request-tabs.js +1 -2
  95. package/dist/ui/operation/request-tabs.js.map +1 -1
  96. package/dist/ui/operation/response-tabs.js +1 -2
  97. package/dist/ui/operation/response-tabs.js.map +1 -1
  98. package/dist/ui/operation/usage-tabs/client.js +4 -7
  99. package/dist/ui/operation/usage-tabs/client.js.map +1 -1
  100. package/dist/ui/operation/usage-tabs/index.js +1 -2
  101. package/dist/ui/operation/usage-tabs/index.js.map +1 -1
  102. package/dist/ui/operation/usage-tabs/lazy.js +2 -4
  103. package/dist/ui/operation/usage-tabs/lazy.js.map +1 -1
  104. package/dist/ui/schema/client.js +2 -4
  105. package/dist/ui/schema/client.js.map +1 -1
  106. package/dist/ui/schema/index.js +1 -2
  107. package/dist/ui/schema/index.js.map +1 -1
  108. package/dist/ui/schema/lazy.js +2 -4
  109. package/dist/ui/schema/lazy.js.map +1 -1
  110. package/dist/utils/cn.js +1 -2
  111. package/dist/utils/deep-equal.js +1 -1
  112. package/dist/utils/id-to-title.js +1 -1
  113. package/dist/utils/lazy.js +1 -2
  114. package/dist/utils/lazy.js.map +1 -1
  115. package/dist/utils/merge-schema.js +1 -2
  116. package/dist/utils/merge-schema.js.map +1 -1
  117. package/dist/utils/pages/builder.js +1 -2
  118. package/dist/utils/pages/builder.js.map +1 -1
  119. package/dist/utils/pages/preset-auto.js +1 -2
  120. package/dist/utils/pages/preset-auto.js.map +1 -1
  121. package/dist/utils/pages/to-body.js +1 -1
  122. package/dist/utils/pages/to-static-data.js +1 -2
  123. package/dist/utils/pages/to-static-data.js.map +1 -1
  124. package/dist/utils/pages/to-text.js +1 -2
  125. package/dist/utils/pages/to-text.js.map +1 -1
  126. package/dist/utils/process-document.js +3 -5
  127. package/dist/utils/process-document.js.map +1 -1
  128. package/dist/utils/remove-undefined.js +1 -1
  129. package/dist/utils/remove-undefined.js.map +1 -1
  130. package/dist/utils/schema-to-string.js +1 -1
  131. package/dist/utils/schema-to-string.js.map +1 -1
  132. package/dist/utils/schema.js +1 -2
  133. package/dist/utils/schema.js.map +1 -1
  134. package/dist/utils/url.js +1 -1
  135. package/dist/utils/use-query.js +1 -2
  136. package/dist/utils/use-query.js.map +1 -1
  137. package/package.json +8 -8
  138. package/dist/_virtual/_rolldown/runtime.js +0 -5
  139. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/dereference.js +0 -43
  140. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/dereference.js.map +0 -1
  141. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/index.js +0 -29
  142. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/index.js.map +0 -1
  143. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/klona.js +0 -42
  144. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/klona.js.map +0 -1
  145. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/resolveRef.js +0 -46
  146. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/resolveRef.js.map +0 -1
  147. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/types.js +0 -12
  148. package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","names":[],"sources":["../../../src/ui/components/accordion.tsx"],"sourcesContent":["'use client';\n\nimport * as Primitive from '@radix-ui/react-accordion';\nimport { ChevronRight } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport { cn } from '@/utils/cn';\n\nexport function Accordions(props: ComponentProps<typeof Primitive.Root>) {\n return <Primitive.Root {...props} className={cn('divide-y divide-fd-border', props.className)} />;\n}\n\nexport function AccordionItem(props: ComponentProps<typeof Primitive.Item>) {\n return (\n <Primitive.Item {...props} className={cn('scroll-m-20', props.className)}>\n {props.children}\n </Primitive.Item>\n );\n}\n\nexport function AccordionContent(props: ComponentProps<typeof Primitive.Content>) {\n return (\n <Primitive.Content\n {...props}\n className={cn(\n 'overflow-hidden data-[state=closed]:animate-fd-accordion-up data-[state=open]:animate-fd-accordion-down',\n props.className,\n )}\n >\n {props.children}\n </Primitive.Content>\n );\n}\n\nexport function AccordionHeader(props: ComponentProps<typeof Primitive.Header>) {\n return (\n <Primitive.Header\n {...props}\n className={cn('not-prose flex py-2 text-fd-foreground font-medium', props.className)}\n >\n {props.children}\n </Primitive.Header>\n );\n}\n\nexport function AccordionTrigger(props: ComponentProps<typeof Primitive.Trigger>) {\n return (\n <Primitive.Trigger\n {...props}\n className={cn(\n 'flex flex-1 items-center gap-1 text-start group/accordion focus-visible:outline-none',\n props.className,\n )}\n >\n <ChevronRight className=\"size-3.5 text-fd-muted-foreground shrink-0 transition-transform group-focus-visible/accordion:text-fd-primary group-data-[state=open]/accordion:rotate-90\" />\n {props.children}\n </Primitive.Trigger>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,WAAW,OAA8C;AACvE,QAAO,oBAAC,UAAU;EAAK,GAAI;EAAO,WAAW,GAAG,6BAA6B,MAAM,UAAU;GAAI;;AAGnG,SAAgB,cAAc,OAA8C;AAC1E,QACE,oBAAC,UAAU;EAAK,GAAI;EAAO,WAAW,GAAG,eAAe,MAAM,UAAU;YACrE,MAAM;GACQ;;AAIrB,SAAgB,iBAAiB,OAAiD;AAChF,QACE,oBAAC,UAAU;EACT,GAAI;EACJ,WAAW,GACT,2GACA,MAAM,UACP;YAEA,MAAM;GACW;;AAIxB,SAAgB,gBAAgB,OAAgD;AAC9E,QACE,oBAAC,UAAU;EACT,GAAI;EACJ,WAAW,GAAG,sDAAsD,MAAM,UAAU;YAEnF,MAAM;GACU;;AAIvB,SAAgB,iBAAiB,OAAiD;AAChF,QACE,qBAAC,UAAU;EACT,GAAI;EACJ,WAAW,GACT,wFACA,MAAM,UACP;aAED,oBAAC,gBAAa,WAAU,8JAA8J,EACrL,MAAM;GACW"}
1
+ {"version":3,"file":"accordion.js","names":[],"sources":["../../../src/ui/components/accordion.tsx"],"sourcesContent":["'use client';\n\nimport * as Primitive from '@radix-ui/react-accordion';\nimport { ChevronRight } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport { cn } from '@/utils/cn';\n\nexport function Accordions(props: ComponentProps<typeof Primitive.Root>) {\n return <Primitive.Root {...props} className={cn('divide-y divide-fd-border', props.className)} />;\n}\n\nexport function AccordionItem(props: ComponentProps<typeof Primitive.Item>) {\n return (\n <Primitive.Item {...props} className={cn('scroll-m-20', props.className)}>\n {props.children}\n </Primitive.Item>\n );\n}\n\nexport function AccordionContent(props: ComponentProps<typeof Primitive.Content>) {\n return (\n <Primitive.Content\n {...props}\n className={cn(\n 'overflow-hidden data-[state=closed]:animate-fd-accordion-up data-[state=open]:animate-fd-accordion-down',\n props.className,\n )}\n >\n {props.children}\n </Primitive.Content>\n );\n}\n\nexport function AccordionHeader(props: ComponentProps<typeof Primitive.Header>) {\n return (\n <Primitive.Header\n {...props}\n className={cn('not-prose flex py-2 text-fd-foreground font-medium', props.className)}\n >\n {props.children}\n </Primitive.Header>\n );\n}\n\nexport function AccordionTrigger(props: ComponentProps<typeof Primitive.Trigger>) {\n return (\n <Primitive.Trigger\n {...props}\n className={cn(\n 'flex flex-1 items-center gap-1 text-start group/accordion focus-visible:outline-none',\n props.className,\n )}\n >\n <ChevronRight className=\"size-3.5 text-fd-muted-foreground shrink-0 transition-transform group-focus-visible/accordion:text-fd-primary group-data-[state=open]/accordion:rotate-90\" />\n {props.children}\n </Primitive.Trigger>\n );\n}\n"],"mappings":";;;;;;AAOA,SAAgB,WAAW,OAA8C;AACvE,QAAO,oBAAC,UAAU,MAAX;EAAgB,GAAI;EAAO,WAAW,GAAG,6BAA6B,MAAM,UAAU;EAAI,CAAA;;AAGnG,SAAgB,cAAc,OAA8C;AAC1E,QACE,oBAAC,UAAU,MAAX;EAAgB,GAAI;EAAO,WAAW,GAAG,eAAe,MAAM,UAAU;YACrE,MAAM;EACQ,CAAA;;AAIrB,SAAgB,iBAAiB,OAAiD;AAChF,QACE,oBAAC,UAAU,SAAX;EACE,GAAI;EACJ,WAAW,GACT,2GACA,MAAM,UACP;YAEA,MAAM;EACW,CAAA;;AAIxB,SAAgB,gBAAgB,OAAgD;AAC9E,QACE,oBAAC,UAAU,QAAX;EACE,GAAI;EACJ,WAAW,GAAG,sDAAsD,MAAM,UAAU;YAEnF,MAAM;EACU,CAAA;;AAIvB,SAAgB,iBAAiB,OAAiD;AAChF,QACE,qBAAC,UAAU,SAAX;EACE,GAAI;EACJ,WAAW,GACT,wFACA,MAAM,UACP;YALH,CAOE,oBAAC,cAAD,EAAc,WAAU,6JAA8J,CAAA,EACrL,MAAM,SACW"}
@@ -1,17 +1,15 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { cn } from "../../utils/cn.js";
4
3
  import * as React from "react";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
6
5
  import { X } from "lucide-react";
7
6
  import { buttonVariants } from "fumadocs-ui/components/ui/button";
8
7
  import * as DialogPrimitive from "@radix-ui/react-dialog";
9
-
10
8
  //#region src/ui/components/dialog.tsx
11
9
  const Dialog = DialogPrimitive.Root;
12
10
  const DialogTrigger = DialogPrimitive.Trigger;
13
11
  const DialogPortal = DialogPrimitive.Portal;
14
- const DialogClose = DialogPrimitive.Close;
12
+ DialogPrimitive.Close;
15
13
  const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
16
14
  ref,
17
15
  className: cn("fixed inset-0 z-50 bg-black/30 backdrop-blur-sm data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out", className),
@@ -54,7 +52,7 @@ const DialogDescription = React.forwardRef(({ className, ...props }, ref) => /*
54
52
  ...props
55
53
  }));
56
54
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
57
-
58
55
  //#endregion
59
56
  export { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger };
57
+
60
58
  //# sourceMappingURL=dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","names":[],"sources":["../../../src/ui/components/dialog.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport { cn } from '@/utils/cn';\nimport { buttonVariants } from 'fumadocs-ui/components/ui/button';\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.ComponentRef<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/30 backdrop-blur-sm data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 flex flex-col gap-4 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border bg-fd-popover p-4 shadow-lg rounded-xl duration-200 data-[state=open]:animate-fd-dialog-in data-[state=closed]:animate-fd-dialog-out focus-visible:outline-none',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n aria-label=\"Close\"\n className={cn(\n buttonVariants({ size: 'icon-sm', color: 'ghost' }),\n 'absolute end-2 top-2 text-fd-muted-foreground/70',\n )}\n >\n <X />\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-1.5 text-center sm:text-start', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-2', className)}\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ComponentRef<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-fd-muted-foreground', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"],"mappings":";;;;;;;;;;AAQA,MAAM,SAAS,gBAAgB;AAE/B,MAAM,gBAAgB,gBAAgB;AAEtC,MAAM,eAAe,gBAAgB;AAErC,MAAM,cAAc,gBAAgB;AAEpC,MAAM,gBAAgB,MAAM,YAGzB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB;CACV;CACL,WAAW,GACT,gIACA,UACD;CACD,GAAI;EACJ,CACF;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,gBAAgB,MAAM,YAGzB,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,qBAAC,2BACC,oBAAC,kBAAgB,EACjB,qBAAC,gBAAgB;CACV;CACL,WAAW,GACT,4QACA,UACD;CACD,GAAI;YAEH,UACD,oBAAC,gBAAgB;EACf,cAAW;EACX,WAAW,GACT,eAAe;GAAE,MAAM;GAAW,OAAO;GAAS,CAAC,EACnD,mDACD;YAED,oBAAC,MAAI;GACiB;EACA,IACb,CACf;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,gBAAgB,EAAE,WAAW,GAAG,YACpC,oBAAC;CAAI,WAAW,GAAG,mDAAmD,UAAU;CAAE,GAAI;EAAS;AAEjG,aAAa,cAAc;AAE3B,MAAM,gBAAgB,EAAE,WAAW,GAAG,YACpC,oBAAC;CACC,WAAW,GAAG,6DAA6D,UAAU;CACrF,GAAI;EACJ;AAEJ,aAAa,cAAc;AAE3B,MAAM,cAAc,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB;CACV;CACL,WAAW,GAAG,qDAAqD,UAAU;CAC7E,GAAI;EACJ,CACF;AACF,YAAY,cAAc,gBAAgB,MAAM;AAEhD,MAAM,oBAAoB,MAAM,YAG7B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB;CACV;CACL,WAAW,GAAG,oCAAoC,UAAU;CAC5D,GAAI;EACJ,CACF;AACF,kBAAkB,cAAc,gBAAgB,YAAY"}
1
+ {"version":3,"file":"dialog.js","names":[],"sources":["../../../src/ui/components/dialog.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport { cn } from '@/utils/cn';\nimport { buttonVariants } from 'fumadocs-ui/components/ui/button';\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.ComponentRef<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/30 backdrop-blur-sm data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 flex flex-col gap-4 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border bg-fd-popover p-4 shadow-lg rounded-xl duration-200 data-[state=open]:animate-fd-dialog-in data-[state=closed]:animate-fd-dialog-out focus-visible:outline-none',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n aria-label=\"Close\"\n className={cn(\n buttonVariants({ size: 'icon-sm', color: 'ghost' }),\n 'absolute end-2 top-2 text-fd-muted-foreground/70',\n )}\n >\n <X />\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-1.5 text-center sm:text-start', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-2', className)}\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ComponentRef<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-fd-muted-foreground', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"],"mappings":";;;;;;;;AAQA,MAAM,SAAS,gBAAgB;AAE/B,MAAM,gBAAgB,gBAAgB;AAEtC,MAAM,eAAe,gBAAgB;AAEjB,gBAAgB;AAEpC,MAAM,gBAAgB,MAAM,YAGzB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB,SAAjB;CACO;CACL,WAAW,GACT,gIACA,UACD;CACD,GAAI;CACJ,CAAA,CACF;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,gBAAgB,MAAM,YAGzB,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,qBAAC,cAAD,EAAA,UAAA,CACE,oBAAC,eAAD,EAAiB,CAAA,EACjB,qBAAC,gBAAgB,SAAjB;CACO;CACL,WAAW,GACT,4QACA,UACD;CACD,GAAI;WANN,CAQG,UACD,oBAAC,gBAAgB,OAAjB;EACE,cAAW;EACX,WAAW,GACT,eAAe;GAAE,MAAM;GAAW,OAAO;GAAS,CAAC,EACnD,mDACD;YAED,oBAAC,GAAD,EAAK,CAAA;EACiB,CAAA,CACA;GACb,EAAA,CAAA,CACf;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,gBAAgB,EAAE,WAAW,GAAG,YACpC,oBAAC,OAAD;CAAK,WAAW,GAAG,mDAAmD,UAAU;CAAE,GAAI;CAAS,CAAA;AAEjG,aAAa,cAAc;AAE3B,MAAM,gBAAgB,EAAE,WAAW,GAAG,YACpC,oBAAC,OAAD;CACE,WAAW,GAAG,6DAA6D,UAAU;CACrF,GAAI;CACJ,CAAA;AAEJ,aAAa,cAAc;AAE3B,MAAM,cAAc,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB,OAAjB;CACO;CACL,WAAW,GAAG,qDAAqD,UAAU;CAC7E,GAAI;CACJ,CAAA,CACF;AACF,YAAY,cAAc,gBAAgB,MAAM;AAEhD,MAAM,oBAAoB,MAAM,YAG7B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB,aAAjB;CACO;CACL,WAAW,GAAG,oCAAoC,UAAU;CAC5D,GAAI;CACJ,CAAA,CACF;AACF,kBAAkB,cAAc,gBAAgB,YAAY"}
@@ -2,7 +2,6 @@ import { cn } from "../../utils/cn.js";
2
2
  import * as React from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { cva } from "class-variance-authority";
5
-
6
5
  //#region src/ui/components/input.tsx
7
6
  const labelVariants = cva("text-xs font-medium text-fd-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
8
7
  const Input = React.forwardRef(({ className, type, ...props }, ref) => {
@@ -14,7 +13,7 @@ const Input = React.forwardRef(({ className, type, ...props }, ref) => {
14
13
  });
15
14
  });
16
15
  Input.displayName = "Input";
17
-
18
16
  //#endregion
19
17
  export { Input, labelVariants };
18
+
20
19
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","names":[],"sources":["../../../src/ui/components/input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '@/utils/cn';\nimport { cva } from 'class-variance-authority';\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const labelVariants = cva(\n 'text-xs font-medium text-fd-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\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 bg-fd-secondary px-2 py-1.5 text-[0.8125rem] text-fd-secondary-foreground transition-colors placeholder:text-fd-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-fd-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"],"mappings":";;;;;;AAMA,MAAa,gBAAgB,IAC3B,mGACD;AAED,MAAM,QAAQ,MAAM,YACjB,EAAE,WAAW,MAAM,GAAG,SAAS,QAAQ;AACtC,QACE,oBAAC;EACO;EACN,WAAW,GACT,iSACA,UACD;EACI;EACL,GAAI;GACJ;EAGP;AACD,MAAM,cAAc"}
1
+ {"version":3,"file":"input.js","names":[],"sources":["../../../src/ui/components/input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '@/utils/cn';\nimport { cva } from 'class-variance-authority';\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const labelVariants = cva(\n 'text-xs font-medium text-fd-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\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 bg-fd-secondary px-2 py-1.5 text-[0.8125rem] text-fd-secondary-foreground transition-colors placeholder:text-fd-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-fd-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"],"mappings":";;;;;AAMA,MAAa,gBAAgB,IAC3B,mGACD;AAED,MAAM,QAAQ,MAAM,YACjB,EAAE,WAAW,MAAM,GAAG,SAAS,QAAQ;AACtC,QACE,oBAAC,SAAD;EACQ;EACN,WAAW,GACT,iSACA,UACD;EACI;EACL,GAAI;EACJ,CAAA;EAGP;AACD,MAAM,cAAc"}
@@ -1,7 +1,6 @@
1
1
  import { cn } from "../../utils/cn.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { cva } from "class-variance-authority";
4
-
5
4
  //#region src/ui/components/method-label.tsx
6
5
  const badgeVariants = cva("font-mono font-medium", { variants: { color: {
7
6
  green: "text-green-600 dark:text-green-400",
@@ -36,7 +35,7 @@ function MethodLabel({ children, ...props }) {
36
35
  children: children.toUpperCase()
37
36
  });
38
37
  }
39
-
40
38
  //#endregion
41
39
  export { Badge, MethodLabel };
40
+
42
41
  //# sourceMappingURL=method-label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"method-label.js","names":[],"sources":["../../../src/ui/components/method-label.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\nimport { cn } from '@/utils/cn';\n\nexport const badgeVariants = cva('font-mono font-medium', {\n variants: {\n color: {\n green: 'text-green-600 dark:text-green-400',\n yellow: 'text-yellow-600 dark:text-yellow-400',\n red: 'text-red-600 dark:text-red-400',\n blue: 'text-blue-600 dark:text-blue-400',\n orange: 'text-orange-600 dark:text-orange-400',\n },\n },\n});\n\nfunction getMethodColor(method: string): VariantProps<typeof badgeVariants>['color'] {\n switch (method.toUpperCase()) {\n case 'PUT':\n return 'yellow';\n case 'PATCH':\n return 'orange';\n case 'POST':\n return 'blue';\n case 'DELETE':\n return 'red';\n default:\n return 'green';\n }\n}\n\nexport function Badge({\n className,\n color,\n ...props\n}: Omit<HTMLAttributes<HTMLSpanElement>, 'color'> & VariantProps<typeof badgeVariants>) {\n return (\n <span\n className={cn(\n badgeVariants({\n color,\n className,\n }),\n )}\n {...props}\n >\n {props.children}\n </span>\n );\n}\n\nexport function MethodLabel({\n children,\n ...props\n}: Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {\n children: string;\n}) {\n return (\n <Badge {...props} color={getMethodColor(children)}>\n {children.toUpperCase()}\n </Badge>\n );\n}\n"],"mappings":";;;;;AAIA,MAAa,gBAAgB,IAAI,yBAAyB,EACxD,UAAU,EACR,OAAO;CACL,OAAO;CACP,QAAQ;CACR,KAAK;CACL,MAAM;CACN,QAAQ;CACT,EACF,EACF,CAAC;AAEF,SAAS,eAAe,QAA6D;AACnF,SAAQ,OAAO,aAAa,EAA5B;EACE,KAAK,MACH,QAAO;EACT,KAAK,QACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAgB,MAAM,EACpB,WACA,OACA,GAAG,SACmF;AACtF,QACE,oBAAC;EACC,WAAW,GACT,cAAc;GACZ;GACA;GACD,CAAC,CACH;EACD,GAAI;YAEH,MAAM;GACF;;AAIX,SAAgB,YAAY,EAC1B,UACA,GAAG,SAGF;AACD,QACE,oBAAC;EAAM,GAAI;EAAO,OAAO,eAAe,SAAS;YAC9C,SAAS,aAAa;GACjB"}
1
+ {"version":3,"file":"method-label.js","names":[],"sources":["../../../src/ui/components/method-label.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\nimport { cn } from '@/utils/cn';\n\nexport const badgeVariants = cva('font-mono font-medium', {\n variants: {\n color: {\n green: 'text-green-600 dark:text-green-400',\n yellow: 'text-yellow-600 dark:text-yellow-400',\n red: 'text-red-600 dark:text-red-400',\n blue: 'text-blue-600 dark:text-blue-400',\n orange: 'text-orange-600 dark:text-orange-400',\n },\n },\n});\n\nfunction getMethodColor(method: string): VariantProps<typeof badgeVariants>['color'] {\n switch (method.toUpperCase()) {\n case 'PUT':\n return 'yellow';\n case 'PATCH':\n return 'orange';\n case 'POST':\n return 'blue';\n case 'DELETE':\n return 'red';\n default:\n return 'green';\n }\n}\n\nexport function Badge({\n className,\n color,\n ...props\n}: Omit<HTMLAttributes<HTMLSpanElement>, 'color'> & VariantProps<typeof badgeVariants>) {\n return (\n <span\n className={cn(\n badgeVariants({\n color,\n className,\n }),\n )}\n {...props}\n >\n {props.children}\n </span>\n );\n}\n\nexport function MethodLabel({\n children,\n ...props\n}: Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {\n children: string;\n}) {\n return (\n <Badge {...props} color={getMethodColor(children)}>\n {children.toUpperCase()}\n </Badge>\n );\n}\n"],"mappings":";;;;AAIA,MAAa,gBAAgB,IAAI,yBAAyB,EACxD,UAAU,EACR,OAAO;CACL,OAAO;CACP,QAAQ;CACR,KAAK;CACL,MAAM;CACN,QAAQ;CACT,EACF,EACF,CAAC;AAEF,SAAS,eAAe,QAA6D;AACnF,SAAQ,OAAO,aAAa,EAA5B;EACE,KAAK,MACH,QAAO;EACT,KAAK,QACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAgB,MAAM,EACpB,WACA,OACA,GAAG,SACmF;AACtF,QACE,oBAAC,QAAD;EACE,WAAW,GACT,cAAc;GACZ;GACA;GACD,CAAC,CACH;EACD,GAAI;YAEH,MAAM;EACF,CAAA;;AAIX,SAAgB,YAAY,EAC1B,UACA,GAAG,SAGF;AACD,QACE,oBAAC,OAAD;EAAO,GAAI;EAAO,OAAO,eAAe,SAAS;YAC9C,SAAS,aAAa;EACjB,CAAA"}
@@ -3,10 +3,9 @@ import { forwardRef } from "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { Check, ChevronDown, ChevronUp } from "lucide-react";
5
5
  import * as SelectPrimitive from "@radix-ui/react-select";
6
-
7
6
  //#region src/ui/components/select.tsx
8
7
  const Select = SelectPrimitive.Root;
9
- const SelectGroup = SelectPrimitive.Group;
8
+ SelectPrimitive.Group;
10
9
  const SelectValue = SelectPrimitive.Value;
11
10
  const SelectTrigger = forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SelectPrimitive.Trigger, {
12
11
  ref,
@@ -69,7 +68,7 @@ const SelectSeparator = forwardRef(({ className, ...props }, ref) => /* @__PURE_
69
68
  ...props
70
69
  }));
71
70
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
72
-
73
71
  //#endregion
74
72
  export { Select, SelectContent, SelectItem, SelectTrigger, SelectValue };
73
+
75
74
  //# sourceMappingURL=select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","names":[],"sources":["../../../src/ui/components/select.tsx"],"sourcesContent":["import * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\nimport React, { forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex items-center w-full rounded-md border p-2 gap-2 text-start text-sm text-fd-secondary-foreground bg-fd-secondary hover:bg-fd-accent focus:outline-none focus:ring focus:ring-fd-ring disabled:cursor-not-allowed disabled:opacity-50 data-placeholder:text-fd-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"ms-auto size-3.5 text-fd-muted-foreground shrink-0\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn('flex items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn('flex items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position, ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'z-50 overflow-hidden rounded-lg border bg-fd-popover text-fd-popover-foreground shadow-md',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport className=\"p-1\">{children}</SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('py-1.5 pe-2 ps-6 text-sm font-semibold', className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'flex select-none flex-row items-center rounded-md py-1.5 px-2 text-sm outline-none focus:bg-fd-accent focus:text-fd-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"ms-auto\">\n <Check className=\"size-3.5 text-fd-primary\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('my-1 h-px bg-fd-muted', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n"],"mappings":";;;;;;;AAKA,MAAM,SAAS,gBAAgB;AAE/B,MAAM,cAAc,gBAAgB;AAEpC,MAAM,cAAc,gBAAgB;AAEpC,MAAM,gBAAgB,YAGnB,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,qBAAC,gBAAgB;CACV;CACL,WAAW,GACT,sRACA,UACD;CACD,GAAI;YAEH,UACD,oBAAC,gBAAgB;EAAK;YACpB,oBAAC,eAAY,WAAU,uDAAuD;GACzD;EACC,CAC1B;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,uBAAuB,YAG1B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB;CACV;CACL,WAAW,GAAG,yCAAyC,UAAU;CACjE,GAAI;WAEJ,oBAAC,aAAU,WAAU,WAAW;EACD,CACjC;AACF,qBAAqB,cAAc,gBAAgB,eAAe;AAElE,MAAM,yBAAyB,YAG5B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB;CACV;CACL,WAAW,GAAG,yCAAyC,UAAU;CACjE,GAAI;WAEJ,oBAAC,eAAY,WAAU,WAAW;EACD,CACnC;AACF,uBAAuB,cAAc,gBAAgB,iBAAiB;AAEtE,MAAM,gBAAgB,YAGnB,EAAE,WAAW,UAAU,UAAU,GAAG,SAAS,QAC9C,oBAAC,gBAAgB,oBACf,qBAAC,gBAAgB;CACV;CACL,WAAW,GACT,6FACA,UACD;CACS;CACV,GAAI;;EAEJ,oBAAC,yBAAuB;EACxB,oBAAC,gBAAgB;GAAS,WAAU;GAAO;IAAoC;EAC/E,oBAAC,2BAAyB;;EACF,GACH,CACzB;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,cAAc,YAGjB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB;CACV;CACL,WAAW,GAAG,0CAA0C,UAAU;CAClE,GAAI;EACJ,CACF;AACF,YAAY,cAAc,gBAAgB,MAAM;AAEhD,MAAM,aAAa,YAGhB,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,qBAAC,gBAAgB;CACV;CACL,WAAW,GACT,wMACA,UACD;CACD,GAAI;YAEJ,oBAAC,gBAAgB,YAAU,WAAoC,EAC/D,oBAAC,gBAAgB;EAAc,WAAU;YACvC,oBAAC,SAAM,WAAU,6BAA6B;GAChB;EACX,CACvB;AACF,WAAW,cAAc,gBAAgB,KAAK;AAE9C,MAAM,kBAAkB,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB;CACV;CACL,WAAW,GAAG,yBAAyB,UAAU;CACjD,GAAI;EACJ,CACF;AACF,gBAAgB,cAAc,gBAAgB,UAAU"}
1
+ {"version":3,"file":"select.js","names":[],"sources":["../../../src/ui/components/select.tsx"],"sourcesContent":["import * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\nimport React, { forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex items-center w-full rounded-md border p-2 gap-2 text-start text-sm text-fd-secondary-foreground bg-fd-secondary hover:bg-fd-accent focus:outline-none focus:ring focus:ring-fd-ring disabled:cursor-not-allowed disabled:opacity-50 data-placeholder:text-fd-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"ms-auto size-3.5 text-fd-muted-foreground shrink-0\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn('flex items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn('flex items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position, ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'z-50 overflow-hidden rounded-lg border bg-fd-popover text-fd-popover-foreground shadow-md',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport className=\"p-1\">{children}</SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('py-1.5 pe-2 ps-6 text-sm font-semibold', className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'flex select-none flex-row items-center rounded-md py-1.5 px-2 text-sm outline-none focus:bg-fd-accent focus:text-fd-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"ms-auto\">\n <Check className=\"size-3.5 text-fd-primary\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('my-1 h-px bg-fd-muted', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n"],"mappings":";;;;;;AAKA,MAAM,SAAS,gBAAgB;AAEX,gBAAgB;AAEpC,MAAM,cAAc,gBAAgB;AAEpC,MAAM,gBAAgB,YAGnB,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,qBAAC,gBAAgB,SAAjB;CACO;CACL,WAAW,GACT,sRACA,UACD;CACD,GAAI;WANN,CAQG,UACD,oBAAC,gBAAgB,MAAjB;EAAsB,SAAA;YACpB,oBAAC,aAAD,EAAa,WAAU,sDAAuD,CAAA;EACzD,CAAA,CACC;GAC1B;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,uBAAuB,YAG1B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB,gBAAjB;CACO;CACL,WAAW,GAAG,yCAAyC,UAAU;CACjE,GAAI;WAEJ,oBAAC,WAAD,EAAW,WAAU,UAAW,CAAA;CACD,CAAA,CACjC;AACF,qBAAqB,cAAc,gBAAgB,eAAe;AAElE,MAAM,yBAAyB,YAG5B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB,kBAAjB;CACO;CACL,WAAW,GAAG,yCAAyC,UAAU;CACjE,GAAI;WAEJ,oBAAC,aAAD,EAAa,WAAU,UAAW,CAAA;CACD,CAAA,CACnC;AACF,uBAAuB,cAAc,gBAAgB,iBAAiB;AAEtE,MAAM,gBAAgB,YAGnB,EAAE,WAAW,UAAU,UAAU,GAAG,SAAS,QAC9C,oBAAC,gBAAgB,QAAjB,EAAA,UACE,qBAAC,gBAAgB,SAAjB;CACO;CACL,WAAW,GACT,6FACA,UACD;CACS;CACV,GAAI;WAPN;EASE,oBAAC,sBAAD,EAAwB,CAAA;EACxB,oBAAC,gBAAgB,UAAjB;GAA0B,WAAU;GAAO;GAAoC,CAAA;EAC/E,oBAAC,wBAAD,EAA0B,CAAA;EACF;IACH,CAAA,CACzB;AACF,cAAc,cAAc,gBAAgB,QAAQ;AAEpD,MAAM,cAAc,YAGjB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB,OAAjB;CACO;CACL,WAAW,GAAG,0CAA0C,UAAU;CAClE,GAAI;CACJ,CAAA,CACF;AACF,YAAY,cAAc,gBAAgB,MAAM;AAEhD,MAAM,aAAa,YAGhB,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,qBAAC,gBAAgB,MAAjB;CACO;CACL,WAAW,GACT,wMACA,UACD;CACD,GAAI;WANN,CAQE,oBAAC,gBAAgB,UAAjB,EAA2B,UAAoC,CAAA,EAC/D,oBAAC,gBAAgB,eAAjB;EAA+B,WAAU;YACvC,oBAAC,OAAD,EAAO,WAAU,4BAA6B,CAAA;EAChB,CAAA,CACX;GACvB;AACF,WAAW,cAAc,gBAAgB,KAAK;AAE9C,MAAM,kBAAkB,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,gBAAgB,WAAjB;CACO;CACL,WAAW,GAAG,yBAAyB,UAAU;CACjD,GAAI;CACJ,CAAA,CACF;AACF,gBAAgB,cAAc,gBAAgB,UAAU"}
@@ -1,12 +1,10 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { defaultAdapters } from "../../requests/media/adapter.js";
4
3
  import { useStorageKey } from "../client/storage-key.js";
5
4
  import { createCodeUsageGeneratorRegistry } from "../../requests/generators/index.js";
6
5
  import { registerDefault } from "../../requests/generators/all.js";
7
6
  import { createContext, use, useEffect, useMemo, useRef, useState } from "react";
8
7
  import { jsx } from "react/jsx-runtime";
9
-
10
8
  //#region src/ui/contexts/api.tsx
11
9
  const ServerContext = createContext(null);
12
10
  const ApiContext = createContext(null);
@@ -118,7 +116,7 @@ function getDefaultValues(server) {
118
116
  for (const [k, v] of Object.entries(server.variables)) if (v.default !== void 0) out[k] = String(v.default);
119
117
  return out;
120
118
  }
121
-
122
119
  //#endregion
123
120
  export { ApiProvider, ServerProvider, useApiContext, useServerContext, useServerSelectContext };
121
+
124
122
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","names":[],"sources":["../../../src/ui/contexts/api.tsx"],"sourcesContent":["'use client';\nimport {\n createContext,\n type ReactNode,\n type RefObject,\n use,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { RenderContext, ServerObject } from '@/types';\nimport { defaultAdapters, type MediaAdapter } from '@/requests/media/adapter';\nimport type { NoReference } from '@/utils/schema';\nimport { useStorageKey } from '../client/storage-key';\nimport type { APIPageClientOptions } from '../client';\nimport {\n type CodeUsageGeneratorRegistry,\n createCodeUsageGeneratorRegistry,\n} from '@/requests/generators';\nimport { registerDefault } from '@/requests/generators/all';\n\ninterface InheritFromContext extends Pick<RenderContext, 'shikiOptions'> {\n client: APIPageClientOptions;\n}\n\nexport interface ServerProviderProps {\n /**\n * Base URL for API requests\n */\n defaultBaseUrl?: string;\n\n servers: NoReference<ServerObject>[];\n}\n\ninterface ServerContextType extends ServerProviderProps {\n /**\n * ref to selected API server (to query)\n */\n serverRef: RefObject<SelectedServer | null>;\n}\n\nconst ServerContext = createContext<ServerContextType | null>(null);\n\nexport type ApiProviderProps = InheritFromContext;\n\nexport interface SelectedServer {\n url: string;\n name?: string;\n variables: Record<string, string>;\n}\n\ninterface ApiContextType extends InheritFromContext {\n mediaAdapters: Record<string, MediaAdapter>;\n codeUsages: CodeUsageGeneratorRegistry;\n}\n\ninterface ServerSelectType {\n server: SelectedServer | null;\n setServer: (value: string) => void;\n setServerVariables: (value: Record<string, string>) => void;\n}\n\nconst ApiContext = createContext<ApiContextType | null>(null);\nconst ServerSelectContext = createContext<ServerSelectType | null>(null);\n\nexport function useApiContext(): ApiContextType {\n const ctx = use(ApiContext);\n if (!ctx) throw new Error('Component must be used under <ApiProvider />');\n\n return ctx;\n}\n\nexport function useServerContext() {\n return use(ServerContext)!;\n}\n\nexport function useServerSelectContext(): ServerSelectType {\n const ctx = use(ServerSelectContext);\n if (!ctx) throw new Error('Component must be used under <ApiProvider />');\n\n return ctx;\n}\n\nexport function ApiProvider({\n children,\n shikiOptions,\n client,\n}: ApiProviderProps & { children: ReactNode }) {\n return (\n <ApiContext\n value={useMemo(() => {\n let codeUsages: CodeUsageGeneratorRegistry;\n if (client.codeUsages) {\n codeUsages = createCodeUsageGeneratorRegistry(client.codeUsages);\n } else {\n codeUsages = createCodeUsageGeneratorRegistry();\n registerDefault(codeUsages);\n }\n\n return {\n shikiOptions,\n client,\n codeUsages,\n mediaAdapters: {\n ...defaultAdapters,\n ...client.mediaAdapters,\n },\n };\n }, [client, shikiOptions])}\n >\n {children}\n </ApiContext>\n );\n}\n\nexport function ServerProvider({\n servers,\n defaultBaseUrl,\n children,\n}: ServerProviderProps & { children: ReactNode }) {\n const serverRef = useRef<SelectedServer | null>(null);\n\n return (\n <ServerContext value={useMemo(() => ({ servers, serverRef }), [servers])}>\n <ServerSelectProvider defaultBaseUrl={defaultBaseUrl}>{children}</ServerSelectProvider>\n </ServerContext>\n );\n}\n\nfunction ServerSelectProvider({\n defaultBaseUrl,\n children,\n}: Pick<ServerProviderProps, 'defaultBaseUrl'> & {\n children: ReactNode;\n}) {\n const { servers, serverRef } = use(ServerContext)!;\n const storageKeys = useStorageKey();\n const [server, setServer] = useState<SelectedServer | null>(() => {\n const defaultItem = defaultBaseUrl\n ? servers.find((item) => item.url === defaultBaseUrl)\n : servers[0];\n\n return defaultItem\n ? {\n name: defaultItem.name,\n url: defaultItem.url!,\n variables: getDefaultValues(defaultItem),\n }\n : null;\n });\n serverRef.current = server;\n\n useEffect(() => {\n const cached = localStorage.getItem(storageKeys.of('server-url'));\n if (!cached) return;\n\n try {\n const obj: unknown = JSON.parse(cached);\n if (\n typeof obj === 'object' &&\n obj !== null &&\n 'url' in obj &&\n typeof obj.url === 'string' &&\n 'variables' in obj &&\n typeof obj.variables === 'object' &&\n obj.variables !== null\n ) {\n setServer(obj as SelectedServer);\n }\n } catch {\n // ignore\n }\n }, [storageKeys]);\n\n return (\n <ServerSelectContext\n value={useMemo(\n () => ({\n server,\n setServerVariables(variables) {\n setServer((prev) => {\n if (!prev) return null;\n\n const updated = { ...prev, variables };\n localStorage.setItem(storageKeys.of('server-url'), JSON.stringify(updated));\n return updated;\n });\n },\n setServer(value) {\n const obj = servers.find((item) => item.url === value);\n if (!obj) return;\n\n const result: SelectedServer = {\n name: obj.name,\n url: value,\n variables: getDefaultValues(obj),\n };\n\n localStorage.setItem(storageKeys.of('server-url'), JSON.stringify(result));\n setServer(result);\n },\n }),\n [server, servers, storageKeys],\n )}\n >\n {children}\n </ServerSelectContext>\n );\n}\n\nfunction getDefaultValues(server: NoReference<ServerObject>): Record<string, string> {\n const out: Record<string, string> = {};\n if (!server.variables) return out;\n\n for (const [k, v] of Object.entries(server.variables)) {\n if (v.default !== undefined) out[k] = String(v.default);\n }\n\n return out;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"api.js","names":[],"sources":["../../../src/ui/contexts/api.tsx"],"sourcesContent":["'use client';\nimport {\n createContext,\n type ReactNode,\n type RefObject,\n use,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { RenderContext, ServerObject } from '@/types';\nimport { defaultAdapters, type MediaAdapter } from '@/requests/media/adapter';\nimport type { NoReference } from '@/utils/schema';\nimport { useStorageKey } from '../client/storage-key';\nimport type { APIPageClientOptions } from '../client';\nimport {\n type CodeUsageGeneratorRegistry,\n createCodeUsageGeneratorRegistry,\n} from '@/requests/generators';\nimport { registerDefault } from '@/requests/generators/all';\n\ninterface InheritFromContext extends Pick<RenderContext, 'shikiOptions'> {\n client: APIPageClientOptions;\n}\n\nexport interface ServerProviderProps {\n /**\n * Base URL for API requests\n */\n defaultBaseUrl?: string;\n\n servers: NoReference<ServerObject>[];\n}\n\ninterface ServerContextType extends ServerProviderProps {\n /**\n * ref to selected API server (to query)\n */\n serverRef: RefObject<SelectedServer | null>;\n}\n\nconst ServerContext = createContext<ServerContextType | null>(null);\n\nexport type ApiProviderProps = InheritFromContext;\n\nexport interface SelectedServer {\n url: string;\n name?: string;\n variables: Record<string, string>;\n}\n\ninterface ApiContextType extends InheritFromContext {\n mediaAdapters: Record<string, MediaAdapter>;\n codeUsages: CodeUsageGeneratorRegistry;\n}\n\ninterface ServerSelectType {\n server: SelectedServer | null;\n setServer: (value: string) => void;\n setServerVariables: (value: Record<string, string>) => void;\n}\n\nconst ApiContext = createContext<ApiContextType | null>(null);\nconst ServerSelectContext = createContext<ServerSelectType | null>(null);\n\nexport function useApiContext(): ApiContextType {\n const ctx = use(ApiContext);\n if (!ctx) throw new Error('Component must be used under <ApiProvider />');\n\n return ctx;\n}\n\nexport function useServerContext() {\n return use(ServerContext)!;\n}\n\nexport function useServerSelectContext(): ServerSelectType {\n const ctx = use(ServerSelectContext);\n if (!ctx) throw new Error('Component must be used under <ApiProvider />');\n\n return ctx;\n}\n\nexport function ApiProvider({\n children,\n shikiOptions,\n client,\n}: ApiProviderProps & { children: ReactNode }) {\n return (\n <ApiContext\n value={useMemo(() => {\n let codeUsages: CodeUsageGeneratorRegistry;\n if (client.codeUsages) {\n codeUsages = createCodeUsageGeneratorRegistry(client.codeUsages);\n } else {\n codeUsages = createCodeUsageGeneratorRegistry();\n registerDefault(codeUsages);\n }\n\n return {\n shikiOptions,\n client,\n codeUsages,\n mediaAdapters: {\n ...defaultAdapters,\n ...client.mediaAdapters,\n },\n };\n }, [client, shikiOptions])}\n >\n {children}\n </ApiContext>\n );\n}\n\nexport function ServerProvider({\n servers,\n defaultBaseUrl,\n children,\n}: ServerProviderProps & { children: ReactNode }) {\n const serverRef = useRef<SelectedServer | null>(null);\n\n return (\n <ServerContext value={useMemo(() => ({ servers, serverRef }), [servers])}>\n <ServerSelectProvider defaultBaseUrl={defaultBaseUrl}>{children}</ServerSelectProvider>\n </ServerContext>\n );\n}\n\nfunction ServerSelectProvider({\n defaultBaseUrl,\n children,\n}: Pick<ServerProviderProps, 'defaultBaseUrl'> & {\n children: ReactNode;\n}) {\n const { servers, serverRef } = use(ServerContext)!;\n const storageKeys = useStorageKey();\n const [server, setServer] = useState<SelectedServer | null>(() => {\n const defaultItem = defaultBaseUrl\n ? servers.find((item) => item.url === defaultBaseUrl)\n : servers[0];\n\n return defaultItem\n ? {\n name: defaultItem.name,\n url: defaultItem.url!,\n variables: getDefaultValues(defaultItem),\n }\n : null;\n });\n serverRef.current = server;\n\n useEffect(() => {\n const cached = localStorage.getItem(storageKeys.of('server-url'));\n if (!cached) return;\n\n try {\n const obj: unknown = JSON.parse(cached);\n if (\n typeof obj === 'object' &&\n obj !== null &&\n 'url' in obj &&\n typeof obj.url === 'string' &&\n 'variables' in obj &&\n typeof obj.variables === 'object' &&\n obj.variables !== null\n ) {\n setServer(obj as SelectedServer);\n }\n } catch {\n // ignore\n }\n }, [storageKeys]);\n\n return (\n <ServerSelectContext\n value={useMemo(\n () => ({\n server,\n setServerVariables(variables) {\n setServer((prev) => {\n if (!prev) return null;\n\n const updated = { ...prev, variables };\n localStorage.setItem(storageKeys.of('server-url'), JSON.stringify(updated));\n return updated;\n });\n },\n setServer(value) {\n const obj = servers.find((item) => item.url === value);\n if (!obj) return;\n\n const result: SelectedServer = {\n name: obj.name,\n url: value,\n variables: getDefaultValues(obj),\n };\n\n localStorage.setItem(storageKeys.of('server-url'), JSON.stringify(result));\n setServer(result);\n },\n }),\n [server, servers, storageKeys],\n )}\n >\n {children}\n </ServerSelectContext>\n );\n}\n\nfunction getDefaultValues(server: NoReference<ServerObject>): Record<string, string> {\n const out: Record<string, string> = {};\n if (!server.variables) return out;\n\n for (const [k, v] of Object.entries(server.variables)) {\n if (v.default !== undefined) out[k] = String(v.default);\n }\n\n return out;\n}\n"],"mappings":";;;;;;;;AA0CA,MAAM,gBAAgB,cAAwC,KAAK;AAqBnE,MAAM,aAAa,cAAqC,KAAK;AAC7D,MAAM,sBAAsB,cAAuC,KAAK;AAExE,SAAgB,gBAAgC;CAC9C,MAAM,MAAM,IAAI,WAAW;AAC3B,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,+CAA+C;AAEzE,QAAO;;AAGT,SAAgB,mBAAmB;AACjC,QAAO,IAAI,cAAc;;AAG3B,SAAgB,yBAA2C;CACzD,MAAM,MAAM,IAAI,oBAAoB;AACpC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,+CAA+C;AAEzE,QAAO;;AAGT,SAAgB,YAAY,EAC1B,UACA,cACA,UAC6C;AAC7C,QACE,oBAAC,YAAD;EACE,OAAO,cAAc;GACnB,IAAI;AACJ,OAAI,OAAO,WACT,cAAa,iCAAiC,OAAO,WAAW;QAC3D;AACL,iBAAa,kCAAkC;AAC/C,oBAAgB,WAAW;;AAG7B,UAAO;IACL;IACA;IACA;IACA,eAAe;KACb,GAAG;KACH,GAAG,OAAO;KACX;IACF;KACA,CAAC,QAAQ,aAAa,CAAC;EAEzB;EACU,CAAA;;AAIjB,SAAgB,eAAe,EAC7B,SACA,gBACA,YACgD;CAChD,MAAM,YAAY,OAA8B,KAAK;AAErD,QACE,oBAAC,eAAD;EAAe,OAAO,eAAe;GAAE;GAAS;GAAW,GAAG,CAAC,QAAQ,CAAC;YACtE,oBAAC,sBAAD;GAAsC;GAAiB;GAAgC,CAAA;EACzE,CAAA;;AAIpB,SAAS,qBAAqB,EAC5B,gBACA,YAGC;CACD,MAAM,EAAE,SAAS,cAAc,IAAI,cAAc;CACjD,MAAM,cAAc,eAAe;CACnC,MAAM,CAAC,QAAQ,aAAa,eAAsC;EAChE,MAAM,cAAc,iBAChB,QAAQ,MAAM,SAAS,KAAK,QAAQ,eAAe,GACnD,QAAQ;AAEZ,SAAO,cACH;GACE,MAAM,YAAY;GAClB,KAAK,YAAY;GACjB,WAAW,iBAAiB,YAAY;GACzC,GACD;GACJ;AACF,WAAU,UAAU;AAEpB,iBAAgB;EACd,MAAM,SAAS,aAAa,QAAQ,YAAY,GAAG,aAAa,CAAC;AACjE,MAAI,CAAC,OAAQ;AAEb,MAAI;GACF,MAAM,MAAe,KAAK,MAAM,OAAO;AACvC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,SAAS,OACT,OAAO,IAAI,QAAQ,YACnB,eAAe,OACf,OAAO,IAAI,cAAc,YACzB,IAAI,cAAc,KAElB,WAAU,IAAsB;UAE5B;IAGP,CAAC,YAAY,CAAC;AAEjB,QACE,oBAAC,qBAAD;EACE,OAAO,eACE;GACL;GACA,mBAAmB,WAAW;AAC5B,eAAW,SAAS;AAClB,SAAI,CAAC,KAAM,QAAO;KAElB,MAAM,UAAU;MAAE,GAAG;MAAM;MAAW;AACtC,kBAAa,QAAQ,YAAY,GAAG,aAAa,EAAE,KAAK,UAAU,QAAQ,CAAC;AAC3E,YAAO;MACP;;GAEJ,UAAU,OAAO;IACf,MAAM,MAAM,QAAQ,MAAM,SAAS,KAAK,QAAQ,MAAM;AACtD,QAAI,CAAC,IAAK;IAEV,MAAM,SAAyB;KAC7B,MAAM,IAAI;KACV,KAAK;KACL,WAAW,iBAAiB,IAAI;KACjC;AAED,iBAAa,QAAQ,YAAY,GAAG,aAAa,EAAE,KAAK,UAAU,OAAO,CAAC;AAC1E,cAAU,OAAO;;GAEpB,GACD;GAAC;GAAQ;GAAS;GAAY,CAC/B;EAEA;EACmB,CAAA;;AAI1B,SAAS,iBAAiB,QAA2D;CACnF,MAAM,MAA8B,EAAE;AACtC,KAAI,CAAC,OAAO,UAAW,QAAO;AAE9B,MAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,OAAO,UAAU,CACnD,KAAI,EAAE,YAAY,KAAA,EAAW,KAAI,KAAK,OAAO,EAAE,QAAQ;AAGzD,QAAO"}
@@ -1,11 +1,9 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { wrapLazy } from "../../utils/lazy.js";
4
-
5
3
  //#region src/ui/contexts/api.lazy.ts
6
4
  const ApiProviderLazy = wrapLazy(() => import("./api.js").then((mod) => ({ default: mod.ApiProvider })));
7
5
  const ServerProviderLazy = wrapLazy(() => import("./api.js").then((mod) => ({ default: mod.ServerProvider })));
8
-
9
6
  //#endregion
10
7
  export { ApiProviderLazy, ServerProviderLazy };
8
+
11
9
  //# sourceMappingURL=api.lazy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.lazy.js","names":[],"sources":["../../../src/ui/contexts/api.lazy.ts"],"sourcesContent":["'use client';\nimport { wrapLazy } from '../../utils/lazy';\n\nexport const ApiProviderLazy = wrapLazy(() =>\n import('./api').then((mod) => ({ default: mod.ApiProvider })),\n);\n\nexport const ServerProviderLazy = wrapLazy(() =>\n import('./api').then((mod) => ({ default: mod.ServerProvider })),\n);\n"],"mappings":";;;;;AAGA,MAAa,kBAAkB,eAC7B,OAAO,YAAS,MAAM,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,CAC9D;AAED,MAAa,qBAAqB,eAChC,OAAO,YAAS,MAAM,SAAS,EAAE,SAAS,IAAI,gBAAgB,EAAE,CACjE"}
1
+ {"version":3,"file":"api.lazy.js","names":[],"sources":["../../../src/ui/contexts/api.lazy.ts"],"sourcesContent":["'use client';\nimport { wrapLazy } from '../../utils/lazy';\n\nexport const ApiProviderLazy = wrapLazy(() =>\n import('./api').then((mod) => ({ default: mod.ApiProvider })),\n);\n\nexport const ServerProviderLazy = wrapLazy(() =>\n import('./api').then((mod) => ({ default: mod.ServerProvider })),\n);\n"],"mappings":";;;AAGA,MAAa,kBAAkB,eAC7B,OAAO,YAAS,MAAM,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,CAC9D;AAED,MAAa,qBAAqB,eAChC,OAAO,YAAS,MAAM,SAAS,EAAE,SAAS,IAAI,gBAAgB,EAAE,CACjE"}
@@ -1,9 +1,7 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { jsx } from "react/jsx-runtime";
4
3
  import { configDefault } from "fumadocs-core/highlight";
5
4
  import * as base from "fumadocs-core/highlight/core/client";
6
-
7
5
  //#region src/ui/full.client.tsx
8
6
  function ShikiConfigProvider({ children }) {
9
7
  const config = base.useShikiConfigOptional() ?? configDefault;
@@ -12,7 +10,7 @@ function ShikiConfigProvider({ children }) {
12
10
  children
13
11
  });
14
12
  }
15
-
16
13
  //#endregion
17
14
  export { ShikiConfigProvider };
15
+
18
16
  //# sourceMappingURL=full.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"full.client.js","names":[],"sources":["../../src/ui/full.client.tsx"],"sourcesContent":["'use client';\nimport * as base from 'fumadocs-core/highlight/core/client';\nimport { configDefault } from 'fumadocs-core/highlight';\nimport type { ReactNode } from 'react';\n\nexport function ShikiConfigProvider({ children }: { children: ReactNode }) {\n const config = base.useShikiConfigOptional() ?? configDefault;\n return <base.ShikiConfigProvider config={config}>{children}</base.ShikiConfigProvider>;\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,oBAAoB,EAAE,YAAqC;CACzE,MAAM,SAAS,KAAK,wBAAwB,IAAI;AAChD,QAAO,oBAAC,KAAK;EAA4B;EAAS;GAAoC"}
1
+ {"version":3,"file":"full.client.js","names":[],"sources":["../../src/ui/full.client.tsx"],"sourcesContent":["'use client';\nimport * as base from 'fumadocs-core/highlight/core/client';\nimport { configDefault } from 'fumadocs-core/highlight';\nimport type { ReactNode } from 'react';\n\nexport function ShikiConfigProvider({ children }: { children: ReactNode }) {\n const config = base.useShikiConfigOptional() ?? configDefault;\n return <base.ShikiConfigProvider config={config}>{children}</base.ShikiConfigProvider>;\n}\n"],"mappings":";;;;;AAKA,SAAgB,oBAAoB,EAAE,YAAqC;CACzE,MAAM,SAAS,KAAK,wBAAwB,IAAI;AAChD,QAAO,oBAAC,KAAK,qBAAN;EAAkC;EAAS;EAAoC,CAAA"}
package/dist/ui/full.js CHANGED
@@ -2,7 +2,6 @@ import { createAPIPage as createAPIPage$1 } from "./base.js";
2
2
  import { ShikiConfigProvider } from "./full.client.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { configDefault } from "fumadocs-core/highlight";
5
-
6
5
  //#region src/ui/full.tsx
7
6
  function createAPIPage(server, options = {}) {
8
7
  const APIPage = createAPIPage$1(server, {
@@ -27,7 +26,7 @@ function createAPIPage(server, options = {}) {
27
26
  return /* @__PURE__ */ jsx(ShikiConfigProvider, { children: /* @__PURE__ */ jsx(APIPage, { ...props }) });
28
27
  };
29
28
  }
30
-
31
29
  //#endregion
32
30
  export { createAPIPage };
31
+
33
32
  //# sourceMappingURL=full.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"full.js","names":["base.createAPIPage"],"sources":["../../src/ui/full.tsx"],"sourcesContent":["import type { OpenAPIServer } from '@/server';\nimport * as base from './base';\nimport { configDefault } from 'fumadocs-core/highlight';\nimport { ApiPageProps } from './api-page';\nimport { ShikiConfigProvider } from './full.client';\n\nexport type CreateAPIPageOptions = Partial<base.CreateAPIPageOptions>;\n\nexport function createAPIPage(server: OpenAPIServer, options: CreateAPIPageOptions = {}) {\n const APIPage = base.createAPIPage(server, {\n shiki: configDefault,\n async generateTypeScriptDefinitions(schema, ctx) {\n if (typeof schema !== 'object') return;\n const { compile } = await import('@fumari/json-schema-ts');\n\n try {\n return compile(schema, {\n name: 'Response',\n readOnly: ctx.readOnly,\n writeOnly: ctx.writeOnly,\n getSchemaId: ctx.schema.getRawRef,\n });\n } catch (e) {\n console.warn('Failed to generate typescript schema:', e);\n }\n },\n ...options,\n });\n\n return function APIPageFull(props: ApiPageProps) {\n return (\n <ShikiConfigProvider>\n <APIPage {...props} />\n </ShikiConfigProvider>\n );\n };\n}\n"],"mappings":";;;;;;AAQA,SAAgB,cAAc,QAAuB,UAAgC,EAAE,EAAE;CACvF,MAAM,UAAUA,gBAAmB,QAAQ;EACzC,OAAO;EACP,MAAM,8BAA8B,QAAQ,KAAK;AAC/C,OAAI,OAAO,WAAW,SAAU;GAChC,MAAM,EAAE,YAAY,MAAM,OAAO;AAEjC,OAAI;AACF,WAAO,QAAQ,QAAQ;KACrB,MAAM;KACN,UAAU,IAAI;KACd,WAAW,IAAI;KACf,aAAa,IAAI,OAAO;KACzB,CAAC;YACK,GAAG;AACV,YAAQ,KAAK,yCAAyC,EAAE;;;EAG5D,GAAG;EACJ,CAAC;AAEF,QAAO,SAAS,YAAY,OAAqB;AAC/C,SACE,oBAAC,iCACC,oBAAC,WAAQ,GAAI,QAAS,GACF"}
1
+ {"version":3,"file":"full.js","names":["base.createAPIPage"],"sources":["../../src/ui/full.tsx"],"sourcesContent":["import type { OpenAPIServer } from '@/server';\nimport * as base from './base';\nimport { configDefault } from 'fumadocs-core/highlight';\nimport { ApiPageProps } from './api-page';\nimport { ShikiConfigProvider } from './full.client';\n\nexport type CreateAPIPageOptions = Partial<base.CreateAPIPageOptions>;\n\nexport function createAPIPage(server: OpenAPIServer, options: CreateAPIPageOptions = {}) {\n const APIPage = base.createAPIPage(server, {\n shiki: configDefault,\n async generateTypeScriptDefinitions(schema, ctx) {\n if (typeof schema !== 'object') return;\n const { compile } = await import('@fumari/json-schema-ts');\n\n try {\n return compile(schema, {\n name: 'Response',\n readOnly: ctx.readOnly,\n writeOnly: ctx.writeOnly,\n getSchemaId: ctx.schema.getRawRef,\n });\n } catch (e) {\n console.warn('Failed to generate typescript schema:', e);\n }\n },\n ...options,\n });\n\n return function APIPageFull(props: ApiPageProps) {\n return (\n <ShikiConfigProvider>\n <APIPage {...props} />\n </ShikiConfigProvider>\n );\n };\n}\n"],"mappings":";;;;;AAQA,SAAgB,cAAc,QAAuB,UAAgC,EAAE,EAAE;CACvF,MAAM,UAAUA,gBAAmB,QAAQ;EACzC,OAAO;EACP,MAAM,8BAA8B,QAAQ,KAAK;AAC/C,OAAI,OAAO,WAAW,SAAU;GAChC,MAAM,EAAE,YAAY,MAAM,OAAO;AAEjC,OAAI;AACF,WAAO,QAAQ,QAAQ;KACrB,MAAM;KACN,UAAU,IAAI;KACd,WAAW,IAAI;KACf,aAAa,IAAI,OAAO;KACzB,CAAC;YACK,GAAG;AACV,YAAQ,KAAK,yCAAyC,EAAE;;;EAG5D,GAAG;EACJ,CAAC;AAEF,QAAO,SAAS,YAAY,OAAqB;AAC/C,SACE,oBAAC,qBAAD,EAAA,UACE,oBAAC,SAAD,EAAS,GAAI,OAAS,CAAA,EACF,CAAA"}
package/dist/ui/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  import { createAPIPage } from "./full.js";
2
-
3
- export { createAPIPage };
2
+ export { createAPIPage };
@@ -1,5 +1,4 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { cn } from "../../utils/cn.js";
4
3
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../components/select.js";
5
4
  import { createContext, use, useMemo, useState } from "react";
@@ -7,7 +6,6 @@ import { jsx, jsxs } from "react/jsx-runtime";
7
6
  import { Check, Copy } from "lucide-react";
8
7
  import { buttonVariants } from "fumadocs-ui/components/ui/button";
9
8
  import { useCopyButton } from "fumadocs-ui/utils/use-copy-button";
10
-
11
9
  //#region src/ui/operation/client.tsx
12
10
  function CopyTypeScriptPanel({ name, code, className }) {
13
11
  const [isChecked, onCopy] = useCopyButton(() => {
@@ -69,7 +67,7 @@ function SelectTabTrigger({ items, className, ...props }) {
69
67
  }, value)) })]
70
68
  });
71
69
  }
72
-
73
70
  //#endregion
74
71
  export { CopyTypeScriptPanel, SelectTab, SelectTabTrigger, SelectTabs };
72
+
75
73
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../../src/ui/operation/client.tsx"],"sourcesContent":["'use client';\n\nimport { useCopyButton } from 'fumadocs-ui/utils/use-copy-button';\nimport { buttonVariants } from 'fumadocs-ui/components/ui/button';\nimport { cn } from '@/utils/cn';\nimport { Check, Copy } from 'lucide-react';\nimport { type ComponentProps, createContext, type ReactNode, use, useMemo, useState } from 'react';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/ui/components/select';\n\nexport function CopyTypeScriptPanel({\n name,\n code,\n className,\n}: {\n code: string;\n name: 'response body' | 'request body';\n className?: string;\n}) {\n const [isChecked, onCopy] = useCopyButton(() => {\n void navigator.clipboard.writeText(code);\n });\n\n return (\n <div\n className={cn(\n 'flex items-start justify-between gap-2 bg-fd-card text-fd-card-foreground border rounded-xl p-3 not-prose mb-4 last:mb-0',\n className,\n )}\n >\n <div>\n <p className=\"font-medium text-sm mb-2\">TypeScript Definitions</p>\n <p className=\"text-xs text-fd-muted-foreground\">Use the {name} type in TypeScript.</p>\n </div>\n <button\n onClick={onCopy}\n className={cn(\n buttonVariants({\n color: 'secondary',\n className: 'p-2 gap-2',\n size: 'sm',\n }),\n )}\n >\n {isChecked ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n Copy\n </button>\n </div>\n );\n}\n\nconst Context = createContext<{\n type: string | null;\n setType: (type: string) => void;\n} | null>(null);\n\nexport function SelectTabs({\n defaultValue,\n children,\n}: {\n defaultValue?: string;\n children: ReactNode;\n}) {\n const [type, setType] = useState<string | null>(defaultValue ?? null);\n\n return <Context value={useMemo(() => ({ type, setType }), [type])}>{children}</Context>;\n}\n\nexport function SelectTab({\n value,\n ...props\n}: ComponentProps<'div'> & {\n value: string;\n}) {\n const ctx = use(Context);\n if (value !== ctx?.type) return;\n\n return <div {...props}>{props.children}</div>;\n}\n\nexport function SelectTabTrigger({\n items,\n className,\n ...props\n}: ComponentProps<typeof SelectTrigger> & {\n items: {\n label: ReactNode;\n value: string;\n }[];\n}) {\n const { type, setType } = use(Context)!;\n\n return (\n <Select value={type ?? ''} onValueChange={setType}>\n <SelectTrigger className={cn('not-prose w-fit min-w-0 *:min-w-0', className)} {...props}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {items.map(({ label, value }) => (\n <SelectItem key={value} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n"],"mappings":";;;;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,MACA,MACA,aAKC;CACD,MAAM,CAAC,WAAW,UAAU,oBAAoB;AAC9C,EAAK,UAAU,UAAU,UAAU,KAAK;GACxC;AAEF,QACE,qBAAC;EACC,WAAW,GACT,4HACA,UACD;aAED,qBAAC,oBACC,oBAAC;GAAE,WAAU;aAA2B;IAA0B,EAClE,qBAAC;GAAE,WAAU;;IAAmC;IAAS;IAAK;;IAAwB,IAClF,EACN,qBAAC;GACC,SAAS;GACT,WAAW,GACT,eAAe;IACb,OAAO;IACP,WAAW;IACX,MAAM;IACP,CAAC,CACH;cAEA,YAAY,oBAAC,SAAM,WAAU,aAAa,GAAG,oBAAC,QAAK,WAAU,aAAa,EAAC;IAErE;GACL;;AAIV,MAAM,UAAU,cAGN,KAAK;AAEf,SAAgB,WAAW,EACzB,cACA,YAIC;CACD,MAAM,CAAC,MAAM,WAAW,SAAwB,gBAAgB,KAAK;AAErE,QAAO,oBAAC;EAAQ,OAAO,eAAe;GAAE;GAAM;GAAS,GAAG,CAAC,KAAK,CAAC;EAAG;GAAmB;;AAGzF,SAAgB,UAAU,EACxB,OACA,GAAG,SAGF;AAED,KAAI,UADQ,IAAI,QAAQ,EACL,KAAM;AAEzB,QAAO,oBAAC;EAAI,GAAI;YAAQ,MAAM;GAAe;;AAG/C,SAAgB,iBAAiB,EAC/B,OACA,WACA,GAAG,SAMF;CACD,MAAM,EAAE,MAAM,YAAY,IAAI,QAAQ;AAEtC,QACE,qBAAC;EAAO,OAAO,QAAQ;EAAI,eAAe;aACxC,oBAAC;GAAc,WAAW,GAAG,qCAAqC,UAAU;GAAE,GAAI;aAChF,oBAAC,gBAAc;IACD,EAChB,oBAAC,2BACE,MAAM,KAAK,EAAE,OAAO,YACnB,oBAAC;GAA8B;aAC5B;KADc,MAEJ,CACb,GACY;GACT"}
1
+ {"version":3,"file":"client.js","names":[],"sources":["../../../src/ui/operation/client.tsx"],"sourcesContent":["'use client';\n\nimport { useCopyButton } from 'fumadocs-ui/utils/use-copy-button';\nimport { buttonVariants } from 'fumadocs-ui/components/ui/button';\nimport { cn } from '@/utils/cn';\nimport { Check, Copy } from 'lucide-react';\nimport { type ComponentProps, createContext, type ReactNode, use, useMemo, useState } from 'react';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/ui/components/select';\n\nexport function CopyTypeScriptPanel({\n name,\n code,\n className,\n}: {\n code: string;\n name: 'response body' | 'request body';\n className?: string;\n}) {\n const [isChecked, onCopy] = useCopyButton(() => {\n void navigator.clipboard.writeText(code);\n });\n\n return (\n <div\n className={cn(\n 'flex items-start justify-between gap-2 bg-fd-card text-fd-card-foreground border rounded-xl p-3 not-prose mb-4 last:mb-0',\n className,\n )}\n >\n <div>\n <p className=\"font-medium text-sm mb-2\">TypeScript Definitions</p>\n <p className=\"text-xs text-fd-muted-foreground\">Use the {name} type in TypeScript.</p>\n </div>\n <button\n onClick={onCopy}\n className={cn(\n buttonVariants({\n color: 'secondary',\n className: 'p-2 gap-2',\n size: 'sm',\n }),\n )}\n >\n {isChecked ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n Copy\n </button>\n </div>\n );\n}\n\nconst Context = createContext<{\n type: string | null;\n setType: (type: string) => void;\n} | null>(null);\n\nexport function SelectTabs({\n defaultValue,\n children,\n}: {\n defaultValue?: string;\n children: ReactNode;\n}) {\n const [type, setType] = useState<string | null>(defaultValue ?? null);\n\n return <Context value={useMemo(() => ({ type, setType }), [type])}>{children}</Context>;\n}\n\nexport function SelectTab({\n value,\n ...props\n}: ComponentProps<'div'> & {\n value: string;\n}) {\n const ctx = use(Context);\n if (value !== ctx?.type) return;\n\n return <div {...props}>{props.children}</div>;\n}\n\nexport function SelectTabTrigger({\n items,\n className,\n ...props\n}: ComponentProps<typeof SelectTrigger> & {\n items: {\n label: ReactNode;\n value: string;\n }[];\n}) {\n const { type, setType } = use(Context)!;\n\n return (\n <Select value={type ?? ''} onValueChange={setType}>\n <SelectTrigger className={cn('not-prose w-fit min-w-0 *:min-w-0', className)} {...props}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {items.map(({ label, value }) => (\n <SelectItem key={value} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n"],"mappings":";;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,MACA,MACA,aAKC;CACD,MAAM,CAAC,WAAW,UAAU,oBAAoB;AACzC,YAAU,UAAU,UAAU,KAAK;GACxC;AAEF,QACE,qBAAC,OAAD;EACE,WAAW,GACT,4HACA,UACD;YAJH,CAME,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,KAAD;GAAG,WAAU;aAA2B;GAA0B,CAAA,EAClE,qBAAC,KAAD;GAAG,WAAU;aAAb;IAAgD;IAAS;IAAK;IAAwB;KAClF,EAAA,CAAA,EACN,qBAAC,UAAD;GACE,SAAS;GACT,WAAW,GACT,eAAe;IACb,OAAO;IACP,WAAW;IACX,MAAM;IACP,CAAC,CACH;aARH,CAUG,YAAY,oBAAC,OAAD,EAAO,WAAU,YAAa,CAAA,GAAG,oBAAC,MAAD,EAAM,WAAU,YAAa,CAAA,EAAC,OAErE;KACL;;;AAIV,MAAM,UAAU,cAGN,KAAK;AAEf,SAAgB,WAAW,EACzB,cACA,YAIC;CACD,MAAM,CAAC,MAAM,WAAW,SAAwB,gBAAgB,KAAK;AAErE,QAAO,oBAAC,SAAD;EAAS,OAAO,eAAe;GAAE;GAAM;GAAS,GAAG,CAAC,KAAK,CAAC;EAAG;EAAmB,CAAA;;AAGzF,SAAgB,UAAU,EACxB,OACA,GAAG,SAGF;AAED,KAAI,UADQ,IAAI,QAAQ,EACL,KAAM;AAEzB,QAAO,oBAAC,OAAD;EAAK,GAAI;YAAQ,MAAM;EAAe,CAAA;;AAG/C,SAAgB,iBAAiB,EAC/B,OACA,WACA,GAAG,SAMF;CACD,MAAM,EAAE,MAAM,YAAY,IAAI,QAAQ;AAEtC,QACE,qBAAC,QAAD;EAAQ,OAAO,QAAQ;EAAI,eAAe;YAA1C,CACE,oBAAC,eAAD;GAAe,WAAW,GAAG,qCAAqC,UAAU;GAAE,GAAI;aAChF,oBAAC,aAAD,EAAe,CAAA;GACD,CAAA,EAChB,oBAAC,eAAD,EAAA,UACG,MAAM,KAAK,EAAE,OAAO,YACnB,oBAAC,YAAD;GAA+B;aAC5B;GACU,EAFI,MAEJ,CACb,EACY,CAAA,CACT"}
@@ -14,7 +14,6 @@ import { RequestTabs, getExampleRequests } from "./request-tabs.js";
14
14
  import { ServerProviderLazy } from "../contexts/api.lazy.js";
15
15
  import { Fragment } from "react";
16
16
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
17
-
18
17
  //#region src/ui/operation/index.tsx
19
18
  const ParamTypes = {
20
19
  path: "Path Parameters",
@@ -439,7 +438,7 @@ function AuthProperty({ name, type, deprecated = false, scopes = [], className,
439
438
  })]
440
439
  });
441
440
  }
442
-
443
441
  //#endregion
444
442
  export { Operation };
443
+
445
444
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/ui/operation/index.tsx"],"sourcesContent":["import { type ComponentProps, Fragment, type ReactNode } from 'react';\nimport type {\n CallbackObject,\n MethodInformation,\n RenderContext,\n SecuritySchemeObject,\n} from '@/types';\nimport { createMethod, methodKeys, type NoReference, type ResolvedSchema } from '@/utils/schema';\nimport { idToTitle } from '@/utils/id-to-title';\nimport { Schema } from '../schema';\nimport { UsageTabs } from '@/ui/operation/usage-tabs';\nimport { Badge, MethodLabel } from '@/ui/components/method-label';\nimport { CopyTypeScriptPanel, SelectTab, SelectTabs, SelectTabTrigger } from './client';\nimport {\n AccordionContent,\n AccordionHeader,\n AccordionItem,\n Accordions,\n AccordionTrigger,\n} from '@/ui/components/accordion';\nimport { isMediaTypeSupported } from '@/requests/media/adapter';\nimport { cn } from '@/utils/cn';\nimport { APIPlayground } from '@/playground';\nimport { getExampleRequests, RequestTabs } from './request-tabs';\nimport { UsageTabsProviderLazy } from './usage-tabs/lazy';\nimport { ServerProviderLazy } from '../contexts/api.lazy';\n\nconst ParamTypes = {\n path: 'Path Parameters',\n query: 'Query Parameters',\n header: 'Header Parameters',\n cookie: 'Cookie Parameters',\n};\n\nexport async function Operation({\n type = 'operation',\n path,\n method,\n ctx,\n showTitle,\n showDescription,\n headingLevel = 2,\n}: {\n type?: 'webhook' | 'operation';\n path: string;\n method: MethodInformation;\n ctx: RenderContext;\n\n showTitle?: boolean;\n showDescription?: boolean;\n headingLevel?: number;\n}) {\n const {\n schema: { dereferenced },\n } = ctx;\n const body = method.requestBody;\n let headNode: ReactNode = null;\n const descriptionNode =\n showDescription && method.description && ctx.renderMarkdown(method.description);\n let bodyNode: ReactNode = null;\n let authNode: ReactNode = null;\n let responseNode: ReactNode = null;\n let callbacksNode: ReactNode = null;\n\n if (showTitle) {\n const title = method.summary || (method.operationId ? idToTitle(method.operationId) : path);\n\n headNode = ctx.renderHeading(headingLevel, title);\n headingLevel++;\n }\n\n const contentTypes = body?.content ? Object.entries(body.content) : null;\n\n if (body && contentTypes && contentTypes.length > 0) {\n const items = contentTypes.map(([key]) => ({\n label: <code className=\"text-xs\">{key}</code>,\n value: key,\n }));\n\n bodyNode = (\n <SelectTabs defaultValue={items[0].value}>\n <div className=\"flex gap-2 items-center justify-between mt-10\">\n {ctx.renderHeading(headingLevel, 'Request Body', {\n className: 'my-0!',\n })}\n {contentTypes.length > 1 ? (\n <SelectTabTrigger items={items} className=\"font-medium\" />\n ) : (\n <p className=\"text-fd-muted-foreground not-prose\">{items[0].label}</p>\n )}\n </div>\n {body.description && ctx.renderMarkdown(body.description)}\n {contentTypes.map(async ([type, content]) => {\n if (!isMediaTypeSupported(type, ctx.mediaAdapters)) {\n throw new Error(`Media type ${type} is not supported (in ${path})`);\n }\n\n const ts = content.schema\n ? await ctx.generateTypeScriptDefinitions(content.schema, {\n operation: method,\n readOnly: false,\n writeOnly: true,\n ...ctx,\n })\n : undefined;\n\n return (\n <SelectTab key={type} value={type}>\n {ts && <CopyTypeScriptPanel name=\"request body\" code={ts} className=\"mt-4\" />}\n <Schema\n client={{\n name: 'body',\n as: 'body',\n required: body.required,\n }}\n root={(content.schema ?? {}) as ResolvedSchema}\n readOnly={method.method === 'GET'}\n writeOnly={method.method !== 'GET'}\n ctx={ctx}\n />\n </SelectTab>\n );\n })}\n </SelectTabs>\n );\n }\n\n if (method.responses && ctx.showResponseSchema !== false) {\n const statuses = Object.keys(method.responses);\n\n responseNode = (\n <>\n {ctx.renderHeading(headingLevel, 'Response Body')}\n\n <Accordions type=\"multiple\">\n {statuses.map((status) => (\n <ResponseAccordion key={status} status={status} operation={method} ctx={ctx} />\n ))}\n </Accordions>\n </>\n );\n }\n\n const parameterNode = Object.entries(ParamTypes).map(([type, title]) => {\n const params = method.parameters?.filter((param) => param.in === type);\n if (!params || params.length === 0) return;\n\n return (\n <Fragment key={type}>\n {ctx.renderHeading(headingLevel, title)}\n <div className=\"flex flex-col\">\n {params.map(\n (param) =>\n param.schema != null && (\n <Schema\n key={param.name}\n client={{\n name: param.name!,\n required: param.required,\n }}\n root={\n typeof param.schema === 'object'\n ? {\n ...param.schema,\n description: param.description ?? param.schema?.description,\n deprecated:\n (param.deprecated ?? false) || (param.schema?.deprecated ?? false),\n }\n : param.schema\n }\n readOnly={method.method === 'GET'}\n writeOnly={method.method !== 'GET'}\n ctx={ctx}\n />\n ),\n )}\n </div>\n </Fragment>\n );\n });\n\n const securities = (method.security ?? dereferenced.security ?? []).filter(\n (v) => Object.keys(v).length > 0,\n );\n\n if (type === 'operation' && securities.length > 0) {\n const securitySchemes = dereferenced.components?.securitySchemes;\n const items = securities.map((security, i) => {\n return {\n value: String(i),\n label: (\n <div className=\"flex flex-col text-xs min-w-0\">\n {Object.entries(security).map(([key, scopes]) => (\n <code key={key} className=\"truncate\">\n <span className=\"font-medium\">{key}</span>{' '}\n {scopes.length > 0 && (\n <span className=\"text-fd-muted-foreground\">{scopes.join(', ')}</span>\n )}\n </code>\n ))}\n </div>\n ),\n };\n });\n\n authNode = (\n <SelectTabs defaultValue={items[0].value}>\n <div className=\"flex items-start justify-between gap-2 mt-10\">\n {ctx.renderHeading(headingLevel, 'Authorization', {\n className: 'my-0!',\n })}\n {items.length > 1 ? (\n <SelectTabTrigger items={items} />\n ) : (\n <div className=\"not-prose\">{items[0].label}</div>\n )}\n </div>\n {securities.map((security, i) => (\n <SelectTab key={i} value={items[i].value}>\n {Object.entries(security).map(([key, scopes]) => {\n const scheme = securitySchemes?.[key];\n if (!scheme) return;\n\n return <AuthScheme key={key} scheme={scheme} scopes={scopes} ctx={ctx} />;\n })}\n </SelectTab>\n ))}\n </SelectTabs>\n );\n }\n\n const callbacks = method.callbacks ? Object.entries(method.callbacks) : null;\n if (callbacks && callbacks.length > 0) {\n const items = callbacks.map(([key]) => ({\n label: <code className=\"text-xs\">{key}</code>,\n value: key,\n }));\n\n callbacksNode = (\n <SelectTabs defaultValue={items[0].value}>\n <div className=\"flex justify-between gap-2 items-end mt-10\">\n {ctx.renderHeading(headingLevel, 'Callbacks', {\n className: 'my-0!',\n })}\n {callbacks.length > 1 ? (\n <SelectTabTrigger items={items} className=\"font-medium\" />\n ) : (\n <p className=\"text-fd-muted-foreground not-prose\">{items[0].label}</p>\n )}\n </div>\n {callbacks.map(([name, callback]) => (\n <SelectTab key={name} value={name}>\n <WebhookCallback callback={callback} ctx={ctx} headingLevel={headingLevel} />\n </SelectTab>\n ))}\n </SelectTabs>\n );\n }\n\n let { renderOperationLayout, renderWebhookLayout } = ctx.content ?? {};\n if (type === 'operation') {\n renderOperationLayout ??= (slots) => {\n return (\n <div className=\"flex flex-col gap-x-6 gap-y-4 @4xl:flex-row @4xl:items-start\">\n <div className=\"min-w-0 flex-1\">\n {slots.header}\n {slots.apiPlayground}\n {slots.description}\n {slots.authSchemes}\n {slots.paremeters}\n {slots.body}\n {slots.responses}\n {slots.callbacks}\n </div>\n <div className=\"@4xl:sticky @4xl:top-[calc(var(--fd-docs-row-1,2rem)+1rem)] @4xl:w-[400px]\">\n {slots.apiExample}\n </div>\n </div>\n );\n };\n\n const playgroundEnabled = ctx.playground?.enabled ?? true;\n let content = await renderOperationLayout(\n {\n header: headNode,\n description: descriptionNode,\n authSchemes: authNode,\n body: bodyNode,\n callbacks: callbacksNode,\n paremeters: parameterNode,\n responses: responseNode,\n apiPlayground: playgroundEnabled ? (\n <APIPlayground path={path} method={method} ctx={ctx} />\n ) : (\n <div className=\"flex flex-row items-center gap-2.5 p-3 rounded-xl border bg-fd-card text-fd-card-foreground not-prose\">\n <MethodLabel className=\"text-xs\">{method.method}</MethodLabel>\n <code className=\"flex-1 overflow-auto text-nowrap text-[0.8125rem] text-fd-muted-foreground\">\n {path}\n </code>\n </div>\n ),\n apiExample: <UsageTabs method={method} ctx={ctx} />,\n },\n ctx,\n method,\n );\n\n content = (\n <UsageTabsProviderLazy\n defaultExampleId={method['x-exclusiveCodeSample'] ?? method['x-selectedCodeSample']}\n route={path}\n examples={getExampleRequests(path, method, ctx)}\n >\n {content}\n </UsageTabsProviderLazy>\n );\n if (method.servers) {\n content = <ServerProviderLazy servers={method.servers}>{content}</ServerProviderLazy>;\n }\n\n return content;\n } else {\n renderWebhookLayout ??= (slots) => (\n <div className=\"flex flex-col-reverse gap-x-6 gap-y-4 @4xl:flex-row @4xl:items-start\">\n <div className=\"min-w-0 flex-1\">\n {slots.header}\n {slots.description}\n {slots.authSchemes}\n {slots.paremeters}\n {slots.body}\n {slots.responses}\n {slots.callbacks}\n </div>\n <div className=\"@4xl:sticky @4xl:top-[calc(var(--fd-docs-row-1,2rem)+1rem)] @4xl:w-[400px]\">\n {slots.requests}\n </div>\n </div>\n );\n return renderWebhookLayout({\n header: headNode,\n description: descriptionNode,\n authSchemes: authNode,\n body: bodyNode,\n callbacks: callbacksNode,\n paremeters: parameterNode,\n responses: responseNode,\n requests: <RequestTabs path={path} operation={method} ctx={ctx} />,\n });\n }\n}\n\nasync function ResponseAccordion({\n status,\n operation,\n ctx,\n}: {\n status: string;\n operation: MethodInformation;\n ctx: RenderContext;\n}) {\n const response = operation.responses![status];\n const contentTypes = response.content ? Object.entries(response.content) : [];\n let wrapper = (children: ReactNode) => children;\n let selectorNode: ReactNode = null;\n\n if (contentTypes.length > 0) {\n const items = contentTypes.map(([key]) => ({\n label: <code className=\"text-xs\">{key}</code>,\n value: key,\n }));\n\n selectorNode =\n items.length === 1 ? (\n <p className=\"text-fd-muted-foreground not-prose\">{items[0].label}</p>\n ) : (\n <SelectTabTrigger items={items} />\n );\n wrapper = (children) => <SelectTabs defaultValue={items[0].value}>{children}</SelectTabs>;\n }\n\n return wrapper(\n <AccordionItem value={status}>\n <AccordionHeader>\n <AccordionTrigger className=\"font-mono\">{status}</AccordionTrigger>\n {selectorNode}\n </AccordionHeader>\n <AccordionContent className=\"ps-4.5\">\n {response.description && (\n <div className=\"prose-no-margin mb-2\">{ctx.renderMarkdown(response.description)}</div>\n )}\n {contentTypes.map(async ([type, resType]) => {\n const schema = resType.schema;\n const ts = schema\n ? await ctx.generateTypeScriptDefinitions(schema, {\n readOnly: true,\n writeOnly: false,\n operation,\n _internal_legacy: {\n statusCode: status,\n contentType: type,\n },\n ...ctx,\n })\n : undefined;\n\n return (\n <SelectTab key={type} value={type} className=\"mb-2\">\n {ts && <CopyTypeScriptPanel name=\"response body\" code={ts} />}\n {schema && (\n <div className=\"border px-3 py-2 rounded-lg\">\n <Schema\n client={{\n name: 'response',\n as: 'body',\n }}\n root={schema}\n readOnly\n ctx={ctx}\n />\n </div>\n )}\n </SelectTab>\n );\n })}\n </AccordionContent>\n </AccordionItem>,\n );\n}\n\nfunction WebhookCallback({\n callback,\n ctx,\n headingLevel,\n}: {\n callback: NoReference<CallbackObject>;\n ctx: RenderContext;\n headingLevel: number;\n}) {\n const pathItems = Object.entries(callback);\n\n return (\n <Accordions type=\"single\" collapsible>\n {pathItems.map(([path, pathItem]) => {\n const pathNodes = methodKeys.map((method) => {\n const operation = pathItem[method];\n if (!operation) return null;\n\n return (\n <div key={method} className=\"border p-3 my-2 @container prose-no-margin rounded-lg\">\n <Operation\n type=\"webhook\"\n path={path}\n headingLevel={headingLevel + 1}\n method={createMethod(method, pathItem, operation)}\n ctx={ctx}\n />\n </div>\n );\n });\n\n return (\n <AccordionItem key={path} value={path}>\n <AccordionHeader>\n <AccordionTrigger className=\"font-mono\">{path}</AccordionTrigger>\n </AccordionHeader>\n <AccordionContent>{pathNodes}</AccordionContent>\n </AccordionItem>\n );\n })}\n </Accordions>\n );\n}\n\nfunction AuthScheme({\n scheme,\n scopes,\n ctx,\n}: {\n scheme: SecuritySchemeObject;\n scopes: string[];\n ctx: RenderContext;\n}) {\n if (scheme.type === 'http' || scheme.type === 'oauth2') {\n return (\n <AuthProperty\n name=\"Authorization\"\n type={\n scheme.type === 'http' && scheme.scheme === 'basic' ? `Basic <token>` : 'Bearer <token>'\n }\n deprecated={scheme.deprecated}\n scopes={scopes}\n >\n {scheme.description && ctx.renderMarkdown(scheme.description)}\n <p>\n In: <code>header</code>\n </p>\n </AuthProperty>\n );\n }\n\n if (scheme.type === 'apiKey') {\n return (\n <AuthProperty\n name={scheme.name!}\n type=\"<token>\"\n deprecated={scheme.deprecated}\n scopes={scopes}\n >\n {scheme.description && ctx.renderMarkdown(scheme.description)}\n <p>\n In: <code>{scheme.in}</code>\n </p>\n </AuthProperty>\n );\n }\n\n if (scheme.type === 'openIdConnect') {\n return (\n <AuthProperty\n name=\"OpenID Connect\"\n type=\"<token>\"\n deprecated={scheme.deprecated}\n scopes={scopes}\n >\n {scheme.description && ctx.renderMarkdown(scheme.description)}\n </AuthProperty>\n );\n }\n}\n\nfunction AuthProperty({\n name,\n type,\n deprecated = false,\n scopes = [],\n className,\n ...props\n}: ComponentProps<'div'> & {\n name: string;\n type: string;\n deprecated?: boolean;\n scopes?: string[];\n}) {\n return (\n <div className={cn('text-sm border-t my-4 first:border-t-0', className)}>\n <div className=\"flex flex-wrap items-center gap-3 not-prose\">\n <span className=\"font-medium font-mono text-fd-primary\">{name}</span>\n <span className=\"text-sm font-mono text-fd-muted-foreground\">{type}</span>\n {deprecated && <Badge color=\"red\">Deprecated</Badge>}\n </div>\n <div className=\"prose-no-margin pt-2.5 empty:hidden\">\n {props.children}\n {scopes.length > 0 && (\n <p>\n Scope: <code>{scopes.join(', ')}</code>\n </p>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/ui/operation/index.tsx"],"sourcesContent":["import { type ComponentProps, Fragment, type ReactNode } from 'react';\nimport type {\n CallbackObject,\n MethodInformation,\n RenderContext,\n SecuritySchemeObject,\n} from '@/types';\nimport { createMethod, methodKeys, type NoReference, type ResolvedSchema } from '@/utils/schema';\nimport { idToTitle } from '@/utils/id-to-title';\nimport { Schema } from '../schema';\nimport { UsageTabs } from '@/ui/operation/usage-tabs';\nimport { Badge, MethodLabel } from '@/ui/components/method-label';\nimport { CopyTypeScriptPanel, SelectTab, SelectTabs, SelectTabTrigger } from './client';\nimport {\n AccordionContent,\n AccordionHeader,\n AccordionItem,\n Accordions,\n AccordionTrigger,\n} from '@/ui/components/accordion';\nimport { isMediaTypeSupported } from '@/requests/media/adapter';\nimport { cn } from '@/utils/cn';\nimport { APIPlayground } from '@/playground';\nimport { getExampleRequests, RequestTabs } from './request-tabs';\nimport { UsageTabsProviderLazy } from './usage-tabs/lazy';\nimport { ServerProviderLazy } from '../contexts/api.lazy';\n\nconst ParamTypes = {\n path: 'Path Parameters',\n query: 'Query Parameters',\n header: 'Header Parameters',\n cookie: 'Cookie Parameters',\n};\n\nexport async function Operation({\n type = 'operation',\n path,\n method,\n ctx,\n showTitle,\n showDescription,\n headingLevel = 2,\n}: {\n type?: 'webhook' | 'operation';\n path: string;\n method: MethodInformation;\n ctx: RenderContext;\n\n showTitle?: boolean;\n showDescription?: boolean;\n headingLevel?: number;\n}) {\n const {\n schema: { dereferenced },\n } = ctx;\n const body = method.requestBody;\n let headNode: ReactNode = null;\n const descriptionNode =\n showDescription && method.description && ctx.renderMarkdown(method.description);\n let bodyNode: ReactNode = null;\n let authNode: ReactNode = null;\n let responseNode: ReactNode = null;\n let callbacksNode: ReactNode = null;\n\n if (showTitle) {\n const title = method.summary || (method.operationId ? idToTitle(method.operationId) : path);\n\n headNode = ctx.renderHeading(headingLevel, title);\n headingLevel++;\n }\n\n const contentTypes = body?.content ? Object.entries(body.content) : null;\n\n if (body && contentTypes && contentTypes.length > 0) {\n const items = contentTypes.map(([key]) => ({\n label: <code className=\"text-xs\">{key}</code>,\n value: key,\n }));\n\n bodyNode = (\n <SelectTabs defaultValue={items[0].value}>\n <div className=\"flex gap-2 items-center justify-between mt-10\">\n {ctx.renderHeading(headingLevel, 'Request Body', {\n className: 'my-0!',\n })}\n {contentTypes.length > 1 ? (\n <SelectTabTrigger items={items} className=\"font-medium\" />\n ) : (\n <p className=\"text-fd-muted-foreground not-prose\">{items[0].label}</p>\n )}\n </div>\n {body.description && ctx.renderMarkdown(body.description)}\n {contentTypes.map(async ([type, content]) => {\n if (!isMediaTypeSupported(type, ctx.mediaAdapters)) {\n throw new Error(`Media type ${type} is not supported (in ${path})`);\n }\n\n const ts = content.schema\n ? await ctx.generateTypeScriptDefinitions(content.schema, {\n operation: method,\n readOnly: false,\n writeOnly: true,\n ...ctx,\n })\n : undefined;\n\n return (\n <SelectTab key={type} value={type}>\n {ts && <CopyTypeScriptPanel name=\"request body\" code={ts} className=\"mt-4\" />}\n <Schema\n client={{\n name: 'body',\n as: 'body',\n required: body.required,\n }}\n root={(content.schema ?? {}) as ResolvedSchema}\n readOnly={method.method === 'GET'}\n writeOnly={method.method !== 'GET'}\n ctx={ctx}\n />\n </SelectTab>\n );\n })}\n </SelectTabs>\n );\n }\n\n if (method.responses && ctx.showResponseSchema !== false) {\n const statuses = Object.keys(method.responses);\n\n responseNode = (\n <>\n {ctx.renderHeading(headingLevel, 'Response Body')}\n\n <Accordions type=\"multiple\">\n {statuses.map((status) => (\n <ResponseAccordion key={status} status={status} operation={method} ctx={ctx} />\n ))}\n </Accordions>\n </>\n );\n }\n\n const parameterNode = Object.entries(ParamTypes).map(([type, title]) => {\n const params = method.parameters?.filter((param) => param.in === type);\n if (!params || params.length === 0) return;\n\n return (\n <Fragment key={type}>\n {ctx.renderHeading(headingLevel, title)}\n <div className=\"flex flex-col\">\n {params.map(\n (param) =>\n param.schema != null && (\n <Schema\n key={param.name}\n client={{\n name: param.name!,\n required: param.required,\n }}\n root={\n typeof param.schema === 'object'\n ? {\n ...param.schema,\n description: param.description ?? param.schema?.description,\n deprecated:\n (param.deprecated ?? false) || (param.schema?.deprecated ?? false),\n }\n : param.schema\n }\n readOnly={method.method === 'GET'}\n writeOnly={method.method !== 'GET'}\n ctx={ctx}\n />\n ),\n )}\n </div>\n </Fragment>\n );\n });\n\n const securities = (method.security ?? dereferenced.security ?? []).filter(\n (v) => Object.keys(v).length > 0,\n );\n\n if (type === 'operation' && securities.length > 0) {\n const securitySchemes = dereferenced.components?.securitySchemes;\n const items = securities.map((security, i) => {\n return {\n value: String(i),\n label: (\n <div className=\"flex flex-col text-xs min-w-0\">\n {Object.entries(security).map(([key, scopes]) => (\n <code key={key} className=\"truncate\">\n <span className=\"font-medium\">{key}</span>{' '}\n {scopes.length > 0 && (\n <span className=\"text-fd-muted-foreground\">{scopes.join(', ')}</span>\n )}\n </code>\n ))}\n </div>\n ),\n };\n });\n\n authNode = (\n <SelectTabs defaultValue={items[0].value}>\n <div className=\"flex items-start justify-between gap-2 mt-10\">\n {ctx.renderHeading(headingLevel, 'Authorization', {\n className: 'my-0!',\n })}\n {items.length > 1 ? (\n <SelectTabTrigger items={items} />\n ) : (\n <div className=\"not-prose\">{items[0].label}</div>\n )}\n </div>\n {securities.map((security, i) => (\n <SelectTab key={i} value={items[i].value}>\n {Object.entries(security).map(([key, scopes]) => {\n const scheme = securitySchemes?.[key];\n if (!scheme) return;\n\n return <AuthScheme key={key} scheme={scheme} scopes={scopes} ctx={ctx} />;\n })}\n </SelectTab>\n ))}\n </SelectTabs>\n );\n }\n\n const callbacks = method.callbacks ? Object.entries(method.callbacks) : null;\n if (callbacks && callbacks.length > 0) {\n const items = callbacks.map(([key]) => ({\n label: <code className=\"text-xs\">{key}</code>,\n value: key,\n }));\n\n callbacksNode = (\n <SelectTabs defaultValue={items[0].value}>\n <div className=\"flex justify-between gap-2 items-end mt-10\">\n {ctx.renderHeading(headingLevel, 'Callbacks', {\n className: 'my-0!',\n })}\n {callbacks.length > 1 ? (\n <SelectTabTrigger items={items} className=\"font-medium\" />\n ) : (\n <p className=\"text-fd-muted-foreground not-prose\">{items[0].label}</p>\n )}\n </div>\n {callbacks.map(([name, callback]) => (\n <SelectTab key={name} value={name}>\n <WebhookCallback callback={callback} ctx={ctx} headingLevel={headingLevel} />\n </SelectTab>\n ))}\n </SelectTabs>\n );\n }\n\n let { renderOperationLayout, renderWebhookLayout } = ctx.content ?? {};\n if (type === 'operation') {\n renderOperationLayout ??= (slots) => {\n return (\n <div className=\"flex flex-col gap-x-6 gap-y-4 @4xl:flex-row @4xl:items-start\">\n <div className=\"min-w-0 flex-1\">\n {slots.header}\n {slots.apiPlayground}\n {slots.description}\n {slots.authSchemes}\n {slots.paremeters}\n {slots.body}\n {slots.responses}\n {slots.callbacks}\n </div>\n <div className=\"@4xl:sticky @4xl:top-[calc(var(--fd-docs-row-1,2rem)+1rem)] @4xl:w-[400px]\">\n {slots.apiExample}\n </div>\n </div>\n );\n };\n\n const playgroundEnabled = ctx.playground?.enabled ?? true;\n let content = await renderOperationLayout(\n {\n header: headNode,\n description: descriptionNode,\n authSchemes: authNode,\n body: bodyNode,\n callbacks: callbacksNode,\n paremeters: parameterNode,\n responses: responseNode,\n apiPlayground: playgroundEnabled ? (\n <APIPlayground path={path} method={method} ctx={ctx} />\n ) : (\n <div className=\"flex flex-row items-center gap-2.5 p-3 rounded-xl border bg-fd-card text-fd-card-foreground not-prose\">\n <MethodLabel className=\"text-xs\">{method.method}</MethodLabel>\n <code className=\"flex-1 overflow-auto text-nowrap text-[0.8125rem] text-fd-muted-foreground\">\n {path}\n </code>\n </div>\n ),\n apiExample: <UsageTabs method={method} ctx={ctx} />,\n },\n ctx,\n method,\n );\n\n content = (\n <UsageTabsProviderLazy\n defaultExampleId={method['x-exclusiveCodeSample'] ?? method['x-selectedCodeSample']}\n route={path}\n examples={getExampleRequests(path, method, ctx)}\n >\n {content}\n </UsageTabsProviderLazy>\n );\n if (method.servers) {\n content = <ServerProviderLazy servers={method.servers}>{content}</ServerProviderLazy>;\n }\n\n return content;\n } else {\n renderWebhookLayout ??= (slots) => (\n <div className=\"flex flex-col-reverse gap-x-6 gap-y-4 @4xl:flex-row @4xl:items-start\">\n <div className=\"min-w-0 flex-1\">\n {slots.header}\n {slots.description}\n {slots.authSchemes}\n {slots.paremeters}\n {slots.body}\n {slots.responses}\n {slots.callbacks}\n </div>\n <div className=\"@4xl:sticky @4xl:top-[calc(var(--fd-docs-row-1,2rem)+1rem)] @4xl:w-[400px]\">\n {slots.requests}\n </div>\n </div>\n );\n return renderWebhookLayout({\n header: headNode,\n description: descriptionNode,\n authSchemes: authNode,\n body: bodyNode,\n callbacks: callbacksNode,\n paremeters: parameterNode,\n responses: responseNode,\n requests: <RequestTabs path={path} operation={method} ctx={ctx} />,\n });\n }\n}\n\nasync function ResponseAccordion({\n status,\n operation,\n ctx,\n}: {\n status: string;\n operation: MethodInformation;\n ctx: RenderContext;\n}) {\n const response = operation.responses![status];\n const contentTypes = response.content ? Object.entries(response.content) : [];\n let wrapper = (children: ReactNode) => children;\n let selectorNode: ReactNode = null;\n\n if (contentTypes.length > 0) {\n const items = contentTypes.map(([key]) => ({\n label: <code className=\"text-xs\">{key}</code>,\n value: key,\n }));\n\n selectorNode =\n items.length === 1 ? (\n <p className=\"text-fd-muted-foreground not-prose\">{items[0].label}</p>\n ) : (\n <SelectTabTrigger items={items} />\n );\n wrapper = (children) => <SelectTabs defaultValue={items[0].value}>{children}</SelectTabs>;\n }\n\n return wrapper(\n <AccordionItem value={status}>\n <AccordionHeader>\n <AccordionTrigger className=\"font-mono\">{status}</AccordionTrigger>\n {selectorNode}\n </AccordionHeader>\n <AccordionContent className=\"ps-4.5\">\n {response.description && (\n <div className=\"prose-no-margin mb-2\">{ctx.renderMarkdown(response.description)}</div>\n )}\n {contentTypes.map(async ([type, resType]) => {\n const schema = resType.schema;\n const ts = schema\n ? await ctx.generateTypeScriptDefinitions(schema, {\n readOnly: true,\n writeOnly: false,\n operation,\n _internal_legacy: {\n statusCode: status,\n contentType: type,\n },\n ...ctx,\n })\n : undefined;\n\n return (\n <SelectTab key={type} value={type} className=\"mb-2\">\n {ts && <CopyTypeScriptPanel name=\"response body\" code={ts} />}\n {schema && (\n <div className=\"border px-3 py-2 rounded-lg\">\n <Schema\n client={{\n name: 'response',\n as: 'body',\n }}\n root={schema}\n readOnly\n ctx={ctx}\n />\n </div>\n )}\n </SelectTab>\n );\n })}\n </AccordionContent>\n </AccordionItem>,\n );\n}\n\nfunction WebhookCallback({\n callback,\n ctx,\n headingLevel,\n}: {\n callback: NoReference<CallbackObject>;\n ctx: RenderContext;\n headingLevel: number;\n}) {\n const pathItems = Object.entries(callback);\n\n return (\n <Accordions type=\"single\" collapsible>\n {pathItems.map(([path, pathItem]) => {\n const pathNodes = methodKeys.map((method) => {\n const operation = pathItem[method];\n if (!operation) return null;\n\n return (\n <div key={method} className=\"border p-3 my-2 @container prose-no-margin rounded-lg\">\n <Operation\n type=\"webhook\"\n path={path}\n headingLevel={headingLevel + 1}\n method={createMethod(method, pathItem, operation)}\n ctx={ctx}\n />\n </div>\n );\n });\n\n return (\n <AccordionItem key={path} value={path}>\n <AccordionHeader>\n <AccordionTrigger className=\"font-mono\">{path}</AccordionTrigger>\n </AccordionHeader>\n <AccordionContent>{pathNodes}</AccordionContent>\n </AccordionItem>\n );\n })}\n </Accordions>\n );\n}\n\nfunction AuthScheme({\n scheme,\n scopes,\n ctx,\n}: {\n scheme: SecuritySchemeObject;\n scopes: string[];\n ctx: RenderContext;\n}) {\n if (scheme.type === 'http' || scheme.type === 'oauth2') {\n return (\n <AuthProperty\n name=\"Authorization\"\n type={\n scheme.type === 'http' && scheme.scheme === 'basic' ? `Basic <token>` : 'Bearer <token>'\n }\n deprecated={scheme.deprecated}\n scopes={scopes}\n >\n {scheme.description && ctx.renderMarkdown(scheme.description)}\n <p>\n In: <code>header</code>\n </p>\n </AuthProperty>\n );\n }\n\n if (scheme.type === 'apiKey') {\n return (\n <AuthProperty\n name={scheme.name!}\n type=\"<token>\"\n deprecated={scheme.deprecated}\n scopes={scopes}\n >\n {scheme.description && ctx.renderMarkdown(scheme.description)}\n <p>\n In: <code>{scheme.in}</code>\n </p>\n </AuthProperty>\n );\n }\n\n if (scheme.type === 'openIdConnect') {\n return (\n <AuthProperty\n name=\"OpenID Connect\"\n type=\"<token>\"\n deprecated={scheme.deprecated}\n scopes={scopes}\n >\n {scheme.description && ctx.renderMarkdown(scheme.description)}\n </AuthProperty>\n );\n }\n}\n\nfunction AuthProperty({\n name,\n type,\n deprecated = false,\n scopes = [],\n className,\n ...props\n}: ComponentProps<'div'> & {\n name: string;\n type: string;\n deprecated?: boolean;\n scopes?: string[];\n}) {\n return (\n <div className={cn('text-sm border-t my-4 first:border-t-0', className)}>\n <div className=\"flex flex-wrap items-center gap-3 not-prose\">\n <span className=\"font-medium font-mono text-fd-primary\">{name}</span>\n <span className=\"text-sm font-mono text-fd-muted-foreground\">{type}</span>\n {deprecated && <Badge color=\"red\">Deprecated</Badge>}\n </div>\n <div className=\"prose-no-margin pt-2.5 empty:hidden\">\n {props.children}\n {scopes.length > 0 && (\n <p>\n Scope: <code>{scopes.join(', ')}</code>\n </p>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -6,7 +6,6 @@ import { AccordionContent, AccordionHeader, AccordionItem, AccordionTrigger, Acc
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { sample } from "openapi-sampler";
8
8
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "fumadocs-ui/components/tabs";
9
-
10
9
  //#region src/ui/operation/request-tabs.tsx
11
10
  function getExampleRequests(path, operation, ctx) {
12
11
  const requestBody = operation.requestBody;
@@ -152,7 +151,7 @@ function renderRequestTabsDefault(items, ctx) {
152
151
  }), children]
153
152
  });
154
153
  }
155
-
156
154
  //#endregion
157
155
  export { RequestTabs, getExampleRequests };
156
+
158
157
  //# sourceMappingURL=request-tabs.js.map