@clarify-labs/renderer 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/output/{ClarifyShell-1LuBliwt.js → ClarifyShell-Cq5Af46F.js} +32 -12
  2. package/output/ClarifyShell-Cq5Af46F.js.map +1 -0
  3. package/output/{ClarifyShell-C6li72Ce.cjs → ClarifyShell-UsefuuLS.cjs} +31 -11
  4. package/output/ClarifyShell-UsefuuLS.cjs.map +1 -0
  5. package/output/{MermaidViewer-dXsomvM7.js → MermaidViewer-Bc9H25yK.js} +2 -2
  6. package/output/{MermaidViewer-dXsomvM7.js.map → MermaidViewer-Bc9H25yK.js.map} +1 -1
  7. package/output/{MermaidViewer-B6-BMCJG.cjs → MermaidViewer-Db7qsyVk.cjs} +2 -2
  8. package/output/{MermaidViewer-B6-BMCJG.cjs.map → MermaidViewer-Db7qsyVk.cjs.map} +1 -1
  9. package/output/{OpenApiOperation-DgrqzeiS.js → OpenApiOperation-BZWeCbvy.js} +471 -178
  10. package/output/OpenApiOperation-BZWeCbvy.js.map +1 -0
  11. package/output/{OpenApiOperation-B52IWlKb.cjs → OpenApiOperation-DbZjxIuj.cjs} +491 -174
  12. package/output/OpenApiOperation-DbZjxIuj.cjs.map +1 -0
  13. package/output/{PageActions-D7K9LDGf.js → PageActions-BQeEmXbT.js} +524 -350
  14. package/output/PageActions-BQeEmXbT.js.map +1 -0
  15. package/output/{PageActions-BjB6PYmL.cjs → PageActions-Dg1l9KB1.cjs} +521 -347
  16. package/output/PageActions-Dg1l9KB1.cjs.map +1 -0
  17. package/output/{SearchDialog-CxYLjRi5.js → SearchDialog-B67VA0Ut.js} +3 -3
  18. package/output/{SearchDialog-CxYLjRi5.js.map → SearchDialog-B67VA0Ut.js.map} +1 -1
  19. package/output/{SearchDialog-CIPvXMT3.cjs → SearchDialog-DjKvqN7p.cjs} +3 -3
  20. package/output/{SearchDialog-CIPvXMT3.cjs.map → SearchDialog-DjKvqN7p.cjs.map} +1 -1
  21. package/output/app/ContentDiagnostic.d.ts +2 -1
  22. package/output/client.cjs +3 -3
  23. package/output/client.js +3 -3
  24. package/output/components/AccordionGroup.d.ts +7 -0
  25. package/output/components/Collapse.d.ts +2 -0
  26. package/output/components/FileTree.d.ts +10 -0
  27. package/output/components/Image.d.ts +6 -0
  28. package/output/components/Steps.d.ts +12 -0
  29. package/output/components/Tabs.d.ts +12 -5
  30. package/output/components/Tooltip.d.ts +7 -0
  31. package/output/components/index.d.ts +10 -1
  32. package/output/core/i18n.d.ts +1 -1
  33. package/output/{i18n-DnqZHFT7.js → i18n-Bqth9d6Q.js} +5 -1
  34. package/output/i18n-Bqth9d6Q.js.map +1 -0
  35. package/output/{i18n-b4iTLeia.cjs → i18n-C-fReCj-.cjs} +5 -1
  36. package/output/i18n-C-fReCj-.cjs.map +1 -0
  37. package/output/index.cjs +17 -8
  38. package/output/index.cjs.map +1 -1
  39. package/output/index.d.ts +5 -4
  40. package/output/index.js +14 -9
  41. package/output/index.js.map +1 -1
  42. package/output/mdx/components.d.ts +9 -0
  43. package/output/mdx/primitives.d.ts +4 -2
  44. package/output/openapi/components/CodeDisplay.d.ts +1 -0
  45. package/output/openapi/components/InlineListbox.d.ts +18 -0
  46. package/output/preview.cjs +3 -3
  47. package/output/preview.js +3 -3
  48. package/output/{render-Di5B6Zc0.cjs → render-Dc9wxg_r.cjs} +2 -2
  49. package/output/{render-Di5B6Zc0.cjs.map → render-Dc9wxg_r.cjs.map} +1 -1
  50. package/output/{render-DKj24Jqw.js → render-aS-w4fK4.js} +2 -2
  51. package/output/{render-DKj24Jqw.js.map → render-aS-w4fK4.js.map} +1 -1
  52. package/output/renderer.css +766 -171
  53. package/output/server.cjs +2 -2
  54. package/output/server.js +2 -2
  55. package/package.json +1 -1
  56. package/output/ClarifyShell-1LuBliwt.js.map +0 -1
  57. package/output/ClarifyShell-C6li72Ce.cjs.map +0 -1
  58. package/output/OpenApiOperation-B52IWlKb.cjs.map +0 -1
  59. package/output/OpenApiOperation-DgrqzeiS.js.map +0 -1
  60. package/output/PageActions-BjB6PYmL.cjs.map +0 -1
  61. package/output/PageActions-D7K9LDGf.js.map +0 -1
  62. package/output/i18n-DnqZHFT7.js.map +0 -1
  63. package/output/i18n-b4iTLeia.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-DakpK96I.cjs");
2
- const require_i18n = require("./i18n-b4iTLeia.cjs");
3
- const require_PageActions = require("./PageActions-BjB6PYmL.cjs");
2
+ const require_i18n = require("./i18n-C-fReCj-.cjs");
3
+ const require_PageActions = require("./PageActions-Dg1l9KB1.cjs");
4
4
  const require_remark = require("./remark-DTLbG8PK.cjs");
5
5
  let clsx = require("clsx");
6
6
  clsx = require_rolldown_runtime.__toESM(clsx, 1);
@@ -18,6 +18,32 @@ rehype_raw = require_rolldown_runtime.__toESM(rehype_raw, 1);
18
18
  let github_slugger = require("github-slugger");
19
19
  let shiki = require("shiki");
20
20
  let _scalar_snippetz = require("@scalar/snippetz");
21
+ //#region source/components/AccordionGroup.tsx
22
+ function AccordionGroup(arg0) {
23
+ const { children, multiple = false, className, ...props } = arg0;
24
+ const childArray = react.Children.toArray(children);
25
+ const [openIndex, setOpenIndex] = (0, react.useState)(() => {
26
+ const defaultIndex = childArray.findIndex((child) => (0, react.isValidElement)(child) && child.props.defaultOpen);
27
+ return defaultIndex === -1 ? null : defaultIndex;
28
+ });
29
+ const items = childArray.map((child, index) => {
30
+ if (!(0, react.isValidElement)(child)) return child;
31
+ if (multiple) return child;
32
+ return (0, react.cloneElement)(child, {
33
+ open: openIndex === index,
34
+ onOpenChange: (open) => {
35
+ child.props.onOpenChange?.(open);
36
+ setOpenIndex(open ? index : null);
37
+ }
38
+ });
39
+ });
40
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
41
+ className: (0, clsx.default)("clarify-accordion-group my-6 divide-y divide-(--clarify-theme-tokens-colors-border) overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) [&_.clarify-collapse]:my-0 [&_.clarify-collapse]:rounded-none [&_.clarify-collapse]:border-0", className),
42
+ ...props,
43
+ children: items
44
+ });
45
+ }
46
+ //#endregion
21
47
  //#region source/components/LocalizedLink.tsx
