@clarify-labs/renderer 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/output/{OpenApiOperation-CI_PeMSy.js → OpenApiOperation-CWSOhUVa.js} +84 -19
  2. package/output/OpenApiOperation-CWSOhUVa.js.map +1 -0
  3. package/output/{OpenApiOperation-CxQQyEHK.cjs → OpenApiOperation-ZXToVSFC.cjs} +89 -18
  4. package/output/OpenApiOperation-ZXToVSFC.cjs.map +1 -0
  5. package/output/{ThemeRoot-BhP5M3Hd.cjs → ThemeRoot-CEvwrGp5.cjs} +29 -186
  6. package/output/ThemeRoot-CEvwrGp5.cjs.map +1 -0
  7. package/output/{ThemeRoot-DErmHskn.js → ThemeRoot-C_ZdzSMu.js} +21 -178
  8. package/output/ThemeRoot-C_ZdzSMu.js.map +1 -0
  9. package/output/app/AppShell.d.ts +2 -0
  10. package/output/app/PageFooter.d.ts +5 -1
  11. package/output/client.cjs +5 -2
  12. package/output/client.d.ts +1 -0
  13. package/output/client.js +4 -3
  14. package/output/components/LocalizedLink.d.ts +6 -0
  15. package/output/components/WebFrame.d.ts +11 -0
  16. package/output/components/index.d.ts +4 -0
  17. package/output/context.d.ts +1 -1
  18. package/output/core/types.d.ts +7 -1
  19. package/output/index.cjs +5 -4
  20. package/output/index.d.ts +2 -2
  21. package/output/index.js +5 -5
  22. package/output/mdx/components.d.ts +1 -0
  23. package/output/mdx/primitives.d.ts +2 -2
  24. package/output/preview.cjs +61 -23
  25. package/output/preview.cjs.map +1 -1
  26. package/output/preview.js +61 -23
  27. package/output/preview.js.map +1 -1
  28. package/output/{render-HeCAMIGm.js → render-CnUd0XwZ.js} +6 -5
  29. package/output/render-CnUd0XwZ.js.map +1 -0
  30. package/output/{render-C_NHO3rz.cjs → render-zHU25Nm9.cjs} +6 -5
  31. package/output/render-zHU25Nm9.cjs.map +1 -0
  32. package/output/renderer.css +220 -29
  33. package/output/server.cjs +5 -4
  34. package/output/server.cjs.map +1 -1
  35. package/output/server.js +5 -4
  36. package/output/server.js.map +1 -1
  37. package/output/shell/Search.d.ts +4 -0
  38. package/output/shell/search/Highlight.d.ts +11 -0
  39. package/output/shell/search/SearchDialog.d.ts +13 -0
  40. package/output/shell/search/SearchInput.d.ts +8 -0
  41. package/output/shell/search/SearchResult.d.ts +10 -0
  42. package/output/shell/search/items.d.ts +3 -0
  43. package/output/shell/search/pagefind.d.ts +5 -0
  44. package/output/shell/search/types.d.ts +37 -0
  45. package/output/shell/search/useSearchProps.d.ts +10 -0
  46. package/output/{shell-DvTfFx6M.js → shell-CumiARRe.js} +472 -61
  47. package/output/shell-CumiARRe.js.map +1 -0
  48. package/output/{shell-D4tS8Jts.cjs → shell-xxhV0p7k.cjs} +524 -59
  49. package/output/shell-xxhV0p7k.cjs.map +1 -0
  50. package/output/theme/variables.d.ts +2 -0
  51. package/package.json +1 -1
  52. package/output/OpenApiOperation-CI_PeMSy.js.map +0 -1
  53. package/output/OpenApiOperation-CxQQyEHK.cjs.map +0 -1
  54. package/output/ThemeRoot-BhP5M3Hd.cjs.map +0 -1
  55. package/output/ThemeRoot-DErmHskn.js.map +0 -1
  56. package/output/render-C_NHO3rz.cjs.map +0 -1
  57. package/output/render-HeCAMIGm.js.map +0 -1
  58. package/output/shell-D4tS8Jts.cjs.map +0 -1
  59. package/output/shell-DvTfFx6M.js.map +0 -1
package/output/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { AppShell } from './app/AppShell';
2
2
  import { BuiltWithClarify } from './app/BuiltWithClarify';
3
3
  import { PageFooter } from './app/PageFooter';
4
4
  import { SectionProvider, useSectionStore, Section } from './app/SectionProvider';
5
- import { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Feedback, GridPattern, Heading, HeroPattern, Logo, Pre, Prose, Tag } from './components';
5
+ import { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Feedback, GridPattern, Heading, HeroPattern, Logo, Pre, Prose, Tag, WebFrame } from './components';
6
6
  import { ClarifyConfigContext, OpenApisContext, useClarifyConfig, useOpenApis } from './context';
7
7
  import { useMDXComponents } from './mdx/components';
8
8
  import { DocShell } from './mdx/DocShell';
@@ -19,6 +19,6 @@ export type { OpenApiOperationProps, OpenApiDocumentProps, OpenAPIOperation, Ope
19
19
  export type { ThemeEditorProps } from './theme/ThemeEditor';
20
20
  export type { ClarifyConfig, RouteItem, RenderOptions, ServerRenderOptions, Section };
21
21
  export { AppShell, render, ClarifyConfigContext, OpenApisContext, useClarifyConfig, useOpenApis, BuiltWithClarify, PageFooter, ThemeProvider, ThemeToggle, ThemeEditor, useTheme, SectionProvider, useSectionStore, remToPx, applyClarifyThemeVariables, clarifyThemeEditorPresets };
22
- export { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Pre, Prose, Heading, Logo, GridPattern, HeroPattern, Feedback, Tag };
22
+ export { Button, Callout, Card, CardGroup, Code, CodeGroup, Collapse, Pre, Prose, Heading, Logo, GridPattern, HeroPattern, Feedback, Tag, WebFrame };
23
23
  export { DocShell, Markdown, useMDXComponents, markdownRemarkPlugins };
24
24
  export { OpenApiDocument, OpenApiOperation };
package/output/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { C as CodeGroup, D as Callout, E as CardGroup, O as Button, S as Code, T as Card, _ as Logo, b as Feedback, f as Markdown, g as HeroPattern, h as GridPattern, m as Prose, n as OpenApiOperation$1, p as primitives_exports, v as Heading, w as Pre, x as Collapse, y as Tag } from "./OpenApiOperation-CI_PeMSy.js";
2
- import { C as useClarifyConfig, S as OpenApisContext, a as useSectionStore, b as ClarifyConfigContext, d as ThemeToggle, f as ThemeProvider, i as SectionProvider, o as remToPx, p as useTheme, w as useOpenApis, y as useBuiltInText } from "./shell-DvTfFx6M.js";
3
- import { a as AppShell, i as clarifyThemeEditorPresets, n as ThemeEditor, o as PageFooter, r as applyClarifyThemeVariables, s as BuiltWithClarify } from "./ThemeRoot-DErmHskn.js";
1
+ import { C as Code, D as CardGroup, E as Card, O as Callout, S as Collapse, T as Pre, _ as HeroPattern, b as Tag, f as Markdown, g as GridPattern, h as Prose, k as Button, m as WebFrame, n as OpenApiOperation$1, p as primitives_exports, v as Logo, w as CodeGroup, x as Feedback, y as Heading } from "./OpenApiOperation-CWSOhUVa.js";
2
+ import { A as OpenApisContext, D as useBuiltInText, N as useOpenApis, O as ClarifyConfigContext, a as useSectionStore, d as ThemeToggle, f as ThemeProvider, i as SectionProvider, j as useClarifyConfig, o as remToPx, p as useTheme } from "./shell-CumiARRe.js";
3
+ import { a as AppShell, i as clarifyThemeEditorPresets, n as ThemeEditor, o as PageFooter, r as applyClarifyThemeVariables, s as BuiltWithClarify } from "./ThemeRoot-C_ZdzSMu.js";
4
4
  import { t as markdownRemarkPlugins } from "./remark-Dd2WU50s.js";
5
- import { t as render } from "./render-HeCAMIGm.js";
5
+ import { t as render } from "./render-CnUd0XwZ.js";
6
6
  import { useLocation } from "react-router-dom";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region source/openapi/lib/spec-path.ts
@@ -212,6 +212,6 @@ function DocShell(arg0) {
212
212
  });
213
213
  }
214
214
  //#endregion
215
- export { AppShell, BuiltWithClarify, Button, Callout, Card, CardGroup, ClarifyConfigContext, Code, CodeGroup, Collapse, DocShell, Feedback, GridPattern, Heading, HeroPattern, Logo, Markdown, OpenApiDocument, OpenApiOperation, OpenApisContext, PageFooter, Pre, Prose, SectionProvider, Tag, ThemeEditor, ThemeProvider, ThemeToggle, applyClarifyThemeVariables, clarifyThemeEditorPresets, markdownRemarkPlugins, remToPx, render, useClarifyConfig, useMDXComponents, useOpenApis, useSectionStore, useTheme };
215
+ export { AppShell, BuiltWithClarify, Button, Callout, Card, CardGroup, ClarifyConfigContext, Code, CodeGroup, Collapse, DocShell, Feedback, GridPattern, Heading, HeroPattern, Logo, Markdown, OpenApiDocument, OpenApiOperation, OpenApisContext, PageFooter, Pre, Prose, SectionProvider, Tag, ThemeEditor, ThemeProvider, ThemeToggle, WebFrame, applyClarifyThemeVariables, clarifyThemeEditorPresets, markdownRemarkPlugins, remToPx, render, useClarifyConfig, useMDXComponents, useOpenApis, useSectionStore, useTheme };
216
216
 
217
217
  //# sourceMappingURL=index.js.map
@@ -50,4 +50,5 @@ export declare function useMDXComponents(components?: Record<string, unknown>):
50
50
  Card: typeof mdxPrimitives.Card;
51
51
  CardGroup: typeof mdxPrimitives.CardGroup;
52
52
  CodeGroup: typeof mdxPrimitives.CodeGroup;
53
+ WebFrame: typeof mdxPrimitives.WebFrame;
53
54
  };
@@ -1,5 +1,5 @@
1
1
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- import { Button, Callout, Card, CardGroup, Heading } from '../components';
2
+ import { Button, Callout, Card, CardGroup, Heading, WebFrame } from '../components';
3
3
  import { Code, CodeGroup, Pre } from '../components/Code';
