@proofkit/cli 1.2.0-beta.2 → 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.
Files changed (128) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/dist/add-CfoeMDFa.js +57 -0
  3. package/dist/add-CfoeMDFa.js.map +1 -0
  4. package/dist/addPackageDependency-BE76r_Gs.js +4 -0
  5. package/dist/addPackageDependency-BE76r_Gs.js.map +1 -0
  6. package/dist/consts-BZnOMxpW.js +10 -0
  7. package/dist/consts-BZnOMxpW.js.map +1 -0
  8. package/dist/deploy-ib8_w4Q8.js +34 -0
  9. package/dist/deploy-ib8_w4Q8.js.map +1 -0
  10. package/dist/fmdapi-LpkpfSZp.js +3 -0
  11. package/dist/fmdapi-LpkpfSZp.js.map +1 -0
  12. package/dist/getUserPkgManager-Cph_6l1P.js +2 -0
  13. package/dist/getUserPkgManager-Cph_6l1P.js.map +1 -0
  14. package/dist/globalOptions-DmUayYY3.js +2 -0
  15. package/dist/globalOptions-DmUayYY3.js.map +1 -0
  16. package/dist/index-dr0nV3hP.d.ts +365 -0
  17. package/dist/index-dr0nV3hP.d.ts.map +1 -0
  18. package/dist/index.js +10 -147
  19. package/dist/index.js.map +1 -1
  20. package/dist/logger-DCEXcH26.js +2 -0
  21. package/dist/logger-DCEXcH26.js.map +1 -0
  22. package/dist/parseSettings-DYvHU8yJ.js +2 -0
  23. package/dist/parseSettings-DYvHU8yJ.js.map +1 -0
  24. package/dist/remove-D-aGocFU.js +2 -0
  25. package/dist/remove-D-aGocFU.js.map +1 -0
  26. package/dist/state-CiURqLoM.js +41 -0
  27. package/dist/state-CiURqLoM.js.map +1 -0
  28. package/dist/typegen-CNWUG1wR.js +2 -0
  29. package/dist/typegen-CNWUG1wR.js.map +1 -0
  30. package/dist/update-CDaX7MZ5.js +7 -0
  31. package/dist/update-CDaX7MZ5.js.map +1 -0
  32. package/dist/utils-CQMjIwwz.js +3 -0
  33. package/dist/utils-CQMjIwwz.js.map +1 -0
  34. package/package.json +61 -53
  35. package/template/extras/emailTemplates/auth-code.tsx +7 -26
  36. package/template/extras/emailTemplates/generic.tsx +8 -31
  37. package/template/extras/fmaddon-auth/emails/auth-code.tsx +7 -26
  38. package/template/extras/src/app/api/auth/[...nextauth]/route.ts +1 -1
  39. package/template/extras/src/server/next-auth/base.ts +3 -3
  40. package/template/fm-addon/ProofKitWV/de.xml +517 -20
  41. package/template/fm-addon/ProofKitWV/en.xml +517 -20
  42. package/template/fm-addon/ProofKitWV/es.xml +517 -20
  43. package/template/fm-addon/ProofKitWV/fr.xml +517 -20
  44. package/template/fm-addon/ProofKitWV/icon.png +0 -0
  45. package/template/fm-addon/ProofKitWV/icon@2x.png +0 -0
  46. package/template/fm-addon/ProofKitWV/info.json +9 -6
  47. package/template/fm-addon/ProofKitWV/info_de.json +12 -5
  48. package/template/fm-addon/ProofKitWV/info_en.json +16 -5
  49. package/template/fm-addon/ProofKitWV/info_es.json +12 -5
  50. package/template/fm-addon/ProofKitWV/info_fr.json +12 -5
  51. package/template/fm-addon/ProofKitWV/info_it.json +12 -5
  52. package/template/fm-addon/ProofKitWV/info_ja.json +12 -5
  53. package/template/fm-addon/ProofKitWV/info_ko.json +12 -5
  54. package/template/fm-addon/ProofKitWV/info_nl.json +12 -5
  55. package/template/fm-addon/ProofKitWV/info_pt.json +12 -5
  56. package/template/fm-addon/ProofKitWV/info_sv.json +12 -5
  57. package/template/fm-addon/ProofKitWV/info_zh.json +12 -5
  58. package/template/fm-addon/ProofKitWV/it.xml +517 -20
  59. package/template/fm-addon/ProofKitWV/ja.xml +517 -20
  60. package/template/fm-addon/ProofKitWV/ko.xml +517 -20
  61. package/template/fm-addon/ProofKitWV/nl.xml +517 -20
  62. package/template/fm-addon/ProofKitWV/preview.png +0 -0
  63. package/template/fm-addon/ProofKitWV/pt.xml +517 -20
  64. package/template/fm-addon/ProofKitWV/records_de.xml +0 -0
  65. package/template/fm-addon/ProofKitWV/records_en.xml +0 -0
  66. package/template/fm-addon/ProofKitWV/records_es.xml +0 -0
  67. package/template/fm-addon/ProofKitWV/records_fr.xml +0 -0
  68. package/template/fm-addon/ProofKitWV/records_it.xml +0 -0
  69. package/template/fm-addon/ProofKitWV/records_ja.xml +0 -0
  70. package/template/fm-addon/ProofKitWV/records_ko.xml +0 -0
  71. package/template/fm-addon/ProofKitWV/records_nl.xml +0 -0
  72. package/template/fm-addon/ProofKitWV/records_pt.xml +0 -0
  73. package/template/fm-addon/ProofKitWV/records_sv.xml +0 -0
  74. package/template/fm-addon/ProofKitWV/records_zh.xml +0 -0
  75. package/template/fm-addon/ProofKitWV/sv.xml +517 -20
  76. package/template/fm-addon/ProofKitWV/template.xml +0 -0
  77. package/template/fm-addon/ProofKitWV/zh.xml +517 -20
  78. package/template/nextjs-mantine/AGENTS.md +1 -0
  79. package/template/nextjs-mantine/package.json +4 -4
  80. package/template/nextjs-shadcn/AGENTS.md +1 -0
  81. package/template/nextjs-shadcn/biome.json +18 -13
  82. package/template/nextjs-shadcn/package.json +10 -9
  83. package/template/nextjs-shadcn/proofkit.json +1 -1
  84. package/template/nextjs-shadcn/src/components/mode-toggle.tsx +39 -0
  85. package/template/nextjs-shadcn/src/components/ui/button.tsx +61 -0
  86. package/template/nextjs-shadcn/src/components/ui/dropdown-menu.tsx +267 -0
  87. package/template/nextjs-shadcn/src/components/ui/sonner.tsx +31 -0
  88. package/template/pages/nextjs/table-infinite/actions.ts +1 -1
  89. package/template/pages/nextjs/table-infinite-edit/actions.ts +1 -1
  90. package/template/vite-wv/.claude/launch.json +18 -0
  91. package/template/vite-wv/AGENTS.md +1 -0
  92. package/template/vite-wv/_gitignore +1 -0
  93. package/template/vite-wv/components.json +6 -6
  94. package/template/vite-wv/index.html +2 -2
  95. package/template/vite-wv/package.json +21 -35
  96. package/template/vite-wv/proofkit-typegen.config.jsonc +18 -0
  97. package/template/vite-wv/proofkit.json +4 -1
  98. package/template/vite-wv/scripts/filemaker.js +96 -0
  99. package/template/vite-wv/scripts/launch-fm.js +19 -0
  100. package/template/vite-wv/scripts/upload.js +17 -14
  101. package/template/vite-wv/src/App.tsx +84 -0
  102. package/template/vite-wv/src/index.css +96 -0
  103. package/template/vite-wv/src/lib/utils.ts +6 -0
  104. package/template/vite-wv/src/main.tsx +14 -35
  105. package/template/vite-wv/src/router.tsx +57 -0
  106. package/template/vite-wv/src/routes/query-demo.tsx +37 -0
  107. package/template/vite-wv/tsconfig.json +3 -1
  108. package/template/vite-wv/vite.config.ts +5 -5
  109. package/dist/index.d.ts +0 -2
  110. package/template/extras/config/_eslint.js +0 -27
  111. package/template/extras/config/_prettier.config.js +0 -6
  112. package/template/nextjs-mantine/.prettierrc +0 -3
  113. package/template/nextjs-shadcn/.prettierrc +0 -3
  114. package/template/vite-wv/.prettierrc +0 -3
  115. package/template/vite-wv/pnpm-lock.yaml +0 -2294
  116. package/template/vite-wv/postcss.config.cjs +0 -15
  117. package/template/vite-wv/scripts/launch-fm.sh +0 -3
  118. package/template/vite-wv/src/components/AppLogo.tsx +0 -5
  119. package/template/vite-wv/src/components/full-screen-loader.tsx +0 -9
  120. package/template/vite-wv/src/config/env.ts +0 -16
  121. package/template/vite-wv/src/config/theme/globals.css +0 -125
  122. package/template/vite-wv/src/config/theme/mantine-theme.ts +0 -22
  123. package/template/vite-wv/src/routeTree.gen.ts +0 -111
  124. package/template/vite-wv/src/routes/__root.tsx +0 -21
  125. package/template/vite-wv/src/routes/index.tsx +0 -63
  126. package/template/vite-wv/src/routes/secondary.tsx +0 -28
  127. package/template/vite-wv/src/utils/notification-helpers.ts +0 -32
  128. 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": "next 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.3",
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
- "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json",
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
- "ultracite"
42
- ]
43
- }
47
+ "extends": ["ultracite"]
48
+ }
@@ -7,22 +7,24 @@
7
7
  "build": "next build --turbopack",