22
48
  function useLocalizedHref(href) {
23
49
  return require_PageActions.localizeHref(href, require_i18n.useConfig(), require_i18n.useLocale());
@@ -37,15 +63,15 @@ function LocalizedLink(arg0) {
37
63
  //#endregion
38
64
  //#region source/components/Button.tsx
39
65
  var buttonVariantStyles = {
40
- primary: "rounded-full bg-(--clarify-theme-tokens-colors-foreground) px-3 py-1 text-(--clarify-theme-tokens-colors-background) hover:opacity-80 dark:bg-(--clarify-theme-tokens-colors-primary)/10 dark:text-(--clarify-theme-tokens-colors-primary) dark:ring-1 dark:ring-inset dark:ring-(--clarify-theme-tokens-colors-primary)/20 dark:hover:opacity-80",
41
- secondary: "rounded-full bg-(--clarify-theme-tokens-colors-code-background) px-3 py-1 text-(--clarify-ui-text-soft) ring-1 ring-inset ring-(--clarify-theme-tokens-colors-border) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)",
42
- filled: "rounded-full bg-(--clarify-theme-tokens-colors-foreground) px-3 py-1 text-(--clarify-theme-tokens-colors-background) hover:opacity-80 dark:bg-(--clarify-theme-tokens-colors-primary) dark:hover:opacity-80",
43
- outline: "rounded-full px-3 py-1 text-(--clarify-ui-text-soft) ring-1 ring-inset ring-(--clarify-theme-tokens-colors-border) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)",
66
+ primary: "bg-(--clarify-theme-tokens-colors-foreground) px-4 text-(--clarify-theme-tokens-colors-background) shadow-sm hover:-translate-y-px hover:shadow-md active:translate-y-0 active:shadow-sm dark:bg-(--clarify-theme-tokens-colors-primary) dark:text-zinc-950",
67
+ secondary: "bg-(--clarify-theme-tokens-colors-code-background) px-4 text-(--clarify-ui-text-soft) ring-1 ring-inset ring-(--clarify-theme-tokens-colors-border) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)",
68
+ filled: "bg-(--clarify-theme-tokens-colors-primary) px-4 text-white shadow-sm hover:-translate-y-px hover:shadow-md active:translate-y-0 dark:text-zinc-950",
69
+ outline: "px-4 text-(--clarify-ui-text-soft) ring-1 ring-inset ring-(--clarify-theme-tokens-colors-border) hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground)",
44
70
  text: "text-(--clarify-theme-tokens-colors-primary) hover:opacity-80 dark:text-(--clarify-theme-tokens-colors-primary) dark:hover:opacity-80"
45
71
  };
46
72
  function Button(arg0) {
47
73
  const { variant = "primary", className, children, arrow, ...props } = arg0;
48
- const classes = (0, clsx.default)("clarify-button not-prose inline-flex w-fit max-w-full items-center justify-center gap-1 overflow-hidden align-middle text-sm leading-6 font-medium whitespace-nowrap no-underline transition", buttonVariantStyles[variant], className);
74
+ const classes = (0, clsx.default)("clarify-button not-prose inline-flex w-fit max-w-full items-center justify-center gap-1.5 overflow-hidden align-middle text-sm font-semibold whitespace-nowrap no-underline transition duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) focus-visible:ring-offset-2 focus-visible:ring-offset-(--clarify-theme-tokens-colors-background)", variant === "text" ? "h-auto rounded-sm" : "h-9 rounded-(--clarify-theme-tokens-radius-lg)", buttonVariantStyles[variant], className);
49
75
  const arrowIcon = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ArrowRight, {
50
76
  "aria-hidden": "true",
51
77
  className: (0, clsx.default)("h-4 w-4 shrink-0", variant === "text" && "relative top-px", arrow === "left" && "-ml-0.5 rotate-180", arrow === "right" && "-mr-0.5")
@@ -73,37 +99,43 @@ function Button(arg0) {
73
99
  //#region source/components/Callout.tsx
74
100
  var calloutStyles = {
75
101
  info: {
76
- container: "border-sky-500/20 bg-sky-50/50 text-sky-950 dark:border-sky-400/30 dark:bg-sky-400/5 dark:text-sky-100",
102
+ container: "border-sky-500/20 bg-sky-50/30 dark:border-sky-400/20 dark:bg-sky-400/5",
103
+ iconContainer: "bg-sky-100 ring-sky-500/15 dark:bg-sky-400/10 dark:ring-sky-400/20",
77
104
  icon: "text-sky-600 dark:text-sky-400",
78
105
  title: "text-sky-900 dark:text-sky-100",
79
106
  Icon: lucide_react.Info
80
107
  },
81
108
  note: {
82
- container: "border-zinc-500/20 bg-zinc-50 text-zinc-900 dark:border-white/10 dark:bg-white/5 dark:text-zinc-200",
109
+ container: "border-zinc-500/20 bg-zinc-50/50 dark:border-white/10 dark:bg-white/5",
110
+ iconContainer: "bg-zinc-200/70 ring-zinc-500/15 dark:bg-white/10 dark:ring-white/10",
83
111
  icon: "text-zinc-500 dark:text-zinc-400",
84
112
  title: "text-zinc-900 dark:text-white",
85
113
  Icon: lucide_react.Info
86
114
  },
87
115
  tip: {
88
- container: "border-emerald-500/20 bg-emerald-50/50 text-emerald-950 dark:border-emerald-400/30 dark:bg-emerald-400/5 dark:text-emerald-100",
116
+ container: "border-emerald-500/20 bg-emerald-50/30 dark:border-emerald-400/20 dark:bg-emerald-400/5",
117
+ iconContainer: "bg-emerald-100 ring-emerald-500/15 dark:bg-emerald-400/10 dark:ring-emerald-400/20",
89
118
  icon: "text-emerald-600 dark:text-emerald-400",
90
119
  title: "text-emerald-900 dark:text-emerald-100",
91
120
  Icon: lucide_react.Lightbulb
92
121
  },
93
122
  warning: {
94
- container: "border-amber-500/20 bg-amber-50/70 text-amber-950 dark:border-amber-400/30 dark:bg-amber-400/5 dark:text-amber-100",
123
+ container: "border-amber-500/20 bg-amber-50/40 dark:border-amber-400/20 dark:bg-amber-400/5",
124
+ iconContainer: "bg-amber-100 ring-amber-500/15 dark:bg-amber-400/10 dark:ring-amber-400/20",
95
125
  icon: "text-amber-600 dark:text-amber-400",
96
126
  title: "text-amber-900 dark:text-amber-100",
97
127
  Icon: lucide_react.AlertTriangle
98
128
  },
99
129
  danger: {
100
- container: "border-rose-500/20 bg-rose-50/70 text-rose-950 dark:border-rose-400/30 dark:bg-rose-400/5 dark:text-rose-100",
130
+ container: "border-rose-500/20 bg-rose-50/40 dark:border-rose-400/20 dark:bg-rose-400/5",
131
+ iconContainer: "bg-rose-100 ring-rose-500/15 dark:bg-rose-400/10 dark:ring-rose-400/20",
101
132
  icon: "text-rose-600 dark:text-rose-400",
102
133
  title: "text-rose-900 dark:text-rose-100",
103
134
  Icon: lucide_react.XCircle
104
135
  },
105
136
  success: {
106
- container: "border-emerald-500/20 bg-emerald-50/50 text-emerald-950 dark:border-emerald-400/30 dark:bg-emerald-400/5 dark:text-emerald-100",
137
+ container: "border-emerald-500/20 bg-emerald-50/30 dark:border-emerald-400/20 dark:bg-emerald-400/5",
138
+ iconContainer: "bg-emerald-100 ring-emerald-500/15 dark:bg-emerald-400/10 dark:ring-emerald-400/20",
107
139
  icon: "text-emerald-600 dark:text-emerald-400",
108
140
  title: "text-emerald-900 dark:text-emerald-100",
109
141
  Icon: lucide_react.CheckCircle2
@@ -124,15 +156,18 @@ function Callout(arg0) {
124
156
  const Icon = style.Icon;
125
157
  const resolvedTitle = title === void 0 ? t(defaultTitleKeys[type]) : title;
126
158
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
127
- className: (0, clsx.default)("clarify-callout my-6 flex gap-3 rounded-(--clarify-theme-tokens-radius-xl) border p-4 text-sm/6", style.container, className),
159
+ className: (0, clsx.default)("clarify-callout my-6 flex gap-3.5 rounded-(--clarify-theme-tokens-radius-lg) border p-4 text-sm/6 text-(--clarify-ui-text-soft)", style.container, className),
128
160
  ...props,
129
- children: [icon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
130
- className: (0, clsx.default)("mt-1 size-4 flex-none", style.icon),
131
- "aria-hidden": "true"
161
+ children: [icon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
162
+ className: (0, clsx.default)("flex size-7 flex-none items-center justify-center rounded-(--clarify-theme-tokens-radius-md) ring-1 ring-inset", style.iconContainer),
163
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
164
+ className: (0, clsx.default)("size-4", style.icon),
165
+ "aria-hidden": "true"
166
+ })
132
167
  }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
133
168
  className: "min-w-0 flex-1 *:first:mt-0 *:last:mb-0",
134
169
  children: [resolvedTitle ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
135
- className: (0, clsx.default)("mb-1 font-semibold", style.title),
170
+ className: (0, clsx.default)("mb-1.5 font-semibold", style.title),
136
171
  children: resolvedTitle
137
172
  }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
138
173
  className: "*:first:mt-0 *:last:mb-0",
@@ -151,9 +186,9 @@ function CardIcon(arg0) {
151
186
  const Icon = require_PageActions.lucideIconRegistry[iconName];
152
187
  if (!Icon) return null;
153
188
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
154
- className: "flex size-9 flex-none items-center justify-center rounded-(--clarify-theme-tokens-radius-lg) bg-(--clarify-ui-accent-background) text-(--clarify-ui-accent-text) ring-1 ring-(--clarify-ui-accent-border)",
189
+ className: "flex size-8 flex-none items-center justify-center rounded-(--clarify-theme-tokens-radius-md) bg-(--clarify-ui-accent-background) text-(--clarify-ui-accent-text) ring-1 ring-inset ring-(--clarify-ui-accent-border) transition-colors group-hover:bg-(--clarify-theme-tokens-colors-primary) group-hover:text-white dark:group-hover:text-zinc-950",
155
190
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
156
- className: "size-5",
191
+ className: "size-4",
157
192
  "aria-hidden": "true"
158
193
  })
159
194
  });
@@ -167,7 +202,7 @@ var cardGroupColumnStyles = {
167
202
  function CardGroup(arg0) {
168
203
  const { children, cols = 2, className } = arg0;
169
204
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
170
- className: (0, clsx.default)("not-prose my-10 grid gap-4", cardGroupColumnStyles[cols], className),
205
+ className: (0, clsx.default)("not-prose my-8 grid gap-3", cardGroupColumnStyles[cols], className),
171
206
  children
172
207
  });
173
208
  }
@@ -177,11 +212,17 @@ function Card(arg0) {
177
212
  className: "flex items-start gap-4",
178
213
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CardIcon, { name: icon }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
179
214
  className: "min-w-0 flex-1",
180
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
181
- className: "m-0 text-base font-semibold text-(--clarify-theme-tokens-colors-foreground)",
182
- children: title
215
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
216
+ className: "flex items-start justify-between gap-3",
217
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
218
+ className: "m-0 text-sm/6 font-semibold text-(--clarify-theme-tokens-colors-foreground)",
219
+ children: title
220
+ }), href ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ArrowUpRight, {
221
+ className: "mt-1 size-3.5 shrink-0 text-(--clarify-ui-text-faint) transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5 group-hover:text-(--clarify-ui-accent-text)",
222
+ "aria-hidden": "true"
223
+ }) : null]
183
224
  }), children ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
