@yldm-tech/ai-logo 1.6.1 → 1.6.3

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/README.md CHANGED
@@ -34,6 +34,7 @@ Contributions, corrections & requests can be made on GitHub.
34
34
  - [📦 Installation](#-installation)
35
35
  - [I'm an Agent](#im-an-agent)
36
36
  - [I'm an Human](#im-an-human)
37
+ - [Usage](#usage)
37
38
  - [Packages](#packages)
38
39
  - [✨ Features](#-features)
39
40
  - [🤯 CDN Usage](#-cdn-usage)
@@ -75,10 +76,45 @@ The unscoped name `ai-logo` also works. It is an alias: a few hundred bytes that
75
76
 
76
77
  #### Peer dependencies
77
78
 
78
- `react`, `react-dom`, `antd` and `@lobehub/ui` are peer dependencies. npm 7+, pnpm 8+ and bun install those for you; Yarn Classic does not, so install them alongside:
79
+ `react`, `react-dom` and `antd` are peer dependencies. npm 7+, pnpm 8+ and bun install those for you; Yarn Classic does not, so install them alongside:
79
80
 
80
81
  ```bash
81
- yarn add react react-dom antd @lobehub/ui
82
+ yarn add react react-dom antd
83
+ ```
84
+
85
+ `antd` is needed because `ModelTag` renders an antd `Tag` and `antd-style` — a runtime dependency of this package — declares antd as its own peer. Nothing else is required: the layout and icon wrappers the components use are part of this package.
86
+
87
+ ### Usage
88
+
89
+ Import a brand directly when you know which one you need. Every icon is a compound component: the default export is the mono mark, with `.Color`, `.Text`, `.Avatar`, `.Combine` and the rest attached when that brand has them.
90
+
91
+ ```tsx
92
+ import { Anthropic, OpenAI } from "@yldm-tech/ai-logo";
93
+
94
+ <OpenAI size={24} />
95
+ <OpenAI.Color size={24} />
96
+ <OpenAI.Combine size={24} type="color" />
97
+ <Anthropic.Avatar size={40} shape="circle" />;
98
+ ```
99
+
100
+ When the brand is only known at runtime — a provider id from an API, a model name from a config — use the lookup components instead. They take an arbitrary string and fall back to a neutral icon when nothing matches:
101
+
102
+ ```tsx
103
+ import { AgentIcon, ModelIcon, ProviderIcon } from "@yldm-tech/ai-logo";
104
+
105
+ <ProviderIcon provider="anthropic" size={24} type="color" />
106
+ <ModelIcon model="claude-sonnet-4" size={24} type="avatar" />
107
+ <AgentIcon agent="cursor" size={24} />;
108
+ ```
109
+
110
+ These carry their whole mapping table, so prefer the direct import where you can — see the bundle-size note under [Features](#-features).
111
+
112
+ `toc` is exported too, if you want to enumerate the set:
113
+
114
+ ```tsx
115
+ import { toc } from "@yldm-tech/ai-logo";
116
+
117
+ toc.map((entry) => entry.id); // "OpenAI", "Anthropic", …
82
118
  ```
83
119
 
84
120
  ### Packages
@@ -99,7 +135,7 @@ Static SVG, PNG and WebP renders of every icon live in this repository under `pa
99
135
  ## ✨ Features
100
136
 
101
137
  - 🚀 **Lightweight & Scalable**: Icons are designed to be lightweight, utilizing highly optimized scalable vector graphics (SVG) for the best performance and quality.
102
- - 🌳 **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.
138
+ - 🌳 **Tree Shakable**: Importing a brand directly — `import { OpenAI } from "@yldm-tech/ai-logo"` — pulls in that brand and nothing else, around 216 kB against the full set. The lookup components are the exception: `ProviderIcon`, `ModelIcon` and `AgentIcon` resolve an arbitrary id string at runtime, so they necessarily carry their whole mapping table and cost roughly 1.7 MB. Reach for them when the id is dynamic, and for the brand export when it is not. Both sizes are pinned by a budget in `apps/demo/treeshake`.
103
139
  - 🎨 **Every Major Model**: Over 320 AI company, model and application brands, each with mono, color, text, combined and avatar variants.
104
140
 
105
141
  ---
@@ -107,7 +143,7 @@ Static SVG, PNG and WebP renders of every icon live in this repository under `pa
107
143
  **Supported brands:**
108
144
 
109
145
  <details>
110
- <summary><kbd>Show all 322 brands</kbd></summary>
146
+ <summary><kbd>Show all 323 brands</kbd></summary>
111
147
 
112
148
  <!-- ICON LIST -->
113
149
 
@@ -244,7 +280,7 @@ Static SVG, PNG and WebP renders of every icon live in this repository under `pa
244
280
  | | | <a href="https://github.com/yldm-tech/ai-logo/tree/main/src/Zeabur"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/yldm-tech/ai-logo/refs/heads/main/packages/static-png/dark/zeabur-color.png" /><img height="56px" width="56px" src="https://raw.githubusercontent.com/yldm-tech/ai-logo/refs/heads/main/packages/static-png/light/zeabur-color.png" /></picture><br/>Zeabur |
245
281
  | | | <a href="https://github.com/yldm-tech/ai-logo/tree/main/src/Zencoder"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/yldm-tech/ai-logo/refs/heads/main/packages/static-png/dark/zencoder-color.png" /><img height="56px" width="56px" src="https://raw.githubusercontent.com/yldm-tech/ai-logo/refs/heads/main/packages/static-png/light/zencoder-color.png" /></picture><br/>Zencoder |
246
282
 
247
- <!-- ICON LIST -->
283
+ <!-- ICON LIST -->
248
284
 
249
285
  </details>
250
286
 
@@ -261,6 +297,8 @@ Static SVG, PNG and WebP renders of every icon live in this repository under `pa
261
297
 
262
298
  Every icon is served as a static SVG, PNG and WebP render from `ailogo.yldm.ai`. No install, no build step — just an `<img>` tag.
263
299
 
300
+ > The asset paths below are served by a Cloudflare rule in front of the docs site, not by the docs build. `/svg/*`, `/png/*`, `/webp/*` and `/avatar/*` are rewritten onto the `packages/static-*` directories; without that rule those paths 404 while the rest of the site works. If you fork this project, either recreate the rule or use `getLobeIconCDN`, which returns raw GitHub and npm URLs that need no infrastructure.
301
+
264
302
  ### `A` CDN with SVG
265
303
 
266
304
  ```html
@@ -387,7 +425,7 @@ WebP renders are the smallest of the three and also ship light and dark variants
387
425
  | `WEBP` | `/webp/{light,dark}/…webp` | light / dark |
388
426
  | `Avatar` | `/avatar/[ICON SLUG].webp` | square avatars |
389
427
 
390
- The icon slug is the component name in kebab-case — `OpenAI` becomes `openai`, `AdobeFirefly` becomes `adobe-firefly`. Icons that have a colour variant expose it with a `-color` suffix.
428
+ The icon slug is the component name lowercased, with nothing inserted between words — `OpenAI` becomes `openai`, `AdobeFirefly` becomes `adobefirefly`, `AlibabaCloud` becomes `alibabacloud`. It is not kebab-case; hyphens appear only in the variant suffix. Icons that have a colour variant expose it with a `-color` suffix, and the other variants follow the same shape: `-text`, `-text-cn`, `-text-color`, `-brand`, `-brand-color`. The bare slug is the mono variant.
391
429
 
392
430
  <div align="right">
393
431
 
@@ -432,6 +470,8 @@ pnpm is required here rather than optional. The toolchain is [Vite+](https://vit
432
470
 
433
471
  Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues][github-issues-link] to get stuck in to show us what you’re made of.
434
472
 
473
+ **[CONTRIBUTING.md](./CONTRIBUTING.md)** walks through the two things people actually come here to do: adding a brand icon, and fixing an id that renders the grey fallback. The second is usually a one-line mapping change rather than a missing icon.
474
+
435
475
  **Commit messages must be gitmoji-prefixed.** Releases are cut by semantic-release using `conventional-changelog-gitmoji-config`, whose parser only recognises a type when an emoji or its `:shortcode:` comes first:
436
476
 
437
477
  ```bash
@@ -454,7 +494,8 @@ A commit without the prefix is accepted by commitlint and merged normally, but i
454
494
 
455
495
  ## 🔗 Links
456
496
 
457
- - **[npmjs.com/package/ai-logo](https://www.npmjs.com/package/ai-logo)** - The published package.
497
+ - **[npmjs.com/package/@yldm-tech/ai-logo](https://www.npmjs.com/package/@yldm-tech/ai-logo)** - The published package.
498
+ - **[npmjs.com/package/ai-logo](https://www.npmjs.com/package/ai-logo)** - The unscoped alias, which re-exports it.
458
499
  - **[Supported brands](#-features)** - Every icon in the collection, with its light and dark render.
459
500
  - **[Asset paths](#asset-paths)** - CDN paths for the static SVG, PNG and WebP renders.
460
501
 
@@ -494,9 +535,9 @@ This project is [MIT](./LICENSE) licensed and derived from [lobe-icons](https://
494
535
  [github-releasedate-shield]: https://img.shields.io/github/release-date/yldm-tech/ai-logo?labelColor=black&style=flat-square
495
536
  [github-stars-link]: https://github.com/yldm-tech/ai-logo/network/stargazers
496
537
  [github-stars-shield]: https://img.shields.io/github/stars/yldm-tech/ai-logo?color=ffcb47&labelColor=black&style=flat-square
497
- [npm-downloads-link]: https://www.npmjs.com/package/ai-logo
498
- [npm-downloads-shield]: https://img.shields.io/npm/dt/ai-logo?labelColor=black&style=flat-square
499
- [npm-release-link]: https://www.npmjs.com/package/ai-logo
500
- [npm-release-shield]: https://img.shields.io/npm/v/ai-logo?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
538
+ [npm-downloads-link]: https://www.npmjs.com/package/@yldm-tech/ai-logo
539
+ [npm-downloads-shield]: https://img.shields.io/npm/dt/%40yldm-tech%2Fai-logo?labelColor=black&style=flat-square
540
+ [npm-release-link]: https://www.npmjs.com/package/@yldm-tech/ai-logo
541
+ [npm-release-shield]: https://img.shields.io/npm/v/%40yldm-tech%2Fai-logo?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
501
542
  [pr-welcome-link]: https://github.com/yldm-tech/ai-logo/pulls
502
543
  [pr-welcome-shield]: https://img.shields.io/badge/🤯_pr_welcome-%E2%86%92-ffcb47?labelColor=black&style=for-the-badge
@@ -0,0 +1,5 @@
1
+ import { IconType } from "../../types/index.mjs";
2
+ //#region src/Anspire/components/TextColor.d.ts
3
+ declare const Icon: IconType;
4
+ //#endregion
5
+ export { Icon as default };
@@ -3,12 +3,14 @@ import Icon from "./components/Color.mjs";
3
3
  import Combine from "./components/Combine.mjs";
4
4
  import Icon$1 from "./components/Mono.mjs";
5
5
  import Icon$2 from "./components/Text.mjs";
6
+ import Icon$3 from "./components/TextColor.mjs";
6
7
  //#region src/Anspire/index.d.ts
7
8
  export type CompoundedIcon = typeof Icon$1 & {
8
9
  Avatar: typeof Avatar;
9
10
  Color: typeof Icon;
10
11
  Combine: typeof Combine;
11
12
  Text: typeof Icon$2;
13
+ TextColor: typeof Icon$3;
12
14
  colorPrimary: string;
13
15
  title: string;
14
16
  };
@@ -3,6 +3,7 @@ import Icon from "./components/Mono.mjs";
3
3
  import Avatar from "./components/Avatar.mjs";
4
4
  import Icon$1 from "./components/Color.mjs";
5
5
  import Icon$2 from "./components/Text.mjs";
6
+ import Icon$3 from "./components/TextColor.mjs";
6
7
  import Combine from "./components/Combine.mjs";
7
8
  //#region src/Anspire/index.ts
8
9
  const Icons = Icon;
@@ -10,6 +11,7 @@ Icons.Color = Icon$1;
10
11
  Icons.Text = Icon$2;
11
12
  Icons.Combine = Combine;
12
13
  Icons.Avatar = Avatar;
14
+ Icons.TextColor = Icon$3;
13
15
  Icons.colorPrimary = COLOR_PRIMARY;
14
16
  Icons.title = TITLE;
15
17
  //#endregion
@@ -1,9 +1,11 @@
1
1
  "use client";
2
+ import { useFillIds } from "../../hooks/useFillId.mjs";
2
3
  import { TITLE } from "../style.mjs";
3
4
  import { memo } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/Crusoe/components/Mono.tsx
6
7
  const Icon = memo(({ size = "1em", style, ...rest }) => {
8
+ const ids = useFillIds(TITLE, 1);
7
9
  return /* @__PURE__ */ jsxs("svg", {
8
10
  fill: "currentColor",
9
11
  fillRule: "evenodd",
@@ -22,7 +24,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
22
24
  /* @__PURE__ */ jsx("path", { d: "M12 0L4.583 6.583c-3.23 2.869-3.23 7.965 0 10.834L12 24l7.417-6.583c3.23-2.869 3.23-7.965 0-10.834L12 0z" }),
23
25
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", {
24
26
  gradientUnits: "userSpaceOnUse",
25
- id: "a",
27
+ id: ids[0].id,
26
28
  x1: "18.919",
27
29
  x2: "4.853",
28
30
  y1: "5.595",
@@ -1,9 +1,11 @@
1
1
  "use client";
2
+ import { useFillIds } from "../../hooks/useFillId.mjs";
2
3
  import { TITLE } from "../style.mjs";
3
4
  import { memo } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/CyberCut/components/Mono.tsx
6
7
  const Icon = memo(({ size = "1em", style, ...rest }) => {
8
+ const ids = useFillIds(TITLE, 2);
7
9
  return /* @__PURE__ */ jsxs("svg", {
8
10
  fill: "currentColor",
9
11
  fillRule: "evenodd",
@@ -20,12 +22,12 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
20
22
  children: [
21
23
  /* @__PURE__ */ jsx("title", { children: TITLE }),
22
24
  /* @__PURE__ */ jsx("g", {
23
- clipPath: "url(#a)",
25
+ clipPath: ids[0].fill,
24
26
  children: /* @__PURE__ */ jsx("path", { d: "M11.651 0a.327.327 0 01.336.327v6.038a.328.328 0 01-.312.326 5.314 5.314 0 00-4.998 5.308 5.314 5.314 0 004.998 5.308c.174.011.312.152.312.326v6.04a.326.326 0 01-.336.327C5.186 23.822 0 18.517 0 12S5.186.178 11.651 0zm1.28 1.755c0 .57.182 1.123.52 1.581l.314.428a.324.324 0 01.064.193v16.107c0 .07-.022.137-.064.193l-.315.427a2.665 2.665 0 00-.52 1.582v1.73h-.288V.024h.289v1.73zm2.06 1.597c0 .568.182 1.123.52 1.58l.315.428a.324.324 0 01.063.194V18.46c0 .07-.022.138-.063.194l-.315.427a2.673 2.673 0 00-.52 1.582v3.047h-.289V.304h.29v3.048zm2.06 1.616c0 .568.182 1.123.52 1.581l.315.428a.323.323 0 01.064.193v9.68c0 .07-.023.137-.064.194l-.315.427a2.664 2.664 0 00-.52 1.581v3.962h-.289V1.006h.29v3.962zm2.061 1.597c0 .57.182 1.124.52 1.581l.314.428a.323.323 0 01.064.193v6.478c0 .07-.022.137-.064.193l-.315.428a2.664 2.664 0 00-.519 1.58v4.387h-.289V2.18h.29v4.386zm2.062 1.61c0 .569.181 1.123.519 1.58l.315.428a.323.323 0 01.064.194v3.266c0 .07-.023.137-.064.194l-.315.427a2.665 2.665 0 00-.52 1.582v4.111h-.289V4.063h.29v4.111zm2.06-.765v2.428c0 .545.167 1.078.48 1.525l.228.328a.33.33 0 01.058.188v.235c0 .066-.02.131-.058.186l-.229.328c-.312.448-.479.98-.479 1.526v2.427h-.29v-9.17h.29z" })
25
27
  }),
26
28
  /* @__PURE__ */ jsxs("defs", { children: [/* @__PURE__ */ jsxs("linearGradient", {
27
29
  gradientUnits: "userSpaceOnUse",
28
- id: "b",
30
+ id: ids[1].id,
29
31
  x1: "9.608",
30
32
  x2: "25.856",
31
33
  y1: "12.343",
@@ -42,7 +44,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
42
44
  })
43
45
  ]
44
46
  }), /* @__PURE__ */ jsx("clipPath", {
45
- id: "a",
47
+ id: ids[0].id,
46
48
  children: /* @__PURE__ */ jsx("path", { d: "M0 0h24v24H0z" })
47
49
  })] })
48
50
  ]
@@ -0,0 +1,5 @@
1
+ import { IconType } from "../../types/index.mjs";
2
+ //#region src/Dify/components/TextColor.d.ts
3
+ declare const Icon: IconType;
4
+ //#endregion
5
+ export { Icon as default };
@@ -3,12 +3,14 @@ import Icon from "./components/Color.mjs";
3
3
  import Combine from "./components/Combine.mjs";
4
4
  import Icon$1 from "./components/Mono.mjs";
5
5
  import Icon$2 from "./components/Text.mjs";
6
+ import Icon$3 from "./components/TextColor.mjs";
6
7
  //#region src/Dify/index.d.ts
7
8
  export type CompoundedIcon = typeof Icon$1 & {
8
9
  Avatar: typeof Avatar;
9
10
  Color: typeof Icon;
10
11
  Combine: typeof Combine;
11
12
  Text: typeof Icon$2;
13
+ TextColor: typeof Icon$3;
12
14
  colorGradient: string;
13
15
  colorPrimary: string;
14
16
  title: string;
package/es/Dify/index.mjs CHANGED
@@ -2,14 +2,16 @@ import { COLOR_PRIMARY, TITLE } from "./style.mjs";
2
2
  import Icon from "./components/Color.mjs";
3
3
  import Avatar from "./components/Avatar.mjs";
4
4
  import Icon$1 from "./components/Text.mjs";
5
+ import Icon$2 from "./components/TextColor.mjs";
5
6
  import Combine from "./components/Combine.mjs";
6
- import Icon$2 from "./components/Mono.mjs";
7
+ import Icon$3 from "./components/Mono.mjs";
7
8
  //#region src/Dify/index.ts
8
- const Icons = Icon$2;
9
+ const Icons = Icon$3;
9
10
  Icons.Color = Icon;
10
11
  Icons.Text = Icon$1;
11
12
  Icons.Combine = Combine;
12
13
  Icons.Avatar = Avatar;
14
+ Icons.TextColor = Icon$2;
13
15
  Icons.colorPrimary = COLOR_PRIMARY;
14
16
  Icons.title = TITLE;
15
17
  //#endregion
@@ -0,0 +1,5 @@
1
+ import { IconType } from "../../types/index.mjs";
2
+ //#region src/Higress/components/TextColor.d.ts
3
+ declare const Icon: IconType;
4
+ //#endregion
5
+ export { Icon as default };
@@ -3,12 +3,14 @@ import Icon from "./components/Color.mjs";
3
3
  import Combine from "./components/Combine.mjs";
4
4
  import Icon$1 from "./components/Mono.mjs";
5
5
  import Icon$2 from "./components/Text.mjs";
6
+ import Icon$3 from "./components/TextColor.mjs";
6
7
  //#region src/Higress/index.d.ts
7
8
  export type CompoundedIcon = typeof Icon$1 & {
8
9
  Avatar: typeof Avatar;
9
10
  Color: typeof Icon;
10
11
  Combine: typeof Combine;
11
12
  Text: typeof Icon$2;
13
+ TextColor: typeof Icon$3;
12
14
  colorGradient: string;
13
15
  colorPrimary: string;
14
16
  title: string;
@@ -3,6 +3,7 @@ import Icon from "./components/Mono.mjs";
3
3
  import Avatar from "./components/Avatar.mjs";
4
4
  import Icon$1 from "./components/Color.mjs";
5
5
  import Icon$2 from "./components/Text.mjs";
6
+ import Icon$3 from "./components/TextColor.mjs";
6
7
  import Combine from "./components/Combine.mjs";
7
8
  //#region src/Higress/index.ts
8
9
  const Icons = Icon;
@@ -10,6 +11,7 @@ Icons.Color = Icon$1;
10
11
  Icons.Text = Icon$2;
11
12
  Icons.Combine = Combine;
12
13
  Icons.Avatar = Avatar;
14
+ Icons.TextColor = Icon$3;
13
15
  Icons.colorPrimary = COLOR_PRIMARY;
14
16
  Icons.colorGradient = COLOR_GRADIENT;
15
17
  Icons.title = TITLE;
@@ -1,9 +1,11 @@
1
1
  "use client";
2
+ import { useFillIds } from "../../hooks/useFillId.mjs";
2
3
  import { TITLE } from "../style.mjs";
3
4
  import { memo } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/OpenClaw/components/Mono.tsx
6
7
  const Icon = memo(({ size = "1em", style, ...rest }) => {
8
+ const ids = useFillIds(TITLE, 6);
7
9
  return /* @__PURE__ */ jsxs("svg", {
8
10
  fill: "currentColor",
9
11
  fillRule: "evenodd",
@@ -20,7 +22,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
20
22
  children: [
21
23
  /* @__PURE__ */ jsx("title", { children: TITLE }),
22
24
  /* @__PURE__ */ jsxs("g", {
23
- clipPath: "url(#a)",
25
+ clipPath: ids[0].fill,
24
26
  children: [
25
27
  /* @__PURE__ */ jsx("path", { d: "M9.046 7.104a.527.527 0 110 1.055.527.527 0 010-1.055z" }),
26
28
  /* @__PURE__ */ jsx("path", { d: "M15.376 7.104a.528.528 0 110 1.056.528.528 0 010-1.056z" }),
@@ -35,7 +37,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
35
37
  /* @__PURE__ */ jsxs("defs", { children: [
36
38
  /* @__PURE__ */ jsxs("linearGradient", {
37
39
  gradientUnits: "userSpaceOnUse",
38
- id: "b",
40
+ id: ids[1].id,
39
41
  x1: "-.659",
40
42
  x2: "27.023",
41
43
  y1: ".458",
@@ -47,7 +49,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
47
49
  }),
48
50
  /* @__PURE__ */ jsxs("linearGradient", {
49
51
  gradientUnits: "userSpaceOnUse",
50
- id: "c",
52
+ id: ids[2].id,
51
53
  x1: "-.659",
52
54
  x2: "27.023",
53
55
  y1: ".458",
@@ -59,7 +61,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
59
61
  }),
60
62
  /* @__PURE__ */ jsxs("linearGradient", {
61
63
  gradientUnits: "userSpaceOnUse",
62
- id: "d",
64
+ id: ids[3].id,
63
65
  x1: "-.659",
64
66
  x2: "27.023",
65
67
  y1: ".458",
@@ -71,7 +73,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
71
73
  }),
72
74
  /* @__PURE__ */ jsxs("linearGradient", {
73
75
  gradientUnits: "userSpaceOnUse",
74
- id: "e",
76
+ id: ids[4].id,
75
77
  x1: "-.659",
76
78
  x2: "27.023",
77
79
  y1: ".458",
@@ -83,7 +85,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
83
85
  }),
84
86
  /* @__PURE__ */ jsxs("linearGradient", {
85
87
  gradientUnits: "userSpaceOnUse",
86
- id: "f",
88
+ id: ids[5].id,
87
89
  x1: "-.659",
88
90
  x2: "27.023",
89
91
  y1: ".458",
@@ -94,7 +96,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
94
96
  })]
95
97
  }),
96
98
  /* @__PURE__ */ jsx("clipPath", {
97
- id: "a",
99
+ id: ids[0].id,
98
100
  children: /* @__PURE__ */ jsx("path", { d: "M0 0h24v24H0z" })
99
101
  })
100
102
  ] })
@@ -1,9 +1,11 @@
1
1
  "use client";
2
+ import { useFillIds } from "../../hooks/useFillId.mjs";
2
3
  import { TITLE } from "../style.mjs";
3
4
  import { memo } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/Phind/components/Text.tsx
6
7
  const Icon = memo(({ size = "1em", style, ...rest }) => {
8
+ const ids = useFillIds(TITLE, 1);
7
9
  return /* @__PURE__ */ jsxs("svg", {
8
10
  fill: "currentColor",
9
11
  fillRule: "evenodd",
@@ -19,11 +21,11 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
19
21
  children: [
20
22
  /* @__PURE__ */ jsx("title", { children: TITLE }),
21
23
  /* @__PURE__ */ jsx("g", {
22
- clipPath: "url(#a)",
24
+ clipPath: ids[0].fill,
23
25
  children: /* @__PURE__ */ jsx("path", { d: "M48.315 11.852a5.528 5.528 0 00-6.132-5.392c-.921.121-1.751.527-2.414 1.12l.01-1.156v-.04H37.2v12.913h2.58v-7.359a3.012 3.012 0 014.731-2.437 3.032 3.032 0 011.28 2.432c.005.178.005.406.005.7V19.333h2.515l.005-7.48zM33.141 2c-.85 0-1.538.69-1.538 1.54a1.539 1.539 0 103.076 0c0-.85-.688-1.54-1.538-1.54zM29.124 11.852A5.528 5.528 0 0023.6 6.424h-.05c-1.139.02-2.171.532-2.965 1.343v-.192s-.006 0-.006.005l.01-1.181V2h-2.58v17.297h2.58v-7.359a3.012 3.012 0 014.731-2.437 3.032 3.032 0 011.28 2.432c.005.178.005.406.005.7V19.302h2.515l.005-7.45zM63.084 16.277V2.07h-2.652V7.84s-.005 0-.005-.005v.375c-.905-.877-2.044-1.485-3.304-1.693a6.222 6.222 0 00-.925-.071 6.578 6.578 0 00-6.31 5.646 6.54 6.54 0 001.25 4.875 6.533 6.533 0 004.32 2.564 6.514 6.514 0 004.868-1.251c.172-.127.334-.264.49-.406l1.848 1.495 1.66-2.067-1.24-1.024zm-6.73.902a4.129 4.129 0 01-4.128-4.14 4.124 4.124 0 016.081-3.634 4.01 4.01 0 011.351 1.16 4 4 0 01.774 1.875 4.129 4.129 0 01-4.078 4.739zM3.25 9.795V24h2.646v-5.762s.005 0 .005.005v-.375c.906.877 2.044 1.485 3.304 1.693.303.045.612.07.926.07a6.578 6.578 0 006.309-5.645 6.54 6.54 0 00-1.25-4.875 6.533 6.533 0 00-4.32-2.565 6.514 6.514 0 00-4.868 1.252 6.32 6.32 0 00-.49.405L3.66 6.713 2 8.781l1.25 1.014zm6.729-.902a4.129 4.129 0 014.128 4.14 4.123 4.123 0 01-6.081 3.634 4.01 4.01 0 01-1.351-1.16 4.002 4.002 0 01-.774-1.876 4.129 4.129 0 014.078-4.739zM31.836 6.364v12.933h2.666V6.364h-2.666z" })
24
26
  }),
25
27
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", {
26
- id: "a",
28
+ id: ids[0].id,
27
29
  children: /* @__PURE__ */ jsx("path", { d: "M0 0h66v24H0z" })
28
30
  }) })
29
31
  ]
@@ -1,9 +1,11 @@
1
1
  "use client";
2
+ import { useFillIds } from "../../hooks/useFillId.mjs";
2
3
  import { TITLE } from "../style.mjs";
3
4
  import { memo } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/Rwkv/components/Mono.tsx
6
7
  const Icon = memo(({ size = "1em", style, ...rest }) => {
8
+ const ids = useFillIds(TITLE, 1);
7
9
  return /* @__PURE__ */ jsxs("svg", {
8
10
  fill: "currentColor",
9
11
  fillRule: "evenodd",
@@ -20,7 +22,7 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
20
22
  children: [
21
23
  /* @__PURE__ */ jsx("title", { children: TITLE }),
22
24
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", {
23
- id: "a",
25
+ id: ids[0].id,
24
26
  x1: "100%",
25
27
  x2: "0%",
26
28
  y1: "53.893%",
@@ -1,9 +1,11 @@
1
1
  "use client";
2
+ import { useFillIds } from "../../hooks/useFillId.mjs";
2
3
  import { TITLE } from "../style.mjs";
3
4
  import { memo } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/Together/components/Text.tsx
6
7
  const Icon = memo(({ size = "1em", style, ...rest }) => {
8
+ const ids = useFillIds(TITLE, 1);
7
9
  return /* @__PURE__ */ jsxs("svg", {
8
10
  fill: "currentColor",
9
11
  fillRule: "evenodd",
@@ -19,12 +21,12 @@ const Icon = memo(({ size = "1em", style, ...rest }) => {
19
21
  children: [
20
22
  /* @__PURE__ */ jsx("title", { children: TITLE }),
21
23
  /* @__PURE__ */ jsx("g", {
22
- clipPath: "url(#a)",
24
+ clipPath: ids[0].fill,
23
25
  clipRule: "evenodd",
24
26
  children: /* @__PURE__ */ jsx("path", { d: "M2 7.158h1.43V2.213h1.968v4.945h2.25v1.734h-2.25v9.28H3.43v-9.28H2V7.158zM13.083 6.876c3.14 0 5.717 2.6 5.717 5.788s-2.577 5.788-5.717 5.788c-3.14 0-5.717-2.601-5.717-5.788 0-3.186 2.577-5.788 5.717-5.788zm0 9.748c2.132 0 3.796-1.687 3.796-3.96 0-2.273-1.664-3.96-3.796-3.96-2.132 0-3.797 1.687-3.797 3.96 0 2.273 1.665 3.96 3.797 3.96zM25.238 24c-2.718 0-5.365-1.898-5.365-4.991h1.921c.164 2.085 1.64 3.186 3.446 3.186 2.085 0 3.678-1.452 3.678-3.89v-2.033c-.75 1.359-2.39 2.18-3.866 2.18-3.14 0-5.53-2.578-5.53-5.789 0-3.21 2.39-5.788 5.53-5.788 1.476 0 3.117.82 3.866 2.18V7.156h1.969v11.148c0 3.304-2.53 5.694-5.647 5.694l-.002.001zm.024-7.375c2.133 0 3.797-1.688 3.797-3.96 0-2.274-1.664-3.961-3.797-3.961-2.132 0-3.796 1.687-3.796 3.96 0 2.273 1.664 3.96 3.796 3.96zM41.521 14.351l1.593.89c-1.1 2.063-2.975 3.211-5.132 3.211-3.092 0-5.623-2.601-5.623-5.788 0-3.186 2.53-5.788 5.623-5.788 3.093 0 5.366 2.25 5.366 6.186h-9.091c.187 2.11 1.805 3.562 3.725 3.562 1.92 0 2.766-.82 3.538-2.273h.001zm-7.148-2.858h6.89c-.235-1.57-1.406-2.835-3.28-2.835-1.735 0-3.141 1.148-3.61 2.835zM43.56 7.158h1.43V2.213h1.97v4.945h2.248v1.734H46.96v9.28H44.99v-9.28h-1.43V7.158zM54.827 8.634c-1.734 0-2.952 1.336-2.952 3.515v6.023h-1.968V2.213h1.968V8.87c.75-1.195 1.969-1.991 3.609-1.991 2.53 0 3.89 1.805 3.89 3.937v7.357h-1.968v-6.865c0-1.687-.96-2.671-2.578-2.671v-.002zM69.945 14.351l1.593.89c-1.101 2.063-2.976 3.211-5.132 3.211-3.093 0-5.624-2.601-5.624-5.788 0-3.186 2.531-5.788 5.624-5.788 3.092 0 5.365 2.25 5.365 6.186H62.68c.188 2.11 1.805 3.562 3.726 3.562 1.92 0 2.765-.82 3.537-2.273h.002zm-7.148-2.858h6.889c-.235-1.57-1.406-2.835-3.28-2.835-1.734 0-3.141 1.148-3.61 2.835zM79.239 9.312c-.376-.328-.938-.492-1.5-.492-1.64 0-2.577 1.43-2.577 3.351v6h-1.969V7.156h1.969v1.875c.539-1.195 1.617-2.11 3.047-2.11.702 0 1.335.235 1.734.54l-.703 1.85h-.001zM93.094 7.158V18.17h-1.969v-1.898c-.75 1.359-2.39 2.18-3.866 2.18-3.141 0-5.53-2.578-5.53-5.789 0-3.21 2.39-5.788 5.53-5.788 1.476 0 3.116.82 3.866 2.18V7.157h1.969zm-5.625 9.466c2.133 0 3.797-1.687 3.797-3.96 0-2.273-1.664-3.96-3.797-3.96-2.132 0-3.796 1.687-3.796 3.96 0 2.273 1.664 3.96 3.796 3.96zM97.289 7.157V18.17H95.32V7.157h1.969zM94.993 3.313c0-.703.609-1.313 1.311-1.313.703 0 1.312.61 1.312 1.313s-.586 1.312-1.312 1.312a1.31 1.31 0 01-1.311-1.312zM78.059 17c0-.703.609-1.313 1.311-1.313.703 0 1.312.61 1.312 1.312 0 .703-.586 1.312-1.312 1.312a1.31 1.31 0 01-1.311-1.312z" })
25
27
  }),
26
28
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", {
27
- id: "a",
29
+ id: ids[0].id,
28
30
  children: /* @__PURE__ */ jsx("path", { d: "M0 0h99v24H0z" })
29
31
  }) })
30
32
  ]
@@ -0,0 +1,8 @@
1
+ import { IconCombineProps } from "../../features/IconCombine/index.mjs";
2
+ //#region src/Udio/components/Combine.d.ts
3
+ export interface CombineProps extends Omit<IconCombineProps, "Icon" | "Text"> {
4
+ type?: "color" | "mono";
5
+ }
6
+ declare const Combine: import("react").NamedExoticComponent<CombineProps>;
7
+ //#endregion
8
+ export { Combine as default };
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import IconCombine from "../../features/IconCombine/index.mjs";
3
+ import { COMBINE_SPACE_MULTIPLE, COMBINE_TEXT_MULTIPLE, TITLE } from "../style.mjs";
4
+ import Icon from "./Mono.mjs";
5
+ import Icon$1 from "./Color.mjs";
6
+ import Icon$2 from "./Text.mjs";
7
+ import { memo } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ //#region src/Udio/components/Combine.tsx
10
+ const Combine = memo(({ type = "mono", extraStyle, ...rest }) => {
11
+ return /* @__PURE__ */ jsx(IconCombine, {
12
+ Icon: type === "color" ? Icon$1 : Icon,
13
+ Text: Icon$2,
14
+ "aria-label": TITLE,
15
+ extraStyle: {
16
+ fontWeight: 500,
17
+ ...extraStyle
18
+ },
19
+ spaceMultiple: COMBINE_SPACE_MULTIPLE,
20
+ textMultiple: COMBINE_TEXT_MULTIPLE,
21
+ ...rest
22
+ });
23
+ });
24
+ //#endregion
25
+ export { Combine as default };
@@ -1,11 +1,13 @@
1
1
  import Avatar from "./components/Avatar.mjs";
2
2
  import Icon from "./components/Color.mjs";
3
+ import Combine from "./components/Combine.mjs";
3
4
  import Icon$1 from "./components/Mono.mjs";
4
5
  import Icon$2 from "./components/Text.mjs";
5
6
  //#region src/Udio/index.d.ts
6
7
  export type CompoundedIcon = typeof Icon$1 & {
7
8
  Avatar: typeof Avatar;
8
9
  Color: typeof Icon;
10
+ Combine: typeof Combine;
9
11
  Text: typeof Icon$2;
10
12
  colorPrimary: string;
11
13
  title: string;
package/es/Udio/index.mjs CHANGED
@@ -3,11 +3,13 @@ import Icon from "./components/Mono.mjs";
3
3
  import Avatar from "./components/Avatar.mjs";
4
4
  import Icon$1 from "./components/Color.mjs";
5
5
  import Icon$2 from "./components/Text.mjs";
6
+ import Combine from "./components/Combine.mjs";
6
7
  //#region src/Udio/index.ts
7
8
  const Icons = Icon;
8
9
  Icons.Color = Icon$1;
9
10
  Icons.Text = Icon$2;
10
11
  Icons.Avatar = Avatar;
12
+ Icons.Combine = Combine;
11
13
  Icons.colorPrimary = COLOR_PRIMARY;
12
14
  Icons.title = TITLE;
13
15
  //#endregion
package/es/Udio/style.mjs CHANGED
@@ -1,8 +1,10 @@
1
1
  //#region src/Udio/style.ts
2
2
  const TITLE = "Udio";
3
+ const COMBINE_TEXT_MULTIPLE = .75;
4
+ const COMBINE_SPACE_MULTIPLE = .15;
3
5
  const COLOR_PRIMARY = "#e30a5d";
4
6
  const AVATAR_BACKGROUND = COLOR_PRIMARY;
5
7
  const AVATAR_COLOR = "#fff";
6
8
  const AVATAR_ICON_MULTIPLE = .6;
7
9
  //#endregion
8
- export { AVATAR_BACKGROUND, AVATAR_COLOR, AVATAR_ICON_MULTIPLE, COLOR_PRIMARY, TITLE };
10
+ export { AVATAR_BACKGROUND, AVATAR_COLOR, AVATAR_ICON_MULTIPLE, COLOR_PRIMARY, COMBINE_SPACE_MULTIPLE, COMBINE_TEXT_MULTIPLE, TITLE };
@@ -4,7 +4,7 @@ import { memo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { cssVar } from "antd-style";
6
6
  //#region src/features/AgentIcon/DefaultAvatar.tsx
7
- const DefaultAvatar = memo(({ shape = "circle", color, background, size, style, iconMultiple = .6, iconStyle, iconClassName }) => {
7
+ const DefaultAvatar = memo(({ shape = "circle", color, background, size, style, iconMultiple = .6, iconStyle, iconClassName, ...rest }) => {
8
8
  return /* @__PURE__ */ jsx(Center, {
9
9
  flex: "none",
10
10
  style: {
@@ -15,6 +15,7 @@ const DefaultAvatar = memo(({ shape = "circle", color, background, size, style,
15
15
  width: size,
16
16
  ...style
17
17
  },
18
+ ...rest,
18
19
  children: /* @__PURE__ */ jsx(DefaultAvatar$1, {
19
20
  className: iconClassName,
20
21
  color,
@@ -4,7 +4,7 @@ import { memo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { cssVar } from "antd-style";
6
6
  //#region src/features/ModelIcon/DefaultAvatar.tsx
7
- const DefaultAvatar = memo(({ shape = "circle", color, background, size, style, iconMultiple = .6, iconStyle, iconClassName }) => {
7
+ const DefaultAvatar = memo(({ shape = "circle", color, background, size, style, iconMultiple = .6, iconStyle, iconClassName, ...rest }) => {
8
8
  return /* @__PURE__ */ jsx(Center, {
9
9
  flex: "none",
10
10
  style: {
@@ -15,6 +15,7 @@ const DefaultAvatar = memo(({ shape = "circle", color, background, size, style,
15
15
  width: size,
16
16
  ...style
17
17
  },
18
+ ...rest,
18
19
  children: /* @__PURE__ */ jsx(DefaultAvatar$1, {
19
20
  className: iconClassName,
20
21
  color,
@@ -13,10 +13,13 @@ const ProviderCombine = memo(({ provider: originProvider, size = 12, type = "col
13
13
  }, [originProvider]);
14
14
  const iconProps = {
15
15
  size: size * (Render?.combineMultiple || 1),
16
- type,
17
16
  ...Render?.props
18
17
  };
19
- let icon = Render?.Combine ? /* @__PURE__ */ jsx(Render.Combine, { ...iconProps }) : Render?.Icon?.Combine ? /* @__PURE__ */ jsx(Render.Icon.Combine, { ...iconProps }) : Render?.Icon?.Text ? /* @__PURE__ */ jsx(Render.Icon.Text, { ...iconProps }) : /* @__PURE__ */ jsx(DefaultIcon, { size });
18
+ const combineProps = {
19
+ ...iconProps,
20
+ type
21
+ };
22
+ const icon = Render?.Combine ? /* @__PURE__ */ jsx(Render.Combine, { ...combineProps }) : Render?.Icon?.Combine ? /* @__PURE__ */ jsx(Render.Icon.Combine, { ...combineProps }) : Render?.Icon?.Text ? /* @__PURE__ */ jsx(Render.Icon.Text, { ...iconProps }) : /* @__PURE__ */ jsx(DefaultIcon, { size });
20
23
  return /* @__PURE__ */ jsx(Flexbox, {
21
24
  align: "center",
22
25
  flex: "none",
@@ -4,7 +4,7 @@ import { memo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { cssVar } from "antd-style";
6
6
  //#region src/features/ProviderIcon/DefaultAvatar.tsx
7
- const DefaultAvatar = memo(({ shape = "circle", color, background, size, style, iconMultiple = .6, iconStyle, iconClassName }) => {
7
+ const DefaultAvatar = memo(({ shape = "circle", color, background, size, style, iconMultiple = .6, iconStyle, iconClassName, ...rest }) => {
8
8
  return /* @__PURE__ */ jsx(Center, {
9
9
  flex: "none",
10
10
  style: {
@@ -15,6 +15,7 @@ const DefaultAvatar = memo(({ shape = "circle", color, background, size, style,
15
15
  width: size,
16
16
  ...style
17
17
  },
18
+ ...rest,
18
19
  children: /* @__PURE__ */ jsx(DefaultIcon, {
19
20
  className: iconClassName,
20
21
  color,
@@ -127,7 +127,7 @@ const agentMappings = [
127
127
  },
128
128
  {
129
129
  Icon: Icons,
130
- keywords: ["amp"]
130
+ keywords: ["(^|/)amp($|[-_])"]
131
131
  },
132
132
  {
133
133
  Icon: Icons$17,
@@ -1,7 +1,7 @@
1
1
  //#region src/features/getLobeIconCDN/index.tsx
2
- const GITHUB_ICON_CDN = (type) => `https://raw.githubusercontent.com/lobehub/lobe-icons/refs/heads/master/packages/static-${type}`;
3
- const ALIYUN_ICON_CDN = (type) => `https://registry.npmmirror.com/@lobehub/icons-static-${type}/latest/files`;
4
- const UNPKG_ICON_CDN = (type) => `https://unpkg.com/@lobehub/icons-static-${type}@latest`;
2
+ const GITHUB_ICON_CDN = (type) => `https://raw.githubusercontent.com/yldm-tech/ai-logo/refs/heads/main/packages/static-${type}`;
3
+ const ALIYUN_ICON_CDN = (type) => `https://registry.npmmirror.com/@yldm-tech/ai-logo-static-${type}/latest/files`;
4
+ const UNPKG_ICON_CDN = (type) => `https://unpkg.com/@yldm-tech/ai-logo-static-${type}@latest`;
5
5
  const getLobeIconCDN = (id, config) => {
6
6
  const { format = "png", isDarkMode = false, type = "color", cdn = "github" } = config || {};
7
7
  let baseUrl = "";
@@ -392,7 +392,7 @@ const modelMappings = [
392
392
  },
393
393
  {
394
394
  Icon: Icons$82,
395
- keywords: ["step"]
395
+ keywords: ["(^|/)step"]
396
396
  },
397
397
  {
398
398
  Icon: Icons$11,
@@ -602,11 +602,7 @@ const modelMappings = [
602
602
  },
603
603
  {
604
604
  Icon: Icons$42,
605
- keywords: [
606
- "google",
607
- "learnlm",
608
- "nano-banana"
609
- ]
605
+ keywords: ["google", "learnlm"]
610
606
  },
611
607
  {
612
608
  Icon: Icons$27,
@@ -685,7 +681,7 @@ const modelMappings = [
685
681
  keywords: [
686
682
  "^baai",
687
683
  "^bge-",
688
- "/beg-",
684
+ "/bge-",
689
685
  "touchd",
690
686
  "robobrain"
691
687
  ]
@@ -160,10 +160,18 @@ const providerMappings = [
160
160
  Icon: Icons$62,
161
161
  keywords: ["apple"]
162
162
  },
163
+ {
164
+ Icon: Icons$16,
165
+ keywords: ["aws"]
166
+ },
163
167
  {
164
168
  Icon: Icons$66,
165
169
  keywords: ["baidu"]
166
170
  },
171
+ {
172
+ Icon: Icons$18,
173
+ keywords: ["baiducloud"]
174
+ },
167
175
  {
168
176
  Icon: Icons$67,
169
177
  keywords: ["bailian", "bailiancodingplan"]
@@ -188,6 +196,10 @@ const providerMappings = [
188
196
  Icon: Icons$73,
189
197
  keywords: ["civitai"]
190
198
  },
199
+ {
200
+ Icon: Icons,
201
+ keywords: ["claude"]
202
+ },
191
203
  {
192
204
  Icon: Icons$77,
193
205
  keywords: ["crusoe"]
@@ -212,6 +224,10 @@ const providerMappings = [
212
224
  Icon: Icons$83,
213
225
  keywords: ["friendli"]
214
226
  },
227
+ {
228
+ Icon: Icons$2,
229
+ keywords: ["gemini"]
230
+ },
215
231
  {
216
232
  Icon: Icons$86,
217
233
  keywords: ["googlecloud"]
@@ -485,7 +501,7 @@ const providerMappings = [
485
501
  })),
486
502
  Icon: Icons$59,
487
503
  combineMultiple: 1.1,
488
- keywords: ["qwen"]
504
+ keywords: ["qwen", "alibabacloud"]
489
505
  },
490
506
  {
491
507
  Icon: Icons$47,
@@ -500,7 +516,7 @@ const providerMappings = [
500
516
  {
501
517
  Icon: Icons$26,
502
518
  combineMultiple: 1.14,
503
- keywords: ["fireworksai"]
519
+ keywords: ["fireworksai", "fireworks"]
504
520
  },
505
521
  {
506
522
  Icon: Icons$17,
@@ -697,13 +713,17 @@ const providerMappings = [
697
713
  {
698
714
  Icon: Icons$96,
699
715
  combineMultiple: .8,
700
- keywords: ["infiniai"]
716
+ keywords: ["infiniai", "infinigence"]
701
717
  },
702
718
  {
703
719
  Icon: Icons$131,
704
720
  combineMultiple: .85,
705
721
  keywords: ["xinference"]
706
722
  },
723
+ {
724
+ Icon: Icons$129,
725
+ keywords: ["workersai"]
726
+ },
707
727
  {
708
728
  Icon: Icons$132,
709
729
  combineMultiple: .8,
@@ -7,7 +7,7 @@ const useFillId = (namespace) => {
7
7
  return useMemo(() => ({
8
8
  fill: `url(#${id})`,
9
9
  id
10
- }), [namespace]);
10
+ }), [namespace, uniqueId]);
11
11
  };
12
12
  const useFillIds = (namespace, length) => {
13
13
  const uniqueId = useId();
package/es/toc.mjs CHANGED
@@ -334,7 +334,7 @@ var toc_default = [
334
334
  "id": "Alibaba",
335
335
  "param": {
336
336
  "hasAvatar": true,
337
- "hasBrand": false,
337
+ "hasBrand": true,
338
338
  "hasBrandColor": true,
339
339
  "hasColor": true,
340
340
  "hasCombine": false,
@@ -410,7 +410,7 @@ var toc_default = [
410
410
  "id": "AntGroup",
411
411
  "param": {
412
412
  "hasAvatar": true,
413
- "hasBrand": false,
413
+ "hasBrand": true,
414
414
  "hasBrandColor": true,
415
415
  "hasColor": true,
416
416
  "hasCombine": false,
@@ -619,7 +619,7 @@ var toc_default = [
619
619
  "id": "Aws",
620
620
  "param": {
621
621
  "hasAvatar": true,
622
- "hasBrand": false,
622
+ "hasBrand": true,
623
623
  "hasBrandColor": true,
624
624
  "hasColor": true,
625
625
  "hasCombine": true,
@@ -734,7 +734,7 @@ var toc_default = [
734
734
  "id": "Baidu",
735
735
  "param": {
736
736
  "hasAvatar": true,
737
- "hasBrand": false,
737
+ "hasBrand": true,
738
738
  "hasBrandColor": true,
739
739
  "hasColor": true,
740
740
  "hasCombine": false,
@@ -1002,7 +1002,7 @@ var toc_default = [
1002
1002
  "id": "ByteDance",
1003
1003
  "param": {
1004
1004
  "hasAvatar": true,
1005
- "hasBrand": false,
1005
+ "hasBrand": true,
1006
1006
  "hasBrandColor": true,
1007
1007
  "hasColor": true,
1008
1008
  "hasCombine": false,
@@ -1059,7 +1059,7 @@ var toc_default = [
1059
1059
  "id": "CentML",
1060
1060
  "param": {
1061
1061
  "hasAvatar": true,
1062
- "hasBrand": false,
1062
+ "hasBrand": true,
1063
1063
  "hasBrandColor": true,
1064
1064
  "hasColor": true,
1065
1065
  "hasCombine": true,
@@ -1078,7 +1078,7 @@ var toc_default = [
1078
1078
  "id": "Cerebras",
1079
1079
  "param": {
1080
1080
  "hasAvatar": true,
1081
- "hasBrand": false,
1081
+ "hasBrand": true,
1082
1082
  "hasBrandColor": true,
1083
1083
  "hasColor": true,
1084
1084
  "hasCombine": true,
@@ -1634,7 +1634,7 @@ var toc_default = [
1634
1634
  "id": "Dbrx",
1635
1635
  "param": {
1636
1636
  "hasAvatar": true,
1637
- "hasBrand": false,
1637
+ "hasBrand": true,
1638
1638
  "hasBrandColor": true,
1639
1639
  "hasColor": true,
1640
1640
  "hasCombine": true,
@@ -2377,7 +2377,7 @@ var toc_default = [
2377
2377
  "id": "Google",
2378
2378
  "param": {
2379
2379
  "hasAvatar": true,
2380
- "hasBrand": false,
2380
+ "hasBrand": true,
2381
2381
  "hasBrandColor": true,
2382
2382
  "hasColor": true,
2383
2383
  "hasCombine": false,
@@ -2396,7 +2396,7 @@ var toc_default = [
2396
2396
  "id": "GoogleCloud",
2397
2397
  "param": {
2398
2398
  "hasAvatar": true,
2399
- "hasBrand": false,
2399
+ "hasBrand": true,
2400
2400
  "hasBrandColor": true,
2401
2401
  "hasColor": true,
2402
2402
  "hasCombine": false,
@@ -3657,7 +3657,7 @@ var toc_default = [
3657
3657
  "id": "Meta",
3658
3658
  "param": {
3659
3659
  "hasAvatar": true,
3660
- "hasBrand": false,
3660
+ "hasBrand": true,
3661
3661
  "hasBrandColor": true,
3662
3662
  "hasColor": true,
3663
3663
  "hasCombine": true,
@@ -4745,11 +4745,11 @@ var toc_default = [
4745
4745
  "id": "Replicate",
4746
4746
  "param": {
4747
4747
  "hasAvatar": true,
4748
- "hasBrand": false,
4748
+ "hasBrand": true,
4749
4749
  "hasBrandColor": false,
4750
4750
  "hasColor": false,
4751
4751
  "hasCombine": false,
4752
- "hasText": false,
4752
+ "hasText": true,
4753
4753
  "hasTextCn": false,
4754
4754
  "hasTextColor": false
4755
4755
  },
@@ -4955,7 +4955,7 @@ var toc_default = [
4955
4955
  "id": "SenseNova",
4956
4956
  "param": {
4957
4957
  "hasAvatar": true,
4958
- "hasBrand": false,
4958
+ "hasBrand": true,
4959
4959
  "hasBrandColor": true,
4960
4960
  "hasColor": true,
4961
4961
  "hasCombine": true,
@@ -5166,7 +5166,7 @@ var toc_default = [
5166
5166
  "id": "Stability",
5167
5167
  "param": {
5168
5168
  "hasAvatar": true,
5169
- "hasBrand": false,
5169
+ "hasBrand": true,
5170
5170
  "hasBrandColor": true,
5171
5171
  "hasColor": true,
5172
5172
  "hasCombine": true,
@@ -5356,7 +5356,7 @@ var toc_default = [
5356
5356
  "id": "Tencent",
5357
5357
  "param": {
5358
5358
  "hasAvatar": true,
5359
- "hasBrand": false,
5359
+ "hasBrand": true,
5360
5360
  "hasBrandColor": true,
5361
5361
  "hasColor": true,
5362
5362
  "hasCombine": false,
@@ -3,6 +3,12 @@ import { ForwardRefExoticComponent, RefAttributes, SVGProps } from "react";
3
3
  export type IconType = ForwardRefExoticComponent<Pick<SVGProps<SVGSVGElement>, "string" | "style" | "clipPath" | "filter" | "mask" | "path" | "className" | "color" | "height" | "id" | "lang" | "max" | "media" | "method" | "min" | "name" | "target" | "type" | "width" | "role" | "tabIndex" | "crossOrigin" | "accentHeight" | "accumulate" | "additive" | "alignmentBaseline" | "allowReorder" | "alphabetic" | "amplitude" | "arabicForm" | "ascent" | "attributeName" | "attributeType" | "autoReverse" | "azimuth" | "baseFrequency" | "baselineShift" | "baseProfile" | "bbox" | "begin" | "bias" | "by" | "calcMode" | "capHeight" | "clip" | "clipPathUnits" | "clipRule" | "colorInterpolation" | "colorInterpolationFilters" | "colorProfile" | "colorRendering" | "contentScriptType" | "contentStyleType" | "cursor" | "cx" | "cy" | "d" | "decelerate" | "descent" | "diffuseConstant" | "direction" | "display" | "divisor" | "dominantBaseline" | "dur" | "dx" | "dy" | "edgeMode" | "elevation" | "enableBackground" | "end" | "exponent" | "externalResourcesRequired" | "fill" | "fillOpacity" | "fillRule" | "filterRes" | "filterUnits" | "floodColor" | "floodOpacity" | "focusable" | "fontFamily" | "fontSize" | "fontSizeAdjust" | "fontStretch" | "fontStyle" | "fontVariant" | "fontWeight" | "format" | "fr" | "from" | "fx" | "fy" | "g1" | "g2" | "glyphName" | "glyphOrientationHorizontal" | "glyphOrientationVertical" | "glyphRef" | "gradientTransform" | "gradientUnits" | "hanging" | "horizAdvX" | "horizOriginX" | "href" | "ideographic" | "imageRendering" | "in2" | "in" | "intercept" | "k1" | "k2" | "k3" | "k4" | "k" | "kernelMatrix" | "kernelUnitLength" | "kerning" | "keyPoints" | "keySplines" | "keyTimes" | "lengthAdjust" | "letterSpacing" | "lightingColor" | "limitingConeAngle" | "local" | "markerEnd" | "markerHeight" | "markerMid" | "markerStart" | "markerUnits" | "markerWidth" | "maskContentUnits" | "maskUnits" | "mathematical" | "mode" | "numOctaves" | "offset" | "opacity" | "operator" | "order" | "orient" | "orientation" | "origin" | "overflow" | "overlinePosition" | "overlineThickness" | "paintOrder" | "panose1" | "pathLength" | "patternContentUnits" | "patternTransform" | "patternUnits" | "pointerEvents" | "points" | "pointsAtX" | "pointsAtY" | "pointsAtZ" | "preserveAlpha" | "preserveAspectRatio" | "primitiveUnits" | "r" | "radius" | "refX" | "refY" | "renderingIntent" | "repeatCount" | "repeatDur" | "requiredExtensions" | "requiredFeatures" | "restart" | "result" | "rotate" | "rx" | "ry" | "scale" | "seed" | "shapeRendering" | "slope" | "spacing" | "specularConstant" | "specularExponent" | "speed" | "spreadMethod" | "startOffset" | "stdDeviation" | "stemh" | "stemv" | "stitchTiles" | "stopColor" | "stopOpacity" | "strikethroughPosition" | "strikethroughThickness" | "stroke" | "strokeDasharray" | "strokeDashoffset" | "strokeLinecap" | "strokeLinejoin" | "strokeMiterlimit" | "strokeOpacity" | "strokeWidth" | "surfaceScale" | "systemLanguage" | "tableValues" | "targetX" | "targetY" | "textAnchor" | "textDecoration" | "textLength" | "textRendering" | "to" | "transform" | "u1" | "u2" | "underlinePosition" | "underlineThickness" | "unicode" | "unicodeBidi" | "unicodeRange" | "unitsPerEm" | "vAlphabetic" | "values" | "vectorEffect" | "version" | "vertAdvY" | "vertOriginX" | "vertOriginY" | "vHanging" | "vIdeographic" | "viewBox" | "viewTarget" | "visibility" | "vMathematical" | "widths" | "wordSpacing" | "writingMode" | "x1" | "x2" | "x" | "xChannelSelector" | "xHeight" | "xlinkActuate" | "xlinkArcrole" | "xlinkHref" | "xlinkRole" | "xlinkShow" | "xlinkTitle" | "xlinkType" | "xmlBase" | "xmlLang" | "xmlns" | "xmlnsXlink" | "xmlSpace" | "y1" | "y2" | "y" | "yChannelSelector" | "z" | "zoomAndPan" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key"> & {
4
4
  color?: string;
5
5
  size?: string | number;
6
+ /**
7
+ * Passed through to the `<svg>` as an attribute. It does **not** replace the `<title>` element,
8
+ * which every icon renders with its own brand name, so it does not change the accessible name —
9
+ * a screen reader still announces the brand. Use `aria-label` on the element you are labelling
10
+ * if you need a different one.
11
+ */
6
12
  title?: string;
7
13
  } & RefAttributes<SVGSVGElement>>;
8
14
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yldm-tech/ai-logo",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "Popular AI / LLM Model Brand SVG Logo and Icon Collection",
5
5
  "keywords": [
6
6
  "ai icons",
@@ -10,7 +10,7 @@
10
10
  "react components",
11
11
  "svg icons"
12
12
  ],
13
- "homepage": "https://github.com/yldm-tech/ai-logo",
13
+ "homepage": "https://ailogo.yldm.ai",
14
14
  "bugs": {
15
15
  "url": "https://github.com/yldm-tech/ai-logo/issues/new"
16
16
  },
@@ -35,11 +35,17 @@
35
35
  "main": "es/index.mjs",
36
36
  "module": "es/index.mjs",
37
37
  "types": "es/index.d.mts",
38
+ "exports": {
39
+ ".": {
40
+ "types": "./es/index.d.mts",
41
+ "default": "./es/index.mjs"
42
+ },
43
+ "./package.json": "./package.json"
44
+ },
38
45
  "dependencies": {
39
46
  "antd-style": "^4.1.0",
40
47
  "es-toolkit": "^1.52.0",
41
- "lucide-react": "^1.45.0",
42
- "polished": "^4.3.1"
48
+ "lucide-react": "^1.45.0"
43
49
  },
44
50
  "peerDependencies": {
45
51
  "antd": "^6.1.1",