@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.
- package/.remarkrc.mdx.js +6 -0
- package/CHANGELOG.md +50 -0
- package/changelog/v1.json +18 -0
- package/docs/changelog/2023-09-09-plugin-system.mdx +5 -0
- package/docs/changelog/2023-09-09-plugin-system.zh-CN.mdx +5 -0
- package/docs/changelog/2023-11-14-gpt4-vision.mdx +6 -0
- package/docs/changelog/2023-11-14-gpt4-vision.zh-CN.mdx +6 -0
- package/docs/changelog/2023-11-19-tts-stt.mdx +6 -0
- package/docs/changelog/2023-11-19-tts-stt.zh-CN.mdx +7 -0
- package/docs/changelog/2023-12-22-dalle-3.mdx +6 -0
- package/docs/changelog/2023-12-22-dalle-3.zh-CN.mdx +4 -0
- package/docs/changelog/2024-02-08-sso-oauth.mdx +6 -0
- package/docs/changelog/2024-02-08-sso-oauth.zh-CN.mdx +6 -0
- package/docs/changelog/2024-02-14-ollama.mdx +6 -0
- package/docs/changelog/2024-02-14-ollama.zh-CN.mdx +5 -0
- package/docs/changelog/2024-06-19-lobe-chat-v1.mdx +6 -0
- package/docs/changelog/2024-06-19-lobe-chat-v1.zh-CN.mdx +5 -0
- package/docs/changelog/2024-07-19-gpt-4o-mini.mdx +5 -0
- package/docs/changelog/2024-07-19-gpt-4o-mini.zh-CN.mdx +4 -0
- package/docs/changelog/2024-08-02-lobe-chat-database-docker.mdx +6 -0
- package/docs/changelog/2024-08-02-lobe-chat-database-docker.zh-CN.mdx +5 -0
- package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.mdx +6 -0
- package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.zh-CN.mdx +5 -0
- package/docs/changelog/2024-09-13-openai-o1-models.mdx +6 -0
- package/docs/changelog/2024-09-13-openai-o1-models.zh-CN.mdx +6 -0
- package/docs/changelog/2024-09-20-artifacts.mdx +6 -0
- package/docs/changelog/2024-09-20-artifacts.zh-CN.mdx +6 -0
- package/docs/changelog/2024-10-27-pin-assistant.mdx +5 -0
- package/docs/changelog/2024-10-27-pin-assistant.zh-CN.mdx +4 -0
- package/docs/changelog/2024-11-06-share-text-json.mdx +4 -0
- package/docs/changelog/2024-11-06-share-text-json.zh-CN.mdx +4 -0
- package/docs/changelog/2024-11-25-november-providers.mdx +7 -0
- package/docs/changelog/2024-11-25-november-providers.zh-CN.mdx +7 -0
- package/docs/changelog/2024-11-27-forkable-chat.mdx +4 -0
- package/docs/changelog/2024-11-27-forkable-chat.zh-CN.mdx +5 -0
- package/docs/changelog/2025-01-03-user-profile.mdx +5 -0
- package/docs/changelog/2025-01-03-user-profile.zh-CN.mdx +4 -1
- package/docs/self-hosting/advanced/auth/clerk.mdx +25 -41
- package/docs/self-hosting/advanced/auth/clerk.zh-CN.mdx +23 -37
- package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +31 -58
- package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +30 -57
- package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +38 -38
- package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +37 -38
- package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +26 -31
- package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +25 -30
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +74 -75
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +72 -73
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +24 -25
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +23 -24
- package/docs/self-hosting/advanced/auth/next-auth/github.mdx +46 -73
- package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +43 -70
- package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +28 -37
- package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +28 -37
- package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +36 -49
- package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +30 -43
- package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +13 -14
- package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +14 -15
- package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +35 -69
- package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +34 -68
- package/docs/self-hosting/advanced/auth.mdx +14 -13
- package/docs/self-hosting/advanced/auth.zh-CN.mdx +15 -14
- package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +15 -15
- package/docs/self-hosting/advanced/knowledge-base.mdx +14 -3
- package/docs/self-hosting/advanced/knowledge-base.zh-CN.mdx +12 -3
- package/docs/self-hosting/advanced/model-list.zh-CN.mdx +5 -5
- package/docs/self-hosting/advanced/s3/cloudflare-r2.mdx +52 -81
- package/docs/self-hosting/advanced/s3/cloudflare-r2.zh-CN.mdx +51 -80
- package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +20 -34
- package/docs/self-hosting/advanced/s3/tencent-cloud.zh-CN.mdx +28 -43
- package/docs/self-hosting/advanced/s3.mdx +30 -34
- package/docs/self-hosting/advanced/s3.zh-CN.mdx +28 -33
- package/docs/self-hosting/advanced/settings-url-share.mdx +6 -6
- package/docs/self-hosting/advanced/settings-url-share.zh-CN.mdx +19 -19
- package/docs/self-hosting/advanced/upstream-sync.mdx +73 -89
- package/docs/self-hosting/advanced/upstream-sync.zh-CN.mdx +71 -87
- package/docs/self-hosting/advanced/webrtc.mdx +14 -21
- package/docs/self-hosting/advanced/webrtc.zh-CN.mdx +19 -26
- package/docs/self-hosting/environment-variables/analytics.zh-CN.mdx +0 -3
- package/docs/self-hosting/environment-variables/auth.zh-CN.mdx +1 -1
- package/docs/self-hosting/environment-variables/basic.mdx +13 -13
- package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +15 -15
- package/docs/self-hosting/environment-variables/model-provider.mdx +1 -1
- package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +1 -1
- package/docs/self-hosting/environment-variables/s3.mdx +3 -4
- package/docs/self-hosting/environment-variables/s3.zh-CN.mdx +5 -7
- package/docs/self-hosting/environment-variables.mdx +8 -4
- package/docs/self-hosting/environment-variables.zh-CN.mdx +4 -0
- package/docs/self-hosting/examples/azure-openai.mdx +9 -12
- package/docs/self-hosting/examples/azure-openai.zh-CN.mdx +8 -11
- package/docs/self-hosting/examples/ollama.mdx +8 -7
- package/docs/self-hosting/examples/ollama.zh-CN.mdx +8 -7
- package/docs/self-hosting/platform/alibaba-cloud.mdx +5 -7
- package/docs/self-hosting/platform/alibaba-cloud.zh-CN.mdx +5 -7
- package/docs/self-hosting/platform/btpanel.mdx +3 -2
- package/docs/self-hosting/platform/btpanel.zh-CN.mdx +3 -3
- package/docs/self-hosting/platform/docker-compose.mdx +75 -85
- package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +75 -85
- package/docs/self-hosting/platform/docker.mdx +87 -92
- package/docs/self-hosting/platform/docker.zh-CN.mdx +96 -115
- package/docs/self-hosting/platform/netlify.mdx +44 -94
- package/docs/self-hosting/platform/netlify.zh-CN.mdx +40 -90
- package/docs/self-hosting/platform/railway.mdx +6 -7
- package/docs/self-hosting/platform/railway.zh-CN.mdx +6 -7
- package/docs/self-hosting/platform/repocloud.mdx +6 -7
- package/docs/self-hosting/platform/repocloud.zh-CN.mdx +6 -7
- package/docs/self-hosting/platform/sealos.mdx +6 -7
- package/docs/self-hosting/platform/sealos.zh-CN.mdx +6 -7
- package/docs/self-hosting/platform/vercel.mdx +7 -8
- package/docs/self-hosting/platform/vercel.zh-CN.mdx +7 -8
- package/docs/self-hosting/platform/zeabur.mdx +29 -32
- package/docs/self-hosting/platform/zeabur.zh-CN.mdx +29 -32
- package/docs/self-hosting/server-database/docker-compose.mdx +44 -71
- package/docs/self-hosting/server-database/docker-compose.zh-CN.mdx +44 -71
- package/docs/self-hosting/server-database/docker.mdx +84 -88
- package/docs/self-hosting/server-database/docker.zh-CN.mdx +87 -91
- package/docs/self-hosting/server-database/dokploy.mdx +18 -1
- package/docs/self-hosting/server-database/dokploy.zh-CN.mdx +84 -68
- package/docs/self-hosting/server-database/repocloud.mdx +7 -9
- package/docs/self-hosting/server-database/repocloud.zh-CN.mdx +9 -11
- package/docs/self-hosting/server-database/vercel.mdx +158 -243
- package/docs/self-hosting/server-database/vercel.zh-CN.mdx +137 -205
- package/docs/self-hosting/server-database/zeabur.mdx +21 -23
- package/docs/self-hosting/server-database/zeabur.zh-CN.mdx +20 -22
- package/docs/self-hosting/server-database.mdx +34 -36
- package/docs/self-hosting/server-database.zh-CN.mdx +34 -37
- package/docs/self-hosting/start.mdx +1 -4
- package/docs/self-hosting/start.zh-CN.mdx +1 -1
- package/docs/usage/agents/agent-organization.mdx +5 -21
- package/docs/usage/agents/agent-organization.zh-CN.mdx +5 -21
- package/docs/usage/agents/concepts.mdx +4 -4
- package/docs/usage/agents/concepts.zh-CN.mdx +4 -4
- package/docs/usage/agents/custom-agent.mdx +2 -2
- package/docs/usage/agents/custom-agent.zh-CN.mdx +2 -2
- package/docs/usage/agents/model.mdx +4 -4
- package/docs/usage/agents/model.zh-CN.mdx +6 -6
- package/docs/usage/agents/prompt.mdx +5 -6
- package/docs/usage/agents/prompt.zh-CN.mdx +5 -6
- package/docs/usage/agents/topics.mdx +2 -2
- package/docs/usage/agents/topics.zh-CN.mdx +2 -2
- package/docs/usage/features/agent-market.mdx +2 -2
- package/docs/usage/features/agent-market.zh-CN.mdx +2 -2
- package/docs/usage/features/auth.mdx +1 -5
- package/docs/usage/features/auth.zh-CN.mdx +1 -5
- package/docs/usage/features/database.mdx +1 -5
- package/docs/usage/features/database.zh-CN.mdx +1 -5
- package/docs/usage/features/local-llm.mdx +2 -6
- package/docs/usage/features/local-llm.zh-CN.mdx +2 -6
- package/docs/usage/features/mobile.mdx +1 -5
- package/docs/usage/features/mobile.zh-CN.mdx +1 -5
- package/docs/usage/features/multi-ai-providers.mdx +3 -11
- package/docs/usage/features/multi-ai-providers.zh-CN.mdx +3 -11
- package/docs/usage/features/plugin-system.mdx +9 -10
- package/docs/usage/features/plugin-system.zh-CN.mdx +9 -10
- package/docs/usage/features/pwa.mdx +11 -25
- package/docs/usage/features/pwa.zh-CN.mdx +11 -25
- package/docs/usage/features/text-to-image.mdx +2 -2
- package/docs/usage/features/text-to-image.zh-CN.mdx +2 -2
- package/docs/usage/features/theme.mdx +1 -6
- package/docs/usage/features/theme.zh-CN.mdx +1 -6
- package/docs/usage/features/tts.mdx +3 -7
- package/docs/usage/features/tts.zh-CN.mdx +3 -7
- package/docs/usage/features/vision.mdx +2 -2
- package/docs/usage/features/vision.zh-CN.mdx +2 -2
- package/docs/usage/foundation/basic.mdx +7 -18
- package/docs/usage/foundation/basic.zh-CN.mdx +6 -16
- package/docs/usage/foundation/share.mdx +3 -13
- package/docs/usage/foundation/share.zh-CN.mdx +3 -13
- package/docs/usage/foundation/text2image.mdx +3 -12
- package/docs/usage/foundation/text2image.zh-CN.mdx +3 -12
- package/docs/usage/foundation/translate.mdx +3 -13
- package/docs/usage/foundation/translate.zh-CN.mdx +3 -13
- package/docs/usage/foundation/tts-stt.mdx +3 -12
- package/docs/usage/foundation/tts-stt.zh-CN.mdx +3 -12
- package/docs/usage/foundation/vision.mdx +4 -16
- package/docs/usage/foundation/vision.zh-CN.mdx +4 -16
- package/docs/usage/plugins/basic-usage.mdx +7 -30
- package/docs/usage/plugins/basic-usage.zh-CN.mdx +7 -30
- package/docs/usage/plugins/development.mdx +30 -78
- package/docs/usage/plugins/development.zh-CN.mdx +31 -79
- package/docs/usage/plugins/store.mdx +2 -10
- package/docs/usage/plugins/store.zh-CN.mdx +2 -10
- package/docs/usage/providers/ai21.mdx +17 -33
- package/docs/usage/providers/ai21.zh-CN.mdx +17 -33
- package/docs/usage/providers/ai360.mdx +17 -33
- package/docs/usage/providers/ai360.zh-CN.mdx +20 -36
- package/docs/usage/providers/anthropic.mdx +23 -45
- package/docs/usage/providers/anthropic.zh-CN.mdx +22 -44
- package/docs/usage/providers/azure.mdx +21 -51
- package/docs/usage/providers/azure.zh-CN.mdx +19 -48
- package/docs/usage/providers/baichuan.mdx +16 -34
- package/docs/usage/providers/baichuan.zh-CN.mdx +15 -33
- package/docs/usage/providers/bedrock.mdx +38 -87
- package/docs/usage/providers/bedrock.zh-CN.mdx +37 -86
- package/docs/usage/providers/cloudflare.mdx +25 -48
- package/docs/usage/providers/cloudflare.zh-CN.mdx +24 -45
- package/docs/usage/providers/deepseek.mdx +25 -51
- package/docs/usage/providers/deepseek.zh-CN.mdx +24 -50
- package/docs/usage/providers/fireworksai.mdx +23 -43
- package/docs/usage/providers/fireworksai.zh-CN.mdx +21 -41
- package/docs/usage/providers/gemini.mdx +20 -46
- package/docs/usage/providers/gemini.zh-CN.mdx +20 -46
- package/docs/usage/providers/giteeai.mdx +24 -45
- package/docs/usage/providers/giteeai.zh-CN.mdx +22 -43
- package/docs/usage/providers/github.mdx +19 -45
- package/docs/usage/providers/github.zh-CN.mdx +19 -44
- package/docs/usage/providers/groq.mdx +12 -29
- package/docs/usage/providers/groq.zh-CN.mdx +11 -28
- package/docs/usage/providers/hunyuan.mdx +19 -39
- package/docs/usage/providers/hunyuan.zh-CN.mdx +18 -38
- package/docs/usage/providers/internlm.mdx +21 -38
- package/docs/usage/providers/internlm.zh-CN.mdx +19 -36
- package/docs/usage/providers/minimax.mdx +24 -50
- package/docs/usage/providers/minimax.zh-CN.mdx +22 -48
- package/docs/usage/providers/mistral.mdx +21 -39
- package/docs/usage/providers/mistral.zh-CN.mdx +20 -38
- package/docs/usage/providers/moonshot.mdx +20 -38
- package/docs/usage/providers/moonshot.zh-CN.mdx +19 -37
- package/docs/usage/providers/novita.mdx +20 -43
- package/docs/usage/providers/novita.zh-CN.mdx +19 -42
- package/docs/usage/providers/ollama/gemma.mdx +12 -29
- package/docs/usage/providers/ollama/gemma.zh-CN.mdx +12 -30
- package/docs/usage/providers/ollama/qwen.mdx +17 -32
- package/docs/usage/providers/ollama/qwen.zh-CN.mdx +12 -27
- package/docs/usage/providers/ollama.mdx +67 -99
- package/docs/usage/providers/ollama.zh-CN.mdx +67 -99
- package/docs/usage/providers/openai.mdx +42 -56
- package/docs/usage/providers/openai.zh-CN.mdx +39 -52
- package/docs/usage/providers/openrouter.mdx +48 -84
- package/docs/usage/providers/openrouter.zh-CN.mdx +31 -67
- package/docs/usage/providers/perplexity.mdx +16 -34
- package/docs/usage/providers/perplexity.zh-CN.mdx +16 -34
- package/docs/usage/providers/qwen.mdx +26 -52
- package/docs/usage/providers/qwen.zh-CN.mdx +25 -51
- package/docs/usage/providers/sensenova.mdx +24 -45
- package/docs/usage/providers/sensenova.zh-CN.mdx +22 -43
- package/docs/usage/providers/siliconcloud.mdx +17 -33
- package/docs/usage/providers/siliconcloud.zh-CN.mdx +17 -33
- package/docs/usage/providers/spark.mdx +20 -40
- package/docs/usage/providers/spark.zh-CN.mdx +19 -39
- package/docs/usage/providers/stepfun.mdx +17 -35
- package/docs/usage/providers/stepfun.zh-CN.mdx +17 -35
- package/docs/usage/providers/taichu.mdx +16 -34
- package/docs/usage/providers/taichu.zh-CN.mdx +15 -33
- package/docs/usage/providers/togetherai.mdx +18 -40
- package/docs/usage/providers/togetherai.zh-CN.mdx +18 -40
- package/docs/usage/providers/upstage.mdx +18 -34
- package/docs/usage/providers/upstage.zh-CN.mdx +17 -33
- package/docs/usage/providers/wenxin.mdx +22 -42
- package/docs/usage/providers/wenxin.zh-CN.mdx +20 -40
- package/docs/usage/providers/xai.mdx +21 -38
- package/docs/usage/providers/xai.zh-CN.mdx +20 -37
- package/docs/usage/providers/zeroone.mdx +22 -48
- package/docs/usage/providers/zeroone.zh-CN.mdx +22 -48
- package/docs/usage/providers/zhipu.mdx +17 -35
- package/docs/usage/providers/zhipu.zh-CN.mdx +18 -34
- package/docs/usage/providers.mdx +1 -6
- package/docs/usage/providers.zh-CN.mdx +1 -6
- package/docs/usage/start.mdx +4 -18
- package/docs/usage/start.zh-CN.mdx +2 -19
- package/docs/usage/tools-calling/anthropic.mdx +18 -51
- package/docs/usage/tools-calling/anthropic.zh-CN.mdx +22 -55
- package/docs/usage/tools-calling/google.mdx +16 -23
- package/docs/usage/tools-calling/google.zh-CN.mdx +17 -24
- package/docs/usage/tools-calling/groq.mdx +9 -0
- package/docs/usage/tools-calling/groq.zh-CN.mdx +44 -70
- package/docs/usage/tools-calling/moonshot.mdx +9 -0
- package/docs/usage/tools-calling/openai.mdx +19 -44
- package/docs/usage/tools-calling/openai.zh-CN.mdx +20 -45
- package/docs/usage/tools-calling.mdx +9 -0
- package/docs/usage/tools-calling.zh-CN.mdx +60 -68
- package/next.config.ts +1 -0
- package/package.json +48 -41
- package/scripts/mdxWorkflow/index.ts +7 -0
- package/src/app/(main)/(mobile)/me/(home)/features/Header.tsx +2 -1
- package/src/app/(main)/(mobile)/me/data/features/Header.tsx +1 -1
- package/src/app/(main)/(mobile)/me/profile/features/Header.tsx +1 -1
- package/src/app/(main)/(mobile)/me/settings/features/Header.tsx +1 -1
- package/src/app/(main)/@nav/_layout/Mobile.tsx +2 -1
- package/src/app/(main)/chat/(workspace)/@topic/features/SystemRole/SystemRoleContent.tsx +2 -1
- package/src/app/(main)/chat/(workspace)/@topic/features/TopicListContent/ByTimeMode/GroupItem.tsx +2 -2
- package/src/app/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/Main.tsx +2 -1
- package/src/app/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/index.tsx +1 -1
- package/src/app/(main)/chat/(workspace)/_layout/Mobile/ChatHeader/ChatHeaderTitle.tsx +2 -1
- package/src/app/(main)/chat/(workspace)/_layout/Mobile/ChatHeader/index.tsx +1 -1
- package/src/app/(main)/chat/@session/_layout/Mobile/SessionHeader.tsx +2 -1
- package/src/app/(main)/chat/settings/_layout/Desktop/Header.tsx +1 -1
- package/src/app/(main)/chat/settings/_layout/Mobile/Header.tsx +1 -1
- package/src/app/(main)/discover/(detail)/provider/[slug]/features/InfoSidebar/SuggestionItem.tsx +8 -6
- package/src/app/(main)/discover/(list)/_layout/Desktop/Nav.tsx +1 -1
- package/src/app/(main)/discover/(list)/_layout/Mobile/Header.tsx +2 -1
- package/src/app/(main)/discover/_layout/Desktop/Header.tsx +1 -1
- package/src/app/(main)/discover/components/VirtuosoGridList/index.tsx +9 -5
- package/src/app/(main)/discover/search/_layout/Mobile/Header.tsx +1 -1
- package/src/app/(main)/files/(content)/@menu/features/KnowledgeBase/EmptyStatus.tsx +21 -13
- package/src/app/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +1 -1
- package/src/app/(main)/settings/sync/features/DeviceInfo/SystemIcon.tsx +2 -0
- package/src/components/Branding/ProductLogo/Custom.tsx +19 -20
- package/src/components/BrowserIcon/index.tsx +19 -30
- package/src/components/BubblesLoading/index.tsx +31 -23
- package/src/components/FunctionModal/createModalHooks.ts +6 -3
- package/src/components/StopLoading.tsx +10 -7
- package/src/features/ChatInput/Desktop/InputArea/index.tsx +2 -2
- package/src/features/InitClientDB/EnableModal.tsx +2 -2
- package/src/features/InitClientDB/{PGliteSVG.tsx → PGliteIcon.tsx} +17 -11
- package/src/features/ShareModal/ShareImage/index.tsx +32 -22
- package/src/features/ShareModal/ShareJSON/Preview.tsx +2 -2
- package/src/features/ShareModal/ShareJSON/index.tsx +49 -37
- package/src/features/ShareModal/ShareText/Preview.tsx +4 -1
- package/src/features/ShareModal/ShareText/index.tsx +49 -38
- package/src/features/ShareModal/index.tsx +1 -1
- package/src/features/ShareModal/style.ts +30 -0
- package/src/utils/colorUtils.ts +1 -1
- package/src/components/BrowserIcon/components/Brave.tsx +0 -56
- package/src/components/BrowserIcon/components/Chrome.tsx +0 -14
- package/src/components/BrowserIcon/components/Chromium.tsx +0 -14
- package/src/components/BrowserIcon/components/Edge.tsx +0 -36
- package/src/components/BrowserIcon/components/Firefox.tsx +0 -38
- package/src/components/BrowserIcon/components/Opera.tsx +0 -19
- package/src/components/BrowserIcon/components/Safari.tsx +0 -23
- 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
|
-
|
59
|
-
<
|
60
|
-
|
61
|
-
<
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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
|
-
|
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
|
-
|
79
|
-
<
|
80
|
-
|
81
|
-
<
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
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
|
-
|
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
|
+
}));
|
package/src/utils/colorUtils.ts
CHANGED
@@ -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
|
-
};
|