boltdocs 3.1.0 → 3.2.2
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/{adapters-DEXNIv3x.mjs → adapters-ByYY44Zy.mjs} +1 -1
- package/dist/{adapters-uGz-UKQa.cjs → adapters-DvmtpdSF.cjs} +1 -1
- package/dist/{banner-DjujkctF.d.ts → banner-BMop1KLF.d.ts} +2 -2
- package/dist/{banner-DdSgCs4G.d.cts → banner-CVD0GugR.d.cts} +2 -2
- package/dist/{cache-CfRTUzWC.cjs → cache-CO4Dy2uQ.cjs} +1 -1
- package/dist/{cache-B0C2i0yP.mjs → cache-Dk53iOo6.mjs} +1 -1
- package/dist/chunk-BFSpntXv.mjs +6 -0
- package/dist/{chunk-Ds5LZdWN.cjs → chunk-D1Md3oWO.cjs} +1 -1
- package/dist/client/index.cjs +219 -172
- package/dist/client/index.d.cts +75 -9
- package/dist/client/index.d.ts +75 -9
- package/dist/client/index.js +119 -73
- package/dist/client/mdx.cjs +1 -1
- package/dist/client/mdx.d.cts +1 -1
- package/dist/client/mdx.d.ts +1 -1
- package/dist/client/mdx.js +1 -1
- package/dist/client/primitives.cjs +7 -7
- package/dist/client/primitives.d.cts +5 -22
- package/dist/client/primitives.d.ts +5 -22
- package/dist/client/primitives.js +4 -4
- package/dist/client/theme/reset.css +31 -4
- package/dist/{shiki-adapter-fS94vy-z.d.mts → config-BpzaPsJj.d.cts} +325 -78
- package/dist/config-CCXp3aXO.mjs +7 -0
- package/dist/{config-BxsogK5A.cjs → config-CMd4XoFq.cjs} +1 -1
- package/dist/config-DlGoEM9D.cjs +7 -0
- package/dist/{shiki-adapter-l2kEP5rn.d.cts → config-xtS0ZkMm.d.mts} +325 -78
- package/dist/{csp-BX06rvdg.cjs → csp-CRp_3U7a.cjs} +1 -1
- package/dist/csp-oTC2ygvF.mjs +6 -0
- package/dist/{docs-layout-DyLDBwS6.js → docs-layout-BdtZ9z6s.js} +9 -28
- package/dist/{docs-layout-D1buSdua.cjs → docs-layout-CFWI15Id.cjs} +69 -88
- package/dist/{doctor-DPDcRKM1.cjs → doctor-BBtmNJE0.cjs} +1 -1
- package/dist/doctor-Bv16QSrI.cjs +7 -0
- package/dist/doctor-DOAbSaiL.mjs +7 -0
- package/dist/{generator-BN75lJOv.cjs → generator-COepVWGi.cjs} +1 -1
- package/dist/{handler-Btd4t_67.mjs → handler-DzQae4eA.mjs} +1 -1
- package/dist/{handler-1LRMYeI4.cjs → handler-XX7cLTqe.cjs} +1 -1
- package/dist/headers-Ddwek8K7.mjs +6 -0
- package/dist/{headers-YpD10rDb.cjs → headers-dg4SDrjY.cjs} +1 -1
- package/dist/{image-5WsgWYTh.js → image-Bz87fCla.js} +1 -1
- package/dist/{image-Hb105Gu6.cjs → image-C4TlpMHn.cjs} +18 -18
- package/dist/link-2PzgTnaP.js +673 -0
- package/dist/{icons-dev-YtDoLUsb.cjs → link-D1Gjkb-2.cjs} +0 -350
- package/dist/{mdx-Bv-pS6-O.js → mdx-BuO6a1f7.js} +195 -40
- package/dist/{mdx-CDUcJmye.cjs → mdx-CD-tSjRG.cjs} +234 -73
- package/dist/{meta-loader-CTB62-Mo.cjs → meta-loader-Dq1zcFnh.cjs} +1 -1
- package/dist/node/cache.cjs +1 -1
- package/dist/node/cache.d.cts +2 -1
- package/dist/node/cache.d.mts +2 -1
- package/dist/node/cache.mjs +1 -1
- package/dist/node/cli-entry.cjs +6 -6
- package/dist/node/cli-entry.mjs +9 -9
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +20 -174
- package/dist/node/index.d.mts +18 -175
- package/dist/node/index.mjs +1 -1
- package/dist/node/mdx/shiki-adapter.cjs +1 -1
- package/dist/node/mdx/shiki-adapter.d.cts +49 -1
- package/dist/node/mdx/shiki-adapter.d.mts +49 -1
- package/dist/node/mdx/shiki-adapter.mjs +1 -1
- package/dist/node-B5hu_6qj.cjs +104 -0
- package/dist/node-BXtqM1uH.mjs +6 -0
- package/dist/node-C8725aw7.mjs +104 -0
- package/dist/node-aD1eisrR.cjs +6 -0
- package/dist/{package-_-Oa8-qN.cjs → package-CH2ChQqw.cjs} +1 -1
- package/dist/{package-CoHWTf0N.mjs → package-DSSB8B5L.mjs} +1 -1
- package/dist/{pages-external-CX2uyW95.cjs → pages-external-XkYIs-d5.cjs} +1 -1
- package/dist/parser-DCiEWkSk.cjs +8 -0
- package/dist/parser-qk9FIHJ7.mjs +8 -0
- package/dist/plugin-CX1OZ6jB.cjs +73 -0
- package/dist/plugin-CgfiWaFZ.mjs +73 -0
- package/dist/routes-BW6zsk7Z.mjs +6 -0
- package/dist/routes-BgoIB5wb.cjs +6 -0
- package/dist/{routes-D_S9kjkS.cjs → routes-CORVxc02.cjs} +1 -1
- package/dist/{search-dialog-BpNULmrl.cjs → search-dialog-B1NERUNx.cjs} +101 -55
- package/dist/{search-dialog-BbtxA1uT.cjs → search-dialog-BRFno7HD.cjs} +8 -8
- package/dist/{search-dialog-DC7oXU-5.js → search-dialog-BmxHiKwt.js} +2 -2
- package/dist/{search-dialog-gp9lrJXm.js → search-dialog-D6TvjcuV.js} +1 -1
- package/dist/{search-dialog-PJrFRU5G.js → search-dialog-DFnlx8LO.js} +44 -4
- package/dist/{search-dialog-BIuxGQsg.cjs → search-dialog-DHqwjJuG.cjs} +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/shiki-adapter-CoQ6jyJ4.cjs +6 -0
- package/dist/shiki-adapter-D-aKw7PP.mjs +6 -0
- package/dist/{sidebar-DknLUI1R.d.ts → sidebar-COTaMHR-.d.ts} +349 -41
- package/dist/{sidebar-DH2iPKXM.d.cts → sidebar-CrEdJuHX.d.cts} +349 -41
- package/dist/{types-generator-CYcHkDzZ.cjs → types-generator-BXhv7Ill.cjs} +1 -1
- package/dist/types-generator-bDPvUztF.mjs +26 -0
- package/dist/utils-Crm9oPcV.mjs +7 -0
- package/dist/utils-D6Xtj0FZ.cjs +7 -0
- package/package.json +13 -10
- package/src/shared/types.ts +361 -19
- package/dist/chunk-hT5z_Zn9-DsJawvsz.mjs +0 -6
- package/dist/chunk-hT5z_Zn9-SKz6VFXu.cjs +0 -6
- package/dist/config-DAgpZyh6.mjs +0 -7
- package/dist/config-DrRQYDCI.cjs +0 -7
- package/dist/csp-z2D0FuRW.mjs +0 -6
- package/dist/doctor-BadGEhXv.cjs +0 -7
- package/dist/doctor-vDsUDgqp.mjs +0 -7
- package/dist/escape-string-regexp-AG8q1e25-9Un9V90q.mjs +0 -6
- package/dist/escape-string-regexp-AG8q1e25-bJ9Ixe7c.cjs +0 -6
- package/dist/esm-shims-DSep1HcR.mjs +0 -6
- package/dist/headers-CL0pMcwm.mjs +0 -6
- package/dist/icons-dev-CHZOwhQA.js +0 -921
- package/dist/lib-BR0SoanK-CLswltLI.cjs +0 -6
- package/dist/lib-BR0SoanK-DcYeDrE6.mjs +0 -6
- package/dist/lib-DPoCz1YB-CLYXwKST.cjs +0 -6
- package/dist/lib-DPoCz1YB-CyGOqgSO.mjs +0 -6
- package/dist/micromark-util-character-5KqJafVT-C6gnc770.cjs +0 -6
- package/dist/micromark-util-character-5KqJafVT-DkPKsbgn.mjs +0 -6
- package/dist/node-BDBv8CT6.mjs +0 -104
- package/dist/node-DFV_FV0y.mjs +0 -6
- package/dist/node-DqsP7kXz.cjs +0 -6
- package/dist/node-yFmAavND.cjs +0 -104
- package/dist/parser-BZJgAa9E.mjs +0 -8
- package/dist/parser-DlanzESE.cjs +0 -8
- package/dist/plugin-BVuwx5D9.cjs +0 -73
- package/dist/plugin-BoxD91Yh.mjs +0 -73
- package/dist/rehype-slug--ZOxZ-_K-BNeYC4aT.cjs +0 -6
- package/dist/rehype-slug--ZOxZ-_K-CjIQEJCs.mjs +0 -6
- package/dist/remark-frontmatter-wFYRLcCt-CutW0gA3.mjs +0 -8
- package/dist/remark-frontmatter-wFYRLcCt-ENB5qG3y.cjs +0 -8
- package/dist/remark-gfm-B8TMkQbX-CjUJo8Rd.cjs +0 -21
- package/dist/remark-gfm-B8TMkQbX-Ctu0VV1_.mjs +0 -21
- package/dist/rolldown-runtime-fkIsjY3S.mjs +0 -6
- package/dist/rollup-DMqoG11U-CKcJ37u_.mjs +0 -59
- package/dist/rollup-DMqoG11U-DKdxvZIj.cjs +0 -59
- package/dist/routes-BN2XbGcT.mjs +0 -6
- package/dist/routes-Cnq8xTCv.cjs +0 -6
- package/dist/shiki-adapter-CGTmrR6S.cjs +0 -6
- package/dist/shiki-adapter-CK3llqw2.mjs +0 -6
- package/dist/types-generator-DVOnRVKU.mjs +0 -26
- package/dist/utils-B3xYMrpK.mjs +0 -7
- package/dist/utils-Bz1tG9Dg.cjs +0 -7
- /package/dist/{errors-C0Hx15Ag.mjs → errors-0zGHRLue.mjs} +0 -0
- /package/dist/{errors-Dx6JHoKE.cjs → errors-vKw8CkiX.cjs} +0 -0
- /package/dist/{index-DJYJzs-Z.d.mts → index-1KsTDq4o.d.mts} +0 -0
- /package/dist/{meta-loader-Bq-MjTXB.mjs → meta-loader-C4Hu9RN9.mjs} +0 -0
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { a as CodeBlockGroup, i as CodeBlockContent, l as useTheme, n as Tooltip, o as CodeBlockHeader, r as CodeBlock$1, s as Heading$1, t as Image$1 } from "./image-
|
|
6
|
+
import { B as useConfig, D as Lightbulb, T as Info, c as AlertCircle, d as Check, g as Copy, l as AlertTriangle, r as cn, t as Link } from "./link-2PzgTnaP.js";
|
|
7
|
+
import { a as CodeBlockGroup, i as CodeBlockContent, l as useTheme, n as Tooltip, o as CodeBlockHeader, r as CodeBlock$1, s as Heading$1, t as Image$1 } from "./image-Bz87fCla.js";
|
|
8
8
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
9
|
-
import {
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { Button } from "react-aria-components";
|
|
11
11
|
|
|
12
12
|
//#region src/client/components/mdx/field.tsx
|
|
@@ -212,7 +212,7 @@ function Callout({ children, className = "", variant = "note", title, ...props }
|
|
|
212
212
|
...props,
|
|
213
213
|
children: [/* @__PURE__ */ jsx("div", {
|
|
214
214
|
className: cn("shrink-0 pt-0.5", styles.iconColor),
|
|
215
|
-
children: /* @__PURE__ */ jsx(Icon, { className: "w-5 h-5 stroke-
|
|
215
|
+
children: /* @__PURE__ */ jsx(Icon, { className: "w-5 h-5 stroke-2" })
|
|
216
216
|
}), /* @__PURE__ */ jsxs("div", {
|
|
217
217
|
className: "flex-1 text-[0.875rem] leading-[1.6]",
|
|
218
218
|
children: [/* @__PURE__ */ jsx("div", {
|
|
@@ -252,32 +252,13 @@ const copyToClipboard = async (text) => {
|
|
|
252
252
|
|
|
253
253
|
//#endregion
|
|
254
254
|
//#region src/client/components/mdx/use-code-block.ts
|
|
255
|
-
const langIconMap = {
|
|
256
|
-
ts: TypeScript,
|
|
257
|
-
tsx: React$1,
|
|
258
|
-
js: JavaScript,
|
|
259
|
-
jsx: React$1,
|
|
260
|
-
json: Json,
|
|
261
|
-
css: Css,
|
|
262
|
-
html: BracketsOrange,
|
|
263
|
-
md: Markdown,
|
|
264
|
-
mdx: Markdown,
|
|
265
|
-
bash: Shell,
|
|
266
|
-
sh: Shell,
|
|
267
|
-
yaml: Yaml,
|
|
268
|
-
yml: Yaml,
|
|
269
|
-
rs: Rust,
|
|
270
|
-
rust: Rust,
|
|
271
|
-
toml: BracketsRed,
|
|
272
|
-
csv: Csv
|
|
273
|
-
};
|
|
274
255
|
function useCodeBlock(props) {
|
|
275
256
|
const [copied, setCopied] = useState(false);
|
|
276
257
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
277
258
|
const [isExpandable, setIsExpandable] = useState(false);
|
|
259
|
+
const [rated, setRated] = useState(null);
|
|
278
260
|
const preRef = useRef(null);
|
|
279
261
|
const timerRef = useRef(null);
|
|
280
|
-
const [rated, setRated] = useState(null);
|
|
281
262
|
const customConfig = useConfig().integrations?.feedback?.custom;
|
|
282
263
|
const showCodeBlockFeedback = !!(customConfig?.enabled && !props.plain);
|
|
283
264
|
const lang = props.lang || props["data-lang"] || "";
|
|
@@ -330,7 +311,6 @@ function useCodeBlock(props) {
|
|
|
330
311
|
const lines = (preRef.current?.textContent ?? "").trim().split("\n").length;
|
|
331
312
|
setIsExpandable(lines > 6);
|
|
332
313
|
}, [props.children, props.highlightedHtml]);
|
|
333
|
-
const LangIcon = langIconMap[lang] || File;
|
|
334
314
|
return {
|
|
335
315
|
copied,
|
|
336
316
|
isExpanded,
|
|
@@ -345,8 +325,7 @@ function useCodeBlock(props) {
|
|
|
345
325
|
lang,
|
|
346
326
|
showCodeBlockFeedback,
|
|
347
327
|
rated,
|
|
348
|
-
handleRate
|
|
349
|
-
LangIcon
|
|
328
|
+
handleRate
|
|
350
329
|
};
|
|
351
330
|
}
|
|
352
331
|
|
|
@@ -369,8 +348,8 @@ const CodeBlockFeedback = ({ rated, onRate }) => {
|
|
|
369
348
|
children: [/* @__PURE__ */ jsx(Tooltip, {
|
|
370
349
|
content: rated === "up" ? "Helpful!" : "This code is helpful",
|
|
371
350
|
children: /* @__PURE__ */ jsx(Button, {
|
|
372
|
-
onPress: () => onRate("up"),
|
|
373
|
-
|
|
351
|
+
onPress: (() => onRate("up")),
|
|
352
|
+
isDisabled: rated !== null,
|
|
374
353
|
className: cn("grid place-items-center size-8 bg-transparent outline-none cursor-pointer transition-all duration-200 hover:scale-110 active:scale-95 [&>svg]:size-4 [&>svg]:stroke-2 z-10", rated === "up" ? "text-emerald-500 dark:text-emerald-400" : rated === "down" ? "opacity-30 cursor-not-allowed text-muted" : "text-muted hover:text-body"),
|
|
375
354
|
"aria-label": "Mark as helpful",
|
|
376
355
|
children: /* @__PURE__ */ jsx("svg", {
|
|
@@ -387,8 +366,8 @@ const CodeBlockFeedback = ({ rated, onRate }) => {
|
|
|
387
366
|
}), /* @__PURE__ */ jsx(Tooltip, {
|
|
388
367
|
content: rated === "down" ? "Unhelpful" : "This code is unhelpful",
|
|
389
368
|
children: /* @__PURE__ */ jsx(Button, {
|
|
390
|
-
onPress: () => onRate("down"),
|
|
391
|
-
|
|
369
|
+
onPress: (() => onRate("down")),
|
|
370
|
+
isDisabled: rated !== null,
|
|
392
371
|
className: cn("grid place-items-center size-8 bg-transparent outline-none cursor-pointer transition-all duration-200 hover:scale-110 active:scale-95 [&>svg]:size-4 [&>svg]:stroke-2 z-10", rated === "down" ? "text-rose-500 dark:text-rose-400" : rated === "up" ? "opacity-30 cursor-not-allowed text-muted" : "text-muted hover:text-body"),
|
|
393
372
|
"aria-label": "Mark as unhelpful",
|
|
394
373
|
children: /* @__PURE__ */ jsx("svg", {
|
|
@@ -408,17 +387,14 @@ const CodeBlockFeedback = ({ rated, onRate }) => {
|
|
|
408
387
|
function CodeBlock(props) {
|
|
409
388
|
const { children, hideCopy = false, highlightedHtml, "data-highlighted-html": dataHighlightedHtml, title, "data-title": dataTitle, "data-lang": dataLang, plain = false, lineNumbers, showLineNumbers, wordWrap, "word-wrap": wordWrapHyphen, metastring, ...rest } = props;
|
|
410
389
|
const { className: shikiClassName, ...cleanRest } = rest;
|
|
411
|
-
const { copied, isExpanded, setIsExpanded, isExpandable, preRef, handleCopy, shouldTruncate, isHighlighted, effectiveHighlightedHtml, effectiveTitle, showCodeBlockFeedback, rated, handleRate
|
|
390
|
+
const { copied, isExpanded, setIsExpanded, isExpandable, preRef, handleCopy, shouldTruncate, isHighlighted, effectiveHighlightedHtml, effectiveTitle, showCodeBlockFeedback, rated, handleRate } = useCodeBlock(props);
|
|
412
391
|
return /* @__PURE__ */ jsxs(CodeBlock$1, {
|
|
413
392
|
plain,
|
|
414
393
|
className: props.className,
|
|
415
394
|
children: [(effectiveTitle || !hideCopy) && /* @__PURE__ */ jsxs(CodeBlockHeader, {
|
|
416
395
|
className: cn({ "absolute top-2 left-0 w-full": !effectiveTitle }),
|
|
417
|
-
children: [/* @__PURE__ */ jsx(CodeBlockGroup, { children: effectiveTitle && /* @__PURE__ */
|
|
418
|
-
|
|
419
|
-
className: "opacity-60"
|
|
420
|
-
}), /* @__PURE__ */ jsx("span", { children: effectiveTitle })] }) }), /* @__PURE__ */ jsxs("div", {
|
|
421
|
-
className: "flex items-center gap-1",
|
|
396
|
+
children: [/* @__PURE__ */ jsx(CodeBlockGroup, { children: effectiveTitle && /* @__PURE__ */ jsx("span", { children: effectiveTitle }) }), /* @__PURE__ */ jsxs("div", {
|
|
397
|
+
className: "flex items-center gap-1 bg-(--color-code-bg) pl-2 z-10",
|
|
422
398
|
children: [showCodeBlockFeedback && /* @__PURE__ */ jsx(CodeBlockFeedback, {
|
|
423
399
|
rated,
|
|
424
400
|
onRate: handleRate
|
|
@@ -526,7 +502,7 @@ function Card({ className, title, icon, href, children, ...props }) {
|
|
|
526
502
|
/* @__PURE__ */ jsxs("div", {
|
|
527
503
|
className: "relative z-10 flex items-center gap-3",
|
|
528
504
|
children: [icon && /* @__PURE__ */ jsx("div", {
|
|
529
|
-
className: cn("shrink-0 transition-transform duration-500 group-hover:rotate-
|
|
505
|
+
className: cn("shrink-0 transition-transform duration-500 group-hover:rotate-15 group-hover:scale-110 flex items-center justify-center text-muted group-hover:text-primary-500", "[&>svg]:w-6 [&>svg]:h-6 [&>svg]:stroke-[1.5]"),
|
|
530
506
|
children: icon
|
|
531
507
|
}), title && /* @__PURE__ */ jsx("h3", {
|
|
532
508
|
className: "font-semibold text-base m-0 leading-none text-body",
|
|
@@ -580,6 +556,184 @@ function LastUpdated({ date }) {
|
|
|
580
556
|
});
|
|
581
557
|
}
|
|
582
558
|
|
|
559
|
+
//#endregion
|
|
560
|
+
//#region src/client/components/mdx/timeline.tsx
|
|
561
|
+
const VARIANT_PALETTE = {
|
|
562
|
+
primary: {
|
|
563
|
+
ring: "border-primary-500/70",
|
|
564
|
+
fill: "bg-primary-500",
|
|
565
|
+
badgeBg: "bg-primary-500/10",
|
|
566
|
+
badgeText: "text-primary-600 dark:text-primary-400",
|
|
567
|
+
badgeBorder: "border-primary-500/30"
|
|
568
|
+
},
|
|
569
|
+
success: {
|
|
570
|
+
ring: "border-success-500/70",
|
|
571
|
+
fill: "bg-success-500",
|
|
572
|
+
badgeBg: "bg-success-500/10",
|
|
573
|
+
badgeText: "text-success-500",
|
|
574
|
+
badgeBorder: "border-success-500/30"
|
|
575
|
+
},
|
|
576
|
+
info: {
|
|
577
|
+
ring: "border-info-500/70",
|
|
578
|
+
fill: "bg-info-500",
|
|
579
|
+
badgeBg: "bg-info-500/10",
|
|
580
|
+
badgeText: "text-info-500",
|
|
581
|
+
badgeBorder: "border-info-500/30"
|
|
582
|
+
},
|
|
583
|
+
warning: {
|
|
584
|
+
ring: "border-warning-500/70",
|
|
585
|
+
fill: "bg-warning-500",
|
|
586
|
+
badgeBg: "bg-warning-500/10",
|
|
587
|
+
badgeText: "text-warning-500",
|
|
588
|
+
badgeBorder: "border-warning-500/30"
|
|
589
|
+
},
|
|
590
|
+
danger: {
|
|
591
|
+
ring: "border-danger-500/70",
|
|
592
|
+
fill: "bg-danger-500",
|
|
593
|
+
badgeBg: "bg-danger-500/10",
|
|
594
|
+
badgeText: "text-danger-500",
|
|
595
|
+
badgeBorder: "border-danger-500/30"
|
|
596
|
+
},
|
|
597
|
+
major: {
|
|
598
|
+
ring: "",
|
|
599
|
+
fill: "",
|
|
600
|
+
badgeBg: "",
|
|
601
|
+
badgeText: "",
|
|
602
|
+
badgeBorder: ""
|
|
603
|
+
},
|
|
604
|
+
minor: {
|
|
605
|
+
ring: "",
|
|
606
|
+
fill: "",
|
|
607
|
+
badgeBg: "",
|
|
608
|
+
badgeText: "",
|
|
609
|
+
badgeBorder: ""
|
|
610
|
+
},
|
|
611
|
+
patch: {
|
|
612
|
+
ring: "",
|
|
613
|
+
fill: "",
|
|
614
|
+
badgeBg: "",
|
|
615
|
+
badgeText: "",
|
|
616
|
+
badgeBorder: ""
|
|
617
|
+
},
|
|
618
|
+
new: {
|
|
619
|
+
ring: "",
|
|
620
|
+
fill: "",
|
|
621
|
+
badgeBg: "",
|
|
622
|
+
badgeText: "",
|
|
623
|
+
badgeBorder: ""
|
|
624
|
+
},
|
|
625
|
+
deprecated: {
|
|
626
|
+
ring: "",
|
|
627
|
+
fill: "",
|
|
628
|
+
badgeBg: "",
|
|
629
|
+
badgeText: "",
|
|
630
|
+
badgeBorder: ""
|
|
631
|
+
},
|
|
632
|
+
breaking: {
|
|
633
|
+
ring: "",
|
|
634
|
+
fill: "",
|
|
635
|
+
badgeBg: "",
|
|
636
|
+
badgeText: "",
|
|
637
|
+
badgeBorder: ""
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
Object.assign(VARIANT_PALETTE, {
|
|
641
|
+
major: VARIANT_PALETTE.primary,
|
|
642
|
+
minor: VARIANT_PALETTE.success,
|
|
643
|
+
patch: VARIANT_PALETTE.info,
|
|
644
|
+
new: VARIANT_PALETTE.primary,
|
|
645
|
+
deprecated: VARIANT_PALETTE.warning,
|
|
646
|
+
breaking: VARIANT_PALETTE.danger
|
|
647
|
+
});
|
|
648
|
+
function normalizeBadge(badge) {
|
|
649
|
+
if (!badge) return null;
|
|
650
|
+
if (typeof badge === "string") return {
|
|
651
|
+
text: badge,
|
|
652
|
+
variant: "primary"
|
|
653
|
+
};
|
|
654
|
+
return {
|
|
655
|
+
text: badge.text,
|
|
656
|
+
variant: badge.variant ?? "primary"
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
function formatDate(date, locale) {
|
|
660
|
+
if (date === void 0 || date === null || date === "") return null;
|
|
661
|
+
const d = date instanceof Date ? date : new Date(date);
|
|
662
|
+
if (Number.isNaN(d.getTime())) return null;
|
|
663
|
+
return d.toLocaleDateString(locale ?? "en-US", {
|
|
664
|
+
year: "numeric",
|
|
665
|
+
month: "short",
|
|
666
|
+
day: "numeric"
|
|
667
|
+
});
|
|
668
|
+
}
|
|
669
|
+
const VARIANT_DEFAULT_ICON = {
|
|
670
|
+
success: Check,
|
|
671
|
+
info: Info,
|
|
672
|
+
warning: AlertTriangle,
|
|
673
|
+
danger: AlertCircle
|
|
674
|
+
};
|
|
675
|
+
function TimelineRoot({ children, className, compact = false, ...props }) {
|
|
676
|
+
return /* @__PURE__ */ jsxs("ol", {
|
|
677
|
+
role: "list",
|
|
678
|
+
className: cn("relative my-8 ms-3", compact ? "space-y-3" : "space-y-7", className),
|
|
679
|
+
...props,
|
|
680
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
681
|
+
"aria-hidden": "true",
|
|
682
|
+
className: "pointer-events-none absolute top-3 bottom-3 start-[5.5px] w-px bg-subtle"
|
|
683
|
+
}), children]
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
function TimelineItem({ date, title, badge, icon, variant = "primary", locale, className, children, ...props }) {
|
|
687
|
+
const palette = VARIANT_PALETTE[variant] ?? VARIANT_PALETTE.primary;
|
|
688
|
+
const formatted = formatDate(date, locale);
|
|
689
|
+
const badgeCfg = normalizeBadge(badge);
|
|
690
|
+
const FallbackIcon = VARIANT_DEFAULT_ICON[variant];
|
|
691
|
+
const dot = icon ?? (FallbackIcon ? /* @__PURE__ */ jsx(FallbackIcon, {
|
|
692
|
+
size: 12,
|
|
693
|
+
className: "text-white",
|
|
694
|
+
"aria-hidden": "true"
|
|
695
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
696
|
+
"aria-hidden": "true",
|
|
697
|
+
className: cn("w-2 h-2 rounded-full", palette.fill)
|
|
698
|
+
}));
|
|
699
|
+
const ariaLabel = [formatted, typeof title === "string" ? title : null].filter(Boolean).join(" - ") || void 0;
|
|
700
|
+
const a11yProps = ariaLabel ? {
|
|
701
|
+
role: "img",
|
|
702
|
+
"aria-label": ariaLabel
|
|
703
|
+
} : { "aria-hidden": "true" };
|
|
704
|
+
return /* @__PURE__ */ jsxs("li", {
|
|
705
|
+
className: cn("relative ps-8", className),
|
|
706
|
+
...props,
|
|
707
|
+
children: [
|
|
708
|
+
/* @__PURE__ */ jsx("span", {
|
|
709
|
+
...a11yProps,
|
|
710
|
+
className: cn("absolute start-0 top-1 flex items-center justify-center w-3 h-3 rounded-full", "bg-surface border-2 shadow-sm", palette.ring),
|
|
711
|
+
children: dot
|
|
712
|
+
}),
|
|
713
|
+
/* @__PURE__ */ jsxs("div", {
|
|
714
|
+
className: "flex items-center gap-2 flex-wrap mb-1",
|
|
715
|
+
children: [formatted && /* @__PURE__ */ jsx("time", {
|
|
716
|
+
dateTime: date instanceof Date ? date.toISOString() : new Date(date).toISOString(),
|
|
717
|
+
className: "text-[11px] uppercase tracking-wider font-mono tabular-nums text-muted select-none",
|
|
718
|
+
children: formatted
|
|
719
|
+
}), badgeCfg && /* @__PURE__ */ jsx("span", {
|
|
720
|
+
className: cn("inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-bold uppercase tracking-wide border", palette.badgeBg, palette.badgeText, palette.badgeBorder),
|
|
721
|
+
children: badgeCfg.text
|
|
722
|
+
})]
|
|
723
|
+
}),
|
|
724
|
+
/* @__PURE__ */ jsx("h3", {
|
|
725
|
+
className: "text-base font-semibold text-body m-0 leading-snug",
|
|
726
|
+
children: title
|
|
727
|
+
}),
|
|
728
|
+
children && /* @__PURE__ */ jsx("div", {
|
|
729
|
+
className: "mt-2 text-[0.9rem] leading-[1.6] text-paragraph prose prose-neutral dark:prose-invert max-w-none [&>p]:m-0 [&>p+p]:mt-2 [&_a]:text-primary-500 [&_a]:no-underline hover:[&_a]:underline",
|
|
730
|
+
children
|
|
731
|
+
})
|
|
732
|
+
]
|
|
733
|
+
});
|
|
734
|
+
}
|
|
735
|
+
const Timeline = Object.assign(TimelineRoot, { Item: TimelineItem });
|
|
736
|
+
|
|
583
737
|
//#endregion
|
|
584
738
|
//#region src/client/components/mdx/index.ts
|
|
585
739
|
const mdx_components_default = {
|
|
@@ -591,8 +745,9 @@ const mdx_components_default = {
|
|
|
591
745
|
Field,
|
|
592
746
|
Callout,
|
|
593
747
|
Card,
|
|
594
|
-
Cards
|
|
748
|
+
Cards,
|
|
749
|
+
Timeline
|
|
595
750
|
};
|
|
596
751
|
|
|
597
752
|
//#endregion
|
|
598
|
-
export {
|
|
753
|
+
export { copyToClipboard as i, Timeline as n, useCodeBlock as r, mdx_components_default as t };
|