ikramhussainsiyam-create-my-project 1.2.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. package/cli.js +1 -3
  2. package/package.json +1 -1
  3. package/templates/NextJS/JavaScript/.eslintrc.json +13 -0
  4. package/templates/NextJS/JavaScript/README.md +36 -0
  5. package/templates/NextJS/JavaScript/gitignore-template +45 -0
  6. package/templates/NextJS/JavaScript/jsconfig.json +7 -0
  7. package/templates/NextJS/JavaScript/next.config.mjs +4 -0
  8. package/templates/NextJS/JavaScript/package-lock.json +5730 -0
  9. package/templates/NextJS/JavaScript/package.json +30 -0
  10. package/templates/NextJS/JavaScript/postcss.config.mjs +8 -0
  11. package/templates/NextJS/JavaScript/public/lws.svg +10 -0
  12. package/templates/NextJS/JavaScript/src/app/favicon.ico +0 -0
  13. package/templates/NextJS/JavaScript/src/app/globals.css +30 -0
  14. package/templates/NextJS/JavaScript/src/app/layout.jsx +26 -0
  15. package/templates/NextJS/JavaScript/src/app/page.jsx +3 -0
  16. package/templates/NextJS/JavaScript/src/components/Navlink.jsx +31 -0
  17. package/templates/NextJS/JavaScript/src/components/ToastContainer.jsx +84 -0
  18. package/templates/NextJS/JavaScript/src/components/ui/Alert.jsx +48 -0
  19. package/templates/NextJS/JavaScript/src/components/ui/Button.jsx +58 -0
  20. package/templates/NextJS/JavaScript/src/components/ui/Skeleton.jsx +14 -0
  21. package/templates/NextJS/JavaScript/src/lib/toast.js +19 -0
  22. package/templates/NextJS/JavaScript/src/lib/utils.js +10 -0
  23. package/templates/NextJS/JavaScript/tailwind.config.js +19 -0
  24. package/templates/ViteJS/JavaScript/README.md +3 -0
  25. package/templates/ViteJS/JavaScript/eslint.config.js +1 -4
  26. package/templates/ViteJS/JavaScript/gitignore-template +1 -0
  27. package/templates/ViteJS/JavaScript/src/index.css +13 -0
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "test",
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
+ "@tailwindcss/aspect-ratio": "^0.4.2",
13
+ "@tailwindcss/forms": "^0.5.9",
14
+ "clsx": "^2.1.1",
15
+ "next": "15.0.3",
16
+ "react": "18.3.1",
17
+ "react-dom": "18.3.1",
18
+ "react-hook-form": "^7.53.2",
19
+ "react-icons": "^5.3.0",
20
+ "sonner": "^1.7.0",
21
+ "tailwind-merge": "^2.5.4",
22
+ "use-immer": "^0.10.0"
23
+ },
24
+ "devDependencies": {
25
+ "eslint": "^8",
26
+ "eslint-config-next": "15.0.3",
27
+ "postcss": "^8",
28
+ "tailwindcss": "^3.4.1"
29
+ }
30
+ }
@@ -0,0 +1,8 @@
1
+ /** @type {import('postcss-load-config').Config} */
2
+ const config = {
3
+ plugins: {
4
+ tailwindcss: {},
5
+ },
6
+ };
7
+
8
+ export default config;
@@ -0,0 +1,10 @@
1
+ <svg width="1286" height="1286" viewBox="0 0 1286 1286" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M643.334 1260.29C984.068 1260.29 1260.29 984.072 1260.29 643.338C1260.29 302.605 984.068 26.3857 643.334 26.3857C302.6 26.3857 26.3809 302.605 26.3809 643.338C26.3809 984.072 302.6 1260.29 643.334 1260.29Z" fill="#171C2A"/>
3
+ <path d="M643.341 1286C516.235 1286 391.984 1248.31 286.299 1177.69C180.614 1107.08 98.2429 1006.71 49.6015 889.275C0.960094 771.845 -11.7667 642.627 13.0305 517.964C37.8276 393.3 99.035 278.789 188.913 188.912C278.79 99.0344 393.301 37.8271 517.965 13.03C642.629 -11.7672 771.846 0.959605 889.277 49.6009C1006.71 98.2423 1107.08 180.613 1177.69 286.298C1248.31 391.983 1286 516.234 1286 643.34C1285.8 813.721 1218.02 977.066 1097.54 1097.54C977.067 1218.02 813.723 1285.8 643.341 1286ZM643.341 52.0942C526.404 52.0942 412.092 86.7701 314.862 151.737C217.632 216.704 141.851 309.044 97.1007 417.08C52.3506 525.116 40.6419 643.996 63.4553 758.687C86.2687 873.377 142.58 978.727 225.267 1061.41C307.954 1144.1 413.304 1200.41 527.995 1223.23C642.686 1246.04 761.566 1234.33 869.602 1189.58C977.638 1144.83 1069.98 1069.05 1134.95 971.819C1199.91 874.589 1234.59 760.278 1234.59 643.34C1234.38 486.595 1172.03 336.328 1061.19 225.492C950.355 114.656 800.087 52.2982 643.341 52.0942Z" fill="#00D991"/>
4
+ <path d="M491.347 691.554L487.623 695.283C485.717 697.191 485.719 700.284 487.628 702.19L543.562 758.046C545.47 759.952 548.563 759.95 550.469 758.041L554.193 754.312C556.099 752.403 556.097 749.311 554.188 747.405L498.254 691.549C496.345 689.643 493.253 689.645 491.347 691.554Z" fill="white"/>
5
+ <path d="M492.578 662.844L488.852 666.57C486.945 668.478 486.945 671.57 488.852 673.478L535.022 719.648C536.929 721.555 540.022 721.555 541.929 719.648L545.656 715.921C547.563 714.014 547.563 710.921 545.656 709.014L499.486 662.844C497.578 660.937 494.486 660.937 492.578 662.844Z" fill="white"/>
6
+ <path d="M807.245 691.69L803.522 695.419C801.615 697.328 801.618 700.421 803.526 702.327L859.46 758.182C861.369 760.088 864.461 760.086 866.367 758.178L870.091 754.449C871.997 752.54 871.995 749.447 870.086 747.541L814.153 691.686C812.244 689.78 809.151 689.782 807.245 691.69Z" fill="white"/>
7
+ <path d="M808.089 662.878L804.359 666.601C802.45 668.506 802.447 671.599 804.353 673.508L850.483 719.718C852.388 721.627 855.481 721.63 857.39 719.724L861.12 716.001C863.029 714.095 863.031 711.003 861.126 709.094L814.996 662.884C813.09 660.975 809.998 660.972 808.089 662.878Z" fill="white"/>
8
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M938.973 726.233H926.12C922.473 695.802 907.889 667.734 885.084 647.257C862.279 626.781 832.808 615.291 802.161 614.93C771.515 614.568 741.781 625.359 718.499 645.292C695.218 665.224 679.975 692.941 675.611 723.277C668.799 724.82 642.193 726.233 642.193 726.233C642.193 726.233 616.486 724.948 610.188 723.534C605.853 693.195 590.638 665.467 567.377 645.512C544.117 625.558 514.396 614.738 483.751 615.068C453.105 615.398 423.625 626.856 400.799 647.307C377.974 667.758 363.36 695.808 359.68 726.233H345.284C342.693 726.233 340.209 727.263 338.377 729.095C336.545 730.926 335.516 733.411 335.516 736.002V746.156C335.549 748.702 336.575 751.135 338.376 752.935C340.177 754.736 342.609 755.762 345.156 755.796H359.037C362.65 786.233 377.204 814.319 399.989 834.822C422.773 855.324 452.234 866.846 482.882 867.239C513.531 867.632 543.277 856.87 566.58 836.959C589.883 817.047 605.153 789.344 609.546 759.009C616.615 757.595 641.55 756.181 641.55 756.181C641.55 756.181 668.028 757.852 674.968 759.266C678.745 790.145 693.781 818.546 717.196 839.028C740.612 859.51 770.761 870.633 801.868 870.267C832.975 869.901 862.854 858.071 885.781 837.044C908.708 816.016 923.071 787.27 926.12 756.31H938.973C941.52 756.311 943.966 755.317 945.791 753.54C947.616 751.764 948.674 749.344 948.741 746.799V736.13C948.741 733.54 947.712 731.055 945.88 729.223C944.048 727.391 941.564 726.362 938.973 726.362V726.233ZM484.484 837.542C465.444 837.542 446.831 831.896 430.999 821.317C415.168 810.739 402.828 795.704 395.542 778.113C388.255 760.522 386.349 741.165 390.064 722.49C393.778 703.816 402.947 686.662 416.411 673.198C429.874 659.735 447.028 650.566 465.703 646.851C484.377 643.137 503.734 645.043 521.325 652.33C538.916 659.616 553.952 671.955 564.53 687.787C575.108 703.618 580.755 722.231 580.755 741.272C580.755 766.804 570.612 791.291 552.558 809.345C534.503 827.399 510.017 837.542 484.484 837.542ZM800.03 837.542C780.99 837.542 762.377 831.896 746.545 821.317C730.713 810.739 718.374 795.704 711.088 778.113C703.801 760.522 701.895 741.165 705.609 722.49C709.324 703.816 718.493 686.662 731.957 673.198C745.42 659.735 762.574 650.566 781.249 646.851C799.923 643.137 819.28 645.043 836.871 652.33C854.462 659.616 869.498 671.955 880.076 687.787C890.654 703.618 896.3 722.231 896.3 741.272C896.3 766.804 886.158 791.291 868.103 809.345C850.049 827.399 825.562 837.542 800.03 837.542Z" fill="white"/>
9
+ <path d="M1049.24 689.872V465.07H970.193C974.816 440.361 977.779 415.369 979.062 390.264L932.533 424.839C958.239 395.148 932.533 256.72 932.533 256.72C932.533 256.72 898.601 323.299 687.037 306.333C475.473 289.367 445.783 373.427 445.783 373.427C420.076 347.72 445.783 305.69 445.783 305.69C438.117 309.232 431.225 314.25 425.499 320.457C419.774 326.663 415.328 333.938 412.415 341.864C409.503 349.79 408.181 358.212 408.525 366.649C408.869 375.086 410.872 383.373 414.421 391.035L416.22 394.506H347.713L395.012 424.839C380.107 434.729 368.652 449.015 362.237 465.712H234.99V689.872L188.719 736.143L234.99 782.415L247.843 1007.22H368.021L355.168 769.305C355.294 768.517 355.261 767.713 355.069 766.939C354.877 766.165 354.53 765.438 354.05 764.802C353.569 764.166 352.965 763.633 352.274 763.236C351.583 762.839 350.818 762.586 350.026 762.492C348.461 762.27 346.87 762.67 345.597 763.608C344.323 764.545 343.468 765.944 343.214 767.505C343.085 768.098 343.085 768.712 343.214 769.305V951.82H289.359V767.505L257.74 736.143L289.231 704.782V520.467H349.127C347.712 534.389 347.454 548.404 348.355 562.368H390.642C392.995 536.697 405.259 512.952 424.832 496.174C496.81 407.23 801.559 459.157 801.559 459.157L835.363 409.287L822.51 459.157C894.23 476.252 900.4 560.826 900.4 560.826H932.533C942.193 548.697 949.792 535.062 955.026 520.467H994.871V704.782L1026.36 736.143L994.871 767.505V951.82H929.063L941.916 1007.22H1062.09L1049.24 782.415L1095.51 736.143L1049.24 689.872Z" fill="white"/>
10
+ </svg>
@@ -0,0 +1,30 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ @layer base {
6
+ body {
7
+ @apply antialiased bg-white font-sans;
8
+ }
9
+ /* scroll bar styling */
10
+ ::-webkit-scrollbar {
11
+ width: 12px;
12
+ height: 12px;
13
+ }
14
+ ::-webkit-scrollbar-thumb {
15
+ background: #e2e2e2;
16
+ border-radius: 10px;
17
+ }
18
+ }
19
+
20
+ @layer components {
21
+ .btn {
22
+ @apply px-2 py-1 border rounded hover:bg-zinc-100 active:bg-white active:scale-95;
23
+ }
24
+ .container {
25
+ @apply px-4;
26
+ }
27
+ .input {
28
+ @apply px-3 py-2 border rounded;
29
+ }
30
+ }
@@ -0,0 +1,26 @@
1
+ import ToastContainer from "@/components/ToastContainer";
2
+ import { Inter } from "next/font/google";
3
+ import "./globals.css";
4
+
5
+ const fontSans = Inter({
6
+ subsets: ["latin"],
7
+ variable: "--font-sans",
8
+ display: "swap",
9
+ });
10
+
11
+ export const metadata = {
12
+ title: "Project title",
13
+ description: "Project description",
14
+ };
15
+
16
+ export default function RootLayout({ children }) {
17
+ return (
18
+ <html lang="en">
19
+ <body className={fontSans.variable}>
20
+ <main>{children}</main>
21
+
22
+ <ToastContainer />
23
+ </body>
24
+ </html>
25
+ );
26
+ }
@@ -0,0 +1,3 @@
1
+ export default function Home() {
2
+ return <div>Home Page</div>;
3
+ }
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { cn } from "@/lib/utils";
3
+ import Link from "next/link";
4
+ import { usePathname } from "next/navigation";
5
+
6
+ export default function Navlink({
7
+ href,
8
+ className,
9
+ activeStyle,
10
+ children,
11
+ prefetch,
12
+ replace,
13
+ scroll,
14
+ ...props
15
+ }) {
16
+ const pathname = usePathname();
17
+ const isActive = href === pathname;
18
+
19
+ return (
20
+ <Link
21
+ scroll={scroll}
22
+ replace={replace}
23
+ prefetch={prefetch}
24
+ href={href}
25
+ {...props}
26
+ className={cn(isActive && (activeStyle ?? "active"), className)}
27
+ >
28
+ {children}
29
+ </Link>
30
+ );
31
+ }
@@ -0,0 +1,84 @@
1
+ "use client";
2
+
3
+ import {
4
+ FaCircleCheck,
5
+ FaCircleExclamation,
6
+ FaCircleInfo,
7
+ FaCircleXmark,
8
+ } from "react-icons/fa6";
9
+ import { LiaSpinnerSolid } from "react-icons/lia";
10
+ import { Toaster } from "sonner";
11
+
12
+ const ToastContainer = ({ type = "iconic", ...props }) => {
13
+ const icons = () => {
14
+ switch (type) {
15
+ case "neutral":
16
+ return {
17
+ success: <FaCircleCheck className="text-xl" />,
18
+ error: <FaCircleXmark className="text-xl" />,
19
+ info: <FaCircleInfo className="text-xl" />,
20
+ warning: <FaCircleExclamation className="text-xl" />,
21
+ loading: <LiaSpinnerSolid className="text-2xl animate-spin" />,
22
+ };
23
+
24
+ case "iconic":
25
+ return {
26
+ success: <FaCircleCheck className="text-xl text-lime-500" />,
27
+ error: <FaCircleXmark className="text-xl text-rose-500" />,
28
+ info: <FaCircleInfo className="text-xl text-sky-500" />,
29
+ warning: <FaCircleExclamation className="text-xl text-amber-500" />,
30
+ loading: <LiaSpinnerSolid className="text-2xl animate-spin" />,
31
+ };
32
+
33
+ case "colored":
34
+ return {
35
+ success: <FaCircleCheck className="text-xl text-lime-700" />,
36
+ error: <FaCircleXmark className="text-xl text-rose-700" />,
37
+ info: <FaCircleInfo className="text-xl text-sky-700" />,
38
+ warning: <FaCircleExclamation className="text-xl text-amber-700" />,
39
+ loading: <LiaSpinnerSolid className="text-2xl animate-spin" />,
40
+ };
41
+ }
42
+ };
43
+
44
+ return (
45
+ <Toaster
46
+ {...props}
47
+ toastOptions={{
48
+ classNames: {
49
+ toast: `group toast bg-background text-foreground font-sans gap-3 items-start ${
50
+ type === "colored" ? "shadow-lg" : ""
51
+ }`,
52
+ title: "text-base font-semibold",
53
+ description: `text-sm ${
54
+ type === "colored" ? "" : "text-muted-foreground"
55
+ }`,
56
+ icon: "text-center text-foreground mt-[4.3px]",
57
+ success:
58
+ type === "colored"
59
+ ? "bg-lime-200 text-lime-700 shadow-lime-600/20 border-transparent"
60
+ : "",
61
+ error:
62
+ type === "colored"
63
+ ? "bg-rose-200 text-rose-700 shadow-rose-600/20 border-transparent"
64
+ : "",
65
+ info:
66
+ type === "colored"
67
+ ? "bg-sky-200 text-sky-700 shadow-sky-600/20 border-transparent"
68
+ : "",
69
+ warning:
70
+ type === "colored"
71
+ ? "bg-amber-200 text-amber-700 shadow-amber-600/20 border-transparent"
72
+ : "",
73
+ actionButton:
74
+ "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
75
+ cancelButton:
76
+ "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
77
+ },
78
+ }}
79
+ icons={icons()}
80
+ />
81
+ );
82
+ };
83
+
84
+ export default ToastContainer;
@@ -0,0 +1,48 @@
1
+ import { cn } from "@/lib/utils";
2
+
3
+ export default function Alert({ type, title, description, className }) {
4
+ return (
5
+ <div
6
+ className={cn(
7
+ `flex p-4 gap-3 text-sm rounded-lg border border-transparent ${alertType(
8
+ type
9
+ )}`,
10
+ className
11
+ )}
12
+ role="alert"
13
+ >
14
+ <svg
15
+ className={"w-4 h-4 mt-0.5"}
16
+ aria-hidden="true"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ fill="currentColor"
19
+ viewBox="0 0 20 20"
20
+ >
21
+ <path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z" />
22
+ </svg>
23
+ <span className="sr-only">Danger</span>
24
+ <div className="space-y-0.5">
25
+ <div>
26
+ <span className="font-semibold capitalize">{type || "Alert"}</span>:{" "}
27
+ {title}
28
+ </div>
29
+ <div>{description}</div>
30
+ </div>
31
+ </div>
32
+ );
33
+ }
34
+
35
+ function alertType(type) {
36
+ switch (type) {
37
+ case "success":
38
+ return "text-lime-800 bg-lime-100 border-lime-300";
39
+ case "warning":
40
+ return "text-amber-800 bg-amber-100 border-amber-300";
41
+ case "error":
42
+ return "text-rose-800 bg-rose-100 border-rose-300";
43
+ case "info":
44
+ return "text-sky-800 bg-sky-100 border-sky-300";
45
+ default:
46
+ return "text-gray-800 bg-gray-100 border-gray-300";
47
+ }
48
+ }
@@ -0,0 +1,58 @@
1
+ import { cn } from "@/lib/utils";
2
+
3
+ export default function Button({
4
+ size = "md",
5
+ color = "blue",
6
+ rounded = "lg",
7
+ children,
8
+ onClick,
9
+ className,
10
+ ...props
11
+ }) {
12
+ return (
13
+ <button
14
+ {...props}
15
+ onClick={onClick}
16
+ className={cn(
17
+ `focus:ring-4 text-center font-medium focus:outline-none border border-transparent flex items-center gap-2.5 active:scale-[.97] transition duration-100 ${buttonStyles.color[color]} ${buttonStyles.size[size]} ${buttonStyles.rounded[rounded]}`,
18
+ className
19
+ )}
20
+ >
21
+ {children}
22
+ </button>
23
+ );
24
+ }
25
+
26
+ const buttonStyles = {
27
+ color: {
28
+ blue: "text-white bg-blue-700 hover:bg-blue-800 focus:ring-blue-300",
29
+ dark: "text-white bg-zinc-800 hover:bg-zinc-900 focus:ring-zinc-300",
30
+ outline:
31
+ "text-zinc-900 bg-white border-zinc-300 hover:bg-zinc-100 focus:ring-zinc-100",
32
+ ghost:
33
+ "text-zinc-900 bg-zinc-100 hover:bg-zinc-200/70 active:bg-zinc-100 focus:ring-zinc-100",
34
+ green: "text-white bg-green-700 hover:bg-green-800 focus:ring-green-300",
35
+ red: "text-white bg-red-700 hover:bg-red-800 focus:ring-red-300",
36
+ indigo:
37
+ "text-white bg-indigo-700 hover:bg-indigo-800 focus:ring-indigo-300",
38
+ amber: "text-white bg-amber-400 hover:bg-amber-500 focus:ring-amber-300",
39
+ "gradient-lime":
40
+ "text-zinc-900 bg-gradient-to-r from-teal-200 to-lime-200 hover:bg-gradient-to-l hover:from-teal-200 hover:to-lime-200 focus:ring-lime-200",
41
+ "gradient-blue":
42
+ "text-white bg-gradient-to-br from-purple-600 to-blue-500 hover:bg-gradient-to-bl focus:ring-blue-300",
43
+ },
44
+ size: {
45
+ sm: "text-sm px-3.5 py-1.5",
46
+ md: "text-sm px-5 py-2.5",
47
+ lg: "text-base px-5 py-2.5",
48
+ xl: "text-lg px-5 py-2.5",
49
+ },
50
+ rounded: {
51
+ sm: "rounded-sm",
52
+ md: "rounded-md",
53
+ lg: "rounded-lg",
54
+ xl: "rounded-xl",
55
+ full: "rounded-full",
56
+ none: "rounded-none",
57
+ },
58
+ };
@@ -0,0 +1,14 @@
1
+ import { cn } from "@/lib/utils/utils";
2
+
3
+ export default function Skeleton({ className, children }) {
4
+ return (
5
+ <div
6
+ className={cn(
7
+ "bg-zinc-200 animate-none animate-pulse rounded-md w-full h-full",
8
+ className
9
+ )}
10
+ >
11
+ {children}
12
+ </div>
13
+ );
14
+ }
@@ -0,0 +1,19 @@
1
+ import { toast } from "sonner";
2
+
3
+ /**
4
+ * @typedef {'success' | 'error' | 'info' | 'warning' | 'loading'} Type
5
+ * @typedef {'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center'} Position
6
+ *
7
+ * @param {Type} type
8
+ * @param {string} message
9
+ * @param {{ position?: Position, id?: string | number, duration?: number, description?: string}} options
10
+ */
11
+
12
+ export default function showToast(type, message, options) {
13
+ toast[type](message, {
14
+ position: options?.position || "top-center",
15
+ id: options?.id,
16
+ duration: options?.duration || 5000,
17
+ description: options?.description,
18
+ });
19
+ }
@@ -0,0 +1,10 @@
1
+ import clsx from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+
4
+ export function cn(...classes) {
5
+ return twMerge(clsx(classes));
6
+ }
7
+
8
+ export function getRandomID() {
9
+ return Math.random().toString(36).substring(2, 9);
10
+ }
@@ -0,0 +1,19 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ content: [
4
+ "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
5
+ "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
6
+ "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
7
+ ],
8
+ theme: {
9
+ extend: {
10
+ fontFamily: {
11
+ sans: ["var(--font-sans)", "sans-serif"],
12
+ },
13
+ },
14
+ },
15
+ plugins: [
16
+ require("@tailwindcss/aspect-ratio"),
17
+ require("@tailwindcss/forms"),
18
+ ],
19
+ };
@@ -6,3 +6,6 @@ Currently, two official plugins are available:
6
6
 
