Fix build errors and TypeScript issues

- Install missing UI component dependencies
- Fix unused imports in React components
- Remove version numbers from all import statements
- Fix TypeScript errors in calendar and chart components
- Build now succeeds with production bundle generated
This commit is contained in:
Your Name
2025-10-24 18:52:34 -07:00
parent c097c7fe54
commit e69c6ae5be
37 changed files with 1237 additions and 55 deletions

View File

@@ -1,4 +1,4 @@
import React, { useState } from 'react'; import { useState } from 'react';
import { AppProvider } from './contexts/AppContext'; import { AppProvider } from './contexts/AppContext';
import { KanbanBoard } from './components/KanbanBoard'; import { KanbanBoard } from './components/KanbanBoard';
import { ProductBacklog } from './components/ProductBacklog'; import { ProductBacklog } from './components/ProductBacklog';

View File

@@ -1,6 +1,6 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { useApp } from '../contexts/AppContext'; import { useApp } from '../contexts/AppContext';
import { Task, UserStory } from '../types'; import { Task } from '../types';
import { TaskCard } from './TaskCard'; import { TaskCard } from './TaskCard';
import { CreateTaskDialog } from './CreateTaskDialog'; import { CreateTaskDialog } from './CreateTaskDialog';
import { EditTaskDialog } from './EditTaskDialog'; import { EditTaskDialog } from './EditTaskDialog';

View File

