14
packages/ui/src/Atoms/Icons/IconBrandFacebook.tsx
Normal file
14
packages/ui/src/Atoms/Icons/IconBrandFacebook.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
// Facebook logo — trademark of Meta Platforms, Inc.
|
||||
// Used here solely for brand identification (nominative fair use).
|
||||
// SVG path from Simple Icons (https://simpleicons.org), CC0 license.
|
||||
import type { IconProps } from "./type";
|
||||
|
||||
type Props = IconProps & { colored?: boolean };
|
||||
|
||||
export function IconBrandFacebook({ size = 24, className, colored = false }: Props) {
|
||||
return (
|
||||
<svg width={size} height={size} viewBox="0 0 24 24" fill={colored ? "#1877F2" : "currentColor"} className={className} xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
14
packages/ui/src/Atoms/Icons/IconBrandLinkedin.tsx
Normal file
14
packages/ui/src/Atoms/Icons/IconBrandLinkedin.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
// LinkedIn logo — trademark of LinkedIn Corporation.
|
||||
// Used here solely for brand identification (nominative fair use).
|
||||
// SVG path from Simple Icons (https://simpleicons.org), CC0 license.
|
||||
import type { IconProps } from "./type";
|
||||
|
||||
type Props = IconProps & { colored?: boolean };
|
||||
|
||||
export function IconBrandLinkedin({ size = 24, className, colored = false }: Props) {
|
||||
return (
|
||||
<svg width={size} height={size} viewBox="0 0 24 24" fill={colored ? "#0A66C2" : "currentColor"} className={className} xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
14
packages/ui/src/Atoms/Icons/IconBrandX.tsx
Normal file
14
packages/ui/src/Atoms/Icons/IconBrandX.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
// X (formerly Twitter) logo — trademark of X Corp.
|
||||
// Used here solely for brand identification (nominative fair use).
|
||||
// SVG path from Simple Icons (https://simpleicons.org), CC0 license.
|
||||
import type { IconProps } from "./type";
|
||||
|
||||
type Props = IconProps & { colored?: boolean };
|
||||
|
||||
export function IconBrandX({ size = 24, className, colored = false }: Props) {
|
||||
return (
|
||||
<svg width={size} height={size} viewBox="0 0 24 24" fill={colored ? "#000000" : "currentColor"} className={className} xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.713 6.097zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
12
packages/ui/src/Atoms/Icons/IconGlobe.tsx
Normal file
12
packages/ui/src/Atoms/Icons/IconGlobe.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
// Globe icon from Lucide (https://lucide.dev), ISC license.
|
||||
import type { IconProps } from "./type";
|
||||
|
||||
export function IconGlobe({ size = 24, className }: IconProps) {
|
||||
return (
|
||||
<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className} xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" />
|
||||
<path d="M2 12h20" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
16
packages/ui/src/Atoms/Icons/SocialIcon.tsx
Normal file
16
packages/ui/src/Atoms/Icons/SocialIcon.tsx
Normal file
@@ -0,0 +1,16 @@
|
||||
import { IconBrandFacebook } from "./IconBrandFacebook";
|
||||
import { IconBrandLinkedin } from "./IconBrandLinkedin";
|
||||
import { IconBrandX } from "./IconBrandX";
|
||||
import { IconGlobe } from "./IconGlobe";
|
||||
import type { IconProps } from "./type";
|
||||
|
||||
export type SocialIconProps = IconProps & { colored?: boolean };
|
||||
|
||||
export function SocialIcon({ socialName, ...props }: { socialName: string | null } & SocialIconProps) {
|
||||
switch (socialName) {
|
||||
case "LinkedIn": return <IconBrandLinkedin {...props} />;
|
||||
case "X": return <IconBrandX {...props} />;
|
||||
case "Facebook": return <IconBrandFacebook {...props} />;
|
||||
default: return <IconGlobe {...props} />;
|
||||
}
|
||||
}
|
||||
@@ -85,3 +85,9 @@ export { IconPageCross } from "./IconPageCross";
|
||||
export { IconRotateCw } from "./IconRotateCw";
|
||||
export { IconPin } from "./IconPin";
|
||||
export { IconMinusLarge } from "./IconMinusLarge";
|
||||
export { IconBrandFacebook } from "./IconBrandFacebook";
|
||||
export { IconBrandLinkedin } from "./IconBrandLinkedin";
|
||||
export { IconBrandX } from "./IconBrandX";
|
||||
export { IconGlobe } from "./IconGlobe";
|
||||
export { SocialIcon } from "./SocialIcon";
|
||||
export type { SocialIconProps } from "./SocialIcon";
|
||||
|
||||
Reference in New Issue
Block a user