@optiaxiom/proteus 3.0.0 → 3.0.2

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.
Files changed (23) hide show
  1. package/dist/esm/assets/src/proteus-chart/{ProteusChart.css.ts.vanilla-Bz5kJlPf.css → ProteusChart.css.ts.vanilla-Cs4PLepm.css} +2 -2
  2. package/dist/esm/assets/src/proteus-chart/{ProteusChartTooltipContent.css.ts.vanilla-C-emx3XI.css → ProteusChartTooltipContent.css.ts.vanilla-CWbrMa_L.css} +2 -2
  3. package/dist/esm/assets/src/proteus-document/{ProteusDocumentShell.css.ts.vanilla-B5frmU00.css → ProteusDocumentShell.css.ts.vanilla-C3QyhoDK.css} +2 -2
  4. package/dist/esm/assets/src/proteus-image-carousel/{ProteusImageCarousel.css.ts.vanilla-BfsScz52.css → ProteusImageCarousel.css.ts.vanilla-iR8KhxVx.css} +2 -2
  5. package/dist/esm/assets/src/proteus-markdown/ProteusMarkdown.css.ts.vanilla-BaIAffSf.css +61 -0
  6. package/dist/esm/assets/src/proteus-question/{ProteusQuestion.css.ts.vanilla-BqFZ3-WU.css → ProteusQuestion.css.ts.vanilla-Ba9cfjMj.css} +2 -2
  7. package/dist/esm/index.js +3 -1
  8. package/dist/esm/proteus-chart/ProteusChart-css.js +1 -1
  9. package/dist/esm/proteus-chart/ProteusChartTooltipContent-css.js +1 -1
  10. package/dist/esm/proteus-document/ProteusDocumentShell-css.js +1 -1
  11. package/dist/esm/proteus-element/ProteusElement.js +4 -0
  12. package/dist/esm/proteus-image/ProteusImage.js +25 -84
  13. package/dist/esm/proteus-image-carousel/ProteusImageCarousel-css.js +2 -1
  14. package/dist/esm/proteus-image-carousel/ProteusImageCarousel.js +21 -7
  15. package/dist/esm/proteus-markdown/ProteusMarkdown-css.js +29 -0
  16. package/dist/esm/proteus-markdown/ProteusMarkdown.js +120 -0
  17. package/dist/esm/proteus-question/ProteusQuestion-css.js +1 -1
  18. package/dist/esm/proteus-question/ProteusQuestion.js +19 -3
  19. package/dist/esm/proteus-rich-text-editor/ProteusRichTextEditor.js +23 -0
  20. package/dist/esm/schema/public-schema.js +168 -5
  21. package/dist/esm/schema/runtime-schema.js +166 -5
  22. package/dist/index.d.ts +45 -7
  23. package/package.json +5 -3