4
4
  type WrapperProps = {
5
5
  children: ReactNode;
@@ -8,7 +8,7 @@ export declare function wrapper(arg0: WrapperProps): import("react").JSX.Element
8
8
  export declare function a(arg0: ComponentPropsWithoutRef<'a'>): import("react").JSX.Element;
9
9
  export declare const code: typeof Code;
10
10
  export declare const pre: typeof Pre;
11
- export { Button, Callout, Card, CardGroup, CodeGroup };
11
+ export { Button, Callout, Card, CardGroup, CodeGroup, WebFrame };
12
12
  export declare function h2(props: Omit<ComponentPropsWithoutRef<typeof Heading>, 'level'>): import('react').FunctionComponentElement<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref"> & {
13
13
  id: string;
14
14
  tag?: string;
@@ -1,8 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_shell = require("./shell-D4tS8Jts.cjs");
3
- const require_OpenApiOperation = require("./OpenApiOperation-CxQQyEHK.cjs");
2
+ const require_shell = require("./shell-xxhV0p7k.cjs");
3
+ const require_OpenApiOperation = require("./OpenApiOperation-ZXToVSFC.cjs");
4
4
  let react = require("react");
5
5
  let react_router_dom = require("react-router-dom");
6
+ let lucide_react = require("lucide-react");
6
7
  let react_jsx_runtime = require("react/jsx-runtime");
7
8
  //#region source/preview/openapi.tsx
8
9
  function schemaFromType(type) {
@@ -407,7 +408,7 @@ function PreviewEnvironment(arg0) {
407
408
  });
408
409
  }
409
410
  function Chrome(arg0) {
410
- const { title, status, children } = arg0;
411
+ const { title, status, headerAction, children } = arg0;
411
412
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
412
413
  className: "clarify-app clarify-preview h-full overflow-hidden bg-(--clarify-theme-tokens-colors-background) text-(--clarify-ui-text) shadow-2xl ring-1 ring-(--clarify-theme-tokens-colors-border) dark:bg-zinc-950 dark:text-white dark:ring-white/10",
413
414
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -417,13 +418,14 @@ function Chrome(arg0) {
417
418
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "size-2 rounded-full bg-amber-400" }),
418
419
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "size-2 rounded-full bg-emerald-400" }),
419
420
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
420
- className: "ml-2 truncate font-medium text-(--clarify-ui-text-soft)",
421
+ className: "ml-2 min-w-0 flex-1 truncate font-medium text-(--clarify-ui-text-soft)",
421
422
  children: title
422
423
  }),
423
424
  status ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
424
- className: "ml-auto hidden rounded-full bg-emerald-400/15 px-2 py-0.5 font-medium text-emerald-700 sm:inline dark:text-emerald-300",
425
+ className: "hidden rounded-full bg-emerald-400/15 px-2 py-0.5 font-medium text-emerald-700 sm:inline dark:text-emerald-300",
425
426
  children: status
426
- }) : null
427
+ }) : null,
428
+ headerAction
427
429
  ]
428
430
  }), children]
429
431
  });
@@ -484,10 +486,27 @@ function PreviewNavigation(arg0) {
484
486
  className: "px-2"
485
487
  });
486
488
  }
489
+ function MainPreviewMobileNavigation(arg0) {
490
+ const { isOpen, onClose, ...navigationProps } = arg0;
491
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
492
+ className: "clarify-preview-mobile-navigation pointer-events-none absolute inset-0 z-20",
493
+ children: [isOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
494
+ type: "button",
495
+ className: "absolute inset-0 bg-zinc-950/20 backdrop-blur-[1px] dark:bg-black/30",
496
+ "aria-label": "Close documentation menu",
497
+ onClick: onClose
498
+ }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
499
+ id: "clarify-main-preview-mobile-navigation",
500
+ className: "pointer-events-auto absolute top-0 bottom-0 left-0 w-64 max-w-[82%] overflow-y-auto border-r border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background) px-1 py-4 text-sm/7 shadow-2xl shadow-zinc-900/20 transition-transform duration-200 ease-out data-closed:-translate-x-full dark:border-white/10 dark:bg-zinc-950 dark:shadow-black/40",
501
+ "data-closed": !isOpen ? "true" : void 0,
502
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PreviewNavigation, { ...navigationProps })
503
+ })]
504
+ });
505
+ }
487
506
  function PreviewMetricGrid(arg0) {
488
507
  const { metrics } = arg0;
489
508
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
490
- className: "grid grid-cols-3 gap-2",
509
+ className: "grid grid-cols-1 gap-2 sm:grid-cols-3",
491
510
  children: metrics.map((metric) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
492
511
  className: "rounded-xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-2.5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50",
493
512
  children: [
@@ -620,22 +639,41 @@ function MainContentPreview() {
620
639
  });
621
640
  }
622
641
  function MainPreview() {
642
+ const [isMobileNavigationOpen, setMobileNavigationOpen] = (0, react.useState)(false);
643
+ const navigationProps = {
644
+ endpoint: embeddedEndpoint,
645
+ guide: embeddedGuide,
646
+ outputs: embeddedGuide.outputs ?? []
647
+ };
623
648
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PreviewEnvironment, {
624
649
  initialEntry: mainPreviewPath,
625
650
  sections: mainPreviewSections,
626
651
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Chrome, {
627
652
  title: "source/en-US/openapi/embedding.mdx",
628
653
  status: "Rendered from OpenAPI + MDX",
654
+ headerAction: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
655
+ type: "button",
656
+ className: "clarify-preview-mobile-menu-button -my-1 flex size-7 items-center justify-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-ui-text-strong) transition hover:bg-(--clarify-ui-hover-background)",
657
+ "aria-controls": "clarify-main-preview-mobile-navigation",
658
+ "aria-expanded": isMobileNavigationOpen,
659
+ "aria-label": isMobileNavigationOpen ? "Close documentation menu" : "Open documentation menu",
660
+ onClick: () => setMobileNavigationOpen((value) => !value),
661
+ children: isMobileNavigationOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.X, { className: "h-4 w-4 shrink-0" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Menu, { className: "h-4 w-4 shrink-0" })
662
+ }),
629
663
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
630
- className: "clarify-preview-shell grid",
631
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
632
- className: "border-r border-(--clarify-theme-tokens-colors-border) px-1 py-4 text-sm/7 dark:border-white/10 dark:bg-white/5",
633
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PreviewNavigation, {
634
- endpoint: embeddedEndpoint,
635
- guide: embeddedGuide,
636
- outputs: embeddedGuide.outputs ?? []
637
- })
638
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MainContentPreview, {})]
664
+ className: "clarify-preview-shell relative grid overflow-hidden",
665
+ children: [
666
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MainPreviewMobileNavigation, {
667
+ ...navigationProps,
668
+ isOpen: isMobileNavigationOpen,
669
+ onClose: () => setMobileNavigationOpen(false)
670
+ }),
671
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
672
+ className: "clarify-preview-sidebar border-r border-(--clarify-theme-tokens-colors-border) px-1 py-4 text-sm/7 dark:border-white/10 dark:bg-white/5",
673
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PreviewNavigation, { ...navigationProps })
674
+ }),
675
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MainContentPreview, {})
676
+ ]
639
677
  })
640
678
  })
641
679
  });
@@ -645,7 +683,7 @@ function MdxPreview() {
645
683
  title: "source/started/index.mdx",
646
684
  status: "Rendered by renderer",
647
685
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
648
- className: "clarify-preview-body overflow-hidden bg-(--clarify-theme-tokens-colors-background) p-5 dark:bg-zinc-950",
686
+ className: "clarify-preview-body overflow-x-hidden overflow-y-auto bg-(--clarify-theme-tokens-colors-background) p-4 sm:p-5 dark:bg-zinc-950",
649
687
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
650
688
  className: "max-w-3xl text-sm/7 text-(--clarify-ui-text-soft)",
651
689
  children: [
@@ -654,7 +692,7 @@ function MdxPreview() {
654
692
  children: "MDX page"
655
693
  }),
656
694
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
657
- className: "mt-3 text-2xl/8 font-semibold tracking-tight text-(--clarify-ui-text-strong)",
695
+ className: "mt-3 text-xl/7 font-semibold tracking-tight text-(--clarify-ui-text-strong) sm:text-2xl/8",
658
696
  children: "Get Started"
659
697
  }),
660
698
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
@@ -662,7 +700,7 @@ function MdxPreview() {
662
700
  children: "Write pages in source/. Clarify turns MDX, config, and OpenAPI files into routes."
663
701
  }),
664
702
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
665
- className: "mt-5 rounded-2xl border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-ui-text-strong)",
703
+ className: "mt-4 rounded-2xl border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-ui-text-strong) sm:mt-5",
666
704
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
667
705
  className: "font-semibold text-(--clarify-ui-text-strong)",
668
706
  children: "Static output ready"
@@ -672,7 +710,7 @@ function MdxPreview() {
672
710
  })]
673
711
  }),
674
712
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
675
- className: "mt-5 grid gap-4 sm:grid-cols-2",
713
+ className: "mt-4 grid gap-3 sm:mt-5 sm:grid-cols-2 sm:gap-4",
676
714
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
677
715
  className: "rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50",
678
716
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
@@ -716,11 +754,11 @@ function OpenApiPreview() {
716
754
  title: "source/api.openapi.json",
717
755
  status: "Endpoint + examples",
718
756
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
719
- className: "clarify-preview-openapi-window overflow-hidden bg-(--clarify-theme-tokens-colors-background) px-4 py-4 dark:bg-zinc-950",
757
+ className: "clarify-preview-openapi-window overflow-x-hidden overflow-y-auto bg-(--clarify-theme-tokens-colors-background) px-3 py-3 sm:px-4 sm:py-4 dark:bg-zinc-950",
720
758
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
721
- className: "clarify-preview-openapi-mask h-full overflow-hidden",
759
+ className: "clarify-preview-openapi-mask min-h-full",
722
760
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
723
- className: "clarify-preview-api-content clarify-preview-api-content-openapi origin-top pb-10",
761
+ className: "clarify-preview-api-content clarify-preview-api-content-openapi origin-top pb-6 sm:pb-10",
724
762
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OpenApiExamplesPreview, { endpoint: staticOutputEndpoint })
725
763
  })
726
764
  })
