@lobehub/chat 1.44.3 → 1.45.1

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 (320) hide show
  1. package/.remarkrc.mdx.js +6 -0
  2. package/CHANGELOG.md +50 -0
  3. package/changelog/v1.json +18 -0
  4. package/docs/changelog/2023-09-09-plugin-system.mdx +5 -0
  5. package/docs/changelog/2023-09-09-plugin-system.zh-CN.mdx +5 -0
  6. package/docs/changelog/2023-11-14-gpt4-vision.mdx +6 -0
  7. package/docs/changelog/2023-11-14-gpt4-vision.zh-CN.mdx +6 -0
  8. package/docs/changelog/2023-11-19-tts-stt.mdx +6 -0
  9. package/docs/changelog/2023-11-19-tts-stt.zh-CN.mdx +7 -0
  10. package/docs/changelog/2023-12-22-dalle-3.mdx +6 -0
  11. package/docs/changelog/2023-12-22-dalle-3.zh-CN.mdx +4 -0
  12. package/docs/changelog/2024-02-08-sso-oauth.mdx +6 -0
  13. package/docs/changelog/2024-02-08-sso-oauth.zh-CN.mdx +6 -0
  14. package/docs/changelog/2024-02-14-ollama.mdx +6 -0
  15. package/docs/changelog/2024-02-14-ollama.zh-CN.mdx +5 -0
  16. package/docs/changelog/2024-06-19-lobe-chat-v1.mdx +6 -0
  17. package/docs/changelog/2024-06-19-lobe-chat-v1.zh-CN.mdx +5 -0
  18. package/docs/changelog/2024-07-19-gpt-4o-mini.mdx +5 -0
  19. package/docs/changelog/2024-07-19-gpt-4o-mini.zh-CN.mdx +4 -0
  20. package/docs/changelog/2024-08-02-lobe-chat-database-docker.mdx +6 -0
  21. package/docs/changelog/2024-08-02-lobe-chat-database-docker.zh-CN.mdx +5 -0
  22. package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.mdx +6 -0
  23. package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.zh-CN.mdx +5 -0
  24. package/docs/changelog/2024-09-13-openai-o1-models.mdx +6 -0
  25. package/docs/changelog/2024-09-13-openai-o1-models.zh-CN.mdx +6 -0
  26. package/docs/changelog/2024-09-20-artifacts.mdx +6 -0
  27. package/docs/changelog/2024-09-20-artifacts.zh-CN.mdx +6 -0
  28. package/docs/changelog/2024-10-27-pin-assistant.mdx +5 -0
  29. package/docs/changelog/2024-10-27-pin-assistant.zh-CN.mdx +4 -0
  30. package/docs/changelog/2024-11-06-share-text-json.mdx +4 -0
  31. package/docs/changelog/2024-11-06-share-text-json.zh-CN.mdx +4 -0
  32. package/docs/changelog/2024-11-25-november-providers.mdx +7 -0
  33. package/docs/changelog/2024-11-25-november-providers.zh-CN.mdx +7 -0
  34. package/docs/changelog/2024-11-27-forkable-chat.mdx +4 -0
  35. package/docs/changelog/2024-11-27-forkable-chat.zh-CN.mdx +5 -0
  36. package/docs/changelog/2025-01-03-user-profile.mdx +5 -0
  37. package/docs/changelog/2025-01-03-user-profile.zh-CN.mdx +4 -1
  38. package/docs/self-hosting/advanced/auth/clerk.mdx +25 -41
  39. package/docs/self-hosting/advanced/auth/clerk.zh-CN.mdx +23 -37
  40. package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +31 -58
  41. package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +30 -57
  42. package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +38 -38
  43. package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +37 -38
  44. package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +26 -31
  45. package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +25 -30
  46. package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +74 -75
  47. package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +72 -73
  48. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +24 -25
  49. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +23 -24
  50. package/docs/self-hosting/advanced/auth/next-auth/github.mdx +46 -73
  51. package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +43 -70
  52. package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +28 -37
  53. package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +28 -37
  54. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +36 -49
  55. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +30 -43
  56. package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +13 -14
  57. package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +14 -15
  58. package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +35 -69
  59. package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +34 -68
  60. package/docs/self-hosting/advanced/auth.mdx +14 -13
  61. package/docs/self-hosting/advanced/auth.zh-CN.mdx +15 -14
  62. package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +15 -15
  63. package/docs/self-hosting/advanced/knowledge-base.mdx +14 -3
  64. package/docs/self-hosting/advanced/knowledge-base.zh-CN.mdx +12 -3
  65. package/docs/self-hosting/advanced/model-list.zh-CN.mdx +5 -5
  66. package/docs/self-hosting/advanced/s3/cloudflare-r2.mdx +52 -81
  67. package/docs/self-hosting/advanced/s3/cloudflare-r2.zh-CN.mdx +51 -80
  68. package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +20 -34
  69. package/docs/self-hosting/advanced/s3/tencent-cloud.zh-CN.mdx +28 -43
  70. package/docs/self-hosting/advanced/s3.mdx +30 -34
  71. package/docs/self-hosting/advanced/s3.zh-CN.mdx +28 -33
  72. package/docs/self-hosting/advanced/settings-url-share.mdx +6 -6
  73. package/docs/self-hosting/advanced/settings-url-share.zh-CN.mdx +19 -19
  74. package/docs/self-hosting/advanced/upstream-sync.mdx +73 -89
  75. package/docs/self-hosting/advanced/upstream-sync.zh-CN.mdx +71 -87
  76. package/docs/self-hosting/advanced/webrtc.mdx +14 -21
  77. package/docs/self-hosting/advanced/webrtc.zh-CN.mdx +19 -26
  78. package/docs/self-hosting/environment-variables/analytics.zh-CN.mdx +0 -3
  79. package/docs/self-hosting/environment-variables/auth.zh-CN.mdx +1 -1
  80. package/docs/self-hosting/environment-variables/basic.mdx +13 -13
  81. package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +15 -15
  82. package/docs/self-hosting/environment-variables/model-provider.mdx +1 -1
  83. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +1 -1
  84. package/docs/self-hosting/environment-variables/s3.mdx +3 -4
  85. package/docs/self-hosting/environment-variables/s3.zh-CN.mdx +5 -7
  86. package/docs/self-hosting/environment-variables.mdx +8 -4
  87. package/docs/self-hosting/environment-variables.zh-CN.mdx +4 -0
  88. package/docs/self-hosting/examples/azure-openai.mdx +9 -12
  89. package/docs/self-hosting/examples/azure-openai.zh-CN.mdx +8 -11
  90. package/docs/self-hosting/examples/ollama.mdx +8 -7
  91. package/docs/self-hosting/examples/ollama.zh-CN.mdx +8 -7
  92. package/docs/self-hosting/platform/alibaba-cloud.mdx +5 -7
  93. package/docs/self-hosting/platform/alibaba-cloud.zh-CN.mdx +5 -7
  94. package/docs/self-hosting/platform/btpanel.mdx +3 -2
  95. package/docs/self-hosting/platform/btpanel.zh-CN.mdx +3 -3
  96. package/docs/self-hosting/platform/docker-compose.mdx +75 -85
  97. package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +75 -85
  98. package/docs/self-hosting/platform/docker.mdx +87 -92
  99. package/docs/self-hosting/platform/docker.zh-CN.mdx +96 -115
  100. package/docs/self-hosting/platform/netlify.mdx +44 -94
  101. package/docs/self-hosting/platform/netlify.zh-CN.mdx +40 -90
  102. package/docs/self-hosting/platform/railway.mdx +6 -7
  103. package/docs/self-hosting/platform/railway.zh-CN.mdx +6 -7
  104. package/docs/self-hosting/platform/repocloud.mdx +6 -7
  105. package/docs/self-hosting/platform/repocloud.zh-CN.mdx +6 -7
  106. package/docs/self-hosting/platform/sealos.mdx +6 -7
  107. package/docs/self-hosting/platform/sealos.zh-CN.mdx +6 -7
  108. package/docs/self-hosting/platform/vercel.mdx +7 -8
  109. package/docs/self-hosting/platform/vercel.zh-CN.mdx +7 -8
  110. package/docs/self-hosting/platform/zeabur.mdx +29 -32
  111. package/docs/self-hosting/platform/zeabur.zh-CN.mdx +29 -32
  112. package/docs/self-hosting/server-database/docker-compose.mdx +44 -71
  113. package/docs/self-hosting/server-database/docker-compose.zh-CN.mdx +44 -71
  114. package/docs/self-hosting/server-database/docker.mdx +84 -88
  115. package/docs/self-hosting/server-database/docker.zh-CN.mdx +87 -91
  116. package/docs/self-hosting/server-database/dokploy.mdx +18 -1
  117. package/docs/self-hosting/server-database/dokploy.zh-CN.mdx +84 -68
  118. package/docs/self-hosting/server-database/repocloud.mdx +7 -9
  119. package/docs/self-hosting/server-database/repocloud.zh-CN.mdx +9 -11
  120. package/docs/self-hosting/server-database/vercel.mdx +158 -243
  121. package/docs/self-hosting/server-database/vercel.zh-CN.mdx +137 -205
  122. package/docs/self-hosting/server-database/zeabur.mdx +21 -23
  123. package/docs/self-hosting/server-database/zeabur.zh-CN.mdx +20 -22
  124. package/docs/self-hosting/server-database.mdx +34 -36
  125. package/docs/self-hosting/server-database.zh-CN.mdx +34 -37
  126. package/docs/self-hosting/start.mdx +1 -4
  127. package/docs/self-hosting/start.zh-CN.mdx +1 -1
  128. package/docs/usage/agents/agent-organization.mdx +5 -21
  129. package/docs/usage/agents/agent-organization.zh-CN.mdx +5 -21
  130. package/docs/usage/agents/concepts.mdx +4 -4
  131. package/docs/usage/agents/concepts.zh-CN.mdx +4 -4
  132. package/docs/usage/agents/custom-agent.mdx +2 -2
  133. package/docs/usage/agents/custom-agent.zh-CN.mdx +2 -2
  134. package/docs/usage/agents/model.mdx +4 -4
  135. package/docs/usage/agents/model.zh-CN.mdx +6 -6
  136. package/docs/usage/agents/prompt.mdx +5 -6
  137. package/docs/usage/agents/prompt.zh-CN.mdx +5 -6
  138. package/docs/usage/agents/topics.mdx +2 -2
  139. package/docs/usage/agents/topics.zh-CN.mdx +2 -2
  140. package/docs/usage/features/agent-market.mdx +2 -2
  141. package/docs/usage/features/agent-market.zh-CN.mdx +2 -2
  142. package/docs/usage/features/auth.mdx +1 -5
  143. package/docs/usage/features/auth.zh-CN.mdx +1 -5
  144. package/docs/usage/features/database.mdx +1 -5
  145. package/docs/usage/features/database.zh-CN.mdx +1 -5
  146. package/docs/usage/features/local-llm.mdx +2 -6
  147. package/docs/usage/features/local-llm.zh-CN.mdx +2 -6
  148. package/docs/usage/features/mobile.mdx +1 -5
  149. package/docs/usage/features/mobile.zh-CN.mdx +1 -5
  150. package/docs/usage/features/multi-ai-providers.mdx +3 -11
  151. package/docs/usage/features/multi-ai-providers.zh-CN.mdx +3 -11
  152. package/docs/usage/features/plugin-system.mdx +9 -10
  153. package/docs/usage/features/plugin-system.zh-CN.mdx +9 -10
  154. package/docs/usage/features/pwa.mdx +11 -25
  155. package/docs/usage/features/pwa.zh-CN.mdx +11 -25
  156. package/docs/usage/features/text-to-image.mdx +2 -2
  157. package/docs/usage/features/text-to-image.zh-CN.mdx +2 -2
  158. package/docs/usage/features/theme.mdx +1 -6
  159. package/docs/usage/features/theme.zh-CN.mdx +1 -6
  160. package/docs/usage/features/tts.mdx +3 -7
  161. package/docs/usage/features/tts.zh-CN.mdx +3 -7
  162. package/docs/usage/features/vision.mdx +2 -2
  163. package/docs/usage/features/vision.zh-CN.mdx +2 -2
  164. package/docs/usage/foundation/basic.mdx +7 -18
  165. package/docs/usage/foundation/basic.zh-CN.mdx +6 -16
  166. package/docs/usage/foundation/share.mdx +3 -13
  167. package/docs/usage/foundation/share.zh-CN.mdx +3 -13
  168. package/docs/usage/foundation/text2image.mdx +3 -12
  169. package/docs/usage/foundation/text2image.zh-CN.mdx +3 -12
  170. package/docs/usage/foundation/translate.mdx +3 -13
  171. package/docs/usage/foundation/translate.zh-CN.mdx +3 -13
  172. package/docs/usage/foundation/tts-stt.mdx +3 -12
  173. package/docs/usage/foundation/tts-stt.zh-CN.mdx +3 -12
  174. package/docs/usage/foundation/vision.mdx +4 -16
  175. package/docs/usage/foundation/vision.zh-CN.mdx +4 -16
  176. package/docs/usage/plugins/basic-usage.mdx +7 -30
  177. package/docs/usage/plugins/basic-usage.zh-CN.mdx +7 -30
  178. package/docs/usage/plugins/development.mdx +30 -78
  179. package/docs/usage/plugins/development.zh-CN.mdx +31 -79
  180. package/docs/usage/plugins/store.mdx +2 -10
  181. package/docs/usage/plugins/store.zh-CN.mdx +2 -10
  182. package/docs/usage/providers/ai21.mdx +17 -33
  183. package/docs/usage/providers/ai21.zh-CN.mdx +17 -33
  184. package/docs/usage/providers/ai360.mdx +17 -33
  185. package/docs/usage/providers/ai360.zh-CN.mdx +20 -36
  186. package/docs/usage/providers/anthropic.mdx +23 -45
  187. package/docs/usage/providers/anthropic.zh-CN.mdx +22 -44
  188. package/docs/usage/providers/azure.mdx +21 -51
  189. package/docs/usage/providers/azure.zh-CN.mdx +19 -48
  190. package/docs/usage/providers/baichuan.mdx +16 -34
  191. package/docs/usage/providers/baichuan.zh-CN.mdx +15 -33
  192. package/docs/usage/providers/bedrock.mdx +38 -87
  193. package/docs/usage/providers/bedrock.zh-CN.mdx +37 -86
  194. package/docs/usage/providers/cloudflare.mdx +25 -48
  195. package/docs/usage/providers/cloudflare.zh-CN.mdx +24 -45
  196. package/docs/usage/providers/deepseek.mdx +25 -51
  197. package/docs/usage/providers/deepseek.zh-CN.mdx +24 -50
  198. package/docs/usage/providers/fireworksai.mdx +23 -43
  199. package/docs/usage/providers/fireworksai.zh-CN.mdx +21 -41
  200. package/docs/usage/providers/gemini.mdx +20 -46
  201. package/docs/usage/providers/gemini.zh-CN.mdx +20 -46
  202. package/docs/usage/providers/giteeai.mdx +24 -45
  203. package/docs/usage/providers/giteeai.zh-CN.mdx +22 -43
  204. package/docs/usage/providers/github.mdx +19 -45
  205. package/docs/usage/providers/github.zh-CN.mdx +19 -44
  206. package/docs/usage/providers/groq.mdx +12 -29
  207. package/docs/usage/providers/groq.zh-CN.mdx +11 -28
  208. package/docs/usage/providers/hunyuan.mdx +19 -39
  209. package/docs/usage/providers/hunyuan.zh-CN.mdx +18 -38
  210. package/docs/usage/providers/internlm.mdx +21 -38
  211. package/docs/usage/providers/internlm.zh-CN.mdx +19 -36
  212. package/docs/usage/providers/minimax.mdx +24 -50
  213. package/docs/usage/providers/minimax.zh-CN.mdx +22 -48
  214. package/docs/usage/providers/mistral.mdx +21 -39
  215. package/docs/usage/providers/mistral.zh-CN.mdx +20 -38
  216. package/docs/usage/providers/moonshot.mdx +20 -38
  217. package/docs/usage/providers/moonshot.zh-CN.mdx +19 -37
  218. package/docs/usage/providers/novita.mdx +20 -43
  219. package/docs/usage/providers/novita.zh-CN.mdx +19 -42
  220. package/docs/usage/providers/ollama/gemma.mdx +12 -29
  221. package/docs/usage/providers/ollama/gemma.zh-CN.mdx +12 -30
  222. package/docs/usage/providers/ollama/qwen.mdx +17 -32
  223. package/docs/usage/providers/ollama/qwen.zh-CN.mdx +12 -27
  224. package/docs/usage/providers/ollama.mdx +67 -99
  225. package/docs/usage/providers/ollama.zh-CN.mdx +67 -99
  226. package/docs/usage/providers/openai.mdx +42 -56
  227. package/docs/usage/providers/openai.zh-CN.mdx +39 -52
  228. package/docs/usage/providers/openrouter.mdx +48 -84
  229. package/docs/usage/providers/openrouter.zh-CN.mdx +31 -67
  230. package/docs/usage/providers/perplexity.mdx +16 -34
  231. package/docs/usage/providers/perplexity.zh-CN.mdx +16 -34
  232. package/docs/usage/providers/qwen.mdx +26 -52
  233. package/docs/usage/providers/qwen.zh-CN.mdx +25 -51
  234. package/docs/usage/providers/sensenova.mdx +24 -45
  235. package/docs/usage/providers/sensenova.zh-CN.mdx +22 -43
  236. package/docs/usage/providers/siliconcloud.mdx +17 -33
  237. package/docs/usage/providers/siliconcloud.zh-CN.mdx +17 -33
  238. package/docs/usage/providers/spark.mdx +20 -40
  239. package/docs/usage/providers/spark.zh-CN.mdx +19 -39
  240. package/docs/usage/providers/stepfun.mdx +17 -35
  241. package/docs/usage/providers/stepfun.zh-CN.mdx +17 -35
  242. package/docs/usage/providers/taichu.mdx +16 -34
  243. package/docs/usage/providers/taichu.zh-CN.mdx +15 -33
  244. package/docs/usage/providers/togetherai.mdx +18 -40
  245. package/docs/usage/providers/togetherai.zh-CN.mdx +18 -40
  246. package/docs/usage/providers/upstage.mdx +18 -34
  247. package/docs/usage/providers/upstage.zh-CN.mdx +17 -33
  248. package/docs/usage/providers/wenxin.mdx +22 -42
  249. package/docs/usage/providers/wenxin.zh-CN.mdx +20 -40
  250. package/docs/usage/providers/xai.mdx +21 -38
  251. package/docs/usage/providers/xai.zh-CN.mdx +20 -37
  252. package/docs/usage/providers/zeroone.mdx +22 -48
  253. package/docs/usage/providers/zeroone.zh-CN.mdx +22 -48
  254. package/docs/usage/providers/zhipu.mdx +17 -35
  255. package/docs/usage/providers/zhipu.zh-CN.mdx +18 -34
  256. package/docs/usage/providers.mdx +1 -6
  257. package/docs/usage/providers.zh-CN.mdx +1 -6
  258. package/docs/usage/start.mdx +4 -18
  259. package/docs/usage/start.zh-CN.mdx +2 -19
  260. package/docs/usage/tools-calling/anthropic.mdx +18 -51
  261. package/docs/usage/tools-calling/anthropic.zh-CN.mdx +22 -55
  262. package/docs/usage/tools-calling/google.mdx +16 -23
  263. package/docs/usage/tools-calling/google.zh-CN.mdx +17 -24
  264. package/docs/usage/tools-calling/groq.mdx +9 -0
  265. package/docs/usage/tools-calling/groq.zh-CN.mdx +44 -70
  266. package/docs/usage/tools-calling/moonshot.mdx +9 -0
  267. package/docs/usage/tools-calling/openai.mdx +19 -44
  268. package/docs/usage/tools-calling/openai.zh-CN.mdx +20 -45
  269. package/docs/usage/tools-calling.mdx +9 -0
  270. package/docs/usage/tools-calling.zh-CN.mdx +60 -68
  271. package/next.config.ts +1 -0
  272. package/package.json +48 -41
  273. package/scripts/mdxWorkflow/index.ts +7 -0
  274. package/src/app/(main)/(mobile)/me/(home)/features/Header.tsx +2 -1
  275. package/src/app/(main)/(mobile)/me/data/features/Header.tsx +1 -1
  276. package/src/app/(main)/(mobile)/me/profile/features/Header.tsx +1 -1
  277. package/src/app/(main)/(mobile)/me/settings/features/Header.tsx +1 -1
  278. package/src/app/(main)/@nav/_layout/Mobile.tsx +2 -1
  279. package/src/app/(main)/chat/(workspace)/@topic/features/SystemRole/SystemRoleContent.tsx +2 -1
  280. package/src/app/(main)/chat/(workspace)/@topic/features/TopicListContent/ByTimeMode/GroupItem.tsx +2 -2
  281. package/src/app/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/Main.tsx +2 -1
  282. package/src/app/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/index.tsx +1 -1
  283. package/src/app/(main)/chat/(workspace)/_layout/Mobile/ChatHeader/ChatHeaderTitle.tsx +2 -1
  284. package/src/app/(main)/chat/(workspace)/_layout/Mobile/ChatHeader/index.tsx +1 -1
  285. package/src/app/(main)/chat/@session/_layout/Mobile/SessionHeader.tsx +2 -1
  286. package/src/app/(main)/chat/settings/_layout/Desktop/Header.tsx +1 -1
  287. package/src/app/(main)/chat/settings/_layout/Mobile/Header.tsx +1 -1
  288. package/src/app/(main)/discover/(detail)/provider/[slug]/features/InfoSidebar/SuggestionItem.tsx +8 -6
  289. package/src/app/(main)/discover/(list)/_layout/Desktop/Nav.tsx +1 -1
  290. package/src/app/(main)/discover/(list)/_layout/Mobile/Header.tsx +2 -1
  291. package/src/app/(main)/discover/_layout/Desktop/Header.tsx +1 -1
  292. package/src/app/(main)/discover/components/VirtuosoGridList/index.tsx +9 -5
  293. package/src/app/(main)/discover/search/_layout/Mobile/Header.tsx +1 -1
  294. package/src/app/(main)/files/(content)/@menu/features/KnowledgeBase/EmptyStatus.tsx +21 -13
  295. package/src/app/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +1 -1
  296. package/src/app/(main)/settings/sync/features/DeviceInfo/SystemIcon.tsx +2 -0
  297. package/src/components/Branding/ProductLogo/Custom.tsx +19 -20
  298. package/src/components/BrowserIcon/index.tsx +19 -30
  299. package/src/components/BubblesLoading/index.tsx +31 -23
  300. package/src/components/FunctionModal/createModalHooks.ts +6 -3
  301. package/src/components/StopLoading.tsx +10 -7
  302. package/src/features/ChatInput/Desktop/InputArea/index.tsx +2 -2
  303. package/src/features/InitClientDB/EnableModal.tsx +2 -2
  304. package/src/features/InitClientDB/{PGliteSVG.tsx → PGliteIcon.tsx} +17 -11
  305. package/src/features/ShareModal/ShareImage/index.tsx +32 -22
  306. package/src/features/ShareModal/ShareJSON/Preview.tsx +2 -2
  307. package/src/features/ShareModal/ShareJSON/index.tsx +49 -37
  308. package/src/features/ShareModal/ShareText/Preview.tsx +4 -1
  309. package/src/features/ShareModal/ShareText/index.tsx +49 -38
  310. package/src/features/ShareModal/index.tsx +1 -1
  311. package/src/features/ShareModal/style.ts +30 -0
  312. package/src/utils/colorUtils.ts +1 -1
  313. package/src/components/BrowserIcon/components/Brave.tsx +0 -56
  314. package/src/components/BrowserIcon/components/Chrome.tsx +0 -14
  315. package/src/components/BrowserIcon/components/Chromium.tsx +0 -14
  316. package/src/components/BrowserIcon/components/Edge.tsx +0 -36
  317. package/src/components/BrowserIcon/components/Firefox.tsx +0 -38
  318. package/src/components/BrowserIcon/components/Opera.tsx +0 -19
  319. package/src/components/BrowserIcon/components/Safari.tsx +0 -23
  320. package/src/components/BrowserIcon/components/Samsung.tsx +0 -21