@@ -1,5 +1,5 @@
1
- @layer optiaxiom.rp4ht0;
2
- @layer optiaxiom.rp4ht0 {
1
+ @layer optiaxiom._1r27r56;
2
+ @layer optiaxiom._1r27r56 {
3
3
  .ProteusChart__jmlqij1 {
4
4
  border-radius: 16px;
5
5
  }
@@ -1,5 +1,5 @@
1
- @layer optiaxiom.rp4ht0;
2
- @layer optiaxiom.rp4ht0 {
1
+ @layer optiaxiom._1r27r56;
2
+ @layer optiaxiom._1r27r56 {
3
3
  .ProteusChartTooltipContent__1gsvq810 {
4
4
  min-width: 128px;
5
5
  position: absolute;
@@ -1,5 +1,5 @@
1
- @layer optiaxiom.rp4ht0;
2
- @layer optiaxiom.rp4ht0 {
1
+ @layer optiaxiom._1r27r56;
2
+ @layer optiaxiom._1r27r56 {
3
3
  .ProteusDocumentShell__vpuvfj1 {
4
4
  margin: -4px;
5
5
  }
@@ -1,5 +1,5 @@
1
- @layer optiaxiom.rp4ht0;
2
- @layer optiaxiom.rp4ht0 {
1
+ @layer optiaxiom._1r27r56;
2
+ @layer optiaxiom._1r27r56 {
3
3
  .ProteusImageCarousel__1t6qej70 {
4
4
  outline: none;
5
5
  user-select: none;
@@ -0,0 +1,61 @@
1
+ @layer optiaxiom._1r27r56;
2
+ @layer optiaxiom._1r27r56 {
3
+ .ProteusMarkdown__1ibq5ae0 > * {
4
+ margin-bottom: 1em;
5
+ margin-top: 0;
6
+ }
7
+ .ProteusMarkdown__1ibq5ae0 li > * {
8
+ margin-bottom: 1em;
9
+ margin-top: 1em;
10
+ }
11
+ .ProteusMarkdown__1ibq5ae0 li:first-child > * {
12
+ margin-top: 0;
13
+ }
14
+ :is(.ProteusMarkdown__1ibq5ae0, .ProteusMarkdown__1ibq5ae0 li) > :is(h1, h2, h3, h4, h5, h6) {
15
+ margin-bottom: 0.6em;
16
+ margin-top: 1.2em;
17
+ }
18
+ .ProteusMarkdown__1ibq5ae0 > .ProteusMarkdown__1ibq5ae1 {
19
+ margin-bottom: 1em;
20
+ margin-top: 1em;
21
+ }
22
+ :is(.ProteusMarkdown__1ibq5ae0, .ProteusMarkdown__1ibq5ae0 li) > :is(h1, h2, h3, h4, h5, h6) + * {
23
+ margin-top: 0;
24
+ }
25
+ .ProteusMarkdown__1ibq5ae0 > :has(+ .ProteusMarkdown__1ibq5ae1), :is(.ProteusMarkdown__1ibq5ae0, .ProteusMarkdown__1ibq5ae0 li) > :last-child {
26
+ margin-bottom: 0;
27
+ }
28
+ .ProteusMarkdown__1ibq5ae0 > .ProteusMarkdown__1ibq5ae1 + *, .ProteusMarkdown__1ibq5ae0 > :first-child {
29
+ margin-top: 0;
30
+ }
31
+ .ProteusMarkdown__1ibq5ae2 {
32
+ margin-bottom: 2em;
33
+ margin-top: 2em;
34
+ }
35
+ .ProteusMarkdown__1ibq5ae3 {
36
+ list-style-type: decimal;
37
+ padding-inline-start: 1.5em;
38
+ }
39
+ .ProteusMarkdown__1ibq5ae4 {
40
+ list-style-type: disc;
41
+ padding-inline-start: 1.5em;
42
+ }
43
+ .ProteusMarkdown__1ibq5ae5 code {
44
+ background-color: transparent;
45
+ border-radius: 0;
46
+ padding: 0;
47
+ }
48
+ .ProteusMarkdown__1ibq5ae6 {
49
+ background-color: var(--ax-colors-bg-secondary);
50
+ border-radius: var(--ax-borderRadius-md);
51
+ font-size: 85%;
52
+ font-variant-ligatures: none;
53
+ padding: 0.2em 0.4em;
54
+ white-space: break-spaces;
55
+ }
56
+ .ProteusMarkdown__1ibq5ae7 {
57
+ display: inline-block;
58
+ max-width: 100%;
59
+ vertical-align: text-bottom;
60
+ }
61
+ }
@@ -1,5 +1,5 @@
1
- @layer optiaxiom.rp4ht0;
2
- @layer optiaxiom.rp4ht0 {
1
+ @layer optiaxiom._1r27r56;
2
+ @layer optiaxiom._1r27r56 {
3
3
  .ProteusQuestion__8f590p0 {
4
4
  outline: none;
5
5
  }
package/dist/esm/index.js CHANGED
@@ -13,10 +13,12 @@ import { ProteusInput } from "./proteus-input/ProteusInput.js";
13
13
  import { ProteusLength } from "./proteus-length/ProteusLength.js";
14
14
  import { ProteusMapIndex } from "./proteus-map-index/ProteusMapIndex.js";
15
15
  import { ProteusMap } from "./proteus-map/ProteusMap.js";
16
+ import { ProteusMarkdown } from "./proteus-markdown/ProteusMarkdown.js";
16
17
  import { ProteusPillMenu } from "./proteus-pill-menu/ProteusPillMenu.js";
18
+ import { ProteusRichTextEditor } from "./proteus-rich-text-editor/ProteusRichTextEditor.js";
17
19
  import { ProteusSelect } from "./proteus-select/ProteusSelect.js";
18
20
  import { ProteusShow } from "./proteus-show/ProteusShow.js";
19
21
  import { ProteusTextarea } from "./proteus-textarea/ProteusTextarea.js";
20
22
  import { ProteusDocumentShell } from "./proteus-document/ProteusDocumentShell.js";
21
23
  import { ProteusDocumentRenderer } from "./proteus-document/ProteusDocumentRenderer.js";
22
- export { ProteusAction, ProteusBridge, ProteusChart, ProteusDataTable, ProteusDateInput, ProteusDocumentRenderer, ProteusDocumentShell, ProteusFederated, ProteusFileUpload, ProteusImage, ProteusImageCarousel, ProteusInput, ProteusLength, ProteusMap, ProteusMapIndex, ProteusPillMenu, ProteusSelect, ProteusShow, ProteusTextarea, safeParseDocument, useProteusValue };
24
+ export { ProteusAction, ProteusBridge, ProteusChart, ProteusDataTable, ProteusDateInput, ProteusDocumentRenderer, ProteusDocumentShell, ProteusFederated, ProteusFileUpload, ProteusImage, ProteusImageCarousel, ProteusInput, ProteusLength, ProteusMap, ProteusMapIndex, ProteusMarkdown, ProteusPillMenu, ProteusRichTextEditor, ProteusSelect, ProteusShow, ProteusTextarea, safeParseDocument, useProteusValue };
@@ -1,4 +1,4 @@
1
- import "./../assets/src/proteus-chart/ProteusChart.css.ts.vanilla-Bz5kJlPf.css";
1
+ import "./../assets/src/proteus-chart/ProteusChart.css.ts.vanilla-Cs4PLepm.css";
2
2
  import { recipe } from "@optiaxiom/react/css-runtime";
3
3
  //#region src/proteus-chart/ProteusChart.css.ts
4
4
  var chart = recipe({ base: [
@@ -1,5 +1,5 @@
1
1
  import { recipe } from "@optiaxiom/react/css-runtime";
2
- import "./../assets/src/proteus-chart/ProteusChartTooltipContent.css.ts.vanilla-C-emx3XI.css";
2
+ import "./../assets/src/proteus-chart/ProteusChartTooltipContent.css.ts.vanilla-CWbrMa_L.css";
3
3
  //#region src/proteus-chart/ProteusChartTooltipContent.css.ts
4
4
  var tooltip = recipe({ base: [{
5
5
  bg: "bg.default",
@@ -1,5 +1,5 @@
1
1
  import { recipe } from "@optiaxiom/react/css-runtime";
2
- import "./../assets/src/proteus-document/ProteusDocumentShell.css.ts.vanilla-B5frmU00.css";
2
+ import "./../assets/src/proteus-document/ProteusDocumentShell.css.ts.vanilla-C3QyhoDK.css";
3
3
  //#region src/proteus-document/ProteusDocumentShell.css.ts
4
4
  var body = recipe({
5
5
  base: [{
@@ -17,8 +17,10 @@ import { ProteusInput } from "../proteus-input/ProteusInput.js";
17
17
  import { ProteusLength } from "../proteus-length/ProteusLength.js";
18
18
  import { ProteusMapIndex } from "../proteus-map-index/ProteusMapIndex.js";
19
19
  import { ProteusMap } from "../proteus-map/ProteusMap.js";
20
+ import { ProteusMarkdown } from "../proteus-markdown/ProteusMarkdown.js";
20
21
  import { ProteusPillMenu } from "../proteus-pill-menu/ProteusPillMenu.js";
21
22
  import { ProteusQuestion } from "../proteus-question/ProteusQuestion.js";
23
+ import { ProteusRichTextEditor } from "../proteus-rich-text-editor/ProteusRichTextEditor.js";
22
24
  import { ProteusSelect } from "../proteus-select/ProteusSelect.js";
23
25
  import { ProteusShow } from "../proteus-show/ProteusShow.js";
24
26
  import { ProteusSwitch } from "../proteus-switch/ProteusSwitch.js";
@@ -99,9 +101,11 @@ const ProteusElement = ({ element: elementProp }) => {
99
101
  });
100
102
  case "Map": return /* @__PURE__ */ jsx(ProteusMap, { ...resolve(element) });
101
103
  case "MapIndex": return /* @__PURE__ */ jsx(ProteusMapIndex, { ...resolve(element) });
104
+ case "Markdown": return /* @__PURE__ */ jsx(ProteusMarkdown, { ...resolve(element) });
102
105
  case "PillMenu": return /* @__PURE__ */ jsx(ProteusPillMenu, { ...resolve(element) });
103
106
  case "Question": return /* @__PURE__ */ jsx(ProteusQuestion, { ...resolve(element) });
104
107
  case "Range": return /* @__PURE__ */ jsx(Range, { ...resolve(element) });
108
+ case "RichTextEditor": return /* @__PURE__ */ jsx(ProteusRichTextEditor, { ...resolve(element) });
105
109
  case "Select": return /* @__PURE__ */ jsx(ProteusSelect, { ...resolve(element) });
106
110
  case "SelectContent": return /* @__PURE__ */ jsx(SelectContent, { ...resolve(element) });
107
111
  case "SelectTrigger": return /* @__PURE__ */ jsx(SelectTrigger, { ...resolve(element) });
@@ -1,13 +1,9 @@
1
1
  "use client";
2
- import { useProteusDocumentContext } from "../proteus-document/ProteusDocumentContext.js";
3
- import { Box, Button, Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTrigger, Spinner } from "@optiaxiom/react";
2
+ import { Box, Spinner } from "@optiaxiom/react";
4
3
  import { useState } from "react";
5
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
5
  //#region src/proteus-image/ProteusImage.tsx
7
- function ProteusImage(props) {
8
- const { onEvent } = useProteusDocumentContext("@optiaxiom/proteus/ProteusImage");
9
- const [open, setOpen] = useState(false);
10
- const [isDownloading, setIsDownloading] = useState(false);
6
+ function ProteusImage({ ...props }) {
11
7
  const [isLoaded, setIsLoaded] = useState(false);
12
8
  return /* @__PURE__ */ jsxs(Fragment, { children: [!isLoaded && /* @__PURE__ */ jsx(Box, {
13
9
  alignItems: "center",
@@ -16,87 +12,32 @@ function ProteusImage(props) {
16
12
  justifyContent: "center",
17
13
  p: "24",
18
14
  rounded: "md",
19
- style: { aspectRatio: "16 / 9" },
20
15
  w: "full",
21
16
  ...props,
22
17
  children: /* @__PURE__ */ jsx(Spinner, {})
23
- }), /* @__PURE__ */ jsxs(Dialog, {
24
- onOpenChange: setOpen,
25
- open,
26
- children: [/* @__PURE__ */ jsx(DialogTrigger, {
27
- "aria-label": "Expand",
28
- asChild: true,
29
- children: /* @__PURE__ */ jsx(Box, {
30
- asChild: true,
31
- cursor: "pointer",
32
- display: isLoaded ? "flex" : "none",
33
- objectFit: "contain",
34
- overflow: "hidden",
35
- rounded: "inherit",
36
- size: "full",
37
- ...props,
38
- children: /* @__PURE__ */ jsx("img", {
39
- alt: props.alt,
40
- draggable: true,
41
- onDragStart: (event) => {
42
- event.stopPropagation();
43
- event.dataTransfer.effectAllowed = "copy";
44
- event.dataTransfer.setData("opal-chat-dnd-data", JSON.stringify({
45
- link: props.src,
46
- mime_type: "image/*",
47
- name: props.src?.split("/").pop()
48
- }));
49
- },
50
- onLoad: () => setIsLoaded(true),
51
- src: props.src
52
- })
53
- })
54
- }), /* @__PURE__ */ jsxs(DialogContent, {
55
- size: "fullscreen",
56
- children: [
57
- /* @__PURE__ */ jsx(DialogHeader, {
58
- lineClamp: "1",
59
- children: props.alt
60
- }),
61
- /* @__PURE__ */ jsx(DialogBody, {
62
- overflow: "hidden",
63
- children: /* @__PURE__ */ jsx(Box, {
64
- asChild: true,
65
- display: "block",
66
- maxH: "full",
67
- maxW: "full",
68
- objectFit: "contain",
69
- children: /* @__PURE__ */ jsx("img", {
70
- alt: props.alt,
71
- src: props.src
72
- })
73
- })
74
- }),
75
- /* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, { children: "Close" }), /* @__PURE__ */ jsx(Button, {
76
- appearance: "primary",
77
- asChild: true,
78
- loading: isDownloading,
79
- onClick: async (event) => {
80
- event.preventDefault();
81
- if (isDownloading) return;
82
- setIsDownloading(true);
83
- try {
84
- await onEvent({
85
- action: "download",
86
- url: String(props.src)
87
- });
88
- } finally {
89
- setIsDownloading(false);
90
- }
91
- },
92
- children: /* @__PURE__ */ jsx("a", {
93
- download: true,
94
- href: props.src,
95
- children: "Download"
96
- })
97
- })] })
98
- ]
99
- })]
18
+ }), /* @__PURE__ */ jsx(Box, {
19
+ asChild: true,
20
+ display: isLoaded ? "flex" : "none",
21
+ objectFit: "contain",
22
+ overflow: "hidden",
23
+ rounded: "inherit",
24
+ size: "full",
25
+ ...props,
26
+ children: /* @__PURE__ */ jsx("img", {
27
+ alt: props.alt,
28
+ draggable: true,
29
+ onDragStart: (event) => {
30
+ event.stopPropagation();
31
+ event.dataTransfer.effectAllowed = "copy";
32
+ event.dataTransfer.setData("opal-chat-dnd-data", JSON.stringify({
33
+ link: props.src,
34
+ mime_type: "image/*",
35
+ name: props.src?.split("/").pop()
36
+ }));
37
+ },
38
+ onLoad: () => setIsLoaded(true),
39
+ src: props.src
40
+ })
100
41
  })] });
101
42
  }
102
43
  ProteusImage.displayName = "@optiaxiom/proteus/ProteusImage";
@@ -1,5 +1,5 @@
1
1
  import { recipe } from "@optiaxiom/react/css-runtime";
2
- import "./../assets/src/proteus-image-carousel/ProteusImageCarousel.css.ts.vanilla-BfsScz52.css";
2
+ import "./../assets/src/proteus-image-carousel/ProteusImageCarousel.css.ts.vanilla-iR8KhxVx.css";
3
3
  //#region src/proteus-image-carousel/ProteusImageCarousel.css.ts
4
4
  var carousel = recipe({ base: [{
5
5
  flexDirection: "column",
@@ -26,6 +26,7 @@ var navButton = recipe({
26
26
  } }
27
27
  });
28
28
  var slide = recipe({ base: [{
29
+ cursor: "pointer",
29
30
  objectFit: "cover",
30
31
  size: "full"
31
32
  }, "ProteusImageCarousel__1t6qej74"] });
@@ -24,8 +24,9 @@ function ProteusImageCarousel({ images, title }) {
24
24
  const [canScrollNext, setCanScrollNext] = useState(false);
25
25
  const onSelect = useCallback(() => {
26
26
  if (!emblaMainApi || !emblaThumbsApi) return;
27
- setSelectedIndex(emblaMainApi.selectedScrollSnap());
28
- emblaThumbsApi.scrollTo(emblaMainApi.selectedScrollSnap());
27
+ const index = emblaMainApi.selectedScrollSnap();
28
+ setSelectedIndex(index);
29
+ emblaThumbsApi.scrollTo(index);
29
30
  setCanScrollPrev(emblaMainApi.canScrollPrev());
30
31
  setCanScrollNext(emblaMainApi.canScrollNext());
31
32
  }, [emblaMainApi, emblaThumbsApi]);
@@ -61,7 +62,11 @@ function ProteusImageCarousel({ images, title }) {
61
62
  children: /* @__PURE__ */ jsx(Group, {
62
63
  ...slideContainer(),
63
64
  children: images.map((image, index) => /* @__PURE__ */ jsx(ProteusImage, {
64
- alt: image.alt,
65
+ alt: image.name ?? image.alt,
66
+ onClick: () => onEvent({
67
+ action: "preview",
68
+ file: toPreviewFile(image)
69
+ }),
65
70
  src: image.src,
66
71
  ...slide()
67
72
  }, index))
@@ -96,7 +101,7 @@ function ProteusImageCarousel({ images, title }) {
96
101
  objectFit: "cover",
97
102
  size: "full",
98
103
  children: /* @__PURE__ */ jsx("img", {
99
- alt: image.alt,
104
+ alt: image.name ?? image.alt,
100
105
  src: image.thumb ?? image.src
101
106
  })
102
107
  })
@@ -122,13 +127,13 @@ function ProteusImageCarousel({ images, title }) {
122
127
  options: [{
123
128
  execute: () => onEvent({
124
129
  action: "download",
125
- url: images[selectedIndex].src
130
+ url: images[selectedIndex].file_link ?? images[selectedIndex].src
126
131
  }),
127
132
  label: "Download this image"
128
133
  }, {
129
134
  execute: () => onEvent({
130
135
  action: "download",
131
- url: images.map((image) => image.src)
136
+ url: images.map((image) => image.file_link ?? image.src)
132
137
  }),
133
138
  label: "Download all images"
134
139
  }],
@@ -142,7 +147,7 @@ function ProteusImageCarousel({ images, title }) {
142
147
  ml: "auto",
143
148
  onClick: () => onEvent({
144
149
  action: "download",
145
- url: images[0].src
150
+ url: images[0].file_link ?? images[0].src
146
151
  }),
147
152
  children: "Download"
148
153
  })]
@@ -150,6 +155,15 @@ function ProteusImageCarousel({ images, title }) {
150
155
  ]
151
156
  });
152
157
  }
158
+ function toPreviewFile({ alt, extension, file_link, full_name, mime_type, name, src }) {
159
+ return {
160
+ extension: extension ?? "JPG",
161
+ file_link: file_link ?? src,
162
+ full_name: full_name ?? alt ?? src,
163
+ mime_type: mime_type ?? "image/jpeg",
164
+ name: name ?? alt ?? src
165
+ };
166
+ }
153
167
  ProteusImageCarousel.displayName = "@optiaxiom/proteus/ProteusImageCarousel";
154
168
  //#endregion
155
169
  export { ProteusImageCarousel };
@@ -0,0 +1,29 @@
1
+ import { recipe } from "@optiaxiom/react/css-runtime";
2
+ import "./../assets/src/proteus-markdown/ProteusMarkdown.css.ts.vanilla-BaIAffSf.css";
3
+ //#region src/proteus-markdown/ProteusMarkdown.css.ts
4
+ var code = recipe({ base: [{
5
+ bg: "bg.secondary",
6
+ overflow: "auto",
7
+ p: "12",
8
+ rounded: "md"
9
+ }, "ProteusMarkdown__1ibq5ae5"] });
10
+ var inlineCode = recipe({ base: [{ fontFamily: "mono" }, "ProteusMarkdown__1ibq5ae6"] });
11
+ var inlineImage = recipe({ base: [{ rounded: "sm" }, "ProteusMarkdown__1ibq5ae7"] });
12
+ var markdown = recipe({ base: [{
13
+ color: "fg.default",
14
+ fontSize: "md"
15
+ }, "ProteusMarkdown__1ibq5ae0"] });
16
+ var orderedList = recipe({ base: [{
17
+ display: "flex",
18
+ flexDirection: "column",
19
+ gap: "6"
20
+ }, "ProteusMarkdown__1ibq5ae3"] });
21
+ var separator = "ProteusMarkdown__1ibq5ae1";
22
+ var table = recipe({ base: ["ProteusMarkdown__1ibq5ae2"] });
23
+ var unorderedList = recipe({ base: [{
24
+ display: "flex",
25
+ flexDirection: "column",
26
+ gap: "6"
27
+ }, "ProteusMarkdown__1ibq5ae4"] });
28
+ //#endregion
29
+ export { code, inlineCode, inlineImage, markdown, orderedList, separator, table, unorderedList };
@@ -0,0 +1,120 @@
1
+ "use client";
2
+ import { code, inlineCode, inlineImage, markdown, orderedList, separator, table, unorderedList } from "./ProteusMarkdown-css.js";
3
+ import { Box, Heading, Link, Separator, Table, TableBody, TableCell, TableHeader, TableHeaderCell, TableRow, Text } from "@optiaxiom/react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import Markdown from "react-markdown";
6
+ import remarkGfm from "remark-gfm";
7
+ //#region src/proteus-markdown/ProteusMarkdown.tsx
8
+ const mapLevelToFontSize = {
9
+ "1": "2xl",
10
+ "2": "xl",
11
+ "3": "lg",
12
+ "4": "md"
13
+ };
14
+ /**
15
+ * Maps markdown heading levels (h1-h6) onto Axiom Heading levels (1-4). Markdown
16
+ * supports six levels but Heading only supports four, so deeper levels are
17
+ * clamped to the smallest visual size.
18
+ */
19
+ const heading = (level, Tag) => function MarkdownHeading({ children }) {
20
+ return /* @__PURE__ */ jsx(Heading, {
21
+ asChild: true,
22
+ fontSize: mapLevelToFontSize[level],
23
+ fontWeight: "600",
24
+ level,
25
+ children: /* @__PURE__ */ jsx(Tag, { children })
26
+ });
27
+ };
28
+ const components = {
29
+ a: ({ children, href }) => /* @__PURE__ */ jsx(Link, {
30
+ href,
31
+ rel: "noopener noreferrer",
32
+ target: "_blank",
33
+ children
34
+ }),
35
+ blockquote: ({ children }) => /* @__PURE__ */ jsx(Box, {
36
+ asChild: true,
37
+ borderL: "2",
38
+ color: "fg.secondary",
39
+ px: "16",
40
+ py: "6",
41
+ children: /* @__PURE__ */ jsx("blockquote", { children })
42
+ }),
43
+ code: ({ children }) => /* @__PURE__ */ jsx(Box, {
44
+ asChild: true,
45
+ ...inlineCode(),
46
+ children: /* @__PURE__ */ jsx("code", { children })
47
+ }),
48
+ em: ({ children }) => /* @__PURE__ */ jsx(Box, {
49
+ asChild: true,
50
+ children: /* @__PURE__ */ jsx("em", { children })
51
+ }),
52
+ h1: heading("1", "h1"),
53
+ h2: heading("2", "h2"),
54
+ h3: heading("3", "h3"),
55
+ h4: heading("4", "h4"),
56
+ h5: heading("4", "h5"),
57
+ h6: heading("4", "h6"),
58
+ hr: () => /* @__PURE__ */ jsx(Separator, { className: separator }),
59
+ img: ({ alt, src }) => typeof src === "string" ? /* @__PURE__ */ jsx(Box, {
60
+ asChild: true,
61
+ ...inlineImage(),
62
+ children: /* @__PURE__ */ jsx("img", {
63
+ alt: alt ?? "",
64
+ src
65
+ })
66
+ }) : null,
67
+ li: ({ children }) => /* @__PURE__ */ jsx(Text, {
68
+ asChild: true,
69
+ children: /* @__PURE__ */ jsx("li", { children })
70
+ }),
71
+ ol: ({ children }) => /* @__PURE__ */ jsx(Box, {
72
+ asChild: true,
73
+ ...orderedList(),
74
+ children: /* @__PURE__ */ jsx("ol", { children })
75
+ }),
76
+ p: ({ children }) => /* @__PURE__ */ jsx(Text, { children }),
77
+ pre: ({ children }) => /* @__PURE__ */ jsx(Box, {
78
+ asChild: true,
79
+ ...code(),
80
+ children: /* @__PURE__ */ jsx("pre", { children })
81
+ }),
82
+ strong: ({ children }) => /* @__PURE__ */ jsx(Box, {
83
+ asChild: true,
84
+ display: "inline",
85
+ fontWeight: "600",
86
+ children: /* @__PURE__ */ jsx("strong", { children })
87
+ }),
88
+ table: ({ children }) => /* @__PURE__ */ jsx(Table, {
89
+ ...table(),
90
+ children
91
+ }),
92
+ tbody: ({ children }) => /* @__PURE__ */ jsx(TableBody, { children }),
93
+ td: ({ children }) => /* @__PURE__ */ jsx(TableCell, { children }),
94
+ th: ({ children }) => /* @__PURE__ */ jsx(TableHeaderCell, { children }),
95
+ thead: ({ children }) => /* @__PURE__ */ jsx(TableHeader, { children }),
96
+ tr: ({ children }) => /* @__PURE__ */ jsx(TableRow, { children }),
97
+ ul: ({ children }) => /* @__PURE__ */ jsx(Box, {
98
+ asChild: true,
99
+ ...unorderedList(),
100
+ children: /* @__PURE__ */ jsx("ul", { children })
101
+ })
102
+ };
103
+ /**
104
+ * Renders markdown content (headings, paragraphs, lists, links, emphasis, code)
105
+ * as Axiom components so generated documents inherit the design system.
106
+ */
107
+ function ProteusMarkdown({ children, className, ...props }) {
108
+ return /* @__PURE__ */ jsx(Box, {
109
+ ...markdown({}, className),
110
+ ...props,
111
+ children: /* @__PURE__ */ jsx(Markdown, {
112
+ components,
113
+ remarkPlugins: [remarkGfm],
114
+ children
115
+ })
116
+ });
117
+ }
118
+ ProteusMarkdown.displayName = "@optiaxiom/proteus/ProteusMarkdown";
119
+ //#endregion
120
+ export { ProteusMarkdown };
@@ -1,5 +1,5 @@
1
1
  import { recipe } from "@optiaxiom/react/css-runtime";
2
- import "./../assets/src/proteus-question/ProteusQuestion.css.ts.vanilla-BqFZ3-WU.css";
2
+ import "./../assets/src/proteus-question/ProteusQuestion.css.ts.vanilla-Ba9cfjMj.css";
3
3
  //#region src/proteus-question/ProteusQuestion.css.ts
4
4
  var addon = recipe({
5
5
  base: [{
@@ -11,7 +11,7 @@ import { InlineInput } from "@optiaxiom/react/unstable";
11
11
  import { IconArrowRight, IconPen } from "@optiaxiom/icons";
12
12
  import * as RovingFocus from "@radix-ui/react-roving-focus";
13
13
  //#region src/proteus-question/ProteusQuestion.tsx
14
- function ProteusQuestion({ questions }) {
14
+ function ProteusQuestion({ interaction, questions }) {
15
15
  const { onEvent, onTrack } = useProteusDocumentContext("@optiaxiom/proteus/ProteusQuestion");
16
16
  const [answers, setAnswers] = useState([]);
17
17
  const [currentIndex, setCurrentIndex] = useState(0);
@@ -26,11 +26,20 @@ function ProteusQuestion({ questions }) {
26
26
  }, [currentIndex, onTrack]);
27
27
  const onDismiss = useCallback(() => {
28
28
  onTrack?.("Ask User Question Dismissed", { questionIndex: String(currentIndex) });
29
- onEvent({ message: "[User declined to answer the question]" });
29
+ if (interaction) onEvent({
30
+ interaction,
31
+ params: {
32
+ cancelled: "[User declined to answer the question]",
33
+ questions
34
+ }
35
+ });
36
+ else onEvent({ message: "[User declined to answer the question]" });
30
37
  }, [
31
38
  currentIndex,
39
+ interaction,
32
40
  onEvent,
33
- onTrack
41
+ onTrack,
42
+ questions
34
43
  ]);
35
44
  const questionRef = useRef(null);
36
45
  const lastIndexRef = useRef(currentIndex);
@@ -61,6 +70,13 @@ function ProteusQuestion({ questions }) {
61
70
  skippedCount: String(questions.length - answeredCount),
62
71
  totalQuestions: String(questions.length)
63
72
  });
73
+ if (interaction) return onEvent({
74
+ interaction,
75
+ params: {
76
+ answers: Object.fromEntries(questions.map(({ question }, index) => [question, (answers[index] ?? []).join(", ")])),
77
+ questions
78
+ }
79
+ });
64
80
  return onEvent({ message: answers.map((value, index) => `Q: ${questions[index].question}\nA: ${value || "[Not specified]"}`).join("\n\n") });
65
81
  };
66
82
  const onValueChange = (value) => {
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { useProteusDocumentContext } from "../proteus-document/ProteusDocumentContext.js";
3
+ import { useProteusDocumentPathContext } from "../proteus-document/ProteusDocumentPathContext.js";
4
+ import { useProteusValue } from "../use-proteus-value/useProteusValue.js";
5
+ import { RichTextEditor } from "@optiaxiom/react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ //#region src/proteus-rich-text-editor/ProteusRichTextEditor.tsx
8
+ function ProteusRichTextEditor(props) {
9
+ const { onDataChange, readOnly } = useProteusDocumentContext("@optiaxiom/proteus/ProteusRichTextEditor");
10
+ const { path: parentPath } = useProteusDocumentPathContext("@optiaxiom/proteus/ProteusRichTextEditor");
11
+ const value = useProteusValue({ path: props.name ?? "" });
12
+ return /* @__PURE__ */ jsx(RichTextEditor, {
13
+ ...props,
14
+ onValueChange: (value) => {
15
+ if (props.name) onDataChange?.(`${parentPath}/${props.name}`, value);
16
+ },
17
+ readOnly,
18
+ value: props.name ? String(value ?? "") : void 0
19
+ });
20
+ }
21
+ ProteusRichTextEditor.displayName = "@optiaxiom/proteus/ProteusRichTextEditor";
22
+ //#endregion
23
+ export { ProteusRichTextEditor };
@@ -226,7 +226,7 @@ var public_schema_default = {
226
226
  { "const": "1" },
227
227
  { "$ref": "#/definitions/ProteusExpression" }
228
228
  ],
229
- "description": "Set the element's `flex` CSS property"
229
+ "description": "Set the element's `flex` CSS property. `1` grows to fill available\nspace; `auto` grows and shrinks to fit content; `initial` shrinks but\ndoes not grow; `none` neither grows nor shrinks (use this instead of\n`flex-shrink: 0`)."
230
230
  },
231
231
  "SprinkleProp_flexDirection": {
232
232
  "anyOf": [
@@ -305,7 +305,7 @@ var public_schema_default = {
305
305
  },
306
306
  "SprinkleProp_gridAutoRows": {
307
307
  "anyOf": [{ "const": "fr" }, { "$ref": "#/definitions/ProteusExpression" }],
308
- "description": "Set the element's `grid-auto-rows` CSS property"
308
+ "description": "Set the element's `grid-auto-rows` CSS property. The only value `fr`\nsizes implicit rows to `minmax(0, 1fr)` (equal-height rows that can\nshrink below their content)."
309
309
  },
310
310
  "SprinkleProp_gridColumn": {
311
311
  "anyOf": [
@@ -315,7 +315,7 @@ var public_schema_default = {
315
315
  { "const": "4" },
316
316
  { "$ref": "#/definitions/ProteusExpression" }
317
317
  ],
318
- "description": "Set the element's size across grid columns"
318
+ "description": "Set how many columns the element spans in a grid (`grid-column`). The\nvalue is the span count, e.g. `2` spans 2 columns — NOT the column it\nstarts at."
319
319
  },
320
320
  "SprinkleProp_gridTemplateColumns": {
321
321
  "anyOf": [
@@ -325,7 +325,7 @@ var public_schema_default = {
325
325
  { "const": "4" },
326
326
  { "$ref": "#/definitions/ProteusExpression" }
327
327
  ],
328
- "description": "Control number of columns in a grid layout"
328
+ "description": "Control number of columns in a grid layout (`grid-template-columns`).\nThe value is the number of equal columns, e.g. `2` creates two equal\ncolumns (`repeat(2, minmax(0, 1fr))`) — use this instead of a raw\n`style={{ gridTemplateColumns: \"1fr 1fr\" }}`."
329
329
  },
330
330
  "SprinkleProp_h": {
331
331
  "anyOf": [
@@ -853,7 +853,7 @@ var public_schema_default = {
853
853
  { "const": "colors" },
854
854
  { "$ref": "#/definitions/ProteusExpression" }
855
855
  ],
856
- "description": "Control which CSS properties should transition"
856
+ "description": "Control which CSS properties should transition. Each value is a preset:\n`colors` transitions color-related properties (background, border,\ncolor, fill, stroke, text-decoration); `opacity` and `transform`\ntransition just that property; `all` transitions everything; `none`\ndisables transitions."
857
857
  },
858
858
  "SprinkleProp_w": {
859
859
  "anyOf": [
@@ -1301,9 +1301,11 @@ var public_schema_default = {
1301
1301
  { "$ref": "#/definitions/ProteusLink" },
1302
1302
  { "$ref": "#/definitions/ProteusMap" },
1303
1303
  { "$ref": "#/definitions/ProteusMapIndex" },
1304
+ { "$ref": "#/definitions/ProteusMarkdown" },
1304
1305
  { "$ref": "#/definitions/ProteusPillMenu" },
1305
1306
  { "$ref": "#/definitions/ProteusQuestion" },
1306
1307
  { "$ref": "#/definitions/ProteusRange" },
1308
+ { "$ref": "#/definitions/ProteusRichTextEditor" },
1307
1309
  { "$ref": "#/definitions/ProteusSelect" },
1308
1310
  { "$ref": "#/definitions/ProteusSelectContent" },
1309
1311
  { "$ref": "#/definitions/ProteusSelectTrigger" },
@@ -3695,6 +3697,80 @@ var public_schema_default = {
3695
3697
  "required": ["$type"],
3696
3698
  "type": "object"
3697
3699
  },
3700
+ "ProteusMarkdown": {
3701
+ "additionalProperties": false,
3702
+ "examples": [{
3703
+ "$type": "Markdown",
3704
+ "children": "## Summary\n\nRevenue grew **12%** this quarter."
3705
+ }],
3706
+ "properties": {
3707
+ "$type": { "const": "Markdown" },
3708
+ "alignItems": { "$ref": "#/definitions/SprinkleProp_alignItems" },
3709
+ "alignSelf": { "$ref": "#/definitions/SprinkleProp_alignSelf" },
3710
+ "animation": { "$ref": "#/definitions/SprinkleProp_animation" },
3711
+ "backgroundImage": { "$ref": "#/definitions/SprinkleProp_backgroundImage" },
3712
+ "bg": { "$ref": "#/definitions/SprinkleProp_bg" },
3713
+ "border": { "$ref": "#/definitions/SprinkleProp_border" },
3714
+ "borderB": { "$ref": "#/definitions/SprinkleProp_borderB" },
3715
+ "borderColor": { "$ref": "#/definitions/SprinkleProp_borderColor" },
3716
+ "borderL": { "$ref": "#/definitions/SprinkleProp_borderL" },
3717
+ "borderR": { "$ref": "#/definitions/SprinkleProp_borderR" },
3718
+ "borderT": { "$ref": "#/definitions/SprinkleProp_borderT" },
3719
+ "children": {
3720
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
3721
+ "description": "Markdown source string to render (e.g. headings, paragraphs, lists, links, emphasis, code). Can be a literal string or a ProteusExpression that resolves to a string."
3722
+ },
3723
+ "color": { "$ref": "#/definitions/SprinkleProp_color" },
3724
+ "cursor": { "$ref": "#/definitions/SprinkleProp_cursor" },
3725
+ "display": { "$ref": "#/definitions/SprinkleProp_display" },
3726
+ "flex": { "$ref": "#/definitions/SprinkleProp_flex" },
3727
+ "flexDirection": { "$ref": "#/definitions/SprinkleProp_flexDirection" },
3728
+ "flexWrap": { "$ref": "#/definitions/SprinkleProp_flexWrap" },
3729
+ "fontFamily": { "$ref": "#/definitions/SprinkleProp_fontFamily" },
3730
+ "fontSize": { "$ref": "#/definitions/SprinkleProp_fontSize" },
3731
+ "fontWeight": { "$ref": "#/definitions/SprinkleProp_fontWeight" },
3732
+ "gap": { "$ref": "#/definitions/SprinkleProp_gap" },
3733
+ "gridAutoRows": { "$ref": "#/definitions/SprinkleProp_gridAutoRows" },
3734
+ "gridColumn": { "$ref": "#/definitions/SprinkleProp_gridColumn" },
3735
+ "gridTemplateColumns": { "$ref": "#/definitions/SprinkleProp_gridTemplateColumns" },
3736
+ "h": { "$ref": "#/definitions/SprinkleProp_h" },
3737
+ "justifyContent": { "$ref": "#/definitions/SprinkleProp_justifyContent" },
3738
+ "justifyItems": { "$ref": "#/definitions/SprinkleProp_justifyItems" },
3739
+ "m": { "$ref": "#/definitions/SprinkleProp_m" },
3740
+ "maxH": { "$ref": "#/definitions/SprinkleProp_maxH" },
3741
+ "maxW": { "$ref": "#/definitions/SprinkleProp_maxW" },
3742
+ "mb": { "$ref": "#/definitions/SprinkleProp_mb" },
3743
+ "ml": { "$ref": "#/definitions/SprinkleProp_ml" },
3744
+ "mr": { "$ref": "#/definitions/SprinkleProp_mr" },
3745
+ "mt": { "$ref": "#/definitions/SprinkleProp_mt" },
3746
+ "mx": { "$ref": "#/definitions/SprinkleProp_mx" },
3747
+ "my": { "$ref": "#/definitions/SprinkleProp_my" },
3748
+ "objectFit": { "$ref": "#/definitions/SprinkleProp_objectFit" },
3749
+ "overflow": { "$ref": "#/definitions/SprinkleProp_overflow" },
3750
+ "overflowX": { "$ref": "#/definitions/SprinkleProp_overflowX" },
3751
+ "overflowY": { "$ref": "#/definitions/SprinkleProp_overflowY" },
3752
+ "p": { "$ref": "#/definitions/SprinkleProp_p" },
3753
+ "pb": { "$ref": "#/definitions/SprinkleProp_pb" },
3754
+ "pl": { "$ref": "#/definitions/SprinkleProp_pl" },
3755
+ "placeItems": { "$ref": "#/definitions/SprinkleProp_placeItems" },
3756
+ "pointerEvents": { "$ref": "#/definitions/SprinkleProp_pointerEvents" },
3757
+ "pr": { "$ref": "#/definitions/SprinkleProp_pr" },
3758
+ "pt": { "$ref": "#/definitions/SprinkleProp_pt" },
3759
+ "px": { "$ref": "#/definitions/SprinkleProp_px" },
3760
+ "py": { "$ref": "#/definitions/SprinkleProp_py" },
3761
+ "rounded": { "$ref": "#/definitions/SprinkleProp_rounded" },
3762
+ "shadow": { "$ref": "#/definitions/SprinkleProp_shadow" },
3763
+ "size": { "$ref": "#/definitions/SprinkleProp_size" },
3764
+ "textAlign": { "$ref": "#/definitions/SprinkleProp_textAlign" },
3765
+ "textTransform": { "$ref": "#/definitions/SprinkleProp_textTransform" },
3766
+ "transition": { "$ref": "#/definitions/SprinkleProp_transition" },
3767
+ "w": { "$ref": "#/definitions/SprinkleProp_w" },
3768
+ "whiteSpace": { "$ref": "#/definitions/SprinkleProp_whiteSpace" },
3769
+ "z": { "$ref": "#/definitions/SprinkleProp_z" }
3770
+ },
3771
+ "required": ["$type"],
3772
+ "type": "object"
3773
+ },
3698
3774
  "ProteusPillMenu": {
3699
3775
  "additionalProperties": false,
3700
3776
  "examples": [{
@@ -3752,6 +3828,10 @@ var public_schema_default = {
3752
3828
  "additionalProperties": false,
3753
3829
  "properties": {
3754
3830
  "$type": { "const": "Question" },
3831
+ "interaction": {
3832
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
3833
+ "description": "Name of the interaction to fire when the user finishes or cancels. When set, submit and cancel send a structured `{ questions, answers }` payload via the named interaction so a calling tool can read the answers programmatically. When omitted, a human-readable transcript is sent via the `message` event instead."
3834
+ },
3755
3835
  "questions": {
3756
3836
  "$ref": "#/definitions/ProteusExpression",
3757
3837
  "description": "Array of questions data"
@@ -3862,6 +3942,89 @@ var public_schema_default = {
3862
3942
  "required": ["$type"],
3863
3943
  "type": "object"
3864
3944
  },
3945
+ "ProteusRichTextEditor": {
3946
+ "additionalProperties": false,
3947
+ "examples": [{
3948
+ "$type": "RichTextEditor",
3949
+ "name": "field_name",
3950
+ "placeholder": "Write here..."
3951
+ }],
3952
+ "properties": {
3953
+ "$type": { "const": "RichTextEditor" },
3954
+ "alignItems": { "$ref": "#/definitions/SprinkleProp_alignItems" },
3955
+ "alignSelf": { "$ref": "#/definitions/SprinkleProp_alignSelf" },
3956
+ "animation": { "$ref": "#/definitions/SprinkleProp_animation" },
3957
+ "backgroundImage": { "$ref": "#/definitions/SprinkleProp_backgroundImage" },
3958
+ "bg": { "$ref": "#/definitions/SprinkleProp_bg" },
3959
+ "border": { "$ref": "#/definitions/SprinkleProp_border" },
3960
+ "borderB": { "$ref": "#/definitions/SprinkleProp_borderB" },
3961
+ "borderColor": { "$ref": "#/definitions/SprinkleProp_borderColor" },
3962
+ "borderL": { "$ref": "#/definitions/SprinkleProp_borderL" },
3963
+ "borderR": { "$ref": "#/definitions/SprinkleProp_borderR" },
3964
+ "borderT": { "$ref": "#/definitions/SprinkleProp_borderT" },
3965
+ "color": { "$ref": "#/definitions/SprinkleProp_color" },
3966
+ "cursor": { "$ref": "#/definitions/SprinkleProp_cursor" },
3967
+ "display": { "$ref": "#/definitions/SprinkleProp_display" },
3968
+ "flex": { "$ref": "#/definitions/SprinkleProp_flex" },
3969
+ "flexDirection": { "$ref": "#/definitions/SprinkleProp_flexDirection" },
3970
+ "flexWrap": { "$ref": "#/definitions/SprinkleProp_flexWrap" },
3971
+ "fontFamily": { "$ref": "#/definitions/SprinkleProp_fontFamily" },
3972
+ "fontSize": { "$ref": "#/definitions/SprinkleProp_fontSize" },
3973
+ "fontWeight": { "$ref": "#/definitions/SprinkleProp_fontWeight" },
3974
+ "gap": { "$ref": "#/definitions/SprinkleProp_gap" },
3975
+ "gridAutoRows": { "$ref": "#/definitions/SprinkleProp_gridAutoRows" },
3976
+ "gridColumn": { "$ref": "#/definitions/SprinkleProp_gridColumn" },
3977
+ "gridTemplateColumns": { "$ref": "#/definitions/SprinkleProp_gridTemplateColumns" },
3978
+ "h": { "$ref": "#/definitions/SprinkleProp_h" },
3979
+ "justifyContent": { "$ref": "#/definitions/SprinkleProp_justifyContent" },
3980
+ "justifyItems": { "$ref": "#/definitions/SprinkleProp_justifyItems" },
3981
+ "m": { "$ref": "#/definitions/SprinkleProp_m" },
3982
+ "maxH": { "$ref": "#/definitions/SprinkleProp_maxH" },
3983
+ "maxW": { "$ref": "#/definitions/SprinkleProp_maxW" },
3984
+ "mb": { "$ref": "#/definitions/SprinkleProp_mb" },
3985
+ "ml": { "$ref": "#/definitions/SprinkleProp_ml" },
3986
+ "mr": { "$ref": "#/definitions/SprinkleProp_mr" },
3987
+ "mt": { "$ref": "#/definitions/SprinkleProp_mt" },
3988
+ "mx": { "$ref": "#/definitions/SprinkleProp_mx" },
3989
+ "my": { "$ref": "#/definitions/SprinkleProp_my" },
3990
+ "name": {
3991
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
3992
+ "description": "Name of the form control element. Used by form-data integrations."
3993
+ },
3994
+ "objectFit": { "$ref": "#/definitions/SprinkleProp_objectFit" },
3995
+ "overflow": { "$ref": "#/definitions/SprinkleProp_overflow" },
3996
+ "overflowX": { "$ref": "#/definitions/SprinkleProp_overflowX" },
3997
+ "overflowY": { "$ref": "#/definitions/SprinkleProp_overflowY" },
3998
+ "p": { "$ref": "#/definitions/SprinkleProp_p" },
3999
+ "pb": { "$ref": "#/definitions/SprinkleProp_pb" },
4000
+ "pl": { "$ref": "#/definitions/SprinkleProp_pl" },
4001
+ "placeholder": {
4002
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
4003
+ "description": "Placeholder text shown when the editor is empty."
4004
+ },
4005
+ "placeItems": { "$ref": "#/definitions/SprinkleProp_placeItems" },
4006
+ "pointerEvents": { "$ref": "#/definitions/SprinkleProp_pointerEvents" },
4007
+ "pr": { "$ref": "#/definitions/SprinkleProp_pr" },
4008
+ "pt": { "$ref": "#/definitions/SprinkleProp_pt" },
4009
+ "px": { "$ref": "#/definitions/SprinkleProp_px" },
4010
+ "py": { "$ref": "#/definitions/SprinkleProp_py" },
4011
+ "readOnly": {
4012
+ "anyOf": [{ "type": "boolean" }, { "$ref": "#/definitions/ProteusExpression" }],
4013
+ "description": "Whether the editor is read-only."
4014
+ },
4015
+ "rounded": { "$ref": "#/definitions/SprinkleProp_rounded" },
4016
+ "shadow": { "$ref": "#/definitions/SprinkleProp_shadow" },
4017
+ "size": { "$ref": "#/definitions/SprinkleProp_size" },
4018
+ "textAlign": { "$ref": "#/definitions/SprinkleProp_textAlign" },
4019
+ "textTransform": { "$ref": "#/definitions/SprinkleProp_textTransform" },
4020
+ "transition": { "$ref": "#/definitions/SprinkleProp_transition" },
4021
+ "w": { "$ref": "#/definitions/SprinkleProp_w" },
4022
+ "whiteSpace": { "$ref": "#/definitions/SprinkleProp_whiteSpace" },
4023
+ "z": { "$ref": "#/definitions/SprinkleProp_z" }
4024
+ },
4025
+ "required": ["$type"],
4026
+ "type": "object"
4027
+ },
3865
4028
  "ProteusSelect": {
3866
4029
  "additionalProperties": false,
3867
4030
  "examples": [{
@@ -224,7 +224,7 @@ var definitions = {
224
224
  { "const": "1" },
225
225
  { "$ref": "#/definitions/ProteusExpression" }
226
226
  ],
227
- "description": "Set the element's `flex` CSS property"
227
+ "description": "Set the element's `flex` CSS property. `1` grows to fill available\nspace; `auto` grows and shrinks to fit content; `initial` shrinks but\ndoes not grow; `none` neither grows nor shrinks (use this instead of\n`flex-shrink: 0`)."
228
228
  },
229
229
  "SprinkleProp_flexDirection": {
230
230
  "anyOf": [
@@ -303,7 +303,7 @@ var definitions = {
303
303
  },
304
304
  "SprinkleProp_gridAutoRows": {
305
305
  "anyOf": [{ "const": "fr" }, { "$ref": "#/definitions/ProteusExpression" }],
306
- "description": "Set the element's `grid-auto-rows` CSS property"
306
+ "description": "Set the element's `grid-auto-rows` CSS property. The only value `fr`\nsizes implicit rows to `minmax(0, 1fr)` (equal-height rows that can\nshrink below their content)."
307
307
  },
308
308
  "SprinkleProp_gridColumn": {
309
309
  "anyOf": [
@@ -313,7 +313,7 @@ var definitions = {
313
313
  { "const": "4" },
314
314
  { "$ref": "#/definitions/ProteusExpression" }
315
315
  ],
316
- "description": "Set the element's size across grid columns"
316
+ "description": "Set how many columns the element spans in a grid (`grid-column`). The\nvalue is the span count, e.g. `2` spans 2 columns — NOT the column it\nstarts at."
317
317
  },
318
318
  "SprinkleProp_gridTemplateColumns": {
319
319
  "anyOf": [
@@ -323,7 +323,7 @@ var definitions = {
323
323
  { "const": "4" },
324
324
  { "$ref": "#/definitions/ProteusExpression" }
325
325
  ],
326
- "description": "Control number of columns in a grid layout"
326
+ "description": "Control number of columns in a grid layout (`grid-template-columns`).\nThe value is the number of equal columns, e.g. `2` creates two equal\ncolumns (`repeat(2, minmax(0, 1fr))`) — use this instead of a raw\n`style={{ gridTemplateColumns: \"1fr 1fr\" }}`."
327
327
  },
328
328
  "SprinkleProp_h": {
329
329
  "anyOf": [
@@ -851,7 +851,7 @@ var definitions = {
851
851
  { "const": "colors" },
852
852
  { "$ref": "#/definitions/ProteusExpression" }
853
853
  ],
854
- "description": "Control which CSS properties should transition"
854
+ "description": "Control which CSS properties should transition. Each value is a preset:\n`colors` transitions color-related properties (background, border,\ncolor, fill, stroke, text-decoration); `opacity` and `transform`\ntransition just that property; `all` transitions everything; `none`\ndisables transitions."
855
855
  },
856
856
  "SprinkleProp_w": {
857
857
  "anyOf": [
@@ -1288,9 +1288,11 @@ var definitions = {
1288
1288
  { "$ref": "#/definitions/ProteusLink" },
1289
1289
  { "$ref": "#/definitions/ProteusMap" },
1290
1290
  { "$ref": "#/definitions/ProteusMapIndex" },
1291
+ { "$ref": "#/definitions/ProteusMarkdown" },
1291
1292
  { "$ref": "#/definitions/ProteusPillMenu" },
1292
1293
  { "$ref": "#/definitions/ProteusQuestion" },
1293
1294
  { "$ref": "#/definitions/ProteusRange" },
1295
+ { "$ref": "#/definitions/ProteusRichTextEditor" },
1294
1296
  { "$ref": "#/definitions/ProteusSelect" },
1295
1297
  { "$ref": "#/definitions/ProteusSelectContent" },
1296
1298
  { "$ref": "#/definitions/ProteusSelectTrigger" },
@@ -3637,6 +3639,79 @@ var definitions = {
3637
3639
  "required": ["$type"],
3638
3640
  "type": "object"
3639
3641
  },
3642
+ "ProteusMarkdown": {
3643
+ "examples": [{
3644
+ "$type": "Markdown",
3645
+ "children": "## Summary\n\nRevenue grew **12%** this quarter."
3646
+ }],
3647
+ "properties": {
3648
+ "$type": { "const": "Markdown" },
3649
+ "alignItems": { "$ref": "#/definitions/SprinkleProp_alignItems" },
3650
+ "alignSelf": { "$ref": "#/definitions/SprinkleProp_alignSelf" },
3651
+ "animation": { "$ref": "#/definitions/SprinkleProp_animation" },
3652
+ "backgroundImage": { "$ref": "#/definitions/SprinkleProp_backgroundImage" },
3653
+ "bg": { "$ref": "#/definitions/SprinkleProp_bg" },
3654
+ "border": { "$ref": "#/definitions/SprinkleProp_border" },
3655
+ "borderB": { "$ref": "#/definitions/SprinkleProp_borderB" },
3656
+ "borderColor": { "$ref": "#/definitions/SprinkleProp_borderColor" },
3657
+ "borderL": { "$ref": "#/definitions/SprinkleProp_borderL" },
3658
+ "borderR": { "$ref": "#/definitions/SprinkleProp_borderR" },
3659
+ "borderT": { "$ref": "#/definitions/SprinkleProp_borderT" },
3660
+ "children": {
3661
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
3662
+ "description": "Markdown source string to render (e.g. headings, paragraphs, lists, links, emphasis, code). Can be a literal string or a ProteusExpression that resolves to a string."
3663
+ },
3664
+ "color": { "$ref": "#/definitions/SprinkleProp_color" },
3665
+ "cursor": { "$ref": "#/definitions/SprinkleProp_cursor" },
3666
+ "display": { "$ref": "#/definitions/SprinkleProp_display" },
3667
+ "flex": { "$ref": "#/definitions/SprinkleProp_flex" },
3668
+ "flexDirection": { "$ref": "#/definitions/SprinkleProp_flexDirection" },
3669
+ "flexWrap": { "$ref": "#/definitions/SprinkleProp_flexWrap" },
3670
+ "fontFamily": { "$ref": "#/definitions/SprinkleProp_fontFamily" },
3671
+ "fontSize": { "$ref": "#/definitions/SprinkleProp_fontSize" },
3672
+ "fontWeight": { "$ref": "#/definitions/SprinkleProp_fontWeight" },
3673
+ "gap": { "$ref": "#/definitions/SprinkleProp_gap" },
3674
+ "gridAutoRows": { "$ref": "#/definitions/SprinkleProp_gridAutoRows" },
3675
+ "gridColumn": { "$ref": "#/definitions/SprinkleProp_gridColumn" },
3676
+ "gridTemplateColumns": { "$ref": "#/definitions/SprinkleProp_gridTemplateColumns" },
3677
+ "h": { "$ref": "#/definitions/SprinkleProp_h" },
3678
+ "justifyContent": { "$ref": "#/definitions/SprinkleProp_justifyContent" },
3679
+ "justifyItems": { "$ref": "#/definitions/SprinkleProp_justifyItems" },
3680
+ "m": { "$ref": "#/definitions/SprinkleProp_m" },
3681
+ "maxH": { "$ref": "#/definitions/SprinkleProp_maxH" },
3682
+ "maxW": { "$ref": "#/definitions/SprinkleProp_maxW" },
3683
+ "mb": { "$ref": "#/definitions/SprinkleProp_mb" },
3684
+ "ml": { "$ref": "#/definitions/SprinkleProp_ml" },
3685
+ "mr": { "$ref": "#/definitions/SprinkleProp_mr" },
3686
+ "mt": { "$ref": "#/definitions/SprinkleProp_mt" },
3687
+ "mx": { "$ref": "#/definitions/SprinkleProp_mx" },
3688
+ "my": { "$ref": "#/definitions/SprinkleProp_my" },
3689
+ "objectFit": { "$ref": "#/definitions/SprinkleProp_objectFit" },
3690
+ "overflow": { "$ref": "#/definitions/SprinkleProp_overflow" },
3691
+ "overflowX": { "$ref": "#/definitions/SprinkleProp_overflowX" },
3692
+ "overflowY": { "$ref": "#/definitions/SprinkleProp_overflowY" },
3693
+ "p": { "$ref": "#/definitions/SprinkleProp_p" },
3694
+ "pb": { "$ref": "#/definitions/SprinkleProp_pb" },
3695
+ "pl": { "$ref": "#/definitions/SprinkleProp_pl" },
3696
+ "placeItems": { "$ref": "#/definitions/SprinkleProp_placeItems" },
3697
+ "pointerEvents": { "$ref": "#/definitions/SprinkleProp_pointerEvents" },
3698
+ "pr": { "$ref": "#/definitions/SprinkleProp_pr" },
3699
+ "pt": { "$ref": "#/definitions/SprinkleProp_pt" },
3700
+ "px": { "$ref": "#/definitions/SprinkleProp_px" },
3701
+ "py": { "$ref": "#/definitions/SprinkleProp_py" },
3702
+ "rounded": { "$ref": "#/definitions/SprinkleProp_rounded" },
3703
+ "shadow": { "$ref": "#/definitions/SprinkleProp_shadow" },
3704
+ "size": { "$ref": "#/definitions/SprinkleProp_size" },
3705
+ "textAlign": { "$ref": "#/definitions/SprinkleProp_textAlign" },
3706
+ "textTransform": { "$ref": "#/definitions/SprinkleProp_textTransform" },
3707
+ "transition": { "$ref": "#/definitions/SprinkleProp_transition" },
3708
+ "w": { "$ref": "#/definitions/SprinkleProp_w" },
3709
+ "whiteSpace": { "$ref": "#/definitions/SprinkleProp_whiteSpace" },
3710
+ "z": { "$ref": "#/definitions/SprinkleProp_z" }
3711
+ },
3712
+ "required": ["$type"],
3713
+ "type": "object"
3714
+ },
3640
3715
  "ProteusPillMenu": {
3641
3716
  "examples": [{
3642
3717
  "$type": "PillMenu",
@@ -3691,6 +3766,10 @@ var definitions = {
3691
3766
  "ProteusQuestion": {
3692
3767
  "properties": {
3693
3768
  "$type": { "const": "Question" },
3769
+ "interaction": {
3770
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
3771
+ "description": "Name of the interaction to fire when the user finishes or cancels. When set, submit and cancel send a structured `{ questions, answers }` payload via the named interaction so a calling tool can read the answers programmatically. When omitted, a human-readable transcript is sent via the `message` event instead."
3772
+ },
3694
3773
  "questions": {
3695
3774
  "$ref": "#/definitions/ProteusExpression",
3696
3775
  "description": "Array of questions data"
@@ -3799,6 +3878,88 @@ var definitions = {
3799
3878
  "required": ["$type"],
3800
3879
  "type": "object"
3801
3880
  },
3881
+ "ProteusRichTextEditor": {
3882
+ "examples": [{
3883
+ "$type": "RichTextEditor",
3884
+ "name": "field_name",
3885
+ "placeholder": "Write here..."
3886
+ }],
3887
+ "properties": {
3888
+ "$type": { "const": "RichTextEditor" },
3889
+ "alignItems": { "$ref": "#/definitions/SprinkleProp_alignItems" },
3890
+ "alignSelf": { "$ref": "#/definitions/SprinkleProp_alignSelf" },
3891
+ "animation": { "$ref": "#/definitions/SprinkleProp_animation" },
3892
+ "backgroundImage": { "$ref": "#/definitions/SprinkleProp_backgroundImage" },
3893
+ "bg": { "$ref": "#/definitions/SprinkleProp_bg" },
3894
+ "border": { "$ref": "#/definitions/SprinkleProp_border" },
3895
+ "borderB": { "$ref": "#/definitions/SprinkleProp_borderB" },
3896
+ "borderColor": { "$ref": "#/definitions/SprinkleProp_borderColor" },
3897
+ "borderL": { "$ref": "#/definitions/SprinkleProp_borderL" },
3898
+ "borderR": { "$ref": "#/definitions/SprinkleProp_borderR" },
3899
+ "borderT": { "$ref": "#/definitions/SprinkleProp_borderT" },
3900
+ "color": { "$ref": "#/definitions/SprinkleProp_color" },
3901
+ "cursor": { "$ref": "#/definitions/SprinkleProp_cursor" },
3902
+ "display": { "$ref": "#/definitions/SprinkleProp_display" },
3903
+ "flex": { "$ref": "#/definitions/SprinkleProp_flex" },
3904
+ "flexDirection": { "$ref": "#/definitions/SprinkleProp_flexDirection" },
3905
+ "flexWrap": { "$ref": "#/definitions/SprinkleProp_flexWrap" },
3906
+ "fontFamily": { "$ref": "#/definitions/SprinkleProp_fontFamily" },
3907
+ "fontSize": { "$ref": "#/definitions/SprinkleProp_fontSize" },
3908
+ "fontWeight": { "$ref": "#/definitions/SprinkleProp_fontWeight" },
3909
+ "gap": { "$ref": "#/definitions/SprinkleProp_gap" },
3910
+ "gridAutoRows": { "$ref": "#/definitions/SprinkleProp_gridAutoRows" },
3911
+ "gridColumn": { "$ref": "#/definitions/SprinkleProp_gridColumn" },
3912
+ "gridTemplateColumns": { "$ref": "#/definitions/SprinkleProp_gridTemplateColumns" },
3913
+ "h": { "$ref": "#/definitions/SprinkleProp_h" },
3914
+ "justifyContent": { "$ref": "#/definitions/SprinkleProp_justifyContent" },
3915
+ "justifyItems": { "$ref": "#/definitions/SprinkleProp_justifyItems" },
3916
+ "m": { "$ref": "#/definitions/SprinkleProp_m" },
3917
+ "maxH": { "$ref": "#/definitions/SprinkleProp_maxH" },
3918
+ "maxW": { "$ref": "#/definitions/SprinkleProp_maxW" },
3919
+ "mb": { "$ref": "#/definitions/SprinkleProp_mb" },
3920
+ "ml": { "$ref": "#/definitions/SprinkleProp_ml" },
3921
+ "mr": { "$ref": "#/definitions/SprinkleProp_mr" },
3922
+ "mt": { "$ref": "#/definitions/SprinkleProp_mt" },
3923
+ "mx": { "$ref": "#/definitions/SprinkleProp_mx" },
3924
+ "my": { "$ref": "#/definitions/SprinkleProp_my" },
3925
+ "name": {
3926
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
3927
+ "description": "Name of the form control element. Used by form-data integrations."
3928
+ },
3929
+ "objectFit": { "$ref": "#/definitions/SprinkleProp_objectFit" },
3930
+ "overflow": { "$ref": "#/definitions/SprinkleProp_overflow" },
3931
+ "overflowX": { "$ref": "#/definitions/SprinkleProp_overflowX" },
3932
+ "overflowY": { "$ref": "#/definitions/SprinkleProp_overflowY" },
3933
+ "p": { "$ref": "#/definitions/SprinkleProp_p" },
3934
+ "pb": { "$ref": "#/definitions/SprinkleProp_pb" },
3935
+ "pl": { "$ref": "#/definitions/SprinkleProp_pl" },
3936
+ "placeholder": {
3937
+ "anyOf": [{ "type": "string" }, { "$ref": "#/definitions/ProteusExpression" }],
3938
+ "description": "Placeholder text shown when the editor is empty."
3939
+ },
3940
+ "placeItems": { "$ref": "#/definitions/SprinkleProp_placeItems" },
3941
+ "pointerEvents": { "$ref": "#/definitions/SprinkleProp_pointerEvents" },
3942
+ "pr": { "$ref": "#/definitions/SprinkleProp_pr" },
3943
+ "pt": { "$ref": "#/definitions/SprinkleProp_pt" },
3944
+ "px": { "$ref": "#/definitions/SprinkleProp_px" },
3945
+ "py": { "$ref": "#/definitions/SprinkleProp_py" },
3946
+ "readOnly": {
3947
+ "anyOf": [{ "type": "boolean" }, { "$ref": "#/definitions/ProteusExpression" }],
3948
+ "description": "Whether the editor is read-only."
3949
+ },
3950
+ "rounded": { "$ref": "#/definitions/SprinkleProp_rounded" },
3951
+ "shadow": { "$ref": "#/definitions/SprinkleProp_shadow" },
3952
+ "size": { "$ref": "#/definitions/SprinkleProp_size" },
3953
+ "textAlign": { "$ref": "#/definitions/SprinkleProp_textAlign" },
3954
+ "textTransform": { "$ref": "#/definitions/SprinkleProp_textTransform" },
3955
+ "transition": { "$ref": "#/definitions/SprinkleProp_transition" },
3956
+ "w": { "$ref": "#/definitions/SprinkleProp_w" },
3957
+ "whiteSpace": { "$ref": "#/definitions/SprinkleProp_whiteSpace" },
3958
+ "z": { "$ref": "#/definitions/SprinkleProp_z" }
3959
+ },
3960
+ "required": ["$type"],
3961
+ "type": "object"
3962
+ },
3802
3963
  "ProteusSelect": {
3803
3964
  "examples": [{
3804
3965
  "$type": "Select",
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { BoxProps, ButtonProps, DateInputProps, Disclosure, InputProps, SelectProps, TextareaProps } from "@optiaxiom/react";
1
+ import { BoxProps, ButtonProps, DateInputProps, Disclosure, InputProps, RichTextEditorProps, SelectProps, TextareaProps } from "@optiaxiom/react";
2
2
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from "react";
3
3
 
4
4
  //#region src/proteus-bridge/ProteusBridge.d.ts
@@ -152,9 +152,11 @@ declare namespace ProteusFileUpload {
152
152
  //#region src/proteus-image-carousel/ProteusImageCarousel.d.ts
153
153
  type ProteusImageCarouselProps = {
154
154
  /**
155
- * Array of image data to display in the carousel.
155
+ * Array of image data to display in the carousel. The host is responsible for
156
+ * supplying the preview metadata on each item.
156
157
  */
157
- images: Array<{
158
+ images: Array<ProteusPreviewFile & {
159
+ [key: string]: unknown;
158
160
  /**
159
161
  * Alternative text for the image.
160
162
  */
@@ -183,7 +185,9 @@ declare namespace ProteusImageCarousel {
183
185
  //#endregion
184
186
  //#region src/proteus-image/ProteusImage.d.ts
185
187
  type ProteusImageProps = BoxProps<"img">;
186
- declare function ProteusImage(props: ProteusImageProps): import("react/jsx-runtime").JSX.Element;
188
+ declare function ProteusImage({
189
+ ...props
190
+ }: ProteusImageProps): import("react/jsx-runtime").JSX.Element;
187
191
  declare namespace ProteusImage {
188
192
  var displayName: string;
189
193
  }
@@ -236,6 +240,27 @@ declare namespace ProteusMap {
236
240
  var displayName: string;
237
241
  }
238
242
  //#endregion
243
+ //#region src/proteus-markdown/ProteusMarkdown.d.ts
244
+ type ProteusMarkdownProps = BoxProps<"div", {
245
+ /**
246
+ * The markdown source to render. A single string (resolved upstream from a
247
+ * literal or a `Value`/`Concat` expression).
248
+ */
249
+ children?: string;
250
+ }>;
251
+ /**
252
+ * Renders markdown content (headings, paragraphs, lists, links, emphasis, code)
253
+ * as Axiom components so generated documents inherit the design system.
254
+ */
255
+ declare function ProteusMarkdown({
256
+ children,
257
+ className,
258
+ ...props
259
+ }: ProteusMarkdownProps): import("react/jsx-runtime").JSX.Element;
260
+ declare namespace ProteusMarkdown {
261
+ var displayName: string;
262
+ }
263
+ //#endregion
239
264
  //#region src/proteus-pill-menu/ProteusPillMenu.d.ts
240
265
  type ProteusPillMenuProps = {
241
266
  /**
@@ -435,7 +460,7 @@ type ProteusDocumentShellProps = Pick<ComponentPropsWithoutRef<typeof Disclosure
435
460
  * Callback when user triggers a preview action.
436
461
  * Receives the file object to preview.
437
462
  */
438
- onPreview?: (file: unknown) => Promise<void> | void;
463
+ onPreview?: (file: ProteusPreviewFile) => Promise<void> | void;
439
464
  /**
440
465
  * Callback when an analytics event is fired
441
466
  */
@@ -506,7 +531,7 @@ type ProteusEventHandler = {
506
531
  }) | string;
507
532
  } | {
508
533
  action: "preview";
509
- file: unknown;
534
+ file: ProteusPreviewFile;
510
535
  } | {
511
536
  action: "pushValue";
512
537
  path: string;
@@ -520,6 +545,13 @@ type ProteusEventHandler = {
520
545
  } | {
521
546
  message: string | StructuredMessage;
522
547
  };
548
+ type ProteusPreviewFile = {
549
+ extension: string;
550
+ file_link: string;
551
+ full_name: string;
552
+ mime_type: string;
553
+ name: string;
554
+ };
523
555
  type StructuredMessage<F extends FileUploadMetadata = FileUploadMetadata> = {
524
556
  files?: F[];
525
557
  parts: Array<{
@@ -605,6 +637,12 @@ declare namespace ProteusInput {
605
637
  var displayName: string;
606
638
  }
607
639
  //#endregion
640
+ //#region src/proteus-rich-text-editor/ProteusRichTextEditor.d.ts
641
+ declare function ProteusRichTextEditor(props: RichTextEditorProps): import("react/jsx-runtime").JSX.Element;
642
+ declare namespace ProteusRichTextEditor {
643
+ var displayName: string;
644
+ }
645
+ //#endregion
608
646
  //#region src/proteus-textarea/ProteusTextarea.d.ts
609
647
  declare function ProteusTextarea(props: TextareaProps): import("react/jsx-runtime").JSX.Element;
610
648
  declare namespace ProteusTextarea {
@@ -614,4 +652,4 @@ declare namespace ProteusTextarea {
614
652
  //#region src/use-proteus-value/useProteusValue.d.ts
615
653
  declare function useProteusValue(element: ProteusValueProps): any;
616
654
  //#endregion
617
- export { type FileUploadMetadata, ProteusAction, ProteusBridge, ProteusChart, ProteusDataTable, ProteusDateInput, ProteusDocumentRenderer, ProteusDocumentRendererProps, ProteusDocumentShell, ProteusDocumentShellProps, ProteusFederated, ProteusFileUpload, ProteusFileUploadProps, ProteusImage, ProteusImageCarousel, ProteusInput, ProteusLength, ProteusMap, ProteusMapIndex, ProteusPillMenu, ProteusPillMenuProps, ProteusSelect, ProteusShow, ProteusTextarea, type StructuredMessage, type UploadFile, safeParseDocument, useProteusValue };
655
+ export { type FileUploadMetadata, ProteusAction, ProteusBridge, ProteusChart, ProteusDataTable, ProteusDateInput, ProteusDocumentRenderer, ProteusDocumentRendererProps, ProteusDocumentShell, ProteusDocumentShellProps, ProteusFederated, ProteusFileUpload, ProteusFileUploadProps, ProteusImage, ProteusImageCarousel, ProteusInput, ProteusLength, ProteusMap, ProteusMapIndex, ProteusMarkdown, ProteusPillMenu, ProteusPillMenuProps, type ProteusPreviewFile, ProteusRichTextEditor, ProteusSelect, ProteusShow, ProteusTextarea, type StructuredMessage, type UploadFile, safeParseDocument, useProteusValue };
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "git+https://github.com/optimizely-axiom/optiaxiom.git"
8
8
  },
9
9
  "type": "module",
10
- "version": "3.0.0",
10
+ "version": "3.0.2",
11
11
  "files": [
12
12
  "dist/**",
13
13
  "LICENSE"
@@ -38,9 +38,11 @@
38
38
  "@tanstack/react-table": "^8.21.3",
39
39
  "embla-carousel-react": "^8.6.0",
40
40
  "jsonpointer": "^5.0.1",
41
+ "react-markdown": "^10.1.0",
41
42
  "recharts": "^3.8.1",
43
+ "remark-gfm": "^4.0.1",
42
44
  "@optiaxiom/icons": "^1.1.3",
43
- "@optiaxiom/react": "^3.0.1"
45
+ "@optiaxiom/react": "^3.0.3"
44
46
  },
45
47
  "devDependencies": {
46
48
  "@emotion/hash": "^0.9.2",
@@ -55,6 +57,6 @@
55
57
  },
56
58
  "scripts": {
57
59
  "build": "rolldown -c",
58
- "dev": "rm -rf dist && wait-on ../../packages/react/dist/index.d.ts ../../packages/react/dist/unstable.d.ts ../../packages/shared/data/docs.json && rolldown -wc"
60
+ "dev": "rm -rf dist && wait-on ../../packages/react/dist/index.d.ts ../../packages/react/dist/unstable.d.ts ../../packages/react/dist/css-runtime.d.ts ../../packages/shared/data/docs.json && rolldown -wc"
59
61
  }
60
62
  }