diff --git a/README.md b/README.md
index 560bc447..bbc783ef 100644
--- a/README.md
+++ b/README.md
@@ -55,68 +55,15 @@ Contributions, corrections & requests can be made on GitHub.
- 🌳 **Tree Shakable**: The collection is tree-shakable, ensuring that you only import the icons that you use, which helps in reducing the overall bundle size of your project.
- 👥 **Active Community**: Lobe Icons boasts an active community of designers and developers. Engage with us on platforms like GitHub and Discord to contribute or get support.
+---
+
**Supported brands:**
-- [x] [01.AI (零一万物)](https://icons.lobehub.com/components/zero-one)
-- [x] [Alibaba](https://icons.lobehub.com/components/alibaba)
-- [x] [AntGroup](https://icons.lobehub.com/components/ant-group)
-- [x] [Anthropic](https://icons.lobehub.com/components/anthropic)
-- [x] [Automatic1111 (SD Webui)](https://icons.lobehub.com/components/automatic)
-- [x] [AWS](https://icons.lobehub.com/components/aws)
-- [x] [AWS (Bedrock)](https://icons.lobehub.com/components/bedrock)
-- [x] [Baichuan (百川)](https://icons.lobehub.com/components/baichuan)
-- [x] [Baidu](https://icons.lobehub.com/components/baidu)
-- [x] [ByteDance](https://icons.lobehub.com/components/byte-dance)
-- [x] [Claude](https://icons.lobehub.com/components/claude)
-- [x] [Cloudflare](https://icons.lobehub.com/components/cloudflare)
-- [x] [Cloudflare (WorkersAI)](https://icons.lobehub.com/components/workers-ai)
-- [x] [Cohere (Command)](https://icons.lobehub.com/components/cohere)
-- [x] [Databricks (DBRX)](https://icons.lobehub.com/components/dbrx)
-- [x] [DeepMind(Google)](https://icons.lobehub.com/components/deep-mind)
-- [x] [Fireworks](https://icons.lobehub.com/components/fireworks)
-- [x] [Github](https://icons.lobehub.com/components/github)
-- [x] [Github Copilot](https://icons.lobehub.com/components/github-copilot)
-- [x] [Google](https://icons.lobehub.com/components/google)
-- [x] [Google (Colab)](https://icons.lobehub.com/components/colab)
-- [x] [Google (Gemini)](https://icons.lobehub.com/components/gemini)
-- [x] [Google (Gemma)](https://icons.lobehub.com/components/gemma)
-- [x] [Grok](https://icons.lobehub.com/components/grok)
-- [x] [Groq](https://icons.lobehub.com/components/groq)
-- [x] [HuggingFace](https://icons.lobehub.com/components/hugging-face)
-- [x] [Hunyuan (腾讯混元)](https://icons.lobehub.com/components/hunyuan)
-- [x] [Langfuse](https://icons.lobehub.com/components/langfuse)
-- [x] [LLaVA](https://icons.lobehub.com/components/l-la-va)
-- [x] [Meta](https://icons.lobehub.com/components/meta)
-- [x] [Microsoft (Azure)](https://icons.lobehub.com/components/azure)
-- [x] [Microsoft Copilot](https://icons.lobehub.com/components/copilot)
-- [x] [Midjourney](https://icons.lobehub.com/components/midjourney)
-- [x] [Minimax](https://icons.lobehub.com/components/minimax)
-- [x] [Mistral](https://icons.lobehub.com/components/mistral)
-- [x] [Moonshot (月之暗面)](https://icons.lobehub.com/components/moonshot)
-- [x] [Nvidia (ChatWithRTX)](https://icons.lobehub.com/components/nvidia)
-- [x] [Ollama](https://icons.lobehub.com/components/ollama)
-- [x] [OpenAI (ChatGPT)](https://icons.lobehub.com/components/open-ai)
-- [x] [OpenAI (DALL·E)](https://icons.lobehub.com/components/dalle)
-- [x] [OpenChat](https://icons.lobehub.com/components/open-chat)
-- [x] [OpenRouter](https://icons.lobehub.com/components/open-router)
-- [x] [Perplexity](https://icons.lobehub.com/components/perplexity)
-- [x] [Pollinations](https://icons.lobehub.com/components/pollinations)
-- [x] [Qingyan (智谱清言)](https://icons.lobehub.com/components/qingyan)
-- [x] [Replicate](https://icons.lobehub.com/components/replicate)
-- [x] [RWKV](https://icons.lobehub.com/components/rwkv)
-- [x] [Spark (讯飞星火)](https://icons.lobehub.com/components/spark)
-- [x] [Stability (StableDiffusion)](https://icons.lobehub.com/components/stability)
-- [x] [Suno](https://icons.lobehub.com/components/suno)
-- [x] [Tencent](https://icons.lobehub.com/components/tencent)
-- [x] [together.ai](https://icons.lobehub.com/components/together)
-- [x] [Tongyi (通义)](https://icons.lobehub.com/components/tongyi)
-- [x] [Wenxin (文心)](https://icons.lobehub.com/components/wenxin)
-- [x] [Yi (零一万物)](https://icons.lobehub.com/components/yi)
-- [x] [Zeabur](https://icons.lobehub.com/components/zeabur)
-- [x] [Zhipu (ChatGLM)](https://icons.lobehub.com/components/chat-glm)
-- [x] [Zhipu (智谱)](https://icons.lobehub.com/components/zhipu)
+| 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)
✅ [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)
✅ [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)
✅ [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)
✅ [Stability (StableDiffusion)](https://icons.lobehub.com/components/stability)
✅ [Tencent](https://icons.lobehub.com/components/tencent)
✅ [together.ai](https://icons.lobehub.com/components/together)
✅ [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 74dcb65f..ae5302e6 100644
--- a/package.json
+++ b/package.json
@@ -77,15 +77,15 @@
"devDependencies": {
"@commitlint/cli": "^18.6.1",
"@lobehub/lint": "latest",
- "@lobehub/ui": "^1.138.0",
- "@testing-library/react": "^14.3.0",
+ "@lobehub/ui": "^1.138.5",
+ "@testing-library/react": "^14.3.1",
"@types/lodash-es": "^4.17.12",
"@types/pangu": "^4.0.2",
"@types/query-string": "^6.3.0",
- "@types/react": "^18.2.75",
- "@types/react-dom": "^18.2.24",
+ "@types/react": "^18.2.79",
+ "@types/react-dom": "^18.2.25",
"@vitest/coverage-v8": "latest",
- "antd": "^5.16.1",
+ "antd": "^5.16.2",
"antd-style": "^3.6.2",
"babel-plugin-antd-style": "latest",
"commitlint": "^18.6.1",
@@ -95,13 +95,14 @@
"dumi-theme-lobehub": "latest",
"eslint": "^8.57.0",
"father": "^4.4.0",
- "front-matter": "^4.0.2",
"glob": "^10.3.12",
+ "gray-matter": "^4.0.3",
"husky": "^8.0.3",
"jsdom": "^23.2.0",
"lint-staged": "^15.2.2",
"lodash-es": "^4.17.21",
"lucide-react": "latest",
+ "markdown-table": "^3.0.3",
"prettier": "^3.2.5",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -111,7 +112,7 @@
"stylelint": "^15.11.0",
"svgo-browser": "^1.3.8",
"tsx": "^4.7.2",
- "typescript": "^5.4.4",
+ "typescript": "^5.4.5",
"vitest": "latest"
},
"peerDependencies": {
diff --git a/scripts/genMdList.ts b/scripts/genMdList.ts
index 72c130c6..8ea41c6c 100644
--- a/scripts/genMdList.ts
+++ b/scripts/genMdList.ts
@@ -1,6 +1,7 @@
-import fm from 'front-matter';
import { globSync } from 'glob';
+import matter from 'gray-matter';
import { kebabCase } from 'lodash-es';
+import { markdownTable } from 'markdown-table';
import { readFileSync, writeFileSync } from 'node:fs';
import { resolve } from 'node:path';
@@ -13,30 +14,47 @@ const updateReadme = (split: string, md: string, content: string): string => {
mds[1] = [' ', content, ' '].join('\n\n');
return mds.join(split);
};
+
+const genMd = (
+ data: {
+ group: string;
+ path: string;
+ title: string;
+ }[],
+ filter: 'model' | 'provider' | 'application',
+): string =>
+ data
+ .sort((a, b) => a.title.localeCompare(b.title))
+ .filter((meta) => meta.group === filter)
+ .map((meta) => `✅ [${meta.title}](${BASE_URL}${kebabCase(meta.path)})`)
+ .join('
');
+
const run = () => {
const mds = globSync(resolve(ROOT_PATH, './src/**/index.md').replace('\\', '/'));
- const metas = mds
+ const metas: any = mds
.map((md) => {
- const meta: any = fm(readFileSync(md, 'utf8')).attributes;
+ const { data } = matter(readFileSync(md, 'utf8'));
const paths = md.split('/');
- if (!['model', 'provider', 'application'].includes(String(meta.group).toLowerCase()))
- return false;
+ const group = String(data.group).toLowerCase();
+ if (!['model', 'provider', 'application'].includes(group)) return false;
return {
- ...meta,
+ ...data,
+ group,
path: paths.at(-2),
};
})
.filter(Boolean);
- const contents = metas
- .sort((a, b) => a.title.localeCompare(b.title))
- .map((meta) => `- [x] [${meta.title}](${BASE_URL}${kebabCase(meta.path)})`);
+ const contents = markdownTable([
+ ['Model', 'Provider', 'Application'],
+ [genMd(metas, 'model'), genMd(metas, 'provider'), genMd(metas, 'application')],
+ ]);
const readmePath = resolve(ROOT_PATH, 'README.md');
const readme = readFileSync(readmePath, 'utf8');
- const newReadme = updateReadme('', readme, contents.join('\n'));
+ const newReadme = updateReadme('', readme, contents);
writeFileSync(readmePath, newReadme, 'utf8');
diff --git a/src/Adobe/components/Avatar.tsx b/src/Adobe/components/Avatar.tsx
new file mode 100644
index 00000000..5f883844
--- /dev/null
+++ b/src/Adobe/components/Avatar.tsx
@@ -0,0 +1,22 @@
+import { memo } from 'react';
+
+import IconAvatar, { type IconAvatarProps } from '@/IconAvatar';
+
+import { COLOR_PRIMARY, TITLE } from '../style';
+import Mono from './Mono';
+
+export type AvatarProps = Omit;
+
+const Avatar = memo(({ background, ...rest }) => {
+ return (
+
+ );
+});
+
+export default Avatar;
diff --git a/src/Adobe/components/Color.tsx b/src/Adobe/components/Color.tsx
new file mode 100644
index 00000000..c6f948d8
--- /dev/null
+++ b/src/Adobe/components/Color.tsx
@@ -0,0 +1,26 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/Adobe/components/Combine.tsx b/src/Adobe/components/Combine.tsx
new file mode 100644
index 00000000..2d4ede6f
--- /dev/null
+++ b/src/Adobe/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/Adobe/components/Mono.tsx b/src/Adobe/components/Mono.tsx
new file mode 100644
index 00000000..83fdd105
--- /dev/null
+++ b/src/Adobe/components/Mono.tsx
@@ -0,0 +1,28 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/Adobe/components/Text.tsx b/src/Adobe/components/Text.tsx
new file mode 100644
index 00000000..45802f0a
--- /dev/null
+++ b/src/Adobe/components/Text.tsx
@@ -0,0 +1,25 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/Adobe/index.md b/src/Adobe/index.md
new file mode 100644
index 00000000..d1bf6d3c
--- /dev/null
+++ b/src/Adobe/index.md
@@ -0,0 +1,72 @@
+---
+nav: Components
+group: Application
+title: Adobe
+atomId: Adobe
+description: https://adobe.com
+---
+
+## Icons
+
+```tsx
+import { Adobe } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+);
+```
+
+## Text
+
+```tsx
+import { Adobe } from '@lobehub/icons';
+
+export default () => ;
+```
+
+## Combine
+
+```tsx
+import { Adobe } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+);
+```
+
+## Avatars
+
+```tsx
+import { Adobe } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+);
+```
+
+## Colors
+
+```tsx
+import { Adobe } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+import ColorPreview from '../components/ColorPreview';
+
+export default () => (
+
+
+
+);
+```
diff --git a/src/Adobe/index.ts b/src/Adobe/index.ts
new file mode 100644
index 00000000..9cfb5089
--- /dev/null
+++ b/src/Adobe/index.ts
@@ -0,0 +1,24 @@
+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/Adobe/style.ts b/src/Adobe/style.ts
new file mode 100644
index 00000000..3a980056
--- /dev/null
+++ b/src/Adobe/style.ts
@@ -0,0 +1,4 @@
+export const TITLE = 'Adobe';
+export const TEXT_MULTIPLE = 0.6;
+export const SPACE_MULTIPLE = 0.3;
+export const COLOR_PRIMARY = '#EB1000';
diff --git a/src/AdobeFirefly/components/Avatar.tsx b/src/AdobeFirefly/components/Avatar.tsx
new file mode 100644
index 00000000..5ad2dc37
--- /dev/null
+++ b/src/AdobeFirefly/components/Avatar.tsx
@@ -0,0 +1,23 @@
+import { memo } from 'react';
+
+import IconAvatar, { type IconAvatarProps } from '@/IconAvatar';
+
+import { COLOR_PRIMARY, TITLE } from '../style';
+import Mono from './Mono';
+
+export type AvatarProps = Omit;
+
+const Avatar = memo(({ background, ...rest }) => {
+ return (
+
+ );
+});
+
+export default Avatar;
diff --git a/src/AdobeFirefly/components/Color.tsx b/src/AdobeFirefly/components/Color.tsx
new file mode 100644
index 00000000..f9205e43
--- /dev/null
+++ b/src/AdobeFirefly/components/Color.tsx
@@ -0,0 +1,28 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/AdobeFirefly/components/Combine.tsx b/src/AdobeFirefly/components/Combine.tsx
new file mode 100644
index 00000000..eaad93ca
--- /dev/null
+++ b/src/AdobeFirefly/components/Combine.tsx
@@ -0,0 +1,25 @@
+import { memo } from 'react';
+
+import IconCombine, { type IconCombineProps } from '@/IconCombine';
+
+import { SPACE_MULTIPLE, TEXT_MULTIPLE, TITLE } from '../style';
+import Avatar from './Avatar';
+import Text from './Text';
+
+export type CombineProps = Omit;
+
+const Combine = memo(({ iconProps, ...rest }) => {
+ return (
+
+ );
+});
+
+export default Combine;
diff --git a/src/AdobeFirefly/components/Mono.tsx b/src/AdobeFirefly/components/Mono.tsx
new file mode 100644
index 00000000..4bb905f2
--- /dev/null
+++ b/src/AdobeFirefly/components/Mono.tsx
@@ -0,0 +1,26 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/AdobeFirefly/components/Text.tsx b/src/AdobeFirefly/components/Text.tsx
new file mode 100644
index 00000000..e86740be
--- /dev/null
+++ b/src/AdobeFirefly/components/Text.tsx
@@ -0,0 +1,25 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/AdobeFirefly/index.md b/src/AdobeFirefly/index.md
new file mode 100644
index 00000000..3526ccbd
--- /dev/null
+++ b/src/AdobeFirefly/index.md
@@ -0,0 +1,67 @@
+---
+nav: Components
+group: Application
+title: Adobe (Firefly)
+atomId: AdobeFirefly
+description: https://firefly.adobe.com
+---
+
+## Icons
+
+```tsx
+import { AdobeFirefly } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+);
+```
+
+## Text
+
+```tsx
+import { AdobeFirefly } from '@lobehub/icons';
+
+export default () => ;
+```
+
+## Combine
+
+```tsx
+import { AdobeFirefly } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => ;
+```
+
+## Avatars
+
+```tsx
+import { AdobeFirefly } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+);
+```
+
+## Colors
+
+```tsx
+import { AdobeFirefly } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+import ColorPreview from '../components/ColorPreview';
+
+export default () => (
+
+
+
+);
+```
diff --git a/src/AdobeFirefly/index.ts b/src/AdobeFirefly/index.ts
new file mode 100644
index 00000000..9cfb5089
--- /dev/null
+++ b/src/AdobeFirefly/index.ts
@@ -0,0 +1,24 @@
+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/AdobeFirefly/style.ts b/src/AdobeFirefly/style.ts
new file mode 100644
index 00000000..95aa0790
--- /dev/null
+++ b/src/AdobeFirefly/style.ts
@@ -0,0 +1,4 @@
+export const TITLE = 'AdobeFirefly';
+export const TEXT_MULTIPLE = 0.75;
+export const SPACE_MULTIPLE = 0.3;
+export const COLOR_PRIMARY = '#EB1000';
diff --git a/src/Ai21/components/Avatar.tsx b/src/Ai21/components/Avatar.tsx
new file mode 100644
index 00000000..12ec59f0
--- /dev/null
+++ b/src/Ai21/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, size, ...rest }) => {
+ return (
+
+ );
+});
+
+export default Avatar;
diff --git a/src/Ai21/components/Brand.tsx b/src/Ai21/components/Brand.tsx
new file mode 100644
index 00000000..ae48b297
--- /dev/null
+++ b/src/Ai21/components/Brand.tsx
@@ -0,0 +1 @@
+export { default } from './Text';
diff --git a/src/Ai21/components/BrandColor.tsx b/src/Ai21/components/BrandColor.tsx
new file mode 100644
index 00000000..cdaafcde
--- /dev/null
+++ b/src/Ai21/components/BrandColor.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 (
+
+ );
+});
+
+export default Icon;
diff --git a/src/Ai21/components/Color.tsx b/src/Ai21/components/Color.tsx
new file mode 100644
index 00000000..04bf0a19
--- /dev/null
+++ b/src/Ai21/components/Color.tsx
@@ -0,0 +1,36 @@
+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 { id, fill } = useFillId(TITLE);
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/Ai21/components/Combine.tsx b/src/Ai21/components/Combine.tsx
new file mode 100644
index 00000000..312e02e3
--- /dev/null
+++ b/src/Ai21/components/Combine.tsx
@@ -0,0 +1,24 @@
+import { memo } from 'react';
+
+import IconCombine, { type IconCombineProps } from '@/IconCombine';
+
+import { SPACE_MULTIPLE, TEXT_MULTIPLE, TITLE } from '../style';
+import Avatar from './Avatar';
+import Text from './Text';
+
+export type CombineProps = Omit;
+const Combine = memo(({ iconProps, ...rest }) => {
+ return (
+
+ );
+});
+
+export default Combine;
diff --git a/src/Ai21/components/Mono.tsx b/src/Ai21/components/Mono.tsx
new file mode 100644
index 00000000..fecab91e
--- /dev/null
+++ b/src/Ai21/components/Mono.tsx
@@ -0,0 +1,26 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/Ai21/components/Text.tsx b/src/Ai21/components/Text.tsx
new file mode 100644
index 00000000..70ed98e2
--- /dev/null
+++ b/src/Ai21/components/Text.tsx
@@ -0,0 +1,28 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/Ai21/index.md b/src/Ai21/index.md
new file mode 100644
index 00000000..0e83880f
--- /dev/null
+++ b/src/Ai21/index.md
@@ -0,0 +1,82 @@
+---
+nav: Components
+group: Model
+title: Ai21Labs (Jamba)
+atomId: Ai21
+description: https://huggingface.co/ai21labs
+---
+
+## Icons
+
+```tsx
+import { Ai21 } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+);
+```
+
+## Text
+
+```tsx
+import { Ai21 } from '@lobehub/icons';
+
+export default () => ;
+```
+
+## Combine
+
+```tsx
+import { Ai21 } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => ;
+```
+
+## Brands
+
+```tsx
+import { Ai21 } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+);
+```
+
+## Avatars
+
+```tsx
+import { Ai21 } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+
+);
+```
+
+## Colors
+
+```tsx
+import { Ai21 } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+import ColorPreview from '../components/ColorPreview';
+
+export default () => (
+
+
+
+
+);
+```
diff --git a/src/Ai21/index.ts b/src/Ai21/index.ts
new file mode 100644
index 00000000..be14e1dd
--- /dev/null
+++ b/src/Ai21/index.ts
@@ -0,0 +1,32 @@
+import Avatar from './components/Avatar';
+import Brand from './components/Brand';
+import BrandColor from './components/BrandColor';
+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;
+ Brand: typeof Brand;
+ BrandColor: typeof BrandColor;
+ 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.Brand = Brand;
+Icons.BrandColor = BrandColor;
+Icons.Combine = Combine;
+Icons.Avatar = Avatar;
+Icons.colorPrimary = COLOR_PRIMARY;
+Icons.colorGradient = COLOR_GRADIENT;
+Icons.title = TITLE;
+export default Icons;
diff --git a/src/Ai21/style.ts b/src/Ai21/style.ts
new file mode 100644
index 00000000..25936002
--- /dev/null
+++ b/src/Ai21/style.ts
@@ -0,0 +1,5 @@
+export const TITLE = 'AI21';
+export const TEXT_MULTIPLE = 0.7;
+export const SPACE_MULTIPLE = 0.2;
+export const COLOR_PRIMARY = '#E91E63';
+export const COLOR_GRADIENT = 'linear-gradient(-45deg, #F68CB2, #E91E63)';
diff --git a/src/DeepMind/index.md b/src/DeepMind/index.md
index 69dee67c..c5315bff 100644
--- a/src/DeepMind/index.md
+++ b/src/DeepMind/index.md
@@ -1,7 +1,7 @@
---
nav: Components
group: Provider
-title: DeepMind(Google)
+title: Google(DeepMind)
atomId: DeepMind
description: https://deepmind.google
---
diff --git a/src/FishAudio/components/Avatar.tsx b/src/FishAudio/components/Avatar.tsx
new file mode 100644
index 00000000..d6bb8eb0
--- /dev/null
+++ b/src/FishAudio/components/Avatar.tsx
@@ -0,0 +1,22 @@
+import { memo } from 'react';
+
+import IconAvatar, { type IconAvatarProps } from '@/IconAvatar';
+
+import { COLOR_PRIMARY, TITLE } from '../style';
+import Mono from './Mono';
+
+export type AvatarProps = Omit;
+
+const Avatar = memo(({ background, ...rest }) => {
+ return (
+
+ );
+});
+
+export default Avatar;
diff --git a/src/FishAudio/components/Combine.tsx b/src/FishAudio/components/Combine.tsx
new file mode 100644
index 00000000..dfa6ada1
--- /dev/null
+++ b/src/FishAudio/components/Combine.tsx
@@ -0,0 +1,24 @@
+import { memo } from 'react';
+
+import IconCombine, { type IconCombineProps } from '@/IconCombine';
+
+import { SPACE_MULTIPLE, TEXT_MULTIPLE, TITLE } from '../style';
+import Mono from './Mono';
+import Text from './Text';
+
+export type CombineProps = Omit;
+
+const Combine = memo(({ ...rest }) => {
+ return (
+
+ );
+});
+
+export default Combine;
diff --git a/src/FishAudio/components/Mono.tsx b/src/FishAudio/components/Mono.tsx
new file mode 100644
index 00000000..2a472a84
--- /dev/null
+++ b/src/FishAudio/components/Mono.tsx
@@ -0,0 +1,32 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/FishAudio/components/Text.tsx b/src/FishAudio/components/Text.tsx
new file mode 100644
index 00000000..d3fb4e1e
--- /dev/null
+++ b/src/FishAudio/components/Text.tsx
@@ -0,0 +1,25 @@
+import { forwardRef } from 'react';
+
+import type { IconType } from '@/types';
+
+import { TITLE } from '../style';
+
+const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
+ return (
+
+ );
+});
+
+export default Icon;
diff --git a/src/FishAudio/index.md b/src/FishAudio/index.md
new file mode 100644
index 00000000..352d1898
--- /dev/null
+++ b/src/FishAudio/index.md
@@ -0,0 +1,66 @@
+---
+nav: Components
+group: Model
+title: FishAudio (Bert)
+atomId: FishAudio
+description: /~https://github.com/fishaudio
+---
+
+## Icons
+
+```tsx
+import { FishAudio } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => ;
+```
+
+## Text
+
+```tsx
+import { FishAudio } from '@lobehub/icons';
+
+export default () => ;
+```
+
+## Combine
+
+```tsx
+import { FishAudio } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+);
+```
+
+## Avatars
+
+```tsx
+import { FishAudio } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+export default () => (
+
+
+
+
+);
+```
+
+## Colors
+
+```tsx
+import { FishAudio } from '@lobehub/icons';
+import { Flexbox } from 'react-layout-kit';
+
+import ColorPreview from '../components/ColorPreview';
+
+export default () => (
+
+
+
+);
+```
diff --git a/src/FishAudio/index.ts b/src/FishAudio/index.ts
new file mode 100644
index 00000000..e7cb073a
--- /dev/null
+++ b/src/FishAudio/index.ts
@@ -0,0 +1,21 @@
+import Avatar from './components/Avatar';
+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;
+ Combine: typeof Combine;
+ Text: typeof Text;
+ colorPrimary: string;
+ title: string;
+};
+
+const Icons = Mono as CompoundedIcon;
+Icons.Text = Text;
+Icons.Combine = Combine;
+Icons.Avatar = Avatar;
+Icons.colorPrimary = COLOR_PRIMARY;
+Icons.title = TITLE;
+export default Icons;
diff --git a/src/FishAudio/style.ts b/src/FishAudio/style.ts
new file mode 100644
index 00000000..c33df1a9
--- /dev/null
+++ b/src/FishAudio/style.ts
@@ -0,0 +1,4 @@
+export const TITLE = 'FishAudio';
+export const TEXT_MULTIPLE = 0.5;
+export const SPACE_MULTIPLE = 0.4;
+export const COLOR_PRIMARY = '#fff';
diff --git a/src/index.ts b/src/index.ts
index 725d088a..cec54237 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,3 +1,6 @@
+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 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';
@@ -19,6 +22,7 @@ export { default as Dalle, type CompoundedIcon as DalleProps } from './Dalle';
export { default as Dbrx, type CompoundedIcon as DbrxProps } from './Dbrx';
export { default as DeepMind, type CompoundedIcon as DeepMindProps } from './DeepMind';
export { default as Fireworks, type CompoundedIcon as FireworksProps } from './Fireworks';
+export { default as FishAudio, type CompoundedIcon as FishAudioProps } from './FishAudio';
export { default as Gemini, type CompoundedIcon as GeminiProps } from './Gemini';
export { default as Gemma, type CompoundedIcon as GemmaProps } from './Gemma';
export { default as Github, type CompoundedIcon as GithubProps } from './Github';