184
- className: "mt-2 text-sm/6 text-(--clarify-ui-text-soft) *:m-0",
225
+ className: "mt-1.5 text-sm/6 text-(--clarify-ui-text-soft) *:m-0",
185
226
  children
186
227
  }) : null]
187
228
  })]
@@ -189,7 +230,7 @@ function Card(arg0) {
189
230
  className: "absolute inset-0 rounded-(--clarify-theme-tokens-radius-xl)",
190
231
  "aria-hidden": "true"
191
232
  }) : null] });
192
- const classes = (0, clsx.default)("group relative block rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-5 shadow-(--clarify-ui-accent-glow) transition hover:shadow-xs", className);
233
+ const classes = (0, clsx.default)("group relative block rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-4 transition duration-200", href && "hover:-translate-y-0.5 hover:border-(--clarify-ui-accent-border) hover:shadow-md hover:shadow-zinc-900/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) focus-visible:ring-offset-2 dark:hover:shadow-none", className);
193
234
  if (!href) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
194
235
  className: classes,
195
236
  children: content
@@ -203,7 +244,7 @@ function Card(arg0) {
203
244
  }
204
245
  //#endregion
205
246
  //#region source/components/Mermaid.tsx
206
- var MermaidViewer = (0, react.lazy)(() => Promise.resolve().then(() => require("./MermaidViewer-B6-BMCJG.cjs")));
247
+ var MermaidViewer = (0, react.lazy)(() => Promise.resolve().then(() => require("./MermaidViewer-Db7qsyVk.cjs")));
207
248
  var mermaidModulePromise;
208
249
  async function loadMermaid() {
209
250
  mermaidModulePromise = mermaidModulePromise ?? import("mermaid").then((module) => module.default);
@@ -329,6 +370,12 @@ function getNodeText(node) {
329
370
  if ((0, react.isValidElement)(node)) return getNodeText(node.props.children);
330
371
  return "";
331
372
  }
373
+ function getCodeTitle(node) {
374
+ if (!(0, react.isValidElement)(node)) return void 0;
375
+ const { title, children } = node.props;
376
+ if (title) return title;
377
+ return react.Children.toArray(children).map(getCodeTitle).find(Boolean);
378
+ }
332
379
  function getCodeLanguage(node) {
333
380
  if (!(0, react.isValidElement)(node)) return void 0;
334
381
  const { className, language, children } = node.props;
@@ -337,6 +384,13 @@ function getCodeLanguage(node) {
337
384
  if (languageClass) return languageClass.slice(9);
338
385
  return react.Children.toArray(children).map(getCodeLanguage).find(Boolean);
339
386
  }
387
+ function getCodePanelTitle(node, fallbackTitle) {
388
+ return getPanelTitle({
389
+ title: getCodeTitle(node),
390
+ language: getCodeLanguage(node),
391
+ fallbackTitle
392
+ });
393
+ }
340
394
  function CopyButton(arg0) {
341
395
  const { code } = arg0;
342
396
  const t = require_i18n.useBuiltInText();
@@ -417,10 +471,7 @@ function CodeGroupHeader(arg0) {
417
471
  className: "clarify-code-tabs -mr-2 -mb-px flex gap-0 text-xs font-medium",
418
472
  children: react.Children.map(children, (child, childIndex) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.Tab, {
419
473
  className: (0, clsx.default)("clarify-code-tab relative border-b border-transparent px-2 py-3 transition-colors hover:bg-(--clarify-code-control-background-hover) data-selected:not-data-focus:outline-hidden", childIndex === selectedIndex ? "text-(--clarify-code-accent-text)" : "text-(--clarify-code-control-text) hover:text-(--clarify-code-text)"),
420
- children: [getPanelTitle({
421
- ...(0, react.isValidElement)(child) ? child.props : {},
422
- fallbackTitle: t("actions.code")
423
- }), childIndex === selectedIndex ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.span, {
474
+ children: [getCodePanelTitle(child, t("actions.code")), childIndex === selectedIndex ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.span, {
424
475
  layoutId: indicatorLayoutId,
425
476
  className: "absolute inset-x-2 bottom-0 h-0.5 rounded-full bg-(--clarify-code-accent-text)",
426
477
  transition: {
@@ -494,10 +545,7 @@ var CodeGroupContext = (0, react.createContext)(false);
494
545
  function CodeGroup(arg0) {
495
546
  const { children, title, ...props } = arg0;
496
547
  const t = require_i18n.useBuiltInText();
497
- const tabGroupProps = useTabGroupProps(react.Children.map(children, (child) => getPanelTitle({
498
- ...(0, react.isValidElement)(child) ? child.props : {},
499
- fallbackTitle: t("actions.code")
500
- })) ?? []);
548
+ const tabGroupProps = useTabGroupProps(react.Children.map(children, (child) => getCodePanelTitle(child, t("actions.code"))) ?? []);
501
549
  const hasTabs = react.Children.count(children) > 1;
502
550
  const containerClassName = "clarify-code-group my-6 overflow-hidden rounded-2xl bg-(--clarify-code-background) shadow-md ring-1 ring-(--clarify-code-border)";
503
551
  const header = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CodeGroupHeader, {
@@ -553,8 +601,9 @@ function Pre(arg0) {
553
601
  //#endregion
554
602
  //#region source/components/Collapse.tsx
555
603
  function Collapse(arg0) {
556
- const { children, title, summary, defaultOpen = false, className, ...props } = arg0;
557
- const [open, setOpen] = (0, react.useState)(defaultOpen);
604
+ const { children, title, summary, defaultOpen = false, open: controlledOpen, onOpenChange, className, ...props } = arg0;
605
+ const [uncontrolledOpen, setUncontrolledOpen] = (0, react.useState)(defaultOpen);
606
+ const open = controlledOpen ?? uncontrolledOpen;
558
607
  const contentRef = (0, react.useRef)(null);
559
608
  const [maxHeight, setMaxHeight] = (0, react.useState)("0px");
560
609
  const summaryLabel = title ?? summary ?? "Details";
@@ -564,16 +613,20 @@ function Collapse(arg0) {
564
613
  setMaxHeight(open ? `${contentRef.current.scrollHeight}px` : "0px");
565
614
  }, [open, children]);
566
615
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
567
- className: (0, clsx.default)("clarify-collapse my-6 overflow-hidden rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface)", className),
616
+ className: (0, clsx.default)("clarify-collapse my-6 overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) transition-colors", open && "border-(--clarify-ui-accent-border)", className),
568
617
  ...props,
569
618
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
570
619
  type: "button",
571
- className: "flex w-full cursor-pointer items-center justify-between gap-3 px-4 py-3 text-left text-sm font-semibold text-(--clarify-theme-tokens-colors-foreground) transition hover:bg-(--clarify-ui-hover-background) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) focus-visible:ring-offset-2 focus-visible:ring-offset-(--clarify-theme-tokens-colors-background)",
620
+ className: "flex min-h-11 w-full cursor-pointer items-center justify-between gap-3 px-4 py-2.5 text-left text-sm font-semibold text-(--clarify-theme-tokens-colors-foreground) transition hover:bg-(--clarify-ui-hover-background) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary)",
572
621
  "aria-expanded": open,
573
622
  "aria-controls": contentId,
574
- onClick: () => setOpen((value) => !value),
623
+ onClick: () => {
624
+ const nextOpen = !open;
625
+ if (controlledOpen === void 0) setUncontrolledOpen(nextOpen);
626
+ onOpenChange?.(nextOpen);
627
+ },
575
628
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: summaryLabel }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, {
576
- className: (0, clsx.default)("h-4 w-4 text-(--clarify-theme-tokens-colors-muted) transition-transform duration-200", open && "rotate-180"),
629
+ className: (0, clsx.default)("size-4 rounded-full text-(--clarify-ui-text-faint) transition duration-200", open && "rotate-180"),
577
630
  "aria-hidden": "true"
578
631
  })]
579
632
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -585,7 +638,7 @@ function Collapse(arg0) {
585
638
  },
586
639
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
587
640
  ref: contentRef,
588
- className: (0, clsx.default)("px-4 py-4 text-sm/6 text-(--clarify-theme-tokens-colors-foreground) transition-opacity duration-200 ease-out", open ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-1"),
641
+ className: (0, clsx.default)("px-4 py-4 text-sm/6 text-(--clarify-ui-text-soft) transition-opacity duration-200 ease-out *:first:mt-0 *:last:mb-0", open ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-1"),
589
642
  children
590
643
  })
591
644
  })]
@@ -661,6 +714,55 @@ function Feedback() {
661
714
  });
662
715
  }
663
716
  //#endregion
717
+ //#region source/components/FileTree.tsx
718
+ function FileTree(arg0) {
719
+ const { children, className, ...props } = arg0;
720
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
721
+ className: (0, clsx.default)("clarify-file-tree not-prose my-6 overflow-x-auto rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) px-4 py-3 font-mono text-[13px]/6 text-(--clarify-ui-text-soft)", className),
722
+ ...props,
723
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
724
+ role: "tree",
725
+ className: "m-0 min-w-max list-none p-0",
726
+ children
727
+ })
728
+ });
729
+ }
730
+ function FileTreeItem(arg0) {
731
+ const { name, description, type, children, className, ...props } = arg0;
732
+ const isFolder = type === "folder" || children != null;
733
+ const FolderIcon = children ? lucide_react.FolderOpen : lucide_react.Folder;
734
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
735
+ role: "treeitem",
736
+ "aria-expanded": isFolder ? children != null : void 0,
737
+ className: (0, clsx.default)("clarify-file-tree-item m-0 p-0", className),
738
+ ...props,
739
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
740
+ className: "flex min-h-6 items-center gap-2 whitespace-nowrap",
741
+ children: [
742
+ isFolder ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FolderIcon, {
743
+ className: "size-4 flex-none text-(--clarify-ui-accent-text)",
744
+ "aria-hidden": "true"
745
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.File, {
746
+ className: "size-4 flex-none text-(--clarify-ui-text-faint)",
747
+ "aria-hidden": "true"
748
+ }),
749
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
750
+ className: "font-medium text-(--clarify-theme-tokens-colors-foreground)",
751
+ children: name
752
+ }),
753
+ description ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
754
+ className: "font-sans text-xs text-(--clarify-ui-text-faint)",
755
+ children: description
756
+ }) : null
757
+ ]
758
+ }), children ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
759
+ role: "group",
760
+ className: "m-0 ml-2.5 list-none border-l border-(--clarify-theme-tokens-colors-border) pl-4",
761
+ children
762
+ }) : null]
763
+ });
764
+ }
765
+ //#endregion
664
766
  //#region source/components/Tag.tsx