@@ -14,6 +14,7 @@ import { useChatStore } from '@/store/chat';
14
14
  import { chatSelectors, topicSelectors } from '@/store/chat/selectors';
15
15
  import { exportFile } from '@/utils/client/exportFile';
16
16
 
17
+ import { useStyles } from '../style';
17
18
  import Preview from './Preview';
18
19
  import { generateMessages } from './generateMessages';
19
20
  import { FieldType } from './type';
@@ -26,6 +27,7 @@ const DEFAULT_FIELD_VALUE: FieldType = {
26
27
  const ShareImage = memo(() => {
27
28
  const [fieldValue, setFieldValue] = useState(DEFAULT_FIELD_VALUE);
28
29
  const { t } = useTranslation(['chat', 'common']);
30
+ const { styles } = useStyles();
29
31
  const { message } = App.useApp();
30
32
 
31
33
  const settings: FormItemProps[] = [
@@ -54,45 +56,55 @@ const ShareImage = memo(() => {
54
56
  const title = topic?.title || t('shareModal.exportTitle');
55
57
 
56
58
  const isMobile = useIsMobile();
59
+
60
+ const button = (
61
+ <>
62
+ <Button
63
+ block
64
+ icon={<Icon icon={CopyIcon} />}
65
+ onClick={async () => {
66
+ await copyToClipboard(content);
67
+ message.success(t('copySuccess', { defaultValue: 'Copy Success', ns: 'common' }));
68
+ }}
69
+ size={isMobile ? undefined : 'large'}
70
+ type={'primary'}
71
+ >
72
+ {t('copy', { ns: 'common' })}
73
+ </Button>
74
+ <Button
75
+ block
76
+ onClick={() => {
77
+ exportFile(content, `${title}.json`);
78
+ }}
79
+ size={isMobile ? undefined : 'large'}
80
+ variant={'filled'}
81
+ >
82
+ {t('shareModal.downloadFile')}
83
+ </Button>
84
+ </>
85
+ );
86
+
57
87
  return (
58
- <Flexbox gap={16} horizontal={!isMobile}>
59
- <Preview content={content} />
60
- <Flexbox gap={16}>
61
- <Form
62
- initialValues={DEFAULT_FIELD_VALUE}
63
- items={settings}
64
- itemsType={'flat'}
65
- onValuesChange={(_, v) => setFieldValue(v)}
66
- {...FORM_STYLE}
67
- itemMinWidth={320}
68
- />
69
- <Button
70
- block
71
- icon={<Icon icon={CopyIcon} />}
72
- onClick={async () => {
73
- await copyToClipboard(content);
74
- message.success(t('copySuccess', { defaultValue: 'Copy Success', ns: 'common' }));
75
- }}
76
- size={'large'}
77
- style={isMobile ? { bottom: 0, position: 'sticky' } : undefined}
78
- type={'primary'}
79
- >
80
- {t('copy', { ns: 'common' })}
81
- </Button>
82
- {!isMobile && (
83
- <Button
84
- block
85
- onClick={() => {
86
- exportFile(content, `${title}.json`);
87
- }}
88
- size={'large'}
89
- variant={'filled'}
90
- >
91
- {t('shareModal.downloadFile')}
92
- </Button>
93
- )}
88
+ <>
89
+ <Flexbox className={styles.body} gap={16} horizontal={!isMobile}>
90
+ <Preview content={content} />
91
+ <Flexbox className={styles.sidebar} gap={16}>
92
+ <Form
93
+ initialValues={DEFAULT_FIELD_VALUE}
94
+ items={settings}
95
+ itemsType={'flat'}
96
+ onValuesChange={(_, v) => setFieldValue(v)}
97
+ {...FORM_STYLE}
98
+ />
99
+ {!isMobile && button}
100
+ </Flexbox>
94
101
  </Flexbox>
95
- </Flexbox>
102
+ {isMobile && (
103
+ <Flexbox className={styles.footer} gap={8} horizontal>
104
+ {button}
105
+ </Flexbox>
106
+ )}
107
+ </>
96
108
  );
97
109
  });
98
110
 
@@ -1,14 +1,17 @@
1
1
  import { Markdown } from '@lobehub/ui';
2
2
  import { memo } from 'react';
3
3
 
4
+ import { useIsMobile } from '@/hooks/useIsMobile';
5
+
4
6
  import { useContainerStyles } from '../style';
5
7
 
6
8
  const Preview = memo<{ content: string }>(({ content }) => {
7
9
  const { styles } = useContainerStyles();
10
+ const isMobile = useIsMobile();
8
11
 
9
12
  return (
10
13
  <div className={styles.preview} style={{ padding: 12 }}>
11
- <Markdown>{content}</Markdown>
14
+ <Markdown variant={isMobile ? 'chat' : undefined}>{content}</Markdown>
12
15
  </div>
13
16
  );
14
17
  });
@@ -14,6 +14,7 @@ import { useChatStore } from '@/store/chat';
14
14
  import { chatSelectors, topicSelectors } from '@/store/chat/selectors';
15
15
  import { exportFile } from '@/utils/client/exportFile';
16
16
 
17
+ import { useStyles } from '../style';
17
18
  import Preview from './Preview';
18
19
  import { generateMarkdown } from './template';
19
20
  import { FieldType } from './type';
@@ -28,7 +29,7 @@ const DEFAULT_FIELD_VALUE: FieldType = {
28
29
  const ShareText = memo(() => {
29
30
  const [fieldValue, setFieldValue] = useState(DEFAULT_FIELD_VALUE);
30
31
  const { t } = useTranslation(['chat', 'common']);
31
-
32
+ const { styles } = useStyles();
32
33
  const { message } = App.useApp();
33
34
  const settings: FormItemProps[] = [
34
35
  {
@@ -74,45 +75,55 @@ const ShareText = memo(() => {
74
75
  }).replaceAll('\n\n\n', '\n');
75
76
 
76
77
  const isMobile = useIsMobile();
78
+
79
+ const button = (
80
+ <>
81
+ <Button
82
+ block
83
+ icon={<Icon icon={CopyIcon} />}
84
+ onClick={async () => {
85
+ await copyToClipboard(content);
86
+ message.success(t('copySuccess', { defaultValue: 'Copy Success', ns: 'common' }));
87
+ }}
88
+ size={isMobile ? undefined : 'large'}
89
+ type={'primary'}
90
+ >
91
+ {t('copy', { ns: 'common' })}
92
+ </Button>
93
+ <Button
94
+ block
95
+ onClick={() => {
96
+ exportFile(content, `${title}.md`);
97
+ }}
98
+ size={isMobile ? undefined : 'large'}
99
+ variant={'filled'}
100
+ >
101
+ {t('shareModal.downloadFile')}
102
+ </Button>
103
+ </>
104
+ );
105
+
77
106
  return (
78
- <Flexbox gap={16} horizontal={!isMobile}>
79
- <Preview content={content} />
80
- <Flexbox gap={16}>
81
- <Form
82
- initialValues={DEFAULT_FIELD_VALUE}
83
- items={settings}
84
- itemsType={'flat'}
85
- onValuesChange={(_, v) => setFieldValue(v)}
86
- {...FORM_STYLE}
87
- itemMinWidth={320}
88
- />
89
- <Button
90
- block
91
- icon={<Icon icon={CopyIcon} />}
92
- onClick={async () => {
93
- await copyToClipboard(content);
94
- message.success(t('copySuccess', { defaultValue: 'Copy Success', ns: 'common' }));
95
- }}
96
- size={'large'}
97
- style={isMobile ? { bottom: 0, position: 'sticky' } : undefined}
98
- type={'primary'}
99
- >
100
- {t('copy', { ns: 'common' })}
101
- </Button>
102
- {!isMobile && (
103
- <Button
104
- block
105
- onClick={() => {
106
- exportFile(content, `${title}.md`);
107
- }}
108
- size={'large'}
109
- variant={'filled'}
110
- >
111
- {t('shareModal.downloadFile')}
112
- </Button>
113
- )}
107
+ <>
108
+ <Flexbox className={styles.body} gap={16} horizontal={!isMobile}>
109
+ <Preview content={content} />
110
+ <Flexbox className={styles.sidebar} gap={16}>
111
+ <Form
112
+ initialValues={DEFAULT_FIELD_VALUE}
113
+ items={settings}
114
+ itemsType={'flat'}
115
+ onValuesChange={(_, v) => setFieldValue(v)}
116
+ {...FORM_STYLE}
117
+ />
118
+ {!isMobile && button}
119
+ </Flexbox>
114
120
  </Flexbox>
115
- </Flexbox>
121
+ {isMobile && (
122
+ <Flexbox className={styles.footer} gap={8} horizontal>
123
+ {button}
124
+ </Flexbox>
125
+ )}
126
+ </>
116
127
  );
117
128
  });
118
129
 
@@ -58,7 +58,7 @@ const ShareModal = memo<ModalProps>(({ onCancel, open }) => {
58
58
  style={{ width: '100%' }}
59
59
  value={tab}
60
60
  />
61
- {tab === Tab.Screenshot && <ShareImage />}
61
+ {tab === Tab.Screenshot && <ShareImage mobile={isMobile} />}
62
62
  {tab === Tab.Text && <ShareText />}
63
63
  {tab === Tab.JSON && <ShareJSON />}
64
64
  </Flexbox>
@@ -28,3 +28,33 @@ export const useContainerStyles = createStyles(({ css, token, stylish, cx, respo
28
28
  `,
29
29
  ),
30
30
  }));
31
+
32
+ export const useStyles = createStyles(({ responsive, token, css }) => ({
33
+ body: css`
34
+ ${responsive.mobile} {
35
+ padding-block-end: 68px;
36
+ }
37
+ `,
38
+ footer: css`
39
+ ${responsive.mobile} {
40
+ position: absolute;
41
+ inset-block-end: 0;
42
+ inset-inline: 0;
43
+
44
+ width: 100%;
45
+ margin: 0;
46
+ padding: 16px;
47
+
48
+ background: ${token.colorBgContainer};
49
+ }
50
+ `,
51
+ sidebar: css`
52
+ flex: none;
53
+ width: max(240px, 25%);
54
+ ${responsive.mobile} {
55
+ flex: 1;
56
+ width: unset;
57
+ margin-inline: -16px;
58
+ }
59
+ `,
60
+ }));
@@ -7,7 +7,7 @@ export const convertAlphaToSolid = (foreground: string, background: string): str
7
7
  const alpha = fgColor.alpha();
8
8
  const alphaComplement = 1 - alpha;
9
9
 
10
- const mixedColor = [
10
+ const mixedColor: [number, number, number] = [
11
11
  fgColor.get('rgb.r') * alpha + bgColor.get('rgb.r') * alphaComplement,
12
12
  fgColor.get('rgb.g') * alpha + bgColor.get('rgb.g') * alphaComplement,
13
13
  fgColor.get('rgb.b') * alpha + bgColor.get('rgb.b') * alphaComplement,
@@ -1,56 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg viewBox="0 0 112.4 131.9" xmlns="http://www.w3.org/2000/svg" {...props}>
8
- <defs>
9
- <linearGradient
10
- gradientTransform="matrix(112.31 0 0 -131.86 53355.92 89180.8)"
11
- gradientUnits="userSpaceOnUse"
12
- id="prefix__a"
13
- x1={-475.07}
14
- x2={-474.07}
15
- y1={675.83}
16
- y2={675.83}
17
- >
18
- <stop offset={0} stopColor="#f50" />
19
- <stop offset={0.41} stopColor="#f50" />
20
- <stop offset={0.58} stopColor="#ff2000" />
21
- <stop offset={1} stopColor="#ff2000" />
22
- </linearGradient>
23
- <linearGradient
24
- gradientTransform="matrix(93.22 0 0 -23.76 44217.1 15672.73)"
25
- gradientUnits="userSpaceOnUse"
26
- id="prefix__b"
27
- x1={-474.21}
28
- x2={-473.23}
29
- y1={659.13}
30
- y2={659.13}
31
- >
32
- <stop offset={0} stopColor="#ff452a" />
33
- <stop offset={1} stopColor="#ff2000" />
34
- </linearGradient>
35
- </defs>
36
- <g data-name="Calque 2">
37
- <g data-name="Layer 1">
38
- <g data-name="build-icons/Stable">
39
- <path
40
- d="M108.4 31.6l3.1-7.6s-3.9-4.2-8.7-9-14.9-2-14.9-2L76.4 0H35.9L24.4 13.1s-10.1-2.8-14.9 2-8.7 9-8.7 9l3.1 7.6L0 42.9s11.6 43.8 12.9 49.2c2.7 10.5 4.5 14.6 12.1 20s21.3 14.6 23.6 16 5.1 3.8 7.6 3.8 5.3-2.4 7.6-3.8 16-10.7 23.6-16 9.4-9.4 12.1-20c1.4-5.4 12.9-49.2 12.9-49.2z"
41
- fill="url(#prefix__a)"
42
- />
43
- <path
44
- d="M84.7 21.4s14.8 17.9 14.8 21.8-1.9 4.8-3.8 6.8-10.1 10.7-11.1 11.8-3.2 2.8-2 5.9 3.2 6.9 1.1 10.9-5.7 6.6-8 6.1-7.8-3.3-9.8-4.6-8.3-6.5-8.3-8.5 6.6-5.6 7.8-6.4 6.7-4 6.8-5.2.1-1.6-1.6-4.7-4.6-7.2-4.1-9.9 5.2-4.1 8.6-5.4 9.9-3.7 10.7-4.1.6-.7-1.9-1-9.4-1.2-12.6-.3-8.5 2.2-9 2.9-.8.7-.4 3.2 2.8 14.2 3 16.3.7 3.5-1.6 4a56.78 56.78 0 01-7.3 1.4 56.78 56.78 0 01-7.3-1.4c-2.2-.5-1.8-1.9-1.6-4s2.5-13.8 3-16.3.1-2.5-.4-3.2-5.8-2-9-2.9-10.1 0-12.6.3-2.7.6-1.9 1 7.3 2.8 10.7 4.1 8.1 2.7 8.6 5.4-2.4 6.8-4.1 9.9-1.7 3.4-1.6 4.7 5.6 4.4 6.8 5.2 7.8 4.4 7.8 6.4-6.3 7.2-8.3 8.5-7.4 4.1-9.8 4.6-5.9-2.2-8-6.1-.2-7.8 1.1-10.9-.9-4.7-2-5.9c-.8-1.2-8.9-9.9-10.8-11.8s-3.7-3-3.7-6.8 14.8-21.8 14.8-21.8 12.5 2.4 14.2 2.4 5.3-1.4 8.7-2.5a20.16 20.16 0 015.6-1.1 20.16 20.16 0 015.6 1.1c3.4 1.1 7 2.5 8.7 2.5s14.2-2.4 14.2-2.4zM73.6 89.9c.9.6.4 1.7-.5 2.2S61 101.4 60 102.4s-2.7 2.5-3.8 2.5-2.7-1.6-3.8-2.5-12.3-9.7-13.1-10.3-1.4-1.7-.5-2.2 3.8-2 7.7-4.1 8.9-3.8 9.7-3.8 5.7 1.7 9.7 3.8 6.7 3.6 7.7 4.1z"
45
- fill="#fff"
46
- />
47
- <path
48
- d="M87.9 13.1L76.4 0H35.9L24.4 13.1s-10.1-2.8-14.9 2c0 0 13.5-1.2 18.1 6.3 0 0 12.5 2.4 14.2 2.4s5.3-1.4 8.7-2.5a20.16 20.16 0 015.6-1.1 20.16 20.16 0 015.6 1.1c3.4 1.1 7 2.5 8.7 2.5s14.2-2.4 14.2-2.4c4.6-7.5 18.1-6.3 18.1-6.3-4.7-4.8-14.8-2-14.8-2"
49
- fill="url(#prefix__b)"
50
- />
51
- </g>
52
- </g>
53
- </g>
54
- </svg>
55
- );
56
- };
@@ -1,14 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg aria-label="Chrome" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" {...props}>
8
- <path d="M256 140h228a256 256 0 01-240 371.7" fill="#fc4" />
9
- <path d="M357 314L244 511.7A256 256 0 0140 118" fill="#0f9d58" />
10
- <path d="M256 140h228a256 256 1 00-444-22l115 196" fill="#db4437" />
11
- <circle cx={256} cy={256} fill="#4285f4" r={105} stroke="#f1f1f1" strokeWidth={24} />
12
- </svg>
13
- );
14
- };
@@ -1,14 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg aria-label="Chromium" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" {...props}>
8
- <path d="M256 140h228a256 256 0 01-240 371.7" fill="#a2c2fa" />
9
- <path d="M357 314L244 511.7A256 256 0 0140 118" fill="#6199f6" />
10
- <path d="M256 140h228a256 256 1 00-444-22l115 196" fill="#396bd7" />
11
- <circle cx={256} cy={256} fill="#4687f4" r={105} stroke="#f1f1f1" strokeWidth={24} />
12
- </svg>
13
- );
14
- };
@@ -1,36 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg aria-label="Edge" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" {...props}>
8
- <rect fill="#fff" height={512} rx="15%" width={512} />
9
- <radialGradient cx={0.6} cy={0.5} id="prefix__a">
10
- <stop offset={0.8} stopColor="#148" />
11
- <stop offset={1} stopColor="#137" />
12
- </radialGradient>
13
- <radialGradient cx={0.5} cy={0.6} fx={0.2} fy={0.6} id="prefix__b">
14
- <stop offset={0.8} stopColor="#38c" />
15
- <stop offset={1} stopColor="#269" />
16
- </radialGradient>
17
- <linearGradient id="prefix__c" y1={0.5} y2={1}>
18
- <stop offset={0.1} stopColor="#5ad" />
19
- <stop offset={0.6} stopColor="#5c8" />
20
- <stop offset={0.8} stopColor="#7d5" />
21
- </linearGradient>
22
- <path
23
- d="M439 374c-50 77-131 98-163 96-191-9-162-262-47-261-82 52 30 224 195 157 17-12 20 3 15 8"
24
- fill="url(#prefix__a)"
25
- />
26
- <path
27
- d="M311 255c18-82-31-135-129-135S38 212 38 259c0 124 125 253 287 203-134 39-214-116-146-210 46-66 123-68 132 3M411 99h1"
28
- fill="url(#prefix__b)"
29
- />
30
- <path
31
- d="M39 253C51-15 419-30 472 202c14 107-86 149-166 115-42-26 26-20-3-99-48-112-251-103-264 35"
32
- fill="url(#prefix__c)"
33
- />
34
- </svg>
35
- );
36
- };
@@ -1,38 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg aria-label="Firefox" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" {...props}>
8
- <linearGradient id="prefix__a" x1={0.7} x2={0.3} y2={0.8}>
9
- <stop offset={0.3} stopColor="#fd5" />
10
- <stop offset={0.6} stopColor="#f85" />
11
- <stop offset={1} stopColor="#d06" />
12
- </linearGradient>
13
- <radialGradient cx={0.4} cy={0.7} id="prefix__b">
14
- <stop offset={0.4} stopColor="#74d" />
15
- <stop offset={1} stopColor="#a2d" />
16
- </radialGradient>
17
- <linearGradient id="prefix__c" x1={0.8} x2={0.4} y1={0.2} y2={0.8}>
18
- <stop offset={0.2} stopColor="#fd5" />
19
- <stop offset={1} stopColor="#f33" />
20
- </linearGradient>
21
- <g transform="scale(4)">
22
- <path
23
- d="M48 49s-3-9-1-16c-9 2-33 35-33 35a51 48 0 1087-32s5 9 5 15c-3-9-20-25-26-37-24 13-16 39-16 39"
24
- fill="url(#prefix__a)"
25
- />
26
- <circle cx={64} cy={67} fill="url(#prefix__b)" r={26} />
27
- <path
28
- d="M21 45l43 12c-6 11-16 3-23 14a22 22 0 1034-20s33 3 17 42H28m36 25h1"
29
- fill="url(#prefix__a)"
30
- />
31
- <path
32
- d="M35 43c16 0 12 7 29 14-18 6-23-9-38 0 5 9 12 8 12 8 1 43 72 29 67-17a50 46.6 47 01-88 33c-9-18-1-40 16-51"
33
- fill="url(#prefix__c)"
34
- />
35
- </g>
36
- </svg>
37
- );
38
- };
@@ -1,19 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg aria-label="Opera" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" {...props}>
8
- <rect fill="#fff" height={512} rx="15%" width={512} />
9
- <path
10
- d="M185.2 377.2c-23.7-28-39.1-69.6-40.2-116.1v-10.2c1-46.5 16.5-88 40.2-116 30.9-40.1 76.7-65.5 128-65.5 31.4 0 60.9 9.6 86 26.3A214.2 214.2 0 00256.9 41h-.8a215 215 0 10143.3 375.3 155.1 155.1 0 01-86.2 26.3c-51.2 0-97-25.4-127.9-65.4"
11
- fill="#ff1b2d"
12
- />
13
- <path
14
- d="M185.2 134.8c19.7-23.2 45.2-37.3 73-37.3 62.7 0 113.4 71 113.4 158.5s-50.7 158.5-113.3 158.5c-27.9 0-53.3-14-73-37.3 30.8 40 76.6 65.4 127.8 65.4 31.5 0 61-9.6 86.2-26.3 44-39.4 71.7-96.6 71.7-160.3 0-63.7-27.7-121-71.7-160.3A155.1 155.1 0 00313 69.4c-51.2 0-97 25.4-127.9 65.4"
15
- fill="#a70014"
16
- />
17
- </svg>
18
- );
19
- };
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg aria-label="Safari" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" {...props}>
8
- <rect fill="#fff" height={512} rx="15%" width={512} />
9
- <radialGradient id="prefix__a">
10
- <stop offset={0} stopColor="#0bd" />
11
- <stop offset={1} stopColor="#17d" />
12
- </radialGradient>
13
- <g fill="none" stroke="#eee" transform="matrix(4 0 0 4 256 256)">
14
- <circle fill="url(#prefix__a)" r={52.5} strokeWidth={5} />
15
- <circle r={45} strokeDasharray="1.25 8.175" strokeDashoffset={0.5} strokeWidth={5.5} />
16
- <circle r={42.5} strokeDasharray="1.25 7.65" strokeDashoffset={5} strokeWidth={10} />
17
- </g>
18
- <path d="M280 280l-48-48-116 156" fill="#eee" />
19
- <path d="M280 280l-48-48 164-112" fill="#f55" />
20
- <path d="M116 388l28-20-12 20 148-108 112-140-16 8 16-24" opacity={0.3} />
21
- </svg>
22
- );
23
- };
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SVGComponent } from '../types';
4
-
5
- export default ({ ...props }: SVGComponent) => {
6
- return (
7
- <svg
8
- aria-label="Samsung Internet"
9
- viewBox="0 0 512 512"
10
- xmlns="http://www.w3.org/2000/svg"
11
- {...props}
12
- >
13
- <rect fill="#706CF5" height={512} rx="15%" width={512} />
14
- <g fill="none" stroke="#fff" strokeWidth={26}>
15
- <circle cx={256} cy={256} r={179} />
16
- <path d="M46 221a228 80 15 10441 118" stroke="#706CF5" />
17
- <path d="M105 160a228 80 15 10331 87" />
18
- </g>
19
- </svg>
20
- );
21
- };