@inkeep/agents-ui 0.16.0 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/color-mode/index.js +4 -4
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.js +167 -161
  4. package/dist/node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +9 -0
  5. package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -2
  6. package/dist/primitives/atoms/cmdk/index.cjs +1 -1
  7. package/dist/primitives/atoms/cmdk/index.js +14 -2
  8. package/dist/primitives/atoms/combobox.d.ts +104 -0
  9. package/dist/primitives/atoms/icons/built-in-icons.cjs +1 -1
  10. package/dist/primitives/atoms/icons/built-in-icons.d.ts +4 -1
  11. package/dist/primitives/atoms/icons/built-in-icons.js +94 -91
  12. package/dist/primitives/atoms/icons/collections/pi.cjs +1 -1
  13. package/dist/primitives/atoms/icons/collections/pi.d.ts +3 -0
  14. package/dist/primitives/atoms/icons/collections/pi.js +82 -37
  15. package/dist/primitives/atoms/icons/inkeep-default-icons.cjs +1 -1
  16. package/dist/primitives/atoms/icons/inkeep-default-icons.js +4 -1
  17. package/dist/primitives/atoms/portal.js +3 -3
  18. package/dist/primitives/atoms/select.cjs +1 -1
  19. package/dist/primitives/atoms/select.js +2 -2
  20. package/dist/primitives/atoms/shadow/context.js +4 -4
  21. package/dist/primitives/components/embedded-chat/chat-error-helpers.cjs +3 -0
  22. package/dist/primitives/components/embedded-chat/chat-error-helpers.d.ts +26 -0
  23. package/dist/primitives/components/embedded-chat/chat-error-helpers.js +32 -0
  24. package/dist/primitives/components/embedded-chat/file-upload-input.cjs +1 -1
  25. package/dist/primitives/components/embedded-chat/file-upload-input.d.ts +1 -2
  26. package/dist/primitives/components/embedded-chat/file-upload-input.js +359 -217
  27. package/dist/primitives/components/embedded-chat/image-preview-modal.js +3 -3
  28. package/dist/primitives/components/embedded-chat/use-chat-action.cjs +1 -1
  29. package/dist/primitives/components/embedded-chat/use-chat-action.js +16 -14
  30. package/dist/primitives/components/embedded-chat/use-inkeep-chat.cjs +2 -4
  31. package/dist/primitives/components/embedded-chat/use-inkeep-chat.d.ts +1 -2
  32. package/dist/primitives/components/embedded-chat/use-inkeep-chat.js +312 -284
  33. package/dist/primitives/components/embedded-chat/use-stream-processor.cjs +1 -1
  34. package/dist/primitives/components/embedded-chat/use-stream-processor.js +1 -1
  35. package/dist/primitives/components/embedded-chat.cjs +3 -3
  36. package/dist/primitives/components/embedded-chat.d.ts +2 -3
  37. package/dist/primitives/components/embedded-chat.js +122 -114
  38. package/dist/primitives/components/embedded-search/search-provider.js +3 -3
  39. package/dist/primitives/components/embedded-search.cjs +1 -1
  40. package/dist/primitives/components/embedded-search.d.ts +1 -1
  41. package/dist/primitives/components/embedded-search.js +3 -3
  42. package/dist/primitives/components/modal/modal-provider.js +2 -2
  43. package/dist/primitives/components/modal.js +3 -3
  44. package/dist/primitives/components/sidebar-chat/index.js +1 -1
  45. package/dist/primitives/components/tagline-logo-icon.js +50 -9
  46. package/dist/primitives/hooks/use-events-api.cjs +1 -0
  47. package/dist/primitives/hooks/use-events-api.d.ts +29 -0
  48. package/dist/primitives/hooks/use-events-api.js +43 -0
  49. package/dist/primitives/hooks/use-initial-conversation.js +4 -1
  50. package/dist/primitives/hooks/use-input-notification.js +9 -9
  51. package/dist/primitives/index.cjs +1 -1
  52. package/dist/primitives/index.js +150 -144
  53. package/dist/primitives/providers/base-events-provider.cjs +1 -1
  54. package/dist/primitives/providers/base-events-provider.d.ts +2 -0
  55. package/dist/primitives/providers/base-events-provider.js +23 -22
  56. package/dist/primitives/providers/chat-auth-provider.cjs +1 -0
  57. package/dist/primitives/providers/chat-auth-provider.d.ts +27 -0
  58. package/dist/primitives/providers/chat-auth-provider.js +46 -0
  59. package/dist/primitives/providers/chat-base-events-provider.cjs +1 -0
  60. package/dist/primitives/providers/chat-base-events-provider.d.ts +12 -0
  61. package/dist/primitives/providers/chat-base-events-provider.js +73 -0
  62. package/dist/primitives/providers/chat-bubble-provider.js +1 -1
  63. package/dist/primitives/providers/chat-form-provider.d.ts +1 -1
  64. package/dist/primitives/providers/chat-form-provider.js +4 -4
  65. package/dist/primitives/providers/chat-history-provider.js +3 -3
  66. package/dist/primitives/providers/config-provider.js +3 -3
  67. package/dist/primitives/providers/feedback-provider.cjs +1 -1
  68. package/dist/primitives/providers/feedback-provider.js +37 -31
  69. package/dist/primitives/providers/form-field-provider.js +3 -3
  70. package/dist/primitives/providers/help-menu-provider.js +4 -4
  71. package/dist/primitives/providers/hover-popover-provider.js +3 -3
  72. package/dist/primitives/providers/image-preview-provider.js +5 -5
  73. package/dist/primitives/providers/index.cjs +1 -1
  74. package/dist/primitives/providers/index.d.ts +2 -0
  75. package/dist/primitives/providers/index.js +57 -51
  76. package/dist/primitives/providers/markdown-provider.js +2 -2
  77. package/dist/primitives/providers/message-provider.js +1 -1
  78. package/dist/primitives/providers/sidebar-chat-provider.js +3 -3
  79. package/dist/primitives/providers/source-item-provider.js +3 -3
  80. package/dist/primitives/providers/widget-provider.js +2 -2
  81. package/dist/primitives/utils/misc.cjs +1 -1
  82. package/dist/primitives/utils/misc.js +2 -2
  83. package/dist/react/chat-button.js +1 -1
  84. package/dist/react/embedded-chat.cjs +1 -1
  85. package/dist/react/embedded-chat.js +104 -102
  86. package/dist/react/embedded-search.cjs +1 -1
  87. package/dist/react/embedded-search.js +18 -18
  88. package/dist/react/index.cjs +1 -1
  89. package/dist/react/index.js +167 -161
  90. package/dist/styled/components/chat-bubble.js +4 -4
  91. package/dist/styled/components/chat-button.cjs +1 -1
  92. package/dist/styled/components/chat-button.js +9 -9
  93. package/dist/styled/components/chat-history.cjs +1 -1
  94. package/dist/styled/components/chat-history.js +22 -22
  95. package/dist/styled/components/embedded-chat/file-upload-input.cjs +1 -1
  96. package/dist/styled/components/embedded-chat/file-upload-input.js +71 -72
  97. package/dist/styled/components/embedded-chat/image-preview-modal.js +14 -7
  98. package/dist/styled/components/embedded-chat.cjs +1 -1
  99. package/dist/styled/components/embedded-chat.js +211 -199
  100. package/dist/styled/components/embedded-search.cjs +1 -1
  101. package/dist/styled/components/embedded-search.js +72 -66
  102. package/dist/styled/components/loading-indicator.cjs +1 -1
  103. package/dist/styled/components/loading-indicator.js +1 -1
  104. package/dist/styled/components/message.cjs +1 -1
  105. package/dist/styled/components/message.js +142 -139
  106. package/dist/styled/components/modal.js +3 -3
  107. package/dist/styled/components/searchbar.js +8 -8
  108. package/dist/styled/components/sidebar-chat.cjs +1 -1
  109. package/dist/styled/components/sidebar-chat.js +5 -5
  110. package/dist/styled/index.cjs +1 -1
  111. package/dist/styled/index.js +155 -149
  112. package/dist/styled/inkeep.css.cjs +13 -3
  113. package/dist/styled/inkeep.css.js +13 -3
  114. package/dist/theme/utils/generate-theme-variables.js +6 -6
  115. package/dist/types/config/ai.d.ts +5 -0
  116. package/dist/types/events.d.ts +11 -0
  117. package/dist/types/icons/built-in.d.ts +1 -1
  118. package/dist/types/icons/custom.d.ts +3 -0
  119. package/package.json +2 -2
  120. package/dist/node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +0 -9
  121. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs +0 -0
  122. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -0
  123. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/shim/index.cjs +0 -0
  124. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/shim/index.js +0 -0
