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

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