@@ -1 +1 @@
1
- {"version":3,"file":"preview.cjs","names":[],"sources":["../source/preview/openapi.tsx","../source/preview.tsx"],"sourcesContent":["import { useState } from 'react'\n\nimport { authPlaceholder, defaultServerVariables, getAuthOptions, getServerKey, getServers, RequestExamplesPanel, ResponseExamplesPanel } from '../openapi/components/ExamplePanels'\nimport { EndpointIdentity } from '../openapi/components/OpenApiOperation'\nimport { getMediaTypeEntries, getRequestBody } from '../openapi/lib/helpers'\nimport type { OpenAPIOperation, OpenAPISpec } from '../openapi/lib/utils'\nimport type { OpenApiParameter, RequestAuthInput } from '../openapi/types'\n\nexport type PreviewParameter = {\n name: string\n in: string\n type: string\n required?: boolean\n description?: string\n schema?: unknown\n}\n\nexport type PreviewEndpoint = {\n method: string\n path: string\n summary: string\n description: string\n parameters?: PreviewParameter[]\n requestDescription?: string\n requestSchema?: unknown\n requestExample?: unknown\n response?: string\n responseStatus?: string\n responseDescription?: string\n responseSchema?: unknown\n responseExample?: unknown\n}\n\ntype CreatePreviewOpenApiResult = {\n operation: OpenAPIOperation\n spec: OpenAPISpec\n parameters: OpenApiParameter[]\n}\n\ntype OpenApiExamplesPreviewProps = { endpoint: PreviewEndpoint }\n\nfunction schemaFromType(type: string): unknown {\n if (type.endsWith('[]')) return { type: 'array', items: schemaFromType(type.slice(0, -2)) }\n if (type === 'number' || type === 'integer' || type === 'boolean' || type === 'object') return { type }\n return { type: 'string' }\n}\n\nfunction parseResponseExample(endpoint: PreviewEndpoint): unknown {\n if (typeof endpoint.responseExample !== 'undefined') return endpoint.responseExample\n if (!endpoint.response) return undefined\n\n try {\n return JSON.parse(endpoint.response)\n } catch {\n return endpoint.response\n }\n}\n\nfunction inferSchemaFromExample(example: unknown): unknown {\n if (Array.isArray(example)) {\n return { type: 'array', items: inferSchemaFromExample(example[0]) ?? { type: 'object' } }\n }\n\n if (typeof example === 'object' && example !== null) {\n return {\n type: 'object',\n properties: Object.fromEntries(Object.entries(example).map(([key, value]) => [key, inferSchemaFromExample(value)])),\n }\n }\n\n if (typeof example === 'number') return { type: Number.isInteger(example) ? 'integer' : 'number' }\n if (typeof example === 'boolean') return { type: 'boolean' }\n return typeof example === 'undefined' ? undefined : { type: 'string' }\n}\n\nfunction normalizeParameterLocation(location: string): string {\n return location === 'route' ? 'path' : location\n}\n\nfunction toOpenApiParameter(parameter: PreviewParameter): OpenApiParameter {\n return {\n name: parameter.name,\n in: normalizeParameterLocation(parameter.in),\n required: parameter.required,\n description: parameter.description,\n schema: parameter.schema ?? schemaFromType(parameter.type),\n }\n}\n\nfunction createPreviewOpenApi(endpoint: PreviewEndpoint): CreatePreviewOpenApiResult {\n const method = endpoint.method.toLowerCase()\n const parameters = (endpoint.parameters ?? []).map(toOpenApiParameter)\n const responseExample = parseResponseExample(endpoint)\n const responseSchema = endpoint.responseSchema ?? inferSchemaFromExample(responseExample)\n const requestSchema = endpoint.requestSchema ?? inferSchemaFromExample(endpoint.requestExample)\n const operation = {\n summary: endpoint.summary,\n description: endpoint.description,\n parameters,\n requestBody: requestSchema\n ? {\n description: endpoint.requestDescription,\n required: true,\n content: {\n 'application/json': {\n schema: requestSchema,\n example: endpoint.requestExample,\n },\n },\n }\n : undefined,\n responses: {\n [endpoint.responseStatus ?? '200']: {\n description: endpoint.responseDescription ?? 'OK',\n content: {\n 'application/json': {\n schema: responseSchema,\n example: responseExample,\n },\n },\n },\n },\n } as OpenAPIOperation\n const spec = {\n openapi: '3.1.0',\n info: {\n title: 'Clarify Build API',\n version: '2026-06-20',\n description: 'API reference generated from OpenAPI and rendered as static documentation.',\n },\n servers: [\n {\n url: 'https://server',\n description: 'Production',\n },\n {\n url: 'https://test-server',\n description: 'Test',\n },\n ],\n components: {\n securitySchemes: {\n bearerAuth: {\n type: 'http',\n scheme: 'bearer',\n bearerFormat: 'JWT',\n },\n },\n },\n security: [{ bearerAuth: [] }],\n paths: {\n [endpoint.path]: {\n [method]: operation,\n },\n },\n } as OpenAPISpec\n\n return { operation, spec, parameters }\n}\n\nexport function OpenApiExamplesPreview(arg0: OpenApiExamplesPreviewProps) {\n const { endpoint } = arg0\n const { operation, spec, parameters } = createPreviewOpenApi(endpoint)\n const method = endpoint.method.toUpperCase()\n const requestBody = getRequestBody(spec, operation)\n const requestContents = getMediaTypeEntries(requestBody?.content, spec)\n const [selectedRequestMediaType, setSelectedRequestMediaType] = useState(requestContents[0]?.mediaType ?? '')\n const selectedRequestContent = requestContents.find((content) => content.mediaType === selectedRequestMediaType) ?? requestContents[0]\n const servers = getServers(spec, operation, endpoint.path)\n const [selectedServerKey, setSelectedServerKey] = useState(getServerKey(servers[0], 0))\n const selectedServer = servers.find((server, index) => getServerKey(server, index) === selectedServerKey) ?? servers[0]\n const [serverVariables, setServerVariables] = useState(defaultServerVariables(selectedServer))\n const [serverOpen, setServerOpen] = useState(false)\n const authOptions = getAuthOptions(spec, operation)\n const [selectedAuthName, setSelectedAuthName] = useState(authOptions[0]?.name ?? '')\n const selectedAuth = authOptions.find((option) => option.name === selectedAuthName)\n const [authValues, setAuthValues] = useState<Record<string, string>>({})\n const [authOpen, setAuthOpen] = useState(false)\n const authInput: RequestAuthInput | undefined = selectedAuth\n ? { name: selectedAuth.name, scheme: selectedAuth.scheme, value: authValues[selectedAuth.name] ?? authPlaceholder(selectedAuth) }\n : undefined\n\n return (\n <div className=\"space-y-4\">\n <EndpointIdentity\n method={method}\n path={endpoint.path}\n servers={servers}\n selectedServerKey={selectedServerKey}\n selectedServer={selectedServer}\n serverVariables={serverVariables}\n serverOpen={serverOpen}\n authOptions={authOptions}\n selectedAuthName={selectedAuthName}\n selectedAuth={selectedAuth}\n authValues={authValues}\n authOpen={authOpen}\n onSelectServer={(value) => {\n const nextServer = servers.find((server, index) => getServerKey(server, index) === value) ?? servers[0]\n setSelectedServerKey(value)\n setServerVariables(defaultServerVariables(nextServer))\n }}\n onChangeServerVariable={(name, value) => setServerVariables((current) => ({ ...current, [name]: value }))}\n onToggleServer={() => {\n setServerOpen((current) => !current)\n setAuthOpen(false)\n }}\n onToggleAuth={() => {\n setAuthOpen((current) => !current)\n setServerOpen(false)\n }}\n onSelectAuth={setSelectedAuthName}\n onChangeAuthValue={(name, value) => setAuthValues((current) => ({ ...current, [name]: value }))}\n />\n <div className=\"grid min-w-0 gap-4 lg:grid-cols-2\">\n <RequestExamplesPanel\n spec={spec}\n path={endpoint.path}\n method={method}\n parameters={parameters}\n requestContents={requestContents}\n selectedMediaType={selectedRequestContent?.mediaType ?? ''}\n onSelectMediaType={setSelectedRequestMediaType}\n selectedServer={selectedServer}\n serverVariables={serverVariables}\n auth={authInput}\n />\n <ResponseExamplesPanel operation={operation} spec={spec} />\n </div>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { MemoryRouter } from 'react-router-dom'\n\nimport { SectionProvider } from './app/SectionProvider'\nimport type { Section } from './app/SectionProvider'\nimport { ClarifyConfigContext, ClarifyLocaleContext, OpenApisContext } from './context'\nimport { OpenApiExamplesPreview } from './preview/openapi'\nimport type { PreviewEndpoint } from './preview/openapi'\nimport { Navigation } from './shell'\nimport type { ClarifyConfig, NavigationNode } from './types'\n\nexport type PreviewGuide = {\n label: string\n title: string\n body: string\n embed: string\n outputs?: string[]\n}\n\nexport type PreviewMetric = {\n label: string\n value: string\n hint?: string\n}\n\nexport type PreviewCard = {\n title: string\n description: string\n}\n\nconst embeddedEndpoint = {\n method: 'GET',\n path: '/examples/basic-request',\n summary: 'Basic request',\n description: 'Rendered from api.openapi.json inside the MDX guide.',\n parameters: [\n { name: 'cursor', in: 'query', type: 'string', description: 'Start after this cursor.' },\n { name: 'limit', in: 'query', type: 'integer', description: 'Max items to return.' },\n { name: 'X-Trace-Id', in: 'header', type: 'string', description: 'Optional request trace.' },\n ],\n responseDescription: 'A page of example records.',\n responseSchema: {\n type: 'object',\n required: ['items'],\n properties: {\n items: { type: 'array', items: { type: 'object' } },\n next: { type: 'string' },\n },\n },\n responseExample: {\n items: [],\n next: 'cursor_2',\n },\n} satisfies PreviewEndpoint\n\nconst embeddedGuide = {\n label: 'source/en-US/openapi/embedding.mdx',\n title: 'Embed OpenAPI in MDX',\n body: 'Use MDX for workflow context, then render the exact operation from the spec.',\n embed: '<OpenApiOperation specPath=\"/api\" path=\"/examples/basic-request\" method=\"get\" />',\n outputs: ['/openapi/embedding', '/api', '/api.openapi.json', '/llms.txt'],\n} satisfies PreviewGuide\n\nconst staticOutputEndpoint = {\n method: 'POST',\n path: '/api/{id}/path',\n summary: 'Create static build',\n description: 'Build static docs from MDX and OpenAPI sources.',\n parameters: [\n { name: 'id', in: 'path', type: 'string', required: true, description: 'Project ID.' }\n ],\n responseDescription: 'Build metadata and static outputs.',\n responseSchema: {\n type: 'object',\n required: ['id', 'status', 'outputs'],\n properties: {\n id: { type: 'string', description: 'Build identifier.' },\n status: { type: 'string', enum: ['queued', 'running', 'ready'], description: 'Current build state.' },\n outputs: {\n type: 'array',\n description: 'Generated static artifacts.',\n items: {\n type: 'object',\n required: ['path', 'kind'],\n properties: {\n path: { type: 'string' },\n kind: { type: 'string', enum: ['html', 'asset', 'openapi', 'llms'] },\n },\n },\n },\n },\n },\n requestDescription: 'Static build options.',\n requestSchema: {\n type: 'object',\n required: ['source', 'output'],\n properties: {\n source: { type: 'string', description: 'MDX source root.' },\n output: { type: 'string', description: 'Static output root.' },\n includeSearchIndex: { type: 'boolean', description: 'Generate search data.' },\n },\n },\n requestExample: {\n source: 'source',\n output: 'output',\n includeSearchIndex: true,\n },\n responseExample: {\n id: 'build_01HY',\n status: 'ready',\n outputs: [\n { path: '/openapi/index.html', kind: 'html' },\n { path: '/api.openapi.json', kind: 'openapi' },\n { path: '/llms.txt', kind: 'llms' },\n ],\n },\n} satisfies PreviewEndpoint\n\nconst previewConfig = {\n title: 'Clarify preview',\n description: 'Renderer preview environment',\n rootDirectory: 'source',\n routePrefix: '/',\n outputDirectory: 'output',\n theme: {\n preset: 'default',\n tokens: {\n colors: {\n primary: '#2563eb',\n accent: '#60a5fa',\n background: '#ffffff',\n foreground: '#18181b',\n surface: '#ffffff',\n muted: '#71717a',\n border: 'rgb(24 24 27 / 0.1)',\n codeBackground: '#f4f4f5',\n },\n radius: {\n sm: '0.375rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n },\n },\n layout: {\n maxWidth: '88rem',\n },\n editor: false,\n },\n i18n: {\n defaultLocale: 'en',\n missing: 'fallback',\n locales: [{ code: 'en', label: 'English' }],\n },\n} satisfies ClarifyConfig\n\nconst methodStyles: Record<string, string> = {\n GET: 'bg-emerald-400/15 text-emerald-600 dark:bg-emerald-400/20 dark:text-emerald-300',\n POST: 'bg-sky-400/15 text-sky-600 dark:bg-sky-400/20 dark:text-sky-300',\n PUT: 'bg-amber-400/15 text-amber-600 dark:bg-amber-400/20 dark:text-amber-300',\n PATCH: 'bg-amber-400/15 text-amber-600 dark:bg-amber-400/20 dark:text-amber-300',\n DELETE: 'bg-rose-400/15 text-rose-600 dark:bg-rose-400/20 dark:text-rose-300',\n}\n\nconst mainPreviewPath = '/openapi/embedding'\n\nconst mainPreviewSections = [\n { id: 'overview', title: 'Overview' },\n { id: 'request-example', title: 'Request example' }\n] satisfies Section[]\n\ntype PreviewEnvironmentProps = { children: ReactNode; initialEntry?: string; sections?: Section[] }\n\nfunction PreviewEnvironment(arg0: PreviewEnvironmentProps) {\n const { children, initialEntry = '/preview', sections = [] } = arg0\n\n return (\n <MemoryRouter initialEntries={[initialEntry]}>\n <ClarifyConfigContext.Provider value={previewConfig}>\n <ClarifyLocaleContext.Provider value={previewConfig.i18n.defaultLocale}>\n <OpenApisContext.Provider value={{}}>\n <SectionProvider sections={sections}>\n {children}\n </SectionProvider>\n </OpenApisContext.Provider>\n </ClarifyLocaleContext.Provider>\n </ClarifyConfigContext.Provider>\n </MemoryRouter>\n )\n}\n\ntype ChromeProps = { title: string; status?: string; children: ReactNode }\n\nfunction Chrome(arg0: ChromeProps) {\n const { title, status, children } = arg0\n\n return (\n <div className=\"clarify-app clarify-preview h-full overflow-hidden bg-(--clarify-theme-tokens-colors-background) text-(--clarify-ui-text) shadow-2xl ring-1 ring-(--clarify-theme-tokens-colors-border) dark:bg-zinc-950 dark:text-white dark:ring-white/10\">\n <div className=\"flex items-center gap-3 border-b border-(--clarify-theme-tokens-colors-border) px-4 py-3 text-xs/6 text-(--clarify-ui-text-faint) dark:border-white/10\">\n <span className=\"size-2 rounded-full bg-rose-400\" />\n <span className=\"size-2 rounded-full bg-amber-400\" />\n <span className=\"size-2 rounded-full bg-emerald-400\" />\n <span className=\"ml-2 truncate font-medium text-(--clarify-ui-text-soft)\">{title}</span>\n {status ? <span className=\"ml-auto hidden rounded-full bg-emerald-400/15 px-2 py-0.5 font-medium text-emerald-700 sm:inline dark:text-emerald-300\">{status}</span> : null}\n </div>\n {children}\n </div>\n )\n}\n\ntype MethodBadgeProps = { method: string }\n\nfunction MethodBadge(arg0: MethodBadgeProps) {\n const method = arg0.method.toUpperCase()\n\n return (\n <span className={`rounded-md px-2.5 py-0.5 text-xs/6 font-black tracking-wide ${methodStyles[method] ?? 'bg-(--clarify-ui-subtle-background) text-(--clarify-ui-text-soft)'}`}>\n {method}\n </span>\n )\n}\n\ntype CreatePreviewNavigationProps = { endpoint: PreviewEndpoint; guide?: PreviewGuide; outputs: string[] }\n\nfunction createPreviewNavigation(arg0: CreatePreviewNavigationProps): NavigationNode[] {\n const { endpoint, guide, outputs } = arg0\n\n return [\n {\n title: 'Guides',\n path: '/guides',\n icon: 'BookOpenText',\n children: [\n { title: guide?.title ?? 'MDX guide', path: mainPreviewPath, icon: 'FileText' },\n { title: 'Getting started', path: '/getting-started', icon: 'Rocket' },\n ],\n },\n {\n title: 'API Reference',\n path: '/api',\n icon: 'Braces',\n children: [\n { title: endpoint.summary, path: endpoint.path, icon: 'Cable' },\n { title: 'Generate static output', path: staticOutputEndpoint.path, icon: 'UploadCloud' },\n ],\n },\n {\n title: 'Build Output',\n path: '/output',\n icon: 'PackageCheck',\n children: [\n { title: `Routes (${outputs.length})`, path: '/output/routes', icon: 'ListTree' }\n ],\n },\n ] satisfies NavigationNode[]\n}\n\ntype PreviewNavigationProps = { endpoint: PreviewEndpoint; guide?: PreviewGuide; outputs: string[] }\n\nfunction PreviewNavigation(arg0: PreviewNavigationProps) {\n return <Navigation navigation={createPreviewNavigation(arg0)} className=\"px-2\" />\n}\n\ntype PreviewMetricGridProps = { metrics: PreviewMetric[] }\n\nfunction PreviewMetricGrid(arg0: PreviewMetricGridProps) {\n const { metrics } = arg0\n\n return (\n <div className=\"grid grid-cols-3 gap-2\">\n {metrics.map((metric) => (\n <div key={metric.label} className=\"rounded-xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-2.5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <div className=\"text-xs/5 text-(--clarify-ui-text-faint)\">{metric.label}</div>\n <div className=\"text-base/6 font-semibold text-(--clarify-ui-text-strong)\">{metric.value}</div>\n {metric.hint ? <div className=\"text-xs/5 text-(--clarify-ui-text-faint)\">{metric.hint}</div> : null}\n </div>\n ))}\n </div>\n )\n}\n\ntype PreviewLabelProps = { children: ReactNode }\n\nfunction PreviewLabel(arg0: PreviewLabelProps) {\n return <div className=\"text-xs/5 font-semibold uppercase tracking-wider text-(--clarify-ui-text-faint)\">{arg0.children}</div>\n}\n\ntype GuideSummaryPreviewProps = { guide: PreviewGuide }\n\nfunction GuideSummaryPreview(arg0: GuideSummaryPreviewProps) {\n const { guide } = arg0\n\n return (\n <header className=\"border-b border-(--clarify-theme-tokens-colors-border) pb-4 dark:border-white/10\">\n <PreviewLabel>{guide.label}</PreviewLabel>\n <h2 className=\"mt-1 text-xl/7 font-semibold tracking-tight text-(--clarify-ui-text-strong)\">{guide.title}</h2>\n <p className=\"mt-2 max-w-2xl text-sm/6 text-(--clarify-ui-text-soft)\">{guide.body}</p>\n <pre className=\"mt-3 overflow-hidden rounded-xl bg-zinc-950 px-3 py-2 text-xs/5 whitespace-pre-wrap text-zinc-300\">{guide.embed}</pre>\n </header>\n )\n}\n\ntype EndpointSummaryPreviewProps = { endpoint: PreviewEndpoint }\n\nfunction EndpointSummaryPreview(arg0: EndpointSummaryPreviewProps) {\n const { endpoint } = arg0\n\n return (\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <MethodBadge method={endpoint.method} />\n <code className=\"text-sm font-medium text-(--clarify-ui-text)\">{endpoint.path}</code>\n </div>\n <h3 className=\"mt-3 text-lg/7 font-semibold tracking-tight text-(--clarify-ui-text-strong)\">{endpoint.summary}</h3>\n <p className=\"mt-1 text-sm/6 text-(--clarify-ui-text-soft)\">{endpoint.description}</p>\n </div>\n )\n}\n\ntype EmbeddedApiPreviewProps = { endpoint: PreviewEndpoint }\n\nfunction EmbeddedApiPreview(arg0: EmbeddedApiPreviewProps) {\n const { endpoint } = arg0\n\n return (\n <div className=\"clarify-preview-api-frame min-w-0 overflow-hidden border-t border-(--clarify-theme-tokens-colors-border) pt-4 dark:border-white/10\">\n <div className=\"clarify-preview-api-content clarify-preview-api-content-embedded\">\n <OpenApiExamplesPreview endpoint={endpoint} />\n </div>\n </div>\n )\n}\n\ntype OutputListPreviewProps = { outputs: string[] }\n\nfunction OutputListPreview(arg0: OutputListPreviewProps) {\n const { outputs } = arg0\n\n return (\n <div className=\"border-t border-(--clarify-theme-tokens-colors-border) pt-4 dark:border-white/10\">\n <PreviewLabel>Static output</PreviewLabel>\n <div className=\"mt-3 grid gap-2 sm:grid-cols-2 xl:grid-cols-4\">\n {outputs.map((output) => (\n <div key={output} className=\"flex items-center gap-2 rounded-lg bg-(--clarify-ui-subtle-background) px-3 py-2 text-xs/5 text-(--clarify-ui-text-soft) dark:bg-white/5\">\n <span className=\"size-1.5 rounded-full bg-emerald-400\" />\n <span className=\"truncate font-mono\">{output}</span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction MainContentPreview() {\n return (\n <section className=\"min-w-0 bg-(--clarify-theme-tokens-colors-background) px-5 py-4 dark:bg-zinc-950\">\n <div className=\"clarify-preview-content-window overflow-hidden\">\n <div className=\"space-y-4\">\n <GuideSummaryPreview guide={embeddedGuide} />\n <PreviewMetricGrid metrics={[\n { label: 'MDX', value: 'Guide', hint: 'context' },\n { label: 'Spec', value: 'OpenAPI', hint: 'source' },\n { label: 'Out', value: 'Static', hint: 'CDN' },\n ]} />\n <div className=\"clarify-preview-endpoint-grid grid gap-4\">\n <EndpointSummaryPreview endpoint={embeddedEndpoint} />\n <EmbeddedApiPreview endpoint={embeddedEndpoint} />\n </div>\n <OutputListPreview outputs={embeddedGuide.outputs ?? []} />\n </div>\n </div>\n </section>\n )\n}\n\nexport function MainPreview() {\n return (\n <PreviewEnvironment initialEntry={mainPreviewPath} sections={mainPreviewSections}>\n <Chrome title=\"source/en-US/openapi/embedding.mdx\" status=\"Rendered from OpenAPI + MDX\">\n <div className=\"clarify-preview-shell grid\">\n <aside className=\"border-r border-(--clarify-theme-tokens-colors-border) px-1 py-4 text-sm/7 dark:border-white/10 dark:bg-white/5\">\n <PreviewNavigation endpoint={embeddedEndpoint} guide={embeddedGuide} outputs={embeddedGuide.outputs ?? []} />\n </aside>\n <MainContentPreview />\n </div>\n </Chrome>\n </PreviewEnvironment>\n )\n}\n\nexport function MdxPreview() {\n return (\n <PreviewEnvironment>\n <Chrome title=\"source/started/index.mdx\" status=\"Rendered by renderer\">\n <div className=\"clarify-preview-body overflow-hidden bg-(--clarify-theme-tokens-colors-background) p-5 dark:bg-zinc-950\">\n <article className=\"max-w-3xl text-sm/7 text-(--clarify-ui-text-soft)\">\n <div className=\"inline-flex rounded-full bg-(--clarify-ui-accent-background) px-3 py-1 text-xs/5 font-semibold text-(--clarify-ui-accent-text)\">MDX page</div>\n <h2 className=\"mt-3 text-2xl/8 font-semibold tracking-tight text-(--clarify-ui-text-strong)\">Get Started</h2>\n <p className=\"mt-3\">Write pages in source/. Clarify turns MDX, config, and OpenAPI files into routes.</p>\n <div className=\"mt-5 rounded-2xl border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-ui-text-strong)\">\n <div className=\"font-semibold text-(--clarify-ui-text-strong)\">Static output ready</div>\n <p className=\"mt-1\">output/ is plain static files.</p>\n </div>\n <div className=\"mt-5 grid gap-4 sm:grid-cols-2\">\n <div className=\"rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <h3 className=\"text-base/6 font-semibold text-(--clarify-ui-text-strong)\">MDX pages</h3>\n <p className=\"mt-2 text-sm/6\">Guides live beside code.</p>\n </div>\n <div className=\"rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <h3 className=\"text-base/6 font-semibold text-(--clarify-ui-text-strong)\">API embeds</h3>\n <p className=\"mt-2 text-sm/6\">Specs render inline.</p>\n </div>\n </div>\n <div className=\"mt-5 rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <div className=\"flex items-center gap-3\">\n <MethodBadge method={embeddedEndpoint.method} />\n <code className=\"text-sm font-medium text-(--clarify-ui-text)\">{embeddedEndpoint.path}</code>\n </div>\n <p className=\"mt-3 text-sm/6\">{embeddedEndpoint.description}</p>\n </div>\n </article>\n </div>\n </Chrome>\n </PreviewEnvironment>\n )\n}\n\nexport function OpenApiPreview() {\n return (\n <PreviewEnvironment>\n <Chrome title=\"source/api.openapi.json\" status=\"Endpoint + examples\">\n <div className=\"clarify-preview-openapi-window overflow-hidden bg-(--clarify-theme-tokens-colors-background) px-4 py-4 dark:bg-zinc-950\">\n <div className=\"clarify-preview-openapi-mask h-full overflow-hidden\">\n <div className=\"clarify-preview-api-content clarify-preview-api-content-openapi origin-top pb-10\">\n <OpenApiExamplesPreview endpoint={staticOutputEndpoint} />\n </div>\n </div>\n </div>\n </Chrome>\n </PreviewEnvironment>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"preview.cjs","names":[],"sources":["../source/preview/openapi.tsx","../source/preview.tsx"],"sourcesContent":["import { useState } from 'react'\n\nimport { authPlaceholder, defaultServerVariables, getAuthOptions, getServerKey, getServers, RequestExamplesPanel, ResponseExamplesPanel } from '../openapi/components/ExamplePanels'\nimport { EndpointIdentity } from '../openapi/components/OpenApiOperation'\nimport { getMediaTypeEntries, getRequestBody } from '../openapi/lib/helpers'\nimport type { OpenAPIOperation, OpenAPISpec } from '../openapi/lib/utils'\nimport type { OpenApiParameter, RequestAuthInput } from '../openapi/types'\n\nexport type PreviewParameter = {\n name: string\n in: string\n type: string\n required?: boolean\n description?: string\n schema?: unknown\n}\n\nexport type PreviewEndpoint = {\n method: string\n path: string\n summary: string\n description: string\n parameters?: PreviewParameter[]\n requestDescription?: string\n requestSchema?: unknown\n requestExample?: unknown\n response?: string\n responseStatus?: string\n responseDescription?: string\n responseSchema?: unknown\n responseExample?: unknown\n}\n\ntype CreatePreviewOpenApiResult = {\n operation: OpenAPIOperation\n spec: OpenAPISpec\n parameters: OpenApiParameter[]\n}\n\ntype OpenApiExamplesPreviewProps = { endpoint: PreviewEndpoint }\n\nfunction schemaFromType(type: string): unknown {\n if (type.endsWith('[]')) return { type: 'array', items: schemaFromType(type.slice(0, -2)) }\n if (type === 'number' || type === 'integer' || type === 'boolean' || type === 'object') return { type }\n return { type: 'string' }\n}\n\nfunction parseResponseExample(endpoint: PreviewEndpoint): unknown {\n if (typeof endpoint.responseExample !== 'undefined') return endpoint.responseExample\n if (!endpoint.response) return undefined\n\n try {\n return JSON.parse(endpoint.response)\n } catch {\n return endpoint.response\n }\n}\n\nfunction inferSchemaFromExample(example: unknown): unknown {\n if (Array.isArray(example)) {\n return { type: 'array', items: inferSchemaFromExample(example[0]) ?? { type: 'object' } }\n }\n\n if (typeof example === 'object' && example !== null) {\n return {\n type: 'object',\n properties: Object.fromEntries(Object.entries(example).map(([key, value]) => [key, inferSchemaFromExample(value)])),\n }\n }\n\n if (typeof example === 'number') return { type: Number.isInteger(example) ? 'integer' : 'number' }\n if (typeof example === 'boolean') return { type: 'boolean' }\n return typeof example === 'undefined' ? undefined : { type: 'string' }\n}\n\nfunction normalizeParameterLocation(location: string): string {\n return location === 'route' ? 'path' : location\n}\n\nfunction toOpenApiParameter(parameter: PreviewParameter): OpenApiParameter {\n return {\n name: parameter.name,\n in: normalizeParameterLocation(parameter.in),\n required: parameter.required,\n description: parameter.description,\n schema: parameter.schema ?? schemaFromType(parameter.type),\n }\n}\n\nfunction createPreviewOpenApi(endpoint: PreviewEndpoint): CreatePreviewOpenApiResult {\n const method = endpoint.method.toLowerCase()\n const parameters = (endpoint.parameters ?? []).map(toOpenApiParameter)\n const responseExample = parseResponseExample(endpoint)\n const responseSchema = endpoint.responseSchema ?? inferSchemaFromExample(responseExample)\n const requestSchema = endpoint.requestSchema ?? inferSchemaFromExample(endpoint.requestExample)\n const operation = {\n summary: endpoint.summary,\n description: endpoint.description,\n parameters,\n requestBody: requestSchema\n ? {\n description: endpoint.requestDescription,\n required: true,\n content: {\n 'application/json': {\n schema: requestSchema,\n example: endpoint.requestExample,\n },\n },\n }\n : undefined,\n responses: {\n [endpoint.responseStatus ?? '200']: {\n description: endpoint.responseDescription ?? 'OK',\n content: {\n 'application/json': {\n schema: responseSchema,\n example: responseExample,\n },\n },\n },\n },\n } as OpenAPIOperation\n const spec = {\n openapi: '3.1.0',\n info: {\n title: 'Clarify Build API',\n version: '2026-06-20',\n description: 'API reference generated from OpenAPI and rendered as static documentation.',\n },\n servers: [\n {\n url: 'https://server',\n description: 'Production',\n },\n {\n url: 'https://test-server',\n description: 'Test',\n },\n ],\n components: {\n securitySchemes: {\n bearerAuth: {\n type: 'http',\n scheme: 'bearer',\n bearerFormat: 'JWT',\n },\n },\n },\n security: [{ bearerAuth: [] }],\n paths: {\n [endpoint.path]: {\n [method]: operation,\n },\n },\n } as OpenAPISpec\n\n return { operation, spec, parameters }\n}\n\nexport function OpenApiExamplesPreview(arg0: OpenApiExamplesPreviewProps) {\n const { endpoint } = arg0\n const { operation, spec, parameters } = createPreviewOpenApi(endpoint)\n const method = endpoint.method.toUpperCase()\n const requestBody = getRequestBody(spec, operation)\n const requestContents = getMediaTypeEntries(requestBody?.content, spec)\n const [selectedRequestMediaType, setSelectedRequestMediaType] = useState(requestContents[0]?.mediaType ?? '')\n const selectedRequestContent = requestContents.find((content) => content.mediaType === selectedRequestMediaType) ?? requestContents[0]\n const servers = getServers(spec, operation, endpoint.path)\n const [selectedServerKey, setSelectedServerKey] = useState(getServerKey(servers[0], 0))\n const selectedServer = servers.find((server, index) => getServerKey(server, index) === selectedServerKey) ?? servers[0]\n const [serverVariables, setServerVariables] = useState(defaultServerVariables(selectedServer))\n const [serverOpen, setServerOpen] = useState(false)\n const authOptions = getAuthOptions(spec, operation)\n const [selectedAuthName, setSelectedAuthName] = useState(authOptions[0]?.name ?? '')\n const selectedAuth = authOptions.find((option) => option.name === selectedAuthName)\n const [authValues, setAuthValues] = useState<Record<string, string>>({})\n const [authOpen, setAuthOpen] = useState(false)\n const authInput: RequestAuthInput | undefined = selectedAuth\n ? { name: selectedAuth.name, scheme: selectedAuth.scheme, value: authValues[selectedAuth.name] ?? authPlaceholder(selectedAuth) }\n : undefined\n\n return (\n <div className=\"space-y-4\">\n <EndpointIdentity\n method={method}\n path={endpoint.path}\n servers={servers}\n selectedServerKey={selectedServerKey}\n selectedServer={selectedServer}\n serverVariables={serverVariables}\n serverOpen={serverOpen}\n authOptions={authOptions}\n selectedAuthName={selectedAuthName}\n selectedAuth={selectedAuth}\n authValues={authValues}\n authOpen={authOpen}\n onSelectServer={(value) => {\n const nextServer = servers.find((server, index) => getServerKey(server, index) === value) ?? servers[0]\n setSelectedServerKey(value)\n setServerVariables(defaultServerVariables(nextServer))\n }}\n onChangeServerVariable={(name, value) => setServerVariables((current) => ({ ...current, [name]: value }))}\n onToggleServer={() => {\n setServerOpen((current) => !current)\n setAuthOpen(false)\n }}\n onToggleAuth={() => {\n setAuthOpen((current) => !current)\n setServerOpen(false)\n }}\n onSelectAuth={setSelectedAuthName}\n onChangeAuthValue={(name, value) => setAuthValues((current) => ({ ...current, [name]: value }))}\n />\n <div className=\"grid min-w-0 gap-4 lg:grid-cols-2\">\n <RequestExamplesPanel\n spec={spec}\n path={endpoint.path}\n method={method}\n parameters={parameters}\n requestContents={requestContents}\n selectedMediaType={selectedRequestContent?.mediaType ?? ''}\n onSelectMediaType={setSelectedRequestMediaType}\n selectedServer={selectedServer}\n serverVariables={serverVariables}\n auth={authInput}\n />\n <ResponseExamplesPanel operation={operation} spec={spec} />\n </div>\n </div>\n )\n}\n","import { Menu, X } from 'lucide-react'\nimport type { ReactNode } from 'react'\nimport { useState } from 'react'\nimport { MemoryRouter } from 'react-router-dom'\n\nimport { SectionProvider } from './app/SectionProvider'\nimport type { Section } from './app/SectionProvider'\nimport { ClarifyConfigContext, ClarifyLocaleContext, OpenApisContext } from './context'\nimport { OpenApiExamplesPreview } from './preview/openapi'\nimport type { PreviewEndpoint } from './preview/openapi'\nimport { Navigation } from './shell'\nimport type { ClarifyConfig, NavigationNode } from './types'\n\nexport type PreviewGuide = {\n label: string\n title: string\n body: string\n embed: string\n outputs?: string[]\n}\n\nexport type PreviewMetric = {\n label: string\n value: string\n hint?: string\n}\n\nexport type PreviewCard = {\n title: string\n description: string\n}\n\nconst embeddedEndpoint = {\n method: 'GET',\n path: '/examples/basic-request',\n summary: 'Basic request',\n description: 'Rendered from api.openapi.json inside the MDX guide.',\n parameters: [\n { name: 'cursor', in: 'query', type: 'string', description: 'Start after this cursor.' },\n { name: 'limit', in: 'query', type: 'integer', description: 'Max items to return.' },\n { name: 'X-Trace-Id', in: 'header', type: 'string', description: 'Optional request trace.' },\n ],\n responseDescription: 'A page of example records.',\n responseSchema: {\n type: 'object',\n required: ['items'],\n properties: {\n items: { type: 'array', items: { type: 'object' } },\n next: { type: 'string' },\n },\n },\n responseExample: {\n items: [],\n next: 'cursor_2',\n },\n} satisfies PreviewEndpoint\n\nconst embeddedGuide = {\n label: 'source/en-US/openapi/embedding.mdx',\n title: 'Embed OpenAPI in MDX',\n body: 'Use MDX for workflow context, then render the exact operation from the spec.',\n embed: '<OpenApiOperation specPath=\"/api\" path=\"/examples/basic-request\" method=\"get\" />',\n outputs: ['/openapi/embedding', '/api', '/api.openapi.json', '/llms.txt'],\n} satisfies PreviewGuide\n\nconst staticOutputEndpoint = {\n method: 'POST',\n path: '/api/{id}/path',\n summary: 'Create static build',\n description: 'Build static docs from MDX and OpenAPI sources.',\n parameters: [\n { name: 'id', in: 'path', type: 'string', required: true, description: 'Project ID.' }\n ],\n responseDescription: 'Build metadata and static outputs.',\n responseSchema: {\n type: 'object',\n required: ['id', 'status', 'outputs'],\n properties: {\n id: { type: 'string', description: 'Build identifier.' },\n status: { type: 'string', enum: ['queued', 'running', 'ready'], description: 'Current build state.' },\n outputs: {\n type: 'array',\n description: 'Generated static artifacts.',\n items: {\n type: 'object',\n required: ['path', 'kind'],\n properties: {\n path: { type: 'string' },\n kind: { type: 'string', enum: ['html', 'asset', 'openapi', 'llms'] },\n },\n },\n },\n },\n },\n requestDescription: 'Static build options.',\n requestSchema: {\n type: 'object',\n required: ['source', 'output'],\n properties: {\n source: { type: 'string', description: 'MDX source root.' },\n output: { type: 'string', description: 'Static output root.' },\n includeSearchIndex: { type: 'boolean', description: 'Generate search data.' },\n },\n },\n requestExample: {\n source: 'source',\n output: 'output',\n includeSearchIndex: true,\n },\n responseExample: {\n id: 'build_01HY',\n status: 'ready',\n outputs: [\n { path: '/openapi/index.html', kind: 'html' },\n { path: '/api.openapi.json', kind: 'openapi' },\n { path: '/llms.txt', kind: 'llms' },\n ],\n },\n} satisfies PreviewEndpoint\n\nconst previewConfig = {\n title: 'Clarify preview',\n description: 'Renderer preview environment',\n rootDirectory: 'source',\n routePrefix: '/',\n outputDirectory: 'output',\n theme: {\n preset: 'default',\n tokens: {\n colors: {\n primary: '#2563eb',\n accent: '#60a5fa',\n background: '#ffffff',\n foreground: '#18181b',\n surface: '#ffffff',\n muted: '#71717a',\n border: 'rgb(24 24 27 / 0.1)',\n codeBackground: '#f4f4f5',\n },\n radius: {\n sm: '0.375rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n },\n },\n layout: {\n maxWidth: '88rem',\n },\n editor: false,\n },\n i18n: {\n defaultLocale: 'en',\n missing: 'fallback',\n locales: [{ code: 'en', label: 'English' }],\n },\n} satisfies ClarifyConfig\n\nconst methodStyles: Record<string, string> = {\n GET: 'bg-emerald-400/15 text-emerald-600 dark:bg-emerald-400/20 dark:text-emerald-300',\n POST: 'bg-sky-400/15 text-sky-600 dark:bg-sky-400/20 dark:text-sky-300',\n PUT: 'bg-amber-400/15 text-amber-600 dark:bg-amber-400/20 dark:text-amber-300',\n PATCH: 'bg-amber-400/15 text-amber-600 dark:bg-amber-400/20 dark:text-amber-300',\n DELETE: 'bg-rose-400/15 text-rose-600 dark:bg-rose-400/20 dark:text-rose-300',\n}\n\nconst mainPreviewPath = '/openapi/embedding'\n\nconst mainPreviewSections = [\n { id: 'overview', title: 'Overview' },\n { id: 'request-example', title: 'Request example' }\n] satisfies Section[]\n\ntype PreviewEnvironmentProps = { children: ReactNode; initialEntry?: string; sections?: Section[] }\n\nfunction PreviewEnvironment(arg0: PreviewEnvironmentProps) {\n const { children, initialEntry = '/preview', sections = [] } = arg0\n\n return (\n <MemoryRouter initialEntries={[initialEntry]}>\n <ClarifyConfigContext.Provider value={previewConfig}>\n <ClarifyLocaleContext.Provider value={previewConfig.i18n.defaultLocale}>\n <OpenApisContext.Provider value={{}}>\n <SectionProvider sections={sections}>\n {children}\n </SectionProvider>\n </OpenApisContext.Provider>\n </ClarifyLocaleContext.Provider>\n </ClarifyConfigContext.Provider>\n </MemoryRouter>\n )\n}\n\ntype ChromeProps = { title: string; status?: string; headerAction?: ReactNode; children: ReactNode }\n\nfunction Chrome(arg0: ChromeProps) {\n const { title, status, headerAction, children } = arg0\n\n return (\n <div className=\"clarify-app clarify-preview h-full overflow-hidden bg-(--clarify-theme-tokens-colors-background) text-(--clarify-ui-text) shadow-2xl ring-1 ring-(--clarify-theme-tokens-colors-border) dark:bg-zinc-950 dark:text-white dark:ring-white/10\">\n <div className=\"flex items-center gap-3 border-b border-(--clarify-theme-tokens-colors-border) px-4 py-3 text-xs/6 text-(--clarify-ui-text-faint) dark:border-white/10\">\n <span className=\"size-2 rounded-full bg-rose-400\" />\n <span className=\"size-2 rounded-full bg-amber-400\" />\n <span className=\"size-2 rounded-full bg-emerald-400\" />\n <span className=\"ml-2 min-w-0 flex-1 truncate font-medium text-(--clarify-ui-text-soft)\">{title}</span>\n {status ? <span className=\"hidden rounded-full bg-emerald-400/15 px-2 py-0.5 font-medium text-emerald-700 sm:inline dark:text-emerald-300\">{status}</span> : null}\n {headerAction}\n </div>\n {children}\n </div>\n )\n}\n\ntype MethodBadgeProps = { method: string }\n\nfunction MethodBadge(arg0: MethodBadgeProps) {\n const method = arg0.method.toUpperCase()\n\n return (\n <span className={`rounded-md px-2.5 py-0.5 text-xs/6 font-black tracking-wide ${methodStyles[method] ?? 'bg-(--clarify-ui-subtle-background) text-(--clarify-ui-text-soft)'}`}>\n {method}\n </span>\n )\n}\n\ntype CreatePreviewNavigationProps = { endpoint: PreviewEndpoint; guide?: PreviewGuide; outputs: string[] }\n\nfunction createPreviewNavigation(arg0: CreatePreviewNavigationProps): NavigationNode[] {\n const { endpoint, guide, outputs } = arg0\n\n return [\n {\n title: 'Guides',\n path: '/guides',\n icon: 'BookOpenText',\n children: [\n { title: guide?.title ?? 'MDX guide', path: mainPreviewPath, icon: 'FileText' },\n { title: 'Getting started', path: '/getting-started', icon: 'Rocket' },\n ],\n },\n {\n title: 'API Reference',\n path: '/api',\n icon: 'Braces',\n children: [\n { title: endpoint.summary, path: endpoint.path, icon: 'Cable' },\n { title: 'Generate static output', path: staticOutputEndpoint.path, icon: 'UploadCloud' },\n ],\n },\n {\n title: 'Build Output',\n path: '/output',\n icon: 'PackageCheck',\n children: [\n { title: `Routes (${outputs.length})`, path: '/output/routes', icon: 'ListTree' }\n ],\n },\n ] satisfies NavigationNode[]\n}\n\ntype PreviewNavigationProps = { endpoint: PreviewEndpoint; guide?: PreviewGuide; outputs: string[] }\n\nfunction PreviewNavigation(arg0: PreviewNavigationProps) {\n return <Navigation navigation={createPreviewNavigation(arg0)} className=\"px-2\" />\n}\n\ntype MainPreviewMobileNavigationProps = PreviewNavigationProps & { isOpen: boolean; onClose: () => void }\n\nfunction MainPreviewMobileNavigation(arg0: MainPreviewMobileNavigationProps) {\n const { isOpen, onClose, ...navigationProps } = arg0\n const navigationId = 'clarify-main-preview-mobile-navigation'\n\n return (\n <div className=\"clarify-preview-mobile-navigation pointer-events-none absolute inset-0 z-20\">\n {isOpen ? (\n <button\n type=\"button\"\n className=\"absolute inset-0 bg-zinc-950/20 backdrop-blur-[1px] dark:bg-black/30\"\n aria-label=\"Close documentation menu\"\n onClick={onClose}\n />\n ) : null}\n <aside\n id={navigationId}\n className=\"pointer-events-auto absolute top-0 bottom-0 left-0 w-64 max-w-[82%] overflow-y-auto border-r border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background) px-1 py-4 text-sm/7 shadow-2xl shadow-zinc-900/20 transition-transform duration-200 ease-out data-closed:-translate-x-full dark:border-white/10 dark:bg-zinc-950 dark:shadow-black/40\"\n data-closed={!isOpen ? 'true' : undefined}\n >\n <PreviewNavigation {...navigationProps} />\n </aside>\n </div>\n )\n}\n\ntype PreviewMetricGridProps = { metrics: PreviewMetric[] }\n\nfunction PreviewMetricGrid(arg0: PreviewMetricGridProps) {\n const { metrics } = arg0\n\n return (\n <div className=\"grid grid-cols-1 gap-2 sm:grid-cols-3\">\n {metrics.map((metric) => (\n <div key={metric.label} className=\"rounded-xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-2.5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <div className=\"text-xs/5 text-(--clarify-ui-text-faint)\">{metric.label}</div>\n <div className=\"text-base/6 font-semibold text-(--clarify-ui-text-strong)\">{metric.value}</div>\n {metric.hint ? <div className=\"text-xs/5 text-(--clarify-ui-text-faint)\">{metric.hint}</div> : null}\n </div>\n ))}\n </div>\n )\n}\n\ntype PreviewLabelProps = { children: ReactNode }\n\nfunction PreviewLabel(arg0: PreviewLabelProps) {\n return <div className=\"text-xs/5 font-semibold uppercase tracking-wider text-(--clarify-ui-text-faint)\">{arg0.children}</div>\n}\n\ntype GuideSummaryPreviewProps = { guide: PreviewGuide }\n\nfunction GuideSummaryPreview(arg0: GuideSummaryPreviewProps) {\n const { guide } = arg0\n\n return (\n <header className=\"border-b border-(--clarify-theme-tokens-colors-border) pb-4 dark:border-white/10\">\n <PreviewLabel>{guide.label}</PreviewLabel>\n <h2 className=\"mt-1 text-xl/7 font-semibold tracking-tight text-(--clarify-ui-text-strong)\">{guide.title}</h2>\n <p className=\"mt-2 max-w-2xl text-sm/6 text-(--clarify-ui-text-soft)\">{guide.body}</p>\n <pre className=\"mt-3 overflow-hidden rounded-xl bg-zinc-950 px-3 py-2 text-xs/5 whitespace-pre-wrap text-zinc-300\">{guide.embed}</pre>\n </header>\n )\n}\n\ntype EndpointSummaryPreviewProps = { endpoint: PreviewEndpoint }\n\nfunction EndpointSummaryPreview(arg0: EndpointSummaryPreviewProps) {\n const { endpoint } = arg0\n\n return (\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <MethodBadge method={endpoint.method} />\n <code className=\"text-sm font-medium text-(--clarify-ui-text)\">{endpoint.path}</code>\n </div>\n <h3 className=\"mt-3 text-lg/7 font-semibold tracking-tight text-(--clarify-ui-text-strong)\">{endpoint.summary}</h3>\n <p className=\"mt-1 text-sm/6 text-(--clarify-ui-text-soft)\">{endpoint.description}</p>\n </div>\n )\n}\n\ntype EmbeddedApiPreviewProps = { endpoint: PreviewEndpoint }\n\nfunction EmbeddedApiPreview(arg0: EmbeddedApiPreviewProps) {\n const { endpoint } = arg0\n\n return (\n <div className=\"clarify-preview-api-frame min-w-0 overflow-hidden border-t border-(--clarify-theme-tokens-colors-border) pt-4 dark:border-white/10\">\n <div className=\"clarify-preview-api-content clarify-preview-api-content-embedded\">\n <OpenApiExamplesPreview endpoint={endpoint} />\n </div>\n </div>\n )\n}\n\ntype OutputListPreviewProps = { outputs: string[] }\n\nfunction OutputListPreview(arg0: OutputListPreviewProps) {\n const { outputs } = arg0\n\n return (\n <div className=\"border-t border-(--clarify-theme-tokens-colors-border) pt-4 dark:border-white/10\">\n <PreviewLabel>Static output</PreviewLabel>\n <div className=\"mt-3 grid gap-2 sm:grid-cols-2 xl:grid-cols-4\">\n {outputs.map((output) => (\n <div key={output} className=\"flex items-center gap-2 rounded-lg bg-(--clarify-ui-subtle-background) px-3 py-2 text-xs/5 text-(--clarify-ui-text-soft) dark:bg-white/5\">\n <span className=\"size-1.5 rounded-full bg-emerald-400\" />\n <span className=\"truncate font-mono\">{output}</span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction MainContentPreview() {\n return (\n <section className=\"min-w-0 bg-(--clarify-theme-tokens-colors-background) px-5 py-4 dark:bg-zinc-950\">\n <div className=\"clarify-preview-content-window overflow-hidden\">\n <div className=\"space-y-4\">\n <GuideSummaryPreview guide={embeddedGuide} />\n <PreviewMetricGrid metrics={[\n { label: 'MDX', value: 'Guide', hint: 'context' },\n { label: 'Spec', value: 'OpenAPI', hint: 'source' },\n { label: 'Out', value: 'Static', hint: 'CDN' },\n ]} />\n <div className=\"clarify-preview-endpoint-grid grid gap-4\">\n <EndpointSummaryPreview endpoint={embeddedEndpoint} />\n <EmbeddedApiPreview endpoint={embeddedEndpoint} />\n </div>\n <OutputListPreview outputs={embeddedGuide.outputs ?? []} />\n </div>\n </div>\n </section>\n )\n}\n\nexport function MainPreview() {\n const [isMobileNavigationOpen, setMobileNavigationOpen] = useState(false)\n const navigationProps = { endpoint: embeddedEndpoint, guide: embeddedGuide, outputs: embeddedGuide.outputs ?? [] }\n\n return (\n <PreviewEnvironment initialEntry={mainPreviewPath} sections={mainPreviewSections}>\n <Chrome\n title=\"source/en-US/openapi/embedding.mdx\"\n status=\"Rendered from OpenAPI + MDX\"\n headerAction={\n <button\n type=\"button\"\n className=\"clarify-preview-mobile-menu-button -my-1 flex size-7 items-center justify-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-ui-text-strong) transition hover:bg-(--clarify-ui-hover-background)\"\n aria-controls=\"clarify-main-preview-mobile-navigation\"\n aria-expanded={isMobileNavigationOpen}\n aria-label={isMobileNavigationOpen ? 'Close documentation menu' : 'Open documentation menu'}\n onClick={() => setMobileNavigationOpen((value) => !value)}\n >\n {isMobileNavigationOpen ? <X className=\"h-4 w-4 shrink-0\" /> : <Menu className=\"h-4 w-4 shrink-0\" />}\n </button>\n }\n >\n <div className=\"clarify-preview-shell relative grid overflow-hidden\">\n <MainPreviewMobileNavigation {...navigationProps} isOpen={isMobileNavigationOpen} onClose={() => setMobileNavigationOpen(false)} />\n <aside className=\"clarify-preview-sidebar border-r border-(--clarify-theme-tokens-colors-border) px-1 py-4 text-sm/7 dark:border-white/10 dark:bg-white/5\">\n <PreviewNavigation {...navigationProps} />\n </aside>\n <MainContentPreview />\n </div>\n </Chrome>\n </PreviewEnvironment>\n )\n}\n\nexport function MdxPreview() {\n return (\n <PreviewEnvironment>\n <Chrome title=\"source/started/index.mdx\" status=\"Rendered by renderer\">\n <div className=\"clarify-preview-body overflow-x-hidden overflow-y-auto bg-(--clarify-theme-tokens-colors-background) p-4 sm:p-5 dark:bg-zinc-950\">\n <article className=\"max-w-3xl text-sm/7 text-(--clarify-ui-text-soft)\">\n <div className=\"inline-flex rounded-full bg-(--clarify-ui-accent-background) px-3 py-1 text-xs/5 font-semibold text-(--clarify-ui-accent-text)\">MDX page</div>\n <h2 className=\"mt-3 text-xl/7 font-semibold tracking-tight text-(--clarify-ui-text-strong) sm:text-2xl/8\">Get Started</h2>\n <p className=\"mt-3\">Write pages in source/. Clarify turns MDX, config, and OpenAPI files into routes.</p>\n <div className=\"mt-4 rounded-2xl border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-ui-text-strong) sm:mt-5\">\n <div className=\"font-semibold text-(--clarify-ui-text-strong)\">Static output ready</div>\n <p className=\"mt-1\">output/ is plain static files.</p>\n </div>\n <div className=\"mt-4 grid gap-3 sm:mt-5 sm:grid-cols-2 sm:gap-4\">\n <div className=\"rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <h3 className=\"text-base/6 font-semibold text-(--clarify-ui-text-strong)\">MDX pages</h3>\n <p className=\"mt-2 text-sm/6\">Guides live beside code.</p>\n </div>\n <div className=\"rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <h3 className=\"text-base/6 font-semibold text-(--clarify-ui-text-strong)\">API embeds</h3>\n <p className=\"mt-2 text-sm/6\">Specs render inline.</p>\n </div>\n </div>\n <div className=\"mt-5 rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50\">\n <div className=\"flex items-center gap-3\">\n <MethodBadge method={embeddedEndpoint.method} />\n <code className=\"text-sm font-medium text-(--clarify-ui-text)\">{embeddedEndpoint.path}</code>\n </div>\n <p className=\"mt-3 text-sm/6\">{embeddedEndpoint.description}</p>\n </div>\n </article>\n </div>\n </Chrome>\n </PreviewEnvironment>\n )\n}\n\nexport function OpenApiPreview() {\n return (\n <PreviewEnvironment>\n <Chrome title=\"source/api.openapi.json\" status=\"Endpoint + examples\">\n <div className=\"clarify-preview-openapi-window overflow-x-hidden overflow-y-auto bg-(--clarify-theme-tokens-colors-background) px-3 py-3 sm:px-4 sm:py-4 dark:bg-zinc-950\">\n <div className=\"clarify-preview-openapi-mask min-h-full\">\n <div className=\"clarify-preview-api-content clarify-preview-api-content-openapi origin-top pb-6 sm:pb-10\">\n <OpenApiExamplesPreview endpoint={staticOutputEndpoint} />\n </div>\n </div>\n </div>\n </Chrome>\n </PreviewEnvironment>\n )\n}\n"],"mappings":"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"}
package/output/preview.js CHANGED
@@ -1,7 +1,8 @@
1
- import { a as authPlaceholder, c as getServerKey, d as getRequestBody, i as ResponseExamplesPanel, l as getServers, o as defaultServerVariables, r as RequestExamplesPanel, s as getAuthOptions, t as EndpointIdentity, u as getMediaTypeEntries } from "./OpenApiOperation-CI_PeMSy.js";
2
- import { S as OpenApisContext, b as ClarifyConfigContext, i as SectionProvider, n as Navigation, x as ClarifyLocaleContext } from "./shell-DvTfFx6M.js";
1
+ import { a as authPlaceholder, c as getServerKey, d as getRequestBody, i as ResponseExamplesPanel, l as getServers, o as defaultServerVariables, r as RequestExamplesPanel, s as getAuthOptions, t as EndpointIdentity, u as getMediaTypeEntries } from "./OpenApiOperation-CWSOhUVa.js";
2
+ import { A as OpenApisContext, O as ClarifyConfigContext, i as SectionProvider, k as ClarifyLocaleContext, n as Navigation } from "./shell-CumiARRe.js";
3
3
  import { useState } from "react";
4
4
  import { MemoryRouter } from "react-router-dom";
5
+ import { Menu, X } from "lucide-react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region source/preview/openapi.tsx
7
8
  function schemaFromType(type) {
@@ -406,7 +407,7 @@ function PreviewEnvironment(arg0) {
406
407
  });
407
408
  }
408
409
  function Chrome(arg0) {
409
- const { title, status, children } = arg0;
410
+ const { title, status, headerAction, children } = arg0;
410
411
  return /* @__PURE__ */ jsxs("div", {
411
412
  className: "clarify-app clarify-preview h-full overflow-hidden bg-(--clarify-theme-tokens-colors-background) text-(--clarify-ui-text) shadow-2xl ring-1 ring-(--clarify-theme-tokens-colors-border) dark:bg-zinc-950 dark:text-white dark:ring-white/10",
412
413
  children: [/* @__PURE__ */ jsxs("div", {
@@ -416,13 +417,14 @@ function Chrome(arg0) {
416
417
  /* @__PURE__ */ jsx("span", { className: "size-2 rounded-full bg-amber-400" }),
417
418
  /* @__PURE__ */ jsx("span", { className: "size-2 rounded-full bg-emerald-400" }),
418
419
  /* @__PURE__ */ jsx("span", {
419
- className: "ml-2 truncate font-medium text-(--clarify-ui-text-soft)",
420
+ className: "ml-2 min-w-0 flex-1 truncate font-medium text-(--clarify-ui-text-soft)",
420
421
  children: title
421
422
  }),
422
423
  status ? /* @__PURE__ */ jsx("span", {
423
- className: "ml-auto hidden rounded-full bg-emerald-400/15 px-2 py-0.5 font-medium text-emerald-700 sm:inline dark:text-emerald-300",
424
+ className: "hidden rounded-full bg-emerald-400/15 px-2 py-0.5 font-medium text-emerald-700 sm:inline dark:text-emerald-300",
424
425
  children: status
425
- }) : null
426
+ }) : null,
427
+ headerAction
426
428
  ]
427
429
  }), children]
428
430
  });
