@rolder/kit 3.0.0-alpha.8 → 3.0.0-alpha.9

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 (263) hide show
  1. package/dist/ai/ui/conversation/ConversationContext.d.ts +7 -0
  2. package/dist/ai/ui/conversation/ConversationContext.js +8 -0
  3. package/dist/ai/ui/conversation/ConversationProvider.d.ts +2 -0
  4. package/dist/ai/ui/conversation/ConversationProvider.js +14 -0
  5. package/dist/ai/ui/conversation/Empty.d.ts +1 -0
  6. package/dist/ai/ui/conversation/Empty.js +21 -0
  7. package/dist/ai/ui/conversation/File.d.ts +4 -0
  8. package/dist/ai/ui/conversation/File.js +42 -0
  9. package/dist/ai/ui/conversation/FileIcon.d.ts +3 -0
  10. package/dist/ai/ui/conversation/FileIcon.js +225 -0
  11. package/dist/ai/ui/conversation/Loader.d.ts +2 -0
  12. package/dist/ai/ui/conversation/Loader.js +12 -0
  13. package/dist/ai/ui/conversation/Message.d.ts +4 -0
  14. package/dist/ai/ui/conversation/Message.js +25 -0
  15. package/dist/ai/ui/conversation/Root.d.ts +2 -0
  16. package/dist/ai/ui/conversation/Root.js +26 -0
  17. package/dist/ai/ui/conversation/index.d.ts +13 -0
  18. package/dist/ai/ui/conversation/index.js +14 -0
  19. package/{src/ai/ui/conversation/types.ts → dist/ai/ui/conversation/types.d.ts} +4 -5
  20. package/dist/ai/ui/conversation/types.js +0 -0
  21. package/dist/ai/ui/conversation/useChatMessage.d.ts +2 -0
  22. package/dist/ai/ui/conversation/useChatMessage.js +12 -0
  23. package/dist/ai/ui/promptInput/File.d.ts +2 -0
  24. package/dist/ai/ui/promptInput/File.js +117 -0
  25. package/dist/ai/ui/promptInput/FileIcon.d.ts +3 -0
  26. package/dist/ai/ui/promptInput/FileIcon.js +225 -0
  27. package/dist/ai/ui/promptInput/Footer.d.ts +2 -0
  28. package/dist/ai/ui/promptInput/Footer.js +8 -0
  29. package/dist/ai/ui/promptInput/PromptInputContext.d.ts +12 -0
  30. package/dist/ai/ui/promptInput/PromptInputContext.js +8 -0
  31. package/dist/ai/ui/promptInput/PromptInputProvider.d.ts +2 -0
  32. package/dist/ai/ui/promptInput/PromptInputProvider.js +50 -0
  33. package/dist/ai/ui/promptInput/Root.d.ts +3 -0
  34. package/dist/ai/ui/promptInput/Root.js +17 -0
  35. package/dist/ai/ui/promptInput/Submit.d.ts +2 -0
  36. package/dist/ai/ui/promptInput/Submit.js +40 -0
  37. package/dist/ai/ui/promptInput/Textarea.d.ts +2 -0
  38. package/dist/ai/ui/promptInput/Textarea.js +33 -0
  39. package/dist/ai/ui/promptInput/index.d.ts +8 -0
  40. package/dist/ai/ui/promptInput/index.js +13 -0
  41. package/dist/ai/ui/promptInput/types.d.ts +11 -0
  42. package/dist/ai/ui/promptInput/types.js +0 -0
  43. package/dist/ai/utils/convertFileUIPartBlobToDataURL.d.ts +5 -0
  44. package/dist/ai/utils/convertFileUIPartBlobToDataURL.js +21 -0
  45. package/dist/ai/utils/parseAiMessagePart.d.ts +2 -0
  46. package/dist/ai/utils/parseAiMessagePart.js +12 -0
  47. package/dist/app/AppDefaults.d.ts +3 -0
  48. package/dist/app/AppDefaults.js +27 -0
  49. package/dist/app/DefaultApp.d.ts +6 -0
  50. package/dist/app/DefaultApp.js +43 -0
  51. package/dist/app/cookieColorSchemeManager.d.ts +6 -0
  52. package/dist/app/cookieColorSchemeManager.js +46 -0
  53. package/dist/app/defaultRequestMiddlewares.d.ts +4 -0
  54. package/dist/app/defaultRequestMiddlewares.js +24 -0
  55. package/dist/app/defaultTheme.d.ts +141 -0
  56. package/dist/app/defaultTheme.js +24 -0
  57. package/dist/functions/getCookie.d.ts +3 -0
  58. package/dist/functions/getCookie.js +8 -0
  59. package/dist/functions/setCookie.d.ts +10 -0
  60. package/dist/functions/setCookie.js +19 -0
  61. package/dist/functions/setCookies.d.ts +14 -0
  62. package/dist/functions/setCookies.js +13 -0
  63. package/dist/hooks/useMutation.d.ts +4 -0
  64. package/dist/hooks/useMutation.js +8 -0
  65. package/dist/hooks/useMutationWithInvalidate.d.ts +4 -0
  66. package/dist/hooks/useMutationWithInvalidate.js +16 -0
  67. package/{src/index.ts → dist/index.d.ts} +5 -45
  68. package/dist/index.js +26 -0
  69. package/{src → dist}/styles.css +11 -21
  70. package/dist/surreal/connection.d.ts +9 -0
  71. package/dist/surreal/connection.js +49 -0
  72. package/dist/surreal/deafaultCrud.d.ts +2 -0
  73. package/dist/surreal/deafaultCrud.js +18 -0
  74. package/dist/surreal/deserialize.d.ts +17 -0
  75. package/dist/surreal/deserialize.js +46 -0
  76. package/dist/surreal/encryption.d.ts +6 -0
  77. package/dist/surreal/encryption.js +30 -0
  78. package/dist/ui/AnimatedChevron.d.ts +6 -0
  79. package/dist/ui/AnimatedChevron.js +31 -0
  80. package/dist/ui/JsonInput.d.ts +2 -0
  81. package/dist/ui/JsonInput.js +45 -0
  82. package/dist/ui/RouterLink.d.ts +16 -0
  83. package/dist/ui/RouterLink.js +36 -0
  84. package/dist/ui/editor/Content.d.ts +3 -0
  85. package/dist/ui/editor/Content.js +13 -0
  86. package/dist/ui/editor/Provider.d.ts +17 -0
  87. package/dist/ui/editor/Provider.js +80 -0
  88. package/dist/ui/editor/Root.d.ts +2 -0
  89. package/dist/ui/editor/Root.js +18 -0
  90. package/dist/ui/editor/Toolbar.d.ts +5 -0
  91. package/dist/ui/editor/Toolbar.js +156 -0
  92. package/dist/ui/editor/index.d.ts +12 -0
  93. package/dist/ui/editor/index.js +11 -0
  94. package/dist/ui/editor/types.d.ts +7 -0
  95. package/dist/ui/editor/types.js +0 -0
  96. package/dist/ui/error/DefaultError.d.ts +2 -0
  97. package/dist/ui/error/DefaultError.js +62 -0
  98. package/dist/ui/error/DefaultNotFound.d.ts +1 -0
  99. package/dist/ui/error/DefaultNotFound.js +37 -0
  100. package/dist/ui/error/Forbidden.d.ts +1 -0
  101. package/dist/ui/error/Forbidden.js +32 -0
  102. package/dist/ui/error/defaultErrorNotification.d.ts +1 -0
  103. package/dist/ui/error/defaultErrorNotification.js +8 -0
  104. package/dist/ui/error/index.js +5 -0
  105. package/dist/ui/form/blurOnError.d.ts +4 -0
  106. package/dist/ui/form/blurOnError.js +11 -0
  107. package/dist/ui/form/buttons/CancelButton.d.ts +5 -0
  108. package/dist/ui/form/buttons/CancelButton.js +44 -0
  109. package/dist/ui/form/buttons/SubmitButton.d.ts +5 -0
  110. package/dist/ui/form/buttons/SubmitButton.js +47 -0
  111. package/dist/ui/form/buttons/SubscribeActionIcon.d.ts +4 -0
  112. package/dist/ui/form/buttons/SubscribeActionIcon.js +15 -0
  113. package/dist/ui/form/buttons/SubscribeButton.d.ts +5 -0
  114. package/dist/ui/form/buttons/SubscribeButton.js +16 -0
  115. package/dist/ui/form/buttons/index.js +4 -0
  116. package/dist/ui/form/context.d.ts +83 -0
  117. package/dist/ui/form/context.js +26 -0
  118. package/dist/ui/form/fields/JsonField.d.ts +2 -0
  119. package/dist/ui/form/fields/JsonField.js +13 -0
  120. package/dist/ui/form/fields/MultiSelectField.d.ts +2 -0
  121. package/dist/ui/form/fields/MultiSelectField.js +15 -0
  122. package/dist/ui/form/fields/NumberField.d.ts +2 -0
  123. package/dist/ui/form/fields/NumberField.js +15 -0
  124. package/dist/ui/form/fields/PassowrdField.d.ts +2 -0
  125. package/dist/ui/form/fields/PassowrdField.js +18 -0
  126. package/dist/ui/form/fields/SelectField.d.ts +2 -0
  127. package/dist/ui/form/fields/SelectField.js +15 -0
  128. package/dist/ui/form/fields/SwitchField.d.ts +2 -0
  129. package/dist/ui/form/fields/SwitchField.js +15 -0
  130. package/dist/ui/form/fields/TextField.d.ts +2 -0
  131. package/dist/ui/form/fields/TextField.js +15 -0
  132. package/dist/ui/form/fields/TextPassowrdField.d.ts +2 -0
  133. package/dist/ui/form/fields/TextPassowrdField.js +51 -0
  134. package/dist/ui/form/fields/TextareaField.d.ts +2 -0
  135. package/dist/ui/form/fields/TextareaField.js +15 -0
  136. package/dist/ui/form/fields/index.js +9 -0
  137. package/dist/ui/form/fieldsSchema.d.ts +12 -0
  138. package/dist/ui/form/fieldsSchema.js +13 -0
  139. package/dist/ui/form/index.js +4 -0
  140. package/dist/ui/hoverPaper/HoverPaper.d.ts +6 -0
  141. package/dist/ui/hoverPaper/HoverPaper.js +15 -0
  142. package/dist/ui/hoverPaper/index.js +3 -0
  143. package/dist/ui/hoverPaper/usePaperHover.d.ts +4 -0
  144. package/dist/ui/hoverPaper/usePaperHover.js +9 -0
  145. package/dist/ui/saveInput/JsonInput.d.ts +6 -0
  146. package/dist/ui/saveInput/JsonInput.js +34 -0
  147. package/dist/ui/saveInput/NumberInput.d.ts +6 -0
  148. package/dist/ui/saveInput/NumberInput.js +27 -0
  149. package/dist/ui/saveInput/SaveInput.d.ts +36 -0
  150. package/dist/ui/saveInput/SaveInput.js +15 -0
  151. package/dist/ui/saveInput/Select.d.ts +6 -0
  152. package/dist/ui/saveInput/Select.js +27 -0
  153. package/dist/ui/saveInput/Switch.d.ts +6 -0
  154. package/dist/ui/saveInput/Switch.js +30 -0
  155. package/dist/ui/saveInput/TextInput.d.ts +6 -0
  156. package/dist/ui/saveInput/TextInput.js +26 -0
  157. package/dist/ui/saveInput/Textarea.d.ts +6 -0
  158. package/dist/ui/saveInput/Textarea.js +26 -0
  159. package/dist/ui/saveInput/index.js +2 -0
  160. package/{src/ui/scrollArea/ScrollArea.tsx → dist/ui/scrollArea/ScrollArea.d.ts} +10 -41
  161. package/dist/ui/scrollArea/ScrollArea.js +30 -0
  162. package/dist/ui/scrollArea/ScrollAreaButton.d.ts +5 -0
  163. package/dist/ui/scrollArea/ScrollAreaButton.js +51 -0
  164. package/dist/ui/scrollArea/ScrollAreaContent.d.ts +6 -0
  165. package/dist/ui/scrollArea/ScrollAreaContent.js +29 -0
  166. package/{src/ui/scrollArea/context.tsx → dist/ui/scrollArea/context.d.ts} +3 -18
  167. package/dist/ui/scrollArea/context.js +10 -0
  168. package/dist/ui/scrollArea/index.d.ts +3 -0
  169. package/dist/ui/scrollArea/index.js +3 -0
  170. package/dist/ui/scrollArea/types.d.ts +65 -0
  171. package/dist/ui/scrollArea/types.js +0 -0
  172. package/dist/ui/scrollArea/useScrollArea.d.ts +9 -0
  173. package/dist/ui/scrollArea/useScrollArea.js +146 -0
  174. package/package.json +4 -1
  175. package/rslib.config.ts +0 -21
  176. package/src/ai/ui/conversation/ConversationContext.ts +0 -21
  177. package/src/ai/ui/conversation/ConversationProvider.tsx +0 -21
  178. package/src/ai/ui/conversation/Empty.tsx +0 -15
  179. package/src/ai/ui/conversation/File.tsx +0 -40
  180. package/src/ai/ui/conversation/FileIcon.tsx +0 -143
  181. package/src/ai/ui/conversation/Loader.tsx +0 -8
  182. package/src/ai/ui/conversation/Message.tsx +0 -34
  183. package/src/ai/ui/conversation/Root.tsx +0 -24
  184. package/src/ai/ui/conversation/index.ts +0 -16
  185. package/src/ai/ui/conversation/useChatMessage.ts +0 -13
  186. package/src/ai/ui/promptInput/File.tsx +0 -98
  187. package/src/ai/ui/promptInput/FileIcon.tsx +0 -149
  188. package/src/ai/ui/promptInput/Footer.tsx +0 -5
  189. package/src/ai/ui/promptInput/PromptInputContext.ts +0 -24
  190. package/src/ai/ui/promptInput/PromptInputProvider.tsx +0 -54
  191. package/src/ai/ui/promptInput/Root.tsx +0 -29
  192. package/src/ai/ui/promptInput/Submit.tsx +0 -39
  193. package/src/ai/ui/promptInput/Textarea.tsx +0 -39
  194. package/src/ai/ui/promptInput/index.ts +0 -15
  195. package/src/ai/ui/promptInput/types.ts +0 -9
  196. package/src/ai/utils/convertFileUIPartBlobToDataURL.ts +0 -29
  197. package/src/ai/utils/parseAiMessagePart.ts +0 -19
  198. package/src/app/AppDefaults.tsx +0 -21
  199. package/src/app/DefaultApp.tsx +0 -50
  200. package/src/app/cookieColorSchemeManager.ts +0 -70
  201. package/src/app/defaultRequestMiddlewares.ts +0 -22
  202. package/src/app/defaultTheme.ts +0 -22
  203. package/src/functions/getCookie.ts +0 -36
  204. package/src/functions/setCookie.ts +0 -29
  205. package/src/functions/setCookies.ts +0 -24
  206. package/src/hooks/useMutation.ts +0 -14
  207. package/src/hooks/useMutationWithInvalidate.ts +0 -23
  208. package/src/surreal/connection.ts +0 -72
  209. package/src/surreal/deafaultCrud.ts +0 -25
  210. package/src/surreal/deserialize.ts +0 -144
  211. package/src/surreal/encryption.ts +0 -51
  212. package/src/ui/AnimatedChevron.tsx +0 -32
  213. package/src/ui/JsonInput.tsx +0 -52
  214. package/src/ui/RouterLink.tsx +0 -78
  215. package/src/ui/editor/Content.tsx +0 -11
  216. package/src/ui/editor/Provider.tsx +0 -96
  217. package/src/ui/editor/Root.tsx +0 -25
  218. package/src/ui/editor/Toolbar.tsx +0 -92
  219. package/src/ui/editor/index.ts +0 -13
  220. package/src/ui/editor/types.ts +0 -7
  221. package/src/ui/error/DefaultError.tsx +0 -60
  222. package/src/ui/error/DefaultNotFound.tsx +0 -19
  223. package/src/ui/error/Forbidden.tsx +0 -18
  224. package/src/ui/error/defaultErrorNotification.ts +0 -9
  225. package/src/ui/form/blurOnError.ts +0 -21
  226. package/src/ui/form/buttons/CancelButton.tsx +0 -42
  227. package/src/ui/form/buttons/SubmitButton.tsx +0 -43
  228. package/src/ui/form/buttons/SubscribeActionIcon.tsx +0 -18
  229. package/src/ui/form/buttons/SubscribeButton.tsx +0 -17
  230. package/src/ui/form/context.ts +0 -45
  231. package/src/ui/form/fields/JsonField.tsx +0 -16
  232. package/src/ui/form/fields/MultiSelectField.tsx +0 -17
  233. package/src/ui/form/fields/NumberField.tsx +0 -17
  234. package/src/ui/form/fields/PassowrdField.tsx +0 -20
  235. package/src/ui/form/fields/SelectField.tsx +0 -17
  236. package/src/ui/form/fields/SwitchField.tsx +0 -17
  237. package/src/ui/form/fields/TextField.tsx +0 -17
  238. package/src/ui/form/fields/TextPassowrdField.tsx +0 -51
  239. package/src/ui/form/fields/TextareaField.tsx +0 -17
  240. package/src/ui/form/fieldsSchema.ts +0 -24
  241. package/src/ui/hoverPaper/HoverPaper.tsx +0 -17
  242. package/src/ui/hoverPaper/usePaperHover.ts +0 -9
  243. package/src/ui/saveInput/JsonInput.tsx +0 -40
  244. package/src/ui/saveInput/NumberInput.tsx +0 -40
  245. package/src/ui/saveInput/SaveInput.tsx +0 -15
  246. package/src/ui/saveInput/Select.tsx +0 -41
  247. package/src/ui/saveInput/Switch.tsx +0 -46
  248. package/src/ui/saveInput/TextInput.tsx +0 -40
  249. package/src/ui/saveInput/Textarea.tsx +0 -40
  250. package/src/ui/scrollArea/ARCH.md +0 -204
  251. package/src/ui/scrollArea/README.md +0 -369
  252. package/src/ui/scrollArea/ScrollAreaButton.tsx +0 -56
  253. package/src/ui/scrollArea/ScrollAreaContent.tsx +0 -36
  254. package/src/ui/scrollArea/index.ts +0 -10
  255. package/src/ui/scrollArea/types.ts +0 -77
  256. package/src/ui/scrollArea/useScrollArea.ts +0 -227
  257. package/tsconfig.json +0 -14
  258. /package/{src/ui/error/index.ts → dist/ui/error/index.d.ts} +0 -0
  259. /package/{src/ui/form/buttons/index.ts → dist/ui/form/buttons/index.d.ts} +0 -0
  260. /package/{src/ui/form/fields/index.ts → dist/ui/form/fields/index.d.ts} +0 -0
  261. /package/{src/ui/form/index.ts → dist/ui/form/index.d.ts} +0 -0
  262. /package/{src/ui/hoverPaper/index.ts → dist/ui/hoverPaper/index.d.ts} +0 -0
  263. /package/{src/ui/saveInput/index.ts → dist/ui/saveInput/index.d.ts} +0 -0
