langgraph-ui-components 0.0.13 → 0.0.14

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 (200) hide show
  1. package/dist/index.es107.js +4 -4
  2. package/dist/index.es109.js +1 -1
  3. package/dist/index.es115.js +1 -1
  4. package/dist/index.es119.js +1 -1
  5. package/dist/index.es121.js +1 -1
  6. package/dist/index.es122.js +9 -9
  7. package/dist/index.es129.js +2 -2
  8. package/dist/index.es13.js +6 -6
  9. package/dist/index.es132.js +2 -2
  10. package/dist/index.es141.js +1 -1
  11. package/dist/index.es142.js +2 -2
  12. package/dist/index.es143.js +1 -1
  13. package/dist/index.es156.js +1 -1
  14. package/dist/index.es16.js +1 -1
  15. package/dist/index.es164.js +1 -1
  16. package/dist/index.es165.js +1 -1
  17. package/dist/index.es166.js +1 -1
  18. package/dist/index.es167.js +1 -1
  19. package/dist/index.es168.js +1 -1
  20. package/dist/index.es169.js +1 -1
  21. package/dist/index.es170.js +1 -1
  22. package/dist/index.es171.js +1 -1
  23. package/dist/index.es172.js +1 -1
  24. package/dist/index.es173.js +1 -1
  25. package/dist/index.es174.js +1 -1
  26. package/dist/index.es175.js +1 -1
  27. package/dist/index.es176.js +1 -1
  28. package/dist/index.es177.js +1 -1
  29. package/dist/index.es178.js +1 -1
  30. package/dist/index.es179.js +1 -1
  31. package/dist/index.es180.js +1 -1
  32. package/dist/index.es181.js +1 -1
  33. package/dist/index.es182.js +1 -1
  34. package/dist/index.es183.js +1 -1
  35. package/dist/index.es184.js +1 -1
  36. package/dist/index.es185.js +1 -1
  37. package/dist/index.es186.js +1 -1
  38. package/dist/index.es187.js +1 -1
  39. package/dist/index.es188.js +1 -1
  40. package/dist/index.es189.js +1 -1
  41. package/dist/index.es190.js +1 -1
  42. package/dist/index.es191.js +1 -1
  43. package/dist/index.es192.js +1 -1
  44. package/dist/index.es193.js +1 -1
  45. package/dist/index.es194.js +1 -1
  46. package/dist/index.es195.js +1 -1
  47. package/dist/index.es196.js +1 -1
  48. package/dist/index.es197.js +1 -1
  49. package/dist/index.es198.js +1 -1
  50. package/dist/index.es199.js +1 -1
  51. package/dist/index.es2.js +30 -24
  52. package/dist/index.es2.js.map +1 -1
  53. package/dist/index.es20.js +2 -2
  54. package/dist/index.es200.js +1 -1
  55. package/dist/index.es201.js +1 -1
  56. package/dist/index.es202.js +1 -1
  57. package/dist/index.es203.js +1 -1
  58. package/dist/index.es204.js +1 -1
  59. package/dist/index.es205.js +1 -1
  60. package/dist/index.es206.js +1 -1
  61. package/dist/index.es207.js +1 -1
  62. package/dist/index.es208.js +1 -1
  63. package/dist/index.es214.js +4 -2
  64. package/dist/index.es214.js.map +1 -1
  65. package/dist/index.es215.js +2 -2
  66. package/dist/index.es216.js +2 -2
  67. package/dist/index.es217.js +2 -2
  68. package/dist/index.es218.js +2 -2
  69. package/dist/index.es219.js +2 -2
  70. package/dist/index.es22.js +15 -119
  71. package/dist/index.es22.js.map +1 -1
  72. package/dist/index.es220.js +2 -2
  73. package/dist/index.es221.js +2 -2
  74. package/dist/index.es222.js +2 -2
  75. package/dist/index.es223.js +2 -2
  76. package/dist/index.es224.js +2 -2
  77. package/dist/index.es225.js +2 -2
  78. package/dist/index.es226.js +2 -2
  79. package/dist/index.es227.js +2 -2
  80. package/dist/index.es228.js +2 -2
  81. package/dist/index.es229.js +2 -2
  82. package/dist/index.es23.js +64 -17
  83. package/dist/index.es23.js.map +1 -1
  84. package/dist/index.es230.js +2 -2
  85. package/dist/index.es231.js +2 -2
  86. package/dist/index.es232.js +2 -2
  87. package/dist/index.es233.js +2 -2
  88. package/dist/index.es234.js +2 -2
  89. package/dist/index.es235.js +2 -2
  90. package/dist/index.es236.js +2 -2
  91. package/dist/index.es237.js +2 -2
  92. package/dist/index.es238.js +2 -2
  93. package/dist/index.es239.js +2 -2
  94. package/dist/index.es24.js +29 -60
  95. package/dist/index.es24.js.map +1 -1
  96. package/dist/index.es240.js +2 -2
  97. package/dist/index.es241.js +2 -2
  98. package/dist/index.es242.js +2 -2
  99. package/dist/index.es243.js +2 -2
  100. package/dist/index.es244.js +2 -2
  101. package/dist/index.es245.js +2 -2
  102. package/dist/index.es246.js +2 -2
  103. package/dist/index.es247.js +2 -2
  104. package/dist/index.es248.js +2 -2
  105. package/dist/index.es249.js +2 -2
  106. package/dist/index.es25.js +145 -28
  107. package/dist/index.es25.js.map +1 -1
  108. package/dist/index.es250.js +2 -2
  109. package/dist/index.es251.js +2 -2
  110. package/dist/index.es252.js +2 -2
  111. package/dist/index.es253.js +2 -2
  112. package/dist/index.es254.js +2 -2
  113. package/dist/index.es255.js +2 -2
  114. package/dist/index.es256.js +2 -2
  115. package/dist/index.es257.js +2 -2
  116. package/dist/index.es258.js +2 -2
  117. package/dist/index.es259.js +2 -4
  118. package/dist/index.es259.js.map +1 -1
  119. package/dist/index.es26.js +100 -144
  120. package/dist/index.es26.js.map +1 -1
  121. package/dist/index.es260.js +8 -5
  122. package/dist/index.es260.js.map +1 -1
  123. package/dist/index.es261.js +5 -13
  124. package/dist/index.es261.js.map +1 -1
  125. package/dist/index.es262.js +12 -5
  126. package/dist/index.es262.js.map +1 -1
  127. package/dist/index.es263.js +6 -8
  128. package/dist/index.es263.js.map +1 -1
  129. package/dist/index.es267.js +63 -6
  130. package/dist/index.es267.js.map +1 -1
  131. package/dist/index.es268.js +21 -102
  132. package/dist/index.es268.js.map +1 -1
  133. package/dist/index.es269.js +5 -118
  134. package/dist/index.es269.js.map +1 -1
  135. package/dist/index.es27.js +66 -101
  136. package/dist/index.es27.js.map +1 -1
  137. package/dist/index.es270.js +330 -117
  138. package/dist/index.es270.js.map +1 -1
  139. package/dist/index.es271.js +6 -114
  140. package/dist/index.es271.js.map +1 -1
  141. package/dist/index.es272.js +103 -6
  142. package/dist/index.es272.js.map +1 -1
  143. package/dist/index.es273.js +112 -57
  144. package/dist/index.es273.js.map +1 -1
  145. package/dist/index.es274.js +135 -21
  146. package/dist/index.es274.js.map +1 -1
  147. package/dist/index.es275.js +114 -5
  148. package/dist/index.es275.js.map +1 -1
  149. package/dist/index.es276.js +6 -349
  150. package/dist/index.es276.js.map +1 -1
  151. package/dist/index.es28.js +121 -68
  152. package/dist/index.es28.js.map +1 -1
  153. package/dist/index.es280.js +3726 -131
  154. package/dist/index.es280.js.map +1 -1
  155. package/dist/index.es281.js +342 -2
  156. package/dist/index.es281.js.map +1 -1
  157. package/dist/index.es282.js +76 -3704
  158. package/dist/index.es282.js.map +1 -1
  159. package/dist/index.es283.js +117 -326
  160. package/dist/index.es283.js.map +1 -1
  161. package/dist/index.es284.js +13 -107
  162. package/dist/index.es284.js.map +1 -1
  163. package/dist/index.es285.js +142 -123
  164. package/dist/index.es285.js.map +1 -1
  165. package/dist/index.es286.js +13 -13
  166. package/dist/index.es286.js.map +1 -1
  167. package/dist/index.es287.js +6 -150
  168. package/dist/index.es287.js.map +1 -1
  169. package/dist/index.es288.js +19 -13
  170. package/dist/index.es288.js.map +1 -1
  171. package/dist/index.es289.js +88 -6
  172. package/dist/index.es289.js.map +1 -1
  173. package/dist/index.es29.js +1 -1
  174. package/dist/index.es290.js +238 -16
  175. package/dist/index.es290.js.map +1 -1
  176. package/dist/index.es291.js +22 -88
  177. package/dist/index.es291.js.map +1 -1
  178. package/dist/index.es292.js +6 -243
  179. package/dist/index.es292.js.map +1 -1
  180. package/dist/index.es293.js +4 -24
  181. package/dist/index.es293.js.map +1 -1
  182. package/dist/index.es294.js +18 -6
  183. package/dist/index.es294.js.map +1 -1
  184. package/dist/index.es295.js +8 -4
  185. package/dist/index.es295.js.map +1 -1
  186. package/dist/index.es296.js +141 -17
  187. package/dist/index.es296.js.map +1 -1
  188. package/dist/index.es297.js +2 -8
  189. package/dist/index.es297.js.map +1 -1
  190. package/dist/index.es50.js +208 -5
  191. package/dist/index.es50.js.map +1 -1
  192. package/dist/index.es51.js +138 -202
  193. package/dist/index.es51.js.map +1 -1
  194. package/dist/index.es52.js +42 -141
  195. package/dist/index.es52.js.map +1 -1
  196. package/dist/index.es53.js +5 -45
  197. package/dist/index.es53.js.map +1 -1
  198. package/dist/index.es7.js +5 -25
  199. package/dist/index.es7.js.map +1 -1
  200. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