8
8
  "proofkit": "proofkit",
9
9
  "start": "next start",
10
- "lint": "biome check",
11
- "format": "biome format --write"
10
+ "lint": "ultracite check .",
11
+ "format": "ultracite fix ."
12
12
  },
13
13
  "dependencies": {
14
+ "@radix-ui/react-slot": "^1.2.3",
14
15
  "@t3-oss/env-nextjs": "^0.13.8",
15
16
  "class-variance-authority": "^0.7.1",
16
17
  "clsx": "^2.1.1",
17
18
  "lucide-react": "^0.541.0",
18
- "next": "15.5.0",
19
+ "next": "^15.5.8",
19
20
  "next-themes": "^0.4.6",
20
- "react": "19.1.0",
21
- "react-dom": "19.1.0",
21
+ "radix-ui": "^1.4.2",
22
+ "react": "19.1.1",
23
+ "react-dom": "19.1.1",
24
+ "sonner": "^2.0.4",
22
25
  "tailwind-merge": "^3.3.1"
23
26
  },
24
27
  "devDependencies": {
25
- "@biomejs/biome": "2.2.0",
26
28
  "@tailwindcss/postcss": "^4",
27
29
  "@types/node": "^22",
28
30
  "@types/react": "^19",
@@ -30,7 +32,6 @@
30
32
  "tailwindcss": "^4",
31
33
  "tw-animate-css": "^1.3.7",
32
34
  "typescript": "^5",
33
- "ultracite": "5.2.4"
34
- },
35
- "packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748"
35
+ "ultracite": "7.0.8"
36
+ }
36
37
  }