7
7
  - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
8
8
  - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9
+
10
+ <!-- TODO 1: add some most used components -->
11
+ <!-- TODO 2: add some most used utils / hooks / configs -->
@@ -35,10 +35,7 @@ export default [
35
35
  ],
36
36
  "react/prop-types": "off",
37
37
  "react/no-unescaped-entities": "off",
38
- "react-refresh/only-export-components": [
39
- "warn",
40
- { allowConstantExport: true },
41
- ],
38
+ "react-refresh/only-export-components": "off",
42
39
  },
43
40
  },
44
41
  ];
@@ -8,6 +8,7 @@ pnpm-debug.log*
8
8
  lerna-debug.log*
9
9
 
10
10
  node_modules
11
+ html_template
11
12
  dist
12
13
  dist-ssr
13
14
  *.local
@@ -23,4 +23,17 @@
23
23
  .btn {
24
24
  @apply px-2 py-1 border rounded hover:bg-zinc-100 active:bg-white active:scale-95;
25
25
  }
26
+ /* TODO: remove 👇 these classes if you don't need them. */
27
+ .flex-c {
28
+ @apply flex justify-center items-center gap-2;
29
+ }
30
+ .flex-y {
31
+ @apply flex flex-col gap-2 items-center;
32
+ }
33
+ .flex-x {
34
+ @apply flex flex-row gap-2 items-center;
35
+ }
36
+ .title {
37
+ @apply text-2xl font-semibold mb-6;
38
+ }
26
39
  }