@@ -1,328 +1,470 @@
1
1
  "use client";
2
- import { jsx as o } from "react/jsx-runtime";
3
- import P, { useState as C, useMemo as x, useEffect as T } from "react";
4
- import { CustomIcon as F } from "../../atoms/icons/custom-icon.js";
5
- import { useImagePreview as b } from "../../providers/image-preview-provider.js";
6
- import { useMessage as w } from "../../providers/message-provider.js";
7
- import { useChat as d } from "./chat-provider.js";
8
- import { FileUploadRoot as L, useFileUploadApi as m } from "../../atoms/file-upload.js";
9
- import { dataAttr as I } from "../../utils/misc.js";
10
- import { composeEventHandlers as l } from "../../utils/compose-event-handlers.js";
11
- import { ikp as a } from "../factory.js";
12
- import { useInkeepConfig as M } from "../../providers/config-provider.js";
13
- const y = {
2
+ import { jsx as a, jsxs as j } from "react/jsx-runtime";
3
+ import C, { useState as h, useEffect as E, useMemo as w } from "react";
4
+ import { CustomIcon as v } from "../../atoms/icons/custom-icon.js";
5
+ import { useImagePreview as I } from "../../providers/image-preview-provider.js";
6
+ import { useMessage as k } from "../../providers/message-provider.js";
7
+ import { useChat as c } from "./chat-provider.js";
8
+ import { useFileUploadApi as d, FileUploadRoot as N } from "../../atoms/file-upload.js";
9
+ import { dataAttr as g } from "../../utils/misc.js";
10
+ import { composeEventHandlers as r } from "../../utils/compose-event-handlers.js";
11
+ import { ikp as o } from "../factory.js";
12
+ import { useInkeepConfig as T } from "../../providers/config-provider.js";
13
+ const L = {
14
14
  "application/pdf": "filePdf",
15
15
  "text/plain": "fileText",
16
16
  "text/markdown": "fileMarkdown",
17
17
  "text/html": "fileHtml",
18
18
  "text/csv": "fileCsv",
19
19
  "text/x-log": "fileLog",
20
- "application/json": "fileJson"
20
+ "application/json": "fileJson",
21
+ "text/x-sql": "fileSql",
22
+ "application/x-sql": "fileSql",
23
+ "text/x-script.python": "filePy",
24
+ "text/x-python": "filePy",
25
+ "text/x-python-script": "filePy"
21
26
  };
22
- function g(e) {
23
- return e.startsWith("image/");
27
+ function F(t) {
28
+ return t.startsWith("image/");
24
29
  }
25
- const p = {
30
+ const _ = {
31
+ // Images
26
32
  "image/png": [".png"],
27
33
  "image/jpeg": [".jpg", ".jpeg"],
28
34
  "image/webp": [".webp"],
35
+ // PDF
29
36
  "application/pdf": [".pdf"],
30
- "text/plain": [".txt"],
31
- "text/markdown": [".md"],
32
- "text/html": [".html"],
33
- "text/csv": [".csv"],
37
+ // Plain text & logs
38
+ "text/plain": [".txt", ".text", ".bat", ".cfg", ".conf", ".def", ".dic", ".in", ".list"],
34
39
  "text/x-log": [".log"],
35
- "application/json": [".json"]
36
- }, j = new Set(Object.keys(p)), k = Object.values(p).flat().join(", "), E = 10, N = 1024 * 1024 * 10, U = Object.entries(p).reduce(
37
- (e, [t, i]) => {
38
- for (const n of i) e[n] = t;
39
- return e;
40
+ // Markup & web
41
+ "text/markdown": [".md", ".markdown"],
42
+ "text/html": [".html", ".htm"],
43
+ "text/csv": [".csv"],
44
+ "text/xml": [".xml"],
45
+ "text/css": [".css"],
46
+ // Data formats
47
+ "application/json": [".json"],
48
+ "application/yaml": [".yaml", ".yml"],
49
+ "application/x-yaml": [".yaml", ".yml"],
50
+ "text/x-yaml": [".yaml", ".yml"],
51
+ "application/toml": [".toml"],
52
+ "application/x-toml": [".toml"],
53
+ "application/graphql": [".graphql", ".gql"],
54
+ "application/x-graphql": [".graphql", ".gql"],
55
+ "text/x-graphql": [".graphql", ".gql"],
56
+ "application/x-ndjson": [".ndjson"],
57
+ "application/json5": [".json5"],
58
+ "application/x-json5": [".json5"],
59
+ // JavaScript & TypeScript
60
+ "application/javascript": [".js", ".mjs"],
61
+ "text/javascript": [".js", ".mjs"],
62
+ "application/typescript": [".ts"],
63
+ "text/x-typescript": [".ts"],
64
+ "text/jsx": [".jsx"],
65
+ "text/tsx": [".tsx"],
66
+ // Shell & scripting
67
+ "text/x-sh": [".sh"],
68
+ "text/x-bash": [".bash"],
69
+ "application/x-bash": [".bash"],
70
+ "text/x-zsh": [".zsh"],
71
+ "text/x-shellscript": [".sh", ".ksh"],
72
+ "application/x-powershell": [".ps1"],
73
+ "text/vbscript": [".vbs"],
74
+ "text/x-awk": [".awk"],
75
+ "application/x-awk": [".awk"],
76
+ // C-family
77
+ "text/x-c": [".c", ".h"],
78
+ "text/x-c++": [".cpp", ".cc", ".cxx", ".hh"],
79
+ "text/x-csharp": [".cs"],
80
+ "text/x-objectivec": [".m"],
81
+ "text/x-objectivec++": [".mm"],
82
+ // JVM
83
+ "text/x-java": [".java"],
84
+ "text/x-scala": [".scala"],
85
+ "application/x-scala": [".scala"],
86
+ "text/x-kotlin": [".kt"],
87
+ "text/x-groovy": [".groovy"],
88
+ "text/x-clojure": [".clj"],
89
+ // Systems & compiled
90
+ "text/x-go": [".go"],
91
+ "text/x-golang": [".go"],
92
+ "text/x-rust": [".rs"],
93
+ "application/x-rust": [".rs"],
94
+ "text/x-swift": [".swift"],
95
+ "text/x-dart": [".dart"],
96
+ // Scripting languages
97
+ "text/x-python": [".py"],
98
+ "text/x-script.python": [".py"],
99
+ "text/x-python-script": [".py"],
100
+ "text/x-ruby": [".rb"],
101
+ "text/x-perl": [".pl"],
102
+ "text/x-lua": [".lua"],
103
+ "text/x-r": [".r"],
104
+ "text/x-R": [".r"],
105
+ "text/x-julia": [".jl"],
106
+ "text/x-elixir": [".ex"],
107
+ "text/x-erlang": [".erl"],
108
+ "text/x-haskell": [".hs"],
109
+ "text/x-lisp": [".lisp"],
110
+ // PHP
111
+ "text/x-php": [".php"],
112
+ "application/x-php": [".php"],
113
+ "application/x-httpd-php": [".php"],
114
+ "application/x-httpd-php-source": [".php"],
115
+ // Markup & templating
116
+ "text/x-tex": [".tex"],
117
+ "text/x-rst": [".rst"],
118
+ "text/x-handlebars": [".hbs"],
119
+ "text/x-mustache": [".mustache"],
120
+ "text/x-ejs": [".ejs"],
121
+ "text/x-jinja2": [".jinja", ".jinja2"],
122
+ "text/x-liquid": [".liquid"],
123
+ "text/x-erb": [".erb"],
124
+ "text/x-twig": [".twig"],
125
+ "text/x-pug": [".pug"],
126
+ "text/x-jade": [".jade"],
127
+ "text/x-tmpl": [".tmpl"],
128
+ "text/x-astro": [".astro"],
129
+ // Style
130
+ "text/x-sass": [".sass"],
131
+ "text/x-scss": [".scss"],
132
+ "text/x-less": [".less"],
133
+ // SQL
134
+ "text/x-sql": [".sql"],
135
+ "application/x-sql": [".sql"],
136
+ // Config & build
137
+ "text/x-makefile": [".makefile", ".mk"],
138
+ "text/x-cmake": [".cmake"],
139
+ "text/x-dockerfile": [".dockerfile"],
140
+ "text/x-gradle": [".gradle"],
141
+ "text/x-ini": [".ini"],
142
+ "text/x-properties": [".properties"],
143
+ "text/x-protobuf": [".proto"],
144
+ "application/x-protobuf": [".proto"],
145
+ "text/x-hcl": [".hcl"],
146
+ "text/x-terraform": [".tf"],
147
+ "application/x-terraform": [".tf"],
148
+ // Diff & patch
149
+ "text/x-diff": [".diff"],
150
+ "text/x-patch": [".patch"],
151
+ "application/x-patch": [".patch"],
152
+ // Assembly
153
+ "text/x-asm": [".asm", ".s"],
154
+ // Email
155
+ "message/rfc822": [".eml", ".mht", ".mhtml", ".mime", ".nws"],
156
+ // Subtitles & calendar
157
+ "text/srt": [".srt"],
158
+ "application/x-subrip": [".srt"],
159
+ "text/x-subrip": [".srt"],
160
+ "text/vtt": [".vtt"],
161
+ "text/x-vcard": [".vcf"],
162
+ "text/calendar": [".ics", ".ifb"],
163
+ // Office documents
164
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document": [".docx"],
165
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": [".xlsx"],
166
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation": [".pptx"],
167
+ "application/vnd.oasis.opendocument.text": [".odt"],
168
+ "application/vnd.oasis.opendocument.spreadsheet": [".ods"],
169
+ "application/vnd.oasis.opendocument.presentation": [".odp"],
170
+ "application/vnd.apple.pages": [".pages"],
171
+ "application/vnd.apple.numbers": [".numbers"],
172
+ "application/vnd.apple.keynote": [".key"],
173
+ "application/x-iwork-pages-sffpages": [".pages"],
174
+ "application/x-iwork-numbers-sffnumbers": [".numbers"],
175
+ "application/x-iwork-keynote-sffkey": [".key"]
176
+ }, M = new Set(Object.keys(_)), P = 10, y = 1024 * 1024 * 10, q = Object.entries(_).reduce(
177
+ (t, [e, i]) => {
178
+ for (const n of i) t[n] = e;
179
+ return t;
40
180
  },
41
181
  {}
42
182
  );
43
- function R(e) {
44
- if (e.type) return e;
45
- const t = `.${e.name.split(".").pop()?.toLowerCase()}`, i = U[t];
46
- return i ? new File([e], e.name, { type: i }) : e;
183
+ function R(t) {
184
+ if (t.type) return t;
185
+ const e = `.${t.name.split(".").pop()?.toLowerCase()}`, i = q[e];
186
+ return i ? new File([t], t.name, { type: i }) : t;
47
187
  }
48
- function A(e) {
49
- if (!e.length) return null;
50
- const t = (i) => e.some((n) => n.errors.includes(i));
51
- return t("TOO_MANY_FILES") ? {
188
+ function U(t) {
189
+ if (!t.length) return null;
190
+ const e = (i) => t.some((n) => n.errors.includes(i));
191
+ return e("TOO_MANY_FILES") ? {
52
192
  title: "Attachment limit reached",
53
- message: `You can only attach up to ${E} files per message.`
54
- } : t("FILE_INVALID_TYPE") ? {
193
+ message: `You can only attach up to ${P} files per message.`
194
+ } : e("FILE_INVALID_TYPE") ? {
55
195
  title: "Unsupported file type",
56
- message: `Only ${k} files are supported.`
57
- } : t("FILE_TOO_LARGE") ? {
196
+ message: "Supported formats include images, PDFs, text, code, and document files."
197
+ } : e("FILE_TOO_LARGE") ? {
58
198
  title: "File too large",
59
- message: `Files must be smaller than ${N / 1024 / 1024}MB.`
60
- } : t("FILE_EXISTS") ? {
199
+ message: `Files must be smaller than ${y / 1024 / 1024}MB.`
200
+ } : e("FILE_EXISTS") ? {
61
201
  title: "File already exists",
62
- message: `The file "${e.find((n) => n.errors.includes("FILE_EXISTS"))?.file.name ?? "file"}" is already attached to this message.`
202
+ message: `The file "${t.find((n) => n.errors.includes("FILE_EXISTS"))?.file.name ?? "file"}" is already attached to this message.`
63
203
  } : {
64
204
  title: "File rejected",
65
205
  message: "This file could not be added."
66
206
  };
67
207
  }
68
- const O = a("div", {
208
+ const S = o("div", {
69
209
  _id: "aiChatMessage__Files"
70
- }), me = ({
71
- children: e,
72
- ...t
73
- }) => {
74
- const { message: i } = w();
210
+ }), dt = ({ children: t, ...e }) => {
211
+ const { message: i } = k();
75
212
  if (i.role !== "user") return null;
76
- const n = (i.parts ?? []).filter((r) => {
77
- if (r.type !== "file") return !1;
78
- const s = r.mediaType;
79
- return j.has(s ?? "");
213
+ const n = (i.parts ?? []).filter((s) => {
214
+ if (s.type !== "file") return !1;
215
+ const l = s.mediaType;
216
+ return M.has(l ?? "");
80
217
  });
81
- return n.length ? /* @__PURE__ */ o(O, { ...t, children: e(n) }) : null;
82
- }, S = a("button", {
218
+ return n.length ? /* @__PURE__ */ a(S, { ...e, children: t(n) }) : null;
219
+ }, A = o("button", {
83
220
  _id: "aiChatMessage__File"
84
- }), ue = ({
85
- url: e,
86
- name: t,
221
+ }), xt = ({
222
+ url: t,
223
+ name: e,
87
224
  mediaType: i,
88
225
  onClick: n,
89
- ...r
226
+ ...s
90
227
  }) => {
91
- const { openImagePreview: s } = b(), [c, f] = C(!0), _ = x(() => new File([], t ?? "file", { type: i }), [t, i]);
92
- return /* @__PURE__ */ o(
93
- v.Provider,
228
+ const { openImagePreview: l } = I(), [p, m] = h(!0), u = w(
229
+ () => new File([], e ?? "file", { type: i }),
230
+ [e, i]
231
+ );
232
+ return /* @__PURE__ */ a(
233
+ b.Provider,
94
234
  {
95
- value: { file: _, objectUrl: e, isLoading: c, setIsLoading: f, onRemove: () => {
235
+ value: { file: u, objectUrl: t, isLoading: p, setIsLoading: m, onRemove: () => {
96
236
  } },
97
- children: /* @__PURE__ */ o(
98
- S,
237
+ children: /* @__PURE__ */ a(
238
+ A,
99
239
  {
100
240
  type: "button",
101
- "aria-label": g(i ?? "") ? `Preview ${t ?? "file"}` : `Open ${t ?? "file"} in new tab`,
102
- "data-loading": I(c),
103
- onClick: l(n, () => {
104
- if (g(i ?? ""))
105
- s({ url: e, name: t ?? "file" });
106
- else if (e)
107
- if (e.startsWith("data:")) {
108
- const h = document.createElement("a");
109
- h.href = e, h.download = t ?? "file", h.click();
241
+ "aria-label": F(i ?? "") ? `Preview ${e ?? "file"}` : `Open ${e ?? "file"} in new tab`,
242
+ "data-loading": g(p),
243
+ onClick: r(n, () => {
244
+ if (F(i ?? ""))
245
+ l({ url: t, name: e ?? "file" });
246
+ else if (t)
247
+ if (t.startsWith("data:")) {
248
+ const f = document.createElement("a");
249
+ f.href = t, f.download = e ?? "file", f.click();
110
250
  } else
111
- window.open(e, "_blank", "noopener,noreferrer");
251
+ window.open(t, "_blank", "noopener,noreferrer");
112
252
  }),
113
- ...r
253
+ ...s
114
254
  }
115
255
  )
116
256
  }
117
257
  );
118
- }, D = a("div", {
258
+ }, O = o("div", {
119
259
  _id: "aiChatInput__Fieldset"
120
- }), $ = (e) => {
121
- const t = m();
122
- return /* @__PURE__ */ o(
123
- D,
260
+ }), D = (t) => {
261
+ const e = d();
262
+ return /* @__PURE__ */ a(
263
+ O,
124
264
  {
125
- ...t.getDropzoneProps({ disableClick: !0 }),
126
- "data-drag-over": I(t.dragging),
127
- ...e
265
+ ...e.getDropzoneProps({ disableClick: !0 }),
266
+ "data-drag-over": g(e.dragging),
267
+ ...t
128
268
  }
129
269
  );
130
- }, pe = ({
131
- ...e
270
+ }, mt = ({
271
+ ...t
132
272
  }) => {
133
- const { files: t, setFiles: i, showInputNotification: n } = d();
134
- return /* @__PURE__ */ o(
135
- L,
273
+ const { files: e, setFiles: i, showInputNotification: n } = c();
274
+ return /* @__PURE__ */ a(
275
+ N,
136
276
  {
137
- accept: p,
138
- maxFiles: E,
139
- maxFileSize: N,
277
+ accept: _,
278
+ maxFiles: P,
279
+ maxFileSize: y,
140
280
  preventDocumentDrop: !0,
141
- acceptedFiles: t,
142
- onFileAccept: (r) => i(r.files),
143
- onFileReject: (r) => {
144
- const s = A(r.files);
145
- s && n(s);
281
+ acceptedFiles: e,
282
+ onFileAccept: (s) => i(s.files),
283
+ onFileReject: (s) => {
284
+ const l = U(s.files);
285
+ l && n(l);
146
286
  },
147
- children: /* @__PURE__ */ o($, { ...e })
287
+ children: /* @__PURE__ */ a(D, { ...t })
148
288
  }
149
289
  );
150
- }, fe = a("div", {
290
+ }, ut = o("div", {
151
291
  _id: "aiChatInput__DropZone"
152
- }), B = a("div", {
292
+ }), $ = o("div", {
153
293
  _id: "aiChatInput__Notification"
154
- }), _e = (e) => {
155
- const { inputNotification: t } = d();
156
- return t ? /* @__PURE__ */ o(B, { role: "alert", ...e }) : null;
157
- }, X = a("p", {
294
+ }), ft = (t) => {
295
+ const { inputNotification: e } = c();
296
+ return e ? /* @__PURE__ */ a($, { role: "alert", ...t }) : null;
297
+ }, B = o("p", {
158
298
  _id: "aiChatInput__NotificationTitle"
159
- }), he = (e) => {
160
- const { inputNotification: t } = d();
161
- return t?.title ? /* @__PURE__ */ o(X, { ...e, children: t.title }) : null;
162
- }, H = a("p", {
299
+ }), ht = ({
300
+ children: t,
301
+ ...e
302
+ }) => {
303
+ const { inputNotification: i } = c();
304
+ return i?.title ? /* @__PURE__ */ j(B, { ...e, children: [
305
+ t,
306
+ i.title
307
+ ] }) : null;
308
+ }, z = o("p", {
163
309
  _id: "aiChatInput__NotificationMessage"
164
- }), Ce = (e) => {
165
- const { inputNotification: t } = d();
166
- return /* @__PURE__ */ o(H, { ...e, children: t?.message });
167
- }, Y = a("button", {
310
+ }), vt = (t) => {
311
+ const { inputNotification: e } = c();
312
+ return /* @__PURE__ */ a(z, { ...t, children: e?.message });
313
+ }, H = o("button", {
168
314
  _id: "aiChatInput__NotificationClose"
169
- }), Fe = ({
170
- onClick: e,
171
- ...t
315
+ }), gt = ({
316
+ onClick: t,
317
+ ...e
172
318
  }) => {
173
- const { clearInputNotification: i } = d();
174
- return /* @__PURE__ */ o(
175
- Y,
319
+ const { clearInputNotification: i } = c();
320
+ return /* @__PURE__ */ a(
321
+ H,
176
322
  {
177
323
  type: "button",
178
324
  "aria-label": "Dismiss",
179
- onClick: l(e, i),
180
- ...t
325
+ onClick: r(t, i),
326
+ ...e
181
327
  }
182
328
  );
183
- }, Ie = a("div", {
329
+ }, _t = o("div", {
184
330
  _id: "aiChatInput__NotificationContent"
185
- }), ve = a("div", {
331
+ }), bt = o("div", {
186
332
  _id: "aiChatInput__NotificationHeader"
187
- }), ge = a(F, {
333
+ }), Ft = o(v, {
188
334
  _id: "aiChatInput__FileUploadButtonIcon",
189
335
  iconKey: "fileUpload"
190
- }), z = a("button", {
336
+ }), X = o("button", {
191
337
  _id: "aiChatInput__FileUploadButton"
192
- }), Pe = (e) => {
193
- const { aiChatSettings: t } = M(), i = m(), { onClick: n, ...r } = e;
194
- return /* @__PURE__ */ o(
195
- z,
338
+ }), Ct = (t) => {
339
+ const { aiChatSettings: e } = T(), i = d(), { onClick: n, ...s } = t;
340
+ return /* @__PURE__ */ a(
341
+ X,
196
342
  {
197
343
  type: "button",
198
344
  "aria-label": "Upload file",
199
- disabled: t.isViewOnly,
200
- onClick: l(n, () => i.openFilePicker()),
201
- ...r
345
+ disabled: e.isViewOnly,
346
+ onClick: r(n, () => i.openFilePicker()),
347
+ ...s
202
348
  }
203
349
  );
204
- }, K = a("input", {
350
+ }, Y = o("input", {
205
351
  _id: "aiChatInput__FileInput"
206
- }), be = (e) => {
207
- const t = m();
208
- return /* @__PURE__ */ o(K, { ...e, ...t.getHiddenInputProps() });
209
- }, Z = a("div", {
352
+ }), It = (t) => {
353
+ const e = d();
354
+ return /* @__PURE__ */ a(Y, { ...t, ...e.getHiddenInputProps() });
355
+ }, K = o("div", {
210
356
  _id: "aiChatInput__FileList"
211
- }), Ee = ({
212
- children: e,
213
- ...t
214
- }) => {
215
- const n = m().acceptedFiles;
216
- return n.length ? /* @__PURE__ */ o(Z, { ...t, children: e(n) }) : null;
217
- }, v = P.createContext(null);
218
- function u() {
219
- const e = P.useContext(v);
220
- if (!e) throw new Error("useFileContext must be used within EmbeddedChatPrimitiveFileItem");
221
- return e;
357
+ }), Pt = ({ children: t, ...e }) => {
358
+ const n = d().acceptedFiles;
359
+ return n.length ? /* @__PURE__ */ a(K, { ...e, children: t(n) }) : null;
360
+ }, b = C.createContext(null);
361
+ function x() {
362
+ const t = C.useContext(b);
363
+ if (!t) throw new Error("useFileContext must be used within EmbeddedChatPrimitiveFileItem");
364
+ return t;
222
365
  }
223
- const V = a("div", {
366
+ const Z = o("div", {
224
367
  _id: "aiChatInput__FileItem"
225
- }), Ne = ({ file: e, ...t }) => {
226
- const i = m(), [n, r] = C(void 0), [s, c] = C(!0);
227
- T(() => i.createFileUrl(e, (_) => {
228
- r(_), c(!0);
229
- }), [e]);
230
- const f = () => i.deleteFile(e);
231
- return /* @__PURE__ */ o(v.Provider, { value: { file: e, objectUrl: n, isLoading: s, setIsLoading: c, onRemove: f }, children: /* @__PURE__ */ o(V, { "data-loading": I(s), ...t }) });
232
- }, W = a("button", {
368
+ }), yt = ({ file: t, ...e }) => {
369
+ const i = d(), [n, s] = h(void 0), [l, p] = h(!0);
370
+ E(() => i.createFileUrl(t, (u) => {
371
+ s(u), p(!0);
372
+ }), [t]);
373
+ const m = () => i.deleteFile(t);
374
+ return /* @__PURE__ */ a(b.Provider, { value: { file: t, objectUrl: n, isLoading: l, setIsLoading: p, onRemove: m }, children: /* @__PURE__ */ a(Z, { "data-loading": g(l), ...e }) });
375
+ }, V = o("button", {
233
376
  _id: "aiChatInput__FilePreviewTrigger"
234
- }), xe = ({
235
- onClick: e,
236
- ...t
377
+ }), jt = ({
378
+ onClick: t,
379
+ ...e
237
380
  }) => {
238
- const { objectUrl: i, file: n } = u(), { openImagePreview: r } = b();
239
- return /* @__PURE__ */ o(
240
- W,
381
+ const { objectUrl: i, file: n } = x(), { openImagePreview: s } = I();
382
+ return /* @__PURE__ */ a(
383
+ V,
241
384
  {
242
385
  type: "button",
243
386
  "aria-label": `Preview ${n.name}`,
244
387
  disabled: !i,
245
- onClick: l(e, () => {
246
- i && r({ url: i, name: n.name });
388
+ onClick: r(t, () => {
389
+ i && s({ url: i, name: n.name });
247
390
  }),
248
- ...t
391
+ ...e
249
392
  }
250
393
  );
251
- }, G = a("span", {
394
+ }, W = o("span", {
252
395
  _id: "aiChatInput__FileContent"
253
- }), Te = (e) => /* @__PURE__ */ o(G, { ...e }), J = a("img", {
396
+ }), Et = (t) => /* @__PURE__ */ a(W, { ...t }), G = o("img", {
254
397
  _id: "aiChatInput__FileThumbnail"
255
- }), we = ({
256
- onLoad: e,
257
- ...t
398
+ }), wt = ({
399
+ onLoad: t,
400
+ ...e
258
401
  }) => {
259
- const { objectUrl: i, file: n, setIsLoading: r } = u();
260
- return /* @__PURE__ */ o(
261
- J,
402
+ const { objectUrl: i, file: n, setIsLoading: s } = x();
403
+ return /* @__PURE__ */ a(
404
+ G,
262
405
  {
263
406
  src: i,
264
407
  alt: n.name,
265
- onLoad: l(e, () => r(!1)),
266
- ...t
408
+ onLoad: r(t, () => s(!1)),
409
+ ...e
267
410
  }
268
411
  );
269
- }, Le = ({ className: e }) => {
270
- const { file: t } = u(), i = y[R(t).type] ?? "fileText";
271
- return /* @__PURE__ */ o(F, { iconKey: i, className: e });
272
- }, q = a("span", {
412
+ }, kt = ({ className: t }) => {
413
+ const { file: e } = x(), i = L[R(e).type] ?? "file";
414
+ return /* @__PURE__ */ a(v, { iconKey: i, className: t });
415
+ }, J = o("span", {
273
416
  _id: "aiChatInput__FileName"
274
- }), Me = (e) => {
275
- const { file: t } = u();
276
- return /* @__PURE__ */ o(q, { ...e, children: t.name });
277
- }, Q = a("button", {
417
+ }), Nt = (t) => {
418
+ const { file: e } = x();
419
+ return /* @__PURE__ */ a(J, { ...t, children: e.name });
420
+ }, Q = o("button", {
278
421
  _id: "aiChatInput__FileRemove"
279
- }), ye = a(F, {
422
+ }), Tt = o(v, {
280
423
  _id: "aiChatInput__FileRemoveIcon",
281
424
  iconKey: "close"
282
- }), je = ({
283
- onClick: e,
284
- ...t
425
+ }), Lt = ({
426
+ onClick: t,
427
+ ...e
285
428
  }) => {
286
- const { onRemove: i } = u();
287
- return /* @__PURE__ */ o(
429
+ const { onRemove: i } = x();
430
+ return /* @__PURE__ */ a(
288
431
  Q,
289
432
  {
290
433
  type: "button",
291
434
  "aria-label": "Remove file",
292
- onClick: l(e, i),
293
- ...t
435
+ onClick: r(t, i),
436
+ ...e
294
437
  }
295
438
  );
296
439
  };
297
440
  export {
298
- k as ACCEPTED_FILE_EXTENSIONS,
299
- j as ACCEPTED_FILE_MIME_TYPES,
300
- fe as EmbeddedChatPrimitiveDropZone,
301
- Te as EmbeddedChatPrimitiveFileContent,
302
- be as EmbeddedChatPrimitiveFileInput,
303
- Ne as EmbeddedChatPrimitiveFileItem,
304
- Ee as EmbeddedChatPrimitiveFileList,
305
- Me as EmbeddedChatPrimitiveFileName,
306
- xe as EmbeddedChatPrimitiveFilePreviewTrigger,
307
- je as EmbeddedChatPrimitiveFileRemove,
308
- ye as EmbeddedChatPrimitiveFileRemoveIcon,
309
- we as EmbeddedChatPrimitiveFileThumbnail,
310
- Le as EmbeddedChatPrimitiveFileTypeIcon,
311
- Pe as EmbeddedChatPrimitiveFileUploadButton,
312
- ge as EmbeddedChatPrimitiveFileUploadButtonIcon,
313
- pe as EmbeddedChatPrimitiveInputFieldset,
314
- _e as EmbeddedChatPrimitiveInputNotification,
315
- Fe as EmbeddedChatPrimitiveInputNotificationClose,
316
- Ie as EmbeddedChatPrimitiveInputNotificationContent,
317
- ve as EmbeddedChatPrimitiveInputNotificationHeader,
318
- Ce as EmbeddedChatPrimitiveInputNotificationMessage,
319
- he as EmbeddedChatPrimitiveInputNotificationTitle,
320
- ue as EmbeddedChatPrimitiveMessageFile,
321
- me as EmbeddedChatPrimitiveMessageFiles,
322
- p as FILE_ACCEPT_MAP,
323
- y as FILE_TYPE_ICON_MAP,
324
- E as MAX_FILES,
325
- N as MAX_FILE_SIZE,
326
- g as isImageMimeType,
441
+ M as ACCEPTED_FILE_MIME_TYPES,
442
+ ut as EmbeddedChatPrimitiveDropZone,
443
+ Et as EmbeddedChatPrimitiveFileContent,
444
+ It as EmbeddedChatPrimitiveFileInput,
445
+ yt as EmbeddedChatPrimitiveFileItem,
446
+ Pt as EmbeddedChatPrimitiveFileList,
447
+ Nt as EmbeddedChatPrimitiveFileName,
448
+ jt as EmbeddedChatPrimitiveFilePreviewTrigger,
449
+ Lt as EmbeddedChatPrimitiveFileRemove,
450
+ Tt as EmbeddedChatPrimitiveFileRemoveIcon,
451
+ wt as EmbeddedChatPrimitiveFileThumbnail,
452
+ kt as EmbeddedChatPrimitiveFileTypeIcon,
453
+ Ct as EmbeddedChatPrimitiveFileUploadButton,
454
+ Ft as EmbeddedChatPrimitiveFileUploadButtonIcon,
455
+ mt as EmbeddedChatPrimitiveInputFieldset,
456
+ ft as EmbeddedChatPrimitiveInputNotification,
457
+ gt as EmbeddedChatPrimitiveInputNotificationClose,
458
+ _t as EmbeddedChatPrimitiveInputNotificationContent,
459
+ bt as EmbeddedChatPrimitiveInputNotificationHeader,
460
+ vt as EmbeddedChatPrimitiveInputNotificationMessage,
461
+ ht as EmbeddedChatPrimitiveInputNotificationTitle,
462
+ xt as EmbeddedChatPrimitiveMessageFile,
463
+ dt as EmbeddedChatPrimitiveMessageFiles,
464
+ _ as FILE_ACCEPT_MAP,
465
+ L as FILE_TYPE_ICON_MAP,
466
+ P as MAX_FILES,
467
+ y as MAX_FILE_SIZE,
468
+ F as isImageMimeType,
327
469
  R as normalizeFileType
328
470
  };