framepexls-ui-lib 2.2.8 → 2.2.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.
@@ -6,10 +6,13 @@ type Props = {
6
6
  alt?: string;
7
7
  initials?: string | null;
8
8
  imageFit?: "cover" | "contain";
9
+ imageFetchPriority?: "auto" | "high" | "low";
10
+ imageLoading?: "eager" | "lazy";
11
+ imagePreload?: boolean;
9
12
  className?: string;
10
13
  radiusClass?: string;
11
14
  color?: "accent" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
12
15
  };
13
- declare function AvatarSquare({ size, src, alt, initials, imageFit, className, radiusClass, color, }: Props): React__default.JSX.Element;
16
+ declare function AvatarSquare({ size, src, alt, initials, imageFit, imageFetchPriority, imageLoading, imagePreload, className, radiusClass, color, }: Props): React__default.JSX.Element;
14
17
 
15
18
  export { AvatarSquare as default };
@@ -6,10 +6,13 @@ type Props = {
6
6
  alt?: string;
7
7
  initials?: string | null;
8
8
  imageFit?: "cover" | "contain";
9
+ imageFetchPriority?: "auto" | "high" | "low";
10
+ imageLoading?: "eager" | "lazy";
11
+ imagePreload?: boolean;
9
12
  className?: string;
10
13
  radiusClass?: string;
11
14
  color?: "accent" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
12
15
  };
13
- declare function AvatarSquare({ size, src, alt, initials, imageFit, className, radiusClass, color, }: Props): React__default.JSX.Element;
16
+ declare function AvatarSquare({ size, src, alt, initials, imageFit, imageFetchPriority, imageLoading, imagePreload, className, radiusClass, color, }: Props): React__default.JSX.Element;
14
17
 
15
18
  export { AvatarSquare as default };
