@carto/ps-react-ui 4.9.1 → 4.11.0

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 (188) hide show
  1. package/dist/category-Dnd2_j0x.js +719 -0
  2. package/dist/category-Dnd2_j0x.js.map +1 -0
  3. package/dist/change-column-BiuuHCDN.js +1156 -0
  4. package/dist/change-column-BiuuHCDN.js.map +1 -0
  5. package/dist/chat.js +1507 -0
  6. package/dist/chat.js.map +1 -0
  7. package/dist/components.js +122 -120
  8. package/dist/components.js.map +1 -1
  9. package/dist/copy-button-DGL1tyli.js +26 -0
  10. package/dist/copy-button-DGL1tyli.js.map +1 -0
  11. package/dist/{data-zoom-layout-0QSptXG_.js → data-zoom-layout--YiY6ko_.js} +4 -3
  12. package/dist/{data-zoom-layout-0QSptXG_.js.map → data-zoom-layout--YiY6ko_.js.map} +1 -1
  13. package/dist/{download-config-CzmjOT2T.js → download-config-oJIFZ2WC.js} +9 -8
  14. package/dist/{download-config-CzmjOT2T.js.map → download-config-oJIFZ2WC.js.map} +1 -1
  15. package/dist/{spread-Y9R1f5dm.js → spread-CPis22AE.js} +4 -3
  16. package/dist/{spread-Y9R1f5dm.js.map → spread-CPis22AE.js.map} +1 -1
  17. package/dist/types/chat/bubbles/chat-error-message.d.ts +2 -0
  18. package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +2 -0
  19. package/dist/types/chat/bubbles/chat-user-message.d.ts +2 -0
  20. package/dist/types/chat/bubbles/index.d.ts +4 -0
  21. package/dist/types/chat/const.d.ts +4 -0
  22. package/dist/types/chat/containers/chat-content.d.ts +2 -0
  23. package/dist/types/chat/containers/chat-footer.d.ts +2 -0
  24. package/dist/types/chat/containers/chat-header.d.ts +2 -0
  25. package/dist/types/chat/containers/chat-starter.d.ts +2 -0
  26. package/dist/types/chat/containers/index.d.ts +4 -0
  27. package/dist/types/chat/containers/styles.d.ts +93 -0
  28. package/dist/types/chat/feedback/chat-loader.d.ts +2 -0
  29. package/dist/types/chat/feedback/chat-rating-action.d.ts +2 -0
  30. package/dist/types/chat/feedback/chat-thinking.d.ts +2 -0
  31. package/dist/types/chat/feedback/chat-tool-code-area.d.ts +2 -0
  32. package/dist/types/chat/feedback/chat-tool-full-view-dialog.d.ts +2 -0
  33. package/dist/types/chat/feedback/chat-tool-group.d.ts +2 -0
  34. package/dist/types/chat/feedback/chat-tool-trace.d.ts +3 -0
  35. package/dist/types/chat/feedback/get-tool-label.d.ts +2 -0
  36. package/dist/types/chat/feedback/index.d.ts +8 -0
  37. package/dist/types/chat/feedback/styles.d.ts +211 -0
  38. package/dist/types/chat/index.d.ts +20 -0
  39. package/dist/types/chat/types.d.ts +184 -0
  40. package/dist/types/chat/use-typewriter.d.ts +30 -0
  41. package/dist/types/components/copy-button/copy-button.d.ts +2 -0
  42. package/dist/types/components/copy-button/types.d.ts +6 -0
  43. package/dist/types/components/index.d.ts +2 -0
  44. package/dist/types/widgets/actions/brush-toggle/style.d.ts +1 -1
  45. package/dist/types/widgets/actions/shared/styles.d.ts +1 -1
  46. package/dist/types/widgets/actions/zoom-toggle/style.d.ts +1 -1
  47. package/dist/types/widgets/echart/types.d.ts +1 -1
  48. package/dist/types/widgets/toolbar-actions/styles.d.ts +1 -1
  49. package/dist/types/widgets-v2/actions/brush-toggle/style.d.ts +1 -1
  50. package/dist/types/widgets-v2/actions/change-column/style.d.ts +1 -1
  51. package/dist/types/widgets-v2/actions/fullscreen/style.d.ts +1 -1
  52. package/dist/types/widgets-v2/actions/index.d.ts +1 -0
  53. package/dist/types/widgets-v2/actions/lock-selection/style.d.ts +1 -1
  54. package/dist/types/widgets-v2/actions/relative-data/style.d.ts +1 -1
  55. package/dist/types/widgets-v2/actions/searcher/style.d.ts +1 -1
  56. package/dist/types/widgets-v2/actions/show-all/index.d.ts +2 -0
  57. package/dist/types/widgets-v2/actions/show-all/labels.d.ts +5 -0
  58. package/dist/types/widgets-v2/actions/show-all/show-all.d.ts +33 -0
  59. package/dist/types/widgets-v2/actions/show-all/style.d.ts +8 -0
  60. package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +1 -1
  61. package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +1 -1
  62. package/dist/types/widgets-v2/category/category-ui.d.ts +9 -2
  63. package/dist/types/widgets-v2/category/category.d.ts +9 -2
  64. package/dist/types/widgets-v2/category/components/category-row-other.d.ts +19 -6
  65. package/dist/types/widgets-v2/category/style.d.ts +21 -2
  66. package/dist/types/widgets-v2/category/types.d.ts +2 -0
  67. package/dist/types/widgets-v2/index.d.ts +3 -2
  68. package/dist/types/widgets-v2/selection-summary/labels.d.ts +7 -2
  69. package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +13 -6
  70. package/dist/types/widgets-v2/selection-summary/style.d.ts +15 -0
  71. package/dist/widgets/actions.js +115 -114
  72. package/dist/widgets/actions.js.map +1 -1
  73. package/dist/widgets/bar.js +1 -1
  74. package/dist/widgets/category.js +9 -8
  75. package/dist/widgets/category.js.map +1 -1
  76. package/dist/widgets/formula.js +11 -10
  77. package/dist/widgets/formula.js.map +1 -1
  78. package/dist/widgets/histogram.js +7 -6
  79. package/dist/widgets/histogram.js.map +1 -1
  80. package/dist/widgets/markdown.js +9 -8
  81. package/dist/widgets/markdown.js.map +1 -1
  82. package/dist/widgets/pie.js +1 -1
  83. package/dist/widgets/scatterplot.js +1 -1
  84. package/dist/widgets/spread.js +9 -8
  85. package/dist/widgets/spread.js.map +1 -1
  86. package/dist/widgets/table.js +17 -16
  87. package/dist/widgets/table.js.map +1 -1
  88. package/dist/widgets/timeseries.js +1 -1
  89. package/dist/widgets/utils.js +1 -1
  90. package/dist/widgets/wrapper.js +3 -2
  91. package/dist/widgets/wrapper.js.map +1 -1
  92. package/dist/widgets-v2/actions.js +41 -37
  93. package/dist/widgets-v2/bar.js +8 -7
  94. package/dist/widgets-v2/bar.js.map +1 -1
  95. package/dist/widgets-v2/category.js +22 -21
  96. package/dist/widgets-v2/category.js.map +1 -1
  97. package/dist/widgets-v2/formula.js +23 -22
  98. package/dist/widgets-v2/formula.js.map +1 -1
  99. package/dist/widgets-v2/histogram.js +10 -9
  100. package/dist/widgets-v2/histogram.js.map +1 -1
  101. package/dist/widgets-v2/markdown.js +9 -8
  102. package/dist/widgets-v2/markdown.js.map +1 -1
  103. package/dist/widgets-v2/pie.js +7 -6
  104. package/dist/widgets-v2/pie.js.map +1 -1
  105. package/dist/widgets-v2/scatterplot.js +9 -8
  106. package/dist/widgets-v2/scatterplot.js.map +1 -1
  107. package/dist/widgets-v2/spread.js +9 -8
  108. package/dist/widgets-v2/spread.js.map +1 -1
  109. package/dist/widgets-v2/table.js +16 -15
  110. package/dist/widgets-v2/table.js.map +1 -1
  111. package/dist/widgets-v2/timeseries.js +8 -7
  112. package/dist/widgets-v2/timeseries.js.map +1 -1
  113. package/dist/widgets-v2/utils.js +1 -1
  114. package/dist/widgets-v2.js +276 -271
  115. package/dist/widgets-v2.js.map +1 -1
  116. package/package.json +7 -3
  117. package/src/chat/bubbles/chat-agent-message.test.tsx +30 -0
  118. package/src/chat/bubbles/chat-agent-message.tsx +11 -0
  119. package/src/chat/bubbles/chat-error-message.test.tsx +40 -0
  120. package/src/chat/bubbles/chat-error-message.tsx +47 -0
  121. package/src/chat/bubbles/chat-suggestion-button.test.tsx +24 -0
  122. package/src/chat/bubbles/chat-suggestion-button.tsx +27 -0
  123. package/src/chat/bubbles/chat-user-message.test.tsx +27 -0
  124. package/src/chat/bubbles/chat-user-message.tsx +27 -0
  125. package/src/chat/bubbles/index.ts +4 -0
  126. package/src/chat/bubbles/styles.ts +148 -0
  127. package/src/chat/const.ts +4 -0
  128. package/src/chat/containers/chat-content.test.tsx +269 -0
  129. package/src/chat/containers/chat-content.tsx +142 -0
  130. package/src/chat/containers/chat-footer.test.tsx +34 -0
  131. package/src/chat/containers/chat-footer.tsx +78 -0
  132. package/src/chat/containers/chat-header.test.tsx +28 -0
  133. package/src/chat/containers/chat-header.tsx +29 -0
  134. package/src/chat/containers/chat-starter.test.tsx +32 -0
  135. package/src/chat/containers/chat-starter.tsx +75 -0
  136. package/src/chat/containers/index.ts +4 -0
  137. package/src/chat/containers/styles.ts +96 -0
  138. package/src/chat/feedback/chat-actions-container.test.tsx +64 -0
  139. package/src/chat/feedback/chat-actions-container.tsx +7 -0
  140. package/src/chat/feedback/chat-loader.test.tsx +10 -0
  141. package/src/chat/feedback/chat-loader.tsx +31 -0
  142. package/src/chat/feedback/chat-rating-action.tsx +43 -0
  143. package/src/chat/feedback/chat-thinking.test.tsx +15 -0
  144. package/src/chat/feedback/chat-thinking.tsx +23 -0
  145. package/src/chat/feedback/chat-tool-code-area.test.tsx +23 -0
  146. package/src/chat/feedback/chat-tool-code-area.tsx +71 -0
  147. package/src/chat/feedback/chat-tool-full-view-dialog.test.tsx +39 -0
  148. package/src/chat/feedback/chat-tool-full-view-dialog.tsx +121 -0
  149. package/src/chat/feedback/chat-tool-group.test.tsx +84 -0
  150. package/src/chat/feedback/chat-tool-group.tsx +156 -0
  151. package/src/chat/feedback/chat-tool-trace.test.tsx +81 -0
  152. package/src/chat/feedback/chat-tool-trace.tsx +192 -0
  153. package/src/chat/feedback/get-tool-label.test.tsx +91 -0
  154. package/src/chat/feedback/get-tool-label.ts +13 -0
  155. package/src/chat/feedback/index.ts +8 -0
  156. package/src/chat/feedback/styles.ts +229 -0
  157. package/src/chat/index.ts +59 -0
  158. package/src/chat/types.ts +215 -0
  159. package/src/chat/use-typewriter.test.tsx +38 -0
  160. package/src/chat/use-typewriter.ts +82 -0
  161. package/src/components/copy-button/copy-button.test.tsx +41 -0
  162. package/src/components/copy-button/copy-button.tsx +31 -0
  163. package/src/components/copy-button/types.ts +10 -0
  164. package/src/components/index.ts +3 -0
  165. package/src/widgets/echart/types.ts +1 -1
  166. package/src/widgets-v2/actions/index.ts +8 -0
  167. package/src/widgets-v2/actions/show-all/index.ts +7 -0
  168. package/src/widgets-v2/actions/show-all/labels.ts +8 -0
  169. package/src/widgets-v2/actions/show-all/show-all.test.tsx +50 -0
  170. package/src/widgets-v2/actions/show-all/show-all.tsx +72 -0
  171. package/src/widgets-v2/actions/show-all/style.ts +8 -0
  172. package/src/widgets-v2/category/category-ui.test.tsx +26 -10
  173. package/src/widgets-v2/category/category-ui.tsx +13 -3
  174. package/src/widgets-v2/category/category.test.tsx +4 -4
  175. package/src/widgets-v2/category/category.tsx +10 -1
  176. package/src/widgets-v2/category/components/category-row-other.test.tsx +36 -7
  177. package/src/widgets-v2/category/components/category-row-other.tsx +64 -13
  178. package/src/widgets-v2/category/style.ts +35 -4
  179. package/src/widgets-v2/category/types.ts +2 -0
  180. package/src/widgets-v2/index.ts +3 -0
  181. package/src/widgets-v2/selection-summary/labels.ts +8 -4
  182. package/src/widgets-v2/selection-summary/selection-summary.test.tsx +15 -9
  183. package/src/widgets-v2/selection-summary/selection-summary.tsx +42 -22
  184. package/src/widgets-v2/selection-summary/style.ts +15 -0
  185. package/dist/category-DwaeYjpX.js +0 -656
  186. package/dist/category-DwaeYjpX.js.map +0 -1
  187. package/dist/change-column-B4IT0rh6.js +0 -1110
  188. package/dist/change-column-B4IT0rh6.js.map +0 -1