- import { ZodIssueCode, ZodError } from "./index.es271.js";
2
- import { getParsedType, util, ZodParsedType } from "./index.es270.js";
3
- import { errorUtil } from "./index.es272.js";
4
- import { OK, ParseStatus, isAsync, isValid, addIssueToContext, INVALID, DIRTY, isAborted, isDirty } from "./index.es269.js";
1
+ import { ZodIssueCode, ZodError } from "./index.es275.js";
2
+ import { getParsedType, util, ZodParsedType } from "./index.es274.js";
3
+ import { errorUtil } from "./index.es276.js";
4
+ import { OK, ParseStatus, isAsync, isValid, addIssueToContext, INVALID, DIRTY, isAborted, isDirty } from "./index.es273.js";
5
5
  class ParseInputLazyPath {
6
6
  constructor(parent, value, path, key) {
7
7
  this._cachedPath = [];
@@ -1,4 +1,4 @@
1
- import { getDefaultExportFromCjs } from "./index.es259.js";
1
+ import { getDefaultExportFromCjs } from "./index.es214.js";
2
2
  import { __require as requireEventemitter3 } from "./index.es158.js";
3
3
  var eventemitter3Exports = requireEventemitter3();
4
4
  const EventEmitter = /* @__PURE__ */ getDefaultExportFromCjs(eventemitter3Exports);
@@ -1,4 +1,4 @@
1
- import { getDefaultExportFromCjs } from "./index.es259.js";
1
+ import { getDefaultExportFromCjs } from "./index.es214.js";
2
2
  import { __require as requireDecamelize } from "./index.es136.js";
3
3
  var decamelizeExports = requireDecamelize();
4
4
  const snakeCase = /* @__PURE__ */ getDefaultExportFromCjs(decamelizeExports);
@@ -1,4 +1,4 @@
1
- import { getDefaultExportFromCjs } from "./index.es259.js";
1
+ import { getDefaultExportFromCjs } from "./index.es214.js";
2
2
  import { __require as requireDist } from "./index.es148.js";
3
3
  var distExports = requireDist();
4
4
  const PQueueMod = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
@@ -1,4 +1,4 @@
1
- import { getLangSmithEnvironmentVariable } from "./index.es287.js";
1
+ import { getLangSmithEnvironmentVariable } from "./index.es285.js";
2
2
  var LIMIT_REPLACE_NODE = "[...]";
3
3
  var CIRCULAR_REPLACE_NODE = { result: "[Circular]" };
4
4
  var arr = [];
@@ -1,12 +1,12 @@
1
- import { Client } from "./index.es282.js";
2
- import { isTracingEnabled } from "./index.es294.js";
3
- import { isConflictingEndpointsError, ConflictingEndpointsError } from "./index.es291.js";
4
- import { _LC_CONTEXT_VARIABLES_KEY, _REPLICA_TRACE_ROOTS_KEY } from "./index.es295.js";
5
- import { getContextVar, setContextVar } from "./index.es296.js";
6
- import { getEnvironmentVariable, getRuntimeEnvironment, getLangSmithEnvironmentVariable } from "./index.es287.js";
7
- import { getDefaultProjectName } from "./index.es262.js";
8
- import { warnOnce } from "./index.es289.js";
9
- import { uuid7FromTime } from "./index.es288.js";
1
+ import { Client } from "./index.es280.js";
2
+ import { isTracingEnabled } from "./index.es292.js";
3
+ import { isConflictingEndpointsError, ConflictingEndpointsError } from "./index.es289.js";
4
+ import { _LC_CONTEXT_VARIABLES_KEY, _REPLICA_TRACE_ROOTS_KEY } from "./index.es293.js";
5
+ import { getContextVar, setContextVar } from "./index.es294.js";
6
+ import { getEnvironmentVariable, getRuntimeEnvironment, getLangSmithEnvironmentVariable } from "./index.es285.js";
7
+ import { getDefaultProjectName } from "./index.es263.js";
8
+ import { warnOnce } from "./index.es287.js";
9
+ import { uuid7FromTime } from "./index.es286.js";
10
10
  import { v5 } from "uuid";
11
11
  const UUID_NAMESPACE_DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
12
12
  function getReplicaKey(replica) {
@@ -1,8 +1,8 @@
1
- import { $constructor, $ZodAsyncError } from "./index.es273.js";
1
+ import { $constructor, $ZodAsyncError } from "./index.es267.js";
2
2
  import { defineLazy, aborted } from "./index.es128.js";
3
3
  import { clone } from "./index.es128.js";
4
4
  import { safeParse, safeParseAsync } from "./index.es132.js";
5
- import { version } from "./index.es275.js";
5
+ import { version } from "./index.es269.js";
6
6
  const $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
7
7
  var _a;
8
8
  inst ?? (inst = {});
@@ -1,12 +1,12 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { useStreamContext } from "./index.es7.js";
3
- import { isAiWithToolCalls, isToolMessage } from "./index.es23.js";
3
+ import { isAiWithToolCalls, isToolMessage } from "./index.es22.js";
4
4
  import React__default, { useState, useMemo, useRef, useCallback, useEffect, useLayoutEffect } from "react";
5
- import AgentMessage from "./index.es24.js";
6
- import CustomComponentRender from "./index.es25.js";
7
- import HumanMessage from "./index.es26.js";
8
- import Thinking from "./index.es27.js";
9
- import ToolCallFunctions from "./index.es28.js";
5
+ import AgentMessage from "./index.es23.js";
6
+ import CustomComponentRender from "./index.es24.js";
7
+ import HumanMessage from "./index.es25.js";
8
+ import Thinking from "./index.es26.js";
9
+ import ToolCallFunctions from "./index.es27.js";
10
10
  function ChatBody({ setIsFirstMessage, enableToolCallIndicator }) {
11
11
  const stream = useStreamContext();
12
12
  const messages = stream.messages;
@@ -1,5 +1,5 @@
1
- import { config, $ZodAsyncError } from "./index.es273.js";
2
- import { $ZodRealError, $ZodError } from "./index.es274.js";
1
+ import { config, $ZodAsyncError } from "./index.es267.js";
2
+ import { $ZodRealError, $ZodError } from "./index.es268.js";
3
3
  import { finalizeIssue, captureStackTrace } from "./index.es128.js";
4
4
  const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {
5
5
  const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };
@@ -1,6 +1,6 @@
1
1
  import { __export } from "./index.es54.js";
2
2
  import { BaseTracer } from "./index.es125.js";
3
- import styles from "./index.es260.js";
3
+ import styles from "./index.es261.js";
4
4
  var console_exports = {};
5
5
  __export(console_exports, { ConsoleCallbackHandler: () => ConsoleCallbackHandler });
6
6
  function wrap(style, text) {
@@ -2,14 +2,14 @@ import { __export } from "./index.es54.js";
2
2
  import { mergeUsageMetadata } from "./index.es57.js";
3
3
  import { AIMessage } from "./index.es41.js";
4
4
  import { BaseTracer } from "./index.es125.js";
5
- import { getDefaultLangChainClientSingleton } from "./index.es261.js";
5
+ import { getDefaultLangChainClientSingleton } from "./index.es262.js";
6
6
  import { getCurrentRunTree } from "./index.es106.js";
7
7
  import { RunTree } from "./index.es122.js";
8
8
  import "uuid";
9
9
  import "./index.es119.js";
10
10
  import "./index.es120.js";
11
11
  import "./index.es121.js";
12
- import { getDefaultProjectName } from "./index.es262.js";
12
+ import { getDefaultProjectName } from "./index.es263.js";
13
13
  var tracer_langchain_exports = {};
14
14
  __export(tracer_langchain_exports, { LangChainTracer: () => LangChainTracer });
15
15
  function _getUsageMetadataFromGenerations(generations) {
@@ -1,4 +1,4 @@
1
- import { getDefaultLangChainClientSingleton } from "./index.es261.js";
1
+ import { getDefaultLangChainClientSingleton } from "./index.es262.js";
2
2
  import { getGlobalAsyncLocalStorageInstance } from "./index.es117.js";
3
3
  import PQueueMod from "./index.es119.js";
4
4
  let queue;
@@ -1,4 +1,4 @@
1
- import { initializeContext, process, extractDefs, finalize } from "./index.es276.js";
1
+ import { initializeContext, process, extractDefs, finalize } from "./index.es270.js";
2
2
  import { getEnumValues } from "./index.es128.js";
3
3
  const formatMap = {
4
4
  guid: "uuid",
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import useTools from "./index.es10.js";
3
3
  import { useThread } from "./index.es6.js";
4
- import { getContentString } from "./index.es23.js";
4
+ import { getContentString } from "./index.es22.js";
5
5
  import { PanelLeft, MoreVertical, Pencil, Share2, Archive, Trash2 } from "lucide-react";
6
6
  import { useState, useEffect, useRef } from "react";
7
7
  function ThreadHistory({ header }) {
@@ -1,4 +1,4 @@
1
- import { __module as interopRequireDefault } from "./index.es214.js";
1
+ import { __module as interopRequireDefault } from "./index.es215.js";
2
2
  var hasRequiredInteropRequireDefault;
3
3
  function requireInteropRequireDefault() {
4
4
  if (hasRequiredInteropRequireDefault) return interopRequireDefault.exports;
@@ -1,4 +1,4 @@
1
- import { __exports as coy } from "./index.es215.js";
1
+ import { __exports as coy } from "./index.es216.js";
2
2
  var hasRequiredCoy;
3
3
  function requireCoy() {
4
4
  if (hasRequiredCoy) return coy;
@@ -1,4 +1,4 @@
1
- import { __exports as dark } from "./index.es216.js";
1
+ import { __exports as dark } from "./index.es217.js";
2
2
  var hasRequiredDark;
3
3
  function requireDark() {
4
4
  if (hasRequiredDark) return dark;
@@ -1,4 +1,4 @@
1
- import { __exports as funky } from "./index.es217.js";
1
+ import { __exports as funky } from "./index.es218.js";
2
2
  var hasRequiredFunky;
3
3
  function requireFunky() {
4
4
  if (hasRequiredFunky) return funky;
@@ -1,4 +1,4 @@
1
- import { __exports as okaidia } from "./index.es218.js";
1
+ import { __exports as okaidia } from "./index.es219.js";
2
2
  var hasRequiredOkaidia;
3
3
  function requireOkaidia() {
4
4
  if (hasRequiredOkaidia) return okaidia;
@@ -1,4 +1,4 @@
1
- import { __exports as solarizedlight } from "./index.es219.js";
1
+ import { __exports as solarizedlight } from "./index.es220.js";
2
2
  var hasRequiredSolarizedlight;
3
3
  function requireSolarizedlight() {
4
4
  if (hasRequiredSolarizedlight) return solarizedlight;
@@ -1,4 +1,4 @@
1
- import { __exports as tomorrow } from "./index.es220.js";
1
+ import { __exports as tomorrow } from "./index.es221.js";
2
2
  var hasRequiredTomorrow;
3
3
  function requireTomorrow() {
4
4
  if (hasRequiredTomorrow) return tomorrow;
@@ -1,4 +1,4 @@
1
- import { __exports as twilight } from "./index.es221.js";
1
+ import { __exports as twilight } from "./index.es222.js";
2
2
  var hasRequiredTwilight;
3
3
  function requireTwilight() {
4
4
  if (hasRequiredTwilight) return twilight;
@@ -1,4 +1,4 @@
1
- import { __exports as prism } from "./index.es222.js";
1
+ import { __exports as prism } from "./index.es223.js";
2
2
  var hasRequiredPrism;
3
3
  function requirePrism() {
4
4
  if (hasRequiredPrism) return prism;
@@ -1,4 +1,4 @@
1
- import { __exports as a11yDark } from "./index.es223.js";
1
+ import { __exports as a11yDark } from "./index.es224.js";
2
2
  var hasRequiredA11yDark;
3
3
  function requireA11yDark() {
4
4
  if (hasRequiredA11yDark) return a11yDark;
@@ -1,4 +1,4 @@
1
- import { __exports as atomDark } from "./index.es224.js";
1
+ import { __exports as atomDark } from "./index.es225.js";
2
2
  var hasRequiredAtomDark;
3
3
  function requireAtomDark() {
4
4
  if (hasRequiredAtomDark) return atomDark;
@@ -1,4 +1,4 @@
1
- import { __exports as base16Ateliersulphurpool_light } from "./index.es225.js";
1
+ import { __exports as base16Ateliersulphurpool_light } from "./index.es226.js";
2
2
  var hasRequiredBase16Ateliersulphurpool_light;
3
3
  function requireBase16Ateliersulphurpool_light() {
4
4
  if (hasRequiredBase16Ateliersulphurpool_light) return base16Ateliersulphurpool_light;
@@ -1,4 +1,4 @@
1
- import { __exports as cb } from "./index.es226.js";
1
+ import { __exports as cb } from "./index.es227.js";
2
2
  var hasRequiredCb;
3
3
  function requireCb() {
4
4
  if (hasRequiredCb) return cb;
@@ -1,4 +1,4 @@
1
- import { __exports as coldarkCold } from "./index.es227.js";
1
+ import { __exports as coldarkCold } from "./index.es228.js";
2
2
  var hasRequiredColdarkCold;
3
3
  function requireColdarkCold() {
4
4
  if (hasRequiredColdarkCold) return coldarkCold;
@@ -1,4 +1,4 @@
1
- import { __exports as coldarkDark } from "./index.es228.js";
1
+ import { __exports as coldarkDark } from "./index.es229.js";
2
2
  var hasRequiredColdarkDark;
3
3
  function requireColdarkDark() {
4
4
  if (hasRequiredColdarkDark) return coldarkDark;
@@ -1,4 +1,4 @@
1
- import { __exports as coyWithoutShadows } from "./index.es229.js";
1
+ import { __exports as coyWithoutShadows } from "./index.es230.js";
2
2
  var hasRequiredCoyWithoutShadows;
3
3
  function requireCoyWithoutShadows() {
4
4
  if (hasRequiredCoyWithoutShadows) return coyWithoutShadows;
@@ -1,4 +1,4 @@
1
- import { __exports as darcula } from "./index.es230.js";
1
+ import { __exports as darcula } from "./index.es231.js";
2
2
  var hasRequiredDarcula;
3
3
  function requireDarcula() {
4
4
  if (hasRequiredDarcula) return darcula;
@@ -1,4 +1,4 @@
1
- import { __exports as dracula } from "./index.es231.js";
1
+ import { __exports as dracula } from "./index.es232.js";
2
2
  var hasRequiredDracula;
3
3
  function requireDracula() {
4
4
  if (hasRequiredDracula) return dracula;
@@ -1,4 +1,4 @@
1
- import { __exports as duotoneDark } from "./index.es232.js";
1
+ import { __exports as duotoneDark } from "./index.es233.js";
2
2
  var hasRequiredDuotoneDark;
3
3
  function requireDuotoneDark() {
4
4
  if (hasRequiredDuotoneDark) return duotoneDark;
@@ -1,4 +1,4 @@
1
- import { __exports as duotoneEarth } from "./index.es233.js";
1
+ import { __exports as duotoneEarth } from "./index.es234.js";
2
2
  var hasRequiredDuotoneEarth;
3
3
  function requireDuotoneEarth() {
4
4
  if (hasRequiredDuotoneEarth) return duotoneEarth;
@@ -1,4 +1,4 @@
1
- import { __exports as duotoneForest } from "./index.es234.js";
1
+ import { __exports as duotoneForest } from "./index.es235.js";
2
2
  var hasRequiredDuotoneForest;
3
3
  function requireDuotoneForest() {
4
4
  if (hasRequiredDuotoneForest) return duotoneForest;
@@ -1,4 +1,4 @@
1
- import { __exports as duotoneLight } from "./index.es235.js";
1
+ import { __exports as duotoneLight } from "./index.es236.js";
2
2
  var hasRequiredDuotoneLight;
3
3
  function requireDuotoneLight() {
4
4
  if (hasRequiredDuotoneLight) return duotoneLight;
@@ -1,4 +1,4 @@
1
- import { __exports as duotoneSea } from "./index.es236.js";
1
+ import { __exports as duotoneSea } from "./index.es237.js";
2
2
  var hasRequiredDuotoneSea;
3
3
  function requireDuotoneSea() {
4
4
  if (hasRequiredDuotoneSea) return duotoneSea;
@@ -1,4 +1,4 @@
1
- import { __exports as duotoneSpace } from "./index.es237.js";
1
+ import { __exports as duotoneSpace } from "./index.es238.js";
2
2
  var hasRequiredDuotoneSpace;
3
3
  function requireDuotoneSpace() {
4
4
  if (hasRequiredDuotoneSpace) return duotoneSpace;
@@ -1,4 +1,4 @@
1
- import { __exports as ghcolors } from "./index.es238.js";
1
+ import { __exports as ghcolors } from "./index.es239.js";
2
2
  var hasRequiredGhcolors;
3
3
  function requireGhcolors() {
4
4
  if (hasRequiredGhcolors) return ghcolors;
@@ -1,4 +1,4 @@
1
- import { __exports as gruvboxDark } from "./index.es239.js";
1
+ import { __exports as gruvboxDark } from "./index.es240.js";
2
2
  var hasRequiredGruvboxDark;
3
3
  function requireGruvboxDark() {
4
4
  if (hasRequiredGruvboxDark) return gruvboxDark;
@@ -1,4 +1,4 @@
1
- import { __exports as gruvboxLight } from "./index.es240.js";
1
+ import { __exports as gruvboxLight } from "./index.es241.js";
2
2
  var hasRequiredGruvboxLight;
3
3
  function requireGruvboxLight() {
4
4
  if (hasRequiredGruvboxLight) return gruvboxLight;
@@ -1,4 +1,4 @@
1
- import { __exports as holiTheme } from "./index.es241.js";
1
+ import { __exports as holiTheme } from "./index.es242.js";
2
2
  var hasRequiredHoliTheme;
3
3
  function requireHoliTheme() {
4
4
  if (hasRequiredHoliTheme) return holiTheme;
@@ -1,4 +1,4 @@
1
- import { __exports as hopscotch } from "./index.es242.js";
1
+ import { __exports as hopscotch } from "./index.es243.js";
2
2
  var hasRequiredHopscotch;
3
3
  function requireHopscotch() {
4
4
  if (hasRequiredHopscotch) return hopscotch;
@@ -1,4 +1,4 @@
1
- import { __exports as lucario } from "./index.es243.js";
1
+ import { __exports as lucario } from "./index.es244.js";
2
2
  var hasRequiredLucario;
3
3
  function requireLucario() {
4
4
  if (hasRequiredLucario) return lucario;
@@ -1,4 +1,4 @@
1
- import { __exports as materialDark } from "./index.es244.js";
1
+ import { __exports as materialDark } from "./index.es245.js";
2
2
  var hasRequiredMaterialDark;
3
3
  function requireMaterialDark() {
4
4
  if (hasRequiredMaterialDark) return materialDark;
@@ -1,4 +1,4 @@
1
- import { __exports as materialLight } from "./index.es245.js";
1
+ import { __exports as materialLight } from "./index.es246.js";
2
2
  var hasRequiredMaterialLight;
3
3
  function requireMaterialLight() {
4
4
  if (hasRequiredMaterialLight) return materialLight;
@@ -1,4 +1,4 @@
1
- import { __exports as materialOceanic } from "./index.es246.js";
1
+ import { __exports as materialOceanic } from "./index.es247.js";
2
2
  var hasRequiredMaterialOceanic;
3
3
  function requireMaterialOceanic() {
4
4
  if (hasRequiredMaterialOceanic) return materialOceanic;
@@ -1,4 +1,4 @@
1
- import { __exports as nightOwl } from "./index.es247.js";
1
+ import { __exports as nightOwl } from "./index.es248.js";
2
2
  var hasRequiredNightOwl;
3
3
  function requireNightOwl() {
4
4
  if (hasRequiredNightOwl) return nightOwl;
@@ -1,4 +1,4 @@
1
- import { __exports as nord } from "./index.es248.js";
1
+ import { __exports as nord } from "./index.es249.js";
2
2
  var hasRequiredNord;
3
3
  function requireNord() {
4
4
  if (hasRequiredNord) return nord;
@@ -1,4 +1,4 @@
1
- import { __exports as oneDark } from "./index.es249.js";
1
+ import { __exports as oneDark } from "./index.es250.js";
2
2
  var hasRequiredOneDark;
3
3
  function requireOneDark() {
4
4
  if (hasRequiredOneDark) return oneDark;
package/dist/index.es2.js CHANGED
@@ -29,37 +29,43 @@ function Sidebar(props) {
29
29
  if (preventSubmit || input.trim().length === 0 && fileInput.length === 0 || isLoading)
30
30
  return;
31
31
  let latestFiles = fileInput;
32
+ let skipSubmitMessage = false;
32
33
  if (callThisOnSubmit) {
33
34
  const result = await callThisOnSubmit();
34
- if (result && result.length > 0) latestFiles = result;
35
+ if (result && result.length > 0) {
36
+ latestFiles = result;
37
+ skipSubmitMessage = true;
38
+ }
35
39
  }
36
- let contentBlocks;
37
- if (s3_upload) {
38
- let messageText = input.trim();
39
- if (latestFiles.length > 0) {
40
- const fileNames = latestFiles.map((file) => file.fileName).join(", ");
41
- const fileText = `${fileNames} uploaded`;
42
- messageText = messageText ? `${fileText}
40
+ if (!skipSubmitMessage && (input.trim().length > 0 || latestFiles.length > 0)) {
41
+ let contentBlocks;
42
+ if (s3_upload) {
43
+ let messageText = input.trim();
44
+ if (latestFiles.length > 0) {
45
+ const fileNames = latestFiles.map((file) => file.fileName).join(", ");
46
+ const fileText = `${fileNames} uploaded`;
47
+ messageText = messageText ? `${fileText}
43
48
 
44
49
  - ${messageText}` : fileText;
50
+ }
51
+ contentBlocks = [{ type: "text", text: messageText }];
52
+ } else {
53
+ contentBlocks = [
54
+ ...input.trim().length > 0 ? [{ type: "text", text: input }] : [],
55
+ ...latestFiles.map((file) => ({
56
+ type: "document",
57
+ ...file,
58
+ cache_control: { type: "ephemeral" }
59
+ }))
60
+ ];
45
61
  }
46
- contentBlocks = [{ type: "text", text: messageText }];
47
- } else {
48
- contentBlocks = [
49
- ...input.trim().length > 0 ? [{ type: "text", text: input }] : [],
50
- ...latestFiles.map((file) => ({
51
- type: "document",
52
- ...file,
53
- cache_control: { type: "ephemeral" }
54
- }))
55
- ];
62
+ const newHumanMessage = {
63
+ id: v4(),
64
+ type: "human",
65
+ content: contentBlocks
66
+ };
67
+ await stream.submitMessage(newHumanMessage);
56
68
  }
57
- const newHumanMessage = {
58
- id: v4(),
59
- type: "human",
60
- content: contentBlocks
61
- };
62
- await stream.submitMessage(newHumanMessage);
63
69
  setInput("");
64
70
  setFileInput([]);
65
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.es2.js","sources":["../src/pages/Sidebar/sidebar.tsx"],"sourcesContent":["import Suggestion from \"@/components/Suggestion\";\nimport { useFileProvider } from \"@/providers/FileProvider\";\nimport { useStreamContext } from \"@/providers/Stream\";\nimport { useThread } from \"@/providers/Thread\";\nimport type { ChatSidebarProps } from \"@/types/ChatProps\";\nimport type { FileInfo } from \"@/types/fileInput\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { X, ChevronLeft } from \"lucide-react\";\nimport { useEffect, useState, type FormEvent } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport ChatBody from \"../../components/ChatBody\";\nimport ChatButton from \"../../components/ChatButton\";\nimport ChatInput from \"../../components/sidebar/ChatInput\";\n\n/**\n * Main sidebar chat interface component.\n * Displays a chat button that opens a sliding sidebar with full chat functionality.\n * \n * @param header - Custom header text for the chat sidebar (default: \"AI Assistant\")\n * @param handleFileSelect - Optional custom file selection handler\n * @param callThisOnSubmit - Optional callback invoked before message submission, can return updated file list\n * @param preventSubmit - Optional boolean to prevent all submit actions when true\n * @param leftPanelContent - Optional custom content for the left panel when expanded\n * @param leftPanelOpen - Optional external control for left panel open state\n * @param setLeftPanelOpen - Optional external setter for left panel open state\n * \n * @example\n * ```tsx\n * <Sidebar \n * header=\"My Custom AI\"\n * preventSubmit={true} // Disables all submit functionality\n * callThisOnSubmit={async () => {\n * // Upload files to your backend\n * return updatedFiles;\n * }}\n * leftPanelContent={<div className=\"text-white\">Custom left panel content here!</div>}\n * leftPanelOpen={isLeftPanelOpen}\n * setLeftPanelOpen={setIsLeftPanelOpen}\n * />\n * ```\n */\nexport default function Sidebar(props: ChatSidebarProps) {\n\n const { handleFileSelect, callThisOnSubmit, enableToolCallIndicator, header, inputFileAccept, filePreview, s3_upload, preventSubmit, leftPanelContent, leftPanelOpen: externalLeftPanelOpen, setLeftPanelOpen: externalSetLeftPanelOpen } = props;\n const [open, setOpen] = useState(false);\n const [input, setInput] = useState(\"\");\n const [internalLeftPanelOpen, setInternalLeftPanelOpen] = useState(false);\n const { fileInput, setFileInput } = useFileProvider();\n\n const leftPanelOpen = externalLeftPanelOpen !== undefined ? externalLeftPanelOpen : internalLeftPanelOpen;\n const setLeftPanelOpen = externalSetLeftPanelOpen || setInternalLeftPanelOpen;\n\n const stream = useStreamContext();\n const isLoading = stream.isLoading;\n const { setMode } = useThread();\n\n // Set thread mode to single when using Sidebar\n useEffect(() => {\n setMode(\"single\");\n }, [setMode]);\n\n const defaultHandleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n\n if (preventSubmit || (input.trim().length === 0 && fileInput.length === 0) || isLoading)\n return;\n\n // Call the custom upload and get the latest files\n let latestFiles: FileInfo[] = fileInput;\n if (callThisOnSubmit) {\n const result = await callThisOnSubmit();\n if (result && result.length > 0) latestFiles = result;\n }\n\n // Create content blocks based on upload type\n let contentBlocks: any;\n if (s3_upload) {\n // For S3 uploads, send text message\n let messageText = input.trim();\n if (latestFiles.length > 0) {\n const fileNames = latestFiles.map(file => file.fileName).join(\", \");\n const fileText = `${fileNames} uploaded`;\n messageText = messageText ? `${fileText}\\n\\n - ${messageText}` : fileText;\n }\n contentBlocks = [{ type: \"text\", text: messageText }];\n } else {\n contentBlocks = [\n ...(input.trim().length > 0 ? [{ type: \"text\", text: input }] : []),\n ...latestFiles.map((file) => ({\n type: \"document\" as const,\n ...file,\n cache_control: { type: \"ephemeral\" as const },\n })),\n ];\n }\n\n const newHumanMessage: Message = {\n id: uuidv4(),\n type: \"human\",\n content: contentBlocks,\n };\n\n // Use the unified submitMessage function\n await stream.submitMessage(newHumanMessage);\n\n setInput(\"\");\n setFileInput([]);\n };\n\n const defaultHandleFileSelect = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n const files = event.target.files;\n if (!files) return;\n\n // Convert files to base64 for sending\n const fileDetails: FileInfo[] = await Promise.all(\n Array.from(files).map(async (file) => {\n const base64Data = await new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n resolve(result.split(\",\")[1]); // Remove data:...;base64, prefix\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n\n return {\n fileName: file.name,\n fileType: file.type,\n file: file,\n fileData: base64Data,\n };\n })\n );\n\n setFileInput((prevFile) => [...prevFile, ...fileDetails]);\n };\n\n const onFileSelect = handleFileSelect || defaultHandleFileSelect;\n return (\n <>\n <AnimatePresence>\n {open && (\n <>\n {/* Overlay */}\n <motion.div\n className=\"fixed inset-0 z-40 bg-black/30\"\n onClick={() => setOpen(false)}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n />\n\n {/* Sidebar */}\n <motion.aside\n className=\"fixed right-0 top-0 z-50 h-screen w-[520px] bg-black flex flex-col text-white\"\n initial={{ x: \"100%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"100%\" }}\n transition={{ type: \"spring\", stiffness: 260, damping: 30 }}\n >\n <AnimatePresence>\n {leftPanelOpen && (\n <motion.div\n className=\"fixed right-[520px] top-0 h-full w-[520px]\"\n initial={{ x: \"30%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"30%\" }}\n transition={{ type: \"spring\", stiffness: 400, damping: 40 }}\n >\n {leftPanelContent || (\n <>\n <h3 className=\"text-lg font-semibold mb-4 text-white\">Left Panel</h3>\n <p className=\"text-zinc-300\">This is the left extension panel. You can add any content here.</p>\n </>\n )} \n </motion.div>\n )}\n </AnimatePresence>\n <div className=\"flex h-full flex-col\">\n <div className=\"flex border-b border-zinc-800 py-4 px-6 justify-between items-center\">\n <div className=\"flex items-center gap-3\">\n {header?.logoUrl && (\n <img\n src={header?.logoUrl}\n alt={header?.title ? `${header.title} logo` : \"AI Assistant logo\"}\n className=\"h-8 w-8 object-contain rounded-sm\"\n />\n )}\n <div className=\"text-start text-2xl font-bold\">{header?.title || \"AI Assistant\"}</div>\n \n </div>\n <X\n className=\"text-zinc-400 cursor-pointer\"\n onClick={() => setOpen(false)}\n />\n </div>\n {/* Vertically centered left panel toggle */}\n {leftPanelContent && (\n <div className=\"absolute left-0 top-1/2 transform -translate-y-1/2 z-10\">\n <ChevronLeft \n className={`cursor-pointer transition-transform ${leftPanelOpen ? 'rotate-180' : ''}`}\n onClick={() => setLeftPanelOpen(!leftPanelOpen)}\n />\n </div>\n )}\n <div className=\"flex-1 overflow-auto scrollbar-none\">\n <div className=\"p-4\">\n <ChatBody enableToolCallIndicator={enableToolCallIndicator} />\n </div>\n </div>\n <Suggestion />\n <div className=\"sticky bottom-0 border-t border-zinc-800 m-2\">\n <ChatInput\n input={input}\n inputFileAccept={inputFileAccept}\n setInput={setInput}\n handleSubmit={defaultHandleSubmit}\n isLoading={isLoading}\n fileInput={fileInput}\n handleFileSelect={onFileSelect}\n setFileInput={setFileInput}\n onCancel={() => stream.stop?.()}\n filePreview={filePreview}\n />\n </div>\n </div>\n </motion.aside>\n </>\n )}\n </AnimatePresence>\n\n <ChatButton isVisible={!open} setOpen={setOpen} />\n </>\n );\n}\n"],"names":["uuidv4"],"mappings":"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"}
1
+ {"version":3,"file":"index.es2.js","sources":["../src/pages/Sidebar/sidebar.tsx"],"sourcesContent":["import Suggestion from \"@/components/Suggestion\";\nimport { useFileProvider } from \"@/providers/FileProvider\";\nimport { useStreamContext } from \"@/providers/Stream\";\nimport { useThread } from \"@/providers/Thread\";\nimport type { ChatSidebarProps } from \"@/types/ChatProps\";\nimport type { FileInfo } from \"@/types/fileInput\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { X, ChevronLeft } from \"lucide-react\";\nimport { useEffect, useState, type FormEvent } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport ChatBody from \"../../components/ChatBody\";\nimport ChatButton from \"../../components/ChatButton\";\nimport ChatInput from \"../../components/sidebar/ChatInput\";\n\n/**\n * Main sidebar chat interface component.\n * Displays a chat button that opens a sliding sidebar with full chat functionality.\n * \n * @param header - Custom header text for the chat sidebar (default: \"AI Assistant\")\n * @param handleFileSelect - Optional custom file selection handler\n * @param callThisOnSubmit - Optional callback invoked before message submission, can return updated file list\n * @param preventSubmit - Optional boolean to prevent all submit actions when true\n * @param leftPanelContent - Optional custom content for the left panel when expanded\n * @param leftPanelOpen - Optional external control for left panel open state\n * @param setLeftPanelOpen - Optional external setter for left panel open state\n * \n * @example\n * ```tsx\n * <Sidebar \n * header=\"My Custom AI\"\n * preventSubmit={true} // Disables all submit functionality\n * callThisOnSubmit={async () => {\n * // Upload files to your backend\n * return updatedFiles;\n * }}\n * leftPanelContent={<div className=\"text-white\">Custom left panel content here!</div>}\n * leftPanelOpen={isLeftPanelOpen}\n * setLeftPanelOpen={setIsLeftPanelOpen}\n * />\n * ```\n */\nexport default function Sidebar(props: ChatSidebarProps) {\n\n const { handleFileSelect, callThisOnSubmit, enableToolCallIndicator, header, inputFileAccept, filePreview, s3_upload, preventSubmit, leftPanelContent, leftPanelOpen: externalLeftPanelOpen, setLeftPanelOpen: externalSetLeftPanelOpen } = props;\n const [open, setOpen] = useState(false);\n const [input, setInput] = useState(\"\");\n const [internalLeftPanelOpen, setInternalLeftPanelOpen] = useState(false);\n const { fileInput, setFileInput } = useFileProvider();\n\n const leftPanelOpen = externalLeftPanelOpen !== undefined ? externalLeftPanelOpen : internalLeftPanelOpen;\n const setLeftPanelOpen = externalSetLeftPanelOpen || setInternalLeftPanelOpen;\n\n const stream = useStreamContext();\n const isLoading = stream.isLoading;\n const { setMode } = useThread();\n\n // Set thread mode to single when using Sidebar\n useEffect(() => {\n setMode(\"single\");\n }, [setMode]);\n\n const defaultHandleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n\n if (preventSubmit || (input.trim().length === 0 && fileInput.length === 0) || isLoading)\n return;\n\n // Call the custom upload and get the latest files\n let latestFiles: FileInfo[] = fileInput;\n let skipSubmitMessage = false;\n\n if (callThisOnSubmit) {\n const result = await callThisOnSubmit();\n if (result && result.length > 0) {\n latestFiles = result;\n skipSubmitMessage = true;\n }\n }\n\n if (!skipSubmitMessage && (input.trim().length > 0 || latestFiles.length > 0)) {\n let contentBlocks: any;\n if (s3_upload) {\n let messageText = input.trim();\n if (latestFiles.length > 0) {\n const fileNames = latestFiles.map(file => file.fileName).join(\", \");\n const fileText = `${fileNames} uploaded`;\n messageText = messageText ? `${fileText}\\n\\n - ${messageText}` : fileText;\n }\n contentBlocks = [{ type: \"text\", text: messageText }];\n } else {\n contentBlocks = [\n ...(input.trim().length > 0 ? [{ type: \"text\", text: input }] : []),\n ...latestFiles.map((file) => ({\n type: \"document\" as const,\n ...file,\n cache_control: { type: \"ephemeral\" as const },\n })),\n ];\n }\n\n const newHumanMessage: Message = {\n id: uuidv4(),\n type: \"human\",\n content: contentBlocks,\n };\n\n await stream.submitMessage(newHumanMessage);\n }\n setInput(\"\");\n setFileInput([]);\n };\n\n const defaultHandleFileSelect = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n const files = event.target.files;\n if (!files) return;\n\n // Convert files to base64 for sending\n const fileDetails: FileInfo[] = await Promise.all(\n Array.from(files).map(async (file) => {\n const base64Data = await new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n resolve(result.split(\",\")[1]); // Remove data:...;base64, prefix\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n\n return {\n fileName: file.name,\n fileType: file.type,\n file: file,\n fileData: base64Data,\n };\n })\n );\n\n setFileInput((prevFile) => [...prevFile, ...fileDetails]);\n };\n\n const onFileSelect = handleFileSelect || defaultHandleFileSelect;\n return (\n <>\n <AnimatePresence>\n {open && (\n <>\n {/* Overlay */}\n <motion.div\n className=\"fixed inset-0 z-40 bg-black/30\"\n onClick={() => setOpen(false)}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n />\n\n {/* Sidebar */}\n <motion.aside\n className=\"fixed right-0 top-0 z-50 h-screen w-[520px] bg-black flex flex-col text-white\"\n initial={{ x: \"100%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"100%\" }}\n transition={{ type: \"spring\", stiffness: 260, damping: 30 }}\n >\n <AnimatePresence>\n {leftPanelOpen && (\n <motion.div\n className=\"fixed right-[520px] top-0 h-full w-[520px]\"\n initial={{ x: \"30%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"30%\" }}\n transition={{ type: \"spring\", stiffness: 400, damping: 40 }}\n >\n {leftPanelContent || (\n <>\n <h3 className=\"text-lg font-semibold mb-4 text-white\">Left Panel</h3>\n <p className=\"text-zinc-300\">This is the left extension panel. You can add any content here.</p>\n </>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n <div className=\"flex h-full flex-col\">\n <div className=\"flex border-b border-zinc-800 py-4 px-6 justify-between items-center\">\n <div className=\"flex items-center gap-3\">\n {header?.logoUrl && (\n <img\n src={header?.logoUrl}\n alt={header?.title ? `${header.title} logo` : \"AI Assistant logo\"}\n className=\"h-8 w-8 object-contain rounded-sm\"\n />\n )}\n <div className=\"text-start text-2xl font-bold\">{header?.title || \"AI Assistant\"}</div>\n\n </div>\n <X\n className=\"text-zinc-400 cursor-pointer\"\n onClick={() => setOpen(false)}\n />\n </div>\n {/* Vertically centered left panel toggle */}\n {leftPanelContent && (\n <div className=\"absolute left-0 top-1/2 transform -translate-y-1/2 z-10\">\n <ChevronLeft\n className={`cursor-pointer transition-transform ${leftPanelOpen ? 'rotate-180' : ''}`}\n onClick={() => setLeftPanelOpen(!leftPanelOpen)}\n />\n </div>\n )}\n <div className=\"flex-1 overflow-auto scrollbar-none\">\n <div className=\"p-4\">\n <ChatBody enableToolCallIndicator={enableToolCallIndicator} />\n </div>\n </div>\n <Suggestion />\n <div className=\"sticky bottom-0 border-t border-zinc-800 m-2\">\n <ChatInput\n input={input}\n inputFileAccept={inputFileAccept}\n setInput={setInput}\n handleSubmit={defaultHandleSubmit}\n isLoading={isLoading}\n fileInput={fileInput}\n handleFileSelect={onFileSelect}\n setFileInput={setFileInput}\n onCancel={() => stream.stop?.()}\n filePreview={filePreview}\n />\n </div>\n </div>\n </motion.aside>\n </>\n )}\n </AnimatePresence>\n\n <ChatButton isVisible={!open} setOpen={setOpen} />\n </>\n );\n}\n"],"names":["uuidv4"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { bootstrapUiContext } from "./index.es22.js";
2
- import { LoadExternalComponent, useStreamContext } from "./index.es22.js";
1
+ import { bootstrapUiContext } from "./index.es28.js";
2
+ import { LoadExternalComponent, useStreamContext } from "./index.es28.js";
3
3
  bootstrapUiContext();
4
4
  export {
5
5
  LoadExternalComponent,
@@ -1,4 +1,4 @@
1
- import { __exports as oneLight } from "./index.es250.js";
1
+ import { __exports as oneLight } from "./index.es251.js";
2
2
  var hasRequiredOneLight;
3
3
  function requireOneLight() {
4
4
  if (hasRequiredOneLight) return oneLight;
@@ -1,4 +1,4 @@
1
- import { __exports as pojoaque } from "./index.es251.js";
1
+ import { __exports as pojoaque } from "./index.es252.js";
2
2
  var hasRequiredPojoaque;
3
3
  function requirePojoaque() {
4
4
  if (hasRequiredPojoaque) return pojoaque;
@@ -1,4 +1,4 @@
1
- import { __exports as shadesOfPurple } from "./index.es252.js";
1
+ import { __exports as shadesOfPurple } from "./index.es253.js";
2
2
  var hasRequiredShadesOfPurple;
3
3
  function requireShadesOfPurple() {
4
4
  if (hasRequiredShadesOfPurple) return shadesOfPurple;
@@ -1,4 +1,4 @@
1
- import { __exports as solarizedDarkAtom } from "./index.es253.js";
1
+ import { __exports as solarizedDarkAtom } from "./index.es254.js";
2
2
  var hasRequiredSolarizedDarkAtom;
3
3
  function requireSolarizedDarkAtom() {
4
4
  if (hasRequiredSolarizedDarkAtom) return solarizedDarkAtom;
@@ -1,4 +1,4 @@
1
- import { __exports as synthwave84 } from "./index.es254.js";
1
+ import { __exports as synthwave84 } from "./index.es255.js";
2
2
  var hasRequiredSynthwave84;
3
3
  function requireSynthwave84() {
4
4
  if (hasRequiredSynthwave84) return synthwave84;