@@ -483,10 +485,27 @@ function PreviewNavigation(arg0) {
483
485
  className: "px-2"
484
486
  });
485
487
  }
488
+ function MainPreviewMobileNavigation(arg0) {
489
+ const { isOpen, onClose, ...navigationProps } = arg0;
490
+ return /* @__PURE__ */ jsxs("div", {
491
+ className: "clarify-preview-mobile-navigation pointer-events-none absolute inset-0 z-20",
492
+ children: [isOpen ? /* @__PURE__ */ jsx("button", {
493
+ type: "button",
494
+ className: "absolute inset-0 bg-zinc-950/20 backdrop-blur-[1px] dark:bg-black/30",
495
+ "aria-label": "Close documentation menu",
496
+ onClick: onClose
497
+ }) : null, /* @__PURE__ */ jsx("aside", {
498
+ id: "clarify-main-preview-mobile-navigation",
499
+ className: "pointer-events-auto absolute top-0 bottom-0 left-0 w-64 max-w-[82%] overflow-y-auto border-r border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background) px-1 py-4 text-sm/7 shadow-2xl shadow-zinc-900/20 transition-transform duration-200 ease-out data-closed:-translate-x-full dark:border-white/10 dark:bg-zinc-950 dark:shadow-black/40",
500
+ "data-closed": !isOpen ? "true" : void 0,
501
+ children: /* @__PURE__ */ jsx(PreviewNavigation, { ...navigationProps })
502
+ })]
503
+ });
504
+ }
486
505
  function PreviewMetricGrid(arg0) {
487
506
  const { metrics } = arg0;
488
507
  return /* @__PURE__ */ jsx("div", {
489
- className: "grid grid-cols-3 gap-2",
508
+ className: "grid grid-cols-1 gap-2 sm:grid-cols-3",
490
509
  children: metrics.map((metric) => /* @__PURE__ */ jsxs("div", {
491
510
  className: "rounded-xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-2.5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50",
492
511
  children: [
@@ -619,22 +638,41 @@ function MainContentPreview() {
619
638
  });
620
639
  }
621
640
  function MainPreview() {
641
+ const [isMobileNavigationOpen, setMobileNavigationOpen] = useState(false);
642
+ const navigationProps = {
643
+ endpoint: embeddedEndpoint,
644
+ guide: embeddedGuide,
645
+ outputs: embeddedGuide.outputs ?? []
646
+ };
622
647
  return /* @__PURE__ */ jsx(PreviewEnvironment, {
623
648
  initialEntry: mainPreviewPath,
624
649
  sections: mainPreviewSections,
625
650
  children: /* @__PURE__ */ jsx(Chrome, {
626
651
  title: "source/en-US/openapi/embedding.mdx",
627
652
  status: "Rendered from OpenAPI + MDX",
653
+ headerAction: /* @__PURE__ */ jsx("button", {
654
+ type: "button",
655
+ className: "clarify-preview-mobile-menu-button -my-1 flex size-7 items-center justify-center rounded-(--clarify-theme-tokens-radius-md) text-(--clarify-ui-text-strong) transition hover:bg-(--clarify-ui-hover-background)",
656
+ "aria-controls": "clarify-main-preview-mobile-navigation",
657
+ "aria-expanded": isMobileNavigationOpen,
658
+ "aria-label": isMobileNavigationOpen ? "Close documentation menu" : "Open documentation menu",
659
+ onClick: () => setMobileNavigationOpen((value) => !value),
660
+ children: isMobileNavigationOpen ? /* @__PURE__ */ jsx(X, { className: "h-4 w-4 shrink-0" }) : /* @__PURE__ */ jsx(Menu, { className: "h-4 w-4 shrink-0" })
661
+ }),
628
662
  children: /* @__PURE__ */ jsxs("div", {
629
- className: "clarify-preview-shell grid",
630
- children: [/* @__PURE__ */ jsx("aside", {
631
- className: "border-r border-(--clarify-theme-tokens-colors-border) px-1 py-4 text-sm/7 dark:border-white/10 dark:bg-white/5",
632
- children: /* @__PURE__ */ jsx(PreviewNavigation, {
633
- endpoint: embeddedEndpoint,
634
- guide: embeddedGuide,
635
- outputs: embeddedGuide.outputs ?? []
636
- })
637
- }), /* @__PURE__ */ jsx(MainContentPreview, {})]
663
+ className: "clarify-preview-shell relative grid overflow-hidden",
664
+ children: [
665
+ /* @__PURE__ */ jsx(MainPreviewMobileNavigation, {
666
+ ...navigationProps,
667
+ isOpen: isMobileNavigationOpen,
668
+ onClose: () => setMobileNavigationOpen(false)
669
+ }),
670
+ /* @__PURE__ */ jsx("aside", {
671
+ className: "clarify-preview-sidebar border-r border-(--clarify-theme-tokens-colors-border) px-1 py-4 text-sm/7 dark:border-white/10 dark:bg-white/5",
672
+ children: /* @__PURE__ */ jsx(PreviewNavigation, { ...navigationProps })
673
+ }),
674
+ /* @__PURE__ */ jsx(MainContentPreview, {})
675
+ ]
638
676
  })
639
677
  })
640
678
  });
@@ -644,7 +682,7 @@ function MdxPreview() {
644
682
  title: "source/started/index.mdx",
645
683
  status: "Rendered by renderer",
646
684
  children: /* @__PURE__ */ jsx("div", {
647
- className: "clarify-preview-body overflow-hidden bg-(--clarify-theme-tokens-colors-background) p-5 dark:bg-zinc-950",
685
+ className: "clarify-preview-body overflow-x-hidden overflow-y-auto bg-(--clarify-theme-tokens-colors-background) p-4 sm:p-5 dark:bg-zinc-950",
648
686
  children: /* @__PURE__ */ jsxs("article", {
649
687
  className: "max-w-3xl text-sm/7 text-(--clarify-ui-text-soft)",
650
688
  children: [
@@ -653,7 +691,7 @@ function MdxPreview() {
653
691
  children: "MDX page"
654
692
  }),
655
693
  /* @__PURE__ */ jsx("h2", {
656
- className: "mt-3 text-2xl/8 font-semibold tracking-tight text-(--clarify-ui-text-strong)",
694
+ className: "mt-3 text-xl/7 font-semibold tracking-tight text-(--clarify-ui-text-strong) sm:text-2xl/8",
657
695
  children: "Get Started"
658
696
  }),
659
697
  /* @__PURE__ */ jsx("p", {
@@ -661,7 +699,7 @@ function MdxPreview() {
661
699
  children: "Write pages in source/. Clarify turns MDX, config, and OpenAPI files into routes."
662
700
  }),
663
701
  /* @__PURE__ */ jsxs("div", {
664
- className: "mt-5 rounded-2xl border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-ui-text-strong)",
702
+ className: "mt-4 rounded-2xl border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-ui-text-strong) sm:mt-5",
665
703
  children: [/* @__PURE__ */ jsx("div", {
666
704
  className: "font-semibold text-(--clarify-ui-text-strong)",
667
705
  children: "Static output ready"
@@ -671,7 +709,7 @@ function MdxPreview() {
671
709
  })]
672
710
  }),
673
711
  /* @__PURE__ */ jsxs("div", {
674
- className: "mt-5 grid gap-4 sm:grid-cols-2",
712
+ className: "mt-4 grid gap-3 sm:mt-5 sm:grid-cols-2 sm:gap-4",
675
713
  children: [/* @__PURE__ */ jsxs("div", {
676
714
  className: "rounded-2xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-sm dark:border-white/10 dark:bg-zinc-900/50",
677
715
  children: [/* @__PURE__ */ jsx("h3", {
@@ -715,11 +753,11 @@ function OpenApiPreview() {
715
753
  title: "source/api.openapi.json",
716
754
  status: "Endpoint + examples",
717
755
  children: /* @__PURE__ */ jsx("div", {
718
- className: "clarify-preview-openapi-window overflow-hidden bg-(--clarify-theme-tokens-colors-background) px-4 py-4 dark:bg-zinc-950",
756
+ className: "clarify-preview-openapi-window overflow-x-hidden overflow-y-auto bg-(--clarify-theme-tokens-colors-background) px-3 py-3 sm:px-4 sm:py-4 dark:bg-zinc-950",
719
757
  children: /* @__PURE__ */ jsx("div", {
720
- className: "clarify-preview-openapi-mask h-full overflow-hidden",
758
+ className: "clarify-preview-openapi-mask min-h-full",
721
759
  children: /* @__PURE__ */ jsx("div", {
722
- className: "clarify-preview-api-content clarify-preview-api-content-openapi origin-top pb-10",
760
+ className: "clarify-preview-api-content clarify-preview-api-content-openapi origin-top pb-6 sm:pb-10",
723
761
  children: /* @__PURE__ */ jsx(OpenApiExamplesPreview, { endpoint: staticOutputEndpoint })
724
762
  })
725
763
  })