@dust-tt/sparkle 0.4.20 → 0.4.21

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.
@@ -9,11 +9,12 @@ export declare const markdownHeaderClasses: {
9
9
  h5: string;
10
10
  h6: string;
11
11
  };
12
- export declare function Markdown({ content, isStreaming, textColor, forcedTextSize, isLastMessage, additionalMarkdownComponents, additionalMarkdownPlugins, }: {
12
+ export declare function Markdown({ content, isStreaming, textColor, forcedTextSize, isLastMessage, compactSpacing, additionalMarkdownComponents, additionalMarkdownPlugins, }: {
13
13
  content: string;
14
14
  isStreaming?: boolean;
15
15
  textColor?: string;
16
16
  isLastMessage?: boolean;
17
+ compactSpacing?: boolean;
17
18
  forcedTextSize?: string;
18
19
  additionalMarkdownComponents?: Components;
19
20
  additionalMarkdownPlugins?: PluggableList;
@@ -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;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"}
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;AA4BvE,eAAO,MAAM,qBAAqB;;;;;;;CAOjC,CAAC;AAmBF,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,WAAmB,EACnB,SAA4D,EAC5D,cAAc,EACd,aAAqB,EACrB,cAAsB,EACtB,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,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B,CAAC,EAAE,UAAU,CAAC;IAC1C,yBAAyB,CAAC,EAAE,aAAa,CAAC;CAC3C,qBAkMA"}
@@ -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 { preprocessDollarSigns, sanitizeContent, } from "../../components/markdown/utils";
18
+ import { preprocessDollarSigns, preserveLineBreaks, sanitizeContent, } from "../../components/markdown/utils";
19
19
  import { cn } from "../../lib/utils";
20
20
  export var markdownHeaderClasses = {
21
21
  h1: "s-heading-2xl",
@@ -38,11 +38,14 @@ function showUnsupportedDirective() {
38
38
  };
39
39
  }
40
40
  export function Markdown(_a) {
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;
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, _e = _a.compactSpacing, compactSpacing = _e === void 0 ? false : _e, additionalMarkdownComponents = _a.additionalMarkdownComponents, additionalMarkdownPlugins = _a.additionalMarkdownPlugins;
42
42
  var processedContent = useMemo(function () {
43
43
  var sanitized = sanitizeContent(content);
44
+ if (compactSpacing) {
45
+ sanitized = preserveLineBreaks(sanitized);
46
+ }
44
47
  return preprocessDollarSigns(sanitized);
45
- }, [content]);
48
+ }, [content, compactSpacing]);
46
49
  // Note on re-renderings. A lot of effort has been put into preventing rerendering across markdown
47
50
  // AST parsing rounds (happening at each token being streamed).
48
51
  //
@@ -72,7 +75,7 @@ export function Markdown(_a) {
72
75
  return (React.createElement(LiBlock, { textColor: textColor, textSize: forcedTextSize ? forcedTextSize : sizes.p }, children));
73
76
  }, p: function (_a) {
74
77
  var children = _a.children;
75
- return (React.createElement(ParagraphBlock, { textColor: textColor, textSize: forcedTextSize ? forcedTextSize : sizes.p }, children));
78
+ return (React.createElement(ParagraphBlock, { textColor: textColor, textSize: forcedTextSize ? forcedTextSize : sizes.p, compactSpacing: compactSpacing }, children));
76
79
  }, table: TableBlock, thead: TableHeadBlock, tbody: TableBodyBlock, th: TableHeaderBlock, td: TableDataBlock, h1: function (_a) {
77
80
  var children = _a.children;
78
81
  return (React.createElement("h1", { className: cn("s-pb-2 s-pt-4", forcedTextSize ? forcedTextSize : sizes.h1, textColor) }, children));
@@ -95,7 +98,7 @@ export function Markdown(_a) {
95
98
  var children = _a.children;
96
99
  return (React.createElement("strong", { className: "s-font-semibold s-text-foreground dark:s-text-foreground-night" }, children));
97
100
  }, input: Input, blockquote: BlockquoteBlock, hr: function () { return (React.createElement("div", { className: "s-my-6 s-border-b s-border-primary-150 dark:s-border-primary-150-night" })); }, code: CodeBlockWithExtendedSupport }, additionalMarkdownComponents);
98
- }, [textColor, additionalMarkdownComponents]);
101
+ }, [textColor, compactSpacing, additionalMarkdownComponents]);
99
102
  var markdownPlugins = useMemo(function () { return __spreadArray(__spreadArray([
100
103
  remarkDirective,
101
104
  remarkGfm,
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../../src/components/markdown/Markdown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../../src/components/markdown/Markdown.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import React from "react";
2
- export declare const paragraphBlockVariants: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
2
+ export declare const paragraphBlockVariants: (props?: ({
3
+ compactSpacing?: boolean | null | undefined;
4
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
3
5
  interface ParagraphBlockProps {
4
6
  children: React.ReactNode;
5
7
  textColor: string;
6
8
  textSize: string;
9
+ compactSpacing?: boolean;
7
10
  }
8
- export declare function ParagraphBlock({ children, textColor, textSize, }: ParagraphBlockProps): React.JSX.Element;
11
+ export declare function ParagraphBlock({ children, textColor, textSize, compactSpacing, }: ParagraphBlockProps): React.JSX.Element;
9
12
  export {};
10
13
  //# sourceMappingURL=ParagraphBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParagraphBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/ParagraphBlock.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,sBAAsB,yFAGjC,CAAC;AAEH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,EAAE,mBAAmB,qBAMrB"}
1
+ {"version":3,"file":"ParagraphBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/ParagraphBlock.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,sBAAsB;;mFAYlC,CAAC;AAEF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,cAAsB,GACvB,EAAE,mBAAmB,qBAYrB"}
@@ -3,10 +3,16 @@ import React from "react";
3
3
  import { cn } from "../../lib";
4
4
  export var paragraphBlockVariants = cva([
5
5
  "s-whitespace-pre-wrap s-break-words s-font-normal first:s-pt-0 last:s-pb-0",
6
- "s-py-1 @md:s-py-2 @md:s-leading-7",
7
- ]);
6
+ ], {
7
+ variants: {
8
+ compactSpacing: {
9
+ true: ["s-py-0"],
10
+ false: ["s-py-1 @md:s-py-2 @md:s-leading-7"],
11
+ },
12
+ },
13
+ });
8
14
  export function ParagraphBlock(_a) {
9
- var children = _a.children, textColor = _a.textColor, textSize = _a.textSize;
10
- return (React.createElement("div", { className: cn(paragraphBlockVariants(), textSize, textColor) }, children));
15
+ var children = _a.children, textColor = _a.textColor, textSize = _a.textSize, _b = _a.compactSpacing, compactSpacing = _b === void 0 ? false : _b;
16
+ return (React.createElement("div", { className: cn(paragraphBlockVariants({ compactSpacing: compactSpacing }), textSize, textColor) }, children));
11
17
  }
12
18
  //# sourceMappingURL=ParagraphBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParagraphBlock.js","sourceRoot":"","sources":["../../../../src/components/markdown/ParagraphBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,IAAM,sBAAsB,GAAG,GAAG,CAAC;IACxC,4EAA4E;IAC5E,mCAAmC;CACpC,CAAC,CAAC;AAQH,MAAM,UAAU,cAAc,CAAC,EAIT;QAHpB,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,QAAQ,cAAA;IAER,OAAO,CACL,6BAAK,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,IAC9D,QAAQ,CACL,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ParagraphBlock.js","sourceRoot":"","sources":["../../../../src/components/markdown/ParagraphBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,IAAM,sBAAsB,GAAG,GAAG,CACvC;IACE,4EAA4E;CAC7E,EACD;IACE,QAAQ,EAAE;QACR,cAAc,EAAE;YACd,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,KAAK,EAAE,CAAC,mCAAmC,CAAC;SAC7C;KACF;CACF,CACF,CAAC;AASF,MAAM,UAAU,cAAc,CAAC,EAKT;QAJpB,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,sBAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA;IAEtB,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CACX,sBAAsB,CAAC,EAAE,cAAc,gBAAA,EAAE,CAAC,EAC1C,QAAQ,EACR,SAAS,CACV,IAEA,QAAQ,CACL,CACP,CAAC;AACJ,CAAC"}
@@ -10,7 +10,9 @@ export declare const markdownStyles: {
10
10
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
11
11
  list: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
12
12
  orderedList: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
13
- paragraph: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
13
+ paragraph: (props?: ({
14
+ compactSpacing?: boolean | null | undefined;
15
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
14
16
  pre: (props?: ({
15
17
  variant?: "surface" | null | undefined;
16
18
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/styles.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;CAS1B,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/markdown/styles.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;CAS1B,CAAC"}
@@ -1,6 +1,11 @@
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
+ * Converts consecutive newlines (\n\n) into hard breaks to preserve line spacing.
6
+ * Inserts an empty line with a non-breaking space to create visual spacing.
7
+ */
8
+ export declare function preserveLineBreaks(content: string): string;
4
9
  /**
5
10
  * Preprocesses content to escape dollar signs that are likely NOT inlione LaTeX math. This helps
6
11
  * prevent false positives when enabling single $ math rendering.
@@ -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;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6B7D"}
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;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6B7D"}
@@ -39,6 +39,15 @@ export function detectLanguage(children) {
39
39
  }
40
40
  return "text";
41
41
  }
42
+ /**
43
+ * Converts consecutive newlines (\n\n) into hard breaks to preserve line spacing.
44
+ * Inserts an empty line with a non-breaking space to create visual spacing.
45
+ */
46
+ export function preserveLineBreaks(content) {
47
+ // Replace \n\n with \n&nbsp;\n\n to insert an empty line with content
48
+ // This creates visual spacing between paragraphs
49
+ return content.replace(/\n\n\n\n/g, "\n\n&nbsp;\n\n");
50
+ }
42
51
  /**
43
52
  * Preprocesses content to escape dollar signs that are likely NOT inlione LaTeX math. This helps
44
53
  * prevent false positives when enabling single $ math rendering.
@@ -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;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
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/markdown/utils.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ declare const meta: {
10
10
  isStreaming?: boolean | undefined;
11
11
  textColor?: string | undefined;
12
12
  isLastMessage?: boolean | undefined;
13
+ compactSpacing?: boolean | undefined;
13
14
  forcedTextSize?: string | undefined;
14
15
  additionalMarkdownComponents?: Partial<Omit<import("react-markdown/lib/complex-types").NormalComponents, keyof import("react-markdown/lib/ast-to-react").SpecialComponents> & import("react-markdown/lib/ast-to-react").SpecialComponents> | undefined;
15
16
  additionalMarkdownPlugins?: import("unified").PluggableList | undefined;
@@ -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;AAkWnC,eAAO,MAAM,qBAAqB,EAAE,KAInC,CAAC;AA2EF,eAAO,MAAM,iBAAiB,EAAE,KAI/B,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dust-tt/sparkle",
3
- "version": "0.4.20",
3
+ "version": "0.4.21",
4
4
  "scripts": {
5
5
  "build": "rm -rf dist && npm run tailwind && npm run build:esm && npm run build:cjs",
6
6
  "tailwind": "tailwindcss -i ./src/styles/tailwind.css -o dist/sparkle.css",
@@ -26,6 +26,7 @@ import {
26
26
  } from "@sparkle/components/markdown/TableBlock";
27
27
  import {
28
28
  preprocessDollarSigns,
29
+ preserveLineBreaks,
29
30
  sanitizeContent,
30
31
  } from "@sparkle/components/markdown/utils";
31
32
  import { cn } from "@sparkle/lib/utils";
@@ -62,6 +63,7 @@ export function Markdown({
62
63
  textColor = "s-text-foreground dark:s-text-foreground-night",
63
64
  forcedTextSize,
64
65
  isLastMessage = false,
66
+ compactSpacing = false,
65
67
  additionalMarkdownComponents,
66
68
  additionalMarkdownPlugins,
67
69
  }: {
@@ -69,14 +71,18 @@ export function Markdown({
69
71
  isStreaming?: boolean;
70
72
  textColor?: string;
71
73
  isLastMessage?: boolean;
74
+ compactSpacing?: boolean; // When true, removes vertical padding from paragraph blocks for tighter spacing
72
75
  forcedTextSize?: string;
73
76
  additionalMarkdownComponents?: Components;
74
77
  additionalMarkdownPlugins?: PluggableList;
75
78
  }) {
76
79
  const processedContent = useMemo(() => {
77
- const sanitized = sanitizeContent(content);
80
+ let sanitized = sanitizeContent(content);
81
+ if (compactSpacing) {
82
+ sanitized = preserveLineBreaks(sanitized);
83
+ }
78
84
  return preprocessDollarSigns(sanitized);
79
- }, [content]);
85
+ }, [content, compactSpacing]);
80
86
 
81
87
  // Note on re-renderings. A lot of effort has been put into preventing rerendering across markdown
82
88
  // AST parsing rounds (happening at each token being streamed).
@@ -126,6 +132,7 @@ export function Markdown({
126
132
  <ParagraphBlock
127
133
  textColor={textColor}
128
134
  textSize={forcedTextSize ? forcedTextSize : sizes.p}
135
+ compactSpacing={compactSpacing}
129
136
  >
130
137
  {children}
131
138
  </ParagraphBlock>
@@ -214,7 +221,7 @@ export function Markdown({
214
221
  code: CodeBlockWithExtendedSupport,
215
222
  ...additionalMarkdownComponents,
216
223
  };
217
- }, [textColor, additionalMarkdownComponents]);
224
+ }, [textColor, compactSpacing, additionalMarkdownComponents]);
218
225
 
219
226
  const markdownPlugins: PluggableList = useMemo(
220
227
  () => [
@@ -3,24 +3,41 @@ import React from "react";
3
3
 
4
4
  import { cn } from "@sparkle/lib";
5
5
 
6
- export const paragraphBlockVariants = cva([
7
- "s-whitespace-pre-wrap s-break-words s-font-normal first:s-pt-0 last:s-pb-0",
8
- "s-py-1 @md:s-py-2 @md:s-leading-7",
9
- ]);
6
+ export const paragraphBlockVariants = cva(
7
+ [
8
+ "s-whitespace-pre-wrap s-break-words s-font-normal first:s-pt-0 last:s-pb-0",
9
+ ],
10
+ {
11
+ variants: {
12
+ compactSpacing: {
13
+ true: ["s-py-0"],
14
+ false: ["s-py-1 @md:s-py-2 @md:s-leading-7"],
15
+ },
16
+ },
17
+ }
18
+ );
10
19
 
11
20
  interface ParagraphBlockProps {
12
21
  children: React.ReactNode;
13
22
  textColor: string;
14
23
  textSize: string;
24
+ compactSpacing?: boolean;
15
25
  }
16
26
 
17
27
  export function ParagraphBlock({
18
28
  children,
19
29
  textColor,
20
30
  textSize,
31
+ compactSpacing = false,
21
32
  }: ParagraphBlockProps) {
22
33
  return (
23
- <div className={cn(paragraphBlockVariants(), textSize, textColor)}>
34
+ <div
35
+ className={cn(
36
+ paragraphBlockVariants({ compactSpacing }),
37
+ textSize,
38
+ textColor
39
+ )}
40
+ >
24
41
  {children}
25
42
  </div>
26
43
  );
@@ -40,6 +40,16 @@ export function detectLanguage(children: React.ReactNode) {
40
40
  return "text";
41
41
  }
42
42
 
43
+ /**
44
+ * Converts consecutive newlines (\n\n) into hard breaks to preserve line spacing.
45
+ * Inserts an empty line with a non-breaking space to create visual spacing.
46
+ */
47
+ export function preserveLineBreaks(content: string): string {
48
+ // Replace \n\n with \n&nbsp;\n\n to insert an empty line with content
49
+ // This creates visual spacing between paragraphs
50
+ return content.replace(/\n\n\n\n/g, "\n\n&nbsp;\n\n");
51
+ }
52
+
43
53
  /**
44
54
  * Preprocesses content to escape dollar signs that are likely NOT inlione LaTeX math. This helps
45
55
  * prevent false positives when enabling single $ math rendering.