@carlonicora/nextjs-jsonapi 1.108.0 → 1.109.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.
- package/dist/{AssistantInterface-BYgI5z1-.d.mts → AssistantInterface-B1c8FhGA.d.mts} +2 -0
- package/dist/{AssistantInterface-DfDcz0gJ.d.ts → AssistantInterface-BBUHxOCd.d.ts} +2 -0
- package/dist/{AssistantMessageInterface-BpEhx2pC.d.ts → AssistantMessageInterface-Cs1yb-gF.d.ts} +3 -1
- package/dist/{AssistantMessageInterface-DJ3Me16Y.d.mts → AssistantMessageInterface-DQ3mH5L8.d.mts} +3 -1
- package/dist/{AuthComponent-B6DIk8Vf.d.ts → AuthComponent-Cd7lcYif.d.ts} +1 -1
- package/dist/{AuthComponent-BKI0ZbtD.d.mts → AuthComponent-DdxCFgUZ.d.mts} +1 -1
- package/dist/{BlockNoteEditor-2AXSTGGG.js → BlockNoteEditor-3XYBZLWO.js} +20 -19
- package/dist/BlockNoteEditor-3XYBZLWO.js.map +1 -0
- package/dist/{BlockNoteEditor-XVIBGXHF.mjs → BlockNoteEditor-EBFZG7AL.mjs} +5 -4
- package/dist/{BlockNoteEditor-XVIBGXHF.mjs.map → BlockNoteEditor-EBFZG7AL.mjs.map} +1 -1
- package/dist/{auth.interface-BBUgMZzs.d.ts → auth.interface-8b601idJ.d.ts} +1 -1
- package/dist/{auth.interface-XYEREOD6.d.mts → auth.interface-CXBF8Mhi.d.mts} +1 -1
- package/dist/billing/index.js +347 -346
- package/dist/billing/index.js.map +1 -1
- package/dist/billing/index.mjs +4 -3
- package/dist/billing/index.mjs.map +1 -1
- package/dist/chunk-3J7RQBF3.js +123 -0
- package/dist/chunk-3J7RQBF3.js.map +1 -0
- package/dist/{chunk-VLDLERJN.js → chunk-7E3O52U5.js} +15 -8
- package/dist/chunk-7E3O52U5.js.map +1 -0
- package/dist/{chunk-RXXZGPC3.js → chunk-CFI4WZ5R.js} +159 -113
- package/dist/chunk-CFI4WZ5R.js.map +1 -0
- package/dist/chunk-CQID6RCF.mjs +38 -0
- package/dist/chunk-CQID6RCF.mjs.map +1 -0
- package/dist/{chunk-56XBGQGU.mjs → chunk-CRTVAQEK.mjs} +42 -27
- package/dist/chunk-CRTVAQEK.mjs.map +1 -0
- package/dist/{chunk-N3NVIPSU.mjs → chunk-MSNNAHDB.mjs} +129 -83
- package/dist/{chunk-N3NVIPSU.mjs.map → chunk-MSNNAHDB.mjs.map} +1 -1
- package/dist/chunk-MZTKPPET.mjs +123 -0
- package/dist/chunk-MZTKPPET.mjs.map +1 -0
- package/dist/{chunk-HC3JFN3C.js → chunk-UHO3KUUH.js} +838 -823
- package/dist/chunk-UHO3KUUH.js.map +1 -0
- package/dist/{chunk-CFECWLHH.mjs → chunk-UOYIWJEJ.mjs} +10 -3
- package/dist/chunk-UOYIWJEJ.mjs.map +1 -0
- package/dist/chunk-YQQHAFBS.js +38 -0
- package/dist/chunk-YQQHAFBS.js.map +1 -0
- package/dist/client/index.d.mts +8 -16
- package/dist/client/index.d.ts +8 -16
- package/dist/client/index.js +5 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +4 -3
- package/dist/components/index.d.mts +6 -5
- package/dist/components/index.d.ts +6 -5
- package/dist/components/index.js +5 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +4 -3
- package/dist/{config-CLQynoaa.d.ts → config-CN23v3eJ.d.ts} +4 -1
- package/dist/{config-k61pe_o2.d.mts → config-gh88Qn4h.d.mts} +4 -1
- package/dist/contexts/index.d.mts +18 -7
- package/dist/contexts/index.d.ts +18 -7
- package/dist/contexts/index.js +5 -4
- package/dist/contexts/index.js.map +1 -1
- package/dist/contexts/index.mjs +4 -3
- package/dist/core/index.d.mts +44 -11
- package/dist/core/index.d.ts +44 -11
- package/dist/core/index.js +2 -2
- package/dist/core/index.mjs +1 -1
- package/dist/features/help/index.css +29 -0
- package/dist/features/help/index.css.map +1 -0
- package/dist/features/help/index.d.mts +115 -0
- package/dist/features/help/index.d.ts +115 -0
- package/dist/features/help/index.js +532 -0
- package/dist/features/help/index.js.map +1 -0
- package/dist/features/help/index.mjs +532 -0
- package/dist/features/help/index.mjs.map +1 -0
- package/dist/features/help/server/createHelpAssetRouteHandler.d.mts +11 -0
- package/dist/features/help/server/createHelpAssetRouteHandler.d.ts +11 -0
- package/dist/features/help/server/createHelpAssetRouteHandler.js +43 -0
- package/dist/features/help/server/createHelpAssetRouteHandler.js.map +1 -0
- package/dist/features/help/server/createHelpAssetRouteHandler.mjs +43 -0
- package/dist/features/help/server/createHelpAssetRouteHandler.mjs.map +1 -0
- package/dist/features/help/server.d.mts +71 -0
- package/dist/features/help/server.d.ts +71 -0
- package/dist/features/help/server.js +123 -0
- package/dist/features/help/server.js.map +1 -0
- package/dist/features/help/server.mjs +123 -0
- package/dist/features/help/server.mjs.map +1 -0
- package/dist/help-content-config.interface-B9L02u9i.d.mts +50 -0
- package/dist/help-content-config.interface-B9L02u9i.d.ts +50 -0
- package/dist/index.d.mts +10 -8
- package/dist/index.d.ts +10 -8
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -2
- package/dist/{notification.interface-aLEJbA_g.d.ts → notification.interface-C1T1C2ee.d.ts} +1 -100
- package/dist/{notification.interface-DLZGtV7Z.d.mts → notification.interface-DIxR23eS.d.mts} +1 -100
- package/dist/{s3.service-CVgLWaDc.d.mts → s3.service-0BTClOYO.d.mts} +2 -2
- package/dist/{s3.service-SLlX0Zbz.d.ts → s3.service-CT27Fm1s.d.ts} +2 -2
- package/dist/server/index.d.mts +4 -3
- package/dist/server/index.d.ts +4 -3
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +1 -1
- package/dist/types-CQSjy7et.d.mts +101 -0
- package/dist/types-DHOxe8rc.d.ts +101 -0
- package/dist/usePageUrlGenerator-tjq2mlDV.d.ts +14 -0
- package/dist/usePageUrlGenerator-uOnyJ6j2.d.mts +14 -0
- package/dist/{useSocket-BkxHHujj.d.mts → useSocket-B1fMIr17.d.mts} +1 -1
- package/dist/{useSocket-CMDjWFYm.d.ts → useSocket-BdJTBXKv.d.ts} +1 -1
- package/package.json +20 -1
- package/src/client/config.ts +9 -1
- package/src/core/registry/helpStore.ts +45 -0
- package/src/features/assistant/contexts/AssistantContext.tsx +35 -19
- package/src/features/assistant/contexts/__tests__/AssistantContext.spec.tsx +66 -6
- package/src/features/assistant/data/Assistant.ts +2 -0
- package/src/features/assistant/data/AssistantInterface.ts +2 -0
- package/src/features/assistant/data/AssistantService.ts +18 -8
- package/src/features/assistant-message/components/parts/MessageSourcesPanel.tsx +6 -4
- package/src/features/assistant-message/components/parts/tabs/ContentsTab.tsx +5 -1
- package/src/features/assistant-message/components/parts/tabs/ReferencesTab.tsx +2 -1
- package/src/features/assistant-message/data/AssistantMessage.ts +27 -1
- package/src/features/assistant-message/data/AssistantMessageInterface.ts +1 -0
- package/src/features/assistant-message/data/__tests__/AssistantMessage.spec.ts +7 -3
- package/src/features/help/components/HelpArticleBody.tsx +54 -0
- package/src/features/help/components/HelpAskAi.tsx +36 -0
- package/src/features/help/components/HelpAssistantSheet.tsx +53 -0
- package/src/features/help/components/HelpHeader.tsx +40 -0
- package/src/features/help/components/HelpHint.tsx +77 -0
- package/src/features/help/components/HelpSearchResultRow.tsx +51 -0
- package/src/features/help/components/HelpSideNav.tsx +84 -0
- package/src/features/help/components/HelpTOC.tsx +49 -0
- package/src/features/help/components/__tests__/HelpAskAi.spec.tsx +68 -0
- package/src/features/help/components/__tests__/HelpAssistantSheet.spec.tsx +36 -0
- package/src/features/help/components/__tests__/HelpHint.spec.tsx +50 -0
- package/src/features/help/components/__tests__/HelpSearchResultRow.spec.tsx +59 -0
- package/src/features/help/components/__tests__/HelpSideNav.spec.tsx +52 -0
- package/src/features/help/components/mdx/Callout.tsx +21 -0
- package/src/features/help/components/mdx/EntityRef.tsx +18 -0
- package/src/features/help/components/mdx/KeyBinding.tsx +6 -0
- package/src/features/help/components/mdx/Related.tsx +33 -0
- package/src/features/help/components/mdx/Screenshot.tsx +9 -0
- package/src/features/help/components/mdx/Steps.tsx +21 -0
- package/src/features/help/components/mdx/Video.tsx +8 -0
- package/src/features/help/components/mdx/mdx-server-components.ts +23 -0
- package/src/features/help/components/mdx/mdxComponents.ts +9 -0
- package/src/features/help/contexts/HelpContext.spec.tsx +28 -0
- package/src/features/help/contexts/HelpContext.tsx +24 -0
- package/src/features/help/hooks/useHelp.ts +1 -0
- package/src/features/help/hooks/useHelpArticle.ts +7 -0
- package/src/features/help/hooks/useHelpFilter.ts +27 -0
- package/src/features/help/hooks/useHelpManifest.ts +5 -0
- package/src/features/help/i18n-keys.ts +34 -0
- package/src/features/help/index.ts +27 -0
- package/src/features/help/interfaces/help-content-config.interface.ts +17 -0
- package/src/features/help/server/__tests__/createHelpAssetRouteHandler.spec.ts +43 -0
- package/src/features/help/server/createHelpAssetRouteHandler.ts +35 -0
- package/src/features/help/server/generateHelpArticleMetadata.ts +18 -0
- package/src/features/help/server/generateHelpArticleStaticParams.ts +7 -0
- package/src/features/help/server/generateHelpModeStaticParams.ts +5 -0
- package/src/features/help/server/getHelpContent.ts +17 -0
- package/src/features/help/server/index.ts +8 -0
- package/src/features/help/server/serializeHelpArticle.tsx +46 -0
- package/src/features/help/server-entry.ts +20 -0
- package/src/features/help/types/help-article.types.ts +37 -0
- package/src/features/help/utils/__tests__/helpNavigation.spec.ts +70 -0
- package/src/features/help/utils/articleUrl.ts +13 -0
- package/src/features/help/utils/helpNavigation.ts +29 -0
- package/src/features/how-to/HowToModule.ts +1 -1
- package/src/features/how-to/data/HowTo.ts +21 -3
- package/src/features/how-to/data/HowToInterface.ts +1 -0
- package/src/index.ts +4 -0
- package/dist/BlockNoteEditor-2AXSTGGG.js.map +0 -1
- package/dist/chunk-56XBGQGU.mjs.map +0 -1
- package/dist/chunk-CFECWLHH.mjs.map +0 -1
- package/dist/chunk-HC3JFN3C.js.map +0 -1
- package/dist/chunk-RXXZGPC3.js.map +0 -1
- package/dist/chunk-VLDLERJN.js.map +0 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Modules
|
|
3
|
+
} from "./chunk-MSNNAHDB.mjs";
|
|
4
|
+
import {
|
|
5
|
+
__name
|
|
6
|
+
} from "./chunk-PAWJFY3S.mjs";
|
|
7
|
+
|
|
8
|
+
// src/features/help/types/help-article.types.ts
|
|
9
|
+
var HELP_MODES = ["tutorial", "how-to", "reference", "explanation"];
|
|
10
|
+
|
|
11
|
+
// src/features/help/utils/helpNavigation.ts
|
|
12
|
+
function buildHelpNav(manifest) {
|
|
13
|
+
return HELP_MODES.map((mode) => ({
|
|
14
|
+
mode,
|
|
15
|
+
articles: manifest.filter((a) => a.mode === mode && !a.draft).sort((a, b) => a.order - b.order)
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
__name(buildHelpNav, "buildHelpNav");
|
|
19
|
+
function findHelpArticle(manifest, mode, slug) {
|
|
20
|
+
return manifest.find((a) => a.mode === mode && a.slug === slug);
|
|
21
|
+
}
|
|
22
|
+
__name(findHelpArticle, "findHelpArticle");
|
|
23
|
+
function prevNextWithinMode(manifest, current) {
|
|
24
|
+
const siblings = manifest.filter((a) => a.mode === current.mode && !a.draft).sort((a, b) => a.order - b.order);
|
|
25
|
+
const idx = siblings.findIndex((a) => a.slug === current.slug);
|
|
26
|
+
return {
|
|
27
|
+
prev: idx > 0 ? siblings[idx - 1] : null,
|
|
28
|
+
next: idx >= 0 && idx < siblings.length - 1 ? siblings[idx + 1] : null
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
__name(prevNextWithinMode, "prevNextWithinMode");
|
|
32
|
+
|
|
33
|
+
// src/features/help/components/mdx/Callout.tsx
|
|
34
|
+
import { InfoIcon, AlertTriangleIcon, LightbulbIcon, XCircleIcon } from "lucide-react";
|
|
35
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
36
|
+
var STYLES = {
|
|
37
|
+
info: { icon: InfoIcon, ring: "ring-blue-500/30 bg-blue-500/5" },
|
|
38
|
+
warning: { icon: AlertTriangleIcon, ring: "ring-amber-500/30 bg-amber-500/5" },
|
|
39
|
+
tip: { icon: LightbulbIcon, ring: "ring-emerald-500/30 bg-emerald-500/5" },
|
|
40
|
+
danger: { icon: XCircleIcon, ring: "ring-rose-500/30 bg-rose-500/5" }
|
|
41
|
+
};
|
|
42
|
+
function Callout({ type = "info", children }) {
|
|
43
|
+
const { icon: Icon, ring } = STYLES[type];
|
|
44
|
+
return /* @__PURE__ */ jsxs("div", { className: `my-4 flex gap-3 rounded-md ring-1 p-3 ${ring}`, children: [
|
|
45
|
+
/* @__PURE__ */ jsx(Icon, { className: "mt-0.5 h-4 w-4 shrink-0" }),
|
|
46
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm leading-relaxed", children })
|
|
47
|
+
] });
|
|
48
|
+
}
|
|
49
|
+
__name(Callout, "Callout");
|
|
50
|
+
|
|
51
|
+
// src/features/help/components/mdx/Steps.tsx
|
|
52
|
+
import { Children } from "react";
|
|
53
|
+
import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
54
|
+
function Steps({ children }) {
|
|
55
|
+
const items = Children.toArray(children);
|
|
56
|
+
return /* @__PURE__ */ jsx2("ol", { className: "my-4 list-none space-y-3 pl-0", children: items.map((child, i) => /* @__PURE__ */ jsxs2("li", { className: "flex gap-3", children: [
|
|
57
|
+
/* @__PURE__ */ jsx2("span", { className: "bg-muted text-muted-foreground flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-xs", children: i + 1 }),
|
|
58
|
+
/* @__PURE__ */ jsx2("div", { className: "flex-1 [&>p:first-child]:mt-0", children: child })
|
|
59
|
+
] }, i)) });
|
|
60
|
+
}
|
|
61
|
+
__name(Steps, "Steps");
|
|
62
|
+
function Step({ children }) {
|
|
63
|
+
return /* @__PURE__ */ jsx2(Fragment, { children });
|
|
64
|
+
}
|
|
65
|
+
__name(Step, "Step");
|
|
66
|
+
|
|
67
|
+
// src/features/help/components/mdx/Screenshot.tsx
|
|
68
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
69
|
+
function Screenshot({ src, alt, caption }) {
|
|
70
|
+
const url = src.startsWith("/") ? src : `/help-assets/${src}`;
|
|
71
|
+
return /* @__PURE__ */ jsxs3("figure", { className: "my-4", children: [
|
|
72
|
+
/* @__PURE__ */ jsx3("img", { src: url, alt: alt ?? caption ?? "", className: "rounded-md ring-1 ring-border" }),
|
|
73
|
+
caption ? /* @__PURE__ */ jsx3("figcaption", { className: "text-muted-foreground mt-1 text-xs", children: caption }) : null
|
|
74
|
+
] });
|
|
75
|
+
}
|
|
76
|
+
__name(Screenshot, "Screenshot");
|
|
77
|
+
|
|
78
|
+
// src/features/help/components/mdx/EntityRef.tsx
|
|
79
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
80
|
+
function EntityRef({ type, children }) {
|
|
81
|
+
let Icon = null;
|
|
82
|
+
try {
|
|
83
|
+
const m = Modules.findByName(type);
|
|
84
|
+
Icon = m.icon ?? null;
|
|
85
|
+
} catch {
|
|
86
|
+
Icon = null;
|
|
87
|
+
}
|
|
88
|
+
return /* @__PURE__ */ jsxs4("span", { className: "bg-muted text-foreground/90 inline-flex items-center gap-1 rounded px-1.5 py-0.5 align-middle text-xs", children: [
|
|
89
|
+
Icon ? /* @__PURE__ */ jsx4(Icon, { className: "h-3 w-3" }) : null,
|
|
90
|
+
children
|
|
91
|
+
] });
|
|
92
|
+
}
|
|
93
|
+
__name(EntityRef, "EntityRef");
|
|
94
|
+
|
|
95
|
+
// src/features/help/components/mdx/KeyBinding.tsx
|
|
96
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
97
|
+
function KeyBinding({ children }) {
|
|
98
|
+
return /* @__PURE__ */ jsx5("kbd", { className: "bg-muted text-muted-foreground rounded border px-1.5 py-0.5 text-xs font-medium", children });
|
|
99
|
+
}
|
|
100
|
+
__name(KeyBinding, "KeyBinding");
|
|
101
|
+
|
|
102
|
+
// src/features/help/components/mdx/Video.tsx
|
|
103
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
104
|
+
function Video({ src, poster }) {
|
|
105
|
+
const url = src.startsWith("/") ? src : `/help-assets/${src}`;
|
|
106
|
+
return /* @__PURE__ */ jsx6("video", { controls: true, preload: "metadata", poster, className: "my-4 w-full rounded-md ring-1 ring-border", children: /* @__PURE__ */ jsx6("source", { src: url }) });
|
|
107
|
+
}
|
|
108
|
+
__name(Video, "Video");
|
|
109
|
+
|
|
110
|
+
export {
|
|
111
|
+
HELP_MODES,
|
|
112
|
+
buildHelpNav,
|
|
113
|
+
findHelpArticle,
|
|
114
|
+
prevNextWithinMode,
|
|
115
|
+
Callout,
|
|
116
|
+
Steps,
|
|
117
|
+
Step,
|
|
118
|
+
Screenshot,
|
|
119
|
+
EntityRef,
|
|
120
|
+
KeyBinding,
|
|
121
|
+
Video
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=chunk-MZTKPPET.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/features/help/types/help-article.types.ts","../src/features/help/utils/helpNavigation.ts","../src/features/help/components/mdx/Callout.tsx","../src/features/help/components/mdx/Steps.tsx","../src/features/help/components/mdx/Screenshot.tsx","../src/features/help/components/mdx/EntityRef.tsx","../src/features/help/components/mdx/KeyBinding.tsx","../src/features/help/components/mdx/Video.tsx"],"sourcesContent":["/**\n * Local copy of the help-article types to keep this published frontend library\n * decoupled from `@carlonicora/nestjs-neo4jsonapi`. Must stay in sync with\n * `packages/nestjs-neo4jsonapi/src/foundations/help-content-sync/interfaces/help-article.interface.ts`.\n */\n\nexport const HELP_MODES = [\"tutorial\", \"how-to\", \"reference\", \"explanation\"] as const;\nexport type HelpMode = (typeof HELP_MODES)[number];\n\nexport interface HelpHeading {\n depth: 2 | 3;\n slug: string;\n text: string;\n}\n\nexport interface HelpArticle {\n id: string;\n slug: string;\n mode: HelpMode;\n title: string;\n summary: string;\n order: number;\n tags: readonly string[];\n contextualKeys: readonly string[];\n aiIndexed: boolean;\n draft: boolean;\n contentHash: string;\n path: string;\n headings: readonly HelpHeading[];\n relatedSlugs: readonly string[];\n lastUpdated: string;\n}\n\nexport interface HelpRedirect {\n from: string;\n to: string;\n}\n","import { HELP_MODES, type HelpArticle, type HelpMode } from \"../types/help-article.types\";\n\nexport interface HelpNavGroup {\n mode: HelpMode;\n articles: HelpArticle[];\n}\n\nexport function buildHelpNav(manifest: readonly HelpArticle[]): HelpNavGroup[] {\n return HELP_MODES.map((mode) => ({\n mode,\n articles: manifest.filter((a) => a.mode === mode && !a.draft).sort((a, b) => a.order - b.order),\n }));\n}\n\nexport function findHelpArticle(manifest: readonly HelpArticle[], mode: string, slug: string): HelpArticle | undefined {\n return manifest.find((a) => a.mode === mode && a.slug === slug);\n}\n\nexport function prevNextWithinMode(\n manifest: readonly HelpArticle[],\n current: HelpArticle,\n): { prev: HelpArticle | null; next: HelpArticle | null } {\n const siblings = manifest.filter((a) => a.mode === current.mode && !a.draft).sort((a, b) => a.order - b.order);\n const idx = siblings.findIndex((a) => a.slug === current.slug);\n return {\n prev: idx > 0 ? siblings[idx - 1] : null,\n next: idx >= 0 && idx < siblings.length - 1 ? siblings[idx + 1] : null,\n };\n}\n","import { InfoIcon, AlertTriangleIcon, LightbulbIcon, XCircleIcon, LucideIcon } from \"lucide-react\";\nimport { ReactNode } from \"react\";\n\ntype CalloutType = \"info\" | \"warning\" | \"tip\" | \"danger\";\n\nconst STYLES: Record<CalloutType, { icon: LucideIcon; ring: string }> = {\n info: { icon: InfoIcon, ring: \"ring-blue-500/30 bg-blue-500/5\" },\n warning: { icon: AlertTriangleIcon, ring: \"ring-amber-500/30 bg-amber-500/5\" },\n tip: { icon: LightbulbIcon, ring: \"ring-emerald-500/30 bg-emerald-500/5\" },\n danger: { icon: XCircleIcon, ring: \"ring-rose-500/30 bg-rose-500/5\" },\n};\n\nexport function Callout({ type = \"info\", children }: { type?: CalloutType; children: ReactNode }) {\n const { icon: Icon, ring } = STYLES[type];\n return (\n <div className={`my-4 flex gap-3 rounded-md ring-1 p-3 ${ring}`}>\n <Icon className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <div className=\"text-sm leading-relaxed\">{children}</div>\n </div>\n );\n}\n","import { ReactNode, Children } from \"react\";\n\nexport function Steps({ children }: { children: ReactNode }) {\n const items = Children.toArray(children);\n return (\n <ol className=\"my-4 list-none space-y-3 pl-0\">\n {items.map((child, i) => (\n <li key={i} className=\"flex gap-3\">\n <span className=\"bg-muted text-muted-foreground flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-xs\">\n {i + 1}\n </span>\n <div className=\"flex-1 [&>p:first-child]:mt-0\">{child}</div>\n </li>\n ))}\n </ol>\n );\n}\n\nexport function Step({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n","export function Screenshot({ src, alt, caption }: { src: string; alt?: string; caption?: string }) {\n const url = src.startsWith(\"/\") ? src : `/help-assets/${src}`;\n return (\n <figure className=\"my-4\">\n <img src={url} alt={alt ?? caption ?? \"\"} className=\"rounded-md ring-1 ring-border\" />\n {caption ? <figcaption className=\"text-muted-foreground mt-1 text-xs\">{caption}</figcaption> : null}\n </figure>\n );\n}\n","import { Modules } from \"../../../../core\";\nimport { ReactNode } from \"react\";\n\nexport function EntityRef({ type, children }: { type: string; children: ReactNode }) {\n let Icon: React.ComponentType<{ className?: string }> | null = null;\n try {\n const m = Modules.findByName(type);\n Icon = m.icon ?? null;\n } catch {\n Icon = null;\n }\n return (\n <span className=\"bg-muted text-foreground/90 inline-flex items-center gap-1 rounded px-1.5 py-0.5 align-middle text-xs\">\n {Icon ? <Icon className=\"h-3 w-3\" /> : null}\n {children}\n </span>\n );\n}\n","import { ReactNode } from \"react\";\nexport function KeyBinding({ children }: { children: ReactNode }) {\n return (\n <kbd className=\"bg-muted text-muted-foreground rounded border px-1.5 py-0.5 text-xs font-medium\">{children}</kbd>\n );\n}\n","export function Video({ src, poster }: { src: string; poster?: string }) {\n const url = src.startsWith(\"/\") ? src : `/help-assets/${src}`;\n return (\n <video controls preload=\"metadata\" poster={poster} className=\"my-4 w-full rounded-md ring-1 ring-border\">\n <source src={url} />\n </video>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx"]}
|