Skip to content

Commit

Permalink
✨ feat: Add Volcengine
Browse files Browse the repository at this point in the history
  • Loading branch information
canisminor1990 committed Feb 15, 2025
1 parent 3cffe2f commit 7ea5f45
Show file tree
Hide file tree
Showing 50 changed files with 755 additions and 268 deletions.
24 changes: 24 additions & 0 deletions src/AzureAI/components/Avatar.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
'use client';

import { memo } from 'react';

import IconAvatar, { type IconAvatarProps } from '@/features/IconAvatar';

import { COLOR_PRIMARY, TITLE } from '../style';
import Color from './Color';

export type AvatarProps = Omit<IconAvatarProps, 'Icon'>;

const Avatar = memo<AvatarProps>(({ background, ...rest }) => {
return (
<IconAvatar
Icon={Color}
aria-label={TITLE}
background={background || COLOR_PRIMARY}
iconMultiple={0.65}
{...rest}
/>
);
});

export default Avatar;
103 changes: 103 additions & 0 deletions src/AzureAI/components/Color.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
'use client';

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] = useFillIds(TITLE, 3);
return (
<svg
height={size}
ref={ref}
style={{ flex: 'none', lineHeight: 1, ...style }}
viewBox="0 0 24 24"
width={size}
xmlns="http://www.w3.org/2000/svg"
{...rest}
>
<title>{TITLE}</title>
<path
clipRule="evenodd"
d="M16.233 0c.713 0 1.345.551 1.572 1.329.227.778 1.555 5.59 1.555 5.59v9.562h-4.813L14.645 0h1.588z"
fill={a.fill}
fillRule="evenodd"
/>
<path
d="M23.298 7.47c0-.34-.275-.6-.6-.6h-2.835a3.617 3.617 0 00-3.614 3.615v5.996h3.436a3.617 3.617 0 003.613-3.614V7.47z"
fill={b.fill}
/>
<path
clipRule="evenodd"
d="M16.233 0a.982.982 0 00-.989.989l-.097 18.198A4.814 4.814 0 0110.334 24H1.6a.597.597 0 01-.567-.794l7-19.981A4.819 4.819 0 0112.57 0h3.679-.016z"
fill={c.fill}
fillRule="evenodd"
/>
<defs>
<linearGradient
gradientUnits="userSpaceOnUse"
id={a.id}
x1="18.242"
x2="14.191"
y1="16.837"
y2=".616"
>
<stop stopColor="#712575" />
<stop offset=".09" stopColor="#9A2884" />
<stop offset=".18" stopColor="#BF2C92" />
<stop offset=".27" stopColor="#DA2E9C" />
<stop offset=".34" stopColor="#EB30A2" />
<stop offset=".4" stopColor="#F131A5" />
<stop offset=".5" stopColor="#EC30A3" />
<stop offset=".61" stopColor="#DF2F9E" />
<stop offset=".72" stopColor="#C92D96" />
<stop offset=".83" stopColor="#AA2A8A" />
<stop offset=".95" stopColor="#83267C" />
<stop offset="1" stopColor="#712575" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
id={b.id}
x1="19.782"
x2="19.782"
y1=".34"
y2="23.222"
>
<stop stopColor="#DA7ED0" />
<stop offset=".08" stopColor="#B17BD5" />
<stop offset=".19" stopColor="#8778DB" />
<stop offset=".3" stopColor="#6276E1" />
<stop offset=".41" stopColor="#4574E5" />
<stop offset=".54" stopColor="#2E72E8" />
<stop offset=".67" stopColor="#1D71EB" />
<stop offset=".81" stopColor="#1471EC" />
<stop offset="1" stopColor="#1171ED" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
id={c.id}
x1="18.404"
x2="3.236"
y1=".859"
y2="25.183"
>
<stop stopColor="#DA7ED0" />
<stop offset=".05" stopColor="#B77BD4" />
<stop offset=".11" stopColor="#9079DA" />
<stop offset=".18" stopColor="#6E77DF" />
<stop offset=".25" stopColor="#5175E3" />
<stop offset=".33" stopColor="#3973E7" />
<stop offset=".42" stopColor="#2772E9" />
<stop offset=".54" stopColor="#1A71EB" />
<stop offset=".68" stopColor="#1371EC" />
<stop offset="1" stopColor="#1171ED" />
</linearGradient>
</defs>
</svg>
);
});

export default Icon;
30 changes: 30 additions & 0 deletions src/AzureAI/components/Combine.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
'use client';

