nextjs-starter-kit 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/bin/cli.js +11 -0
  2. package/package.json +10 -1
  3. package/.github/PR_REQUEST_TEMPLATE.md +0 -18
  4. package/.github/workflows/pr_check.yml +0 -38
  5. package/.husky/pre-commit +0 -1
  6. package/.prettierignore +0 -7
  7. package/.prettierrc +0 -9
  8. package/components.json +0 -21
  9. package/eslint.config.mjs +0 -42
  10. package/jsconfig.json +0 -7
  11. package/lint-staged.config.js +0 -6
  12. package/next.config.mjs +0 -6
  13. package/postcss.config.mjs +0 -5
  14. package/src/animations/loader.js +0 -81
  15. package/src/app/(routes)/(home)/page.jsx +0 -7
  16. package/src/app/favicon.ico +0 -0
  17. package/src/app/layout.js +0 -81
  18. package/src/app/not-found.jsx +0 -19
  19. package/src/app/robots.js +0 -10
  20. package/src/app/sitemap.js +0 -10
  21. package/src/assets/Logos/index.js +0 -3
  22. package/src/assets/index.js +0 -5
  23. package/src/components/ui/accordion.jsx +0 -53
  24. package/src/components/ui/alert-dialog.jsx +0 -136
  25. package/src/components/ui/alert.jsx +0 -59
  26. package/src/components/ui/avatar.jsx +0 -44
  27. package/src/components/ui/badge.jsx +0 -40
  28. package/src/components/ui/breadcrumb.jsx +0 -96
  29. package/src/components/ui/button.jsx +0 -49
  30. package/src/components/ui/calendar.jsx +0 -221
  31. package/src/components/ui/card.jsx +0 -92
  32. package/src/components/ui/carousel.jsx +0 -217
  33. package/src/components/ui/chart.jsx +0 -332
  34. package/src/components/ui/checkbox.jsx +0 -29
  35. package/src/components/ui/collapsible.jsx +0 -27
  36. package/src/components/ui/command.jsx +0 -156
  37. package/src/components/ui/container.jsx +0 -18
  38. package/src/components/ui/dialog.jsx +0 -127
  39. package/src/components/ui/drawer.jsx +0 -114
  40. package/src/components/ui/dropdown-menu.jsx +0 -210
  41. package/src/components/ui/form.jsx +0 -140
  42. package/src/components/ui/headings.jsx +0 -34
  43. package/src/components/ui/image.jsx +0 -21
  44. package/src/components/ui/input-otp.jsx +0 -66
  45. package/src/components/ui/input.jsx +0 -21
  46. package/src/components/ui/label.jsx +0 -21
  47. package/src/components/ui/pagination.jsx +0 -105
  48. package/src/components/ui/popover.jsx +0 -42
  49. package/src/components/ui/progress.jsx +0 -27
  50. package/src/components/ui/select.jsx +0 -157
  51. package/src/components/ui/separator.jsx +0 -28
  52. package/src/components/ui/sheet.jsx +0 -117
  53. package/src/components/ui/skeleton.jsx +0 -13
  54. package/src/components/ui/slider.jsx +0 -63
  55. package/src/components/ui/sonner.jsx +0 -23
  56. package/src/components/ui/switch.jsx +0 -28
  57. package/src/components/ui/table.jsx +0 -113
  58. package/src/components/ui/tabs.jsx +0 -54
  59. package/src/components/ui/textarea.jsx +0 -18
  60. package/src/components/ui/tooltip.jsx +0 -49
  61. package/src/lib/axios.js +0 -8
  62. package/src/lib/queryClient.js +0 -11
  63. package/src/lib/utils.js +0 -6
  64. package/src/providers/QueryProvider.jsx +0 -15
  65. package/src/shared/icons.js +0 -308
  66. package/src/styles/fonts.js +0 -30
  67. package/src/styles/globals.css +0 -124
