@almadar/ui 5.21.3 → 5.21.4

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.
@@ -12,10 +12,6 @@ var FaIcons = require('react-icons/fa');
12
12
  var reactDom = require('react-dom');
13
13
  var evaluator = require('@almadar/evaluator');
14
14
  var reactRouterDom = require('react-router-dom');
15
- var ReactMarkdown = require('react-markdown');
16
- var remarkGfm = require('remark-gfm');
17
- var remarkMath = require('remark-math');
18
- var rehypeKatex = require('rehype-katex');
19
15
  var SyntaxHighlighter = require('react-syntax-highlighter/dist/esm/prism-light.js');
20
16
  var dark = require('react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus.js');
21
17
  var syntax = require('@almadar/syntax');
@@ -35,6 +31,10 @@ var langDiff = require('react-syntax-highlighter/dist/esm/languages/prism/diff.j
35
31
  var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml.js');
36
32
  var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go.js');
37
33
  var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql.js');
34
+ var ReactMarkdown = require('react-markdown');
35
+ var remarkGfm = require('remark-gfm');
36
+ var remarkMath = require('remark-math');
37
+ var rehypeKatex = require('rehype-katex');
38
38
  var core = require('@almadar/core');
39
39
  var core$1 = require('@dnd-kit/core');
40
40
  var sortable = require('@dnd-kit/sortable');
@@ -69,10 +69,6 @@ var LucideIcons2__namespace = /*#__PURE__*/_interopNamespace(LucideIcons2);
69
69
  var PhosphorIcons__namespace = /*#__PURE__*/_interopNamespace(PhosphorIcons);
70
70
  var TablerIcons__namespace = /*#__PURE__*/_interopNamespace(TablerIcons);
71
71
  var FaIcons__namespace = /*#__PURE__*/_interopNamespace(FaIcons);
72
- var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
73
- var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
74
- var remarkMath__default = /*#__PURE__*/_interopDefault(remarkMath);
75
- var rehypeKatex__default = /*#__PURE__*/_interopDefault(rehypeKatex);
76
72
  var SyntaxHighlighter__default = /*#__PURE__*/_interopDefault(SyntaxHighlighter);
77
73
  var dark__default = /*#__PURE__*/_interopDefault(dark);
78
74
  var langJson__default = /*#__PURE__*/_interopDefault(langJson);
@@ -91,6 +87,10 @@ var langDiff__default = /*#__PURE__*/_interopDefault(langDiff);
91
87
  var langToml__default = /*#__PURE__*/_interopDefault(langToml);
92
88
  var langGo__default = /*#__PURE__*/_interopDefault(langGo);
93
89
  var langGraphql__default = /*#__PURE__*/_interopDefault(langGraphql);
90
+ var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
91
+ var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
92
+ var remarkMath__default = /*#__PURE__*/_interopDefault(remarkMath);
93
+ var rehypeKatex__default = /*#__PURE__*/_interopDefault(rehypeKatex);
94
94
 
95
95
  var __defProp = Object.defineProperty;
96
96
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -17009,137 +17009,6 @@ var init_katex_min = __esm({
17009
17009
  "node_modules/katex/dist/katex.min.css"() {
17010
17010
  }
17011
17011
  });
17012
- var MarkdownContent;
17013
- var init_MarkdownContent = __esm({
17014
- "components/core/molecules/markdown/MarkdownContent.tsx"() {
17015
- init_katex_min();
17016
- init_Box();
17017
- init_useTranslate();
17018
- init_cn();
17019
- MarkdownContent = React97__namespace.default.memo(
17020
- ({ content, direction, className }) => {
17021
- const { t: _t } = useTranslate();
17022
- const safeContent = typeof content === "string" ? content : String(content ?? "");
17023
- return /* @__PURE__ */ jsxRuntime.jsx(
17024
- Box,
17025
- {
17026
- className: cn("prose max-w-none", className),
17027
- style: {
17028
- color: "var(--color-foreground)",
17029
- "--tw-prose-body": "var(--color-foreground)",
17030
- "--tw-prose-headings": "var(--color-foreground)",
17031
- "--tw-prose-lead": "var(--color-muted-foreground)",
17032
- "--tw-prose-links": "var(--color-primary)",
17033
- "--tw-prose-bold": "var(--color-foreground)",
17034
- "--tw-prose-counters": "var(--color-muted-foreground)",
17035
- "--tw-prose-bullets": "var(--color-muted-foreground)",
17036
- "--tw-prose-hr": "var(--color-border)",
17037
- "--tw-prose-quotes": "var(--color-foreground)",
17038
- "--tw-prose-quote-borders": "var(--color-primary)",
17039
- "--tw-prose-captions": "var(--color-muted-foreground)",
17040
- "--tw-prose-code": "var(--color-foreground)",
17041
- "--tw-prose-pre-code": "var(--color-foreground)",
17042
- "--tw-prose-pre-bg": "var(--color-muted)",
17043
- "--tw-prose-th-borders": "var(--color-border)",
17044
- "--tw-prose-td-borders": "var(--color-border)",
17045
- direction
17046
- },
17047
- children: /* @__PURE__ */ jsxRuntime.jsx(
17048
- ReactMarkdown__default.default,
17049
- {
17050
- remarkPlugins: [remarkMath__default.default, remarkGfm__default.default],
17051
- rehypePlugins: [
17052
- [rehypeKatex__default.default, { strict: false, throwOnError: false }]
17053
- ],
17054
- components: {
17055
- // Handle inline code only — fenced code blocks are parsed out separately
17056
- code({ className: codeClassName, children, ...props }) {
17057
- return /* @__PURE__ */ jsxRuntime.jsx(
17058
- "code",
17059
- {
17060
- ...props,
17061
- className: codeClassName,
17062
- style: {
17063
- backgroundColor: "var(--color-muted)",
17064
- color: "var(--color-foreground)",
17065
- border: "1px solid var(--color-border)",
17066
- padding: "0.125rem 0.375rem",
17067
- borderRadius: "0.25rem",
17068
- fontSize: "0.875em",
17069
- fontFamily: "ui-monospace, monospace"
17070
- },
17071
- children
17072
- }
17073
- );
17074
- },
17075
- // Style links
17076
- a({ href, children, ...props }) {
17077
- return /* @__PURE__ */ jsxRuntime.jsx(
17078
- "a",
17079
- {
17080
- href,
17081
- ...props,
17082
- className: "text-[var(--color-primary)] hover:underline",
17083
- target: href?.startsWith("http") ? "_blank" : void 0,
17084
- rel: href?.startsWith("http") ? "noopener noreferrer" : void 0,
17085
- children
17086
- }
17087
- );
17088
- },
17089
- // Style tables
17090
- table({ children, ...props }) {
17091
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto my-4", children: /* @__PURE__ */ jsxRuntime.jsx(
17092
- "table",
17093
- {
17094
- ...props,
17095
- className: "min-w-full border-collapse border border-[var(--color-border)]",
17096
- children
17097
- }
17098
- ) });
17099
- },
17100
- th({ children, ...props }) {
17101
- return /* @__PURE__ */ jsxRuntime.jsx(
17102
- "th",
17103
- {
17104
- ...props,
17105
- className: "border border-[var(--color-border)] bg-[var(--color-muted)] px-4 py-2 text-left font-semibold",
17106
- children
17107
- }
17108
- );
17109
- },
17110
- td({ children, ...props }) {
17111
- return /* @__PURE__ */ jsxRuntime.jsx(
17112
- "td",
17113
- {
17114
- ...props,
17115
- className: "border border-[var(--color-border)] px-4 py-2",
17116
- children
17117
- }
17118
- );
17119
- },
17120
- // Style blockquotes
17121
- blockquote({ children, ...props }) {
17122
- return /* @__PURE__ */ jsxRuntime.jsx(
17123
- "blockquote",
17124
- {
17125
- ...props,
17126
- className: "border-l-4 border-[var(--color-primary)] pl-4 italic text-[var(--color-foreground)] my-4",
17127
- children
17128
- }
17129
- );
17130
- }
17131
- },
17132
- children: safeContent
17133
- }
17134
- )
17135
- }
17136
- );
17137
- },
17138
- (prev, next) => prev.content === next.content && prev.className === next.className && prev.direction === next.direction
17139
- );
17140
- MarkdownContent.displayName = "MarkdownContent";
17141
- }
17142
- });
17143
17012
  function computeFoldRegions(code) {
17144
17013
  const lines = code.split("\n");
17145
17014
  const regions = [];
@@ -17685,6 +17554,155 @@ var init_CodeBlock = __esm({
17685
17554
  CodeBlock.displayName = "CodeBlock";
17686
17555
  }
17687
17556
  });