import { memo } from 'react';

import IconCombine, { type IconCombineProps } from '@/features/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<IconCombineProps, 'Icon' | 'Text'> {
type?: 'color' | 'mono';
}
const Combine = memo<CombineProps>(({ type = 'mono', ...rest }) => {
const Icon = type === 'color' ? Color : Mono;

return (
<IconCombine
Icon={Icon}
Text={Text}
aria-label={TITLE}
spaceMultiple={SPACE_MULTIPLE}
textMultiple={TEXT_MULTIPLE}
{...rest}
/>
);
});

export default Combine;
37 changes: 37 additions & 0 deletions src/AzureAI/components/Mono.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
'use client';

import { forwardRef } from 'react';

import type { IconType } from '@/types';

import { TITLE } from '../style';

const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
return (
<svg
fill="currentColor"
fillRule="evenodd"
height={size}
ref={ref}
style={{ flex: 'none', lineHeight: 1, ...style }}
viewBox="0 0 24 24"
width={size}
xmlns="http://www.w3.org/2000/svg"
{...rest}
>
<title>{TITLE}</title>
<path
clipRule="evenodd"
d="M16.233 0c.713 0 1.345.551 1.572 1.329.227.778 1.555 5.59 1.555 5.59v9.562h-4.813L14.645 0h1.588z"
fillOpacity=".5"
/>
<path d="M23.298 7.47c0-.34-.275-.6-.6-.6h-2.835a3.617 3.617 0 00-3.614 3.615v5.996h3.436a3.617 3.617 0 003.613-3.614V7.47z" />
<path
clipRule="evenodd"
d="M16.233 0a.982.982 0 00-.989.989l-.097 18.198A4.814 4.814 0 0110.334 24H1.6a.597.597 0 01-.567-.794l7-19.981A4.819 4.819 0 0112.57 0h3.679-.016z"
/>
</svg>
);
});

export default Icon;
27 changes: 27 additions & 0 deletions src/AzureAI/components/Text.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use client';

import { forwardRef } from 'react';

import type { IconType } from '@/types';

import { TITLE } from '../style';

const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
return (
<svg
fill="currentColor"
fillRule="evenodd"
height={size}
ref={ref}
style={{ flex: 'none', lineHeight: 1, ...style }}
viewBox="0 0 105 24"
xmlns="http://www.w3.org/2000/svg"
{...rest}
>
<title>{TITLE}</title>
<path d="M103.235 21.67h-2.305V2h2.305v19.67zM98.022 21.67H95.47l-2.085-5.514h-8.34l-1.961 5.515h-2.566L88.064 2h2.387l7.572 19.67zm-5.391-7.585l-3.086-8.381c-.101-.275-.202-.714-.302-1.317h-.055c-.091.558-.197.997-.316 1.317l-3.059 8.381h6.818zM70.546 21.67h-2.25v-2.194h-.055C67.263 21.159 65.823 22 63.921 22c-1.4 0-2.497-.37-3.293-1.111-.786-.74-1.18-1.724-1.18-2.95 0-2.624 1.546-4.151 4.637-4.581l4.211-.59c0-2.387-.965-3.58-2.894-3.58-1.692 0-3.22.576-4.582 1.728V8.612c1.381-.878 2.972-1.317 4.774-1.317 3.301 0 4.952 1.747 4.952 5.24v9.136zm-2.25-7.105l-3.388.466c-1.042.147-1.829.407-2.36.782-.53.366-.795 1.02-.795 1.962 0 .686.242 1.248.727 1.687.494.43 1.148.645 1.962.645 1.115 0 2.034-.389 2.757-1.166.731-.787 1.097-1.779 1.097-2.977v-1.399zM58.05 9.901c-.394-.302-.96-.452-1.702-.452-.96 0-1.764.452-2.414 1.358-.64.905-.96 2.14-.96 3.703v7.16h-2.25V7.625h2.25v2.894h.055c.32-.987.81-1.755 1.468-2.304.658-.558 1.394-.837 2.208-.837.585 0 1.034.064 1.344.192v2.332zM46.17 21.67h-2.25v-2.222h-.054C42.933 21.15 41.488 22 39.53 22c-3.347 0-5.02-1.994-5.02-5.98V7.623h2.235v8.038c0 2.963 1.134 4.445 3.402 4.445 1.098 0 1.998-.402 2.702-1.207.714-.814 1.07-1.875 1.07-3.183V7.624h2.25v14.047zM31.904 8.269L23.591 19.75h8.23v1.92H20.286v-.699l8.313-11.427h-7.53v-1.92h10.836v.645zM19.503 21.67h-2.551l-2.085-5.514h-8.34l-1.962 5.515H2L9.545 2h2.386l7.572 19.67zm-5.39-7.585l-3.087-8.381c-.1-.275-.201-.714-.302-1.317h-.055c-.091.558-.196.997-.315 1.317l-3.06 8.381h6.819z" />
</svg>
);
});