665
767
  var tagVariantStyles = {
666
768
  small: "",
@@ -867,10 +969,50 @@ function Prose(arg0) {
867
969
  });
868
970
  }
869
971
  //#endregion
972
+ //#region source/components/Steps.tsx
973
+ function Steps(arg0) {
974
+ const { children, className, ...props } = arg0;
975
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ol", {
976
+ className: (0, clsx.default)("clarify-steps my-8 ml-3 list-none border-l-2 border-(--clarify-theme-tokens-colors-border) p-0", className),
977
+ ...props,
978
+ children
979
+ });
980
+ }
981
+ function Step(arg0) {
982
+ const { children, title, className, ...props } = arg0;
983
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
984
+ className: (0, clsx.default)("clarify-step relative m-0 pb-10 pl-9 last:pb-0", className),
985
+ ...props,
986
+ children: [
987
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
988
+ className: "absolute top-0 -left-3.5 flex size-7 items-center justify-center rounded-full bg-(--clarify-theme-tokens-colors-primary) text-xs font-semibold text-white shadow-[0_0_0_4px_var(--clarify-theme-tokens-colors-background)] before:content-[counter(list-item)] dark:text-zinc-950",
989
+ "aria-hidden": "true"
990
+ }),
991
+ title ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
992
+ className: "m-0 pt-0.5 text-base font-semibold text-(--clarify-theme-tokens-colors-foreground)",
993
+ children: title
994
+ }) : null,
995
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
996
+ className: (0, clsx.default)("text-sm/6 text-(--clarify-ui-text-soft) *:last:mb-0", title && "mt-2.5", !title && "*:first:mt-0"),
997
+ children
998
+ })
999
+ ]
1000
+ });
1001
+ }
1002
+ //#endregion
870
1003
  //#region source/components/Tabs.tsx
1004
+ function TabItem(_props) {
1005
+ return null;
1006
+ }
871
1007
  function Tabs(arg0) {
872
- const { items, selectedIndex, onChange, className, listClassName, panelsClassName } = arg0;
873
- const [internalIndex, setInternalIndex] = (0, react.useState)(0);
1008
+ const { items, children, defaultValue, selectedIndex, onChange, className, listClassName, panelsClassName } = arg0;
1009
+ const childItems = react.Children.toArray(children).filter((child) => (0, react.isValidElement)(child) && child.type === TabItem).map((child, index) => ({
1010
+ id: child.props.value ?? `tab-${index}`,
1011
+ label: child.props.title,
1012
+ panel: child.props.children
1013
+ }));
1014
+ const resolvedItems = items ?? childItems;
1015
+ const [internalIndex, setInternalIndex] = (0, react.useState)(defaultValue ? Math.max(0, resolvedItems.findIndex((item) => item.id === defaultValue)) : 0);
874
1016
  const resolvedIndex = typeof selectedIndex === "number" ? selectedIndex : internalIndex;
875
1017
  const indicatorLayoutId = (0, react.useId)();
876
1018
  const handleChange = (index) => {
@@ -880,32 +1022,60 @@ function Tabs(arg0) {
880
1022
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.TabGroup, {
881
1023
  selectedIndex: resolvedIndex,
882
1024
  onChange: handleChange,
883
- className,
1025
+ className: (0, clsx.default)("clarify-tabs my-6", className),
884
1026
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.TabList, {
885
- className: (0, clsx.default)("-mx-2 flex flex-wrap items-center gap-2 border-b border-(--clarify-theme-tokens-colors-border) px-2 pb-0", listClassName),
886
- children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.Tab, {
887
- className: ({ selected }) => (0, clsx.default)("clarify-content-tab clarify-ui-tab relative inline-flex h-10 shrink-0 items-center rounded-t-md px-2 py-0 text-sm font-medium transition-colors focus:outline-none", selected && "clarify-ui-tab-active"),
1027
+ className: (0, clsx.default)("flex max-w-full items-stretch gap-1 overflow-x-auto border-b border-(--clarify-theme-tokens-colors-border)", listClassName),
1028
+ children: resolvedItems.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.Tab, {
1029
+ className: ({ selected }) => (0, clsx.default)("clarify-content-tab clarify-ui-tab relative my-1 inline-flex h-9 shrink-0 items-center rounded-(--clarify-theme-tokens-radius-md) px-2.5 transition focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary)", selected && "clarify-ui-tab-active"),
888
1030
  children: ({ selected }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: item.label }), selected ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.span, {
889
1031
  layoutId: indicatorLayoutId,
890
- className: "absolute inset-x-2 bottom-0 h-0.5 rounded-full bg-(--clarify-ui-tab-indicator) shadow-[0_0_0.5rem_var(--clarify-ui-accent-glow)]",
1032
+ className: "absolute inset-x-2.5 -bottom-1 h-0.5 rounded-full bg-(--clarify-ui-tab-indicator)",
891
1033
  transition: {
892
- type: "spring",
893
- stiffness: 460,
894
- damping: 34,
895
- mass: .7
1034
+ type: "tween",
1035
+ duration: .16,
1036
+ ease: "easeOut"
896
1037
  }
897
1038
  }) : null] })
898
1039
  }, item.id))
899
1040
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.TabPanels, {
900
- className: (0, clsx.default)("mt-4", panelsClassName),
901
- children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.TabPanel, {
902
- className: "focus:outline-none",
1041
+ className: (0, clsx.default)("mt-5", panelsClassName),
1042
+ children: resolvedItems.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.TabPanel, {
1043
+ className: "focus:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)",
903
1044
  children: item.panel
904
1045
  }, item.id))
905
1046
  })]
906
1047
  });
907
1048
  }
908
1049
  //#endregion
1050
+ //#region source/components/Tooltip.tsx
1051
+ function Tooltip(arg0) {
1052
+ const { content, children, side = "top", className, ...props } = arg0;
1053
+ const contentId = (0, react.useId)();
1054
+ const [open, setOpen] = (0, react.useState)(false);
1055
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1056
+ className: (0, clsx.default)("clarify-tooltip group relative inline-flex align-baseline", className),
1057
+ onMouseEnter: () => setOpen(true),
1058
+ onMouseLeave: () => setOpen(false),
1059
+ ...props,
1060
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1061
+ tabIndex: 0,
1062
+ "aria-describedby": contentId,
1063
+ className: "cursor-help rounded-sm border-b border-dotted border-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary)",
1064
+ onFocus: () => setOpen(true),
1065
+ onBlur: () => setOpen(false),
1066
+ onKeyDown: (event) => {
1067
+ if (event.key === "Escape") setOpen(false);
1068
+ },
1069
+ children
1070
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1071
+ id: contentId,
1072
+ role: "tooltip",
1073
+ className: (0, clsx.default)("pointer-events-none absolute left-1/2 z-30 w-max max-w-64 -translate-x-1/2 rounded-md bg-(--clarify-theme-tokens-colors-foreground) px-2.5 py-1.5 text-center text-xs/5 font-normal text-(--clarify-theme-tokens-colors-background) shadow-lg transition duration-150", open ? "opacity-100" : "opacity-0", side === "top" ? "bottom-[calc(100%+0.5rem)]" : "top-[calc(100%+0.5rem)]"),
1074
+ children: content
1075
+ })]
1076
+ });
1077
+ }
1078
+ //#endregion
909
1079
  //#region source/components/WebFrame.tsx
910
1080
  function WebFrame(arg0) {
911
1081
  const { src, title = "Embedded content", children, showWindow = true, className, iframeClassName, height = 420, style, ...props } = arg0;
@@ -928,53 +1098,122 @@ function WebFrame(arg0) {
928
1098
  children
929
1099
  });
930
1100
  if (!showWindow) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
931
- className: (0, clsx.default)("clarify-web-frame not-prose my-10 overflow-hidden rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-(--clarify-ui-accent-glow)", className),
1101
+ className: (0, clsx.default)("clarify-web-frame not-prose my-10 overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-lg shadow-zinc-900/5 dark:shadow-none", className),
932
1102
  children: frame
