@dust-tt/sparkle 0.4.9 → 0.4.11
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/cjs/index.js +1 -1
- package/dist/esm/components/ContentMessage.d.ts +2 -1
- package/dist/esm/components/ContentMessage.d.ts.map +1 -1
- package/dist/esm/components/ContentMessage.js +8 -5
- package/dist/esm/components/ContentMessage.js.map +1 -1
- package/dist/esm/components/markdown/Markdown.d.ts.map +1 -1
- package/dist/esm/components/markdown/Markdown.js +6 -3
- package/dist/esm/components/markdown/Markdown.js.map +1 -1
- package/dist/esm/components/markdown/utils.d.ts +10 -0
- package/dist/esm/components/markdown/utils.d.ts.map +1 -1
- package/dist/esm/components/markdown/utils.js +34 -0
- package/dist/esm/components/markdown/utils.js.map +1 -1
- package/dist/esm/stories/ContentMessage.stories.d.ts +5 -42
- package/dist/esm/stories/ContentMessage.stories.d.ts.map +1 -1
- package/dist/esm/stories/ContentMessage.stories.js +10 -0
- package/dist/esm/stories/ContentMessage.stories.js.map +1 -1
- package/dist/esm/stories/Markdown.stories.d.ts.map +1 -1
- package/dist/esm/stories/Markdown.stories.js +1 -1
- package/dist/esm/stories/Markdown.stories.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ContentMessage.tsx +27 -11
- package/src/components/markdown/Markdown.tsx +9 -3
- package/src/components/markdown/utils.ts +40 -0
- package/src/stories/ContentMessage.stories.tsx +22 -3
- package/src/stories/Markdown.stories.tsx +21 -1
|
@@ -11,8 +11,9 @@ export interface ContentMessageProps {
|
|
|
11
11
|
size?: ContentMessageSizeType;
|
|
12
12
|
variant?: ContentMessageVariantType;
|
|
13
13
|
icon?: ComponentType;
|
|
14
|
+
action?: React.ReactNode;
|
|
14
15
|
}
|
|
15
|
-
declare function ContentMessage({ title, variant, children, size, className, icon, }: ContentMessageProps): React.JSX.Element;
|
|
16
|
+
declare function ContentMessage({ title, variant, children, size, className, icon, action, }: ContentMessageProps): React.JSX.Element;
|
|
16
17
|
declare function ContentMessageAction(props: ButtonProps): React.JSX.Element;
|
|
17
18
|
export interface ContentMessageInlineProps {
|
|
18
19
|
title?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentMessage.d.ts","sourceRoot":"","sources":["../../../src/components/ContentMessage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAU,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIjE,QAAA,MAAM,wBAAwB,+GAWpB,CAAC;AAEX,KAAK,yBAAyB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,QAAA,MAAM,qBAAqB,6BAA8B,CAAC;AAE1D,KAAK,sBAAsB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiGrE,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,IAAI,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentMessage.d.ts","sourceRoot":"","sources":["../../../src/components/ContentMessage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAU,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIjE,QAAA,MAAM,wBAAwB,+GAWpB,CAAC;AAEX,KAAK,yBAAyB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,QAAA,MAAM,qBAAqB,6BAA8B,CAAC;AAE1D,KAAK,sBAAsB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiGrE,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,iBAAS,cAAc,CAAC,EACtB,KAAK,EACL,OAAgB,EAChB,QAAQ,EACR,IAAW,EACX,SAAc,EACd,IAAI,EACJ,MAAM,GACP,EAAE,mBAAmB,qBAiCrB;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,WAAW,qBAQ/C;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,iBAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,OAAgB,EAChB,QAAQ,EACR,SAAc,EACd,IAAI,GACL,EAAE,yBAAyB,qBA+B3B;AAED,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -100,12 +100,15 @@ var textVariants = cva("s-text-sm", {
|
|
|
100
100
|
},
|
|
101
101
|
});
|
|
102
102
|
function ContentMessage(_a) {
|
|
103
|
-
var title = _a.title, _b = _a.variant, variant = _b === void 0 ? "info" : _b, children = _a.children, _c = _a.size, size = _c === void 0 ? "md" : _c, _d = _a.className, className = _d === void 0 ? "" : _d, icon = _a.icon;
|
|
103
|
+
var title = _a.title, _b = _a.variant, variant = _b === void 0 ? "info" : _b, children = _a.children, _c = _a.size, size = _c === void 0 ? "md" : _c, _d = _a.className, className = _d === void 0 ? "" : _d, icon = _a.icon, action = _a.action;
|
|
104
104
|
return (React.createElement("div", { className: cn(contentMessageVariants({ variant: variant, size: size }), className) },
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
React.createElement("div", { className: cn("s-flex s-gap-3", action ? "s-items-center s-justify-between" : "s-flex-col") },
|
|
106
|
+
React.createElement("div", { className: "s-flex s-flex-col s-gap-1" },
|
|
107
|
+
(icon || title) && (React.createElement("div", { className: "s-flex s-items-center s-gap-1.5" },
|
|
108
|
+
icon && (React.createElement(Icon, { size: "sm", visual: icon, className: iconVariants({ variant: variant }) })),
|
|
109
|
+
title && (React.createElement("div", { className: titleVariants({ variant: variant }) }, title)))),
|
|
110
|
+
children && (React.createElement("div", { className: textVariants({ variant: variant }) }, children))),
|
|
111
|
+
action && React.createElement("div", { className: "s-shrink-0" }, action))));
|
|
109
112
|
}
|
|
110
113
|
function ContentMessageAction(props) {
|
|
111
114
|
return (React.createElement(Button, __assign({ size: "xs", className: cn("s-shrink-0", props.className) }, props)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentMessage.js","sourceRoot":"","sources":["../../../src/components/ContentMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAe,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,IAAM,wBAAwB,GAAG;IAC/B,SAAS;IACT,SAAS;IACT,SAAS;IACT,WAAW;IACX,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;CACD,CAAC;AAIX,IAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAI1D,IAAM,mBAAmB,GAAG;IAC1B,OAAO,EAAE,wDAAwD;IACjE,OAAO,EAAE,8CAA8C;IACvD,OAAO,EAAE,8CAA8C;IACvD,SAAS,EAAE,kDAAkD;IAC7D,IAAI,EAAE,wCAAwC;IAC9C,KAAK,EAAE,0CAA0C;IACjD,IAAI,EAAE,wCAAwC;IAC9C,IAAI,EAAE,wCAAwC;IAC9C,MAAM,EAAE,4CAA4C;IACpD,OAAO,EACL,sEAAsE;CACzE,CAAC;AAEF,IAAM,sBAAsB,GAAG,GAAG,CAChC,qEAAqE,EACrE;IACE,QAAQ,EAAE;QACR,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,YAAY;SACjB;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAC;AAEF,IAAM,4BAA4B,GAAG,GAAG,CACtC,wEAAwE,EACxE;IACE,QAAQ,EAAE;QACR,OAAO,EAAE,mBAAmB;KAC7B;IACD,eAAe,EAAE;QACf,OAAO,EAAE,MAAM;KAChB;CACF,CACF,CAAC;AAEF,IAAM,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE;IACrC,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,4DAA4D;YACrE,OAAO,EAAE,kDAAkD;YAC3D,OAAO,EAAE,kDAAkD;YAC3D,SAAS,EAAE,sDAAsD;YACjE,IAAI,EAAE,4CAA4C;YAClD,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,4CAA4C;YAClD,IAAI,EAAE,4CAA4C;YAClD,MAAM,EAAE,gDAAgD;YACxD,OAAO,EAAE,4DAA4D;SACtE;KACF;CACF,CAAC,CAAC;AAEH,IAAM,aAAa,GAAG,GAAG,CAAC,cAAc,EAAE;IACxC,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,gDAAgD;YACzD,OAAO,EAAE,kDAAkD;YAC3D,OAAO,EAAE,kDAAkD;YAC3D,SAAS,EAAE,sDAAsD;YACjE,IAAI,EAAE,4CAA4C;YAClD,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,4CAA4C;YAClD,IAAI,EAAE,4CAA4C;YAClD,MAAM,EAAE,gDAAgD;YACxD,OAAO,EAAE,gDAAgD;SAC1D;KACF;CACF,CAAC,CAAC;AAEH,IAAM,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE;IACpC,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,4DAA4D;YACrE,OAAO,EAAE,kDAAkD;YAC3D,OAAO,EAAE,kDAAkD;YAC3D,SAAS,EAAE,sDAAsD;YACjE,IAAI,EAAE,4CAA4C;YAClD,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,4CAA4C;YAClD,IAAI,EAAE,4CAA4C;YAClD,MAAM,EAAE,gDAAgD;YACxD,OAAO,EAAE,4DAA4D;SACtE;KACF;CACF,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentMessage.js","sourceRoot":"","sources":["../../../src/components/ContentMessage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/Markdown.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/Markdown.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA2BvE,eAAO,MAAM,qBAAqB;;;;;;;CAOjC,CAAC;AAmBF,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,WAAmB,EACnB,SAA4D,EAC5D,cAAc,EACd,aAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,GAC1B,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B,CAAC,EAAE,UAAU,CAAC;IAC1C,yBAAyB,CAAC,EAAE,aAAa,CAAC;CAC3C,qBA8LA"}
|
|
@@ -15,7 +15,7 @@ import { ParagraphBlock } from "../../components/markdown/ParagraphBlock";
|
|
|
15
15
|
import { PreBlock } from "../../components/markdown/PreBlock";
|
|
16
16
|
import { safeRehypeKatex } from "../../components/markdown/safeRehypeKatex";
|
|
17
17
|
import { TableBlock, TableBodyBlock, TableDataBlock, TableHeadBlock, TableHeaderBlock, } from "../../components/markdown/TableBlock";
|
|
18
|
-
import { sanitizeContent } from "../../components/markdown/utils";
|
|
18
|
+
import { preprocessDollarSigns, sanitizeContent, } from "../../components/markdown/utils";
|
|
19
19
|
import { cn } from "../../lib/utils";
|
|
20
20
|
export var markdownHeaderClasses = {
|
|
21
21
|
h1: "s-heading-2xl",
|
|
@@ -39,7 +39,10 @@ function showUnsupportedDirective() {
|
|
|
39
39
|
}
|
|
40
40
|
export function Markdown(_a) {
|
|
41
41
|
var content = _a.content, _b = _a.isStreaming, isStreaming = _b === void 0 ? false : _b, _c = _a.textColor, textColor = _c === void 0 ? "s-text-foreground dark:s-text-foreground-night" : _c, forcedTextSize = _a.forcedTextSize, _d = _a.isLastMessage, isLastMessage = _d === void 0 ? false : _d, additionalMarkdownComponents = _a.additionalMarkdownComponents, additionalMarkdownPlugins = _a.additionalMarkdownPlugins;
|
|
42
|
-
var processedContent = useMemo(function () {
|
|
42
|
+
var processedContent = useMemo(function () {
|
|
43
|
+
var sanitized = sanitizeContent(content);
|
|
44
|
+
return preprocessDollarSigns(sanitized);
|
|
45
|
+
}, [content]);
|
|
43
46
|
// Note on re-renderings. A lot of effort has been put into preventing rerendering across markdown
|
|
44
47
|
// AST parsing rounds (happening at each token being streamed).
|
|
45
48
|
//
|
|
@@ -96,7 +99,7 @@ export function Markdown(_a) {
|
|
|
96
99
|
var markdownPlugins = useMemo(function () { return __spreadArray(__spreadArray([
|
|
97
100
|
remarkDirective,
|
|
98
101
|
remarkGfm,
|
|
99
|
-
[remarkMath, { singleDollarTextMath:
|
|
102
|
+
[remarkMath, { singleDollarTextMath: true }]
|
|
100
103
|
], __read((additionalMarkdownPlugins || [])), false), [
|
|
101
104
|
showUnsupportedDirective,
|
|
102
105
|
], false); }, [additionalMarkdownPlugins]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../../src/components/markdown/Markdown.tsx"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAG3C,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,MAAM,yCAAyC,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../../src/components/markdown/Markdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
export declare function sanitizeContent(str: string): string;
|
|
3
3
|
export declare function detectLanguage(children: React.ReactNode): any;
|
|
4
|
+
/**
|
|
5
|
+
* Preprocesses content to escape dollar signs that are likely NOT inlione LaTeX math. This helps
|
|
6
|
+
* prevent false positives when enabling single $ math rendering.
|
|
7
|
+
*
|
|
8
|
+
* Patterns that are escaped:
|
|
9
|
+
* 1. Solo dollar signs: `$` (not part of a pair)
|
|
10
|
+
* 1. Currency amounts: $100, $5.99, $1,000, $50k, $2.5M, $1 billion
|
|
11
|
+
* 2. Shell/code variables: $HOME, $PATH, ${variable}
|
|
12
|
+
*/
|
|
13
|
+
export declare function preprocessDollarSigns(content: string): string;
|
|
4
14
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":";AAAA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgCnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,OAMvD"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":";AAAA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgCnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,OAMvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6B7D"}
|
|
@@ -39,4 +39,38 @@ export function detectLanguage(children) {
|
|
|
39
39
|
}
|
|
40
40
|
return "text";
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Preprocesses content to escape dollar signs that are likely NOT inlione LaTeX math. This helps
|
|
44
|
+
* prevent false positives when enabling single $ math rendering.
|
|
45
|
+
*
|
|
46
|
+
* Patterns that are escaped:
|
|
47
|
+
* 1. Solo dollar signs: `$` (not part of a pair)
|
|
48
|
+
* 1. Currency amounts: $100, $5.99, $1,000, $50k, $2.5M, $1 billion
|
|
49
|
+
* 2. Shell/code variables: $HOME, $PATH, ${variable}
|
|
50
|
+
*/
|
|
51
|
+
export function preprocessDollarSigns(content) {
|
|
52
|
+
var processed = content;
|
|
53
|
+
processed = processed
|
|
54
|
+
.split("\n")
|
|
55
|
+
.map(function (line) {
|
|
56
|
+
var _a;
|
|
57
|
+
var unescapedDollarMatches = (_a = line.match(/(?<!\\)\$/g)) !== null && _a !== void 0 ? _a : [];
|
|
58
|
+
// 1. Escape solo dollar signs per line: we ignore math spans crossing newlines.
|
|
59
|
+
if (unescapedDollarMatches.length === 1) {
|
|
60
|
+
return line.replace(/(?<!\\)\$/, "\\$");
|
|
61
|
+
}
|
|
62
|
+
else if (unescapedDollarMatches.length > 1) {
|
|
63
|
+
// 2. Protect currency patterns
|
|
64
|
+
// Matches: $100, $5.99, $1,000.50, $50k, $2.5M, $1 billion, etc.
|
|
65
|
+
line = line.replace(/(?<!\\)\$(\d+(?:,\d{3})*(?:\.\d{1,2})?(?:\s*(?:USD|EUR|CAD|GBP|million|billion|thousand|[kKmMbB]))?)\b/g, "\\$$$1");
|
|
66
|
+
// 3. Protect shell/code variables
|
|
67
|
+
// Matches: $HOME, $PATH, $USER, ${variable}, ${foo.bar}
|
|
68
|
+
line = line.replace(/(?<!\\)\$([A-Z_][A-Z0-9_]*)\b/g, "\\$$$1");
|
|
69
|
+
line = line.replace(/(?<!\\)\$\{([^}]+)\}/g, "\\${$1}");
|
|
70
|
+
}
|
|
71
|
+
return line;
|
|
72
|
+
})
|
|
73
|
+
.join("\n");
|
|
74
|
+
return processed;
|
|
75
|
+
}
|
|
42
76
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,2FAA2F;IAC3F,4BAA4B;IAE5B,0EAA0E;IAC1E,IAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,2DAA2D;IAC3D,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACvB,eAAe,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IACD,qCAAqC;IACrC,IAAI,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,GAAG,IAAI,GAAG,CAAC;IACb,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAyB;;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAA,MAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,0CAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAI,MAAM,CAAC;IACzE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,2FAA2F;IAC3F,4BAA4B;IAE5B,0EAA0E;IAC1E,IAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,2DAA2D;IAC3D,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACvB,eAAe,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IACD,qCAAqC;IACrC,IAAI,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,GAAG,IAAI,GAAG,CAAC;IACb,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAyB;;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAA,MAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,0CAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAI,MAAM,CAAC;IACzE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,IAAI,SAAS,GAAG,OAAO,CAAC;IAExB,SAAS,GAAG,SAAS;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,UAAC,IAAI;;QACR,IAAM,sBAAsB,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mCAAI,EAAE,CAAC;QAC9D,gFAAgF;QAChF,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,+BAA+B;YAC/B,iEAAiE;YACjE,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,yGAAyG,EACzG,QAAQ,CACT,CAAC;YAEF,kCAAkC;YAClC,wDAAwD;YACxD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;YAEhE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,49 +1,12 @@
|
|
|
1
|
-
import type { StoryObj } from "@storybook/react";
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { ContentMessage } from "../index_with_tw_base";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
component: typeof ContentMessage;
|
|
7
|
-
argTypes: {
|
|
8
|
-
title: {
|
|
9
|
-
control: "text";
|
|
10
|
-
description: string;
|
|
11
|
-
};
|
|
12
|
-
children: {
|
|
13
|
-
control: "text";
|
|
14
|
-
description: string;
|
|
15
|
-
};
|
|
16
|
-
variant: {
|
|
17
|
-
options: string[];
|
|
18
|
-
control: {
|
|
19
|
-
type: "select";
|
|
20
|
-
};
|
|
21
|
-
description: string;
|
|
22
|
-
};
|
|
23
|
-
size: {
|
|
24
|
-
options: string[];
|
|
25
|
-
control: {
|
|
26
|
-
type: "select";
|
|
27
|
-
};
|
|
28
|
-
description: string;
|
|
29
|
-
};
|
|
30
|
-
icon: {
|
|
31
|
-
options: string[];
|
|
32
|
-
mapping: {
|
|
33
|
-
readonly none: null;
|
|
34
|
-
readonly InformationCircleIcon: (props: React.SVGProps<SVGSVGElement>) => React.JSX.Element;
|
|
35
|
-
readonly ChatBubbleBottomCenterTextIcon: (props: React.SVGProps<SVGSVGElement>) => React.JSX.Element;
|
|
36
|
-
readonly HeartIcon: (props: React.SVGProps<SVGSVGElement>) => React.JSX.Element;
|
|
37
|
-
};
|
|
38
|
-
control: {
|
|
39
|
-
type: "select";
|
|
40
|
-
};
|
|
41
|
-
description: string;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
4
|
+
type ContentMessageStoryProps = React.ComponentProps<typeof ContentMessage> & {
|
|
5
|
+
showAction?: boolean;
|
|
44
6
|
};
|
|
7
|
+
declare const meta: Meta<ContentMessageStoryProps>;
|
|
45
8
|
export default meta;
|
|
46
|
-
type Story = StoryObj<
|
|
9
|
+
type Story = StoryObj<ContentMessageStoryProps>;
|
|
47
10
|
export declare const Basic: Story;
|
|
48
11
|
export declare const WithIcon: Story;
|
|
49
12
|
export declare const WithList: Story;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentMessage.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/ContentMessage.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ContentMessage.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/ContentMessage.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAEL,cAAc,EAKf,MAAM,uBAAuB,CAAC;AAE/B,KAAK,wBAAwB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,GAAG;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AASF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,wBAAwB,CA4CxC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAEhD,eAAO,MAAM,KAAK,EAAE,KAiBnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAsBtB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAc5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAqC3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAMzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAQlC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAkB7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA0B5B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { __assign, __rest } from "tslib";
|
|
1
2
|
import React from "react";
|
|
2
3
|
import { ChatBubbleBottomCenterTextIcon, ContentMessage, ContentMessageAction, ContentMessageInline, HeartIcon, InformationCircleIcon, } from "../index_with_tw_base";
|
|
3
4
|
var ICONS = {
|
|
@@ -45,14 +46,23 @@ var meta = {
|
|
|
45
46
|
control: { type: "select" },
|
|
46
47
|
description: "Icon to display",
|
|
47
48
|
},
|
|
49
|
+
showAction: {
|
|
50
|
+
control: "boolean",
|
|
51
|
+
description: "Show a right-aligned action button",
|
|
52
|
+
},
|
|
48
53
|
},
|
|
49
54
|
};
|
|
50
55
|
export default meta;
|
|
51
56
|
export var Basic = {
|
|
57
|
+
render: function (_a) {
|
|
58
|
+
var showAction = _a.showAction, args = __rest(_a, ["showAction"]);
|
|
59
|
+
return (React.createElement(ContentMessage, __assign({}, args, { action: showAction ? (React.createElement(ContentMessageAction, { variant: "primary", label: "Action" })) : undefined })));
|
|
60
|
+
},
|
|
52
61
|
args: {
|
|
53
62
|
title: "This is a title",
|
|
54
63
|
children: "This is a message. It can be multiple lines long.",
|
|
55
64
|
size: "md",
|
|
65
|
+
showAction: false,
|
|
56
66
|
},
|
|
57
67
|
};
|
|
58
68
|
export var WithIcon = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentMessage.stories.js","sourceRoot":"","sources":["../../../src/stories/ContentMessage.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentMessage.stories.js","sourceRoot":"","sources":["../../../src/stories/ContentMessage.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Markdown.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CAeuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Markdown.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Markdown.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CAeuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAkWnC,eAAO,MAAM,qBAAqB,EAAE,KAInC,CAAC;AA2EF,eAAO,MAAM,iBAAiB,EAAE,KAI/B,CAAC"}
|
|
@@ -17,7 +17,7 @@ var meta = {
|
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
export default meta;
|
|
20
|
-
var example = "\n# Level 1 Title\n\n## Level 2 Title\n\n### Level 3 Title\n\n#### Level 4 Title\n\n##### Level 5 Title\n\n###### Level 6 Title\n\nGot it. I won\u2019t escape your Markdown.\n\nIf you intended to render a footnote reference like [^4], you can write it directly without backslashes:\n\n- Footnote reference in text: [^4]\n- Footnote definition at the end:\n [^4]: Your footnote content here\n\nThis is a paragraph with **bold** text and *italic* text. This is `code` block:\n```\nBlock\n```\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n\n# Another Level 1 Title\n\nDemo of a list, showcasing our pets of the month:\n- Soupinou\n- Chawarma\n- Chalom\n- Anakine\n- Goose\n\nOrdered list:\n1. Soupinou\n2. Chawarma\n3. Chalom\n\n---\n\n### Demo of a quote below:\n\n> You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the rabbit hole goes.\n\n> You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the rabbit hole goes.\n\nAnother one, a short one:\n> Soupinou fait des miaou miaou.\n\n### Other stuff\n\n~~stuff~~\nlink www.x.com\nfootnote [^1]\n\n* [ ] to do\n* [x] done\n\n### Short Table\n\n| Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) |\n|-------------|-----------------------|----------------------|\n| October 25 | 19 | 14 |\n| October 26 | 17 | 12 |\n| October 27 | 16 | 10 |\n| October 28 | 16 | 9 |\n| October 29 | 17 | 8 |\n| October 30 | 19 | 8 |\n| October 31 | 19 | 10 |\n\n\n### Table\n\n| Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) | Weather Condition | Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) | Weather Condition | Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) | Weather Condition |\n|-------------|-----------------------|----------------------|-------------------------------|-------------|-----------------------|----------------------|-------------------------------|-------------|-----------------------|----------------------|-------------------------------|\n| October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 26 | 17 | 12 | Light showers, overcast | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 27 | 16 | 10 | Overcast | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 28 | 16 | 9 | Increasing cloudiness | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 29 | 17 | 8 | Scattered clouds | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 30 | 19 | 8 | Sunny | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 31 | 19 | 10 | Sunny | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n\n\n\n### Some lateX\n\n$$ \\sigma(z_i) = \\frac{e^{z_{i}}}{\\sum_{j=1}^K e^{z_{j}}} \\ \\ \\ for\\ i=1,2,\\dots,K $$\n\n### This is a CSV:\n\n```csv\nDate,High (\u00B0C),Low (\u00B0C)\nOctober 24,19,12\nOctober 25,20,12\nOctober 26,17,11\nOctober 27,16,10\nOctober 28,17,11\nOctober 29,18,12\nOctober 30,19,11\n```\n\n### Some js code:\n\n```javascript\nimport React from \"react\";\nimport {\n LineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\n\nconst data = [\n { date: \"Oct 24\", high: 19, low: 12 },\n { date: \"Oct 25\", high: 20, low: 12 },\n { date: \"Oct 26\", high: 17, low: 11 },\n { date: \"Oct 27\", high: 16, low: 10 },\n { date: \"Oct 28\", high: 17, low: 11 },\n { date: \"Oct 29\", high: 18, low: 12 },\n { date: \"Oct 30\", high: 19, low: 11 },\n];\n\nfunction renderHeader(latitude, longitude) {\n const container = document.getElementById(\"dashboard-container\");\n if (!container) {\n console.error(\"Dashboard container is missing in the DOM.\");\n return;\n }\n let header = document.getElementById(\"dashboard-header\");\n if (!header) {\n console.log(\"Creating new dashboard header.\");\n header = document.createElement(\"div\");\n header.id = \"dashboard-header\";\n container.prepend(header);\n }\n console.log(\"Updating header content.\");\n const currentTime = new Date().toLocaleString(\"en-US\", {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n weekday: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n header.innerHTML = `\n <div>\n <h2>Local Time</h2>\n <p>${currentTime}</p>\n </div>\n <div>\n <h2>Location</h2>\n <p>Lat: ${latitude.toFixed(2)}, Lon: ${longitude.toFixed(2)}</p>\n </div>\n `;\n}\n```\n\n\n### Some CLI code:\n\n```bash\n# Define variables\nAPI_URL=\"https://api.example.com\"\nLATEST_TAG=\"v1.2.3\"\nUSERNAME=\"user123\"\nENVIRONMENT=\"production\"\n\n# Basic GET with variables\ncurl \"${API_URL}/version/${LATEST_TAG}\"\n\n# POST with JSON payload using variables\ncurl -X POST -H \"Content-Type: application/json\" -d \"{\n \"tag\": \"${LATEST_TAG}\",\n \"environment\": \"${ENVIRONMENT}\",\n \"deployedBy\": \"${USERNAME}\"\n }\" \"${API_URL}/deployments\"\n```\n\n### Some python code:\n\n```python\nimport datetime\nimport pytz\nfrom typing import List, Dict, Union\nimport tkinter as tk\nfrom tkinter import ttk\nimport matplotlib.pyplot as plt\nfrom matplotlib.figure import Figure\nfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAgg\n\n# Data structure similar to the JavaScript example\ndata = [\n {\"date\": \"Oct 24\", \"high\": 19, \"low\": 12},\n {\"date\": \"Oct 25\", \"high\": 20, \"low\": 12},\n {\"date\": \"Oct 26\", \"high\": 17, \"low\": 11},\n {\"date\": \"Oct 27\", \"high\": 16, \"low\": 10},\n {\"date\": \"Oct 28\", \"high\": 17, \"low\": 11},\n {\"date\": \"Oct 29\", \"high\": 18, \"low\": 12},\n {\"date\": \"Oct 30\", \"high\": 19, \"low\": 11},\n]\n\nclass WeatherDashboard:\n def __init__(self, root: tk.Tk):\n self.root = root\n self.root.title(\"Weather Dashboard\")\n\n # Create header frame\n self.header_frame = ttk.Frame(root, padding=\"10\")\n self.header_frame.grid(row=0, column=0, sticky=(tk.W, tk.E))\n\n # Create chart frame\n self.chart_frame = ttk.Frame(root, padding=\"10\")\n self.chart_frame.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))\n\n def render_header(self, latitude: float, longitude: float) -> None:\n \"\"\"\n Render the dashboard header with time and location information\n \"\"\"\n # Clear existing widgets\n for widget in self.header_frame.winfo_children():\n widget.destroy()\n\n # Get current time in local timezone\n current_time = datetime.datetime.now()\n local_tz = datetime.datetime.now(pytz.timezone('UTC')).astimezone().tzinfo\n formatted_time = current_time.strftime('%A, %I:%M:%S %p')\n\n # Create time section\n time_frame = ttk.LabelFrame(self.header_frame, text=\"Local Time\")\n time_frame.grid(row=0, column=0, padx=5, pady=5, sticky=(tk.W))\n ttk.Label(time_frame, text=formatted_time).grid(row=0, column=0, padx=5, pady=2)\n\n # Create location section\n location_frame = ttk.LabelFrame(self.header_frame, text=\"Location\")\n location_frame.grid(row=0, column=1, padx=5, pady=5, sticky=(tk.W))\n ttk.Label(\n location_frame,\n text=f\"Lat: {latitude:.2f}, Lon: {longitude:.2f}\"\n ).grid(row=0, column=0, padx=5, pady=2)\n\n def create_chart(self) -> None:\n \"\"\"\n Create a line chart using matplotlib\n \"\"\"\n # Create figure and axis\n fig = Figure(figsize=(8, 4))\n ax = fig.add_subplot(111)\n\n # Extract data for plotting\n dates = [d['date'] for d in data]\n highs = [d['high'] for d in data]\n lows = [d['low'] for d in data]\n\n # Plot lines\n ax.plot(dates, highs, marker='o', label='High', color='red')\n ax.plot(dates, lows, marker='o', label='Low', color='blue')\n\n # Customize chart\n ax.grid(True)\n ax.set_xlabel('Date')\n ax.set_ylabel('Temperature')\n ax.legend()\n\n # Rotate x-axis labels for better readability\n plt.setp(ax.get_xticklabels(), rotation=45)\n\n # Create canvas and add to frame\n canvas = FigureCanvasTkAgg(fig, master=self.chart_frame)\n canvas.draw()\n canvas.get_tk_widget().grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))\n\ndef main():\n root = tk.Tk()\n dashboard = WeatherDashboard(root)\n\n # Example coordinates (Paris)\n dashboard.render_header(48.8566, 2.3522)\n dashboard.create_chart()\n\n # Configure grid weights\n root.columnconfigure(0, weight=1)\n root.rowconfigure(1, weight=1)\n\n # Start the application\n root.mainloop()\n\nif __name__ == \"__main__\":\n main()\n\n```\n\n### And some mermaids:\n\n```mermaid\ngraph TD\n A[Christmas] -->|Get money| B(Go shopping)\n B --> C{Let me think}\n B --> G[/Another/]\n C ==>|One| D[Laptop]\n C -->|Two| E[iPhone]\n C -->|Three| F[fa:fa-car Car]\n subgraph section\n C\n D\n E\n F\n G\n end\n```\n\n```mermaid pie chart\npie title Distribution\n \"Category A\" : 30\n \"Category B\" : 20\n \"Category C\" : 15\n \"Category D\" : 10\n \"Category E\" : 25\n```\n\n";
|
|
20
|
+
var example = "\n# Level 1 Title\n\n## Level 2 Title\n\n### Level 3 Title\n\n#### Level 4 Title\n\n##### Level 5 Title\n\n###### Level 6 Title\n\nGot it. I won\u2019t escape your Markdown.\n\nIf you intended to render a footnote reference like [^4], you can write it directly without backslashes:\n\n- Footnote reference in text: [^4]\n- Footnote definition at the end:\n [^4]: Your footnote content here\n\nThis is a paragraph with **bold** text and *italic* text. This is `code` block:\n```\nBlock\n```\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n\n# Another Level 1 Title\n\nDemo of a list, showcasing our pets of the month:\n- Soupinou\n- Chawarma\n- Chalom\n- Anakine\n- Goose\n\nOrdered list:\n1. Soupinou\n2. Chawarma\n3. Chalom\n\n---\n\n### Demo of a quote below:\n\n> You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the rabbit hole goes.\n\n> You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the rabbit hole goes.\n\nAnother one, a short one:\n> Soupinou fait des miaou miaou.\n\n### Other stuff\n\n~~stuff~~\nlink www.x.com\nfootnote [^1]\n\n* [ ] to do\n* [x] done\n\n### Short Table\n\n| Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) |\n|-------------|-----------------------|----------------------|\n| October 25 | 19 | 14 |\n| October 26 | 17 | 12 |\n| October 27 | 16 | 10 |\n| October 28 | 16 | 9 |\n| October 29 | 17 | 8 |\n| October 30 | 19 | 8 |\n| October 31 | 19 | 10 |\n\n\n### Table\n\n| Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) | Weather Condition | Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) | Weather Condition | Date | High Temperature (\u00B0C) | Low Temperature (\u00B0C) | Weather Condition |\n|-------------|-----------------------|----------------------|-------------------------------|-------------|-----------------------|----------------------|-------------------------------|-------------|-----------------------|----------------------|-------------------------------|\n| October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 26 | 17 | 12 | Light showers, overcast | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 27 | 16 | 10 | Overcast | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 28 | 16 | 9 | Increasing cloudiness | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 29 | 17 | 8 | Scattered clouds | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 30 | 19 | 8 | Sunny | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n| October 31 | 19 | 10 | Sunny | October 25 | 19 | 14 | Passing showers, cloudy | October 25 | 19 | 14 | Passing showers, cloudy |\n\n\n\n### Some LaTeX\n\n$$ \\sigma(z_i) = \\frac{e^{z_{i}}}{\\sum_{j=1}^K e^{z_{j}}} \\ \\ \\ for\\ i=1,2,\\dots,K $$\n\n### Some inline LaTeX\n\n**Example**: Linear attention is a 2-level optimization:\n- Inner level: Memory matrix $\\mathcal{M}_t = \\mathcal{M}_{t-1} + \\mathbf{v}_t \\mathbf{k}_t^\\top$ (updates every token)\n- Outer level: Projection matrices $W_k, W_v, W_q$ (updates during pre-training)\n\nEven **optimizers** are associative memories. Momentum with gradient descent is 2-level:\n- Momentum $\\mathbf{m}_t$ compresses past gradients\n- Weights $W_t$ are updated by momentum\n\nThe result is $a=2+t$\n\n### Some text with dollars signs:\n\nOne want to import $USER_WORKSPACE but it will cost them $3.5 or $100 $1000\n\n-> The EF for this code is 0.49059 kgCO2e per $ (2018 USD).\n-> This code is 0.54895 kgCO2e per $ (2018 USD) more.\n-> This thing is $5-$10 range.\n\n### This is a CSV:\n\n```csv\nDate,High (\u00B0C),Low (\u00B0C)\nOctober 24,19,12\nOctober 25,20,12\nOctober 26,17,11\nOctober 27,16,10\nOctober 28,17,11\nOctober 29,18,12\nOctober 30,19,11\n```\n\n### Some js code:\n\n```javascript\nimport React from \"react\";\nimport {\n LineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\n\nconst data = [\n { date: \"Oct 24\", high: 19, low: 12 },\n { date: \"Oct 25\", high: 20, low: 12 },\n { date: \"Oct 26\", high: 17, low: 11 },\n { date: \"Oct 27\", high: 16, low: 10 },\n { date: \"Oct 28\", high: 17, low: 11 },\n { date: \"Oct 29\", high: 18, low: 12 },\n { date: \"Oct 30\", high: 19, low: 11 },\n];\n\nfunction renderHeader(latitude, longitude) {\n const container = document.getElementById(\"dashboard-container\");\n if (!container) {\n console.error(\"Dashboard container is missing in the DOM.\");\n return;\n }\n let header = document.getElementById(\"dashboard-header\");\n if (!header) {\n console.log(\"Creating new dashboard header.\");\n header = document.createElement(\"div\");\n header.id = \"dashboard-header\";\n container.prepend(header);\n }\n console.log(\"Updating header content.\");\n const currentTime = new Date().toLocaleString(\"en-US\", {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n weekday: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n header.innerHTML = `\n <div>\n <h2>Local Time</h2>\n <p>${currentTime}</p>\n </div>\n <div>\n <h2>Location</h2>\n <p>Lat: ${latitude.toFixed(2)}, Lon: ${longitude.toFixed(2)}</p>\n </div>\n `;\n}\n```\n\n\n### Some CLI code:\n\n```bash\n# Define variables\nAPI_URL=\"https://api.example.com\"\nLATEST_TAG=\"v1.2.3\"\nUSERNAME=\"user123\"\nENVIRONMENT=\"production\"\n\n# Basic GET with variables\ncurl \"${API_URL}/version/${LATEST_TAG}\"\n\n# POST with JSON payload using variables\ncurl -X POST -H \"Content-Type: application/json\" -d \"{\n \"tag\": \"${LATEST_TAG}\",\n \"environment\": \"${ENVIRONMENT}\",\n \"deployedBy\": \"${USERNAME}\"\n }\" \"${API_URL}/deployments\"\n```\n\n### Some python code:\n\n```python\nimport datetime\nimport pytz\nfrom typing import List, Dict, Union\nimport tkinter as tk\nfrom tkinter import ttk\nimport matplotlib.pyplot as plt\nfrom matplotlib.figure import Figure\nfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAgg\n\n# Data structure similar to the JavaScript example\ndata = [\n {\"date\": \"Oct 24\", \"high\": 19, \"low\": 12},\n {\"date\": \"Oct 25\", \"high\": 20, \"low\": 12},\n {\"date\": \"Oct 26\", \"high\": 17, \"low\": 11},\n {\"date\": \"Oct 27\", \"high\": 16, \"low\": 10},\n {\"date\": \"Oct 28\", \"high\": 17, \"low\": 11},\n {\"date\": \"Oct 29\", \"high\": 18, \"low\": 12},\n {\"date\": \"Oct 30\", \"high\": 19, \"low\": 11},\n]\n\nclass WeatherDashboard:\n def __init__(self, root: tk.Tk):\n self.root = root\n self.root.title(\"Weather Dashboard\")\n\n # Create header frame\n self.header_frame = ttk.Frame(root, padding=\"10\")\n self.header_frame.grid(row=0, column=0, sticky=(tk.W, tk.E))\n\n # Create chart frame\n self.chart_frame = ttk.Frame(root, padding=\"10\")\n self.chart_frame.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))\n\n def render_header(self, latitude: float, longitude: float) -> None:\n \"\"\"\n Render the dashboard header with time and location information\n \"\"\"\n # Clear existing widgets\n for widget in self.header_frame.winfo_children():\n widget.destroy()\n\n # Get current time in local timezone\n current_time = datetime.datetime.now()\n local_tz = datetime.datetime.now(pytz.timezone('UTC')).astimezone().tzinfo\n formatted_time = current_time.strftime('%A, %I:%M:%S %p')\n\n # Create time section\n time_frame = ttk.LabelFrame(self.header_frame, text=\"Local Time\")\n time_frame.grid(row=0, column=0, padx=5, pady=5, sticky=(tk.W))\n ttk.Label(time_frame, text=formatted_time).grid(row=0, column=0, padx=5, pady=2)\n\n # Create location section\n location_frame = ttk.LabelFrame(self.header_frame, text=\"Location\")\n location_frame.grid(row=0, column=1, padx=5, pady=5, sticky=(tk.W))\n ttk.Label(\n location_frame,\n text=f\"Lat: {latitude:.2f}, Lon: {longitude:.2f}\"\n ).grid(row=0, column=0, padx=5, pady=2)\n\n def create_chart(self) -> None:\n \"\"\"\n Create a line chart using matplotlib\n \"\"\"\n # Create figure and axis\n fig = Figure(figsize=(8, 4))\n ax = fig.add_subplot(111)\n\n # Extract data for plotting\n dates = [d['date'] for d in data]\n highs = [d['high'] for d in data]\n lows = [d['low'] for d in data]\n\n # Plot lines\n ax.plot(dates, highs, marker='o', label='High', color='red')\n ax.plot(dates, lows, marker='o', label='Low', color='blue')\n\n # Customize chart\n ax.grid(True)\n ax.set_xlabel('Date')\n ax.set_ylabel('Temperature')\n ax.legend()\n\n # Rotate x-axis labels for better readability\n plt.setp(ax.get_xticklabels(), rotation=45)\n\n # Create canvas and add to frame\n canvas = FigureCanvasTkAgg(fig, master=self.chart_frame)\n canvas.draw()\n canvas.get_tk_widget().grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))\n\ndef main():\n root = tk.Tk()\n dashboard = WeatherDashboard(root)\n\n # Example coordinates (Paris)\n dashboard.render_header(48.8566, 2.3522)\n dashboard.create_chart()\n\n # Configure grid weights\n root.columnconfigure(0, weight=1)\n root.rowconfigure(1, weight=1)\n\n # Start the application\n root.mainloop()\n\nif __name__ == \"__main__\":\n main()\n\n```\n\n### And some mermaids:\n\n```mermaid\ngraph TD\n A[Christmas] -->|Get money| B(Go shopping)\n B --> C{Let me think}\n B --> G[/Another/]\n C ==>|One| D[Laptop]\n C -->|Two| E[iPhone]\n C -->|Three| F[fa:fa-car Car]\n subgraph section\n C\n D\n E\n F\n G\n end\n```\n\n```mermaid pie chart\npie title Distribution\n \"Category A\" : 30\n \"Category B\" : 20\n \"Category C\" : 15\n \"Category D\" : 10\n \"Category E\" : 25\n```\n\n";
|
|
21
21
|
export var ExtendedMarkdownStory = {
|
|
22
22
|
args: {
|
|
23
23
|
content: example,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.stories.js","sourceRoot":"","sources":["../../../src/stories/Markdown.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,IAAM,IAAI,GAAG;IACX,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,CAAC,UAAC,KAAK,IAAK,OAAA,oBAAC,KAAK,OAAG,EAAT,CAAS,CAAC;IAClC,QAAQ,EAAE;QACR,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,mBAAmB;gBACnB,yBAAyB;gBACzB,kBAAkB;aACnB;YACD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC3B;KACF;CAC8B,CAAC;AAElC,eAAe,IAAI,CAAC;AAGpB,IAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"Markdown.stories.js","sourceRoot":"","sources":["../../../src/stories/Markdown.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,IAAM,IAAI,GAAG;IACX,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,CAAC,UAAC,KAAK,IAAK,OAAA,oBAAC,KAAK,OAAG,EAAT,CAAS,CAAC;IAClC,QAAQ,EAAE;QACR,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,mBAAmB;gBACnB,yBAAyB;gBACzB,kBAAkB;aACnB;YACD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC3B;KACF;CAC8B,CAAC;AAElC,eAAe,IAAI,CAAC;AAGpB,IAAM,OAAO,GAAG,gqYA8Vf,CAAC;AAEF,MAAM,CAAC,IAAM,qBAAqB,GAAU;IAC1C,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO;KACjB;CACF,CAAC;AAEF,IAAM,cAAc,GAAG,+9CAuEtB,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAU;IACtC,IAAI,EAAE;QACJ,OAAO,EAAE,cAAc;KACxB;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -126,6 +126,7 @@ export interface ContentMessageProps {
|
|
|
126
126
|
size?: ContentMessageSizeType;
|
|
127
127
|
variant?: ContentMessageVariantType;
|
|
128
128
|
icon?: ComponentType;
|
|
129
|
+
action?: React.ReactNode;
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
function ContentMessage({
|
|
@@ -135,22 +136,37 @@ function ContentMessage({
|
|
|
135
136
|
size = "md",
|
|
136
137
|
className = "",
|
|
137
138
|
icon,
|
|
139
|
+
action,
|
|
138
140
|
}: ContentMessageProps) {
|
|
139
141
|
return (
|
|
140
142
|
<div className={cn(contentMessageVariants({ variant, size }), className)}>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
143
|
+
<div
|
|
144
|
+
className={cn(
|
|
145
|
+
"s-flex s-gap-3",
|
|
146
|
+
action ? "s-items-center s-justify-between" : "s-flex-col"
|
|
147
|
+
)}
|
|
148
|
+
>
|
|
149
|
+
<div className="s-flex s-flex-col s-gap-1">
|
|
150
|
+
{(icon || title) && (
|
|
151
|
+
<div className="s-flex s-items-center s-gap-1.5">
|
|
152
|
+
{icon && (
|
|
153
|
+
<Icon
|
|
154
|
+
size="sm"
|
|
155
|
+
visual={icon}
|
|
156
|
+
className={iconVariants({ variant })}
|
|
157
|
+
/>
|
|
158
|
+
)}
|
|
159
|
+
{title && (
|
|
160
|
+
<div className={titleVariants({ variant })}>{title}</div>
|
|
161
|
+
)}
|
|
162
|
+
</div>
|
|
163
|
+
)}
|
|
164
|
+
{children && (
|
|
165
|
+
<div className={textVariants({ variant })}>{children}</div>
|
|
149
166
|
)}
|
|
150
|
-
{title && <div className={titleVariants({ variant })}>{title}</div>}
|
|
151
167
|
</div>
|
|
152
|
-
|
|
153
|
-
|
|
168
|
+
{action && <div className="s-shrink-0">{action}</div>}
|
|
169
|
+
</div>
|
|
154
170
|
{/* TODO(2025-08-13 aubin): Allow passing a ContentMessageAction here. */}
|
|
155
171
|
</div>
|
|
156
172
|
);
|
|
@@ -24,7 +24,10 @@ import {
|
|
|
24
24
|
TableHeadBlock,
|
|
25
25
|
TableHeaderBlock,
|
|
26
26
|
} from "@sparkle/components/markdown/TableBlock";
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
preprocessDollarSigns,
|
|
29
|
+
sanitizeContent,
|
|
30
|
+
} from "@sparkle/components/markdown/utils";
|
|
28
31
|
import { cn } from "@sparkle/lib/utils";
|
|
29
32
|
|
|
30
33
|
export const markdownHeaderClasses = {
|
|
@@ -70,7 +73,10 @@ export function Markdown({
|
|
|
70
73
|
additionalMarkdownComponents?: Components;
|
|
71
74
|
additionalMarkdownPlugins?: PluggableList;
|
|
72
75
|
}) {
|
|
73
|
-
const processedContent = useMemo(() =>
|
|
76
|
+
const processedContent = useMemo(() => {
|
|
77
|
+
const sanitized = sanitizeContent(content);
|
|
78
|
+
return preprocessDollarSigns(sanitized);
|
|
79
|
+
}, [content]);
|
|
74
80
|
|
|
75
81
|
// Note on re-renderings. A lot of effort has been put into preventing rerendering across markdown
|
|
76
82
|
// AST parsing rounds (happening at each token being streamed).
|
|
@@ -214,7 +220,7 @@ export function Markdown({
|
|
|
214
220
|
() => [
|
|
215
221
|
remarkDirective,
|
|
216
222
|
remarkGfm,
|
|
217
|
-
[remarkMath, { singleDollarTextMath:
|
|
223
|
+
[remarkMath, { singleDollarTextMath: true }],
|
|
218
224
|
...(additionalMarkdownPlugins || []),
|
|
219
225
|
showUnsupportedDirective,
|
|
220
226
|
],
|
|
@@ -39,3 +39,43 @@ export function detectLanguage(children: React.ReactNode) {
|
|
|
39
39
|
|
|
40
40
|
return "text";
|
|
41
41
|
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Preprocesses content to escape dollar signs that are likely NOT inlione LaTeX math. This helps
|
|
45
|
+
* prevent false positives when enabling single $ math rendering.
|
|
46
|
+
*
|
|
47
|
+
* Patterns that are escaped:
|
|
48
|
+
* 1. Solo dollar signs: `$` (not part of a pair)
|
|
49
|
+
* 1. Currency amounts: $100, $5.99, $1,000, $50k, $2.5M, $1 billion
|
|
50
|
+
* 2. Shell/code variables: $HOME, $PATH, ${variable}
|
|
51
|
+
*/
|
|
52
|
+
export function preprocessDollarSigns(content: string): string {
|
|
53
|
+
let processed = content;
|
|
54
|
+
|
|
55
|
+
processed = processed
|
|
56
|
+
.split("\n")
|
|
57
|
+
.map((line) => {
|
|
58
|
+
const unescapedDollarMatches = line.match(/(?<!\\)\$/g) ?? [];
|
|
59
|
+
// 1. Escape solo dollar signs per line: we ignore math spans crossing newlines.
|
|
60
|
+
if (unescapedDollarMatches.length === 1) {
|
|
61
|
+
return line.replace(/(?<!\\)\$/, "\\$");
|
|
62
|
+
} else if (unescapedDollarMatches.length > 1) {
|
|
63
|
+
// 2. Protect currency patterns
|
|
64
|
+
// Matches: $100, $5.99, $1,000.50, $50k, $2.5M, $1 billion, etc.
|
|
65
|
+
line = line.replace(
|
|
66
|
+
/(?<!\\)\$(\d+(?:,\d{3})*(?:\.\d{1,2})?(?:\s*(?:USD|EUR|CAD|GBP|million|billion|thousand|[kKmMbB]))?)\b/g,
|
|
67
|
+
"\\$$$1"
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
// 3. Protect shell/code variables
|
|
71
|
+
// Matches: $HOME, $PATH, $USER, ${variable}, ${foo.bar}
|
|
72
|
+
line = line.replace(/(?<!\\)\$([A-Z_][A-Z0-9_]*)\b/g, "\\$$$1");
|
|
73
|
+
|
|
74
|
+
line = line.replace(/(?<!\\)\$\{([^}]+)\}/g, "\\${$1}");
|
|
75
|
+
}
|
|
76
|
+
return line;
|
|
77
|
+
})
|
|
78
|
+
.join("\n");
|
|
79
|
+
|
|
80
|
+
return processed;
|
|
81
|
+
}
|
|
@@ -10,6 +10,10 @@ import {
|
|
|
10
10
|
InformationCircleIcon,
|
|
11
11
|
} from "../index_with_tw_base";
|
|
12
12
|
|
|
13
|
+
type ContentMessageStoryProps = React.ComponentProps<typeof ContentMessage> & {
|
|
14
|
+
showAction?: boolean;
|
|
15
|
+
};
|
|
16
|
+
|
|
13
17
|
const ICONS = {
|
|
14
18
|
none: null,
|
|
15
19
|
InformationCircleIcon: InformationCircleIcon,
|
|
@@ -17,7 +21,7 @@ const ICONS = {
|
|
|
17
21
|
HeartIcon: HeartIcon,
|
|
18
22
|
} as const;
|
|
19
23
|
|
|
20
|
-
const meta = {
|
|
24
|
+
const meta: Meta<ContentMessageStoryProps> = {
|
|
21
25
|
title: "Components/ContentMessage",
|
|
22
26
|
component: ContentMessage,
|
|
23
27
|
argTypes: {
|
|
@@ -56,17 +60,32 @@ const meta = {
|
|
|
56
60
|
control: { type: "select" },
|
|
57
61
|
description: "Icon to display",
|
|
58
62
|
},
|
|
63
|
+
showAction: {
|
|
64
|
+
control: "boolean",
|
|
65
|
+
description: "Show a right-aligned action button",
|
|
66
|
+
},
|
|
59
67
|
},
|
|
60
|
-
}
|
|
68
|
+
};
|
|
61
69
|
|
|
62
70
|
export default meta;
|
|
63
|
-
type Story = StoryObj<
|
|
71
|
+
type Story = StoryObj<ContentMessageStoryProps>;
|
|
64
72
|
|
|
65
73
|
export const Basic: Story = {
|
|
74
|
+
render: ({ showAction, ...args }) => (
|
|
75
|
+
<ContentMessage
|
|
76
|
+
{...args}
|
|
77
|
+
action={
|
|
78
|
+
showAction ? (
|
|
79
|
+
<ContentMessageAction variant="primary" label="Action" />
|
|
80
|
+
) : undefined
|
|
81
|
+
}
|
|
82
|
+
/>
|
|
83
|
+
),
|
|
66
84
|
args: {
|
|
67
85
|
title: "This is a title",
|
|
68
86
|
children: "This is a message. It can be multiple lines long.",
|
|
69
87
|
size: "md",
|
|
88
|
+
showAction: false,
|
|
70
89
|
},
|
|
71
90
|
};
|
|
72
91
|
|