diff --git a/.prettierignore b/.prettierignore index 05e2689..93c21f2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,6 +2,7 @@ node_modules coverage .remember/** +video/build/** docs/uiux-assets/** pnpm-lock.yaml .agents/skills/**/SKILL.md diff --git a/eslint.config.mjs b/eslint.config.mjs index f3b2f5c..f9c76e6 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -5,5 +5,14 @@ import nextTypeScript from "eslint-config-next/typescript" export default defineConfig([ ...nextVitals, ...nextTypeScript, - globalIgnores([".next/**", "out/**", "build/**", "next-env.d.ts", "docs/uiux-assets/**"]), + globalIgnores([ + ".next/**", + "out/**", + "build/**", + "video/build/**", + "video/out/**", + "video/node_modules/**", + "next-env.d.ts", + "docs/uiux-assets/**", + ]), ]) diff --git a/package.json b/package.json index eabd293..f6b8933 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "react": "19.2.8", "react-dom": "19.2.8", "react-hook-form": "^7.83.0", - "shadcn": "^4.16.0", "sonner": "^2.0.7", "tailwind-merge": "^3.6.0", "tw-animate-css": "^1.4.0", @@ -52,6 +51,7 @@ "eslint": "^9.39.1", "eslint-config-next": "16.2.12", "prettier": "^3.9.6", + "shadcn": "^4.16.0", "tailwindcss": "^4.3.3", "typescript": "5.9.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46fbb0b..089c9cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,9 +47,6 @@ importers: react-hook-form: specifier: ^7.83.0 version: 7.83.0(react@19.2.8) - shadcn: - specifier: ^4.16.0 - version: 4.16.0(supports-color@7.2.0)(typescript@5.9.3) sonner: specifier: ^2.0.7 version: 2.0.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8) @@ -84,6 +81,9 @@ importers: prettier: specifier: ^3.9.6 version: 3.9.6 + shadcn: + specifier: ^4.16.0 + version: 4.16.0(supports-color@7.2.0)(typescript@5.9.3) tailwindcss: specifier: ^4.3.3 version: 4.3.3 diff --git a/src/components/landing/pilot-form-lazy.tsx b/src/components/landing/pilot-form-lazy.tsx index 160e16c..551c775 100644 --- a/src/components/landing/pilot-form-lazy.tsx +++ b/src/components/landing/pilot-form-lazy.tsx @@ -3,10 +3,6 @@ import * as React from "react" import dynamic from "next/dynamic" -/** - * Placeholder that mirrors the form's card container and reserves height, so the - * swap to the real form doesn't shift the page. Kept intentionally quiet. - */ function FormSkeleton() { return (
import("@/components/landing/pilot-form").then((m) => m.PilotForm), { ssr: false, loading: () => }, diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx deleted file mode 100644 index 988aec5..0000000 --- a/src/components/ui/badge.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { mergeProps } from "@base-ui/react/merge-props" -import { useRender } from "@base-ui/react/use-render" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const badgeVariants = cva( - "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80", - secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80", - destructive: - "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20", - outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground", - ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50", - link: "text-primary underline-offset-4 hover:underline", - }, - }, - defaultVariants: { - variant: "default", - }, - }, -) - -function Badge({ - className, - variant = "default", - render, - ...props -}: useRender.ComponentProps<"span"> & VariantProps) { - return useRender({ - defaultTagName: "span", - props: mergeProps<"span">( - { - className: cn(badgeVariants({ variant }), className), - }, - props, - ), - render, - state: { - slot: "badge", - variant, - }, - }) -} - -export { Badge, badgeVariants } diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx deleted file mode 100644 index 5261e2e..0000000 --- a/src/components/ui/card.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import * as React from "react" - -import { cn } from "@/lib/utils" - -function Card({ - className, - size = "default", - ...props -}: React.ComponentProps<"div"> & { size?: "default" | "sm" }) { - return ( -
img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", - className, - )} - {...props} - /> - ) -} - -function CardHeader({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ) -} - -function CardTitle({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ) -} - -function CardDescription({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ) -} - -function CardAction({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ) -} - -function CardContent({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ) -} - -function CardFooter({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ) -} - -export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent } diff --git a/src/components/ui/form.tsx b/src/components/ui/form.tsx index 843cb1b..ecd9808 100644 --- a/src/components/ui/form.tsx +++ b/src/components/ui/form.tsx @@ -116,23 +116,6 @@ const FormControl = React.forwardRef< }) FormControl.displayName = "FormControl" -const FormDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const { formDescriptionId } = useFormField() - - return ( -

- ) -}) -FormDescription.displayName = "FormDescription" - const FormMessage = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes @@ -158,13 +141,4 @@ const FormMessage = React.forwardRef< }) FormMessage.displayName = "FormMessage" -export { - useFormField, - Form, - FormItem, - FormLabel, - FormControl, - FormDescription, - FormMessage, - FormField, -} +export { useFormField, Form, FormItem, FormLabel, FormControl, FormMessage, FormField } diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx index 705386c..b93653c 100644 --- a/src/components/ui/select.tsx +++ b/src/components/ui/select.tsx @@ -8,16 +8,6 @@ import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react" const Select = SelectPrimitive.Root -function SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) { - return ( - - ) -} - function SelectValue({ className, ...props }: SelectPrimitive.Value.Props) { return ( - ) -} - function SelectItem({ className, children, ...props }: SelectPrimitive.Item.Props) { return ( - ) -} - function SelectScrollUpButton({ className, ...props @@ -179,12 +149,9 @@ function SelectScrollDownButton({ export { Select, SelectContent, - SelectGroup, SelectItem, - SelectLabel, SelectScrollDownButton, SelectScrollUpButton, - SelectSeparator, SelectTrigger, SelectValue, } diff --git a/src/components/ui/separator.tsx b/src/components/ui/separator.tsx deleted file mode 100644 index 38137c5..0000000 --- a/src/components/ui/separator.tsx +++ /dev/null @@ -1,21 +0,0 @@ -"use client" - -import { Separator as SeparatorPrimitive } from "@base-ui/react/separator" - -import { cn } from "@/lib/utils" - -function Separator({ className, orientation = "horizontal", ...props }: SeparatorPrimitive.Props) { - return ( - - ) -} - -export { Separator } diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx deleted file mode 100644 index f9212b5..0000000 --- a/src/components/ui/textarea.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from "react" - -import { cn } from "@/lib/utils" - -function Textarea({ className, ...props }: React.ComponentProps<"textarea">) { - return ( -