933
1103
  });
934
1104
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
935
- className: (0, clsx.default)("clarify-web-frame not-prose my-10 overflow-hidden rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-(--clarify-ui-accent-glow)", className),
1105
+ className: (0, clsx.default)("clarify-web-frame not-prose my-10 overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-lg shadow-zinc-900/5 dark:shadow-none", className),
936
1106
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
937
- className: "flex h-10 items-center gap-2 border-b border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-code-background) px-4",
1107
+ className: "grid h-10 grid-cols-[1fr_minmax(0,2fr)_1fr] items-center gap-3 border-b border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-code-background) px-3",
938
1108
  children: [
939
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
940
- className: "size-3 rounded-full bg-red-400",
941
- "aria-hidden": "true"
942
- }),
943
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
944
- className: "size-3 rounded-full bg-yellow-400",
945
- "aria-hidden": "true"
946
- }),
947
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
948
- className: "size-3 rounded-full bg-green-400",
949
- "aria-hidden": "true"
1109
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1110
+ className: "flex items-center gap-1.5",
1111
+ "aria-hidden": "true",
1112
+ children: [
1113
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "size-2.5 rounded-full bg-red-400/80" }),
1114
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "size-2.5 rounded-full bg-amber-400/80" }),
1115
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "size-2.5 rounded-full bg-emerald-400/80" })
1116
+ ]
950
1117
  }),
951
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
952
- className: "sr-only",
1118
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1119
+ className: "truncate rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) px-3 py-1 text-center text-xs text-(--clarify-ui-text-faint)",
953
1120
  children: title
954
- })
1121
+ }),
1122
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { "aria-hidden": "true" })
955
1123
  ]
956
1124
  }), frame]
957
1125
  });
958
1126
  }
959
1127
  //#endregion
1128
+ //#region source/components/Image.tsx
1129
+ function Image(arg0) {
1130
+ const { src, alt = "", caption, zoom = false, className, ...props } = arg0;
1131
+ const [open, setOpen] = (0, react.useState)(false);
1132
+ const image = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
1133
+ ...props,
1134
+ src,
1135
+ alt,
1136
+ className: (0, clsx.default)("block h-auto max-w-full object-contain", className)
1137
+ });
1138
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("figure", {
1139
+ className: "clarify-figure not-prose mx-auto my-8 w-fit max-w-full",
1140
+ children: [
1141
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1142
+ className: "group relative w-fit max-w-full overflow-hidden rounded-(--clarify-theme-tokens-radius-lg) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-ui-subtle-background)",
1143
+ children: zoom ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
1144
+ type: "button",
1145
+ className: "block max-w-full cursor-zoom-in focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-(--clarify-theme-tokens-colors-primary)",
1146
+ "aria-label": `Enlarge image: ${alt}`,
1147
+ onClick: () => setOpen(true),
1148
+ children: [image, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1149
+ className: "absolute right-3 bottom-3 grid size-8 place-items-center rounded-md border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background)/90 text-(--clarify-ui-text-soft) opacity-0 shadow-sm transition group-hover:opacity-100 group-focus-within:opacity-100",
1150
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Maximize2, {
1151
+ className: "size-4",
1152
+ "aria-hidden": "true"
1153
+ })
1154
+ })]
1155
+ }) : image
1156
+ }),
1157
+ caption ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("figcaption", {
1158
+ className: "mt-2 text-center text-xs/5 text-(--clarify-ui-text-faint)",
1159
+ children: caption
1160
+ }) : null,
1161
+ zoom ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.Dialog, {
1162
+ open,
1163
+ onClose: setOpen,
1164
+ className: "relative z-50",
1165
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.DialogBackdrop, { className: "fixed inset-0 bg-black/75 backdrop-blur-sm" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1166
+ className: "fixed inset-0 flex items-center justify-center p-4 sm:p-8",
1167
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.DialogPanel, {
1168
+ className: "relative max-h-full max-w-full overflow-auto rounded-(--clarify-theme-tokens-radius-lg) bg-(--clarify-theme-tokens-colors-background) p-2 shadow-2xl",
1169
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
1170
+ src,
1171
+ alt,
1172
+ className: "max-h-[calc(100dvh-5rem)] max-w-[calc(100vw-5rem)] object-contain"
1173
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1174
+ type: "button",
1175
+ className: "absolute top-4 right-4 grid size-9 place-items-center rounded-md border border-white/20 bg-black/65 text-white transition hover:bg-black/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white",
1176
+ "aria-label": "Close image preview",
1177
+ onClick: () => setOpen(false),
1178
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.X, {
1179
+ className: "size-4",
1180
+ "aria-hidden": "true"
1181
+ })
1182
+ })]
1183
+ })
1184
+ })]
1185
+ }) : null
1186
+ ]
1187
+ });
1188
+ }
1189
+ //#endregion
960
1190
  //#region source/mdx/primitives.tsx
961
1191
  var primitives_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
1192
+ AccordionGroup: () => AccordionGroup,
962
1193
  Button: () => Button,
963
1194
  Callout: () => Callout,
964
1195
  Card: () => Card,
965
1196
  CardGroup: () => CardGroup,
966
1197
  CodeGroup: () => CodeGroup,
967
1198
  Col: () => Col,
1199
+ FileTree: () => FileTree,
1200
+ FileTreeItem: () => FileTreeItem,
968
1201
  Note: () => Note,
969
1202
  Properties: () => Properties,
970
1203
  Property: () => Property,
971
1204
  Row: () => Row,
1205
+ Step: () => Step,
1206
+ Steps: () => Steps,
1207
+ Tab: () => TabItem,
1208
+ Tabs: () => Tabs,
1209
+ Tooltip: () => Tooltip,
972
1210
  WebFrame: () => WebFrame,
973
1211
  a: () => a,
974
1212
  code: () => code,
975
1213
  h1: () => h1,
976
1214
  h2: () => h2,
977
1215
  h3: () => h3,
1216
+ img: () => img,
978
1217
  pre: () => pre,
979
1218
  table: () => table,
980
1219
  wrapper: () => wrapper
@@ -1019,6 +1258,7 @@ function h1(arg0) {
1019
1258
  }
1020
1259
  var code = Code;
1021
1260
  var pre = Pre;