@@ -2,5 +2,5 @@
2
2
  "ui": "shadcn",
3
3
  "envFile": ".env",
4
4
  "appType": "browser",
5
- "registryTemplates": ["utils/t3-env", "components/mode-toggle"]
5
+ "registryTemplates": ["utils/t3-env"]
6
6
  }
@@ -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
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
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
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
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__
@@ -2,6 +2,7 @@
2
2
  .DS_Store
3
3
  *.local
4
4
  *.log*
5
+ .env*
5
6
 
6
7
  # Dist
7
8
  node_modules
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema.json",
3
3
  "style": "new-york",
4
- "rsc": true,
4
+ "rsc": false,
5
5
  "tsx": true,
6
6
  "tailwind": {
7
7
  "config": "",
8
- "css": "src/config/theme/globals.css",
8
+ "css": "src/index.css",
9
9
  "baseColor": "neutral",
10
10
  "cssVariables": true,
11
- "prefix": "tw:"
11
+ "prefix": ""
12
12
  },
13
13
  "aliases": {
14
14
  "components": "@/components",
15
- "utils": "@/utils/styles",
15
+ "utils": "@/lib/utils",
16
16
  "ui": "@/components/ui",
17
- "lib": "@/utils",
18
- "hooks": "@/utils/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="app"></div>
10
+ <div id="root"></div>
11
11
  <script type="module" src="/src/main.tsx"></script>
12
12
  </body>
13
13
  </html>