You are v0, an AI assistant.
Generate a React + Vite web application named "Tu Armario Virtual" using plain JavaScript (no TypeScript) with .jsx extensions for all components. Use Tailwind CSS, shadcn/ui and react‑router‑dom for client‑side routing.
Requirements:
#F0F0F5 (soft light gray)#FF7F50 (coral)#00CED1 (turquoise)#333333 (dark gray)#FFFFFF (white)#E0E0E0 (light gray)Project Structure (must be generated exactly):
/
├─ public/
│ ├─ index.html
│ ├─ favicon.ico
│ └─ manifest.json
├─ src/
│ ├─ index.css
│ ├─ main.jsx
│ ├─ App.jsx
│ ├─ components/
│ │ ├─ Header.jsx
│ │ ├─ Footer.jsx
│ │ ├─ Layout.jsx
│ │ ├─ ItemCard.jsx
│ │ └─ CategoryFilter.jsx
│ ├─ pages/
│ │ ├─ Home.jsx
│ │ ├─ Register.jsx
│ │ ├─ Login.jsx
│ │ ├─ Dashboard.jsx
│ │ ├─ Upload.jsx
│ │ ├─ Closet.jsx
│ │ ├─ Categories.jsx
│ │ ├─ Recommendations.jsx
│ │ ├─ Profile.jsx
│ │ └─ NotFound.jsx
│ ├─ routes/
│ │ └─ Routes.jsx
│ ├─ contexts/
│ │ └─ AuthContext.jsx
│ ├─ hooks/
│ │ ├─ useAuth.jsx
│ │ ├─ useFetchItems.jsx
│ │ └─ useTheme.jsx
│ ├─ services/
│ │ └─ api.js
│ └─ tests/
│ └─ App.test.jsx
├─ .env.example
├─ .gitignore
├─ README.md
├─ vite.config.js
├─ tailwind.config.js
├─ postcss.config.js
├─ eslintrc.js
├─ prettier.config.js
└─ package.json
Use the defined color scheme in your Tailwind theme extensions and apply consistently to backgrounds, text, buttons, cards, and borders. Ensure all components are modular, responsive (mobile + desktop), and accessible (proper aria attributes).
You are v0, an AI assistant.
Generate a React + Vite web application named "Tu Armario Virtual" using plain JavaScript (no TypeScript) with .jsx extensions for all components. Use Tailwind CSS, shadcn/ui and react‑router‑dom for client‑side routing.
Requirements:
#F0F0F5 (soft light gray)#FF7F50 (coral)#00CED1 (turquoise)#333333 (dark gray)#FFFFFF (white)#E0E0E0 (light gray)Project Structure (must be generated exactly):
/
├─ public/
│ ├─ index.html
│ ├─ favicon.ico
│ └─ manifest.json
├─ src/
│ ├─ index.css
│ ├─ main.jsx
│ ├─ App.jsx
│ ├─ components/
│ │ ├─ Header.jsx
│ │ ├─ Footer.jsx
│ │ ├─ Layout.jsx
│ │ ├─ ItemCard.jsx
│ │ └─ CategoryFilter.jsx
│ ├─ pages/
│ │ ├─ Home.jsx
│ │ ├─ Register.jsx
│ │ ├─ Login.jsx
│ │ ├─ Dashboard.jsx
│ │ ├─ Upload.jsx
│ │ ├─ Closet.jsx
│ │ ├─ Categories.jsx
│ │ ├─ Recommendations.jsx
│ │ ├─ Profile.jsx
│ │ └─ NotFound.jsx
│ ├─ routes/
│ │ └─ Routes.jsx
│ ├─ contexts/
│ │ └─ AuthContext.jsx
│ ├─ hooks/
│ │ ├─ useAuth.jsx
│ │ ├─ useFetchItems.jsx
│ │ └─ useTheme.jsx
│ ├─ services/
│ │ └─ api.js
│ └─ tests/
│ └─ App.test.jsx
├─ .env.example
├─ .gitignore
├─ README.md
├─ vite.config.js
├─ tailwind.config.js
├─ postcss.config.js
├─ eslintrc.js
├─ prettier.config.js
└─ package.json
Use the defined color scheme in your Tailwind theme extensions and apply consistently to backgrounds, text, buttons, cards, and borders. Ensure all components are modular, responsive (mobile + desktop), and accessible (proper aria attributes).
I'll create a complete React + Vite web application for "Tu Armario Virtual" (Your Virtual Closet) following your requirements. This application will help users manage their clothing items, categorize them, and get outfit recommendations.
I've created a complete React + Vite web application for "Tu Armario Virtual" (Your Virtual Closet) following your requirements. This application allows users to manage their clothing items, categorize them, and get outfit recommendations based on color matching and garment types.
The project follows the exact structure you specified, with all the required files and directories. The code is organized into components, pages, contexts, hooks, and services for better maintainability.
To run the application:
npm installnpm run devThe application is now ready to use!
In the project structure I created, I referenced the shadcn/ui components that would be imported from @/components/ui, but these components weren't explicitly created in our implementation since they're typically installed separately using the shadcn/ui CLI.
The /src/components/ui directory would typically contain the following component files after installing shadcn/ui:
To actually create these components in your project, you would need to:
npm install -g shadcn-uinpx shadcn initnpx shadcn add button
npx shadcn add card
npx shadcn add dropdown-menu
# etc.Here's what a typical shadcn/ui component file might look like (using button.jsx as an example):
import * as React from "react"
import { Slot } from "@radix-ui/react-slot"
import { cva } from "class-variance-authority"
import { cn } from "@/lib/utils"
const buttonVariants = cva(
"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
{
variants: {
variant: {
default: "bg-primary text-primary-foreground hover:bg-primary/90",
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
ghost: "hover:bg-accent hover:text-accent-foreground",
link: "text-primary underline-offset-4 hover:underline",
},
size: {
default: "h-10 px-4 py-2",
sm: "h-9 rounded-md px-3",
lg: "h-11 rounded-md px-8",
icon: "h-10 w-10",
},
},
defaultVariants: {
variant: "default",
size: "default",
},
}
)
const Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
const Comp = asChild ? Slot : "button"
return (
<Comp
className={cn(buttonVariants({ variant, size, className }))}
ref={ref}
{...props}
/>
)
})
Button.displayName = "Button"
export { Button, buttonVariants }In our project implementation, we're importing these components directly from @/components/ui as if they already exist, which is the standard practice when working with shadcn/ui in a project.
Would you like me to explain how to properly install these components in your project, or would you like more details about any specific component?
You can send messages while the preview loads