1261
+ var img = Image;
1022
1262
  function h2(props) {
1023
1263
  return (0, react.createElement)(Heading, {
1024
1264
  level: 2,
@@ -1034,8 +1274,8 @@ function h3(props) {
1034
1274
  function Note(arg0) {
1035
1275
  const { children } = arg0;
1036
1276
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1037
- className: "clarify-note my-6 flex gap-2.5 rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-ui-accent-border) bg-(--clarify-ui-accent-background) p-4 text-sm/6 text-(--clarify-theme-tokens-colors-foreground) [--tw-prose-links-hover:var(--clarify-ui-accent-text)] [--tw-prose-links:var(--clarify-theme-tokens-colors-foreground)]",
1038
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Info, { className: "mt-1 h-4 w-4 flex-none stroke-(--clarify-ui-accent-text)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1277
+ className: "clarify-note my-6 flex gap-3 rounded-r-(--clarify-theme-tokens-radius-lg) border-l-2 border-(--clarify-theme-tokens-colors-primary) bg-(--clarify-ui-subtle-background) px-4 py-3 text-sm/6 text-(--clarify-ui-text-soft) [--tw-prose-links-hover:var(--clarify-ui-accent-text)] [--tw-prose-links:var(--clarify-theme-tokens-colors-foreground)]",
1278
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Info, { className: "mt-1 size-4 flex-none stroke-(--clarify-ui-accent-text)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1039
1279
  className: "*:first:mt-0 *:last:mb-0",
1040
1280
  children
1041
1281
  })]
@@ -1894,7 +2134,7 @@ function SelectControl(arg0) {
1894
2134
  label: option
1895
2135
  } : option);
1896
2136
  const selectedOption = normalizedOptions.find((option) => option.value === value) ?? normalizedOptions[0];
1897
- const wrapperClassName = compact ? "clarify-api-select relative min-w-0 text-xs" : "clarify-api-select relative shrink-0 text-xs";
2137
+ const wrapperClassName = compact ? "clarify-openai-select relative min-w-0 text-xs" : "clarify-openai-select relative shrink-0 text-xs";
1898
2138
  const buttonSizeClassName = compact ? "w-full min-w-0 max-w-32" : "min-w-28 max-w-48";
1899
2139
  if (normalizedOptions.length <= 1) return null;
1900
2140
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.Listbox, {
@@ -1904,7 +2144,7 @@ function SelectControl(arg0) {
1904
2144
  className: wrapperClassName,
1905
2145
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.ListboxButton, {
1906
2146
  "aria-label": label,
1907
- className: `clarify-api-select-button flex min-h-8 ${buttonSizeClassName} items-center justify-between gap-2 rounded-lg border border-(--clarify-code-border) bg-(--clarify-code-control-background) px-2.5 py-1 text-xs font-medium whitespace-nowrap text-(--clarify-code-text) outline-hidden transition hover:border-white/20 hover:bg-(--clarify-code-control-background-hover) focus:ring-2 focus:ring-(--clarify-ui-accent-border) data-open:border-white/20 data-open:bg-(--clarify-code-control-background-active) data-open:ring-2 data-open:ring-(--clarify-ui-accent-border)`,
2147
+ className: `clarify-openai-select-button flex min-h-8 ${buttonSizeClassName} items-center justify-between gap-2 rounded-lg border border-(--clarify-code-border) bg-(--clarify-code-control-background) px-2.5 py-1 text-xs font-medium whitespace-nowrap text-(--clarify-code-text) outline-hidden transition hover:border-white/20 hover:bg-(--clarify-code-control-background-hover) focus:ring-2 focus:ring-(--clarify-ui-accent-border) data-open:border-white/20 data-open:bg-(--clarify-code-control-background-active) data-open:ring-2 data-open:ring-(--clarify-ui-accent-border)`,
1908
2148
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1909
2149
  className: "flex min-w-0 items-center gap-1.5 overflow-hidden",
1910
2150
  children: [icon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -1920,10 +2160,10 @@ function SelectControl(arg0) {
1920
2160
  })]
1921
2161
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.ListboxOptions, {
1922
2162
  anchor: "bottom end",
1923
- className: "clarify-api-select-options z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-(--clarify-popover-max-width) overflow-auto rounded-xl bg-(--clarify-code-surface) p-1 text-xs shadow-lg shadow-black/20 ring-1 ring-(--clarify-code-border) [--anchor-gap:--spacing(1)] focus:outline-none",
2163
+ className: "clarify-openai-select-options z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-(--clarify-popover-max-width) overflow-auto rounded-xl bg-(--clarify-code-surface) p-1 text-xs shadow-lg shadow-black/20 ring-1 ring-(--clarify-code-border) [--anchor-gap:--spacing(1)] focus:outline-none",
1924
2164
  children: normalizedOptions.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.ListboxOption, {
1925
2165
  value: option.value,
1926
- className: "clarify-api-select-option group flex min-h-9 cursor-default items-center justify-between gap-3 rounded-lg px-2.5 py-2 text-xs whitespace-nowrap text-(--clarify-code-control-text) select-none data-focus:bg-(--clarify-code-control-background-hover) data-focus:text-(--clarify-code-text) data-selected:bg-(--clarify-code-accent-background) data-selected:text-(--clarify-code-accent-text)",
2166
+ className: "clarify-openai-select-option group flex min-h-9 cursor-default items-center justify-between gap-3 rounded-lg px-2.5 py-2 text-xs whitespace-nowrap text-(--clarify-code-control-text) select-none data-focus:bg-(--clarify-code-control-background-hover) data-focus:text-(--clarify-code-text) data-selected:bg-(--clarify-code-accent-background) data-selected:text-(--clarify-code-accent-text)",
1927
2167
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: option.label }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CheckIcon, {
1928
2168
  className: "h-3.5 w-3.5 shrink-0 opacity-0 group-data-selected:opacity-100",
1929
2169
  "aria-hidden": "true"
@@ -1972,31 +2212,36 @@ function ExampleMetaValue(arg0) {
1972
2212
  });
1973
2213
  }
1974
2214
  function CodeToolbar(arg0) {
1975
- const { code, languageOptions, selectedLanguageKey, onSelectLanguage, clientOptions, selectedClientKey, onSelectClient } = arg0;
2215
+ const { code, leadingControls, languageOptions, selectedLanguageKey, onSelectLanguage, clientOptions, selectedClientKey, onSelectClient } = arg0;
1976
2216
  const t = require_i18n.useBuiltInText();
2217
+ const inlineControls = Boolean(leadingControls);
1977
2218
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1978
- className: "clarify-api-code-toolbar flex items-center gap-2 px-4 pt-3",
2219
+ className: `clarify-openai-code-toolbar flex items-center gap-2 px-4 pt-3${inlineControls ? " clarify-openai-code-toolbar-inline" : ""}`,
1979
2220
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1980
- className: "clarify-api-code-toolbar-controls flex min-w-0 flex-1 flex-wrap items-center gap-2",
1981
- children: [languageOptions && languageOptions.length > 1 && selectedLanguageKey && onSelectLanguage ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectControl, {
1982
- label: t("openapi.language"),
1983
- value: selectedLanguageKey,
1984
- options: languageOptions,
1985
- onChange: onSelectLanguage,
1986
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CodeIcon, {
1987
- className: "h-3.5 w-3.5",
1988
- "aria-hidden": "true"
1989
- })
1990
- }) : null, clientOptions && clientOptions.length > 1 && selectedClientKey && onSelectClient ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectControl, {
1991
- label: t("openapi.client"),
1992
- value: selectedClientKey,
1993
- options: clientOptions,
1994
- onChange: onSelectClient,
1995
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.PackageIcon, {
1996
- className: "h-3.5 w-3.5",
1997
- "aria-hidden": "true"
1998
- })
1999
- }) : null]
2221
+ className: `clarify-openai-code-toolbar-controls flex min-w-0 flex-1 items-center gap-2${inlineControls ? " flex-nowrap overflow-x-auto" : " flex-wrap"}`,
2222
+ children: [
2223
+ leadingControls,
2224
+ languageOptions && languageOptions.length > 1 && selectedLanguageKey && onSelectLanguage ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectControl, {
2225
+ label: t("openapi.language"),
2226
+ value: selectedLanguageKey,
2227
+ options: languageOptions,
2228
+ onChange: onSelectLanguage,
2229
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CodeIcon, {
2230
+ className: "h-3.5 w-3.5",
2231
+ "aria-hidden": "true"
2232
+ })
2233
+ }) : null,
2234
+ clientOptions && clientOptions.length > 1 && selectedClientKey && onSelectClient ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectControl, {
2235
+ label: t("openapi.client"),
2236
+ value: selectedClientKey,
2237
+ options: clientOptions,
2238
+ onChange: onSelectClient,
2239
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.PackageIcon, {
2240
+ className: "h-3.5 w-3.5",
2241
+ "aria-hidden": "true"
2242
+ })
2243
+ }) : null
2244
+ ]
2000
2245
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CopyCodeButton, { code })]
2001
2246
  });
2002
2247
  }
@@ -2068,21 +2313,38 @@ function getClientOptions(codeOptions, languageKey) {
2068
2313
  //#endregion
2069
2314
  //#region source/openapi/components/ExamplePanels.tsx
2070
2315
  function ApiExampleCodeGroup(arg0) {
2071
- const { title, tag, tagOptions, onSelectTag, label, labelOptions, onSelectLabel, comfortableMeta = false, code, language, mediaTypes, selectedMediaType, onSelectMediaType, examples, selectedExampleKey, onSelectExample, languageOptions, selectedLanguageKey, onSelectLanguage, clientOptions, selectedClientKey, onSelectClient } = arg0;
2316
+ const { title, tag, tagOptions, onSelectTag, label, labelOptions, onSelectLabel, comfortableMeta = false, metaInToolbar = false, code, language, mediaTypes, selectedMediaType, onSelectMediaType, examples, selectedExampleKey, onSelectExample, languageOptions, selectedLanguageKey, onSelectLanguage, clientOptions, selectedClientKey, onSelectClient } = arg0;
2072
2317
  const t = require_i18n.useBuiltInText();
2073
2318
  const metaClassName = comfortableMeta ? "flex min-h-11 min-w-0 items-center gap-2 border-y border-(--clarify-code-border) border-t-transparent bg-(--clarify-code-background) px-4 py-2" : "flex h-9 min-w-0 items-center gap-2 border-y border-(--clarify-code-border) border-t-transparent bg-(--clarify-code-background) px-4";
2319
+ const meta = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
2320
+ tag ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExampleMetaValue, {
2321
+ label: t("openapi.status"),
2322
+ value: tag,
2323
+ options: tagOptions,
2324
+ onChange: onSelectTag,
2325
+ className: "clarify-openai-example-status font-semibold text-emerald-400"
2326
+ }) : null,
2327
+ tag && label ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "h-0.5 w-0.5 shrink-0 rounded-full bg-(--clarify-code-faint)" }) : null,
2328
+ label ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExampleMetaValue, {
2329
+ label: t("openapi.mediaType"),
2330
+ value: label,
2331
+ options: labelOptions,
2332
+ onChange: onSelectLabel,
2333
+ className: "min-w-0 truncate text-xs text-(--clarify-code-muted)"
2334
+ }) : null
2335
+ ] });
2074
2336
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2075
- className: "clarify-api-example my-6 overflow-hidden rounded-2xl bg-(--clarify-code-background) shadow-md ring-1 ring-(--clarify-code-border)",
2337
+ className: "clarify-openai-example my-6 overflow-hidden rounded-2xl bg-(--clarify-code-background) shadow-md ring-1 ring-(--clarify-code-border)",
2076
2338
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2077
2339
  className: "not-prose",
2078
2340
  children: [
2079
2341
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2080
- className: "clarify-api-example-header flex min-h-(--clarify-code-header-min-height) items-center gap-3 border-b border-(--clarify-code-border) bg-(--clarify-code-header-background) px-4 py-2",
2342
+ className: "clarify-openai-example-header flex min-h-(--clarify-code-header-min-height) items-center gap-3 border-b border-(--clarify-code-border) bg-(--clarify-code-header-background) px-4 py-2",
2081
2343
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
2082
2344
  className: "mr-auto min-w-16 truncate py-1 text-xs font-semibold text-(--clarify-code-text)",
2083
2345
  children: title
2084
2346
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2085
- className: "clarify-api-example-header-controls ml-auto flex min-w-0 items-center gap-2 whitespace-nowrap",
2347
+ className: "clarify-openai-example-header-controls ml-auto flex min-w-0 items-center gap-2 whitespace-nowrap",
2086
2348
  children: [mediaTypes && mediaTypes.length > 1 && selectedMediaType && onSelectMediaType ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectControl, {
2087
2349
  label: t("openapi.mediaType"),
2088
2350
  value: selectedMediaType,
@@ -2101,30 +2363,15 @@ function ApiExampleCodeGroup(arg0) {
2101
2363
  }) : null]
2102
2364
  })]