package/bin/cli.js ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ import fs from "fs";
3
+ import path from "path";
4
+
5
+ const projectName = process.argv[2] || "my-app";
6
+ const targetDir = path.join(process.cwd(), projectName);
7
+
8
+ fs.cpSync(path.join(__dirname, "../template"), targetDir, { recursive: true });
9
+
10
+ console.log(`✅ Project created at ${projectName}`);
11
+ console.log(`👉 cd ${projectName} && pnpm install && pnpm dev`);
package/package.json CHANGED
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "name": "nextjs-starter-kit",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "private": false,
5
+ "bin": {
6
+ "create-nextjs-starter-kit": "bin/cli.js"
7
+ },
8
+ "files": [
9
+ "bin",
10
+ "template",
11
+ "package.json",
12
+ "README.md"
13
+ ],
5
14
  "scripts": {
6
15
  "dev": "next dev --turbopack",
7
16
  "build": "pnpm lint && pnpm format && next build --turbopack",
@@ -1,18 +0,0 @@
1
- ## 📌 What’s changing?
2
-
3
- <!-- Briefly explain what this PR does -->
4
-
5
- ## ✅ Checklist
6
-
7
- - [ ] I tested this change locally
8
- - [ ] I updated related docs (if needed)
9
- - [ ] This PR is rebased on the latest base branch
10
- - [ ] This PR is ready to squash & merge
11
-
12
- ## 🚀 Deployment notes
13
-
14
- <!-- Optional: Add notes if anything special is needed during deploy -->
15
-
16
- ## 🎯 Related Issues or Cards
17
-
18
- Closes #
@@ -1,38 +0,0 @@
1
- name: PR Check
2
-
3
- on:
4
- pull_request:
5
- branches:
6
- - development
7
- - testing
8
- - production
9
-
10
- jobs:
11
- lint-and-build:
12
- runs-on: ubuntu-latest
13
-
14
- steps:
15
- - name: Checkout
16
- uses: actions/checkout@v4
17
-
18
- - name: Use Node
19
- uses: actions/setup-node@v4
20
- with:
21
- node-version: 20
22
-
23
- - name: Enable Corepack & Install
24
- run: |
25
- corepack enable
26
- pnpm install
27
-
28
- - name: Lint
29
- run: pnpm lint
30
-
31
- - name: Format Check
32
- run: pnpm format-check
33
-
34
- - name: Format
35
- run: pnpm format
36
-
37
- - name: Build
38
- run: pnpm build
package/.husky/pre-commit DELETED
@@ -1 +0,0 @@
1
- pnpm lint-staged
package/.prettierignore DELETED
@@ -1,7 +0,0 @@
1
- /.vscode
2
- /node_modules
3
- ./dist
4
-
5
- *.env
6
- .env
7
- .env.*
package/.prettierrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "singleQuote": false,
3
- "bracketSpacing": true,
4
- "tabWidth": 4,
5
- "semi": true,
6
- "trailingComma": "es5",
7
- "plugins": ["prettier-plugin-tailwindcss"],
8
- "tailwindFunctions": ["clsx", "cva", "cn"]
9
- }
package/components.json DELETED
@@ -1,21 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema.json",
3
- "style": "new-york",
4
- "rsc": true,
5
- "tsx": false,
6
- "tailwind": {
7
- "config": "",
8
- "css": "@/styles/globals.css",
9
- "baseColor": "neutral",
10
- "cssVariables": true,
11
- "prefix": ""
12
- },
13
- "aliases": {
14
- "components": "@/components",
15
- "utils": "@/lib/utils",
16
- "ui": "@/components/ui",
17
- "lib": "@/lib",
18
- "hooks": "@/hooks"
19
- },
20
- "iconLibrary": "lucide"
21
- }
package/eslint.config.mjs DELETED
@@ -1,42 +0,0 @@
1
- import { dirname } from "path";
2
- import { fileURLToPath } from "url";
3
- import { FlatCompat } from "@eslint/eslintrc";
4
-
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = dirname(__filename);
7
-
8
- const compat = new FlatCompat({
9
- baseDirectory: __dirname,
10
- });
11
-
12
- const eslintConfig = [
13
- {
14
- ignores: [
15
- "node_modules/**",
16
- ".next/**",
17
- "out/**",
18
- "build/**",
19
- "next-env.d.ts",
20
- ],
21
- },
22
- ...compat.extends("next/core-web-vitals", "prettier"),
23
- {
24
- files: ["**/*.{js,jsx}"],
25
- languageOptions: {
26
- parserOptions: {
27
- ecmaVersion: 2022,
28
- sourceType: "module",
29
- },
30
- },
31
- rules: {
32
- "no-unused-vars": "warn",
33
- "no-console": "warn",
34
- "@next/next/no-document-import-in-page": "off",
35
- "react-hooks/rules-of-hooks": "error",
36
- "react-hooks/exhaustive-deps": "warn",
37
- "@typescript-eslint/no-unused-vars": "off",
38
- },
39
- },
40
- ];
41
-
42
- export default eslintConfig;
package/jsconfig.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "paths": {
4
- "@/*": ["./src/*"]
5
- }
6
- }
7
- }
@@ -1,6 +0,0 @@
1
- const config = {
2
- "**/*.{js,jsx}": ["eslint --fix", "prettier --write"],
3
- "**/*.{css,scss,md,json}": ["prettier --write"],
4
- };
5
-
6
- export default config;
package/next.config.mjs DELETED
@@ -1,6 +0,0 @@
1
- /** @type {import('next').NextConfig} */
2
- const nextConfig = {
3
- devIndicators: false,
4
- };
5
-
6
- export default nextConfig;
@@ -1,5 +0,0 @@
1
- const config = {
2
- plugins: ["@tailwindcss/postcss"],
3
- };
4
-
5
- export default config;
@@ -1,81 +0,0 @@
1
- import gsap from "gsap";
2
-
3
- export function LoaderAnimation() {
4
- const tl = gsap.timeline();
5
-
6
- tl.set("#loader", {
7
- "--gradient-opacity": 0,
8
- background: `linear-gradient(to right,
9
- rgba(243, 24, 17, var(--gradient-opacity, 0)),
10
- rgba(250, 240, 48, var(--gradient-opacity, 0)),
11
- rgba(255, 255, 255, var(--gradient-opacity, 0)),
12
- rgba(6, 144, 36, var(--gradient-opacity, 0)),
13
- rgba(15, 45, 202, var(--gradient-opacity, 0))
14
- ), black`,
15
- });
16
-
17
- tl.fromTo(
18
- "#loader-heading",
19
- {
20
- visibility: "hidden",
21
- },
22
- {
23
- visibility: "visible",
24
- display: "flex",
25
- }
26
- );
27
-
28
- tl.fromTo(
29
- "#loader-heading span",
30
- {
31
- y: -25,
32
- opacity: 0,
33
- },
34
- {
35
- opacity: 1,
36
- stagger: 0.12,
37
- duration: 1,
38
- delay: 0.5,
39
- y: 0,
40
- }
41
- );
42
-
43
- tl.to("#loader-heading span", {
44
- y: -25,
45
- stagger: 0.12,
46
- duration: 1,
47
- opacity: 0,
48
- });
49
-
50
- tl.set("#loader", {
51
- background: `linear-gradient(to right,
52
- rgba(243, 24, 17, var(--gradient-opacity, 0)),
53
- rgba(250, 240, 48, var(--gradient-opacity, 0)),
54
- rgba(255, 255, 255, var(--gradient-opacity, 0)),
55
- rgba(6, 144, 36, var(--gradient-opacity, 0)),
56
- rgba(15, 45, 202, var(--gradient-opacity, 0))
57
- ), white`,
58
- "--gradient-opacity": 1,
59
- duration: 0.5,
60
- });
61
-
62
- tl.fromTo(
63
- "#logo",
64
- {
65
- visibility: "hidden",
66
- scale: 1.05,
67
- filter: "blur(10px)",
68
- opacity: 0,
69
- },
70
- {
71
- visibility: "visible",
72
- display: "flex",
73
- scale: 1,
74
- opacity: 1,
75
- duration: 0.5,
76
- filter: "blur(0px)",
77
- }
78
- );
79
-
80
- return tl;
81
- }
@@ -1,7 +0,0 @@
1
- import React from "react";
2
-
3
- function page() {
4
- return <div>page</div>;
5
- }
6
-
7
- export default page;
Binary file
package/src/app/layout.js DELETED
@@ -1,81 +0,0 @@
1
- import { Toaster } from "@/components/ui/sonner";
2
- import { cn } from "@/lib/utils";
3
- import { QueryProvider } from "@/providers/QueryProvider";
4
- import { manrope, figtree, inter } from "@/styles/fonts";
5
- import "@/styles/globals.css";
6
- import { GoogleAnalytics, GoogleTagManager } from "@next/third-parties/google";
7
-
8
- // export const metadata = {
9
- // title: {
10
- // default: "Next JS Starter",
11
- // template: "%s | Next JS Starter",
12
- // },
13
- // description: "",
14
- // keywords: [],
15
- // metadataBase: new URL(""),
16
- // alternates: {
17
- // canonical: "0",
18
- // },
19
- // openGraph: {
20
- // title: "",
21
- // description: "",
22
- // url: "0",
23
- // siteName: "0",
24
- // locale: "en_US",
25
- // type: "website",
26
- // images: [
27
- // {
28
- // url: "0",
29
- // width: 0,
30
- // height: 0,
31
- // alt: "",
32
- // },
33
- // ],
34
- // },
35
- // twitter: {
36
- // card: "",
37
- // title: "",
38
- // description: "",
39
- // images: [
40
- // {
41
- // url: "",
42
- // width: 0,
43
- // height: 0,
44
- // alt: "",
45
- // },
46
- // ],
47
- // },
48
- // icons: {
49
- // icon: "/favicon.ico",
50
- // apple: "/favicon.ico",
51
- // },
52
- // };
53
-
54
- export default function RootLayout({ children }) {
55
- return (
56
- <html lang="en" suppressHydrationWarning>
57
- <GoogleTagManager gtmId="" />
58
- <GoogleAnalytics gaId="" />
59
-
60
- <body
61
- className={cn(
62
- manrope.variable,
63
- figtree.variable,
64
- inter.variable,
65
- "font-Manrope tracking-tighter antialiased"
66
- )}
67
- >
68
- <QueryProvider>{children}</QueryProvider>
69
- <Toaster
70
- richColors
71
- theme="light"
72
- closeButton
73
- expand
74
- position="top-right"
75
- dir="auto"
76
- gap={20}
77
- />
78
- </body>
79
- </html>
80
- );
81
- }
@@ -1,19 +0,0 @@
1
- import { Button } from "@/components/ui/button";
2
- import Container from "@/components/ui/container";
3
- import { Heading } from "@/components/ui/headings";
4
- import Link from "next/link";
5
-
6
- export default function NotFound() {
7
- return (
8
- <Container
9
- className={
10
- "flex h-screen flex-col items-center justify-center gap-4"
11
- }
12
- >
13
- <Heading size="h4">404 - Page Not Found</Heading>
14
- <Link href={"/"}>
15
- <Button>Go Back</Button>
16
- </Link>
17
- </Container>
18
- );
19
- }
package/src/app/robots.js DELETED
@@ -1,10 +0,0 @@
1
- export default function robots() {
2
- return {
3
- rules: {
4
- userAgent: "*",
5
- allow: "/",
6
- disallow: ["/private/", "/api/", "/admin/", "/_next/"],
7
- },
8
- sitemap: "",
9
- };
10
- }
@@ -1,10 +0,0 @@
1
- export default async function sitemap() {
2
- return [
3
- {
4
- url: "/example",
5
- lastModified: new Date().toISOString(),
6
- changeFrequency: "monthly",
7
- priority: 0.5,
8
- },
9
- ];
10
- }
@@ -1,3 +0,0 @@
1
- export const Logos = {
2
- alt: "",
3
- };
@@ -1,5 +0,0 @@
1
- import { Logos } from "./Logos";
2
-
3
- export const Assets = {
4
- logos: Logos,
5
- };
@@ -1,53 +0,0 @@
1
- "use client";
2
-
3
- import * as React from "react";
4
- import * as AccordionPrimitive from "@radix-ui/react-accordion";
5
- import { ChevronDownIcon } from "lucide-react";
6
-
7
- import { cn } from "@/lib/utils";
8
-
9
- function Accordion({ ...props }) {
10
- return <AccordionPrimitive.Root data-slot="accordion" {...props} />;
11
- }
12
-
13
- function AccordionItem({ className, ...props }) {
14
- return (
15
- <AccordionPrimitive.Item
16
- data-slot="accordion-item"
17
- className={cn("border-b last:border-b-0", className)}
18
- {...props}
19
- />
20
- );
21
- }
22
-
23
- function AccordionTrigger({ className, children, ...props }) {
24
- return (
25
- <AccordionPrimitive.Header className="flex">
26
- <AccordionPrimitive.Trigger
27
- data-slot="accordion-trigger"
28
- className={cn(
29
- "focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
30
- className
31
- )}
32
- {...props}
33
- >
34
- {children}
35
- <ChevronDownIcon className="text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" />
36
- </AccordionPrimitive.Trigger>
37
- </AccordionPrimitive.Header>
38
- );
39
- }
40
-
41
- function AccordionContent({ className, children, ...props }) {
42
- return (
43
- <AccordionPrimitive.Content
44
- data-slot="accordion-content"
45
- className="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm"
46
- {...props}
47
- >
48
- <div className={cn("pt-0 pb-4", className)}>{children}</div>
49
- </AccordionPrimitive.Content>
50
- );
51
- }
52
-
53
- export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -1,136 +0,0 @@
1
- "use client";
2
-
3
- import * as React from "react";
4
- import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
5
-
6
- import { cn } from "@/lib/utils";
7
- import { buttonVariants } from "@/components/ui/button";
8
-
9
- function AlertDialog({ ...props }) {
10
- return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />;
11
- }
12
-
13
- function AlertDialogTrigger({ ...props }) {
14
- return (
15
- <AlertDialogPrimitive.Trigger
16
- data-slot="alert-dialog-trigger"
17
- {...props}
18
- />
19
- );
20
- }
21
-
22
- function AlertDialogPortal({ ...props }) {
23
- return (
24
- <AlertDialogPrimitive.Portal
25
- data-slot="alert-dialog-portal"
26
- {...props}
27
- />
28
- );
29
- }
30
-
31
- function AlertDialogOverlay({ className, ...props }) {
32
- return (
33
- <AlertDialogPrimitive.Overlay
34
- data-slot="alert-dialog-overlay"
35
- className={cn(
36
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
37
- className
38
- )}
39
- {...props}
40
- />
41
- );
42
- }
43
-
44
- function AlertDialogContent({ className, ...props }) {
45
- return (
46
- <AlertDialogPortal>
47
- <AlertDialogOverlay />
48
- <AlertDialogPrimitive.Content
49
- data-slot="alert-dialog-content"
50
- className={cn(
51
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
52
- className
53
- )}
54
- {...props}
55
- />
56
- </AlertDialogPortal>
57
- );
58
- }
59
-
60
- function AlertDialogHeader({ className, ...props }) {
61
- return (
62
- <div
63
- data-slot="alert-dialog-header"
64
- className={cn(
65
- "flex flex-col gap-2 text-center sm:text-left",
66
- className
67
- )}
68
- {...props}
69
- />
70
- );
71
- }
72
-
73
- function AlertDialogFooter({ className, ...props }) {
74
- return (
75
- <div
76
- data-slot="alert-dialog-footer"
77
- className={cn(
78
- "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
79
- className
80
- )}
81
- {...props}
82
- />
83
- );
84
- }
85
-
86
- function AlertDialogTitle({ className, ...props }) {
87
- return (
88
- <AlertDialogPrimitive.Title
89
- data-slot="alert-dialog-title"
90
- className={cn("text-lg font-semibold", className)}
91
- {...props}
92
- />
93
- );
94
- }
95
-
96
- function AlertDialogDescription({ className, ...props }) {
97
- return (
98
- <AlertDialogPrimitive.Description
99
- data-slot="alert-dialog-description"
100
- className={cn("text-muted-foreground text-sm", className)}
101
- {...props}
102
- />
103
- );
104
- }
105
-
106
- function AlertDialogAction({ className, ...props }) {
107
- return (
108
- <AlertDialogPrimitive.Action
109
- className={cn(buttonVariants(), className)}
110
- {...props}
111
- />
112
- );
113
- }
114
-
115
- function AlertDialogCancel({ className, ...props }) {
116
- return (
117
- <AlertDialogPrimitive.Cancel
118
- className={cn(buttonVariants({ variant: "outline" }), className)}
119
- {...props}
120
- />
121
- );
122
- }
123
-
124
- export {
125
- AlertDialog,
126
- AlertDialogPortal,
127
- AlertDialogOverlay,
128
- AlertDialogTrigger,
129
- AlertDialogContent,
130
- AlertDialogHeader,
131
- AlertDialogFooter,
132
- AlertDialogTitle,
133
- AlertDialogDescription,
134
- AlertDialogAction,
135
- AlertDialogCancel,
136
- };