@@ -1,6 +1,6 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { useApp } from '../contexts/AppContext'; import { useApp } from '../contexts/AppContext';
import { Sprint, UserStory } from '../types'; import { Sprint } from '../types';
import { Card } from './ui/card'; import { Card } from './ui/card';
import { Badge } from './ui/badge'; import { Badge } from './ui/badge';
import { Button } from './ui/button'; import { Button } from './ui/button';
@@ -12,7 +12,7 @@ import { format } from 'date-fns';
import { Calendar, Plus, Edit, XCircle, PlayCircle } from 'lucide-react'; import { Calendar, Plus, Edit, XCircle, PlayCircle } from 'lucide-react';
export const SprintManagement: React.FC = () => { export const SprintManagement: React.FC = () => {
const { sprints, userStories, updateSprint, closeSprint, addSprint, setActiveSprint, updateUserStory } = useApp(); const { sprints, userStories, updateSprint, closeSprint, addSprint, setActiveSprint } = useApp();
const [editDialogOpen, setEditDialogOpen] = useState(false); const [editDialogOpen, setEditDialogOpen] = useState(false);
const [createDialogOpen, setCreateDialogOpen] = useState(false); const [createDialogOpen, setCreateDialogOpen] = useState(false);
const [selectedSprint, setSelectedSprint] = useState<Sprint | null>(null); const [selectedSprint, setSelectedSprint] = useState<Sprint | null>(null);

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as AccordionPrimitive from "@radix-ui/react-accordion@1.2.3"; import * as AccordionPrimitive from "@radix-ui/react-accordion";
import { ChevronDownIcon } from "lucide-react"; import { ChevronDownIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog@1.1.6"; import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
import { cn } from "./utils"; import { cn } from "./utils";
import { buttonVariants } from "./button"; import { buttonVariants } from "./button";

View File

@@ -1,6 +1,6 @@
"use client"; "use client";
import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio@1.1.2"; import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
function AspectRatio({ function AspectRatio({
...props ...props

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as AvatarPrimitive from "@radix-ui/react-avatar@1.1.3"; import * as AvatarPrimitive from "@radix-ui/react-avatar";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,8 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import { ChevronLeft, ChevronRight } from "lucide-react"; import { DayPicker } from "react-day-picker";
import { DayPicker } from "react-day-picker@8.10.1";
import { cn } from "./utils"; import { cn } from "./utils";
import { buttonVariants } from "./button"; import { buttonVariants } from "./button";
@@ -59,14 +58,6 @@ function Calendar({
day_hidden: "invisible", day_hidden: "invisible",
...classNames, ...classNames,
}} }}
components={{
IconLeft: ({ className, ...props }) => (
<ChevronLeft className={cn("size-4", className)} {...props} />
),
IconRight: ({ className, ...props }) => (
<ChevronRight className={cn("size-4", className)} {...props} />
),
}}
{...props} {...props}
/> />
); );

View File

@@ -3,7 +3,7 @@
import * as React from "react"; import * as React from "react";
import useEmblaCarousel, { import useEmblaCarousel, {
type UseEmblaCarouselType, type UseEmblaCarouselType,
} from "embla-carousel-react@8.6.0"; } from "embla-carousel-react";
import { ArrowLeft, ArrowRight } from "lucide-react"; import { ArrowLeft, ArrowRight } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as RechartsPrimitive from "recharts@2.15.2"; import * as RechartsPrimitive from "recharts";
import { cn } from "./utils"; import { cn } from "./utils";
@@ -125,6 +125,8 @@ function ChartTooltipContent({
indicator?: "line" | "dot" | "dashed"; indicator?: "line" | "dot" | "dashed";
nameKey?: string; nameKey?: string;
labelKey?: string; labelKey?: string;
payload?: any[];
label?: any;
}) { }) {
const { config } = useChart(); const { config } = useChart();
@@ -179,7 +181,7 @@ function ChartTooltipContent({
> >
{!nestLabel ? tooltipLabel : null} {!nestLabel ? tooltipLabel : null}
<div className="grid gap-1.5"> <div className="grid gap-1.5">
{payload.map((item, index) => { {payload.map((item: any, index: number) => {
const key = `${nameKey || item.name || item.dataKey || "value"}`; const key = `${nameKey || item.name || item.dataKey || "value"}`;
const itemConfig = getPayloadConfigFromPayload(config, item, key); const itemConfig = getPayloadConfigFromPayload(config, item, key);
const indicatorColor = color || item.payload.fill || item.color; const indicatorColor = color || item.payload.fill || item.color;
@@ -256,11 +258,12 @@ function ChartLegendContent({
payload, payload,
verticalAlign = "bottom", verticalAlign = "bottom",
nameKey, nameKey,
}: React.ComponentProps<"div"> & }: React.ComponentProps<"div"> & {
Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
hideIcon?: boolean; hideIcon?: boolean;
nameKey?: string; nameKey?: string;
}) { payload?: any[];
verticalAlign?: "top" | "bottom";
}) {
const { config } = useChart(); const { config } = useChart();
if (!payload?.length) { if (!payload?.length) {
@@ -275,7 +278,7 @@ function ChartLegendContent({
className, className,
)} )}
> >
{payload.map((item) => { {payload.map((item: any) => {
const key = `${nameKey || item.dataKey || "value"}`; const key = `${nameKey || item.dataKey || "value"}`;
const itemConfig = getPayloadConfigFromPayload(config, item, key); const itemConfig = getPayloadConfigFromPayload(config, item, key);

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as CheckboxPrimitive from "@radix-ui/react-checkbox@1.1.4"; import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
import { CheckIcon } from "lucide-react"; import { CheckIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,6 +1,6 @@
"use client"; "use client";
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible@1.1.3"; import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
function Collapsible({ function Collapsible({
...props ...props

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import { Command as CommandPrimitive } from "cmdk@1.1.1"; import { Command as CommandPrimitive } from "cmdk";
import { SearchIcon } from "lucide-react"; import { SearchIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu@2.2.6"; import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"; import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import { Drawer as DrawerPrimitive } from "vaul@1.1.2"; import { Drawer as DrawerPrimitive } from "vaul";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu@2.1.6"; import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"; import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -11,7 +11,7 @@ import {
type ControllerProps, type ControllerProps,
type FieldPath, type FieldPath,
type FieldValues, type FieldValues,
} from "react-hook-form@7.55.0"; } from "react-hook-form";
import { cn } from "./utils"; import { cn } from "./utils";
import { Label } from "./label"; import { Label } from "./label";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as HoverCardPrimitive from "@radix-ui/react-hover-card@1.1.6"; import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import { OTPInput, OTPInputContext } from "input-otp@1.4.2"; import { OTPInput, OTPInputContext } from "input-otp";
import { MinusIcon } from "lucide-react"; import { MinusIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as MenubarPrimitive from "@radix-ui/react-menubar@1.1.6"; import * as MenubarPrimitive from "@radix-ui/react-menubar";
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"; import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,5 +1,5 @@
import * as React from "react"; import * as React from "react";
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu@1.2.5"; import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
import { cva } from "class-variance-authority"; import { cva } from "class-variance-authority";
import { ChevronDownIcon } from "lucide-react"; import { ChevronDownIcon } from "lucide-react";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as PopoverPrimitive from "@radix-ui/react-popover@1.1.6"; import * as PopoverPrimitive from "@radix-ui/react-popover";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group@1.2.3"; import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
import { CircleIcon } from "lucide-react"; import { CircleIcon } from "lucide-react";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -2,7 +2,7 @@
import * as React from "react"; import * as React from "react";
import { GripVerticalIcon } from "lucide-react"; import { GripVerticalIcon } from "lucide-react";
import * as ResizablePrimitive from "react-resizable-panels@2.1.7"; import * as ResizablePrimitive from "react-resizable-panels";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area@1.2.3"; import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as SelectPrimitive from "@radix-ui/react-select@2.1.6"; import * as SelectPrimitive from "@radix-ui/react-select";
import { import {
CheckIcon, CheckIcon,
ChevronDownIcon, ChevronDownIcon,

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as SeparatorPrimitive from "@radix-ui/react-separator@1.1.2"; import * as SeparatorPrimitive from "@radix-ui/react-separator";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as SliderPrimitive from "@radix-ui/react-slider@1.2.3"; import * as SliderPrimitive from "@radix-ui/react-slider";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import { useTheme } from "next-themes@0.4.6"; import { useTheme } from "next-themes";
import { Toaster as Sonner, ToasterProps } from "sonner@2.0.3"; import { Toaster as Sonner, ToasterProps } from "sonner";
const Toaster = ({ ...props }: ToasterProps) => { const Toaster = ({ ...props }: ToasterProps) => {
const { theme = "system" } = useTheme(); const { theme = "system" } = useTheme();

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as SwitchPrimitive from "@radix-ui/react-switch@1.1.3"; import * as SwitchPrimitive from "@radix-ui/react-switch";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as TabsPrimitive from "@radix-ui/react-tabs@1.1.3"; import * as TabsPrimitive from "@radix-ui/react-tabs";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group@1.1.2"; import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
import { type VariantProps } from "class-variance-authority"; import { type VariantProps } from "class-variance-authority";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as TogglePrimitive from "@radix-ui/react-toggle@1.1.2"; import * as TogglePrimitive from "@radix-ui/react-toggle";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import * as React from "react"; import * as React from "react";
import * as TooltipPrimitive from "@radix-ui/react-tooltip@1.1.8"; import * as TooltipPrimitive from "@radix-ui/react-tooltip";
import { cn } from "./utils"; import { cn } from "./utils";

View File

@@ -1,4 +1,4 @@
import React, { createContext, useContext, useState, ReactNode } from 'react'; import { createContext, useContext, useState, ReactNode } from 'react';
import { Task, UserStory, Sprint } from '../types'; import { Task, UserStory, Sprint } from '../types';
interface AppContextType { interface AppContextType {

1159
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -10,20 +10,51 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-aspect-ratio": "^1.1.7",
"@radix-ui/react-avatar": "^1.1.10",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-context-menu": "^2.2.16",
"@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-hover-card": "^1.1.15",
"@radix-ui/react-label": "^2.1.7", "@radix-ui/react-label": "^2.1.7",
"@radix-ui/react-menubar": "^1.1.16",
"@radix-ui/react-navigation-menu": "^1.2.14",
"@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-progress": "^1.1.7", "@radix-ui/react-progress": "^1.1.7",
"@radix-ui/react-radio-group": "^1.3.8",
"@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-separator": "^1.1.7",
"@radix-ui/react-slider": "^1.3.6",
"@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-switch": "^1.2.6",
"@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-toggle": "^1.1.10",
"@radix-ui/react-toggle-group": "^1.1.11",
"@radix-ui/react-tooltip": "^1.2.8",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"clsx": "^2.0.0", "clsx": "^2.0.0",
"cmdk": "^1.1.1",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"embla-carousel-react": "^8.6.0",
"input-otp": "^1.4.2",
"lucide-react": "^0.263.1", "lucide-react": "^0.263.1",
"next-themes": "^0.4.6",
"react": "^18.2.0", "react": "^18.2.0",
"react-day-picker": "^9.11.1",
"react-dnd": "^16.0.1", "react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1", "react-dnd-html5-backend": "^16.0.1",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-hook-form": "^7.65.0",
"react-resizable-panels": "^3.0.6",
"recharts": "^3.3.0", "recharts": "^3.3.0",
"tailwind-merge": "^1.14.0" "sonner": "^2.0.7",
"tailwind-merge": "^1.14.0",
"vaul": "^1.1.2"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.2.15", "@types/react": "^18.2.15",