2103
2365
  }),
2104
- tag || label ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2366
+ (tag || label) && !metaInToolbar ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2105
2367
  className: metaClassName,
2106
- children: [
2107
- tag ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExampleMetaValue, {
2108
- label: t("openapi.status"),
2109
- value: tag,
2110
- options: tagOptions,
2111
- onChange: onSelectTag,
2112
- className: "clarify-api-example-status font-semibold text-emerald-400"
2113
- }) : null,
2114
- tag && label ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "h-0.5 w-0.5 shrink-0 rounded-full bg-(--clarify-code-faint)" }) : null,
2115
- label ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExampleMetaValue, {
2116
- label: t("openapi.mediaType"),
2117
- value: label,
2118
- options: labelOptions,
2119
- onChange: onSelectLabel,
2120
- className: "min-w-0 truncate text-xs text-(--clarify-code-muted)"
2121
- }) : null
2122
- ]
2368
+ children: meta
2123
2369
  }) : null,
2124
2370
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2125
- className: "clarify-api-example-code group bg-(--clarify-code-background)",
2371
+ className: "clarify-openai-example-code group bg-(--clarify-code-background)",
2126
2372
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CodeToolbar, {
2127
2373
  code,
2374
+ leadingControls: metaInToolbar ? meta : void 0,
2128
2375
  languageOptions,
2129
2376
  selectedLanguageKey,
2130
2377
  onSelectLanguage,
@@ -2320,6 +2567,9 @@ function ResponseExamplesPanel(arg0) {
2320
2567
  if (!state.selectedContent || !state.responseBody) return null;
2321
2568
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ApiExampleCodeGroup, {
2322
2569
  title: title ?? t("openapi.response"),
2570
+ tag: state.selectedResponse?.status,
2571
+ tagOptions: state.responses.map((response) => response.status),
2572
+ onSelectTag: state.responses.length > 0 ? state.onSelectStatus : void 0,
2323
2573
  label: state.selectedContent?.mediaType,
2324
2574
  labelOptions: state.responseContents.map((content) => content.mediaType),
2325
2575
  onSelectLabel: state.responseContents.length > 0 ? state.onSelectMediaType : void 0,
@@ -2327,7 +2577,8 @@ function ResponseExamplesPanel(arg0) {
2327
2577
  language: codeLanguageForMediaType(state.selectedContent.mediaType),
2328
2578
  examples: state.examples,
2329
2579
  selectedExampleKey: state.selectedExample?.key,
2330
- onSelectExample: state.onSelectExample
2580
+ onSelectExample: state.onSelectExample,
2581
+ metaInToolbar: true
2331
2582
  });
2332
2583
  }
2333
2584
  //#endregion
@@ -2816,6 +3067,50 @@ function EndpointResponse(arg0) {
2816
3067
  });
2817
3068
  }
2818
3069
  //#endregion
3070
+ //#region source/openapi/components/InlineListbox.tsx
3071
+ function InlineListbox(arg0) {
3072
+ const { label, value, options, onChange, compact = false, buttonContent, buttonClassName, className } = arg0;
3073
+ const selected = options.find((option) => option.value === value) ?? options[0];
3074
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.Listbox, {
3075
+ value: selected?.value ?? value,
3076
+ onChange,
3077
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3078
+ className: (0, clsx.default)("pointer-events-auto relative inline-flex min-w-0", className),
3079
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.ListboxButton, {
3080
+ "aria-label": label,
3081
+ className: (0, clsx.default)(buttonClassName ?? "inline-flex min-w-0 items-center gap-1 rounded-md border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) font-semibold text-(--clarify-ui-text-strong) shadow-xs outline-hidden transition hover:border-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) data-open:border-(--clarify-ui-accent-border) data-open:bg-(--clarify-ui-active-background) data-open:ring-2 data-open:ring-(--clarify-ui-accent-border)", buttonClassName ? null : compact ? "min-h-7 max-w-32 px-2 py-0.5 text-xs" : "min-h-8 w-full px-2.5 py-1.5 text-xs"),
3082
+ children: buttonContent ?? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3083
+ className: "truncate",
3084
+ children: selected?.label ?? value
3085
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDownIcon, {
3086
+ className: "h-3.5 w-3.5 shrink-0 text-(--clarify-ui-text-faint)",
3087
+ "aria-hidden": "true"
3088
+ })] })
3089
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.ListboxOptions, {
3090
+ anchor: "bottom start",
3091
+ className: "z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-(--clarify-popover-max-width) overflow-auto rounded-xl bg-(--clarify-theme-tokens-colors-surface) p-1 text-xs shadow-lg shadow-black/10 ring-1 ring-(--clarify-theme-tokens-colors-border) [--anchor-gap:--spacing(1)] focus:outline-none",
3092
+ children: options.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.ListboxOption, {
3093
+ value: option.value,
3094
+ className: "group flex min-h-9 cursor-default items-center justify-between gap-3 rounded-lg px-2.5 py-2 text-xs text-(--clarify-ui-text) select-none data-focus:bg-(--clarify-ui-hover-background) data-focus:text-(--clarify-ui-text-strong) data-selected:bg-(--clarify-ui-active-background) data-selected:text-(--clarify-ui-accent-text)",
3095
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3096
+ className: "min-w-0",
3097
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3098
+ className: "block truncate",
3099
+ children: option.label
3100
+ }), option.description ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3101
+ className: "mt-0.5 block truncate text-2xs text-(--clarify-ui-text-faint)",
3102
+ children: option.description
3103
+ }) : null]
3104
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CheckIcon, {
3105
+ className: "h-3.5 w-3.5 shrink-0 opacity-0 group-data-selected:opacity-100",
3106
+ "aria-hidden": "true"
3107
+ })]
3108
+ }, option.value))
3109
+ })]
3110
+ })
3111
+ });
3112
+ }
3113
+ //#endregion
2819
3114
  //#region source/openapi/components/OpenApiOperation.state.ts
2820
3115
  function useOperationRequestState(spec, path, operation, source = "path") {
2821
3116
  const parameters = getOperationParameters(spec, path, operation, source);
@@ -2934,48 +3229,6 @@ function EndpointPath(arg0) {
2934
3229
  }) : null]
2935
3230
  });
2936
3231
  }
2937
- function InlineListbox(arg0) {
2938
- const { label, value, options, onChange, compact = false } = arg0;
2939
- const selected = options.find((option) => option.value === value) ?? options[0];
2940
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.Listbox, {
2941
- value: selected?.value ?? value,
2942
- onChange,
2943
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2944
- className: "pointer-events-auto relative inline-flex min-w-0",
2945
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.ListboxButton, {
2946
- "aria-label": label,
2947
- className: (0, clsx.default)("inline-flex min-w-0 items-center gap-1 rounded-md border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) font-semibold text-(--clarify-ui-text-strong) shadow-xs outline-hidden transition hover:border-(--clarify-ui-text-faint) hover:bg-(--clarify-ui-hover-background) data-open:border-(--clarify-ui-accent-border) data-open:bg-(--clarify-ui-active-background) data-open:ring-2 data-open:ring-(--clarify-ui-accent-border)", compact ? "min-h-7 max-w-32 px-2 py-0.5 text-xs" : "min-h-8 w-full px-2.5 py-1.5 text-xs"),
2948
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2949
- className: "truncate",
2950
- children: selected?.label ?? value
2951
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDownIcon, {
2952
- className: "h-3.5 w-3.5 shrink-0 text-(--clarify-ui-text-faint)",
2953
- "aria-hidden": "true"
2954
- })]
2955
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_headlessui_react.ListboxOptions, {
2956
- anchor: "bottom start",
2957
- className: "z-30 mt-1 max-h-64 w-max min-w-(--button-width) max-w-(--clarify-popover-max-width) overflow-auto rounded-xl bg-(--clarify-theme-tokens-colors-surface) p-1 text-xs shadow-lg shadow-black/10 ring-1 ring-(--clarify-theme-tokens-colors-border) [--anchor-gap:--spacing(1)] focus:outline-none",
2958
- children: options.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_headlessui_react.ListboxOption, {
2959
- value: option.value,
2960
- className: "group flex min-h-9 cursor-default items-center justify-between gap-3 rounded-lg px-2.5 py-2 text-xs text-(--clarify-ui-text) select-none data-focus:bg-(--clarify-ui-hover-background) data-focus:text-(--clarify-ui-text-strong) data-selected:bg-(--clarify-ui-active-background) data-selected:text-(--clarify-ui-accent-text)",
2961
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2962
- className: "min-w-0",
2963
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2964
- className: "block truncate",
2965
- children: option.label
2966
- }), option.description ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2967
- className: "mt-0.5 block truncate text-2xs text-(--clarify-ui-text-faint)",
2968
- children: option.description
2969
- }) : null]
2970
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CheckIcon, {
2971
- className: "h-3.5 w-3.5 shrink-0 opacity-0 group-data-selected:opacity-100",
2972
- "aria-hidden": "true"
2973
- })]
2974
- }, option.value))
2975
- })]
2976
- })
2977
- });
2978
- }
2979
3232
  function getServerPreviewUrl(server, variables) {
2980
3233
  return (server.url ?? "").replace(/\{([^}]+)\}/g, (_, name) => variables[name] ?? server.variables?.[name]?.default ?? `{${name}}`);