export default Icon;
72 changes: 72 additions & 0 deletions src/AzureAI/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
nav: Components
group: Provider
title: AzureAI
atomId: AzureAI
description: https://ai.azure.com
---

## Icons

```tsx
import { AzureAI } from '@lobehub/icons';
import { Flexbox } from 'react-layout-kit';

export default () => (
<Flexbox gap={16} horizontal>
<AzureAI size={64} />
<AzureAI.Color size={64} />
</Flexbox>
);
```

## Text

```tsx
import { AzureAI } from '@lobehub/icons';

export default () => <AzureAI.Text size={48} />;
```

## Combine

```tsx
import { AzureAI } from '@lobehub/icons';
import { Flexbox } from 'react-layout-kit';

export default () => (
<Flexbox gap={16} align={'flex-start'}>
<AzureAI.Combine size={64} />
<AzureAI.Combine type={'color'} size={64} />
</Flexbox>
);
```

## Avatars

```tsx
import { AzureAI } from '@lobehub/icons';
import { Flexbox } from 'react-layout-kit';

export default () => (
<Flexbox gap={16} horizontal>
<AzureAI.Avatar size={64} />
<AzureAI.Avatar size={64} shape={'square'} />
</Flexbox>
);
```

## Colors

```tsx
import { AzureAI } from '@lobehub/icons';
import { Flexbox } from 'react-layout-kit';

import ColorPreview from '../components/ColorPreview';

export default () => (
<Flexbox gap={16} horizontal>
<ColorPreview color={AzureAI.colorPrimary} />
</Flexbox>
);
```
26 changes: 26 additions & 0 deletions src/AzureAI/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use client';

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;
4 changes: 4 additions & 0 deletions src/AzureAI/style.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export const TITLE = 'AzureAI';
export const TEXT_MULTIPLE = 0.6;
export const SPACE_MULTIPLE = 0.2;
export const COLOR_PRIMARY = '#000';
6 changes: 3 additions & 3 deletions src/Fireworks/components/Avatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { memo } from 'react';

import IconAvatar, { type IconAvatarProps } from '@/features/IconAvatar';

import { COLOR_GRADIENT, TITLE } from '../style';
import { COLOR_PRIMARY, TITLE } from '../style';
import Mono from './Mono';

export type AvatarProps = Omit<IconAvatarProps, 'Icon'>;
Expand All @@ -14,8 +14,8 @@ const Avatar = memo<AvatarProps>(({ background, ...rest }) => {
<IconAvatar
Icon={Mono}
aria-label={TITLE}
background={background || COLOR_GRADIENT}
color={'#fff'}
background={background || COLOR_PRIMARY}
color={'#000'}
{...rest}
/>
);
Expand Down
31 changes: 31 additions & 0 deletions src/Fireworks/components/Color.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use client';

import { forwardRef } from 'react';

import type { IconType } from '@/types';

import { TITLE } from '../style';

const Icon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref) => {
return (
<svg
height={size}
ref={ref}
style={{ flex: 'none', lineHeight: 1, ...style }}
viewBox="0 0 24 24"
width={size}
xmlns="http://www.w3.org/2000/svg"
{...rest}
>
<title>{TITLE}</title>
<path
clipRule="evenodd"
d="M14.8 5l-2.801 6.795L9.195 5H7.397l3.072 7.428a1.64 1.64 0 003.038.002L16.598 5H14.8zm1.196 10.352l5.124-5.244-.699-1.669-5.596 5.739a1.664 1.664 0 00-.343 1.807 1.642 1.642 0 001.516 1.012L16 17l8-.02-.699-1.669-7.303.041h-.002zM2.88 10.104l.699-1.669 5.596 5.739c.468.479.603 1.189.343 1.807a1.643 1.643 0 01-1.516 1.012l-8-.018-.002.002.699-1.669 7.303.042-5.122-5.246z"
fill="#5019C5"
fillRule="evenodd"
/>
</svg>
);
});

export default Icon;
Loading

0 comments on commit 7ea5f45

Please sign in to comment.