17557
+ var MarkdownContent;
17558
+ var init_MarkdownContent = __esm({
17559
+ "components/core/molecules/markdown/MarkdownContent.tsx"() {
17560
+ init_katex_min();
17561
+ init_Box();
17562
+ init_CodeBlock();
17563
+ init_useTranslate();
17564
+ init_cn();
17565
+ MarkdownContent = React97__namespace.default.memo(
17566
+ ({ content, direction, className }) => {
17567
+ const { t: _t } = useTranslate();
17568
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
17569
+ return /* @__PURE__ */ jsxRuntime.jsx(
17570
+ Box,
17571
+ {
17572
+ className: cn("prose max-w-none", className),
17573
+ style: {
17574
+ color: "var(--color-foreground)",
17575
+ "--tw-prose-body": "var(--color-foreground)",
17576
+ "--tw-prose-headings": "var(--color-foreground)",
17577
+ "--tw-prose-lead": "var(--color-muted-foreground)",
17578
+ "--tw-prose-links": "var(--color-primary)",
17579
+ "--tw-prose-bold": "var(--color-foreground)",
17580
+ "--tw-prose-counters": "var(--color-muted-foreground)",
17581
+ "--tw-prose-bullets": "var(--color-muted-foreground)",
17582
+ "--tw-prose-hr": "var(--color-border)",
17583
+ "--tw-prose-quotes": "var(--color-foreground)",
17584
+ "--tw-prose-quote-borders": "var(--color-primary)",
17585
+ "--tw-prose-captions": "var(--color-muted-foreground)",
17586
+ "--tw-prose-code": "var(--color-foreground)",
17587
+ "--tw-prose-pre-code": "var(--color-foreground)",
17588
+ "--tw-prose-pre-bg": "var(--color-muted)",
17589
+ "--tw-prose-th-borders": "var(--color-border)",
17590
+ "--tw-prose-td-borders": "var(--color-border)",
17591
+ direction
17592
+ },
17593
+ children: /* @__PURE__ */ jsxRuntime.jsx(
17594
+ ReactMarkdown__default.default,
17595
+ {
17596
+ remarkPlugins: [remarkMath__default.default, remarkGfm__default.default],
17597
+ rehypePlugins: [
17598
+ [rehypeKatex__default.default, { strict: false, throwOnError: false }]
17599
+ ],
17600
+ components: {
17601
+ code({
17602
+ className: codeClassName,
17603
+ children,
17604
+ inline,
17605
+ ...props
17606
+ }) {
17607
+ if (!inline) {
17608
+ const match = /language-(\w+)/.exec(codeClassName ?? "");
17609
+ const language = match ? match[1] : "text";
17610
+ const code = String(children).replace(/\n$/, "");
17611
+ return /* @__PURE__ */ jsxRuntime.jsx(
17612
+ CodeBlock,
17613
+ {
17614
+ code,
17615
+ language,
17616
+ maxHeight: "60vh"
17617
+ }
17618
+ );
17619
+ }
17620
+ return /* @__PURE__ */ jsxRuntime.jsx(
17621
+ "code",
17622
+ {
17623
+ ...props,
17624
+ className: codeClassName,
17625
+ style: {
17626
+ backgroundColor: "var(--color-muted)",
17627
+ color: "var(--color-foreground)",
17628
+ border: "1px solid var(--color-border)",
17629
+ padding: "0.125rem 0.375rem",
17630
+ borderRadius: "0.25rem",
17631
+ fontSize: "0.875em",
17632
+ fontFamily: "ui-monospace, monospace"
17633
+ },
17634
+ children
17635
+ }
17636
+ );
17637
+ },
17638
+ // Style links
17639
+ a({ href, children, ...props }) {
17640
+ return /* @__PURE__ */ jsxRuntime.jsx(
17641
+ "a",
17642
+ {
17643
+ href,
17644
+ ...props,
17645
+ className: "text-[var(--color-primary)] hover:underline",
17646
+ target: href?.startsWith("http") ? "_blank" : void 0,
17647
+ rel: href?.startsWith("http") ? "noopener noreferrer" : void 0,
17648
+ children
17649
+ }
17650
+ );
17651
+ },
17652
+ // Style tables
17653
+ table({ children, ...props }) {
17654
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto my-4", children: /* @__PURE__ */ jsxRuntime.jsx(
17655
+ "table",
17656
+ {
17657
+ ...props,
17658
+ className: "min-w-full border-collapse border border-[var(--color-border)]",
17659
+ children
17660
+ }
17661
+ ) });
17662
+ },
17663
+ th({ children, ...props }) {
17664
+ return /* @__PURE__ */ jsxRuntime.jsx(
17665
+ "th",
17666
+ {
17667
+ ...props,
17668
+ className: "border border-[var(--color-border)] bg-[var(--color-muted)] px-4 py-2 text-left font-semibold",
17669
+ children
17670
+ }
17671
+ );
17672
+ },
17673
+ td({ children, ...props }) {
17674
+ return /* @__PURE__ */ jsxRuntime.jsx(
17675
+ "td",
17676
+ {
17677
+ ...props,
17678
+ className: "border border-[var(--color-border)] px-4 py-2",
17679
+ children
17680
+ }
17681
+ );
17682
+ },
17683
+ // Style blockquotes
17684
+ blockquote({ children, ...props }) {
17685
+ return /* @__PURE__ */ jsxRuntime.jsx(
17686
+ "blockquote",
17687
+ {
17688
+ ...props,
17689
+ className: "border-l-4 border-[var(--color-primary)] pl-4 italic text-[var(--color-foreground)] my-4",
17690
+ children
17691
+ }
17692
+ );
17693
+ }
17694
+ },
17695
+ children: safeContent
17696
+ }
17697
+ )
17698
+ }
17699
+ );
17700
+ },
17701
+ (prev, next) => prev.content === next.content && prev.className === next.className && prev.direction === next.direction
17702
+ );
17703
+ MarkdownContent.displayName = "MarkdownContent";
17704
+ }
17705
+ });
17688
17706
  function useLongPress(onLongPress, options = {}) {
17689
17707
  const { duration = 500, moveThreshold = 10 } = options;
17690
17708
  const timerRef = React97.useRef(null);
package/dist/avl/index.js CHANGED
@@ -12,10 +12,6 @@ import * as FaIcons from 'react-icons/fa';
12
12
  import { createPortal } from 'react-dom';
13
13
  import { evaluate, createMinimalContext } from '@almadar/evaluator';
14
14
  import { Link, Outlet, useLocation } from 'react-router-dom';
15
- import ReactMarkdown from 'react-markdown';
16
- import remarkGfm from 'remark-gfm';
17
- import remarkMath from 'remark-math';
18
- import rehypeKatex from 'rehype-katex';
19
15
  import SyntaxHighlighter from 'react-syntax-highlighter/dist/esm/prism-light.js';
20
16
  import dark from 'react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus.js';
21
17
  import { orbLanguage, loloLanguage, ORB_COLORS } from '@almadar/syntax';
@@ -35,6 +31,10 @@ import langDiff from 'react-syntax-highlighter/dist/esm/languages/prism/diff.js'
35
31
  import langToml from 'react-syntax-highlighter/dist/esm/languages/prism/toml.js';
36
32
  import langGo from 'react-syntax-highlighter/dist/esm/languages/prism/go.js';
37
33
  import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graphql.js';
34
+ import ReactMarkdown from 'react-markdown';
35
+ import remarkGfm from 'remark-gfm';
36
+ import remarkMath from 'remark-math';
37
+ import rehypeKatex from 'rehype-katex';
38
38
  import { FieldTypeSchema, isInlineTrait, isPageReference, isEntityCall, schemaToIR, getPage, isCircuitEvent } from '@almadar/core';
39
39
  import { useDroppable, useDraggable, DndContext, DragOverlay, useSensors, useSensor, PointerSensor, KeyboardSensor, pointerWithin, rectIntersection, closestCorners } from '@dnd-kit/core';
40
40
  import { sortableKeyboardCoordinates, useSortable, arrayMove, SortableContext, rectSortingStrategy, verticalListSortingStrategy } from '@dnd-kit/sortable';
@@ -16960,137 +16960,6 @@ var init_katex_min = __esm({
16960
16960
  "node_modules/katex/dist/katex.min.css"() {
16961
16961
  }
16962
16962
  });
16963
- var MarkdownContent;
16964
- var init_MarkdownContent = __esm({
16965
- "components/core/molecules/markdown/MarkdownContent.tsx"() {
16966
- init_katex_min();
16967
- init_Box();
16968
- init_useTranslate();
16969
- init_cn();
16970
- MarkdownContent = React97__default.memo(
16971
- ({ content, direction, className }) => {
16972
- const { t: _t } = useTranslate();
16973
- const safeContent = typeof content === "string" ? content : String(content ?? "");
16974
- return /* @__PURE__ */ jsx(
16975
- Box,
16976
- {
16977
- className: cn("prose max-w-none", className),
16978
- style: {
16979
- color: "var(--color-foreground)",
16980
- "--tw-prose-body": "var(--color-foreground)",
16981
- "--tw-prose-headings": "var(--color-foreground)",
16982
- "--tw-prose-lead": "var(--color-muted-foreground)",
16983
- "--tw-prose-links": "var(--color-primary)",
16984
- "--tw-prose-bold": "var(--color-foreground)",
16985
- "--tw-prose-counters": "var(--color-muted-foreground)",
16986
- "--tw-prose-bullets": "var(--color-muted-foreground)",
16987
- "--tw-prose-hr": "var(--color-border)",
16988
- "--tw-prose-quotes": "var(--color-foreground)",
16989
- "--tw-prose-quote-borders": "var(--color-primary)",
16990
- "--tw-prose-captions": "var(--color-muted-foreground)",
16991
- "--tw-prose-code": "var(--color-foreground)",
16992
- "--tw-prose-pre-code": "var(--color-foreground)",
16993
- "--tw-prose-pre-bg": "var(--color-muted)",
16994
- "--tw-prose-th-borders": "var(--color-border)",
16995
- "--tw-prose-td-borders": "var(--color-border)",
16996
- direction
16997
- },
16998
- children: /* @__PURE__ */ jsx(
16999
- ReactMarkdown,
17000
- {
17001
- remarkPlugins: [remarkMath, remarkGfm],
17002
- rehypePlugins: [
17003
- [rehypeKatex, { strict: false, throwOnError: false }]
17004
- ],
17005
- components: {
17006
- // Handle inline code only — fenced code blocks are parsed out separately
17007
- code({ className: codeClassName, children, ...props }) {
17008
- return /* @__PURE__ */ jsx(
17009
- "code",
17010
- {
17011
- ...props,
17012
- className: codeClassName,
17013
- style: {
17014
- backgroundColor: "var(--color-muted)",
17015
- color: "var(--color-foreground)",
17016
- border: "1px solid var(--color-border)",
17017
- padding: "0.125rem 0.375rem",
17018
- borderRadius: "0.25rem",
17019
- fontSize: "0.875em",
17020
- fontFamily: "ui-monospace, monospace"
17021
- },
17022
- children
17023
- }
17024
- );
17025
- },
17026
- // Style links
17027
- a({ href, children, ...props }) {
17028
- return /* @__PURE__ */ jsx(
17029
- "a",
17030
- {
17031
- href,
17032
- ...props,
17033
- className: "text-[var(--color-primary)] hover:underline",
17034
- target: href?.startsWith("http") ? "_blank" : void 0,
17035
- rel: href?.startsWith("http") ? "noopener noreferrer" : void 0,
17036
- children
17037
- }
17038
- );
17039
- },
17040
- // Style tables
17041
- table({ children, ...props }) {
17042
- return /* @__PURE__ */ jsx("div", { className: "overflow-x-auto my-4", children: /* @__PURE__ */ jsx(
17043
- "table",
17044
- {
17045
- ...props,
17046
- className: "min-w-full border-collapse border border-[var(--color-border)]",
17047
- children
17048
- }
17049
- ) });
17050
- },
17051
- th({ children, ...props }) {
17052
- return /* @__PURE__ */ jsx(
17053
- "th",
17054
- {
17055
- ...props,
17056
- className: "border border-[var(--color-border)] bg-[var(--color-muted)] px-4 py-2 text-left font-semibold",
17057
- children
17058
- }
17059
- );
17060
- },
17061
- td({ children, ...props }) {
17062
- return /* @__PURE__ */ jsx(
17063
- "td",
17064
- {
17065
- ...props,
17066
- className: "border border-[var(--color-border)] px-4 py-2",
17067
- children
17068
- }
17069
- );
17070
- },
17071
- // Style blockquotes
17072
- blockquote({ children, ...props }) {
17073
- return /* @__PURE__ */ jsx(
17074
- "blockquote",
17075
- {
17076
- ...props,
17077
- className: "border-l-4 border-[var(--color-primary)] pl-4 italic text-[var(--color-foreground)] my-4",
17078
- children
17079
- }
17080
- );
17081
- }
17082
- },
17083
- children: safeContent
17084
- }
17085
- )
17086
- }
17087
- );
17088
- },
17089
- (prev, next) => prev.content === next.content && prev.className === next.className && prev.direction === next.direction
17090
- );
17091
- MarkdownContent.displayName = "MarkdownContent";
17092
- }
17093
- });
17094
16963
  function computeFoldRegions(code) {
17095
16964
  const lines = code.split("\n");
17096
16965
  const regions = [];
@@ -17636,6 +17505,155 @@ var init_CodeBlock = __esm({
17636
17505
  CodeBlock.displayName = "CodeBlock";
17637
17506
  }
17638
17507
  });
17508
+ var MarkdownContent;
17509
+ var init_MarkdownContent = __esm({
17510
+ "components/core/molecules/markdown/MarkdownContent.tsx"() {
17511
+ init_katex_min();
17512
+ init_Box();
17513
+ init_CodeBlock();
17514
+ init_useTranslate();
17515
+ init_cn();
17516
+ MarkdownContent = React97__default.memo(
17517
+ ({ content, direction, className }) => {
17518
+ const { t: _t } = useTranslate();
17519
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
17520
+ return /* @__PURE__ */ jsx(
17521
+ Box,
17522
+ {
17523
+ className: cn("prose max-w-none", className),
17524
+ style: {
17525
+ color: "var(--color-foreground)",
17526
+ "--tw-prose-body": "var(--color-foreground)",
17527
+ "--tw-prose-headings": "var(--color-foreground)",
17528
+ "--tw-prose-lead": "var(--color-muted-foreground)",
17529
+ "--tw-prose-links": "var(--color-primary)",
17530
+ "--tw-prose-bold": "var(--color-foreground)",
17531
+ "--tw-prose-counters": "var(--color-muted-foreground)",
17532
+ "--tw-prose-bullets": "var(--color-muted-foreground)",
17533
+ "--tw-prose-hr": "var(--color-border)",
17534
+ "--tw-prose-quotes": "var(--color-foreground)",
17535
+ "--tw-prose-quote-borders": "var(--color-primary)",
17536
+ "--tw-prose-captions": "var(--color-muted-foreground)",
17537
+ "--tw-prose-code": "var(--color-foreground)",
17538
+ "--tw-prose-pre-code": "var(--color-foreground)",
17539
+ "--tw-prose-pre-bg": "var(--color-muted)",
17540
+ "--tw-prose-th-borders": "var(--color-border)",
17541
+ "--tw-prose-td-borders": "var(--color-border)",
17542
+ direction
17543
+ },
17544
+ children: /* @__PURE__ */ jsx(
17545
+ ReactMarkdown,
17546
+ {
17547
+ remarkPlugins: [remarkMath, remarkGfm],
17548
+ rehypePlugins: [
17549
+ [rehypeKatex, { strict: false, throwOnError: false }]
17550
+ ],
17551
+ components: {
17552
+ code({
17553
+ className: codeClassName,
17554
+ children,
17555
+ inline,
17556
+ ...props
17557
+ }) {
17558
+ if (!inline) {
17559
+ const match = /language-(\w+)/.exec(codeClassName ?? "");
17560
+ const language = match ? match[1] : "text";
17561
+ const code = String(children).replace(/\n$/, "");
17562
+ return /* @__PURE__ */ jsx(
17563
+ CodeBlock,
17564
+ {
17565
+ code,
17566
+ language,
17567
+ maxHeight: "60vh"
17568
+ }
17569
+ );
17570
+ }
17571
+ return /* @__PURE__ */ jsx(
17572
+ "code",
17573
+ {
17574
+ ...props,
17575
+ className: codeClassName,
17576
+ style: {
17577
+ backgroundColor: "var(--color-muted)",
17578
+ color: "var(--color-foreground)",
17579
+ border: "1px solid var(--color-border)",
17580
+ padding: "0.125rem 0.375rem",
17581
+ borderRadius: "0.25rem",
17582
+ fontSize: "0.875em",
17583
+ fontFamily: "ui-monospace, monospace"
17584
+ },
17585
+ children
17586
+ }
17587
+ );
17588
+ },
17589
+ // Style links
17590
+ a({ href, children, ...props }) {
17591
+ return /* @__PURE__ */ jsx(
17592
+ "a",
17593
+ {
17594
+ href,
17595
+ ...props,
17596
+ className: "text-[var(--color-primary)] hover:underline",
17597
+ target: href?.startsWith("http") ? "_blank" : void 0,
17598
+ rel: href?.startsWith("http") ? "noopener noreferrer" : void 0,
17599
+ children
17600
+ }
17601
+ );
17602
+ },
17603
+ // Style tables
17604
+ table({ children, ...props }) {
17605
+ return /* @__PURE__ */ jsx("div", { className: "overflow-x-auto my-4", children: /* @__PURE__ */ jsx(
17606
+ "table",
17607
+ {
17608
+ ...props,
17609
+ className: "min-w-full border-collapse border border-[var(--color-border)]",
17610
+ children
17611
+ }
17612
+ ) });
17613
+ },
17614
+ th({ children, ...props }) {
17615
+ return /* @__PURE__ */ jsx(
17616
+ "th",
17617
+ {
17618
+ ...props,
17619
+ className: "border border-[var(--color-border)] bg-[var(--color-muted)] px-4 py-2 text-left font-semibold",
17620
+ children
17621
+ }
17622
+ );
17623
+ },
17624
+ td({ children, ...props }) {
17625
+ return /* @__PURE__ */ jsx(
17626
+ "td",
17627
+ {
17628
+ ...props,
17629
+ className: "border border-[var(--color-border)] px-4 py-2",
17630
+ children
17631
+ }
17632
+ );
17633
+ },
17634
+ // Style blockquotes
17635
+ blockquote({ children, ...props }) {
17636
+ return /* @__PURE__ */ jsx(
17637
+ "blockquote",
17638
+ {
17639
+ ...props,
17640
+ className: "border-l-4 border-[var(--color-primary)] pl-4 italic text-[var(--color-foreground)] my-4",
17641
+ children
17642
+ }
17643
+ );
17644
+ }
17645
+ },
17646
+ children: safeContent
17647
+ }
17648
+ )
17649
+ }
17650
+ );
17651
+ },
17652
+ (prev, next) => prev.content === next.content && prev.className === next.className && prev.direction === next.direction
17653
+ );
17654
+ MarkdownContent.displayName = "MarkdownContent";
17655
+ }
17656
+ });
17639
17657
  function useLongPress(onLongPress, options = {}) {
17640
17658
  const { duration = 500, moveThreshold = 10 } = options;
17641
17659
  const timerRef = useRef(null);