2981
3234
  }
@@ -2999,7 +3252,7 @@ function getDefaultResponseStatus(operation, spec) {
2999
3252
  return orderedResponses.find(({ status }) => status === "default")?.status ?? orderedResponses.find(({ status }) => status.startsWith("2"))?.status ?? orderedResponses[0]?.status ?? "";
3000
3253
  }
3001
3254
  function ServerUrlValue(arg0) {
3002
- const { server, variables, open, interactive, onToggle } = arg0;
3255
+ const { servers, selectedKey, server, variables, open, interactive, directSelect, onSelect, onToggle } = arg0;
3003
3256
  const url = getServerPreviewUrl(server, variables);
3004
3257
  const protocolLabel = getServerProtocolLabel(server, variables);
3005
3258
  if (!interactive) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
@@ -3022,12 +3275,47 @@ function ServerUrlValue(arg0) {
3022
3275
  })]
3023
3276
  })]
3024
3277
  });
3278
+ if (directSelect) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InlineListbox, {
3279
+ label: "Server",
3280
+ value: selectedKey,
3281
+ options: servers.map((option, index) => ({
3282
+ value: getServerKey(option, index),
3283
+ label: getServerLabel(option, index),
3284
+ description: option.description
3285
+ })),
3286
+ onChange: onSelect,
3287
+ className: "w-8 shrink-0 sm:w-fit sm:min-w-16 sm:max-w-(--clarify-server-url-max-width)",
3288
+ buttonClassName: "group flex h-8 w-full min-w-0 cursor-pointer items-center justify-center rounded-lg bg-(--clarify-ui-subtle-background) px-0 text-(--clarify-ui-text) transition-colors hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) data-open:bg-(--clarify-ui-active-background) data-open:text-(--clarify-theme-tokens-colors-foreground) sm:px-1.5",
3289
+ buttonContent: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3290
+ className: "sm:hidden",
3291
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ServerIcon, {
3292
+ className: "h-4 w-4",
3293
+ "aria-hidden": "true"
3294
+ })
3295
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3296
+ className: "hidden min-w-0 items-center gap-1 overflow-hidden sm:flex",
3297
+ children: [
3298
+ protocolLabel ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3299
+ className: "shrink-0 rounded bg-sky-100 px-1.5 py-0.5 text-2xs font-black text-sky-700 dark:bg-sky-400/15 dark:text-sky-200",
3300
+ children: protocolLabel
3301
+ }) : null,
3302
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3303
+ className: "truncate font-semibold text-xs",
3304
+ children: url
3305
+ }),
3306
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDownIcon, {
3307
+ className: "h-3.5 w-3.5 shrink-0 text-zinc-400 transition-transform group-data-open:rotate-180",
3308
+ "aria-hidden": "true"
3309
+ })
3310
+ ]
3311
+ })] })
3312
+ });
3025
3313
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
3026
3314
  type: "button",
3027
3315
  "aria-expanded": open,
3028
3316
  "aria-label": "Server",
3029
3317
  onClick: onToggle,
3030
- className: (0, clsx.default)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-(--clarify-ui-subtle-background) text-(--clarify-ui-text) transition hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) sm:w-auto sm:min-w-16 sm:max-w-(--clarify-server-url-max-width) sm:px-1.5", open ? "bg-(--clarify-ui-active-background) text-(--clarify-theme-tokens-colors-foreground)" : null),
3318
+ className: (0, clsx.default)("flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg bg-(--clarify-ui-subtle-background) text-(--clarify-ui-text) transition-colors hover:bg-(--clarify-ui-hover-background) hover:text-(--clarify-theme-tokens-colors-foreground) focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--clarify-theme-tokens-colors-primary) sm:w-auto sm:min-w-16 sm:max-w-(--clarify-server-url-max-width) sm:px-1.5", open ? "bg-(--clarify-ui-active-background) text-(--clarify-theme-tokens-colors-foreground)" : null),
3031
3319
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3032
3320
  className: "sm:hidden",
3033
3321
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ServerIcon, {
@@ -3046,7 +3334,7 @@ function ServerUrlValue(arg0) {
3046
3334
  children: url
3047
3335
  }),
3048
3336
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDownIcon, {
3049
- className: "h-3.5 w-3.5 shrink-0 text-zinc-400",
3337
+ className: (0, clsx.default)("h-3.5 w-3.5 shrink-0 text-zinc-400 transition-transform", open && "rotate-180"),
3050
3338
  "aria-hidden": "true"
3051
3339
  })
3052
3340
  ]
@@ -3158,6 +3446,7 @@ function AuthPanel(arg0) {
3158
3446
  }
3159
3447
  function EndpointIdentity(arg0) {
3160
3448
  const { method, operationSource, path, servers, selectedServerKey, selectedServer, serverVariables, serverOpen, authOptions, selectedAuthName, selectedAuth, authValues, authOpen, onSelectServer, onChangeServerVariable, onToggleServer, onToggleAuth, onSelectAuth, onChangeAuthValue } = arg0;
3449
+ const directServerSelect = servers.length > 1 && servers.every((server) => Object.keys(server.variables ?? {}).length === 0);
3161
3450
  const serverInteractive = servers.length > 1 || Object.keys(selectedServer.variables ?? {}).length > 0;
3162
3451
  const [copiedUrl, setCopiedUrl] = (0, react.useState)(false);
3163
3452
  const fullUrl = getFullEndpointUrl(selectedServer, serverVariables, path);
@@ -3170,7 +3459,7 @@ function EndpointIdentity(arg0) {
3170
3459
  if (await require_PageActions.copyTextToClipboard(fullUrl)) setCopiedUrl(true);
3171
3460
  }
3172
3461
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3173
- className: "not-prose flex w-full flex-col overflow-hidden rounded-xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-xs",
3462
+ className: "clarify-openai-endpoint-identity not-prose flex w-full flex-col overflow-hidden rounded-xl border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-xs",
3174
3463
  children: [
3175
3464
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3176
3465
  className: "flex min-w-0 items-center gap-1.5 overflow-hidden px-2.5 py-2",
@@ -3178,10 +3467,14 @@ function EndpointIdentity(arg0) {
3178
3467
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EndpointMethodBadge, { method }),
3179
3468
  operationSource === "webhook" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EndpointMethodBadge, { method: "WEBHOOK" }) : null,
3180
3469
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ServerUrlValue, {
3470
+ servers,
3471
+ selectedKey: selectedServerKey,
3181
3472
  server: selectedServer,
3182
3473
  variables: serverVariables,
3183
3474
  open: serverOpen,
3184
3475
  interactive: serverInteractive,
3476
+ directSelect: directServerSelect,
3477
+ onSelect: onSelectServer,
3185
3478
  onToggle: onToggleServer
3186
3479
  }),
3187
3480
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EndpointPath, {
@@ -3205,7 +3498,7 @@ function EndpointIdentity(arg0) {
3205
3498
  }) : null
3206
3499
  ]
3207
3500
  }),
3208
- serverInteractive && serverOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ServerPanel, {
3501
+ serverInteractive && !directServerSelect && serverOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ServerPanel, {
3209
3502
  servers,
3210
3503
  selectedKey: selectedServerKey,
3211
3504
  selectedServer,
@@ -3235,7 +3528,7 @@ function OpenApiOperation(arg0) {
3235
3528
  const [linkedExampleKey, setLinkedExampleKey] = (0, react.useState)("");
3236
3529
  const [selectedResponseStatus, setSelectedResponseStatus] = (0, react.useState)(() => getDefaultResponseStatus(operation, spec));
3237
3530
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
3238
- className: "clarify-api-endpoint scroll-mt-24 pb-16 first:pt-0 last:pb-0",
3531
+ className: "clarify-openai-endpoint scroll-mt-24 pb-16 first:pt-0 last:pb-0",
3239
3532
  "aria-labelledby": id,
3240
3533
  children: [
3241
3534
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Heading, {
@@ -3421,6 +3714,30 @@ Object.defineProperty(exports, "ResponseExamplesPanel", {
3421
3714
  return ResponseExamplesPanel;
3422
3715
  }
3423
3716
  });
3717
+ Object.defineProperty(exports, "Step", {
3718
+ enumerable: true,
3719
+ get: function() {
3720
+ return Step;
3721
+ }
3722
+ });
3723
+ Object.defineProperty(exports, "Steps", {
3724
+ enumerable: true,
3725
+ get: function() {
3726
+ return Steps;
3727
+ }
3728
+ });
3729
+ Object.defineProperty(exports, "TabItem", {
3730
+ enumerable: true,
3731
+ get: function() {
3732
+ return TabItem;
3733
+ }
3734
+ });
3735
+ Object.defineProperty(exports, "Tabs", {
3736
+ enumerable: true,
3737
+ get: function() {
3738
+ return Tabs;
3739
+ }
3740
+ });
3424
3741
  Object.defineProperty(exports, "Tag", {
3425
3742
  enumerable: true,
3426
3743
  get: function() {
@@ -3494,4 +3811,4 @@ Object.defineProperty(exports, "primitives_exports", {
3494
3811
  }
3495
3812
  });
3496
3813
 
3497
- //# sourceMappingURL=OpenApiOperation-B52IWlKb.cjs.map
3814
+ //# sourceMappingURL=OpenApiOperation-DbZjxIuj.cjs.map