From 3eb8ddcbc4357010471efbc10efb697faed8a553 Mon Sep 17 00:00:00 2001 From: javayhu Date: Fri, 21 Feb 2025 00:59:37 +0800 Subject: [PATCH] feat: add icon components --- src/components/icons/authjs.tsx | 17 ++++ src/components/icons/bluesky.tsx | 23 +++++ src/components/icons/github.tsx | 23 +++++ src/components/icons/google.tsx | 23 +++++ src/components/icons/icons.tsx | 135 ++++++++++++++++++++++++++ src/components/icons/nextjs.tsx | 78 +++++++++++++++ src/components/icons/product-hunt.tsx | 40 ++++++++ src/components/icons/resend.tsx | 23 +++++ src/components/icons/sanity.tsx | 23 +++++ src/components/icons/shadcnui.tsx | 23 +++++ src/components/icons/stripe.tsx | 23 +++++ src/components/icons/tailwindcss.tsx | 23 +++++ src/components/icons/twitter.tsx | 23 +++++ src/components/icons/vercel.tsx | 20 ++++ src/components/icons/youtube.tsx | 23 +++++ 15 files changed, 520 insertions(+) create mode 100644 src/components/icons/authjs.tsx create mode 100644 src/components/icons/bluesky.tsx create mode 100644 src/components/icons/github.tsx create mode 100644 src/components/icons/google.tsx create mode 100644 src/components/icons/icons.tsx create mode 100644 src/components/icons/nextjs.tsx create mode 100644 src/components/icons/product-hunt.tsx create mode 100644 src/components/icons/resend.tsx create mode 100644 src/components/icons/sanity.tsx create mode 100644 src/components/icons/shadcnui.tsx create mode 100644 src/components/icons/stripe.tsx create mode 100644 src/components/icons/tailwindcss.tsx create mode 100644 src/components/icons/twitter.tsx create mode 100644 src/components/icons/vercel.tsx create mode 100644 src/components/icons/youtube.tsx diff --git a/src/components/icons/authjs.tsx b/src/components/icons/authjs.tsx new file mode 100644 index 0000000..39c9259 --- /dev/null +++ b/src/components/icons/authjs.tsx @@ -0,0 +1,17 @@ +import * as React from "react"; +import type { SVGProps } from "react"; + +const AuthJSIcon = (props: SVGProps) => ( + + Auth.js + + +); + +export default AuthJSIcon; diff --git a/src/components/icons/bluesky.tsx b/src/components/icons/bluesky.tsx new file mode 100644 index 0000000..3daf02d --- /dev/null +++ b/src/components/icons/bluesky.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/fa6-brands/bluesky/ + */ +export function Fa6BrandsBluesky(props: SVGProps) { + return ( + + Bluesky + + + ); +} diff --git a/src/components/icons/github.tsx b/src/components/icons/github.tsx new file mode 100644 index 0000000..f080443 --- /dev/null +++ b/src/components/icons/github.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/fa6-brands/github/ + */ +export function FaBrandsGitHub(props: SVGProps) { + return ( + + GitHub + + + ); +} diff --git a/src/components/icons/google.tsx b/src/components/icons/google.tsx new file mode 100644 index 0000000..04e58a5 --- /dev/null +++ b/src/components/icons/google.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/fa6-brands/google/ + */ +export function FaBrandsGoogle(props: SVGProps) { + return ( + + Google + + + ); +} diff --git a/src/components/icons/icons.tsx b/src/components/icons/icons.tsx new file mode 100644 index 0000000..67f4968 --- /dev/null +++ b/src/components/icons/icons.tsx @@ -0,0 +1,135 @@ +import { + ArrowRightIcon, + BadgeDollarSignIcon, + BookOpenIcon, + ChartLineIcon, + ChartNoAxesCombinedIcon, + CircleDollarSignIcon, + CircleUserRoundIcon, + ComponentIcon, + CreditCardIcon, + DatabaseIcon, + EyeIcon, + FileTextIcon, + FilterIcon, + GiftIcon, + GithubIcon, + GlobeIcon, + GridIcon, + HomeIcon, + ImageIcon, + LayoutDashboardIcon, + LayoutGridIcon, + LayoutPanelLeftIcon, + Loader2Icon, + type LucideIcon, + MailCheckIcon, + MailIcon, + MailboxIcon, + MapIcon, + NewspaperIcon, + NotebookPenIcon, + PaletteIcon, + RocketIcon, + SearchIcon, + SettingsIcon, + ShieldCheckIcon, + SmartphoneIcon, + SmileIcon, + SquareChartGanttIcon, + TagsIcon, + UploadIcon, + VideoIcon, + WandSparklesIcon, + WorkflowIcon, + WrenchIcon +} from "lucide-react"; +import { FaBrandsGitHub } from "../icons/github"; +import { FaBrandsGoogle } from "../icons/google"; +import { LogosProductHunt } from "../icons/product-hunt"; +import { FaBrandsXTwitter } from "../icons/twitter"; +import AuthJSIcon from "./authjs"; +import { Fa6BrandsBluesky } from "./bluesky"; +import { NextjsIcon } from "./nextjs"; +import { SimpleIconsResend } from "./resend"; +import { SimpleIconsSanity } from "./sanity"; +import { SimpleIconsShadcnui } from "./shadcnui"; +import { SimpleIconsStripe } from "./stripe"; +import { SimpleIconsTailwindcss } from "./tailwindcss"; +import { SimpleIconsVercel } from "./vercel"; +import { IonLogoYoutube } from "./youtube"; + +export type Icon = LucideIcon; + +/** + * 1. Lucide Icons + * https://lucide.dev/icons/ + * + * 2. Radix Icons + * https://www.radix-ui.com/icons + */ +export const Icons = { + spinner: Loader2Icon, + + // used by name + arrowRight: ArrowRightIcon, + search: SearchIcon, + category: LayoutGridIcon, + tag: TagsIcon, + blog: FileTextIcon, + features: WandSparklesIcon, + pricing: CreditCardIcon, + demo: RocketIcon, + showcase: LayoutGridIcon, + docs: BookOpenIcon, + globe: GlobeIcon, + home: HomeIcon, + dashboard: LayoutDashboardIcon, + submit: UploadIcon, + settings: SettingsIcon, + email: MailIcon, + layout: LayoutPanelLeftIcon, + component: ComponentIcon, + grid: GridIcon, + eye: EyeIcon, + rocket: RocketIcon, + image: ImageIcon, + smartphone: SmartphoneIcon, + palette: PaletteIcon, + chartLine: ChartLineIcon, + gift: GiftIcon, + user: CircleUserRoundIcon, + chartNoAxes: ChartNoAxesCombinedIcon, + + map: MapIcon, + video: VideoIcon, + notebook: NotebookPenIcon, + mailcheck: MailCheckIcon, + mailbox: MailboxIcon, + newspaper: NewspaperIcon, + smile: SmileIcon, + wrench: WrenchIcon, + database: DatabaseIcon, + githubLucide: GithubIcon, + filter: FilterIcon, + money: BadgeDollarSignIcon, + sponsor: CircleDollarSignIcon, + shieldCheck: ShieldCheckIcon, + workflow: WorkflowIcon, + squareChartGantt: SquareChartGanttIcon, + + github: FaBrandsGitHub, + google: FaBrandsGoogle, + twitter: FaBrandsXTwitter, + bluesky: Fa6BrandsBluesky, + youtube: IonLogoYoutube, + productHunt: LogosProductHunt, + nextjs: NextjsIcon, + authjs: AuthJSIcon, + shadcnui: SimpleIconsShadcnui, + tailwindcss: SimpleIconsTailwindcss, + sanity: SimpleIconsSanity, + resend: SimpleIconsResend, + stripe: SimpleIconsStripe, + vercel: SimpleIconsVercel, +}; diff --git a/src/components/icons/nextjs.tsx b/src/components/icons/nextjs.tsx new file mode 100644 index 0000000..7359eb6 --- /dev/null +++ b/src/components/icons/nextjs.tsx @@ -0,0 +1,78 @@ +import * as React from "react"; +import type { SVGProps } from "react"; + +/** + * https://svgl.app/ + */ +export function NextjsIcon(props: SVGProps) { + return ( + + Next.js + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/src/components/icons/product-hunt.tsx b/src/components/icons/product-hunt.tsx new file mode 100644 index 0000000..f0af05f --- /dev/null +++ b/src/components/icons/product-hunt.tsx @@ -0,0 +1,40 @@ +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/logos/producthunt/ + */ +export function LogosProductHunt(props: SVGProps) { + return ( + + Product Hunt + + + + + + + + + + + + ); +} diff --git a/src/components/icons/resend.tsx b/src/components/icons/resend.tsx new file mode 100644 index 0000000..7f2cd43 --- /dev/null +++ b/src/components/icons/resend.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/simple-icons/resend/ + */ +export function SimpleIconsResend(props: SVGProps) { + return ( + + Resend + + + ); +} diff --git a/src/components/icons/sanity.tsx b/src/components/icons/sanity.tsx new file mode 100644 index 0000000..5d0b2e9 --- /dev/null +++ b/src/components/icons/sanity.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/simple-icons/sanity/ + */ +export function SimpleIconsSanity(props: SVGProps) { + return ( + + Sanity + + + ); +} diff --git a/src/components/icons/shadcnui.tsx b/src/components/icons/shadcnui.tsx new file mode 100644 index 0000000..2a53282 --- /dev/null +++ b/src/components/icons/shadcnui.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/simple-icons/shadcnui/ + */ +export function SimpleIconsShadcnui(props: SVGProps) { + return ( + + Shadcn UI + + + ); +} diff --git a/src/components/icons/stripe.tsx b/src/components/icons/stripe.tsx new file mode 100644 index 0000000..7535130 --- /dev/null +++ b/src/components/icons/stripe.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/simple-icons/stripe/ + */ +export function SimpleIconsStripe(props: SVGProps) { + return ( + + Stripe + + + ); +} diff --git a/src/components/icons/tailwindcss.tsx b/src/components/icons/tailwindcss.tsx new file mode 100644 index 0000000..876595c --- /dev/null +++ b/src/components/icons/tailwindcss.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/simple-icons/tailwindcss/ + */ +export function SimpleIconsTailwindcss(props: SVGProps) { + return ( + + Tailwind CSS + + + ); +} diff --git a/src/components/icons/twitter.tsx b/src/components/icons/twitter.tsx new file mode 100644 index 0000000..d9d1fa6 --- /dev/null +++ b/src/components/icons/twitter.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/fa6-brands/x-twitter/ + */ +export function FaBrandsXTwitter(props: SVGProps) { + return ( + + X (Twitter) + + + ); +} diff --git a/src/components/icons/vercel.tsx b/src/components/icons/vercel.tsx new file mode 100644 index 0000000..975ab83 --- /dev/null +++ b/src/components/icons/vercel.tsx @@ -0,0 +1,20 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/simple-icons/vercel/ + */ +export function SimpleIconsVercel(props: SVGProps) { + return ( + + Vercel + + + ); +} diff --git a/src/components/icons/youtube.tsx b/src/components/icons/youtube.tsx new file mode 100644 index 0000000..4ee36d8 --- /dev/null +++ b/src/components/icons/youtube.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import type { SVGProps } from "react"; + +/** + * https://icon-sets.iconify.design/ion/logo-youtube/ + */ +export function IonLogoYoutube(props: SVGProps) { + return ( + + YouTube + + + ); +}