├── .eslintrc.json
├── .gitignore
├── .prettierrc.json
├── README.md
├── app
├── favicon.ico
├── globals.css
├── layout.tsx
└── page.tsx
├── components.json
├── components
├── app
│ └── card-component.tsx
└── buttons
│ ├── Black1.tsx
│ ├── Black10.tsx
│ ├── Black11.tsx
│ ├── Black12.tsx
│ ├── Black13.tsx
│ ├── Black14.tsx
│ ├── Black2.tsx
│ ├── Black3.tsx
│ ├── Black4.tsx
│ ├── Black5.tsx
│ ├── Black6.tsx
│ ├── Black7.tsx
│ ├── Black8.tsx
│ ├── Black9.tsx
│ ├── BlackIcon1.tsx
│ ├── BlackIcon10.tsx
│ ├── BlackIcon11.tsx
│ ├── BlackIcon2.tsx
│ ├── BlackIcon3.tsx
│ ├── BlackIcon4.tsx
│ ├── BlackIcon5.tsx
│ ├── BlackIcon6.tsx
│ ├── BlackIcon7.tsx
│ ├── BlackIcon8.tsx
│ ├── BlackIcon9.tsx
│ ├── BlackLoading1.tsx
│ ├── BlackRound1.tsx
│ ├── BlackRound2.tsx
│ ├── BlackRound3.tsx
│ ├── BlackRound4.tsx
│ ├── BlackSm1.tsx
│ ├── BlackSm2.tsx
│ ├── BlackSmLoading1.tsx
│ ├── BlackSquare1.tsx
│ ├── Blue1.tsx
│ ├── Blue2.tsx
│ ├── Blue3.tsx
│ ├── Blue4.tsx
│ ├── BlueLoading1.tsx
│ ├── GreySm1.tsx
│ ├── Letters1.tsx
│ ├── Letters2.tsx
│ ├── Letters3.tsx
│ ├── Letters4.tsx
│ ├── Link1.tsx
│ ├── Link2.tsx
│ ├── Link3.tsx
│ ├── Link4.tsx
│ ├── Link5.tsx
│ ├── Link6.tsx
│ ├── Link7.tsx
│ ├── Link8.tsx
│ ├── Outline1.tsx
│ ├── Outline2.tsx
│ ├── Outline3.tsx
│ ├── Outline4.tsx
│ ├── Shadow1.tsx
│ ├── Shadow2.tsx
│ ├── Shadow3.tsx
│ ├── Shadow4.tsx
│ ├── Shadow5.tsx
│ ├── SquareOutline1.tsx
│ ├── SubtleSkeuomorphic1.tsx
│ ├── SubtleSkeuomorphic10.tsx
│ ├── SubtleSkeuomorphic11.tsx
│ ├── SubtleSkeuomorphic12.tsx
│ ├── SubtleSkeuomorphic13.tsx
│ ├── SubtleSkeuomorphic14.tsx
│ ├── SubtleSkeuomorphic15.tsx
│ ├── SubtleSkeuomorphic16.tsx
│ ├── SubtleSkeuomorphic17.tsx
│ ├── SubtleSkeuomorphic2.tsx
│ ├── SubtleSkeuomorphic3.tsx
│ ├── SubtleSkeuomorphic4.tsx
│ ├── SubtleSkeuomorphic5.tsx
│ ├── SubtleSkeuomorphic6.tsx
│ ├── SubtleSkeuomorphic7.tsx
│ ├── SubtleSkeuomorphic8.tsx
│ ├── SubtleSkeuomorphic9.tsx
│ ├── White1.tsx
│ ├── White2.tsx
│ └── White3.tsx
├── data
└── buttons.ts
├── lib
└── utils.ts
├── next.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
├── cover.png
└── opengraph-image.jpg
├── screens
└── home.tsx
├── tailwind.config.ts
└── tsconfig.json
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": true,
3 | "semi": true,
4 | "trailingComma": "all",
5 | "printWidth": 80,
6 | "tabWidth": 2,
7 | "plugins": ["prettier-plugin-tailwindcss"]
8 | }
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
A collection of buttons for Tailwind CSS.
4 |
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ibelick/buttons/03d7a89e614c1b16a8af4b65f2ccd3e8ca07b866/app/favicon.ico
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from "next";
2 | import Script from "next/script";
3 | import { Inter } from "next/font/google";
4 | import "./globals.css";
5 | import { Toaster } from "sonner";
6 |
7 | const inter = Inter({ subsets: ["latin"] });
8 |
9 | export const metadata: Metadata = {
10 | title: "Tailwind CSS button collection - Click-to-copy integration",
11 | description:
12 | "Discover a collection of Tailwind CSS buttons designed to enhance your website's look. Easy to integrate with a copy-paste, no js.",
13 | openGraph: {
14 | title: "Tailwind CSS button collection - Click-to-copy integration",
15 | description:
16 | "Discover a collection of Tailwind CSS buttons designed to enhance your website's look. Easy to integrate with a copy-paste, no js.",
17 | type: "website",
18 | url: "https://buttons.ibelick.com",
19 | images: [
20 | {
21 | url: "https://buttons.ibelick.com/opengraph-image.jpg",
22 | alt: "Tailwind CSS button collection - Click-to-copy integration",
23 | },
24 | ],
25 | },
26 | twitter: {
27 | site: "@ibelick",
28 | images: [
29 | {
30 | url: "https://buttons.ibelick.com/opengraph-image.jpg",
31 | alt: "Tailwind CSS button collection - Click-to-copy integration",
32 | },
33 | ],
34 | },
35 | };
36 |
37 | export default function RootLayout({
38 | children,
39 | }: {
40 | children: React.ReactNode;
41 | }) {
42 | const isDev = process.env.NODE_ENV === "development";
43 |
44 | return (
45 |
46 | {!isDev ? (
47 |
52 | ) : null}
53 |
54 | {children}
55 |
56 | );
57 | }
58 |
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | import { Home as HomeScreen } from "@/screens/home";
2 |
3 | export default function Home() {
4 | return ;
5 | }
6 |
--------------------------------------------------------------------------------
/components.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://ui.shadcn.com/schema.json",
3 | "style": "default",
4 | "rsc": true,
5 | "tsx": true,
6 | "tailwind": {
7 | "config": "tailwind.config.js",
8 | "css": "app/globals.css",
9 | "baseColor": "neutral",
10 | "cssVariables": false,
11 | "prefix": ""
12 | },
13 | "aliases": {
14 | "components": "@/components",
15 | "utils": "@/lib/utils"
16 | }
17 | }
--------------------------------------------------------------------------------
/components/app/card-component.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { CopyIcon, CheckIcon } from "@radix-ui/react-icons";
3 | import { useState } from "react";
4 | import { toast } from "sonner";
5 | import { createRoot } from "react-dom/client";
6 | import { flushSync } from "react-dom";
7 |
8 | type CardComponentProps = {
9 | children: React.ReactNode;
10 | };
11 |
12 | export const CardComponent: React.FC = ({ children }) => {
13 | const [hasCheckIcon, setHasCheckIcon] = useState(false);
14 |
15 | const getCode = () => {
16 | const div = document.createElement("div");
17 | const root = createRoot(div);
18 | flushSync(() => {
19 | root.render(children);
20 | });
21 |
22 | const code = div.innerHTML;
23 | return code;
24 | };
25 |
26 | const onCopy = () => {
27 | const code = getCode();
28 | toast.success("Copied to clipboard!");
29 | navigator.clipboard.writeText(code);
30 | setHasCheckIcon(true);
31 |
32 | setTimeout(() => {
33 | setHasCheckIcon(false);
34 | }, 1000);
35 | };
36 |
37 | return (
38 |
39 |
43 |
48 |
49 |
50 |
55 |
56 |
57 |
58 | {children}
59 |
60 | );
61 | };
62 |
--------------------------------------------------------------------------------
/components/buttons/Black1.tsx:
--------------------------------------------------------------------------------
1 | export function Black1() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Black10.tsx:
--------------------------------------------------------------------------------
1 | export function Black10() {
2 | return (
3 |
7 | );
8 | }
9 |
--------------------------------------------------------------------------------
/components/buttons/Black11.tsx:
--------------------------------------------------------------------------------
1 | export function Black11() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Black12.tsx:
--------------------------------------------------------------------------------
1 | export function Black12() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Black13.tsx:
--------------------------------------------------------------------------------
1 | export function Black13() {
2 | return (
3 |
7 | );
8 | }
9 |
--------------------------------------------------------------------------------
/components/buttons/Black14.tsx:
--------------------------------------------------------------------------------
1 | export function Black14() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Black2.tsx:
--------------------------------------------------------------------------------
1 | export function Black2() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Black3.tsx:
--------------------------------------------------------------------------------
1 | export function Black3() {
2 | return (
3 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/Black4.tsx:
--------------------------------------------------------------------------------
1 | export function Black4() {
2 | return (
3 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/Black5.tsx:
--------------------------------------------------------------------------------
1 | export function Black5() {
2 | return (
3 | <>
4 |
10 | >
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/Black6.tsx:
--------------------------------------------------------------------------------
1 | export function Black6() {
2 | return (
3 | <>
4 |
10 | >
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/Black7.tsx:
--------------------------------------------------------------------------------
1 | export function Black7() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Black8.tsx:
--------------------------------------------------------------------------------
1 | export function Black8() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Black9.tsx:
--------------------------------------------------------------------------------
1 | export function Black9() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon1.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon1() {
4 | return (
5 | <>
6 |
14 | >
15 | );
16 | }
17 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon10.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon10() {
4 | return (
5 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon11.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon11() {
4 | return (
5 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon2.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowDownIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon2() {
4 | return (
5 | <>
6 |
14 | >
15 | );
16 | }
17 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon3.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon, StarIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon3() {
4 | return (
5 |
16 | );
17 | }
18 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon4.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon4() {
4 | return (
5 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon5.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon5() {
4 | return (
5 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon6.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon, StarFilledIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon6() {
4 | return (
5 |
16 | );
17 | }
18 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon7.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon7() {
4 | return (
5 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon8.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon8() {
4 | return (
5 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/BlackIcon9.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowTopRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackIcon9() {
4 | return (
5 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/components/buttons/BlackLoading1.tsx:
--------------------------------------------------------------------------------
1 | import { UpdateIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackLoading1() {
4 | return (
5 |
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/components/buttons/BlackRound1.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon, StarIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackRound1() {
4 | return (
5 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/components/buttons/BlackRound2.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackRound2() {
4 | return (
5 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/components/buttons/BlackRound3.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackRound3() {
4 | return (
5 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/components/buttons/BlackRound4.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackRound4() {
4 | return (
5 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/components/buttons/BlackSm1.tsx:
--------------------------------------------------------------------------------
1 | export function BlackSm1() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/BlackSm2.tsx:
--------------------------------------------------------------------------------
1 | export function BlackSm2() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/BlackSmLoading1.tsx:
--------------------------------------------------------------------------------
1 | export function BlackSmLoading1() {
2 | return (
3 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/components/buttons/BlackSquare1.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function BlackSquare1() {
4 | return (
5 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/components/buttons/Blue1.tsx:
--------------------------------------------------------------------------------
1 | export function Blue1() {
2 | return (
3 |
7 | );
8 | }
9 |
--------------------------------------------------------------------------------
/components/buttons/Blue2.tsx:
--------------------------------------------------------------------------------
1 | export function Blue2() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Blue3.tsx:
--------------------------------------------------------------------------------
1 | export function Blue3() {
2 | return (
3 |
6 | );
7 | };
8 |
9 |
--------------------------------------------------------------------------------
/components/buttons/Blue4.tsx:
--------------------------------------------------------------------------------
1 | export function Blue4() {
2 | return (
3 |
9 | );
10 | }
11 |
12 | /*
13 | tailwind.config
14 |
15 | animation: {
16 | ["shine-infinite"]: "shine-infinite 2s ease-in-out infinite",
17 | },
18 | keyframes: {
19 | ["shine-infinite"]: {
20 | "0%": {
21 | transform: "skew(-12deg) translateX(-100%)",
22 | },
23 | "100%": {
24 | transform: "skew(-12deg) translateX(100%)",
25 | },
26 | },
27 | },
28 |
29 | */
30 |
--------------------------------------------------------------------------------
/components/buttons/BlueLoading1.tsx:
--------------------------------------------------------------------------------
1 | export function BlueLoading1() {
2 | return (
3 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/components/buttons/GreySm1.tsx:
--------------------------------------------------------------------------------
1 | export function GreySm1() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Letters1.tsx:
--------------------------------------------------------------------------------
1 | export function Letters1() {
2 | return (
3 |
31 | );
32 | }
33 |
--------------------------------------------------------------------------------
/components/buttons/Letters2.tsx:
--------------------------------------------------------------------------------
1 | export function Letters2() {
2 | return (
3 |
31 | );
32 | }
33 |
--------------------------------------------------------------------------------
/components/buttons/Letters3.tsx:
--------------------------------------------------------------------------------
1 | export function Letters3() {
2 | return (
3 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/components/buttons/Letters4.tsx:
--------------------------------------------------------------------------------
1 | export function Letters4() {
2 | return (
3 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/components/buttons/Link1.tsx:
--------------------------------------------------------------------------------
1 | export function Link1() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Link2.tsx:
--------------------------------------------------------------------------------
1 | export function Link2() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Link3.tsx:
--------------------------------------------------------------------------------
1 | export function Link3() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Link4.tsx:
--------------------------------------------------------------------------------
1 | export function Link4() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Link5.tsx:
--------------------------------------------------------------------------------
1 | export function Link5() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Link6.tsx:
--------------------------------------------------------------------------------
1 | export function Link6() {
2 | return (
3 | <>
4 |
10 | >
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/Link7.tsx:
--------------------------------------------------------------------------------
1 | export function Link7() {
2 | return (
3 | <>
4 |
10 | >
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/Link8.tsx:
--------------------------------------------------------------------------------
1 | export function Link8() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Outline1.tsx:
--------------------------------------------------------------------------------
1 | export function Outline1() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Outline2.tsx:
--------------------------------------------------------------------------------
1 | export function Outline2() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Outline3.tsx:
--------------------------------------------------------------------------------
1 | export function Outline3() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Outline4.tsx:
--------------------------------------------------------------------------------
1 | export function Outline4() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Shadow1.tsx:
--------------------------------------------------------------------------------
1 | export function Shadow1() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Shadow2.tsx:
--------------------------------------------------------------------------------
1 | export function Shadow2() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/Shadow3.tsx:
--------------------------------------------------------------------------------
1 | export function Shadow3() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Shadow4.tsx:
--------------------------------------------------------------------------------
1 | export function Shadow4() {
2 | return (
3 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/buttons/Shadow5.tsx:
--------------------------------------------------------------------------------
1 | export function Shadow5() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/SquareOutline1.tsx:
--------------------------------------------------------------------------------
1 | import { ArrowRightIcon } from "@radix-ui/react-icons";
2 |
3 | export function SquareOutline1() {
4 | return (
5 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic1.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic1() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic10.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic10() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic11.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic11() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic12.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic12() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic13.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic13() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic14.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic14() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic15.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic15() {
2 | return (
3 |
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic16.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic16() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic17.tsx:
--------------------------------------------------------------------------------
1 | import { PlusIcon } from "@radix-ui/react-icons";
2 |
3 | export function SubtleSkeuomorphic17() {
4 | return (
5 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic2.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic2() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic3.tsx:
--------------------------------------------------------------------------------
1 | import { GlobeIcon } from "@radix-ui/react-icons";
2 |
3 | export function SubtleSkeuomorphic3() {
4 | return (
5 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic4.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic4() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic5.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic5() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic6.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic6() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic7.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic7() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic8.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic8() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/SubtleSkeuomorphic9.tsx:
--------------------------------------------------------------------------------
1 | export function SubtleSkeuomorphic9() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/components/buttons/White1.tsx:
--------------------------------------------------------------------------------
1 | export function White1() {
2 | return (
3 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/White2.tsx:
--------------------------------------------------------------------------------
1 | export function White2() {
2 | return (
3 |
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/components/buttons/White3.tsx:
--------------------------------------------------------------------------------
1 | import { UpdateIcon } from "@radix-ui/react-icons";
2 |
3 | export function White3() {
4 | return (
5 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/data/buttons.ts:
--------------------------------------------------------------------------------
1 | import { Black1 } from "@/components/buttons/Black1";
2 | import { Black10 } from "@/components/buttons/Black10";
3 | import { Black11 } from "@/components/buttons/Black11";
4 | import { Black12 } from "@/components/buttons/Black12";
5 | import { Black13 } from "@/components/buttons/Black13";
6 | import { Black14 } from "@/components/buttons/Black14";
7 | import { Black2 } from "@/components/buttons/Black2";
8 | import { Black3 } from "@/components/buttons/Black3";
9 | import { Black4 } from "@/components/buttons/Black4";
10 | import { Black5 } from "@/components/buttons/Black5";
11 | import { Black6 } from "@/components/buttons/Black6";
12 | import { Black7 } from "@/components/buttons/Black7";
13 | import { Black8 } from "@/components/buttons/Black8";
14 | import { Black9 } from "@/components/buttons/Black9";
15 | import { BlackIcon1 } from "@/components/buttons/BlackIcon1";
16 | import { BlackIcon2 } from "@/components/buttons/BlackIcon2";
17 | import { BlackIcon3 } from "@/components/buttons/BlackIcon3";
18 | import { BlackIcon4 } from "@/components/buttons/BlackIcon4";
19 | import { BlackIcon5 } from "@/components/buttons/BlackIcon5";
20 | import { BlackIcon6 } from "@/components/buttons/BlackIcon6";
21 | import { BlackIcon7 } from "@/components/buttons/BlackIcon7";
22 | import { BlackIcon8 } from "@/components/buttons/BlackIcon8";
23 | import { BlackIcon9 } from "@/components/buttons/BlackIcon9";
24 | import { BlackIcon10 } from "@/components/buttons/BlackIcon10";
25 | import { BlackIcon11 } from "@/components/buttons/BlackIcon11";
26 | import { BlackLoading1 } from "@/components/buttons/BlackLoading1";
27 | import { BlackRound1 } from "@/components/buttons/BlackRound1";
28 | import { BlackRound2 } from "@/components/buttons/BlackRound2";
29 | import { BlackRound3 } from "@/components/buttons/BlackRound3";
30 | import { BlackRound4 } from "@/components/buttons/BlackRound4";
31 | import { BlackSm1 } from "@/components/buttons/BlackSm1";
32 | import { BlackSm2 } from "@/components/buttons/BlackSm2";
33 | import { BlackSmLoading1 } from "@/components/buttons/BlackSmLoading1";
34 | import { BlackSquare1 } from "@/components/buttons/BlackSquare1";
35 | import { Blue1 } from "@/components/buttons/Blue1";
36 | import { Blue2 } from "@/components/buttons/Blue2";
37 | import { Blue3 } from "@/components/buttons/Blue3";
38 | import { Blue4 } from "@/components/buttons/Blue4";
39 | import { BlueLoading1 } from "@/components/buttons/BlueLoading1";
40 | import { GreySm1 } from "@/components/buttons/GreySm1";
41 | import { Outline1 } from "@/components/buttons/Outline1";
42 | import { Outline2 } from "@/components/buttons/Outline2";
43 | import { Outline3 } from "@/components/buttons/Outline3";
44 | import { Outline4 } from "@/components/buttons/Outline4";
45 | import { Shadow1 } from "@/components/buttons/Shadow1";
46 | import { Shadow2 } from "@/components/buttons/Shadow2";
47 | import { Shadow3 } from "@/components/buttons/Shadow3";
48 | import { Shadow4 } from "@/components/buttons/Shadow4";
49 | import { Shadow5 } from "@/components/buttons/Shadow5";
50 | import { SquareOutline1 } from "@/components/buttons/SquareOutline1";
51 | import { White1 } from "@/components/buttons/White1";
52 | import { White2 } from "@/components/buttons/White2";
53 | import { White3 } from "@/components/buttons/White3";
54 | import { Letters1 } from "@/components/buttons/Letters1";
55 | import { Letters2 } from "@/components/buttons/Letters2";
56 | import { Letters3 } from "@/components/buttons/Letters3";
57 | import { Letters4 } from "@/components/buttons/Letters4";
58 | import { Link1 } from "@/components/buttons/Link1";
59 | import { Link2 } from "@/components/buttons/Link2";
60 | import { Link3 } from "@/components/buttons/Link3";
61 | import { Link4 } from "@/components/buttons/Link4";
62 | import { Link5 } from "@/components/buttons/Link5";
63 | import { Link6 } from "@/components/buttons/Link6";
64 | import { Link7 } from "@/components/buttons/Link7";
65 | import { Link8 } from "@/components/buttons/Link8";
66 | import { SubtleSkeuomorphic1 } from "@/components/buttons/SubtleSkeuomorphic1";
67 | import { SubtleSkeuomorphic2 } from "@/components/buttons/SubtleSkeuomorphic2";
68 | import { SubtleSkeuomorphic3 } from "@/components/buttons/SubtleSkeuomorphic3";
69 | import { SubtleSkeuomorphic4 } from "@/components/buttons/SubtleSkeuomorphic4";
70 | import { SubtleSkeuomorphic5 } from "@/components/buttons/SubtleSkeuomorphic5";
71 | import { SubtleSkeuomorphic6 } from "@/components/buttons/SubtleSkeuomorphic6";
72 | import { SubtleSkeuomorphic7 } from "@/components/buttons/SubtleSkeuomorphic7";
73 | import { SubtleSkeuomorphic8 } from "@/components/buttons/SubtleSkeuomorphic8";
74 | import { SubtleSkeuomorphic9 } from "@/components/buttons/SubtleSkeuomorphic9";
75 | import { SubtleSkeuomorphic10 } from "@/components/buttons/SubtleSkeuomorphic10";
76 | import { SubtleSkeuomorphic11 } from "@/components/buttons/SubtleSkeuomorphic11";
77 | import { SubtleSkeuomorphic12 } from "@/components/buttons/SubtleSkeuomorphic12";
78 | import { SubtleSkeuomorphic13 } from "@/components/buttons/SubtleSkeuomorphic13";
79 | import { SubtleSkeuomorphic14 } from "@/components/buttons/SubtleSkeuomorphic14";
80 | import { SubtleSkeuomorphic15 } from "@/components/buttons/SubtleSkeuomorphic15";
81 | import { SubtleSkeuomorphic17 } from "@/components/buttons/SubtleSkeuomorphic17";
82 | import { SubtleSkeuomorphic16 } from "@/components/buttons/SubtleSkeuomorphic16";
83 |
84 | export const BUTTONS = [
85 | Black1,
86 | Black2,
87 | Black3,
88 | Black4,
89 | Black5,
90 | Black6,
91 | Black7,
92 | Black8,
93 | Black9,
94 | Black10,
95 | Black11,
96 | Black12,
97 | Black13,
98 | Black14,
99 | BlackLoading1,
100 | BlackIcon1,
101 | BlackIcon2,
102 | BlackIcon3,
103 | BlackIcon4,
104 | BlackIcon5,
105 | BlackIcon6,
106 | BlackIcon7,
107 | BlackIcon8,
108 | BlackIcon9,
109 | BlackIcon10,
110 | BlackIcon11,
111 | BlackSm1,
112 | BlackSm2,
113 | BlackSmLoading1,
114 | GreySm1,
115 | Outline1,
116 | Outline2,
117 | Outline3,
118 | Outline4,
119 | Blue1,
120 | Blue2,
121 | Blue3,
122 | Blue4,
123 | BlueLoading1,
124 | BlackRound1,
125 | BlackRound2,
126 | BlackRound3,
127 | BlackRound4,
128 | BlackSquare1,
129 | SquareOutline1,
130 | White1,
131 | White2,
132 | White3,
133 | Shadow1,
134 | Shadow2,
135 | Shadow3,
136 | Shadow4,
137 | Shadow5,
138 | Letters1,
139 | Letters2,
140 | Letters3,
141 | Letters4,
142 | Link1,
143 | Link2,
144 | Link3,
145 | Link4,
146 | Link5,
147 | Link6,
148 | Link7,
149 | Link8,
150 | SubtleSkeuomorphic1,
151 | SubtleSkeuomorphic2,
152 | SubtleSkeuomorphic3,
153 | SubtleSkeuomorphic4,
154 | SubtleSkeuomorphic5,
155 | SubtleSkeuomorphic6,
156 | SubtleSkeuomorphic7,
157 | SubtleSkeuomorphic8,
158 | SubtleSkeuomorphic9,
159 | SubtleSkeuomorphic10,
160 | SubtleSkeuomorphic11,
161 | SubtleSkeuomorphic12,
162 | SubtleSkeuomorphic13,
163 | SubtleSkeuomorphic14,
164 | SubtleSkeuomorphic15,
165 | SubtleSkeuomorphic16,
166 | SubtleSkeuomorphic17,
167 | ];
168 |
--------------------------------------------------------------------------------
/lib/utils.ts:
--------------------------------------------------------------------------------
1 | import { type ClassValue, clsx } from "clsx";
2 | import { twMerge } from "tailwind-merge";
3 |
4 | export function cn(...inputs: ClassValue[]) {
5 | return twMerge(clsx(inputs));
6 | }
7 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {}
3 |
4 | module.exports = nextConfig
5 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "buttons",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@radix-ui/react-icons": "^1.3.0",
13 | "class-variance-authority": "^0.7.0",
14 | "clsx": "^2.1.0",
15 | "next": "14.0.4",
16 | "react": "^18",
17 | "react-dom": "^18",
18 | "sonner": "^1.3.1",
19 | "tailwind-merge": "^2.2.0"
20 | },
21 | "devDependencies": {
22 | "@types/node": "^20",
23 | "@types/react": "^18",
24 | "@types/react-dom": "^18",
25 | "autoprefixer": "^10.0.1",
26 | "eslint": "^8",
27 | "eslint-config-next": "14.0.4",
28 | "postcss": "^8",
29 | "prettier": "^3.1.1",
30 | "prettier-plugin-tailwindcss": "^0.5.9",
31 | "tailwindcss": "^3.3.0",
32 | "typescript": "^5"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ibelick/buttons/03d7a89e614c1b16a8af4b65f2ccd3e8ca07b866/public/cover.png
--------------------------------------------------------------------------------
/public/opengraph-image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ibelick/buttons/03d7a89e614c1b16a8af4b65f2ccd3e8ca07b866/public/opengraph-image.jpg
--------------------------------------------------------------------------------
/screens/home.tsx:
--------------------------------------------------------------------------------
1 | import { ButtonIcon, StarIcon } from "@radix-ui/react-icons";
2 | import { BUTTONS } from "@/data/buttons";
3 | import { CardComponent } from "@/components/app/card-component";
4 |
5 | const ButtonGithubStar = () => {
6 | return (
7 |
13 |
14 | Star
15 |
18 |
19 | );
20 | };
21 |
22 | export const Home = () => {
23 | return (
24 |
25 |
26 |
27 |
28 |
34 |
35 |
36 | buttons.ibelick
37 |
38 |
39 |
40 | {`Discover a collection of Tailwind CSS buttons designed to enhance your
41 | website's look.`}
42 |
43 |
Easy to integrate with a copy-paste, no js
44 |
45 |
46 |
47 |
48 |
49 |
50 | {BUTTONS?.map((Comp) => {
51 | return (
52 |
53 |
54 |
55 | );
56 | })}
57 |
58 |
59 |
60 |
73 |
81 |
82 | );
83 | };
84 |
--------------------------------------------------------------------------------
/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from "tailwindcss";
2 |
3 | const config: Config = {
4 | content: [
5 | "./pages/**/*.{js,ts,jsx,tsx,mdx}",
6 | "./components/**/*.{js,ts,jsx,tsx,mdx}",
7 | "./app/**/*.{js,ts,jsx,tsx,mdx}",
8 | "./screens/**/*.{js,ts,jsx,tsx,mdx}",
9 | ],
10 | theme: {
11 | extend: {
12 | animation: {
13 | ["shine-infinite"]: "shine-infinite 2s ease-in-out infinite",
14 | },
15 | keyframes: {
16 | ["shine-infinite"]: {
17 | "0%": {
18 | transform: "skew(-12deg) translateX(-100%)",
19 | },
20 | "100%": {
21 | transform: "skew(-12deg) translateX(100%)",
22 | },
23 | },
24 | },
25 | },
26 | },
27 | plugins: [],
28 | };
29 |
30 | export default config;
31 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "plugins": [
17 | {
18 | "name": "next"
19 | }
20 | ],
21 | "paths": {
22 | "@/*": ["./*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26 | "exclude": ["node_modules"]
27 | }
28 |
--------------------------------------------------------------------------------