@@ -0,0 +1,7 @@
1
+ export interface ConversationContext {
2
+ loading: boolean;
3
+ streaming: boolean;
4
+ empty: boolean;
5
+ }
6
+ export declare const ConversationContext: import("react").Context<ConversationContext | null>;
7
+ export declare const useConversation: () => ConversationContext;
@@ -0,0 +1,8 @@
1
+ import { createContext, useContext } from "react";
2
+ const ConversationContext = createContext(null);
3
+ const useConversation = ()=>{
4
+ const context = useContext(ConversationContext);
5
+ if (!context) throw new Error('useConversation must be used within a ConversationProvider');
6
+ return context;
7
+ };
8
+ export { ConversationContext, useConversation };
@@ -0,0 +1,2 @@
1
+ import type { ConversationProps } from './types';
2
+ export declare const Provider: ({ children, loading, streaming, empty, }: ConversationProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { ConversationContext } from "./ConversationContext.js";
3
+ const Provider = ({ children, loading, streaming, empty })=>{
4
+ const value = {
5
+ loading,
6
+ streaming,
7
+ empty
8
+ };
9
+ return /*#__PURE__*/ jsx(ConversationContext.Provider, {
10
+ value: value,
11
+ children: children
12
+ });
13
+ };
14
+ export { Provider };
@@ -0,0 +1 @@
1
+ export declare const Empty: () => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,21 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Stack, Text } from "@mantine/core";
3
+ import { useConversation } from "./ConversationContext.js";
4
+ const Empty = ()=>{
5
+ const { empty } = useConversation();
6
+ return empty ? null : /*#__PURE__*/ jsxs(Stack, {
7
+ align: "center",
8
+ gap: 0,
9
+ children: [
10
+ /*#__PURE__*/ jsx(Text, {
11
+ children: "Нет сообщений"
12
+ }),
13
+ /*#__PURE__*/ jsx(Text, {
14
+ size: "sm",
15
+ c: "dimmed",
16
+ children: "Начните общение, чтобы увидеть сообщения здесь"
17
+ })
18
+ ]
19
+ });
20
+ };
21
+ export { Empty };
@@ -0,0 +1,4 @@
1
+ import type { UIMessage } from 'ai';
2
+ export declare const File: <T extends UIMessage>({ message }: {
3
+ message: T;
4
+ }) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,42 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Image, Paper } from "@mantine/core";
3
+ import { FileIcon } from "./FileIcon.js";
4
+ const File = ({ message })=>{
5
+ const textFileType = message.id.split('-')[1];
6
+ const fileParts = message.parts?.filter((i)=>'file' === i.type);
7
+ const lastFilePart = fileParts[fileParts.length - 1];
8
+ const FileComponent = ()=>{
9
+ switch(textFileType){
10
+ case 'excel':
11
+ return /*#__PURE__*/ jsx(FileIcon, {
12
+ mimeType: "excel"
13
+ });
14
+ case 'word':
15
+ return /*#__PURE__*/ jsx(FileIcon, {
16
+ mimeType: "word"
17
+ });
18
+ case 'powerpoint':
19
+ return /*#__PURE__*/ jsx(FileIcon, {
20
+ mimeType: "powerpoint"
21
+ });
22
+ }
23
+ if (lastFilePart.mediaType.includes('image/')) return /*#__PURE__*/ jsx(Image, {
24
+ radius: "md",
25
+ h: 128,
26
+ src: lastFilePart.url,
27
+ alt: "Image Preview"
28
+ });
29
+ return /*#__PURE__*/ jsx(FileIcon, {
30
+ mimeType: lastFilePart.mediaType
31
+ });
32
+ };
33
+ return textFileType || lastFilePart ? /*#__PURE__*/ jsx(Paper, {
34
+ radius: "md",
35
+ px: "md",
36
+ py: "sm",
37
+ ml: "auto",
38
+ bg: "var(--mantine-color-default-hover)",
39
+ children: /*#__PURE__*/ jsx(FileComponent, {})
40
+ }) : null;
41
+ };
42
+ export { File };
@@ -0,0 +1,3 @@
1
+ export declare const FileIcon: ({ mimeType }: {
2
+ mimeType: string;
3
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,225 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ const FileIcon = ({ mimeType })=>{
3
+ switch(true){
4
+ case mimeType.includes('image/'):
5
+ return /*#__PURE__*/ jsxs("svg", {
6
+ xmlns: "http://www.w3.org/2000/svg",
7
+ width: "36",
8
+ height: "36",
9
+ viewBox: "0 0 36 36",
10
+ fill: "none",
11
+ stroke: "var(--mantine-color-text)",
12
+ strokeWidth: "1.5",
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ role: "img",
16
+ "aria-label": "Image",
17
+ children: [
18
+ /*#__PURE__*/ jsx("path", {
19
+ stroke: "none",
20
+ d: "M0 0h24v24H0z",
21
+ fill: "none"
22
+ }),
23
+ /*#__PURE__*/ jsx("path", {
24
+ d: "M15 8h.01"
25
+ }),
26
+ /*#__PURE__*/ jsx("path", {
27
+ d: "M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12"
28
+ }),
29
+ /*#__PURE__*/ jsx("path", {
30
+ d: "M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5"
31
+ }),
32
+ /*#__PURE__*/ jsx("path", {
33
+ d: "M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3"
34
+ })
35
+ ]
36
+ });
37
+ case mimeType.includes('application/pdf'):
38
+ return /*#__PURE__*/ jsxs("svg", {
39
+ xmlns: "http://www.w3.org/2000/svg",
40
+ width: "36",
41
+ height: "36",
42
+ viewBox: "0 0 36 36",
43
+ fill: "none",
44
+ stroke: "var(--mantine-color-text)",
45
+ strokeWidth: "1.5",
46
+ strokeLinecap: "round",
47
+ strokeLinejoin: "round",
48
+ role: "img",
49
+ "aria-label": "FilePdf",
50
+ children: [
51
+ /*#__PURE__*/ jsx("path", {
52
+ stroke: "none",
53
+ d: "M0 0h24v24H0z",
54
+ fill: "none"
55
+ }),
56
+ /*#__PURE__*/ jsx("path", {
57
+ d: "M14 3v4a1 1 0 0 0 1 1h4"
58
+ }),
59
+ /*#__PURE__*/ jsx("path", {
60
+ d: "M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"
61
+ }),
62
+ /*#__PURE__*/ jsx("path", {
63
+ d: "M5 18h1.5a1.5 1.5 0 0 0 0 -3h-1.5v6"
64
+ }),
65
+ /*#__PURE__*/ jsx("path", {
66
+ d: "M17 18h2"
67
+ }),
68
+ /*#__PURE__*/ jsx("path", {
69
+ d: "M20 15h-3v6"
70
+ }),
71
+ /*#__PURE__*/ jsx("path", {
72
+ d: "M11 15v6h1a2 2 0 0 0 2 -2v-2a2 2 0 0 0 -2 -2h-1"
73
+ })
74
+ ]
75
+ });
76
+ case 'word' === mimeType:
77
+ return /*#__PURE__*/ jsxs("svg", {
78
+ xmlns: "http://www.w3.org/2000/svg",
79
+ width: "36",
80
+ height: "36",
81
+ viewBox: "0 0 36 36",
82
+ fill: "none",
83
+ stroke: "var(--mantine-color-text)",
84
+ strokeWidth: "1.5",
85
+ strokeLinecap: "round",
86
+ strokeLinejoin: "round",
87
+ role: "img",
88
+ "aria-label": "FileDoc",
89
+ children: [
90
+ /*#__PURE__*/ jsx("path", {
91
+ stroke: "none",
92
+ d: "M0 0h24v24H0z",
93
+ fill: "none"
94
+ }),
95
+ /*#__PURE__*/ jsx("path", {
96
+ d: "M14 3v4a1 1 0 0 0 1 1h4"
97
+ }),
98
+ /*#__PURE__*/ jsx("path", {
99
+ d: "M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"
100
+ }),
101
+ /*#__PURE__*/ jsx("path", {
102
+ d: "M5 15v6h1a2 2 0 0 0 2 -2v-2a2 2 0 0 0 -2 -2h-1"
103
+ }),
104
+ /*#__PURE__*/ jsx("path", {
105
+ d: "M20 16.5a1.5 1.5 0 0 0 -3 0v3a1.5 1.5 0 0 0 3 0"
106
+ }),
107
+ /*#__PURE__*/ jsx("path", {
108
+ d: "M12.5 15a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1 -3 0v-3a1.5 1.5 0 0 1 1.5 -1.5"
109
+ })
110
+ ]
111
+ });
112
+ case 'excel' === mimeType:
113
+ return /*#__PURE__*/ jsxs("svg", {
114
+ xmlns: "http://www.w3.org/2000/svg",
115
+ width: "36",
116
+ height: "36",
117
+ viewBox: "0 0 36 36",
118
+ fill: "none",
119
+ stroke: "var(--mantine-color-text)",
120
+ strokeWidth: "1.5",
121
+ strokeLinecap: "round",
122
+ strokeLinejoin: "round",
123
+ role: "img",
124
+ "aria-label": "FileXls",
125
+ children: [
126
+ /*#__PURE__*/ jsx("path", {
127
+ stroke: "none",
128
+ d: "M0 0h24v24H0z",
129
+ fill: "none"
130
+ }),
131
+ /*#__PURE__*/ jsx("path", {
132
+ d: "M14 3v4a1 1 0 0 0 1 1h4"
133
+ }),
134
+ /*#__PURE__*/ jsx("path", {
135
+ d: "M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"
136
+ }),
137
+ /*#__PURE__*/ jsx("path", {
138
+ d: "M4 15l4 6"
139
+ }),
140
+ /*#__PURE__*/ jsx("path", {
141
+ d: "M4 21l4 -6"
142
+ }),
143
+ /*#__PURE__*/ jsx("path", {
144
+ d: "M17 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"
145
+ }),
146
+ /*#__PURE__*/ jsx("path", {
147
+ d: "M11 15v6h3"
148
+ })
149
+ ]
150
+ });
151
+ case 'powerpoint' === mimeType:
152
+ return /*#__PURE__*/ jsxs("svg", {
153
+ xmlns: "http://www.w3.org/2000/svg",
154
+ width: "36",
155
+ height: "36",
156
+ viewBox: "0 0 36 36",
157
+ fill: "none",
158
+ stroke: "var(--mantine-color-text)",
159
+ strokeWidth: "1.5",
160
+ strokeLinecap: "round",
161
+ strokeLinejoin: "round",
162
+ role: "img",
163
+ "aria-label": "FilePpt",
164
+ children: [
165
+ /*#__PURE__*/ jsx("path", {
166
+ stroke: "none",
167
+ d: "M0 0h24v24H0z",
168
+ fill: "none"
169
+ }),
170
+ /*#__PURE__*/ jsx("path", {
171
+ d: "M14 3v4a1 1 0 0 0 1 1h4"
172
+ }),
173
+ /*#__PURE__*/ jsx("path", {
174
+ d: "M14 3v4a1 1 0 0 0 1 1h4"
175
+ }),
176
+ /*#__PURE__*/ jsx("path", {
177
+ d: "M5 18h1.5a1.5 1.5 0 0 0 0 -3h-1.5v6"
178
+ }),
179
+ /*#__PURE__*/ jsx("path", {
180
+ d: "M11 18h1.5a1.5 1.5 0 0 0 0 -3h-1.5v6"
181
+ }),
182
+ /*#__PURE__*/ jsx("path", {
183
+ d: "M16.5 15h3"
184
+ }),
185
+ /*#__PURE__*/ jsx("path", {
186
+ d: "M18 15v6"
187
+ }),
188
+ /*#__PURE__*/ jsx("path", {
189
+ d: "M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"
190
+ })
191
+ ]
192
+ });
193
+ default:
194
+ return /*#__PURE__*/ jsxs("svg", {
195
+ xmlns: "http://www.w3.org/2000/svg",
196
+ width: "36",
197
+ height: "36",
198
+ viewBox: "0 0 36 36",
199
+ fill: "none",
200
+ stroke: "var(--mantine-color-text)",
201
+ strokeWidth: "1.5",
202
+ strokeLinecap: "round",
203
+ strokeLinejoin: "round",
204
+ role: "img",
205
+ "aria-label": "File",
206
+ children: [
207
+ /*#__PURE__*/ jsx("path", {
208
+ stroke: "none",
209
+ d: "M0 0h24v24H0z",
210
+ fill: "none"
211
+ }),
212
+ /*#__PURE__*/ jsx("path", {
213
+ d: "M15 3v4a1 1 0 0 0 1 1h4"
214
+ }),
215
+ /*#__PURE__*/ jsx("path", {
216
+ d: "M18 17h-7a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h4l5 5v7a2 2 0 0 1 -2 2"
217
+ }),
218
+ /*#__PURE__*/ jsx("path", {
219
+ d: "M16 17v2a2 2 0 0 1 -2 2h-7a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2"
220
+ })
221
+ ]
222
+ });
223
+ }
224
+ };
225
+ export { FileIcon };
@@ -0,0 +1,2 @@
1
+ import { type LoaderProps } from '@mantine/core';
2
+ export declare const Loader: (props: LoaderProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,12 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Loader } from "@mantine/core";
3
+ import { useConversation } from "./ConversationContext.js";
4
+ const Loader_Loader = (props)=>{
5
+ const { loading } = useConversation();
6
+ return loading ? /*#__PURE__*/ jsx(Loader, {
7
+ size: 28,
8
+ type: "dots",
9
+ ...props
10
+ }) : null;
11
+ };
12
+ export { Loader_Loader as Loader };
@@ -0,0 +1,4 @@
1
+ import type { UIMessage } from 'ai';
2
+ export declare const Message: <T extends UIMessage>({ message }: {
3
+ message: T;
4
+ }) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,25 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Paper } from "@mantine/core";
3
+ import { Streamdown } from "streamdown";
4
+ import { useConversation } from "./ConversationContext.js";
5
+ import { useChatMessage } from "./useChatMessage.js";
6
+ const Message = ({ message })=>{
7
+ const textParts = message?.parts?.filter((i)=>'text' === i.type);
8
+ const lastTextPart = textParts?.[textParts.length - 1];
9
+ const chatMessage = useChatMessage(lastTextPart);
10
+ const { streaming } = useConversation();
11
+ return chatMessage && 'system' !== message.role ? /*#__PURE__*/ jsx(Paper, {
12
+ radius: "md",
13
+ px: "md",
14
+ py: "sm",
15
+ maw: "80%",
16
+ ml: 'user' === message.role ? 'auto' : void 0,
17
+ bg: 'user' === message.role ? 'var(--mantine-color-default-hover)' : 'var(--mantine-primary-color-light)',
18
+ fz: "sm",
19
+ children: /*#__PURE__*/ jsx(Streamdown, {
20
+ isAnimating: streaming && 'assistant' === message.role,
21
+ children: chatMessage
22
+ })
23
+ }) : null;
24
+ };
25
+ export { Message };
@@ -0,0 +1,2 @@
1
+ import type { ConversationProps } from './types';
2
+ export declare const Root: ({ children, loading, streaming, empty, ...props }: ConversationProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,26 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Paper, Stack } from "@mantine/core";
3
+ import { ScrollArea } from "../../../ui/scrollArea/index.js";
4
+ import { Provider } from "./ConversationProvider.js";
5
+ const Root = ({ children, loading, streaming, empty, ...props })=>/*#__PURE__*/ jsx(Provider, {
6
+ loading: loading,
7
+ streaming: streaming,
8
+ empty: empty,
9
+ children: /*#__PURE__*/ jsx(Paper, {
10
+ withBorder: true,
11
+ radius: "md",
12
+ ...props,
13
+ children: /*#__PURE__*/ jsxs(ScrollArea, {
14
+ autoScroll: true,
15
+ scrollToBottomOnInit: true,
16
+ p: "md",
17
+ children: [
18
+ /*#__PURE__*/ jsx(Stack, {
19
+ children: children
20
+ }),
21
+ /*#__PURE__*/ jsx(ScrollArea.ScrollButton, {})
22
+ ]
23
+ })
24
+ })
25
+ });
26
+ export { Root };
@@ -0,0 +1,13 @@
1
+ export type { ConversationProps } from './types';
2
+ export { useChatMessage } from './useChatMessage';
3
+ export declare const Conversation: {
4
+ Root: ({ children, loading, streaming, empty, ...props }: import("./types").ConversationProps) => import("react/jsx-runtime").JSX.Element;
5
+ Message: <T extends import("ai").UIMessage>({ message }: {
6
+ message: T;
7
+ }) => import("react/jsx-runtime").JSX.Element | null;
8
+ File: <T extends import("ai").UIMessage>({ message }: {
9
+ message: T;
10
+ }) => import("react/jsx-runtime").JSX.Element | null;
11
+ Loader: (props: import("@mantine/core").LoaderProps) => import("react/jsx-runtime").JSX.Element | null;
12
+ Empty: () => import("react/jsx-runtime").JSX.Element | null;
13
+ };
@@ -0,0 +1,14 @@
1
+ import { Empty } from "./Empty.js";
2
+ import { File } from "./File.js";
3
+ import { Loader } from "./Loader.js";
4
+ import { Message } from "./Message.js";
5
+ import { Root } from "./Root.js";
6
+ import { useChatMessage } from "./useChatMessage.js";
7
+ const Conversation = {
8
+ Root: Root,
9
+ Message: Message,
10
+ File: File,
11
+ Loader: Loader,
12
+ Empty: Empty
13
+ };
14
+ export { Conversation, useChatMessage };
@@ -1,8 +1,7 @@
1
1
  import type { PaperProps } from '@mantine/core';
2
-
3
2
  export interface ConversationProps extends PaperProps {
4
- children?: React.ReactNode;
5
- loading: boolean;
6
- streaming: boolean;
7
- empty: boolean;
3
+ children?: React.ReactNode;
4
+ loading: boolean;
5
+ streaming: boolean;
6
+ empty: boolean;
8
7
  }
File without changes
@@ -0,0 +1,2 @@
1
+ import type { TextUIPart } from 'ai';
2
+ export declare const useChatMessage: (part: TextUIPart) => string;
@@ -0,0 +1,12 @@
1
+ import { useEffect, useState } from "react";
2
+ import { parseAiMessagePart } from "../../utils/parseAiMessagePart.js";
3
+ const useChatMessage = (part)=>{
4
+ const [parsedText, setParsedText] = useState('');
5
+ useEffect(()=>{
6
+ parseAiMessagePart(part).then((i)=>setParsedText(i.text));
7
+ }, [
8
+ part
9
+ ]);
10
+ return parsedText;
11
+ };
12
+ export { useChatMessage };
@@ -0,0 +1,2 @@
1
+ import { type FileButtonProps } from '@mantine/core';
2
+ export declare const File: (props: Omit<FileButtonProps, "onChange" | "children">) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,117 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { ActionIcon, FileButton, Tooltip } from "@mantine/core";
3
+ import { useRef } from "react";
4
+ import { FileIcon } from "./FileIcon.js";
5
+ import { usePromptInput } from "./PromptInputContext.js";
6
+ const File = (props)=>{
7
+ const resetRef = useRef(null);
8
+ const { file, setFile, accept, submiting, uploading } = usePromptInput();
9
+ return /*#__PURE__*/ jsx(FileButton, {
10
+ resetRef: resetRef,
11
+ onChange: async (file)=>{
12
+ if (file) setFile(file);
13
+ },
14
+ accept: accept,
15
+ disabled: submiting || uploading,
16
+ ...props,
17
+ children: (props)=>/*#__PURE__*/ jsxs(ActionIcon.Group, {
18
+ children: [
19
+ /*#__PURE__*/ jsx(ActionIcon, {
20
+ size: "lg",
21
+ variant: "default",
22
+ disabled: submiting,
23
+ loading: uploading,
24
+ classNames: {
25
+ root: 'rolder-prompt-input-file-action-action'
26
+ },
27
+ ...props,
28
+ children: /*#__PURE__*/ jsxs("svg", {
29
+ xmlns: "http://www.w3.org/2000/svg",
30
+ width: "24",
31
+ height: "24",
32
+ viewBox: "0 0 24 24",
33
+ fill: "none",
34
+ stroke: "currentColor",
35
+ strokeWidth: "1.5",
36
+ strokeLinecap: "round",
37
+ strokeLinejoin: "round",
38
+ role: "img",
39
+ "aria-label": "Paperclip",
40
+ children: [
41
+ /*#__PURE__*/ jsx("path", {
42
+ stroke: "none",
43
+ d: "M0 0h24v24H0z",
44
+ fill: "none"
45
+ }),
46
+ /*#__PURE__*/ jsx("path", {
47
+ d: "M15 7l-6.5 6.5a1.5 1.5 0 0 0 3 3l6.5 -6.5a3 3 0 0 0 -6 -6l-6.5 6.5a4.5 4.5 0 0 0 9 9l6.5 -6.5"
48
+ })
49
+ ]
50
+ })
51
+ }),
52
+ file && /*#__PURE__*/ jsxs(Fragment, {
53
+ children: [
54
+ /*#__PURE__*/ jsx(Tooltip, {
55
+ label: file.name,
56
+ openDelay: 500,
57
+ children: /*#__PURE__*/ jsx(ActionIcon.GroupSection, {
58
+ variant: "default",
59
+ size: "lg",
60
+ children: /*#__PURE__*/ jsx(FileIcon, {
61
+ mimeType: file.type
62
+ })
63
+ })
64
+ }),
65
+ /*#__PURE__*/ jsx(ActionIcon, {
66
+ size: "lg",
67
+ variant: "default",
68
+ classNames: {
69
+ root: 'rolder-prompt-input-file-action-action'
70
+ },
71
+ onClick: ()=>{
72
+ resetRef.current?.();
73
+ setFile(void 0);
74
+ },
75
+ children: /*#__PURE__*/ jsxs("svg", {
76
+ xmlns: "http://www.w3.org/2000/svg",
77
+ width: "24",
78
+ height: "24",
79
+ viewBox: "0 0 24 24",
80
+ fill: "none",
81
+ stroke: "currentColor",
82
+ strokeWidth: "1.5",
83
+ strokeLinecap: "round",
84
+ strokeLinejoin: "round",
85
+ role: "img",
86
+ "aria-label": "Trash",
87
+ children: [
88
+ /*#__PURE__*/ jsx("path", {
89
+ stroke: "none",
90
+ d: "M0 0h24v24H0z",
91
+ fill: "none"
92
+ }),
93
+ /*#__PURE__*/ jsx("path", {
94
+ d: "M4 7l16 0"
95
+ }),
96
+ /*#__PURE__*/ jsx("path", {
97
+ d: "M10 11l0 6"
98
+ }),
99
+ /*#__PURE__*/ jsx("path", {
100
+ d: "M14 11l0 6"
101
+ }),
102
+ /*#__PURE__*/ jsx("path", {
103
+ d: "M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"
104
+ }),
105
+ /*#__PURE__*/ jsx("path", {
106
+ d: "M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"
107
+ })
108
+ ]
109
+ })
110
+ })
111
+ ]
112
+ })
113
+ ]
114
+ })
115
+ });
116
+ };
117
+ export { File };
@@ -0,0 +1,3 @@
1
+ export declare const FileIcon: ({ mimeType }: {
2
+ mimeType: string;
3
+ }) => import("react/jsx-runtime").JSX.Element;