@proofkit/cli 1.2.0-beta.1 → 2.0.0-beta.1
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/CHANGELOG.md +133 -0
- package/dist/add-CfoeMDFa.js +57 -0
- package/dist/add-CfoeMDFa.js.map +1 -0
- package/dist/addPackageDependency-BE76r_Gs.js +4 -0
- package/dist/addPackageDependency-BE76r_Gs.js.map +1 -0
- package/dist/consts-BZnOMxpW.js +10 -0
- package/dist/consts-BZnOMxpW.js.map +1 -0
- package/dist/deploy-ib8_w4Q8.js +34 -0
- package/dist/deploy-ib8_w4Q8.js.map +1 -0
- package/dist/fmdapi-LpkpfSZp.js +3 -0
- package/dist/fmdapi-LpkpfSZp.js.map +1 -0
- package/dist/getUserPkgManager-Cph_6l1P.js +2 -0
- package/dist/getUserPkgManager-Cph_6l1P.js.map +1 -0
- package/dist/globalOptions-DmUayYY3.js +2 -0
- package/dist/globalOptions-DmUayYY3.js.map +1 -0
- package/dist/index-dr0nV3hP.d.ts +365 -0
- package/dist/index-dr0nV3hP.d.ts.map +1 -0
- package/dist/index.js +11 -147
- package/dist/index.js.map +1 -0
- package/dist/logger-DCEXcH26.js +2 -0
- package/dist/logger-DCEXcH26.js.map +1 -0
- package/dist/parseSettings-DYvHU8yJ.js +2 -0
- package/dist/parseSettings-DYvHU8yJ.js.map +1 -0
- package/dist/remove-D-aGocFU.js +2 -0
- package/dist/remove-D-aGocFU.js.map +1 -0
- package/dist/state-CiURqLoM.js +41 -0
- package/dist/state-CiURqLoM.js.map +1 -0
- package/dist/typegen-CNWUG1wR.js +2 -0
- package/dist/typegen-CNWUG1wR.js.map +1 -0
- package/dist/update-CDaX7MZ5.js +7 -0
- package/dist/update-CDaX7MZ5.js.map +1 -0
- package/dist/utils-CQMjIwwz.js +3 -0
- package/dist/utils-CQMjIwwz.js.map +1 -0
- package/package.json +61 -53
- package/template/extras/emailTemplates/auth-code.tsx +7 -26
- package/template/extras/emailTemplates/generic.tsx +8 -31
- package/template/extras/fmaddon-auth/emails/auth-code.tsx +7 -26
- package/template/extras/src/app/api/auth/[...nextauth]/route.ts +1 -1
- package/template/extras/src/server/next-auth/base.ts +3 -3
- package/template/fm-addon/ProofKitWV/de.xml +517 -20
- package/template/fm-addon/ProofKitWV/en.xml +517 -20
- package/template/fm-addon/ProofKitWV/es.xml +517 -20
- package/template/fm-addon/ProofKitWV/fr.xml +517 -20
- package/template/fm-addon/ProofKitWV/icon.png +0 -0
- package/template/fm-addon/ProofKitWV/icon@2x.png +0 -0
- package/template/fm-addon/ProofKitWV/info.json +9 -6
- package/template/fm-addon/ProofKitWV/info_de.json +12 -5
- package/template/fm-addon/ProofKitWV/info_en.json +16 -5
- package/template/fm-addon/ProofKitWV/info_es.json +12 -5
- package/template/fm-addon/ProofKitWV/info_fr.json +12 -5
- package/template/fm-addon/ProofKitWV/info_it.json +12 -5
- package/template/fm-addon/ProofKitWV/info_ja.json +12 -5
- package/template/fm-addon/ProofKitWV/info_ko.json +12 -5
- package/template/fm-addon/ProofKitWV/info_nl.json +12 -5
- package/template/fm-addon/ProofKitWV/info_pt.json +12 -5
- package/template/fm-addon/ProofKitWV/info_sv.json +12 -5
- package/template/fm-addon/ProofKitWV/info_zh.json +12 -5
- package/template/fm-addon/ProofKitWV/it.xml +517 -20
- package/template/fm-addon/ProofKitWV/ja.xml +517 -20
- package/template/fm-addon/ProofKitWV/ko.xml +517 -20
- package/template/fm-addon/ProofKitWV/nl.xml +517 -20
- package/template/fm-addon/ProofKitWV/preview.png +0 -0
- package/template/fm-addon/ProofKitWV/pt.xml +517 -20
- package/template/fm-addon/ProofKitWV/records_de.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_en.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_es.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_fr.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_it.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_ja.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_ko.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_nl.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_pt.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_sv.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_zh.xml +0 -0
- package/template/fm-addon/ProofKitWV/sv.xml +517 -20
- package/template/fm-addon/ProofKitWV/template.xml +0 -0
- package/template/fm-addon/ProofKitWV/zh.xml +517 -20
- package/template/nextjs-mantine/AGENTS.md +1 -0
- package/template/nextjs-mantine/package.json +4 -4
- package/template/nextjs-shadcn/AGENTS.md +1 -0
- package/template/nextjs-shadcn/biome.json +18 -13
- package/template/nextjs-shadcn/package.json +11 -9
- package/template/nextjs-shadcn/src/app/layout.tsx +11 -11
- package/template/nextjs-shadcn/src/components/mode-toggle.tsx +39 -0
- package/template/nextjs-shadcn/src/components/ui/button.tsx +61 -0
- package/template/nextjs-shadcn/src/components/ui/dropdown-menu.tsx +267 -0
- package/template/nextjs-shadcn/src/components/ui/sonner.tsx +31 -0
- package/template/nextjs-shadcn/src/lib/env.ts +1 -1
- package/template/pages/nextjs/table-infinite/actions.ts +1 -1
- package/template/pages/nextjs/table-infinite-edit/actions.ts +1 -1
- package/template/vite-wv/.claude/launch.json +18 -0
- package/template/vite-wv/AGENTS.md +1 -0
- package/template/vite-wv/_gitignore +1 -0
- package/template/vite-wv/components.json +6 -6
- package/template/vite-wv/index.html +2 -2
- package/template/vite-wv/package.json +21 -35
- package/template/vite-wv/proofkit-typegen.config.jsonc +18 -0
- package/template/vite-wv/proofkit.json +4 -1
- package/template/vite-wv/scripts/filemaker.js +96 -0
- package/template/vite-wv/scripts/launch-fm.js +19 -0
- package/template/vite-wv/scripts/upload.js +17 -14
- package/template/vite-wv/src/App.tsx +84 -0
- package/template/vite-wv/src/index.css +96 -0
- package/template/vite-wv/src/lib/utils.ts +6 -0
- package/template/vite-wv/src/main.tsx +14 -35
- package/template/vite-wv/src/router.tsx +57 -0
- package/template/vite-wv/src/routes/query-demo.tsx +37 -0
- package/template/vite-wv/tsconfig.json +3 -1
- package/template/vite-wv/vite.config.ts +5 -5
- package/dist/external-DCpQkgKf.js +0 -1
- package/template/extras/config/_eslint.js +0 -27
- package/template/extras/config/_prettier.config.js +0 -6
- package/template/nextjs-mantine/.prettierrc +0 -3
- package/template/nextjs-shadcn/.prettierrc +0 -3
- package/template/nextjs-shadcn/next-env.d.ts +0 -6
- package/template/vite-wv/.prettierrc +0 -3
- package/template/vite-wv/pnpm-lock.yaml +0 -2294
- package/template/vite-wv/postcss.config.cjs +0 -15
- package/template/vite-wv/scripts/launch-fm.sh +0 -3
- package/template/vite-wv/src/components/AppLogo.tsx +0 -5
- package/template/vite-wv/src/components/full-screen-loader.tsx +0 -9
- package/template/vite-wv/src/config/env.ts +0 -16
- package/template/vite-wv/src/config/theme/globals.css +0 -125
- package/template/vite-wv/src/config/theme/mantine-theme.ts +0 -22
- package/template/vite-wv/src/routeTree.gen.ts +0 -111
- package/template/vite-wv/src/routes/__root.tsx +0 -21
- package/template/vite-wv/src/routes/index.tsx +0 -63
- package/template/vite-wv/src/routes/secondary.tsx +0 -28
- package/template/vite-wv/src/utils/notification-helpers.ts +0 -32
- package/template/vite-wv/src/utils/styles.ts +0 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__AGENT_INSTRUCTIONS__
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
"dev": "next dev --turbopack",
|
|
7
7
|
"build": "next build",
|
|
8
8
|
"start": "next start",
|
|
9
|
-
"lint": "
|
|
9
|
+
"lint": "ultracite check .",
|
|
10
|
+
"format": "ultracite fix .",
|
|
10
11
|
"proofkit": "proofkit",
|
|
11
12
|
"typegen": "proofkit typegen",
|
|
12
13
|
"deploy": "proofkit deploy"
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
"mantine-react-table": "2.0.0-beta.9",
|
|
26
27
|
"@t3-oss/env-nextjs": "^0.12.0",
|
|
27
28
|
"dayjs": "^1.11.13",
|
|
28
|
-
"next": "^15.2.
|
|
29
|
+
"next": "^15.2.7",
|
|
29
30
|
"react": "19.0.0",
|
|
30
31
|
"react-dom": "19.0.0",
|
|
31
32
|
"zod": "^3.24.2"
|
|
@@ -34,9 +35,8 @@
|
|
|
34
35
|
"@types/node": "^20",
|
|
35
36
|
"@types/react": "npm:types-react@19.0.12",
|
|
36
37
|
"@types/react-dom": "npm:types-react-dom@19.0.4",
|
|
37
|
-
"eslint": "^9.14.0",
|
|
38
|
-
"eslint-config-next": "15.2.3",
|
|
39
38
|
"postcss": "^8.4.41",
|
|
39
|
+
"ultracite": "7.0.8",
|
|
40
40
|
"postcss-preset-mantine": "^1.17.0",
|
|
41
41
|
"postcss-simple-vars": "^7.0.1",
|
|
42
42
|
"typescript": "^5"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__AGENT_INSTRUCTIONS__
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"root": false,
|
|
3
|
+
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
|
|
3
4
|
"vcs": {
|
|
4
5
|
"enabled": true,
|
|
5
6
|
"clientKind": "git",
|
|
@@ -7,13 +8,7 @@
|
|
|
7
8
|
},
|
|
8
9
|
"files": {
|
|
9
10
|
"ignoreUnknown": true,
|
|
10
|
-
"includes": [
|
|
11
|
-
"**",
|
|
12
|
-
"!node_modules",
|
|
13
|
-
"!.next",
|
|
14
|
-
"!dist",
|
|
15
|
-
"!build"
|
|
16
|
-
]
|
|
11
|
+
"includes": ["**", "!node_modules", "!.next", "!dist", "!build"]
|
|
17
12
|
},
|
|
18
13
|
"formatter": {
|
|
19
14
|
"enabled": true,
|
|
@@ -23,7 +18,19 @@
|
|
|
23
18
|
"linter": {
|
|
24
19
|
"enabled": true,
|
|
25
20
|
"rules": {
|
|
26
|
-
"recommended": true
|
|
21
|
+
"recommended": true,
|
|
22
|
+
"style": {
|
|
23
|
+
"noParameterAssign": "error",
|
|
24
|
+
"useAsConstAssertion": "error",
|
|
25
|
+
"useDefaultParameterLast": "error",
|
|
26
|
+
"useEnumInitializers": "error",
|
|
27
|
+
"useSelfClosingElements": "error",
|
|
28
|
+
"useSingleVarDeclarator": "error",
|
|
29
|
+
"noUnusedTemplateLiteral": "error",
|
|
30
|
+
"useNumberNamespace": "error",
|
|
31
|
+
"noInferrableTypes": "error",
|
|
32
|
+
"noUselessElse": "error"
|
|
33
|
+
}
|
|
27
34
|
},
|
|
28
35
|
"domains": {
|
|
29
36
|
"next": "recommended",
|
|
@@ -37,7 +44,5 @@
|
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
},
|
|
40
|
-
"extends": [
|
|
41
|
-
|
|
42
|
-
]
|
|
43
|
-
}
|
|
47
|
+
"extends": ["ultracite"]
|
|
48
|
+
}
|
|
@@ -5,23 +5,26 @@
|
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "next dev --turbopack",
|
|
7
7
|
"build": "next build --turbopack",
|
|
8
|
+
"proofkit": "proofkit",
|
|
8
9
|
"start": "next start",
|
|
9
|
-
"lint": "
|
|
10
|
-
"format": "
|
|
10
|
+
"lint": "ultracite check .",
|
|
11
|
+
"format": "ultracite fix ."
|
|
11
12
|
},
|
|
12
13
|
"dependencies": {
|
|
14
|
+
"@radix-ui/react-slot": "^1.2.3",
|
|
13
15
|
"@t3-oss/env-nextjs": "^0.13.8",
|
|
14
16
|
"class-variance-authority": "^0.7.1",
|
|
15
17
|
"clsx": "^2.1.1",
|
|
16
18
|
"lucide-react": "^0.541.0",
|
|
17
|
-
"next": "15.5.
|
|
19
|
+
"next": "^15.5.8",
|
|
18
20
|
"next-themes": "^0.4.6",
|
|
19
|
-
"
|
|
20
|
-
"react
|
|
21
|
+
"radix-ui": "^1.4.2",
|
|
22
|
+
"react": "19.1.1",
|
|
23
|
+
"react-dom": "19.1.1",
|
|
24
|
+
"sonner": "^2.0.4",
|
|
21
25
|
"tailwind-merge": "^3.3.1"
|
|
22
26
|
},
|
|
23
27
|
"devDependencies": {
|
|
24
|
-
"@biomejs/biome": "2.2.0",
|
|
25
28
|
"@tailwindcss/postcss": "^4",
|
|
26
29
|
"@types/node": "^22",
|
|
27
30
|
"@types/react": "^19",
|
|
@@ -29,7 +32,6 @@
|
|
|
29
32
|
"tailwindcss": "^4",
|
|
30
33
|
"tw-animate-css": "^1.3.7",
|
|
31
34
|
"typescript": "^5",
|
|
32
|
-
"ultracite": "
|
|
33
|
-
}
|
|
34
|
-
"packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748"
|
|
35
|
+
"ultracite": "7.0.8"
|
|
36
|
+
}
|
|
35
37
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import type { Metadata } from
|
|
2
|
-
import { Geist, Geist_Mono } from
|
|
3
|
-
import
|
|
4
|
-
import Providers from
|
|
1
|
+
import type { Metadata } from "next";
|
|
2
|
+
import { Geist, Geist_Mono } from "next/font/google";
|
|
3
|
+
import "./globals.css";
|
|
4
|
+
import Providers from "@/components/providers";
|
|
5
5
|
|
|
6
6
|
const geistSans = Geist({
|
|
7
|
-
variable:
|
|
8
|
-
subsets: [
|
|
7
|
+
variable: "--font-geist-sans",
|
|
8
|
+
subsets: ["latin"],
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
const geistMono = Geist_Mono({
|
|
12
|
-
variable:
|
|
13
|
-
subsets: [
|
|
12
|
+
variable: "--font-geist-mono",
|
|
13
|
+
subsets: ["latin"],
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
export const metadata: Metadata = {
|
|
17
|
-
title:
|
|
18
|
-
description:
|
|
17
|
+
title: "My ProofKit App",
|
|
18
|
+
description: "Generated by the ProofKit CLI",
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export default function RootLayout({
|
|
@@ -24,7 +24,7 @@ export default function RootLayout({
|
|
|
24
24
|
children: React.ReactNode;
|
|
25
25
|
}>) {
|
|
26
26
|
return (
|
|
27
|
-
<html lang="en">
|
|
27
|
+
<html lang="en" suppressHydrationWarning>
|
|
28
28
|
<body
|
|
29
29
|
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
|
|
30
30
|
>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Moon, Sun } from "lucide-react";
|
|
4
|
+
import { useTheme } from "next-themes";
|
|
5
|
+
|
|
6
|
+
import { Button } from "@/components/ui/button";
|
|
7
|
+
import {
|
|
8
|
+
DropdownMenu,
|
|
9
|
+
DropdownMenuContent,
|
|
10
|
+
DropdownMenuItem,
|
|
11
|
+
DropdownMenuTrigger,
|
|
12
|
+
} from "@/components/ui/dropdown-menu";
|
|
13
|
+
|
|
14
|
+
export function ModeToggle() {
|
|
15
|
+
const { setTheme } = useTheme();
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<DropdownMenu>
|
|
19
|
+
<DropdownMenuTrigger asChild>
|
|
20
|
+
<Button size="icon" variant="outline">
|
|
21
|
+
<Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
|
|
22
|
+
<Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
|
|
23
|
+
<span className="sr-only">Toggle theme</span>
|
|
24
|
+
</Button>
|
|
25
|
+
</DropdownMenuTrigger>
|
|
26
|
+
<DropdownMenuContent align="end">
|
|
27
|
+
<DropdownMenuItem onClick={() => setTheme("light")}>
|
|
28
|
+
Light
|
|
29
|
+
</DropdownMenuItem>
|
|
30
|
+
<DropdownMenuItem onClick={() => setTheme("dark")}>
|
|
31
|
+
Dark
|
|
32
|
+
</DropdownMenuItem>
|
|
33
|
+
<DropdownMenuItem onClick={() => setTheme("system")}>
|
|
34
|
+
System
|
|
35
|
+
</DropdownMenuItem>
|
|
36
|
+
</DropdownMenuContent>
|
|
37
|
+
</DropdownMenu>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
|
+
import type * as React from "react";
|
|
4
|
+
|
|
5
|
+
import { cn } from "@/lib/utils";
|
|
6
|
+
|
|
7
|
+
const buttonVariants = cva(
|
|
8
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default:
|
|
13
|
+
"bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
14
|
+
destructive:
|
|
15
|
+
"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
|
16
|
+
outline:
|
|
17
|
+
"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
|
18
|
+
secondary:
|
|
19
|
+
"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
|
|
20
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
21
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
22
|
+
},
|
|
23
|
+
size: {
|
|
24
|
+
default: "h-9 px-4 py-2",
|
|
25
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
26
|
+
lg: "h-10 rounded-md px-8",
|
|
27
|
+
icon: "h-9 w-9",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
defaultVariants: {
|
|
31
|
+
variant: "default",
|
|
32
|
+
size: "default",
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
export interface ButtonProps
|
|
38
|
+
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
39
|
+
VariantProps<typeof buttonVariants> {
|
|
40
|
+
asChild?: boolean;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function Button({
|
|
44
|
+
className,
|
|
45
|
+
variant,
|
|
46
|
+
size,
|
|
47
|
+
asChild = false,
|
|
48
|
+
ref,
|
|
49
|
+
...props
|
|
50
|
+
}: ButtonProps & { ref?: React.Ref<HTMLButtonElement> }) {
|
|
51
|
+
const Comp = asChild ? Slot : "button";
|
|
52
|
+
return (
|
|
53
|
+
<Comp
|
|
54
|
+
className={cn(buttonVariants({ variant, size, className }))}
|
|
55
|
+
ref={ref}
|
|
56
|
+
{...props}
|
|
57
|
+
/>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export { Button, buttonVariants };
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Check, ChevronRight, Circle } from "lucide-react";
|
|
4
|
+
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
5
|
+
import type * as React from "react";
|
|
6
|
+
|
|
7
|
+
import { cn } from "@/lib/utils";
|
|
8
|
+
|
|
9
|
+
function DropdownMenu({
|
|
10
|
+
...props
|
|
11
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {
|
|
12
|
+
return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props} />;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function DropdownMenuPortal({
|
|
16
|
+
...props
|
|
17
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
|
|
18
|
+
return (
|
|
19
|
+
<DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function DropdownMenuTrigger({
|
|
24
|
+
...props
|
|
25
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {
|
|
26
|
+
return (
|
|
27
|
+
<DropdownMenuPrimitive.Trigger
|
|
28
|
+
className="select-none"
|
|
29
|
+
data-slot="dropdown-menu-trigger"
|
|
30
|
+
{...props}
|
|
31
|
+
/>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function DropdownMenuContent({
|
|
36
|
+
className,
|
|
37
|
+
sideOffset = 4,
|
|
38
|
+
...props
|
|
39
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {
|
|
40
|
+
return (
|
|
41
|
+
<DropdownMenuPrimitive.Portal>
|
|
42
|
+
<DropdownMenuPrimitive.Content
|
|
43
|
+
className={cn(
|
|
44
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] space-y-0.5 overflow-hidden rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in",
|
|
45
|
+
className
|
|
46
|
+
)}
|
|
47
|
+
data-slot="dropdown-menu-content"
|
|
48
|
+
sideOffset={sideOffset}
|
|
49
|
+
{...props}
|
|
50
|
+
/>
|
|
51
|
+
</DropdownMenuPrimitive.Portal>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function DropdownMenuGroup({
|
|
56
|
+
...props
|
|
57
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
|
|
58
|
+
return (
|
|
59
|
+
<DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function DropdownMenuItem({
|
|
64
|
+
className,
|
|
65
|
+
inset,
|
|
66
|
+
variant,
|
|
67
|
+
...props
|
|
68
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
69
|
+
inset?: boolean;
|
|
70
|
+
variant?: "destructive";
|
|
71
|
+
}) {
|
|
72
|
+
return (
|
|
73
|
+
<DropdownMenuPrimitive.Item
|
|
74
|
+
className={cn(
|
|
75
|
+
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2 py-1.5 text-foreground text-sm outline-hidden transition-colors data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg:not([class*=size-])]:size-4 [&_svg:not([role=img]):not([class*=text-])]:opacity-60 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
76
|
+
"focus:bg-accent focus:text-foreground",
|
|
77
|
+
"data-[active=true]:bg-accent data-[active=true]:text-accent-foreground",
|
|
78
|
+
inset && "ps-8",
|
|
79
|
+
variant === "destructive" &&
|
|
80
|
+
"text-destructive hover:bg-destructive/5 hover:text-destructive focus:bg-destructive/5 focus:text-destructive data-[active=true]:bg-destructive/5",
|
|
81
|
+
className
|
|
82
|
+
)}
|
|
83
|
+
data-slot="dropdown-menu-item"
|
|
84
|
+
{...props}
|
|
85
|
+
/>
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function DropdownMenuCheckboxItem({
|
|
90
|
+
className,
|
|
91
|
+
children,
|
|
92
|
+
checked,
|
|
93
|
+
...props
|
|
94
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {
|
|
95
|
+
return (
|
|
96
|
+
<DropdownMenuPrimitive.CheckboxItem
|
|
97
|
+
checked={checked}
|
|
98
|
+
className={cn(
|
|
99
|
+
"relative flex cursor-default select-none items-center rounded-md py-1.5 ps-8 pe-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
100
|
+
className
|
|
101
|
+
)}
|
|
102
|
+
data-slot="dropdown-menu-checkbox-item"
|
|
103
|
+
{...props}
|
|
104
|
+
>
|
|
105
|
+
<span className="absolute start-2 flex h-3.5 w-3.5 items-center justify-center text-muted-foreground">
|
|
106
|
+
<DropdownMenuPrimitive.ItemIndicator>
|
|
107
|
+
<Check className="h-4 w-4 text-primary" />
|
|
108
|
+
</DropdownMenuPrimitive.ItemIndicator>
|
|
109
|
+
</span>
|
|
110
|
+
{children}
|
|
111
|
+
</DropdownMenuPrimitive.CheckboxItem>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function DropdownMenuRadioItem({
|
|
116
|
+
className,
|
|
117
|
+
children,
|
|
118
|
+
...props
|
|
119
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {
|
|
120
|
+
return (
|
|
121
|
+
<DropdownMenuPrimitive.RadioItem
|
|
122
|
+
className={cn(
|
|
123
|
+
"relative flex cursor-default select-none items-center rounded-md py-1.5 ps-6 pe-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
124
|
+
className
|
|
125
|
+
)}
|
|
126
|
+
data-slot="dropdown-menu-radio-item"
|
|
127
|
+
{...props}
|
|
128
|
+
>
|
|
129
|
+
<span className="absolute start-1.5 flex h-3.5 w-3.5 items-center justify-center">
|
|
130
|
+
<DropdownMenuPrimitive.ItemIndicator>
|
|
131
|
+
<Circle className="h-1.5 w-1.5 fill-primary stroke-primary" />
|
|
132
|
+
</DropdownMenuPrimitive.ItemIndicator>
|
|
133
|
+
</span>
|
|
134
|
+
{children}
|
|
135
|
+
</DropdownMenuPrimitive.RadioItem>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function DropdownMenuLabel({
|
|
140
|
+
className,
|
|
141
|
+
inset,
|
|
142
|
+
...props
|
|
143
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
|
144
|
+
inset?: boolean;
|
|
145
|
+
}) {
|
|
146
|
+
return (
|
|
147
|
+
<DropdownMenuPrimitive.Label
|
|
148
|
+
className={cn(
|
|
149
|
+
"px-2 py-1.5 font-medium text-muted-foreground text-xs",
|
|
150
|
+
inset && "ps-8",
|
|
151
|
+
className
|
|
152
|
+
)}
|
|
153
|
+
data-slot="dropdown-menu-label"
|
|
154
|
+
{...props}
|
|
155
|
+
/>
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function DropdownMenuRadioGroup({
|
|
160
|
+
...props
|
|
161
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {
|
|
162
|
+
return (
|
|
163
|
+
<DropdownMenuPrimitive.RadioGroup
|
|
164
|
+
data-slot="dropdown-menu-radio-group"
|
|
165
|
+
{...props}
|
|
166
|
+
/>
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function DropdownMenuSeparator({
|
|
171
|
+
className,
|
|
172
|
+
...props
|
|
173
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {
|
|
174
|
+
return (
|
|
175
|
+
<DropdownMenuPrimitive.Separator
|
|
176
|
+
className={cn("-mx-2 my-1.5 h-px bg-muted", className)}
|
|
177
|
+
data-slot="dropdown-menu-separator"
|
|
178
|
+
{...props}
|
|
179
|
+
/>
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function DropdownMenuShortcut({
|
|
184
|
+
className,
|
|
185
|
+
...props
|
|
186
|
+
}: React.HTMLAttributes<HTMLSpanElement>) {
|
|
187
|
+
return (
|
|
188
|
+
<span
|
|
189
|
+
className={cn("ms-auto text-xs tracking-widest opacity-60", className)}
|
|
190
|
+
data-slot="dropdown-menu-shortcut"
|
|
191
|
+
{...props}
|
|
192
|
+
/>
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function DropdownMenuSub({
|
|
197
|
+
...props
|
|
198
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
|
|
199
|
+
return (
|
|
200
|
+
<DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function DropdownMenuSubTrigger({
|
|
205
|
+
className,
|
|
206
|
+
inset,
|
|
207
|
+
children,
|
|
208
|
+
...props
|
|
209
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
210
|
+
inset?: boolean;
|
|
211
|
+
}) {
|
|
212
|
+
return (
|
|
213
|
+
<DropdownMenuPrimitive.SubTrigger
|
|
214
|
+
className={cn(
|
|
215
|
+
"flex cursor-default select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-hidden",
|
|
216
|
+
"focus:bg-accent focus:text-foreground",
|
|
217
|
+
"data-[state=open]:bg-accent data-[state=open]:text-foreground",
|
|
218
|
+
"data-[here=true]:bg-accent data-[here=true]:text-foreground",
|
|
219
|
+
"[&>svg]:pointer-events-none [&>svg]:size-4 [&>svg]:shrink-0 [&_svg:not([role=img]):not([class*=text-])]:opacity-60",
|
|
220
|
+
inset && "ps-8",
|
|
221
|
+
className
|
|
222
|
+
)}
|
|
223
|
+
data-slot="dropdown-menu-sub-trigger"
|
|
224
|
+
{...props}
|
|
225
|
+
>
|
|
226
|
+
{children}
|
|
227
|
+
<ChevronRight
|
|
228
|
+
className="ms-auto size-3.5! rtl:rotate-180"
|
|
229
|
+
data-slot="dropdown-menu-sub-trigger-indicator"
|
|
230
|
+
/>
|
|
231
|
+
</DropdownMenuPrimitive.SubTrigger>
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function DropdownMenuSubContent({
|
|
236
|
+
className,
|
|
237
|
+
...props
|
|
238
|
+
}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {
|
|
239
|
+
return (
|
|
240
|
+
<DropdownMenuPrimitive.SubContent
|
|
241
|
+
className={cn(
|
|
242
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] space-y-0.5 overflow-hidden rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in",
|
|
243
|
+
className
|
|
244
|
+
)}
|
|
245
|
+
data-slot="dropdown-menu-sub-content"
|
|
246
|
+
{...props}
|
|
247
|
+
/>
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export {
|
|
252
|
+
DropdownMenu,
|
|
253
|
+
DropdownMenuCheckboxItem,
|
|
254
|
+
DropdownMenuContent,
|
|
255
|
+
DropdownMenuGroup,
|
|
256
|
+
DropdownMenuItem,
|
|
257
|
+
DropdownMenuLabel,
|
|
258
|
+
DropdownMenuPortal,
|
|
259
|
+
DropdownMenuRadioGroup,
|
|
260
|
+
DropdownMenuRadioItem,
|
|
261
|
+
DropdownMenuSeparator,
|
|
262
|
+
DropdownMenuShortcut,
|
|
263
|
+
DropdownMenuSub,
|
|
264
|
+
DropdownMenuSubContent,
|
|
265
|
+
DropdownMenuSubTrigger,
|
|
266
|
+
DropdownMenuTrigger,
|
|
267
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useTheme } from "next-themes";
|
|
4
|
+
import { Toaster as Sonner } from "sonner";
|
|
5
|
+
|
|
6
|
+
type ToasterProps = React.ComponentProps<typeof Sonner>;
|
|
7
|
+
|
|
8
|
+
function Toaster({ ...props }: ToasterProps) {
|
|
9
|
+
const { theme = "system" } = useTheme();
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<Sonner
|
|
13
|
+
theme={theme as ToasterProps["theme"]}
|
|
14
|
+
className="toaster group"
|
|
15
|
+
toastOptions={{
|
|
16
|
+
classNames: {
|
|
17
|
+
toast:
|
|
18
|
+
"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
|
|
19
|
+
description: "group-[.toast]:text-muted-foreground",
|
|
20
|
+
actionButton:
|
|
21
|
+
"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
|
|
22
|
+
cancelButton:
|
|
23
|
+
"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
|
|
24
|
+
},
|
|
25
|
+
}}
|
|
26
|
+
{...props}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { Toaster };
|
|
@@ -19,7 +19,7 @@ export const fetchData = __ACTION_CLIENT__
|
|
|
19
19
|
})
|
|
20
20
|
)
|
|
21
21
|
.action(async ({ parsedInput: { offset, sorting, columnFilters } }) => {
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
const getOptions: clientTypes.ListParams<__TYPE_NAME__, any> & {
|
|
24
24
|
query: clientTypes.Query<__TYPE_NAME__>[];
|
|
25
25
|
} = {
|
|
@@ -24,7 +24,7 @@ export const fetchData = __ACTION_CLIENT__
|
|
|
24
24
|
})
|
|
25
25
|
)
|
|
26
26
|
.action(async ({ parsedInput: { offset, sorting, columnFilters } }) => {
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
const getOptions: clientTypes.ListParams<__TYPE_NAME__, any> & {
|
|
29
29
|
query: clientTypes.Query<__TYPE_NAME__>[];
|
|
30
30
|
} = {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"configurations": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Preview",
|
|
5
|
+
"runtimeExecutable": "__PACKAGE_MANAGER__",
|
|
6
|
+
"runtimeArgs": ["run", "dev"],
|
|
7
|
+
"cwd": "${workspaceFolder}",
|
|
8
|
+
"autoPort": true,
|
|
9
|
+
"port": 5175
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "Typegen",
|
|
13
|
+
"runtimeExecutable": "__PACKAGE_MANAGER__",
|
|
14
|
+
"runtimeArgs": ["run", "typegen"],
|
|
15
|
+
"cwd": "${workspaceFolder}"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__AGENT_INSTRUCTIONS__
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
3
|
"style": "new-york",
|
|
4
|
-
"rsc":
|
|
4
|
+
"rsc": false,
|
|
5
5
|
"tsx": true,
|
|
6
6
|
"tailwind": {
|
|
7
7
|
"config": "",
|
|
8
|
-
"css": "src/
|
|
8
|
+
"css": "src/index.css",
|
|
9
9
|
"baseColor": "neutral",
|
|
10
10
|
"cssVariables": true,
|
|
11
|
-
"prefix": "
|
|
11
|
+
"prefix": ""
|
|
12
12
|
},
|
|
13
13
|
"aliases": {
|
|
14
14
|
"components": "@/components",
|
|
15
|
-
"utils": "@/utils
|
|
15
|
+
"utils": "@/lib/utils",
|
|
16
16
|
"ui": "@/components/ui",
|
|
17
|
-
"lib": "@/
|
|
18
|
-
"hooks": "@/
|
|
17
|
+
"lib": "@/lib",
|
|
18
|
+
"hooks": "@/hooks"
|
|
19
19
|
},
|
|
20
20
|
"iconLibrary": "lucide"
|
|
21
21
|
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>ProofKit WebViewer</title>
|
|
6
|
+
<title>ProofKit WebViewer Starter</title>
|
|
7
7
|
</head>
|
|
8
8
|
|
|
9
9
|
<body>
|
|
10
|
-
<div id="
|
|
10
|
+
<div id="root"></div>
|
|
11
11
|
<script type="module" src="/src/main.tsx"></script>
|
|
12
12
|
</body>
|
|
13
13
|
</html>
|