diff --git a/README.md b/README.md index 988c455..32c8eaa 100644 --- a/README.md +++ b/README.md @@ -61,9 +61,9 @@ Contributions, corrections & requests can be made on GitHub. -| Model | Provider | Application | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ✅ [Ai21Labs (Jamba)](https://icons.lobehub.com/components/ai-21)
✅ [Baichuan (百川)](https://icons.lobehub.com/components/baichuan)
✅ [Claude](https://icons.lobehub.com/components/claude)
✅ [Databricks (DBRX)](https://icons.lobehub.com/components/dbrx)
✅ [DeepSeek](https://icons.lobehub.com/components/deep-seek)
✅ [Doubao (豆包)](https://icons.lobehub.com/components/doubao)
✅ [FishAudio (Bert)](https://icons.lobehub.com/components/fish-audio)
✅ [Google (Gemini)](https://icons.lobehub.com/components/gemini)
✅ [Google (Gemma)](https://icons.lobehub.com/components/gemma)
✅ [Grok](https://icons.lobehub.com/components/grok)
✅ [Hunyuan (腾讯混元)](https://icons.lobehub.com/components/hunyuan)
✅ [LLaVA](https://icons.lobehub.com/components/l-la-va)
✅ [Minimax](https://icons.lobehub.com/components/minimax)
✅ [Mistral](https://icons.lobehub.com/components/mistral)
✅ [OpenAI (DALL·E)](https://icons.lobehub.com/components/dalle)
✅ [OpenChat](https://icons.lobehub.com/components/open-chat)
✅ [RWKV](https://icons.lobehub.com/components/rwkv)
✅ [Spark (讯飞星火)](https://icons.lobehub.com/components/spark)
✅ [Stepfun (阶跃星辰)](https://icons.lobehub.com/components/stepfun)
✅ [Tongyi (通义)](https://icons.lobehub.com/components/tongyi)
✅ [Wenxin (文心)](https://icons.lobehub.com/components/wenxin)
✅ [Yi (零一万物)](https://icons.lobehub.com/components/yi)
✅ [Zhipu (ChatGLM)](https://icons.lobehub.com/components/chat-glm) | ✅ [01.AI (零一万物)](https://icons.lobehub.com/components/zero-one)
✅ [Alibaba](https://icons.lobehub.com/components/alibaba)
✅ [AntGroup](https://icons.lobehub.com/components/ant-group)
✅ [Anthropic](https://icons.lobehub.com/components/anthropic)
✅ [AWS](https://icons.lobehub.com/components/aws)
✅ [AWS (Bedrock)](https://icons.lobehub.com/components/bedrock)
✅ [Baidu](https://icons.lobehub.com/components/baidu)
✅ [ByteDance](https://icons.lobehub.com/components/byte-dance)
✅ [Cloudflare](https://icons.lobehub.com/components/cloudflare)
✅ [Cloudflare (WorkersAI)](https://icons.lobehub.com/components/workers-ai)
✅ [Cohere (Command)](https://icons.lobehub.com/components/cohere)
✅ [Fireworks](https://icons.lobehub.com/components/fireworks)
✅ [Google](https://icons.lobehub.com/components/google)
✅ [Google(DeepMind)](https://icons.lobehub.com/components/deep-mind)
✅ [Groq](https://icons.lobehub.com/components/groq)
✅ [HuggingFace](https://icons.lobehub.com/components/hugging-face)
✅ [LM Studio](https://icons.lobehub.com/components/lm-studio)
✅ [LobeHub](https://icons.lobehub.com/components/lobe-hub)
✅ [Meta](https://icons.lobehub.com/components/meta)
✅ [Microsoft (Azure)](https://icons.lobehub.com/components/azure)
✅ [Moonshot (月之暗面)](https://icons.lobehub.com/components/moonshot)
✅ [Ollama](https://icons.lobehub.com/components/ollama)
✅ [OpenAI (ChatGPT)](https://icons.lobehub.com/components/open-ai)
✅ [OpenRouter](https://icons.lobehub.com/components/open-router)
✅ [Perplexity](https://icons.lobehub.com/components/perplexity)
✅ [Replicate](https://icons.lobehub.com/components/replicate)
✅ [SiliconCloud (SiliconFlow)](https://icons.lobehub.com/components/silicon-cloud)
✅ [Stability (StableDiffusion)](https://icons.lobehub.com/components/stability)
✅ [Tencent](https://icons.lobehub.com/components/tencent)
✅ [together.ai](https://icons.lobehub.com/components/together)
✅ [vLLM](https://icons.lobehub.com/components/vllm)
✅ [Zeabur](https://icons.lobehub.com/components/zeabur)
✅ [Zhipu (智谱)](https://icons.lobehub.com/components/zhipu) | ✅ [Adobe](https://icons.lobehub.com/components/adobe)
✅ [Adobe (Firefly)](https://icons.lobehub.com/components/adobe-firefly)
✅ [Automatic1111 (SD Webui)](https://icons.lobehub.com/components/automatic)
✅ [Github](https://icons.lobehub.com/components/github)
✅ [Github Copilot](https://icons.lobehub.com/components/github-copilot)
✅ [Google (Colab)](https://icons.lobehub.com/components/colab)
✅ [Langfuse](https://icons.lobehub.com/components/langfuse)
✅ [Microsoft Copilot](https://icons.lobehub.com/components/copilot)
✅ [Midjourney](https://icons.lobehub.com/components/midjourney)
✅ [Nvidia (ChatWithRTX)](https://icons.lobehub.com/components/nvidia)
✅ [Pollinations](https://icons.lobehub.com/components/pollinations)
✅ [Qingyan (智谱清言)](https://icons.lobehub.com/components/qingyan)
✅ [Suno](https://icons.lobehub.com/components/suno) | +| Model | Provider | Application | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ✅ [Ai21Labs (Jamba)](https://icons.lobehub.com/components/ai-21)
✅ [Baichuan (百川)](https://icons.lobehub.com/components/baichuan)
✅ [Claude](https://icons.lobehub.com/components/claude)
✅ [Databricks (DBRX)](https://icons.lobehub.com/components/dbrx)
✅ [DeepSeek](https://icons.lobehub.com/components/deep-seek)
✅ [Doubao (豆包)](https://icons.lobehub.com/components/doubao)
✅ [FishAudio (Bert)](https://icons.lobehub.com/components/fish-audio)
✅ [Google (Gemini)](https://icons.lobehub.com/components/gemini)
✅ [Google (Gemma)](https://icons.lobehub.com/components/gemma)
✅ [Grok](https://icons.lobehub.com/components/grok)
✅ [Hunyuan (腾讯混元)](https://icons.lobehub.com/components/hunyuan)
✅ [LLaVA](https://icons.lobehub.com/components/l-la-va)
✅ [Minimax](https://icons.lobehub.com/components/minimax)
✅ [Mistral](https://icons.lobehub.com/components/mistral)
✅ [OpenAI (DALL·E)](https://icons.lobehub.com/components/dalle)
✅ [OpenChat](https://icons.lobehub.com/components/open-chat)
✅ [RWKV](https://icons.lobehub.com/components/rwkv)
✅ [Spark (讯飞星火)](https://icons.lobehub.com/components/spark)
✅ [Stepfun (阶跃星辰)](https://icons.lobehub.com/components/stepfun)
✅ [Tongyi (通义)](https://icons.lobehub.com/components/tongyi)
✅ [Wenxin (文心)](https://icons.lobehub.com/components/wenxin)
✅ [Yi (零一万物)](https://icons.lobehub.com/components/yi)
✅ [Zhipu (ChatGLM)](https://icons.lobehub.com/components/chat-glm) | ✅ [01.AI (零一万物)](https://icons.lobehub.com/components/zero-one)
✅ [Ai360 (360 智脑)](https://icons.lobehub.com/components/ai-360)
✅ [AiMass (紫东太初)](https://icons.lobehub.com/components/ai-mass)
✅ [Alibaba](https://icons.lobehub.com/components/alibaba)
✅ [AntGroup](https://icons.lobehub.com/components/ant-group)
✅ [Anthropic](https://icons.lobehub.com/components/anthropic)
✅ [AWS](https://icons.lobehub.com/components/aws)
✅ [AWS (Bedrock)](https://icons.lobehub.com/components/bedrock)
✅ [Baidu](https://icons.lobehub.com/components/baidu)
✅ [ByteDance](https://icons.lobehub.com/components/byte-dance)
✅ [Cloudflare](https://icons.lobehub.com/components/cloudflare)
✅ [Cloudflare (WorkersAI)](https://icons.lobehub.com/components/workers-ai)
✅ [Cohere (Command)](https://icons.lobehub.com/components/cohere)
✅ [Fireworks](https://icons.lobehub.com/components/fireworks)
✅ [Google](https://icons.lobehub.com/components/google)
✅ [Google(DeepMind)](https://icons.lobehub.com/components/deep-mind)
✅ [Groq](https://icons.lobehub.com/components/groq)
✅ [HuggingFace](https://icons.lobehub.com/components/hugging-face)
✅ [LM Studio](https://icons.lobehub.com/components/lm-studio)
✅ [LobeHub](https://icons.lobehub.com/components/lobe-hub)
✅ [Meta](https://icons.lobehub.com/components/meta)
✅ [Microsoft (Azure)](https://icons.lobehub.com/components/azure)
✅ [Moonshot (月之暗面)](https://icons.lobehub.com/components/moonshot)
✅ [Novita](https://icons.lobehub.com/components/novita)
✅ [Ollama](https://icons.lobehub.com/components/ollama)
✅ [OpenAI (ChatGPT)](https://icons.lobehub.com/components/open-ai)
✅ [OpenRouter](https://icons.lobehub.com/components/open-router)
✅ [Perplexity](https://icons.lobehub.com/components/perplexity)
✅ [Replicate](https://icons.lobehub.com/components/replicate)
✅ [SiliconCloud (SiliconFlow)](https://icons.lobehub.com/components/silicon-cloud)
✅ [Stability (StableDiffusion)](https://icons.lobehub.com/components/stability)
✅ [Tencent](https://icons.lobehub.com/components/tencent)
✅ [together.ai](https://icons.lobehub.com/components/together)
✅ [vLLM](https://icons.lobehub.com/components/vllm)
✅ [Zeabur](https://icons.lobehub.com/components/zeabur)
✅ [Zhipu (智谱)](https://icons.lobehub.com/components/zhipu) | ✅ [Adobe](https://icons.lobehub.com/components/adobe)
✅ [Adobe (Firefly)](https://icons.lobehub.com/components/adobe-firefly)
✅ [Automatic1111 (SD Webui)](https://icons.lobehub.com/components/automatic)
✅ [Github](https://icons.lobehub.com/components/github)
✅ [Github Copilot](https://icons.lobehub.com/components/github-copilot)
✅ [Google (Colab)](https://icons.lobehub.com/components/colab)
✅ [Langfuse](https://icons.lobehub.com/components/langfuse)
✅ [Microsoft Copilot](https://icons.lobehub.com/components/copilot)
✅ [Midjourney](https://icons.lobehub.com/components/midjourney)
✅ [Nvidia (ChatWithRTX)](https://icons.lobehub.com/components/nvidia)
✅ [Pollinations](https://icons.lobehub.com/components/pollinations)
✅ [Qingyan (智谱清言)](https://icons.lobehub.com/components/qingyan)
✅ [Suno](https://icons.lobehub.com/components/suno) | diff --git a/package.json b/package.json index 3246666..779db5f 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "devDependencies": { "@commitlint/cli": "^18.6.1", "@lobehub/lint": "latest", - "@lobehub/ui": "^1.146.4", + "@lobehub/ui": "^1.146.5", "@testing-library/react": "^14.3.1", "@types/lodash-es": "^4.17.12", "@types/pangu": "^4.0.2", @@ -81,7 +81,7 @@ "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@vitest/coverage-v8": "latest", - "antd": "^5.19.0", + "antd": "^5.19.1", "antd-style": "^3.6.2", "babel-plugin-antd-style": "latest", "commitlint": "^18.6.1", @@ -91,7 +91,7 @@ "dumi-theme-lobehub": "latest", "eslint": "^8.57.0", "father": "^4.4.4", - "glob": "^10.4.2", + "glob": "^10.4.3", "gray-matter": "^4.0.3", "husky": "^8.0.3", "jsdom": "^23.2.0", @@ -107,8 +107,8 @@ "semantic-release": "^21.1.2", "stylelint": "^15.11.0", "svgo-browser": "^1.3.8", - "tsx": "^4.16.0", - "typescript": "^5.5.2", + "tsx": "^4.16.2", + "typescript": "^5.5.3", "vitest": "latest" }, "peerDependencies": { diff --git a/scripts/genMdList.ts b/scripts/genMdList.ts index 8ea41c6..3ff51f4 100644 --- a/scripts/genMdList.ts +++ b/scripts/genMdList.ts @@ -9,6 +9,8 @@ const ROOT_PATH = resolve(__dirname, '..'); const BASE_URL = 'https://icons.lobehub.com/components/'; +const fixWindowsPath = (path: string): string => path.replaceAll('\\', '/'); + const updateReadme = (split: string, md: string, content: string): string => { const mds = md.split(split); mds[1] = [' ', content, ' '].join('\n\n'); @@ -30,7 +32,9 @@ const genMd = ( .join('
'); const run = () => { - const mds = globSync(resolve(ROOT_PATH, './src/**/index.md').replace('\\', '/')); + const mds = globSync(fixWindowsPath(resolve(ROOT_PATH, './src/**/index.md'))).map((md) => + fixWindowsPath(md), + ); const metas: any = mds .map((md) => { const { data } = matter(readFileSync(md, 'utf8')); diff --git a/src/Ai360/components/Avatar.tsx b/src/Ai360/components/Avatar.tsx new file mode 100644 index 0000000..cb8b9b9 --- /dev/null +++ b/src/Ai360/components/Avatar.tsx @@ -0,0 +1,22 @@ +import { memo } from 'react'; + +import IconAvatar, { type IconAvatarProps } from '@/IconAvatar'; + +import { COLOR_GRADIENT, TITLE } from '../style'; +import Mono from './Mono'; + +export type AvatarProps = Omit; + +const Avatar = memo(({ background, ...rest }) => { + return ( + + ); +}); + +export default Avatar; diff --git a/src/Ai360/components/Color.tsx b/src/Ai360/components/Color.tsx new file mode 100644 index 0000000..9b8989a --- /dev/null +++ b/src/Ai360/components/Color.tsx @@ -0,0 +1,93 @@ +import { forwardRef } from 'react'; + +import { useFillIds } from '@/hooks/useFillId'; +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + const [a, b, c, d, e] = useFillIds(TITLE, 5); + return ( + + {TITLE} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}); + +export default Icon; diff --git a/src/Ai360/components/Combine.tsx b/src/Ai360/components/Combine.tsx new file mode 100644 index 0000000..2d4ede6 --- /dev/null +++ b/src/Ai360/components/Combine.tsx @@ -0,0 +1,28 @@ +import { memo } from 'react'; + +import IconCombine, { type IconCombineProps } from '@/IconCombine'; + +import { SPACE_MULTIPLE, TEXT_MULTIPLE, TITLE } from '../style'; +import Color from './Color'; +import Mono from './Mono'; +import Text from './Text'; + +export interface CombineProps extends Omit { + type?: 'color' | 'mono'; +} +const Combine = memo(({ type = 'mono', ...rest }) => { + const Icon = type === 'color' ? Color : Mono; + + return ( + + ); +}); + +export default Combine; diff --git a/src/Ai360/components/Mono.tsx b/src/Ai360/components/Mono.tsx new file mode 100644 index 0000000..5dfc14a --- /dev/null +++ b/src/Ai360/components/Mono.tsx @@ -0,0 +1,33 @@ +import { forwardRef } from 'react'; + +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + return ( + + {TITLE} + + + + + + + ); +}); + +export default Icon; diff --git a/src/Ai360/components/Text.tsx b/src/Ai360/components/Text.tsx new file mode 100644 index 0000000..ff3d651 --- /dev/null +++ b/src/Ai360/components/Text.tsx @@ -0,0 +1,29 @@ +import { forwardRef } from 'react'; + +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + return ( + + {TITLE} + + + + ); +}); + +export default Icon; diff --git a/src/Ai360/index.md b/src/Ai360/index.md new file mode 100644 index 0000000..50e0133 --- /dev/null +++ b/src/Ai360/index.md @@ -0,0 +1,73 @@ +--- +nav: Components +group: Provider +title: Ai360 (360智脑) +atomId: Ai360 +description: https://ai.360.com/ +--- + +## Icons + +```tsx +import { Ai360 } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Text + +```tsx +import { Ai360 } from '@lobehub/icons'; + +export default () => ; +``` + +## Combine + +```tsx +import { Ai360 } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Avatars + +```tsx +import { Ai360 } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + + +); +``` + +## Colors + +```tsx +import { Ai360 } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +import ColorPreview from '../components/ColorPreview'; + +export default () => ( + + + +); +``` diff --git a/src/Ai360/index.ts b/src/Ai360/index.ts new file mode 100644 index 0000000..096b692 --- /dev/null +++ b/src/Ai360/index.ts @@ -0,0 +1,27 @@ +import Avatar from './components/Avatar'; +import Color from './components/Color'; +import Combine from './components/Combine'; +import Mono from './components/Mono'; +import Text from './components/Text'; +import { COLOR_GRADIENT, COLOR_PRIMARY, TITLE } from './style'; + +export type CompoundedIcon = typeof Mono & { + Avatar: typeof Avatar; + Color: typeof Color; + Combine: typeof Combine; + Text: typeof Text; + colorGradient: string; + colorPrimary: string; + title: string; +}; + +const Icons = Mono as CompoundedIcon; +Icons.Color = Color; +Icons.Text = Text; +Icons.Combine = Combine; +Icons.Avatar = Avatar; +Icons.colorPrimary = COLOR_PRIMARY; +Icons.colorGradient = COLOR_GRADIENT; +Icons.title = TITLE; + +export default Icons; diff --git a/src/Ai360/style.ts b/src/Ai360/style.ts new file mode 100644 index 0000000..403a49f --- /dev/null +++ b/src/Ai360/style.ts @@ -0,0 +1,5 @@ +export const TITLE = '360智脑'; +export const TEXT_MULTIPLE = 0.7; +export const SPACE_MULTIPLE = 0.2; +export const COLOR_PRIMARY = '#006ffb'; +export const COLOR_GRADIENT = 'linear-gradient(to bottom, #12B7FA, #006ffb)'; diff --git a/src/AiMass/components/Avatar.tsx b/src/AiMass/components/Avatar.tsx new file mode 100644 index 0000000..dcc12cb --- /dev/null +++ b/src/AiMass/components/Avatar.tsx @@ -0,0 +1,21 @@ +import { memo } from 'react'; + +import IconAvatar, { type IconAvatarProps } from '@/IconAvatar'; + +import { COLOR_PRIMARY, TITLE } from '../style'; +import Color from './Color'; + +export type AvatarProps = Omit; + +const Avatar = memo(({ background, ...rest }) => { + return ( + + ); +}); + +export default Avatar; diff --git a/src/AiMass/components/Color.tsx b/src/AiMass/components/Color.tsx new file mode 100644 index 0000000..8f15538 --- /dev/null +++ b/src/AiMass/components/Color.tsx @@ -0,0 +1,31 @@ +import { forwardRef } from 'react'; + +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + return ( + + {TITLE} + + + + ); +}); + +export default Icon; diff --git a/src/AiMass/components/Combine.tsx b/src/AiMass/components/Combine.tsx new file mode 100644 index 0000000..2d4ede6 --- /dev/null +++ b/src/AiMass/components/Combine.tsx @@ -0,0 +1,28 @@ +import { memo } from 'react'; + +import IconCombine, { type IconCombineProps } from '@/IconCombine'; + +import { SPACE_MULTIPLE, TEXT_MULTIPLE, TITLE } from '../style'; +import Color from './Color'; +import Mono from './Mono'; +import Text from './Text'; + +export interface CombineProps extends Omit { + type?: 'color' | 'mono'; +} +const Combine = memo(({ type = 'mono', ...rest }) => { + const Icon = type === 'color' ? Color : Mono; + + return ( + + ); +}); + +export default Combine; diff --git a/src/AiMass/components/Mono.tsx b/src/AiMass/components/Mono.tsx new file mode 100644 index 0000000..26f9e96 --- /dev/null +++ b/src/AiMass/components/Mono.tsx @@ -0,0 +1,27 @@ +import { forwardRef } from 'react'; + +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + return ( + + {TITLE} + + + + ); +}); + +export default Icon; diff --git a/src/AiMass/components/Text.tsx b/src/AiMass/components/Text.tsx new file mode 100644 index 0000000..576a0bd --- /dev/null +++ b/src/AiMass/components/Text.tsx @@ -0,0 +1,33 @@ +import { forwardRef } from 'react'; + +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + return ( + + {TITLE} + + + + + + + + ); +}); + +export default Icon; diff --git a/src/AiMass/index.md b/src/AiMass/index.md new file mode 100644 index 0000000..ea9d4f1 --- /dev/null +++ b/src/AiMass/index.md @@ -0,0 +1,72 @@ +--- +nav: Components +group: Provider +title: AiMass (紫东太初) +atomId: AiMass +description: https://ai-maas.wair.ac.cn +--- + +## Icons + +```tsx +import { AiMass } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Text + +```tsx +import { AiMass } from '@lobehub/icons'; + +export default () => ; +``` + +## Combine + +```tsx +import { AiMass } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Avatars + +```tsx +import { AiMass } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Colors + +```tsx +import { AiMass } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +import ColorPreview from '../components/ColorPreview'; + +export default () => ( + + + +); +``` diff --git a/src/AiMass/index.ts b/src/AiMass/index.ts new file mode 100644 index 0000000..92a3b98 --- /dev/null +++ b/src/AiMass/index.ts @@ -0,0 +1,25 @@ +import Avatar from './components/Avatar'; +import Color from './components/Color'; +import Combine from './components/Combine'; +import Mono from './components/Mono'; +import Text from './components/Text'; +import { COLOR_PRIMARY, TITLE } from './style'; + +export type CompoundedIcon = typeof Mono & { + Avatar: typeof Avatar; + Color: typeof Color; + Combine: typeof Combine; + Text: typeof Text; + colorPrimary: string; + title: string; +}; + +const Icons = Mono as CompoundedIcon; +Icons.Color = Color; +Icons.Text = Text; +Icons.Combine = Combine; +Icons.Avatar = Avatar; +Icons.colorPrimary = COLOR_PRIMARY; +Icons.title = TITLE; + +export default Icons; diff --git a/src/AiMass/style.ts b/src/AiMass/style.ts new file mode 100644 index 0000000..d1c9361 --- /dev/null +++ b/src/AiMass/style.ts @@ -0,0 +1,4 @@ +export const TITLE = '紫东太初'; +export const TEXT_MULTIPLE = 0.6; +export const SPACE_MULTIPLE = 0.2; +export const COLOR_PRIMARY = '#fff'; diff --git a/src/Novita/components/Avatar.tsx b/src/Novita/components/Avatar.tsx new file mode 100644 index 0000000..e98b2d2 --- /dev/null +++ b/src/Novita/components/Avatar.tsx @@ -0,0 +1,23 @@ +import { memo } from 'react'; + +import IconAvatar, { type IconAvatarProps } from '@/IconAvatar'; + +import { COLOR_GRADIENT, TITLE } from '../style'; +import Mono from './Mono'; + +export type AvatarProps = Omit; + +const Avatar = memo(({ background, ...rest }) => { + return ( + + ); +}); + +export default Avatar; diff --git a/src/Novita/components/Color.tsx b/src/Novita/components/Color.tsx new file mode 100644 index 0000000..5b639e2 --- /dev/null +++ b/src/Novita/components/Color.tsx @@ -0,0 +1,37 @@ +import { forwardRef } from 'react'; + +import { useFillId } from '@/hooks/useFillId'; +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + const { fill, id } = useFillId(TITLE); + return ( + + {TITLE} + + + + + + + + + ); +}); + +export default Icon; diff --git a/src/Novita/components/Combine.tsx b/src/Novita/components/Combine.tsx new file mode 100644 index 0000000..2d4ede6 --- /dev/null +++ b/src/Novita/components/Combine.tsx @@ -0,0 +1,28 @@ +import { memo } from 'react'; + +import IconCombine, { type IconCombineProps } from '@/IconCombine'; + +import { SPACE_MULTIPLE, TEXT_MULTIPLE, TITLE } from '../style'; +import Color from './Color'; +import Mono from './Mono'; +import Text from './Text'; + +export interface CombineProps extends Omit { + type?: 'color' | 'mono'; +} +const Combine = memo(({ type = 'mono', ...rest }) => { + const Icon = type === 'color' ? Color : Mono; + + return ( + + ); +}); + +export default Combine; diff --git a/src/Novita/components/Mono.tsx b/src/Novita/components/Mono.tsx new file mode 100644 index 0000000..3614d8c --- /dev/null +++ b/src/Novita/components/Mono.tsx @@ -0,0 +1,29 @@ +import { forwardRef } from 'react'; + +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + return ( + + {TITLE} + + + ); +}); + +export default Icon; diff --git a/src/Novita/components/Text.tsx b/src/Novita/components/Text.tsx new file mode 100644 index 0000000..9e98f74 --- /dev/null +++ b/src/Novita/components/Text.tsx @@ -0,0 +1,40 @@ +import { forwardRef } from 'react'; + +import type { IconType } from '@/types'; + +import { TITLE } from '../style'; + +const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => { + return ( + + {TITLE} + + + + + + + + + ); +}); + +export default Icon; diff --git a/src/Novita/index.md b/src/Novita/index.md new file mode 100644 index 0000000..2692006 --- /dev/null +++ b/src/Novita/index.md @@ -0,0 +1,73 @@ +--- +nav: Components +group: Provider +title: Novita +atomId: Novita +description: https://novita.ai/ +--- + +## Icons + +```tsx +import { Novita } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Text + +```tsx +import { Novita } from '@lobehub/icons'; + +export default () => ; +``` + +## Combine + +```tsx +import { Novita } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Avatars + +```tsx +import { Novita } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + + +); +``` + +## Colors + +```tsx +import { Novita } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +import ColorPreview from '../components/ColorPreview'; + +export default () => ( + + + +); +``` diff --git a/src/Novita/index.ts b/src/Novita/index.ts new file mode 100644 index 0000000..096b692 --- /dev/null +++ b/src/Novita/index.ts @@ -0,0 +1,27 @@ +import Avatar from './components/Avatar'; +import Color from './components/Color'; +import Combine from './components/Combine'; +import Mono from './components/Mono'; +import Text from './components/Text'; +import { COLOR_GRADIENT, COLOR_PRIMARY, TITLE } from './style'; + +export type CompoundedIcon = typeof Mono & { + Avatar: typeof Avatar; + Color: typeof Color; + Combine: typeof Combine; + Text: typeof Text; + colorGradient: string; + colorPrimary: string; + title: string; +}; + +const Icons = Mono as CompoundedIcon; +Icons.Color = Color; +Icons.Text = Text; +Icons.Combine = Combine; +Icons.Avatar = Avatar; +Icons.colorPrimary = COLOR_PRIMARY; +Icons.colorGradient = COLOR_GRADIENT; +Icons.title = TITLE; + +export default Icons; diff --git a/src/Novita/style.ts b/src/Novita/style.ts new file mode 100644 index 0000000..cfef6cb --- /dev/null +++ b/src/Novita/style.ts @@ -0,0 +1,5 @@ +export const TITLE = 'novita.ai'; +export const TEXT_MULTIPLE = 0.7; +export const SPACE_MULTIPLE = 0.25; +export const COLOR_PRIMARY = '#6847f5'; +export const COLOR_GRADIENT = 'linear-gradient(-45deg, #A717FF, #2622FF)'; diff --git a/src/components/Editor/Color.tsx b/src/components/Editor/Color.tsx index c4b367a..45c0b4f 100644 --- a/src/components/Editor/Color.tsx +++ b/src/components/Editor/Color.tsx @@ -30,9 +30,9 @@ const Preview = memo(({ svg, title, viewbox }) => { return ( -

{title}

+

{title}

- + {`import { forwardRef } from 'react'; import type { IconType } from '@/types'; diff --git a/src/components/Editor/Mono.tsx b/src/components/Editor/Mono.tsx index 411f6d9..be91937 100644 --- a/src/components/Editor/Mono.tsx +++ b/src/components/Editor/Mono.tsx @@ -30,9 +30,9 @@ const Preview = memo(({ svg, title, viewbox }) => { return ( -

{title}

+

{title}

- + {`import { forwardRef } from 'react'; import type { IconType } from '@/types'; diff --git a/src/components/Editor/Preview.tsx b/src/components/Editor/Preview.tsx index 15c0f92..9840556 100644 --- a/src/components/Editor/Preview.tsx +++ b/src/components/Editor/Preview.tsx @@ -35,12 +35,12 @@ const Preview = forwardRef(({ svg, title, precent return ( -

{title}

+

{title}

{precent && {precent}}
{svg} - + {svg} diff --git a/src/components/Editor/Text.tsx b/src/components/Editor/Text.tsx index f03ab1f..74f84e2 100644 --- a/src/components/Editor/Text.tsx +++ b/src/components/Editor/Text.tsx @@ -30,9 +30,9 @@ const Preview = memo(({ svg, title, viewbox }) => { return ( -

{title}

+

{title}

- + {`import { forwardRef } from 'react'; import type { IconType } from '@/types'; diff --git a/src/hooks/useFillId.ts b/src/hooks/useFillId.ts index 3134a85..dcd9d93 100644 --- a/src/hooks/useFillId.ts +++ b/src/hooks/useFillId.ts @@ -1,18 +1,25 @@ +import { useMemo } from 'react'; + export const useFillId = (namespace: string) => { const id = `lobe-icons-${namespace.toLowerCase()}-fill`; - return { - fill: `url(#${id})`, - id, - }; + return useMemo( + () => ({ + fill: `url(#${id})`, + id, + }), + [namespace], + ); }; export const useFillIds = (namespace: string, length: number) => { - const ids = Array.from({ length }, (_, i) => { - const id = `lobe-icons-${namespace.toLowerCase()}-fill-${i}`; - return { - fill: `url(#${id})`, - id, - }; - }); - return ids; + return useMemo(() => { + const ids = Array.from({ length }, (_, i) => { + const id = `lobe-icons-${namespace.toLowerCase()}-fill-${i}`; + return { + fill: `url(#${id})`, + id, + }; + }); + return ids; + }, [namespace]); }; diff --git a/src/index.ts b/src/index.ts index 0715045..c457c2f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,8 @@ export { default as Adobe, type CompoundedIcon as AdobeProps } from './Adobe'; export { default as AdobeFirefly, type CompoundedIcon as AdobeFireflyProps } from './AdobeFirefly'; export { default as Ai21, type CompoundedIcon as Ai21Props } from './Ai21'; +export { default as Ai360, type CompoundedIcon as Ai360Props } from './Ai360'; +export { default as AiMass, type CompoundedIcon as AiMassProps } from './AiMass'; export { default as Alibaba, type CompoundedIcon as AlibabaProps } from './Alibaba'; export { default as AntGroup, type CompoundedIcon as AntGroupProps } from './AntGroup'; export { default as Anthropic, type CompoundedIcon as AnthropicProps } from './Anthropic'; @@ -48,6 +50,7 @@ export { default as Midjourney, type CompoundedIcon as MidjourneyProps } from '. export { default as Minimax, type CompoundedIcon as MinimaxProps } from './Minimax'; export { default as Mistral, type CompoundedIcon as MistralProps } from './Mistral'; export { default as Moonshot, type CompoundedIcon as MoonshotProps } from './Moonshot'; +export { default as Novita, type CompoundedIcon as NovitaProps } from './Novita'; export { default as Nvidia, type CompoundedIcon as NvidiaProps } from './Nvidia'; export { default as Ollama, type CompoundedIcon as OllamaProps } from './Ollama'; export { default as OpenAI, type CompoundedIcon as OpenAIProps } from './OpenAI';