@@ -42,12 +42,16 @@ function AvatarSquare({
42
42
  alt = "",
43
43
  initials = null,
44
44
  imageFit = "cover",
45
+ imageFetchPriority,
46
+ imageLoading = "lazy",
47
+ imagePreload = false,
45
48
  className = "",
46
49
  radiusClass = "rounded-xl",
47
50
  color = "accent"
48
51
  }) {
49
52
  const [error, setError] = import_react.default.useState(false);
50
53
  const showImg = !!src && !error;
54
+ const resolvedImageLoading = imagePreload && imageLoading === "lazy" ? "eager" : imageLoading;
51
55
  const boxStyle = { width: size, height: size };
52
56
  const RING = {
53
57
  accent: "ring-[color-mix(in_oklab,var(--ring)_30%,transparent)] dark:ring-[color-mix(in_oklab,var(--ring)_22%,transparent)]",
@@ -118,7 +122,9 @@ function AvatarSquare({
118
122
  fill: true,
119
123
  className: imageFit === "contain" ? "object-contain" : "object-cover",
120
124
  sizes: `${size}px`,
121
- priority: false,
125
+ fetchPriority: imageFetchPriority,
126
+ loading: resolvedImageLoading,
127
+ preload: imagePreload,
122
128
  onError: () => setError(true),
123
129
  draggable: false
124
130
  }
@@ -9,12 +9,16 @@ function AvatarSquare({
9
9
  alt = "",
10
10
  initials = null,
11
11
  imageFit = "cover",
12
+ imageFetchPriority,
13
+ imageLoading = "lazy",
14
+ imagePreload = false,
12
15
  className = "",
13
16
  radiusClass = "rounded-xl",
14
17
  color = "accent"
15
18
  }) {
16
19
  const [error, setError] = React.useState(false);
17
20
  const showImg = !!src && !error;
21
+ const resolvedImageLoading = imagePreload && imageLoading === "lazy" ? "eager" : imageLoading;
18
22
  const boxStyle = { width: size, height: size };
19
23
  const RING = {
20
24
  accent: "ring-[color-mix(in_oklab,var(--ring)_30%,transparent)] dark:ring-[color-mix(in_oklab,var(--ring)_22%,transparent)]",
@@ -85,7 +89,9 @@ function AvatarSquare({
85
89
  fill: true,
86
90
  className: imageFit === "contain" ? "object-contain" : "object-cover",
87
91
  sizes: `${size}px`,
88
- priority: false,
92
+ fetchPriority: imageFetchPriority,
93
+ loading: resolvedImageLoading,
94
+ preload: imagePreload,
89
95
  onError: () => setError(true),
90
96
  draggable: false
91
97
  }
@@ -11,7 +11,7 @@ type CheckboxProps = Omit<React__default.InputHTMLAttributes<HTMLInputElement>,
11
11
  className?: string;
12
12
  inputClassName?: string;
13
13
  };
14
- declare const Checkbox: React__default.ForwardRefExoticComponent<Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & {
14
+ declare const Checkbox: React__default.ForwardRefExoticComponent<Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> & {
15
15
  label?: React__default.ReactNode;
16
16
  description?: React__default.ReactNode;
17
17
  error?: boolean;
@@ -11,7 +11,7 @@ type CheckboxProps = Omit<React__default.InputHTMLAttributes<HTMLInputElement>,
11
11
  className?: string;
12
12
  inputClassName?: string;
13
13
  };
14
- declare const Checkbox: React__default.ForwardRefExoticComponent<Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & {
14
+ declare const Checkbox: React__default.ForwardRefExoticComponent<Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> & {
15
15
  label?: React__default.ReactNode;
16
16
  description?: React__default.ReactNode;
17
17
  error?: boolean;
package/dist/Checkbox.js CHANGED
@@ -39,7 +39,7 @@ var import_Input = __toESM(require("./Input"));
39
39
  function cx(...a) {
40
40
  return a.filter(Boolean).join(" ");
41
41
  }
42
- const baseInput = "appearance-none grid place-items-center rounded border border-slate-300 bg-white shadow-sm outline-none focus:ring-1 focus:ring-inset checked:bg-[var(--primary)] checked:border-[var(--primary)] disabled:opacity-60 disabled:cursor-not-allowed dark:border-white/10 dark:bg-[var(--fx-surface)]";
42
+ const baseInput = "appearance-none grid place-items-center rounded border border-slate-300 bg-white shadow-sm outline-none transition-colors checked:border-[var(--primary)] checked:bg-[var(--primary)] checked:shadow-none disabled:cursor-not-allowed disabled:opacity-60 dark:border-white/10 dark:bg-[var(--fx-surface)]";
43
43
  const sizeMap = {
44
44
  sm: "h-4 w-4",
45
45
  md: "h-5 w-5",
@@ -101,7 +101,7 @@ const Checkbox = import_react.default.forwardRef(
101
101
  className: cx(
102
102
  baseInput,
103
103
  sizeMap[size],
104
- (error || tone === "danger") && "border-[color-mix(in_oklab,var(--danger)_40%,transparent)] focus:[--tw-ring-color:color-mix(in_oklab,var(--danger-ring)_35%,transparent)]",
104
+ (error || tone === "danger") && "border-[color-mix(in_oklab,var(--danger)_40%,transparent)] checked:border-[var(--danger)] checked:bg-[var(--danger)]",
105
105
  inputClassName
106
106
  ),
107
107
  onChange: (e) => {
package/dist/Checkbox.mjs CHANGED
@@ -6,7 +6,7 @@ import Input from "./Input.mjs";
6
6
  function cx(...a) {
7
7
  return a.filter(Boolean).join(" ");
8
8
  }
9
- const baseInput = "appearance-none grid place-items-center rounded border border-slate-300 bg-white shadow-sm outline-none focus:ring-1 focus:ring-inset checked:bg-[var(--primary)] checked:border-[var(--primary)] disabled:opacity-60 disabled:cursor-not-allowed dark:border-white/10 dark:bg-[var(--fx-surface)]";
9
+ const baseInput = "appearance-none grid place-items-center rounded border border-slate-300 bg-white shadow-sm outline-none transition-colors checked:border-[var(--primary)] checked:bg-[var(--primary)] checked:shadow-none disabled:cursor-not-allowed disabled:opacity-60 dark:border-white/10 dark:bg-[var(--fx-surface)]";
10
10
  const sizeMap = {
11
11
  sm: "h-4 w-4",
12
12
  md: "h-5 w-5",
@@ -68,7 +68,7 @@ const Checkbox = React.forwardRef(
68
68
  className: cx(
69
69
  baseInput,
70
70
  sizeMap[size],
71
- (error || tone === "danger") && "border-[color-mix(in_oklab,var(--danger)_40%,transparent)] focus:[--tw-ring-color:color-mix(in_oklab,var(--danger-ring)_35%,transparent)]",
71
+ (error || tone === "danger") && "border-[color-mix(in_oklab,var(--danger)_40%,transparent)] checked:border-[var(--danger)] checked:bg-[var(--danger)]",
72
72
  inputClassName
73
73
  ),
74
74
  onChange: (e) => {
@@ -391,7 +391,7 @@ function DateTimeField({
391
391
  {
392
392
  unstyled: true,
393
393
  type: "button",
394
- className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-[var(--fx-surface)]",
394
+ className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-[var(--border)] bg-[var(--card)] text-[var(--muted)] transition hover:border-[color-mix(in_oklab,var(--primary)_36%,var(--border))] hover:bg-[color-mix(in_oklab,var(--primary)_8%,var(--card))] hover:text-[var(--foreground)] focus:outline-none focus-visible:ring-1 focus-visible:ring-[var(--primary)] active:scale-95",
395
395
  onClick: (e) => {
396
396
  e.preventDefault();
397
397
  openPopover();
@@ -358,7 +358,7 @@ function DateTimeField({
358
358
  {
359
359
  unstyled: true,
360
360
  type: "button",
361
- className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 active:scale-95 dark:border-white/10 dark:bg-[var(--fx-surface)]",
361
+ className: "pointer-events-auto inline-flex h-7 w-7 items-center justify-center rounded-lg border border-[var(--border)] bg-[var(--card)] text-[var(--muted)] transition hover:border-[color-mix(in_oklab,var(--primary)_36%,var(--border))] hover:bg-[color-mix(in_oklab,var(--primary)_8%,var(--card))] hover:text-[var(--foreground)] focus:outline-none focus-visible:ring-1 focus-visible:ring-[var(--primary)] active:scale-95",
362
362
  onClick: (e) => {
363
363
  e.preventDefault();
364
364
  openPopover();
@@ -23,18 +23,89 @@ __export(HeliipLoader_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(HeliipLoader_exports);
25
25
  var import_jsx_runtime = require("react/jsx-runtime");
26
- var import_framer_motion = require("framer-motion");
27
- var import_iconos = require("./iconos");
28
26
  const cx = (...a) => a.filter(Boolean).join(" ");
27
+ const loaderStyles = `
28
+ @keyframes fx-loader-multi-shadow-spin {
29
+ 0% {
30
+ box-shadow:
31
+ 0 -0.83em 0 -0.4em,
32
+ 0 -0.83em 0 -0.42em,
33
+ 0 -0.83em 0 -0.44em,
34
+ 0 -0.83em 0 -0.46em,
35
+ 0 -0.83em 0 -0.477em;
36
+ }
37
+ 5%,
38
+ 95% {
39
+ box-shadow:
40
+ 0 -0.83em 0 -0.4em,
41
+ 0 -0.83em 0 -0.42em,
42
+ 0 -0.83em 0 -0.44em,
43
+ 0 -0.83em 0 -0.46em,
44
+ 0 -0.83em 0 -0.477em;
45
+ }
46
+ 10%,
47
+ 59% {
48
+ box-shadow:
49
+ 0 -0.83em 0 -0.4em,
50
+ -0.087em -0.825em 0 -0.42em,
51
+ -0.173em -0.812em 0 -0.44em,
52
+ -0.256em -0.789em 0 -0.46em,
53
+ -0.297em -0.775em 0 -0.477em;
54
+ }
55
+ 20% {
56
+ box-shadow:
57
+ 0 -0.83em 0 -0.4em,
58
+ -0.338em -0.758em 0 -0.42em,
59
+ -0.555em -0.617em 0 -0.44em,
60
+ -0.671em -0.488em 0 -0.46em,
61
+ -0.749em -0.34em 0 -0.477em;
62
+ }
63
+ 38% {
64
+ box-shadow:
65
+ 0 -0.83em 0 -0.4em,
66
+ -0.377em -0.74em 0 -0.42em,
67
+ -0.645em -0.522em 0 -0.44em,
68
+ -0.775em -0.297em 0 -0.46em,
69
+ -0.82em -0.09em 0 -0.477em;
70
+ }
71
+ 100% {
72
+ box-shadow:
73
+ 0 -0.83em 0 -0.4em,
74
+ 0 -0.83em 0 -0.42em,
75
+ 0 -0.83em 0 -0.44em,
76
+ 0 -0.83em 0 -0.46em,
77
+ 0 -0.83em 0 -0.477em;
78
+ }
79
+ }
80
+
81
+ @keyframes fx-loader-round {
82
+ 0% { transform: rotate(0deg); }
83
+ 100% { transform: rotate(360deg); }
84
+ }
85
+
86
+ .fx-loader-multi-shadow {
87
+ width: 1em;
88
+ height: 1em;
89
+ overflow: hidden;
90
+ border-radius: 50%;
91
+ color: currentColor;
92
+ position: relative;
93
+ text-indent: -9999em;
94
+ transform: translateZ(0);
95
+ animation:
96
+ fx-loader-multi-shadow-spin 1.7s infinite ease,
97
+ fx-loader-round 1.7s infinite ease;
98
+ }
99
+ `;
29
100
  function HeliipLoader({
30
101
  title = "Heliip",
31
- subtitle = "Cargando\u2026",
102
+ subtitle = "Cargando...",
32
103
  className,
33
104
  compact = false,
34
105
  size
35
106
  }) {
36
107
  const resolvedSize = size != null ? size : compact ? "sm" : "md";
37
- const iconSize = resolvedSize === "lg" ? "h-10 w-10" : resolvedSize === "sm" ? "h-5 w-5" : "h-7 w-7";
108
+ const loaderSize = resolvedSize === "lg" ? "text-[45px]" : resolvedSize === "sm" ? "text-[22px]" : "text-[32px]";
38
109
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
39
110
  "div",
40
111
  {
@@ -42,7 +113,8 @@ function HeliipLoader({
42
113
  className: cx("inline-flex items-center justify-center text-[var(--primary)]", className),
43
114
  role: "status",
44
115
  children: [
45
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.motion.span, { animate: { rotate: 360 }, "aria-hidden": true, className: "inline-flex", transition: { duration: 0.8, ease: "linear", repeat: Infinity }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.SpinnerGapIcon, { className: iconSize }) }),
116
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { dangerouslySetInnerHTML: { __html: loaderStyles } }),
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "aria-hidden": true, className: cx("fx-loader-multi-shadow", loaderSize) }),
46
118
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: subtitle || title })
47
119
  ]
48
120
  }
@@ -1,17 +1,88 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { motion } from "framer-motion";
4
- import { SpinnerGapIcon } from "./iconos/index.mjs";
5
3
  const cx = (...a) => a.filter(Boolean).join(" ");
4
+ const loaderStyles = `
5
+ @keyframes fx-loader-multi-shadow-spin {
6
+ 0% {
7
+ box-shadow:
8
+ 0 -0.83em 0 -0.4em,
9
+ 0 -0.83em 0 -0.42em,
10
+ 0 -0.83em 0 -0.44em,
11
+ 0 -0.83em 0 -0.46em,
12
+ 0 -0.83em 0 -0.477em;
13
+ }
14
+ 5%,
15
+ 95% {
16
+ box-shadow:
17
+ 0 -0.83em 0 -0.4em,
18
+ 0 -0.83em 0 -0.42em,
19
+ 0 -0.83em 0 -0.44em,
20
+ 0 -0.83em 0 -0.46em,
21
+ 0 -0.83em 0 -0.477em;
22
+ }
23
+ 10%,
24
+ 59% {
25
+ box-shadow:
26
+ 0 -0.83em 0 -0.4em,
27
+ -0.087em -0.825em 0 -0.42em,
28
+ -0.173em -0.812em 0 -0.44em,
29
+ -0.256em -0.789em 0 -0.46em,
30
+ -0.297em -0.775em 0 -0.477em;
31
+ }
32
+ 20% {
33
+ box-shadow:
34
+ 0 -0.83em 0 -0.4em,
35
+ -0.338em -0.758em 0 -0.42em,
36
+ -0.555em -0.617em 0 -0.44em,
37
+ -0.671em -0.488em 0 -0.46em,
38
+ -0.749em -0.34em 0 -0.477em;
39
+ }
40
+ 38% {
41
+ box-shadow:
42
+ 0 -0.83em 0 -0.4em,
43
+ -0.377em -0.74em 0 -0.42em,
44
+ -0.645em -0.522em 0 -0.44em,
45
+ -0.775em -0.297em 0 -0.46em,
46
+ -0.82em -0.09em 0 -0.477em;
47
+ }
48
+ 100% {
49
+ box-shadow:
50
+ 0 -0.83em 0 -0.4em,
51
+ 0 -0.83em 0 -0.42em,
52
+ 0 -0.83em 0 -0.44em,
53
+ 0 -0.83em 0 -0.46em,
54
+ 0 -0.83em 0 -0.477em;
55
+ }
56
+ }
57
+
58
+ @keyframes fx-loader-round {
59
+ 0% { transform: rotate(0deg); }
60
+ 100% { transform: rotate(360deg); }
61
+ }
62
+
63
+ .fx-loader-multi-shadow {
64
+ width: 1em;
65
+ height: 1em;
66
+ overflow: hidden;
67
+ border-radius: 50%;
68
+ color: currentColor;
69
+ position: relative;
70
+ text-indent: -9999em;
71
+ transform: translateZ(0);
72
+ animation:
73
+ fx-loader-multi-shadow-spin 1.7s infinite ease,
74
+ fx-loader-round 1.7s infinite ease;
75
+ }
76
+ `;
6
77
  function HeliipLoader({
7
78
  title = "Heliip",
8
- subtitle = "Cargando\u2026",
79
+ subtitle = "Cargando...",
9
80
  className,
10
81
  compact = false,
11
82
  size
12
83
  }) {
13
84
  const resolvedSize = size != null ? size : compact ? "sm" : "md";
14
- const iconSize = resolvedSize === "lg" ? "h-10 w-10" : resolvedSize === "sm" ? "h-5 w-5" : "h-7 w-7";
85
+ const loaderSize = resolvedSize === "lg" ? "text-[45px]" : resolvedSize === "sm" ? "text-[22px]" : "text-[32px]";
15
86
  return /* @__PURE__ */ jsxs(
16
87
  "div",
17
88
  {
@@ -19,7 +90,8 @@ function HeliipLoader({
19
90
  className: cx("inline-flex items-center justify-center text-[var(--primary)]", className),
20
91
  role: "status",
21
92
  children: [
22
- /* @__PURE__ */ jsx(motion.span, { animate: { rotate: 360 }, "aria-hidden": true, className: "inline-flex", transition: { duration: 0.8, ease: "linear", repeat: Infinity }, children: /* @__PURE__ */ jsx(SpinnerGapIcon, { className: iconSize }) }),
93
+ /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: loaderStyles } }),
94
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cx("fx-loader-multi-shadow", loaderSize) }),
23
95
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: subtitle || title })
24
96
  ]
25
97
  }
@@ -4,16 +4,84 @@ type Template = {
4
4
  label: string;
5
5
  content: string;
6
6
  };
7
+ type MarkdownRange = {
8
+ start: number;
9
+ end: number;
10
+ kind?: string;
11
+ activeOffset?: number;
12
+ };
13
+ type MarkdownRenderOptions = {
14
+ includeRanges?: boolean;
15
+ selectedRange?: MarkdownRange | null;
16
+ };
17
+ declare function renderMarkdown(value: string, options?: MarkdownRenderOptions): string;
7
18
  type MarkdownEditorProps = {
8
19
  value: string;
9
20
  onChange: (next: string) => void;
10
21
  placeholder?: string;
11
22
  rows?: number;
12
- height?: number;
23
+ height?: number | string;
24
+ fullscreenHeight?: number | string;
13
25
  className?: string;
14
26
  templates?: Template[];
15
27
  disabled?: boolean;
28
+ showPreview?: boolean;
29
+ enablePreview?: boolean;
30
+ enableFullscreen?: boolean;
31
+ enableDiagrams?: boolean;
32
+ maxImageBytes?: number;
33
+ maxVideoBytes?: number;
34
+ labels?: Partial<{
35
+ editor: string;
36
+ preview: string;
37
+ emptyPreview: string;
38
+ headings: string;
39
+ paragraph: string;
40
+ h1: string;
41
+ h2: string;
42
+ h3: string;
43
+ quote: string;
44
+ undo: string;
45
+ redo: string;
46
+ bold: string;
47
+ italic: string;
48
+ code: string;
49
+ bullets: string;
50
+ numbers: string;
51
+ link: string;
52
+ color: string;
53
+ insert: string;
54
+ imageUrl: string;
55
+ imageUpload: string;
56
+ videoUrl: string;
57
+ videoUpload: string;
58
+ table: string;
59
+ lineBreak: string;
60
+ diagram: string;
61
+ umlClass: string;
62
+ umlSequence: string;
63
+ divider: string;
64
+ blocksView: string;
65
+ markdownView: string;
66
+ previewView: string;
67
+ sampleButton: string;
68
+ showPreview: string;
69
+ hidePreview: string;
70
+ fullscreen: string;
71
+ exitFullscreen: string;
72
+ }>;
16
73
  };
17
- declare function MarkdownEditor({ value, onChange, placeholder, rows, height, className, templates, disabled, }: MarkdownEditorProps): React__default.JSX.Element;
74
+ declare function MarkdownPreview({ value, className, emptyLabel, selectable, selectedRange, onSelectRange, onOpenSelectionMenu, showBlockControls, onOpenBlockMenu, }: {
75
+ value: string | null | undefined;
76
+ className?: string;
77
+ emptyLabel?: string;
78
+ selectable?: boolean;
79
+ selectedRange?: MarkdownRange | null;
80
+ onSelectRange?: (range: MarkdownRange) => void;
81
+ onOpenSelectionMenu?: (event: React__default.MouseEvent, range: MarkdownRange) => void;
82
+ showBlockControls?: boolean;
83
+ onOpenBlockMenu?: (event: React__default.MouseEvent, range: MarkdownRange) => void;
84
+ }): React__default.JSX.Element;
85
+ declare function MarkdownEditor({ value, onChange, placeholder, rows, height, className, templates, disabled, fullscreenHeight, showPreview, enablePreview, enableFullscreen, enableDiagrams, labels, maxImageBytes, maxVideoBytes, }: MarkdownEditorProps): React__default.JSX.Element;
18
86
 
19
- export { type MarkdownEditorProps, MarkdownEditor as default };
87
+ export { type MarkdownEditorProps, MarkdownPreview, MarkdownEditor as default, renderMarkdown };
@@ -4,16 +4,84 @@ type Template = {
4
4
  label: string;
5
5
  content: string;
6
6
  };
7
+ type MarkdownRange = {
8
+ start: number;
9
+ end: number;
10
+ kind?: string;
11
+ activeOffset?: number;
12
+ };
13
+ type MarkdownRenderOptions = {
14
+ includeRanges?: boolean;
15
+ selectedRange?: MarkdownRange | null;
16
+ };
17
+ declare function renderMarkdown(value: string, options?: MarkdownRenderOptions): string;
7
18
  type MarkdownEditorProps = {
8
19
  value: string;
9
20
  onChange: (next: string) => void;
10
21
  placeholder?: string;
11
22
  rows?: number;
12
- height?: number;
23
+ height?: number | string;
24
+ fullscreenHeight?: number | string;
13
25
  className?: string;
14
26
  templates?: Template[];
15
27
  disabled?: boolean;
28
+ showPreview?: boolean;
29
+ enablePreview?: boolean;
30
+ enableFullscreen?: boolean;
31
+ enableDiagrams?: boolean;
32
+ maxImageBytes?: number;
33
+ maxVideoBytes?: number;
34
+ labels?: Partial<{
35
+ editor: string;
36
+ preview: string;
37
+ emptyPreview: string;
38
+ headings: string;
39
+ paragraph: string;
40
+ h1: string;
41
+ h2: string;
42
+ h3: string;
43
+ quote: string;
44
+ undo: string;
45
+ redo: string;
46
+ bold: string;
47
+ italic: string;
48
+ code: string;
49
+ bullets: string;
50
+ numbers: string;
51
+ link: string;
52
+ color: string;
53
+ insert: string;
54
+ imageUrl: string;
55
+ imageUpload: string;
56
+ videoUrl: string;
57
+ videoUpload: string;
58
+ table: string;
59
+ lineBreak: string;
60
+ diagram: string;
61
+ umlClass: string;
62
+ umlSequence: string;
63
+ divider: string;
64
+ blocksView: string;
65
+ markdownView: string;
66
+ previewView: string;
67
+ sampleButton: string;
68
+ showPreview: string;
69
+ hidePreview: string;
70
+ fullscreen: string;
71
+ exitFullscreen: string;
72
+ }>;
16
73
  };
17
- declare function MarkdownEditor({ value, onChange, placeholder, rows, height, className, templates, disabled, }: MarkdownEditorProps): React__default.JSX.Element;
74
+ declare function MarkdownPreview({ value, className, emptyLabel, selectable, selectedRange, onSelectRange, onOpenSelectionMenu, showBlockControls, onOpenBlockMenu, }: {
75
+ value: string | null | undefined;
76
+ className?: string;
77
+ emptyLabel?: string;
78
+ selectable?: boolean;
79
+ selectedRange?: MarkdownRange | null;
80
+ onSelectRange?: (range: MarkdownRange) => void;
81
+ onOpenSelectionMenu?: (event: React__default.MouseEvent, range: MarkdownRange) => void;
82
+ showBlockControls?: boolean;
83
+ onOpenBlockMenu?: (event: React__default.MouseEvent, range: MarkdownRange) => void;
84
+ }): React__default.JSX.Element;
85
+ declare function MarkdownEditor({ value, onChange, placeholder, rows, height, className, templates, disabled, fullscreenHeight, showPreview, enablePreview, enableFullscreen, enableDiagrams, labels, maxImageBytes, maxVideoBytes, }: MarkdownEditorProps): React__default.JSX.Element;
18
86
 
19
- export { type MarkdownEditorProps, MarkdownEditor as default };
87
+ export { type MarkdownEditorProps, MarkdownPreview, MarkdownEditor as default, renderMarkdown };