diff --git a/src/Recraft/components/Avatar.tsx b/src/Recraft/components/Avatar.tsx new file mode 100644 index 0000000..8dad86e --- /dev/null +++ b/src/Recraft/components/Avatar.tsx @@ -0,0 +1,25 @@ +'use client'; + +import { memo } from 'react'; + +import IconAvatar, { type IconAvatarProps } from '@/features/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/Recraft/components/Combine.tsx b/src/Recraft/components/Combine.tsx new file mode 100644 index 0000000..887a32b --- /dev/null +++ b/src/Recraft/components/Combine.tsx @@ -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 Avatar from './Avatar'; +import Text from './Text'; + +export type CombineProps = Omit; + +const Combine = memo(({ iconProps, ...rest }) => { + return ( + + ); +}); + +export default Combine; diff --git a/src/Recraft/components/Mono.tsx b/src/Recraft/components/Mono.tsx new file mode 100644 index 0000000..c937d2c --- /dev/null +++ b/src/Recraft/components/Mono.tsx @@ -0,0 +1,29 @@ +'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 ( + + {TITLE} + + + + ); +}); + +export default Icon; diff --git a/src/Recraft/components/Text.tsx b/src/Recraft/components/Text.tsx new file mode 100644 index 0000000..b3e62b9 --- /dev/null +++ b/src/Recraft/components/Text.tsx @@ -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 ( + + {TITLE} + + + ); +}); + +export default Icon; diff --git a/src/Recraft/index.md b/src/Recraft/index.md new file mode 100644 index 0000000..969d765 --- /dev/null +++ b/src/Recraft/index.md @@ -0,0 +1,66 @@ +--- +nav: Components +group: Application +title: Recraft +atomId: Recraft +description: https://recraft.ai +--- + +## Icons + +```tsx +import { Recraft } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ; +``` + +## Text + +```tsx +import { Recraft } from '@lobehub/icons'; + +export default () => ; +``` + +## Combine + +```tsx +import { Recraft } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + +); +``` + +## Avatars + +```tsx +import { Recraft } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +export default () => ( + + + + +); +``` + +## Colors + +```tsx +import { Recraft } from '@lobehub/icons'; +import { Flexbox } from 'react-layout-kit'; + +import ColorPreview from '../components/ColorPreview'; + +export default () => ( + + + +); +``` diff --git a/src/Recraft/index.ts b/src/Recraft/index.ts new file mode 100644 index 0000000..ef4013d --- /dev/null +++ b/src/Recraft/index.ts @@ -0,0 +1,23 @@ +'use client'; + +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/Recraft/style.ts b/src/Recraft/style.ts new file mode 100644 index 0000000..0dc1fc4 --- /dev/null +++ b/src/Recraft/style.ts @@ -0,0 +1,4 @@ +export const TITLE = 'Recraft'; +export const TEXT_MULTIPLE = 0.7; +export const SPACE_MULTIPLE = 0.2; +export const COLOR_PRIMARY = '#000'; diff --git a/src/icons.ts b/src/icons.ts index f1ec5c8..b225242 100644 --- a/src/icons.ts +++ b/src/icons.ts @@ -81,6 +81,7 @@ export { default as Poe, type CompoundedIcon as PoeProps } from './Poe'; export { default as Pollinations, type CompoundedIcon as PollinationsProps } from './Pollinations'; export { default as Qingyan, type CompoundedIcon as QingyanProps } from './Qingyan'; export { default as Qwen, type CompoundedIcon as QwenProps } from './Qwen'; +export { default as Recraft, type CompoundedIcon as RecraftProps } from './Recraft'; export { default as Replicate, type CompoundedIcon as ReplicateProps } from './Replicate'; export { default as Replit, type CompoundedIcon as ReplitProps } from './Replit'; export { default as Runway, type CompoundedIcon as RunwayProps } from './Runway'; diff --git a/src/toc.ts b/src/toc.ts index 507dbcf..9e6ed3d 100644 --- a/src/toc.ts +++ b/src/toc.ts @@ -1563,6 +1563,25 @@ const toc: IconToc[] = [ }, title: 'Qwen', }, + { + color: '#000', + desc: 'https://recraft.ai', + docsUrl: 'recraft', + fullTitle: 'Recraft', + group: 'application', + id: 'Recraft', + param: { + hasAvatar: true, + hasBrand: false, + hasBrandColor: false, + hasColor: false, + hasCombine: true, + hasText: true, + hasTextCn: false, + hasTextColor: false, + }, + title: 'Recraft', + }, { color: '#EA2805', desc: 'https://replicate.com',