@@ -6,13 +6,14 @@ import "@mui/icons-material/ZoomIn";
6
6
  import "./lasso-tool-CDFj4zKY.js";
7
7
  import "./cjs-D4KH3azB.js";
8
8
  import "@mui/icons-material";
9
+ import "@carto/ps-utils";
9
10
  import "./widget-context-DTGO0Yta.js";
10
11
  import "zustand";
11
12
  import "zustand/vanilla";
12
13
  import "zustand/middleware";
13
14
  import "zustand/react/shallow";
14
15
  import { Z as p } from "./transforms-Cdx4fkU5.js";
15
- function b(t, i) {
16
+ function h(t, i) {
16
17
  return !Array.isArray(t) || t.length === 0 ? null : t.map((r) => {
17
18
  if (r == null || typeof r != "object") return r;
18
19
  const o = r;
@@ -23,6 +24,6 @@ function b(t, i) {
23
24
  });
24
25
  }
25
26
  export {
26
- b as p
27
+ h as p
27
28
  };
28
- //# sourceMappingURL=data-zoom-layout-0QSptXG_.js.map
29
+ //# sourceMappingURL=data-zoom-layout--YiY6ko_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-zoom-layout-0QSptXG_.js","sources":["../src/widgets-v2/utils/data-zoom-layout.ts"],"sourcesContent":["import { ZOOM_LAYOUT } from '../actions/zoom-toggle'\n\n/**\n * If the option includes a `dataZoom` array (from ZoomToggle's transform),\n * lift any slider entries above the legend row so they don't overlap.\n * Returns `null` when there is no `dataZoom` — caller skips the layout\n * adjustment entirely.\n *\n * Shared between bar, histogram, and timeseries — every widget with a\n * horizontal x-axis dataZoom slider needs the same offset when a legend\n * is rendered below the plot.\n */\nexport function positionDataZoomForLegend(\n dataZoom: unknown,\n hasLegend: boolean,\n): unknown[] | null {\n if (!Array.isArray(dataZoom) || dataZoom.length === 0) return null\n return dataZoom.map((entry: unknown) => {\n if (entry == null || typeof entry !== 'object') return entry\n const dz = entry as { type?: string; bottom?: number }\n if (dz.type === 'slider' && hasLegend) {\n return { ...dz, bottom: ZOOM_LAYOUT.sliderBottomWithLegend }\n }\n return dz\n })\n}\n"],"names":["positionDataZoomForLegend","dataZoom","hasLegend","Array","isArray","length","map","entry","dz","type","bottom","ZOOM_LAYOUT","sliderBottomWithLegend"],"mappings":";;;;;;;;;;;;;;AAYO,SAASA,EACdC,GACAC,GACkB;AAClB,SAAI,CAACC,MAAMC,QAAQH,CAAQ,KAAKA,EAASI,WAAW,IAAU,OACvDJ,EAASK,IAAI,CAACC,MAAmB;AACtC,QAAIA,KAAS,QAAQ,OAAOA,KAAU,SAAU,QAAOA;AACvD,UAAMC,IAAKD;AACX,WAAIC,EAAGC,SAAS,YAAYP,IACnB;AAAA,MAAE,GAAGM;AAAAA,MAAIE,QAAQC,EAAYC;AAAAA,IAAAA,IAE/BJ;AAAAA,EACT,CAAC;AACH;"}
1
+ {"version":3,"file":"data-zoom-layout--YiY6ko_.js","sources":["../src/widgets-v2/utils/data-zoom-layout.ts"],"sourcesContent":["import { ZOOM_LAYOUT } from '../actions/zoom-toggle'\n\n/**\n * If the option includes a `dataZoom` array (from ZoomToggle's transform),\n * lift any slider entries above the legend row so they don't overlap.\n * Returns `null` when there is no `dataZoom` — caller skips the layout\n * adjustment entirely.\n *\n * Shared between bar, histogram, and timeseries — every widget with a\n * horizontal x-axis dataZoom slider needs the same offset when a legend\n * is rendered below the plot.\n */\nexport function positionDataZoomForLegend(\n dataZoom: unknown,\n hasLegend: boolean,\n): unknown[] | null {\n if (!Array.isArray(dataZoom) || dataZoom.length === 0) return null\n return dataZoom.map((entry: unknown) => {\n if (entry == null || typeof entry !== 'object') return entry\n const dz = entry as { type?: string; bottom?: number }\n if (dz.type === 'slider' && hasLegend) {\n return { ...dz, bottom: ZOOM_LAYOUT.sliderBottomWithLegend }\n }\n return dz\n })\n}\n"],"names":["positionDataZoomForLegend","dataZoom","hasLegend","Array","isArray","length","map","entry","dz","type","bottom","ZOOM_LAYOUT","sliderBottomWithLegend"],"mappings":";;;;;;;;;;;;;;;AAYO,SAASA,EACdC,GACAC,GACkB;AAClB,SAAI,CAACC,MAAMC,QAAQH,CAAQ,KAAKA,EAASI,WAAW,IAAU,OACvDJ,EAASK,IAAI,CAACC,MAAmB;AACtC,QAAIA,KAAS,QAAQ,OAAOA,KAAU,SAAU,QAAOA;AACvD,UAAMC,IAAKD;AACX,WAAIC,EAAGC,SAAS,YAAYP,IACnB;AAAA,MAAE,GAAGM;AAAAA,MAAIE,QAAQC,EAAYC;AAAAA,IAAAA,IAE/BJ;AAAAA,EACT,CAAC;AACH;"}
@@ -8,11 +8,12 @@ import "react";
8
8
  import { d as n, a as s } from "./exports-Cr43OCul.js";
9
9
  import "./lasso-tool-CDFj4zKY.js";
10
10
  import "./cjs-D4KH3azB.js";
11
+ import "@carto/ps-utils";
11
12
  import "@dnd-kit/core";
12
13
  import "@dnd-kit/sortable";
13
14
  import "@dnd-kit/utilities";
14
15
  import "react-dom";
15
- function T(r) {
16
+ function b(r) {
16
17
  const o = [];
17
18
  if (r.length > 0 && (r[0]?.length ?? 0) > 0) {
18
19
  const i = r?.[0]?.[0] ?? {}, t = Object.keys(i);
@@ -20,12 +21,12 @@ function T(r) {
20
21
  }
21
22
  return r.forEach((i) => {
22
23
  i.forEach((t) => {
23
- const e = Object.values(t).map((c) => String(c));
24
+ const e = Object.values(t).map((p) => String(p));
24
25
  o.push(e);
25
26
  });
26
27
  }), o;
27
28
  }
28
- function b(r) {
29
+ function j(r) {
29
30
  const o = [];
30
31
  return o.push(["x", "y"]), r.forEach((i) => {
31
32
  i.forEach((t) => {
@@ -33,7 +34,7 @@ function b(r) {
33
34
  });
34
35
  }), o;
35
36
  }
36
- function j(r) {
37
+ function D(r) {
37
38
  return function({
38
39
  refUI: o
39
40
  }) {
@@ -50,8 +51,8 @@ function j(r) {
50
51
  };
51
52
  }
52
53
  export {
53
- j as c,
54
- T as f,
55
- b as s
54
+ D as c,
55
+ b as f,
56
+ j as s
56
57
  };
57
- //# sourceMappingURL=download-config-CzmjOT2T.js.map
58
+ //# sourceMappingURL=download-config-oJIFZ2WC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download-config-CzmjOT2T.js","sources":["../src/widgets/utils/chart-config/csv-modifiers.ts","../src/widgets/utils/chart-config/download-config.ts"],"sourcesContent":["/**\n * Shared CSV export modifiers for chart widgets\n */\n\n/**\n * Flattens object array data into CSV-ready rows.\n * Used by bar, pie, histogram, and timeseries widgets.\n *\n * @param data - Array of series, where each series is an array of data objects\n * @returns CSV rows with headers and values\n */\nexport function flattenObjectArrayToCSV<T extends Record<string, unknown>>(\n data: T[][],\n): string[][] {\n const rows: string[][] = []\n\n // Add headers from first data point if available\n if (data.length > 0 && (data[0]?.length ?? 0) > 0) {\n const firstDataPoint = data?.[0]?.[0] ?? {}\n const headers = Object.keys(firstDataPoint)\n rows.push(headers)\n }\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n const values = Object.values(dataPoint).map((v) => String(v))\n rows.push(values)\n })\n })\n\n return rows\n}\n\n/**\n * Creates CSV rows for scatterplot data.\n * Scatterplot uses array format [x, y] instead of objects.\n *\n * @param data - Array of series, where each series is an array of [x, y] tuples\n * @returns CSV rows with ['x', 'y'] headers\n */\nexport function scatterplotDataToCSV(data: number[][][]): string[][] {\n const rows: string[][] = []\n\n // Add headers\n rows.push(['x', 'y'])\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n rows.push([String(dataPoint[0]), String(dataPoint[1])])\n })\n })\n\n return rows\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../../actions'\nimport type { ConfigProps } from '../../loader/types'\n\nexport function createChartDownloadConfig<TData>(\n csvModifier: (data: TData) => string[][],\n) {\n return function ({ refUI }: ConfigProps): DownloadItem<TData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = csvModifier(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n }\n}\n"],"names":["flattenObjectArrayToCSV","data","rows","length","firstDataPoint","headers","Object","keys","push","forEach","series","dataPoint","values","map","v","String","scatterplotDataToCSV","createChartDownloadConfig","csvModifier","refUI","downloadToPNG","modifier","downloadToCSV"],"mappings":";;;;;;;;;;;;;;AAWO,SAASA,EACdC,GACY;AACZ,QAAMC,IAAmB,CAAA;AAGzB,MAAID,EAAKE,SAAS,MAAMF,EAAK,CAAC,GAAGE,UAAU,KAAK,GAAG;AACjD,UAAMC,IAAiBH,IAAO,CAAC,IAAI,CAAC,KAAK,CAAA,GACnCI,IAAUC,OAAOC,KAAKH,CAAc;AAC1CF,IAAAA,EAAKM,KAAKH,CAAO;AAAA,EACnB;AAGAJ,SAAAA,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5B,YAAMC,IAASN,OAAOM,OAAOD,CAAS,EAAEE,IAAKC,CAAAA,MAAMC,OAAOD,CAAC,CAAC;AAC5DZ,MAAAA,EAAKM,KAAKI,CAAM;AAAA,IAClB,CAAC;AAAA,EACH,CAAC,GAEMV;AACT;AASO,SAASc,EAAqBf,GAAgC;AACnE,QAAMC,IAAmB,CAAA;AAGzBA,SAAAA,EAAKM,KAAK,CAAC,KAAK,GAAG,CAAC,GAGpBP,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5BT,MAAAA,EAAKM,KAAK,CAACO,OAAOJ,EAAU,CAAC,CAAC,GAAGI,OAAOJ,EAAU,CAAC,CAAC,CAAC,CAAC;AAAA,IACxD,CAAC;AAAA,EACH,CAAC,GAEMT;AACT;ACpDO,SAASe,EACdC,GACA;AACA,SAAO,SAAU;AAAA,IAAEC,OAAAA;AAAAA,EAAAA,GAA6C;AAC9D,WAAO,CACL;AAAA,MACE,GAAGC;AAAAA,MACHC,UAAUA,MAAMD,EAAcC,SAASF,CAAK;AAAA,IAAA,GAE9C;AAAA,MACE,GAAGG;AAAAA,MACHD,UAAU,OAAOpB,MAAS;AACxB,cAAMC,IAAOgB,EAAYjB,CAAI;AAC7B,eAAOqB,EAAcD,SAASnB,CAAI;AAAA,MACpC;AAAA,IAAA,CACD;AAAA,EAEL;AACF;"}
1
+ {"version":3,"file":"download-config-oJIFZ2WC.js","sources":["../src/widgets/utils/chart-config/csv-modifiers.ts","../src/widgets/utils/chart-config/download-config.ts"],"sourcesContent":["/**\n * Shared CSV export modifiers for chart widgets\n */\n\n/**\n * Flattens object array data into CSV-ready rows.\n * Used by bar, pie, histogram, and timeseries widgets.\n *\n * @param data - Array of series, where each series is an array of data objects\n * @returns CSV rows with headers and values\n */\nexport function flattenObjectArrayToCSV<T extends Record<string, unknown>>(\n data: T[][],\n): string[][] {\n const rows: string[][] = []\n\n // Add headers from first data point if available\n if (data.length > 0 && (data[0]?.length ?? 0) > 0) {\n const firstDataPoint = data?.[0]?.[0] ?? {}\n const headers = Object.keys(firstDataPoint)\n rows.push(headers)\n }\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n const values = Object.values(dataPoint).map((v) => String(v))\n rows.push(values)\n })\n })\n\n return rows\n}\n\n/**\n * Creates CSV rows for scatterplot data.\n * Scatterplot uses array format [x, y] instead of objects.\n *\n * @param data - Array of series, where each series is an array of [x, y] tuples\n * @returns CSV rows with ['x', 'y'] headers\n */\nexport function scatterplotDataToCSV(data: number[][][]): string[][] {\n const rows: string[][] = []\n\n // Add headers\n rows.push(['x', 'y'])\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n rows.push([String(dataPoint[0]), String(dataPoint[1])])\n })\n })\n\n return rows\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../../actions'\nimport type { ConfigProps } from '../../loader/types'\n\nexport function createChartDownloadConfig<TData>(\n csvModifier: (data: TData) => string[][],\n) {\n return function ({ refUI }: ConfigProps): DownloadItem<TData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = csvModifier(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n }\n}\n"],"names":["flattenObjectArrayToCSV","data","rows","length","firstDataPoint","headers","Object","keys","push","forEach","series","dataPoint","values","map","v","String","scatterplotDataToCSV","createChartDownloadConfig","csvModifier","refUI","downloadToPNG","modifier","downloadToCSV"],"mappings":";;;;;;;;;;;;;;;AAWO,SAASA,EACdC,GACY;AACZ,QAAMC,IAAmB,CAAA;AAGzB,MAAID,EAAKE,SAAS,MAAMF,EAAK,CAAC,GAAGE,UAAU,KAAK,GAAG;AACjD,UAAMC,IAAiBH,IAAO,CAAC,IAAI,CAAC,KAAK,CAAA,GACnCI,IAAUC,OAAOC,KAAKH,CAAc;AAC1CF,IAAAA,EAAKM,KAAKH,CAAO;AAAA,EACnB;AAGAJ,SAAAA,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5B,YAAMC,IAASN,OAAOM,OAAOD,CAAS,EAAEE,IAAKC,CAAAA,MAAMC,OAAOD,CAAC,CAAC;AAC5DZ,MAAAA,EAAKM,KAAKI,CAAM;AAAA,IAClB,CAAC;AAAA,EACH,CAAC,GAEMV;AACT;AASO,SAASc,EAAqBf,GAAgC;AACnE,QAAMC,IAAmB,CAAA;AAGzBA,SAAAA,EAAKM,KAAK,CAAC,KAAK,GAAG,CAAC,GAGpBP,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5BT,MAAAA,EAAKM,KAAK,CAACO,OAAOJ,EAAU,CAAC,CAAC,GAAGI,OAAOJ,EAAU,CAAC,CAAC,CAAC,CAAC;AAAA,IACxD,CAAC;AAAA,EACH,CAAC,GAEMT;AACT;ACpDO,SAASe,EACdC,GACA;AACA,SAAO,SAAU;AAAA,IAAEC,OAAAA;AAAAA,EAAAA,GAA6C;AAC9D,WAAO,CACL;AAAA,MACE,GAAGC;AAAAA,MACHC,UAAUA,MAAMD,EAAcC,SAASF,CAAK;AAAA,IAAA,GAE9C;AAAA,MACE,GAAGG;AAAAA,MACHD,UAAU,OAAOpB,MAAS;AACxB,cAAMC,IAAOgB,EAAYjB,CAAI;AAC7B,eAAOqB,EAAcD,SAASnB,CAAI;AAAA,MACpC;AAAA,IAAA,CACD;AAAA,EAEL;AACF;"}
@@ -13,6 +13,7 @@ import "@mui/icons-material/FileDownload";
13
13
  import "./lasso-tool-CDFj4zKY.js";
14
14
  import "./cjs-D4KH3azB.js";
15
15
  import "@mui/icons-material";
16
+ import "@carto/ps-utils";
16
17
  import "html2canvas";
17
18
  import "@mui/icons-material/ImageOutlined";
18
19
  function w() {
@@ -54,14 +55,14 @@ const A = Object.freeze([]), I = (o) => ({
54
55
  data: o.data ?? A,
55
56
  formatter: o.formatter
56
57
  });
57
- function F() {
58
+ function G() {
58
59
  const o = x(3), r = S(), t = $(r, I);
59
60
  let a;
60
61
  return o[0] !== t.data || o[1] !== t.formatter ? (a = /* @__PURE__ */ s(y, { items: t.data, formatter: t.formatter }), o[0] = t.data, o[1] = t.formatter, o[2] = a) : a = o[2], a;
61
62
  }
62
63
  export {
63
64
  w as S,
64
- F as a,
65
+ G as a,
65
66
  y as b
66
67
  };
67
- //# sourceMappingURL=spread-Y9R1f5dm.js.map
68
+ //# sourceMappingURL=spread-CPis22AE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spread-Y9R1f5dm.js","sources":["../src/widgets-v2/spread/separator.tsx","../src/widgets-v2/spread/spread-ui.tsx","../src/widgets-v2/spread/spread.tsx"],"sourcesContent":["import { Value } from '../formula'\n\n/**\n * Em-dash separator placed between a Spread row's `min` and `max` values.\n * Built from the Formula {@link Value} primitive so typography (h5/600,\n * baseline alignment) matches the numbers around it. Renders with\n * `text.secondary` so it visually recedes between the two bounds.\n */\nexport function Separator() {\n return <Value color='inherit'>-</Value>\n}\n","import { Box } from '@mui/material'\nimport type { Ref } from 'react'\nimport { Note, Prefix, Series, Suffix, Value } from '../formula'\nimport { styles } from '../formula/style'\nimport { Separator } from './separator'\nimport type { SpreadDataItem } from './types'\n\nexport interface SpreadUIProps {\n items: readonly SpreadDataItem[]\n /** Number formatter — applied to each item's `min` and `max`. */\n formatter?: (value: number) => string\n /** Forwarded to the root `<Box>` so consumers can capture the DOM (PNG export). */\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * Pure presentational component for the Spread widget. Each item renders as\n * a row containing (in order): optional `Series` avatar, a body with\n * `[prefix] min — max [suffix]` plus optional `Note`. Reuses the Formula\n * primitives ({@link Series}, {@link Prefix}, {@link Value}, {@link Suffix},\n * {@link Note}) and the Formula row styles so Spread and Formula stay\n * visually aligned when used together.\n */\nexport function SpreadUI({ items, formatter, ref }: SpreadUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box ref={ref} sx={styles.root}>\n {items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { SpreadUI } from './spread-ui'\nimport type { SpreadWidgetData } from './types'\n\ninterface SpreadSlice {\n data: SpreadWidgetData\n formatter?: (value: number) => string\n}\n\n// Stable empty-data sentinel — keeps the slice's `data` reference stable\n// when the underlying store value is null/undefined so the shallow-equality\n// gate in `useWidgetShallow` doesn't re-render every commit.\nconst EMPTY_DATA: SpreadWidgetData = Object.freeze([]) as SpreadWidgetData\n\nconst spreadSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): SpreadSlice => ({\n data: (s.data ?? EMPTY_DATA) as SpreadWidgetData,\n formatter: s.formatter,\n})\n\n/**\n * Stateful Spread bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link SpreadUI}.\n */\nexport function Spread() {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, spreadSelector)\n return <SpreadUI items={slice.data} formatter={slice.formatter} />\n}\n"],"names":["Separator","$","_c","t0","Symbol","for","jsx","Value","SpreadUI","items","formatter","ref","fmt","_temp","t1","t2","item","i","Box","styles","row","series","Series","name","color","jsxs","body","valueRow","prefix","Prefix","min","max","suffix","Suffix","note","Note","map","root","n","String","EMPTY_DATA","Object","freeze","spreadSelector","s","data","Spread","id","useWidgetId","slice","useWidgetShallow"],"mappings":";;;;;;;;;;;;;;;;;AAQO,SAAAA,IAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,SAAAF,EAAA,CAAA,MAAAG,uBAAAC,IAAA,2BAAA,KACEF,IAAA,gBAAAG,EAACC,GAAA,EAAY,OAAA,WAAU,UAAA,KAAC,GAAQN,OAAAE,KAAAA,IAAAF,EAAA,CAAA,GAAhCE;AAAgC;ACclC,SAAAK,EAAAL,GAAA;AAAA,QAAAF,IAAAC,EAAA,CAAA,GAAkB;AAAA,IAAAO,OAAAA;AAAAA,IAAAC,WAAAA;AAAAA,IAAAC,KAAAA;AAAAA,EAAAA,IAAAR,GACvBS,IAAYF,KAAAG;AAAuC,MAAAC;AAAA,MAAAb,EAAA,CAAA,MAAAW,KAAAX,SAAAQ,GAAA;AAAA,QAAAM;AAAA,IAAAd,SAAAW,KAGpCG,IAAAA,CAAAC,GAAAC,wBAGRC,GAAA,EAEK,IAAAC,EAAMC,KAETJ,UAAAA;AAAAA,MAAAA,EAAIK,SACH,gBAAAf,EAACgB,GAAA,EAAa,MAAAN,EAAIK,OAAOE,MAAc,OAAAP,EAAIK,OAAOG,MAAAA,CAAM,IADzD;AAAA,MAGD,gBAAAC,EAACP,GAAA,EAAQ,IAAAC,EAAMO,MACb,UAAA;AAAA,QAAA,gBAAAD,EAACP,GAAA,EAAQ,IAAAC,EAAMQ,UACZX,UAAAA;AAAAA,UAAAA,EAAIY,SAAU,gBAAAtB,EAACuB,GAAA,EAAQb,UAAAA,EAAIY,QAAQ,IAAnC;AAAA,UACD,gBAAAtB,EAACC,KAAa,OAAAS,EAAIQ,OAASZ,UAAAA,EAAII,EAAIc,GAAI,GAAE;AAAA,4BACxC9B,GAAA,EAAS;AAAA,UACV,gBAAAM,EAACC,KAAa,OAAAS,EAAIQ,OAASZ,UAAAA,EAAII,EAAIe,GAAI,GAAE;AAAA,UACxCf,EAAIgB,SAAU,gBAAA1B,EAAC2B,GAAA,EAAQjB,UAAAA,EAAIgB,QAAQ,IAAnC;AAAA,QAAA,GACH;AAAA,QACChB,EAAIkB,OAAQ,gBAAA5B,EAAC6B,GAAA,EAAMnB,UAAAA,EAAIkB,MAAM,IAA7B;AAAA,MAAA,EAAA,CACH;AAAA,IAAA,EAAA,GAfK,UAAUlB,EAAIK,QAAaE,QAAjB,EAAuB,IAAIP,EAAIc,GAAI,IAAId,EAAIe,GAAI,IAAId,CAAC,EAgBrE,GACDhB,OAAAW,GAAAX,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GArBAa,IAAAL,EAAK2B,IAAKrB,CAqBV,GAACd,OAAAW,GAAAX,OAAAQ,GAAAR,OAAAa;AAAAA,EAAA;AAAAA,IAAAA,IAAAb,EAAA,CAAA;AAAA,MAAAc;AAAA,SAAAd,EAAA,CAAA,MAAAU,KAAAV,SAAAa,KAtBJC,sBAACG,GAAA,EAASP,KAAAA,GAAS,IAAAQ,EAAMkB,MACtBvB,UAAAA,GAsBH,GAAMb,OAAAU,GAAAV,OAAAa,GAAAb,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAvBNc;AAuBM;AA1BH,SAAAF,EAAAyB,GAAA;AAAA,SACoCC,OAAOD,CAAC;AAAC;ACZpD,MAAME,IAA+BC,OAAOC,OAAO,EAAE,GAE/CC,IAAiBA,CAACC,OAGJ;AAAA,EAClBC,MAAOD,EAAEC,QAAQL;AAAAA,EACjB9B,WAAWkC,EAAElC;AACf;AAMO,SAAAoC,IAAA;AAAA,QAAA7C,IAAAC,EAAA,CAAA,GACL6C,IAAWC,EAAAA,GACXC,IAAcC,EAAiBH,GAAIJ,CAAc;AAAC,MAAAxC;AAAA,SAAAF,EAAA,CAAA,MAAAgD,EAAAJ,QAAA5C,EAAA,CAAA,MAAAgD,EAAAvC,aAC3CP,sBAACK,GAAA,EAAgB,OAAAyC,EAAKJ,MAAkB,WAAAI,EAAKvC,WAAU,GAAIT,EAAA,CAAA,IAAAgD,EAAAJ,MAAA5C,EAAA,CAAA,IAAAgD,EAAAvC,WAAAT,OAAAE,KAAAA,IAAAF,EAAA,CAAA,GAA3DE;AAA2D;"}
1
+ {"version":3,"file":"spread-CPis22AE.js","sources":["../src/widgets-v2/spread/separator.tsx","../src/widgets-v2/spread/spread-ui.tsx","../src/widgets-v2/spread/spread.tsx"],"sourcesContent":["import { Value } from '../formula'\n\n/**\n * Em-dash separator placed between a Spread row's `min` and `max` values.\n * Built from the Formula {@link Value} primitive so typography (h5/600,\n * baseline alignment) matches the numbers around it. Renders with\n * `text.secondary` so it visually recedes between the two bounds.\n */\nexport function Separator() {\n return <Value color='inherit'>-</Value>\n}\n","import { Box } from '@mui/material'\nimport type { Ref } from 'react'\nimport { Note, Prefix, Series, Suffix, Value } from '../formula'\nimport { styles } from '../formula/style'\nimport { Separator } from './separator'\nimport type { SpreadDataItem } from './types'\n\nexport interface SpreadUIProps {\n items: readonly SpreadDataItem[]\n /** Number formatter — applied to each item's `min` and `max`. */\n formatter?: (value: number) => string\n /** Forwarded to the root `<Box>` so consumers can capture the DOM (PNG export). */\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * Pure presentational component for the Spread widget. Each item renders as\n * a row containing (in order): optional `Series` avatar, a body with\n * `[prefix] min — max [suffix]` plus optional `Note`. Reuses the Formula\n * primitives ({@link Series}, {@link Prefix}, {@link Value}, {@link Suffix},\n * {@link Note}) and the Formula row styles so Spread and Formula stay\n * visually aligned when used together.\n */\nexport function SpreadUI({ items, formatter, ref }: SpreadUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box ref={ref} sx={styles.root}>\n {items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { SpreadUI } from './spread-ui'\nimport type { SpreadWidgetData } from './types'\n\ninterface SpreadSlice {\n data: SpreadWidgetData\n formatter?: (value: number) => string\n}\n\n// Stable empty-data sentinel — keeps the slice's `data` reference stable\n// when the underlying store value is null/undefined so the shallow-equality\n// gate in `useWidgetShallow` doesn't re-render every commit.\nconst EMPTY_DATA: SpreadWidgetData = Object.freeze([]) as SpreadWidgetData\n\nconst spreadSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): SpreadSlice => ({\n data: (s.data ?? EMPTY_DATA) as SpreadWidgetData,\n formatter: s.formatter,\n})\n\n/**\n * Stateful Spread bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link SpreadUI}.\n */\nexport function Spread() {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, spreadSelector)\n return <SpreadUI items={slice.data} formatter={slice.formatter} />\n}\n"],"names":["Separator","$","_c","t0","Symbol","for","jsx","Value","SpreadUI","items","formatter","ref","fmt","_temp","t1","t2","item","i","Box","styles","row","series","Series","name","color","jsxs","body","valueRow","prefix","Prefix","min","max","suffix","Suffix","note","Note","map","root","n","String","EMPTY_DATA","Object","freeze","spreadSelector","s","data","Spread","id","useWidgetId","slice","useWidgetShallow"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ChatErrorMessageProps } from '../types';
2
+ export declare function ChatErrorMessage({ errors, icon, actions, sx, }: ChatErrorMessageProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatSuggestionButtonProps } from '../types';
2
+ export declare function ChatSuggestionButton({ label, color, sx, ...props }: ChatSuggestionButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatUserMessageProps } from '../types';
2
+ export declare function ChatUserMessage({ children, muted, topContext, sx, }: ChatUserMessageProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export { ChatUserMessage } from './chat-user-message';
2
+ export { ChatAgentMessage } from './chat-agent-message';
3
+ export { ChatErrorMessage } from './chat-error-message';
4
+ export { ChatSuggestionButton } from './chat-suggestion-button';
@@ -0,0 +1,4 @@
1
+ export declare const CHAT_MAX_WIDTH = 768;
2
+ export declare const CHAT_SCROLL_DELAY = 300;
3
+ export declare const CHAT_DIVIDER_DELAY = 100;
4
+ export declare const CHAT_TOOL_CODE_AREA_MAX_HEIGHT = 126;
@@ -0,0 +1,2 @@
1
+ import { ChatContentProps, ChatContentRef } from '../types';
2
+ export declare const ChatContent: import('react').ForwardRefExoticComponent<ChatContentProps & import('react').RefAttributes<ChatContentRef>>;
@@ -0,0 +1,2 @@
1
+ import { ChatFooterProps } from '../types';
2
+ export declare function ChatFooter({ value, onChange, onSend, onStop, isGenerating, disabled, placeholder, labels, caption, sx, }: ChatFooterProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatHeaderProps } from '../types';
2
+ export declare function ChatHeader({ leftSlot, title, rightSlot, onClose, sx, }: ChatHeaderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatStarterProps } from '../types';
2
+ export declare function ChatStarter({ icon, title, description, items, size, onSelect, sx, }: ChatStarterProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export { ChatContent } from './chat-content';
2
+ export { ChatHeader } from './chat-header';
3
+ export { ChatFooter } from './chat-footer';
4
+ export { ChatStarter } from './chat-starter';
@@ -0,0 +1,93 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ header: {
4
+ display: "flex";
5
+ alignItems: "center";
6
+ justifyContent: "space-between";
7
+ padding: ({ spacing }: Theme) => string;
8
+ };
9
+ headerTitle: {
10
+ flexGrow: number;
11
+ px: ({ spacing }: Theme) => string;
12
+ };
13
+ headerActions: {
14
+ display: "flex";
15
+ alignItems: "center";
16
+ marginLeft: ({ spacing }: Theme) => string;
17
+ gap: ({ spacing }: Theme) => string;
18
+ };
19
+ footerWrapper: {
20
+ padding: ({ spacing }: Theme) => string;
21
+ position: "relative";
22
+ };
23
+ footerCorner: {
24
+ position: "absolute";
25
+ bottom: string;
26
+ right: string;
27
+ margin: string;
28
+ };
29
+ footer: {
30
+ maxWidth: number;
31
+ margin: string;
32
+ '&.MuiFilledInput-root.MuiInputBase-multiline.MuiInputBase-sizeSmall textarea': {
33
+ resize: "none";
34
+ maxHeight: string;
35
+ overflowY: "auto !important";
36
+ paddingRight: ({ spacing }: Theme) => string;
37
+ };
38
+ };
39
+ footerCaption: {
40
+ textAlign: "center";
41
+ };
42
+ content: {
43
+ overflowY: "auto";
44
+ flex: number;
45
+ position: "relative";
46
+ mx: string;
47
+ maxWidth: number;
48
+ width: string;
49
+ maxHeight: string;
50
+ pt: number;
51
+ pb: number;
52
+ px: number;
53
+ display: "flex";
54
+ flexDirection: "column";
55
+ borderTopWidth: string;
56
+ borderTopStyle: "solid";
57
+ borderBottomWidth: string;
58
+ borderBottomStyle: "solid";
59
+ };
60
+ sentinel: {
61
+ height: string;
62
+ flexShrink: number;
63
+ };
64
+ jumpToLatestWrapper: {
65
+ position: "sticky";
66
+ bottom: ({ spacing }: Theme) => string;
67
+ height: number;
68
+ display: "flex";
69
+ justifyContent: "center";
70
+ zIndex: number;
71
+ };
72
+ jumpToLatest: {
73
+ transition: "opacity 0.2s";
74
+ };
75
+ starter: {
76
+ display: "flex";
77
+ flexDirection: "column";
78
+ alignItems: "center";
79
+ justifyContent: "center";
80
+ padding: ({ spacing }: Theme) => string;
81
+ textAlign: "center";
82
+ maxWidth: number;
83
+ margin: string;
84
+ };
85
+ starterItems: {
86
+ display: "grid";
87
+ width: string;
88
+ marginTop: ({ spacing }: Theme) => string;
89
+ };
90
+ starterItemsTwoCol: {
91
+ gridTemplateColumns: string;
92
+ };
93
+ };
@@ -0,0 +1,2 @@
1
+ import { ChatLoaderProps } from '../types';
2
+ export declare function ChatLoader({ size, labels, sx }: ChatLoaderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatRatingActionProps } from '../types';
2
+ export declare function ChatRatingAction({ rating, onRatingChange, labels, }: ChatRatingActionProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatThinkingProps } from '../types';
2
+ export declare function ChatThinking({ children, duration, sx, }: ChatThinkingProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatToolCodeAreaProps } from '../types';
2
+ export declare function ChatToolCodeArea({ content, title, isError, labels, sx, }: ChatToolCodeAreaProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatToolFullViewDialogProps } from '../types';
2
+ export declare function ChatToolFullViewDialog({ open, onClose, title, content, }: ChatToolFullViewDialogProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatToolGroupProps } from '../types';
2
+ export declare function ChatToolGroup({ tools, expanded: _expanded, onExpandedChange: _setExpanded, expandedTools: _expandedTools, onToolExpandedChange: _setExpandedTools, labels, sx, }: ChatToolGroupProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { ChatToolTraceProps } from '../types';
2
+ export declare function ChatToolTraceDetails({ tool, labels, }: Pick<ChatToolTraceProps, 'tool' | 'labels'>): import("react/jsx-runtime").JSX.Element;
3
+ export declare function ChatToolTrace({ tool, expanded, onExpandedChange, labels, sx, }: ChatToolTraceProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ChatToolItem } from '../types';
2
+ export declare function getToolLabel(tool: ChatToolItem): string;
@@ -0,0 +1,8 @@
1
+ export { ChatThinking } from './chat-thinking';
2
+ export { ChatLoader } from './chat-loader';
3
+ export { ChatActionsContainer } from './chat-actions-container';
4
+ export { ChatRatingAction } from './chat-rating-action';
5
+ export { ChatToolTrace } from './chat-tool-trace';
6
+ export { ChatToolCodeArea } from './chat-tool-code-area';
7
+ export { ChatToolFullViewDialog } from './chat-tool-full-view-dialog';
8
+ export { ChatToolGroup } from './chat-tool-group';
@@ -0,0 +1,211 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ thinking: {
4
+ display: "flex";
5
+ alignItems: "center";
6
+ minHeight: ({ spacing }: Theme) => string;
7
+ background: ({ palette }: Theme) => string;
8
+ backgroundSize: string;
9
+ backgroundClip: "text";
10
+ WebkitBackgroundClip: "text";
11
+ WebkitTextFillColor: "transparent";
12
+ animation: `${{
13
+ name: string;
14
+ styles: string;
15
+ anim: 1;
16
+ toString: () => string;
17
+ } & string} 2s ease-in-out infinite`;
18
+ animationDuration: "2s";
19
+ };
20
+ loader: {
21
+ display: "flex";
22
+ alignItems: "center";
23
+ justifyContent: "center";
24
+ position: "relative";
25
+ p: number;
26
+ };
27
+ loaderOuterCircle: {
28
+ position: "absolute";
29
+ inset: number;
30
+ margin: string;
31
+ borderRadius: string;
32
+ backgroundColor: ({ palette }: Theme) => string;
33
+ animation: `${{
34
+ name: string;
35
+ styles: string;
36
+ anim: 1;
37
+ toString: () => string;
38
+ } & string} 1s ease-in-out infinite`;
39
+ };
40
+ loaderInnerCircle: {
41
+ position: "absolute";
42
+ inset: number;
43
+ margin: string;
44
+ borderRadius: string;
45
+ backgroundColor: ({ palette }: Theme) => string;
46
+ animation: `${{
47
+ name: string;
48
+ styles: string;
49
+ anim: 1;
50
+ toString: () => string;
51
+ } & string} 1s ease-in-out infinite`;
52
+ };
53
+ traceHeader: {
54
+ display: "flex";
55
+ alignItems: "center";
56
+ padding: number;
57
+ paddingLeft: ({ spacing }: Theme) => string;
58
+ borderRadius: ({ spacing }: Theme) => string;
59
+ width: string;
60
+ color: ({ palette }: Theme) => string;
61
+ '&:hover': {
62
+ backgroundColor: ({ palette }: Theme) => string;
63
+ };
64
+ };
65
+ traceChevron: {
66
+ color: ({ palette }: Theme) => string;
67
+ transition: "transform 0.2s";
68
+ };
69
+ traceDetailsWrapper: {
70
+ marginTop: ({ spacing }: Theme) => string;
71
+ padding: ({ spacing }: Theme) => string;
72
+ border: "1px solid";
73
+ borderColor: "divider";
74
+ borderRadius: ({ spacing }: Theme) => string;
75
+ };
76
+ traceField: {
77
+ display: "flex";
78
+ alignItems: "flex-start";
79
+ gap: ({ spacing }: Theme) => string;
80
+ };
81
+ traceFieldLabel: {
82
+ flexShrink: number;
83
+ };
84
+ traceReference: {
85
+ display: "flex";
86
+ borderRadius: ({ spacing }: Theme) => string;
87
+ padding: ({ spacing }: Theme) => string;
88
+ gap: ({ spacing }: Theme) => string;
89
+ backgroundColor: ({ palette }: Theme) => string;
90
+ color: ({ palette }: Theme) => string;
91
+ };
92
+ traceStatusSuccess: {
93
+ color: ({ palette }: Theme) => string;
94
+ };
95
+ traceStatusError: {
96
+ color: ({ palette }: Theme) => string;
97
+ };
98
+ codeArea: {
99
+ position: "relative";
100
+ width: string;
101
+ };
102
+ codeAreaPre: {
103
+ margin: number;
104
+ padding: ({ spacing }: Theme) => string;
105
+ borderRadius: ({ spacing }: Theme) => string;
106
+ backgroundColor: ({ palette }: Theme) => string;
107
+ fontSize: string;
108
+ fontFamily: "monospace";
109
+ whiteSpace: "pre-wrap";
110
+ wordBreak: "break-word";
111
+ overflowY: "auto";
112
+ };
113
+ codeAreaPreError: {
114
+ borderLeft: ({ palette }: Theme) => string;
115
+ backgroundColor: ({ palette }: Theme) => string;
116
+ };
117
+ codeAreaFullViewButton: {
118
+ position: "absolute";
119
+ top: ({ spacing }: Theme) => string;
120
+ right: ({ spacing }: Theme) => string;
121
+ };
122
+ fullViewDialog: {
123
+ margin: ({ spacing }: Theme) => string;
124
+ };
125
+ fullViewPaper: {
126
+ borderRadius: number;
127
+ };
128
+ fullViewTitle: {
129
+ display: "flex";
130
+ alignItems: "center";
131
+ justifyContent: "space-between";
132
+ padding: ({ spacing }: Theme) => string;
133
+ borderBottom: string;
134
+ borderBottomColor: "divider";
135
+ };
136
+ fullViewDialogContent: {
137
+ padding: number;
138
+ '&:first-of-type': {
139
+ paddingTop: number;
140
+ };
141
+ };
142
+ fullViewPre: {
143
+ margin: number;
144
+ padding: ({ spacing }: Theme) => string;
145
+ background: ({ palette, spacing }: Theme) => string;
146
+ fontFamily: "monospace";
147
+ fontSize: string;
148
+ whiteSpace: "pre-wrap";
149
+ wordBreak: "break-word";
150
+ lineHeight: number;
151
+ counterReset: "line";
152
+ };
153
+ fullViewLine: {
154
+ display: "block";
155
+ '&::before': {
156
+ counterIncrement: "line";
157
+ content: "counter(line)";
158
+ display: "inline-block";
159
+ width: string;
160
+ marginRight: string;
161
+ textAlign: "right";
162
+ color: ({ palette }: Theme) => string;
163
+ userSelect: "none";
164
+ };
165
+ };
166
+ groupHeader: {
167
+ textAlign: "left";
168
+ display: "flex";
169
+ alignItems: "center";
170
+ borderRadius: number;
171
+ gap: ({ spacing }: Theme) => string;
172
+ };
173
+ errorBadge: {
174
+ color: ({ palette }: Theme) => string;
175
+ fontWeight: number;
176
+ display: "flex";
177
+ alignItems: "center";
178
+ gap: ({ spacing }: Theme) => string;
179
+ };
180
+ syntaxToken_key: {
181
+ color: "#881280";
182
+ };
183
+ syntaxToken_string: {
184
+ color: "#c41a16";
185
+ };
186
+ syntaxToken_number: {
187
+ color: "#1c00cf";
188
+ };
189
+ syntaxToken_boolean: {
190
+ color: "#1c00cf";
191
+ };
192
+ syntaxToken_null: {
193
+ color: "#808080";
194
+ };
195
+ syntaxToken_punctuation: {
196
+ color: ({ palette }: Theme) => string;
197
+ };
198
+ groupListItem: {
199
+ borderBottom: string;
200
+ borderColor: "divider";
201
+ '&:first-of-type .MuiButton-root': {
202
+ borderRadius: ({ spacing }: Theme) => string;
203
+ };
204
+ '&:last-of-type:not([aria-expanded=true]) .MuiButton-root': {
205
+ borderRadius: ({ spacing }: Theme) => string;
206
+ };
207
+ '&:last-of-type': {
208
+ borderBottomWidth: number;
209
+ };
210
+ };
211
+ };
@@ -0,0 +1,20 @@
1
+ export type { ChatSxProps, ChatErrorAction, ChatUserMessageProps, ChatAgentMessageProps, ChatErrorMessageProps, ChatSuggestionButtonProps, ChatThinkingProps, ChatLoaderProps, ChatContentProps, ChatContentRef, ChatHeaderProps, ChatFooterProps, ChatStarterItem, ChatStarterProps, ChatRatingActionProps, ChatToolItem, ChatToolTraceProps, ChatToolCodeAreaProps, ChatToolFullViewDialogProps, ChatToolGroupProps, } from './types';
2
+ export { CHAT_MAX_WIDTH, CHAT_SCROLL_DELAY, CHAT_DIVIDER_DELAY, CHAT_TOOL_CODE_AREA_MAX_HEIGHT, } from './const';
3
+ export { useTypewriter } from './use-typewriter';
4
+ export { ChatUserMessage } from './bubbles/chat-user-message';
5
+ export { ChatAgentMessage } from './bubbles/chat-agent-message';
6
+ export { ChatErrorMessage } from './bubbles/chat-error-message';
7
+ export { ChatSuggestionButton } from './bubbles/chat-suggestion-button';
8
+ export { ChatMessageOverflow } from './bubbles/styles';
9
+ export { ChatThinking } from './feedback/chat-thinking';
10
+ export { ChatLoader } from './feedback/chat-loader';
11
+ export { ChatContent } from './containers/chat-content';
12
+ export { ChatHeader } from './containers/chat-header';
13
+ export { ChatFooter } from './containers/chat-footer';
14
+ export { ChatStarter } from './containers/chat-starter';
15
+ export { ChatActionsContainer } from './feedback/chat-actions-container';
16
+ export { ChatRatingAction } from './feedback/chat-rating-action';
17
+ export { ChatToolTrace } from './feedback/chat-tool-trace';
18
+ export { ChatToolCodeArea } from './feedback/chat-tool-code-area';
19
+ export { ChatToolFullViewDialog } from './feedback/chat-tool-full-view-dialog';
20
+ export { ChatToolGroup } from './feedback/chat-tool-group';