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.
- package/bin/cli.js +11 -0
- package/package.json +10 -1
- package/.github/PR_REQUEST_TEMPLATE.md +0 -18
- package/.github/workflows/pr_check.yml +0 -38
- package/.husky/pre-commit +0 -1
- package/.prettierignore +0 -7
- package/.prettierrc +0 -9
- package/components.json +0 -21
- package/eslint.config.mjs +0 -42
- package/jsconfig.json +0 -7
- package/lint-staged.config.js +0 -6
- package/next.config.mjs +0 -6
- package/postcss.config.mjs +0 -5
- package/src/animations/loader.js +0 -81
- package/src/app/(routes)/(home)/page.jsx +0 -7
- package/src/app/favicon.ico +0 -0
- package/src/app/layout.js +0 -81
- package/src/app/not-found.jsx +0 -19
- package/src/app/robots.js +0 -10
- package/src/app/sitemap.js +0 -10
- package/src/assets/Logos/index.js +0 -3
- package/src/assets/index.js +0 -5
- package/src/components/ui/accordion.jsx +0 -53
- package/src/components/ui/alert-dialog.jsx +0 -136
- package/src/components/ui/alert.jsx +0 -59
- package/src/components/ui/avatar.jsx +0 -44
- package/src/components/ui/badge.jsx +0 -40
- package/src/components/ui/breadcrumb.jsx +0 -96
- package/src/components/ui/button.jsx +0 -49
- package/src/components/ui/calendar.jsx +0 -221
- package/src/components/ui/card.jsx +0 -92
- package/src/components/ui/carousel.jsx +0 -217
- package/src/components/ui/chart.jsx +0 -332
- package/src/components/ui/checkbox.jsx +0 -29
- package/src/components/ui/collapsible.jsx +0 -27
- package/src/components/ui/command.jsx +0 -156
- package/src/components/ui/container.jsx +0 -18
- package/src/components/ui/dialog.jsx +0 -127
- package/src/components/ui/drawer.jsx +0 -114
- package/src/components/ui/dropdown-menu.jsx +0 -210
- package/src/components/ui/form.jsx +0 -140
- package/src/components/ui/headings.jsx +0 -34
- package/src/components/ui/image.jsx +0 -21
- package/src/components/ui/input-otp.jsx +0 -66
- package/src/components/ui/input.jsx +0 -21
- package/src/components/ui/label.jsx +0 -21
- package/src/components/ui/pagination.jsx +0 -105
- package/src/components/ui/popover.jsx +0 -42
- package/src/components/ui/progress.jsx +0 -27
- package/src/components/ui/select.jsx +0 -157
- package/src/components/ui/separator.jsx +0 -28
- package/src/components/ui/sheet.jsx +0 -117
- package/src/components/ui/skeleton.jsx +0 -13
- package/src/components/ui/slider.jsx +0 -63
- package/src/components/ui/sonner.jsx +0 -23
- package/src/components/ui/switch.jsx +0 -28
- package/src/components/ui/table.jsx +0 -113
- package/src/components/ui/tabs.jsx +0 -54
- package/src/components/ui/textarea.jsx +0 -18
- package/src/components/ui/tooltip.jsx +0 -49
- package/src/lib/axios.js +0 -8
- package/src/lib/queryClient.js +0 -11
- package/src/lib/utils.js +0 -6
- package/src/providers/QueryProvider.jsx +0 -15
- package/src/shared/icons.js +0 -308
- package/src/styles/fonts.js +0 -30
- 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.
|
|
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
package/.prettierrc
DELETED
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
package/lint-staged.config.js
DELETED
package/next.config.mjs
DELETED
package/postcss.config.mjs
DELETED
package/src/animations/loader.js
DELETED
|
@@ -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
|
-
}
|
package/src/app/favicon.ico
DELETED
|
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
|
-
}
|
package/src/app/not-found.jsx
DELETED
|
@@ -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
package/src/app/sitemap.js
DELETED
package/src/assets/index.js
DELETED
|
@@ -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
|
-
};
|