boltdocs 3.0.2 → 3.2.1
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/README.md +2 -18
- package/dist/{adapters-DEXNIv3x.mjs → adapters-ByYY44Zy.mjs} +1 -1
- package/dist/{adapters-C5AWWGfb.cjs → adapters-DvmtpdSF.cjs} +1 -1
- package/dist/{banner-CfdalYLL.d.ts → banner-BMop1KLF.d.ts} +2 -2
- package/dist/{banner-DNSkgUsO.d.cts → banner-CVD0GugR.d.cts} +2 -2
- package/dist/cache-CO4Dy2uQ.cjs +6 -0
- package/dist/cache-Dk53iOo6.mjs +6 -0
- package/dist/chunk-BFSpntXv.mjs +6 -0
- package/dist/{chunk-Ds5LZdWN.cjs → chunk-D1Md3oWO.cjs} +1 -1
- package/dist/client/index.cjs +433 -272
- package/dist/client/index.d.cts +129 -18
- package/dist/client/index.d.ts +129 -18
- package/dist/client/index.js +337 -178
- 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/neutral.css +1 -3
- package/dist/client/theme/reset.css +31 -4
- package/dist/config-BpzaPsJj.d.cts +781 -0
- package/dist/config-CCXp3aXO.mjs +7 -0
- package/dist/{config-JGkMJoJQ.cjs → config-CMd4XoFq.cjs} +1 -1
- package/dist/config-DlGoEM9D.cjs +7 -0
- package/dist/config-xtS0ZkMm.d.mts +781 -0
- package/dist/{csp-CBysWlAf.cjs → csp-CRp_3U7a.cjs} +1 -1
- package/dist/csp-oTC2ygvF.mjs +6 -0
- package/dist/{docs-layout-6FQ8__ok.js → docs-layout-BdtZ9z6s.js} +9 -28
- package/dist/{docs-layout-3TpAt6MB.cjs → docs-layout-CFWI15Id.cjs} +69 -88
- package/dist/{doctor-BR1B2Mkz.cjs → doctor-BBtmNJE0.cjs} +1 -1
- package/dist/doctor-Bv16QSrI.cjs +7 -0
- package/dist/doctor-DOAbSaiL.mjs +7 -0
- package/dist/{generator-DtUU3Cfk.cjs → generator-COepVWGi.cjs} +1 -1
- package/dist/{handler-Btd4t_67.mjs → handler-DzQae4eA.mjs} +1 -1
- package/dist/{handler-Dzf4dSnV.cjs → handler-XX7cLTqe.cjs} +1 -1
- package/dist/headers-Ddwek8K7.mjs +6 -0
- package/dist/{headers-BXKxiPUv.cjs → headers-dg4SDrjY.cjs} +1 -1
- package/dist/{image-C9md50h2.js → image-Bz87fCla.js} +2 -2
- package/dist/{image-CR6UlaI5.cjs → image-C4TlpMHn.cjs} +18 -18
- package/dist/link-2PzgTnaP.js +673 -0
- package/dist/{icons-dev-BryEFkJu.cjs → link-D1Gjkb-2.cjs} +8 -353
- package/dist/{mdx-DhyMkc35.js → mdx-BuO6a1f7.js} +199 -40
- package/dist/{mdx-DJBg5DuL.cjs → mdx-CD-tSjRG.cjs} +237 -72
- package/dist/{meta-loader-C9MKjAs0.cjs → meta-loader-Dq1zcFnh.cjs} +1 -1
- package/dist/node/cache.cjs +6 -0
- package/dist/node/cache.d.cts +84 -0
- package/dist/node/cache.d.mts +84 -0
- package/dist/node/cache.mjs +6 -0
- 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 +27 -638
- package/dist/node/index.d.mts +27 -640
- package/dist/node/index.mjs +1 -1
- package/dist/node/mdx/shiki-adapter.cjs +6 -0
- package/dist/node/mdx/shiki-adapter.d.cts +51 -0
- package/dist/node/mdx/shiki-adapter.d.mts +51 -0
- package/dist/node/mdx/shiki-adapter.mjs +6 -0
- package/dist/node-BXtqM1uH.mjs +6 -0
- package/dist/node-BlVk4EVg.cjs +104 -0
- package/dist/node-DOf4zhWc.mjs +104 -0
- package/dist/node-aD1eisrR.cjs +6 -0
- package/dist/{package-CEDhVAfO.cjs → package-BcISI5-P.cjs} +1 -1
- package/dist/{package-_dCCKVvG.mjs → package-CCYEAYeA.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-C95kvu6h.mjs +73 -0
- package/dist/plugin-DM3u2bVj.cjs +73 -0
- package/dist/routes-BW6zsk7Z.mjs +6 -0
- package/dist/routes-BgoIB5wb.cjs +6 -0
- package/dist/{routes-BajCwrvX.cjs → routes-CORVxc02.cjs} +1 -1
- package/dist/{search-dialog-D4rplZMv.cjs → search-dialog-B1NERUNx.cjs} +101 -55
- package/dist/{search-dialog-Cx7aGW3U.cjs → search-dialog-BRFno7HD.cjs} +8 -8
- package/dist/{search-dialog-DDopgbKM.js → search-dialog-BmxHiKwt.js} +2 -2
- package/dist/{search-dialog-BNdRV60O.js → search-dialog-D6TvjcuV.js} +1 -1
- package/dist/{search-dialog-DaeSPvEo.js → search-dialog-DFnlx8LO.js} +44 -4
- package/dist/{search-dialog-CW1f6dn6.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-COTaMHR-.d.ts +1100 -0
- package/dist/sidebar-CrEdJuHX.d.cts +1100 -0
- 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 +26 -12
- package/src/shared/types.ts +532 -23
- package/dist/cache-DETwlACe.cjs +0 -6
- package/dist/cache-SF59enb3.mjs +0 -6
- package/dist/config-B5uVv5q4.cjs +0 -7
- package/dist/config-D3_zDkHh.mjs +0 -7
- package/dist/csp-gaZ51xzq.mjs +0 -6
- package/dist/doctor-3MheVMwd.mjs +0 -7
- package/dist/doctor-DQxLM202.cjs +0 -7
- package/dist/headers-CXyf0auY.mjs +0 -6
- package/dist/icons-dev-kJyGWNeg.js +0 -916
- package/dist/node-B9JSyEIU.mjs +0 -105
- package/dist/node-Cedquois.cjs +0 -105
- package/dist/parser-CNIPHx4s.cjs +0 -8
- package/dist/parser-D0QHIQsi.mjs +0 -8
- package/dist/plugin-WYNORxp1.cjs +0 -68
- package/dist/plugin-YWNVRpws.mjs +0 -68
- package/dist/rolldown-runtime-fkIsjY3S.mjs +0 -6
- package/dist/routes-CyrnmVuG.mjs +0 -6
- package/dist/routes-D6Tuu7Fs.cjs +0 -6
- package/dist/shiki-adapter-CGTmrR6S.cjs +0 -6
- package/dist/shiki-adapter-CXEGRnjr.mjs +0 -6
- package/dist/shiki-adapter-Mr8_oT_9.cjs +0 -6
- package/dist/sidebar-7gIifpBX.d.cts +0 -615
- package/dist/sidebar-BAKgJ-Er.d.ts +0 -615
- 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-CdJv4ocW.d.mts → index-1KsTDq4o.d.mts} +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
|
|
@@ -104,6 +104,10 @@ const Typographics = {
|
|
|
104
104
|
className: cn("bg-primary-500/10 text-primary-500 font-semibold px-1.5 py-0.5 rounded-md", className),
|
|
105
105
|
...props
|
|
106
106
|
}),
|
|
107
|
+
code: ({ className, ...props }) => /* @__PURE__ */ jsx("code", {
|
|
108
|
+
className: cn("bg-code-bg text-code-text rounded-md px-1.5 py-0.5 text-[0.875em] font-mono font-medium", className),
|
|
109
|
+
...props
|
|
110
|
+
}),
|
|
107
111
|
blockquote: ({ className, ...props }) => /* @__PURE__ */ jsx("blockquote", {
|
|
108
112
|
className: cn("border-l-4 border-primary-500 bg-soft/30 pl-4 py-2 my-6 italic text-muted rounded-r-lg", className),
|
|
109
113
|
...props
|
|
@@ -208,7 +212,7 @@ function Callout({ children, className = "", variant = "note", title, ...props }
|
|
|
208
212
|
...props,
|
|
209
213
|
children: [/* @__PURE__ */ jsx("div", {
|
|
210
214
|
className: cn("shrink-0 pt-0.5", styles.iconColor),
|
|
211
|
-
children: /* @__PURE__ */ jsx(Icon, { className: "w-5 h-5 stroke-
|
|
215
|
+
children: /* @__PURE__ */ jsx(Icon, { className: "w-5 h-5 stroke-2" })
|
|
212
216
|
}), /* @__PURE__ */ jsxs("div", {
|
|
213
217
|
className: "flex-1 text-[0.875rem] leading-[1.6]",
|
|
214
218
|
children: [/* @__PURE__ */ jsx("div", {
|
|
@@ -248,32 +252,13 @@ const copyToClipboard = async (text) => {
|
|
|
248
252
|
|
|
249
253
|
//#endregion
|
|
250
254
|
//#region src/client/components/mdx/use-code-block.ts
|
|
251
|
-
const langIconMap = {
|
|
252
|
-
ts: TypeScript,
|
|
253
|
-
tsx: React$1,
|
|
254
|
-
js: JavaScript,
|
|
255
|
-
jsx: React$1,
|
|
256
|
-
json: Json,
|
|
257
|
-
css: Css,
|
|
258
|
-
html: BracketsOrange,
|
|
259
|
-
md: Markdown,
|
|
260
|
-
mdx: Markdown,
|
|
261
|
-
bash: Shell,
|
|
262
|
-
sh: Shell,
|
|
263
|
-
yaml: Yaml,
|
|
264
|
-
yml: Yaml,
|
|
265
|
-
rs: Rust,
|
|
266
|
-
rust: Rust,
|
|
267
|
-
toml: BracketsRed,
|
|
268
|
-
csv: Csv
|
|
269
|
-
};
|
|
270
255
|
function useCodeBlock(props) {
|
|
271
256
|
const [copied, setCopied] = useState(false);
|
|
272
257
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
273
258
|
const [isExpandable, setIsExpandable] = useState(false);
|
|
259
|
+
const [rated, setRated] = useState(null);
|
|
274
260
|
const preRef = useRef(null);
|
|
275
261
|
const timerRef = useRef(null);
|
|
276
|
-
const [rated, setRated] = useState(null);
|
|
277
262
|
const customConfig = useConfig().integrations?.feedback?.custom;
|
|
278
263
|
const showCodeBlockFeedback = !!(customConfig?.enabled && !props.plain);
|
|
279
264
|
const lang = props.lang || props["data-lang"] || "";
|
|
@@ -326,7 +311,6 @@ function useCodeBlock(props) {
|
|
|
326
311
|
const lines = (preRef.current?.textContent ?? "").trim().split("\n").length;
|
|
327
312
|
setIsExpandable(lines > 6);
|
|
328
313
|
}, [props.children, props.highlightedHtml]);
|
|
329
|
-
const LangIcon = langIconMap[lang] || File;
|
|
330
314
|
return {
|
|
331
315
|
copied,
|
|
332
316
|
isExpanded,
|
|
@@ -341,8 +325,7 @@ function useCodeBlock(props) {
|
|
|
341
325
|
lang,
|
|
342
326
|
showCodeBlockFeedback,
|
|
343
327
|
rated,
|
|
344
|
-
handleRate
|
|
345
|
-
LangIcon
|
|
328
|
+
handleRate
|
|
346
329
|
};
|
|
347
330
|
}
|
|
348
331
|
|
|
@@ -365,8 +348,8 @@ const CodeBlockFeedback = ({ rated, onRate }) => {
|
|
|
365
348
|
children: [/* @__PURE__ */ jsx(Tooltip, {
|
|
366
349
|
content: rated === "up" ? "Helpful!" : "This code is helpful",
|
|
367
350
|
children: /* @__PURE__ */ jsx(Button, {
|
|
368
|
-
onPress: () => onRate("up"),
|
|
369
|
-
|
|
351
|
+
onPress: (() => onRate("up")),
|
|
352
|
+
isDisabled: rated !== null,
|
|
370
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"),
|
|
371
354
|
"aria-label": "Mark as helpful",
|
|
372
355
|
children: /* @__PURE__ */ jsx("svg", {
|
|
@@ -383,8 +366,8 @@ const CodeBlockFeedback = ({ rated, onRate }) => {
|
|
|
383
366
|
}), /* @__PURE__ */ jsx(Tooltip, {
|
|
384
367
|
content: rated === "down" ? "Unhelpful" : "This code is unhelpful",
|
|
385
368
|
children: /* @__PURE__ */ jsx(Button, {
|
|
386
|
-
onPress: () => onRate("down"),
|
|
387
|
-
|
|
369
|
+
onPress: (() => onRate("down")),
|
|
370
|
+
isDisabled: rated !== null,
|
|
388
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"),
|
|
389
372
|
"aria-label": "Mark as unhelpful",
|
|
390
373
|
children: /* @__PURE__ */ jsx("svg", {
|
|
@@ -404,17 +387,14 @@ const CodeBlockFeedback = ({ rated, onRate }) => {
|
|
|
404
387
|
function CodeBlock(props) {
|
|
405
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;
|
|
406
389
|
const { className: shikiClassName, ...cleanRest } = rest;
|
|
407
|
-
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);
|
|
408
391
|
return /* @__PURE__ */ jsxs(CodeBlock$1, {
|
|
409
392
|
plain,
|
|
410
393
|
className: props.className,
|
|
411
394
|
children: [(effectiveTitle || !hideCopy) && /* @__PURE__ */ jsxs(CodeBlockHeader, {
|
|
412
395
|
className: cn({ "absolute top-2 left-0 w-full": !effectiveTitle }),
|
|
413
|
-
children: [/* @__PURE__ */ jsx(CodeBlockGroup, { children: effectiveTitle && /* @__PURE__ */
|
|
414
|
-
|
|
415
|
-
className: "opacity-60"
|
|
416
|
-
}), /* @__PURE__ */ jsx("span", { children: effectiveTitle })] }) }), /* @__PURE__ */ jsxs("div", {
|
|
417
|
-
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",
|
|
418
398
|
children: [showCodeBlockFeedback && /* @__PURE__ */ jsx(CodeBlockFeedback, {
|
|
419
399
|
rated,
|
|
420
400
|
onRate: handleRate
|
|
@@ -522,7 +502,7 @@ function Card({ className, title, icon, href, children, ...props }) {
|
|
|
522
502
|
/* @__PURE__ */ jsxs("div", {
|
|
523
503
|
className: "relative z-10 flex items-center gap-3",
|
|
524
504
|
children: [icon && /* @__PURE__ */ jsx("div", {
|
|
525
|
-
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]"),
|
|
526
506
|
children: icon
|
|
527
507
|
}), title && /* @__PURE__ */ jsx("h3", {
|
|
528
508
|
className: "font-semibold text-base m-0 leading-none text-body",
|
|
@@ -576,6 +556,184 @@ function LastUpdated({ date }) {
|
|
|
576
556
|
});
|
|
577
557
|
}
|
|
578
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
|
+
|
|
579
737
|
//#endregion
|
|
580
738
|
//#region src/client/components/mdx/index.ts
|
|
581
739
|
const mdx_components_default = {
|
|
@@ -587,8 +745,9 @@ const mdx_components_default = {
|
|
|
587
745
|
Field,
|
|
588
746
|
Callout,
|
|
589
747
|
Card,
|
|
590
|
-
Cards
|
|
748
|
+
Cards,
|
|
749
|
+
Timeline
|
|
591
750
|
};
|
|
592
751
|
|
|
593
752
|
//#endregion
|
|
594
|
-
export {
|
|
753
|
+
export { copyToClipboard as i, Timeline as n, useCodeBlock as r, mdx_components_default as t };
|