diff --git a/Untitled/ATTRIBUTIONS.md b/Untitled/ATTRIBUTIONS.md
deleted file mode 100644
index 5df5c40..0000000
--- a/Untitled/ATTRIBUTIONS.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This Figma Make file includes components from [shadcn/ui](https://ui.shadcn.com/) used under [MIT license](https://github.com/shadcn-ui/ui/blob/main/LICENSE.md).
-
-This Figma Make file includes photos from [Unsplash](https://unsplash.com) used under [license](https://unsplash.com/license).
diff --git a/Untitled/README.md b/Untitled/README.md
deleted file mode 100644
index b4e4e92..0000000
--- a/Untitled/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
- # Untitled
-
- This is a code bundle for Untitled. The original project is available at https://www.figma.com/design/3LXwvIpGzE1RP9LYAXQh5Q/Untitled.
-
- ## Running the code
-
- Run `npm i` to install the dependencies.
-
- Run `npm run dev` to start the development server.
-
\ No newline at end of file
diff --git a/Untitled/default_shadcn_theme.css b/Untitled/default_shadcn_theme.css
deleted file mode 100644
index 39e1b44..0000000
--- a/Untitled/default_shadcn_theme.css
+++ /dev/null
@@ -1,120 +0,0 @@
-/* KEEP_IN_SYNC(fullscreen/resources/figmake/shadcn/globals.css) */
-
-:root {
- --font-size: 16px;
- --background: #ffffff;
- --foreground: oklch(0.145 0 0);
- --card: #ffffff;
- --card-foreground: oklch(0.145 0 0);
- --popover: oklch(1 0 0);
- --popover-foreground: oklch(0.145 0 0);
- --primary: #030213;
- --primary-foreground: oklch(1 0 0);
- --secondary: oklch(0.95 0.0058 264.53);
- --secondary-foreground: #030213;
- --muted: #ececf0;
- --muted-foreground: #717182;
- --accent: #e9ebef;
- --accent-foreground: #030213;
- --destructive: #d4183d;
- --destructive-foreground: #ffffff;
- --border: rgba(0, 0, 0, 0.1);
- --input: transparent;
- --input-background: #f3f3f5;
- --switch-background: #cbced4;
- --font-weight-medium: 500;
- --font-weight-normal: 400;
- --ring: oklch(0.708 0 0);
- --chart-1: oklch(0.646 0.222 41.116);
- --chart-2: oklch(0.6 0.118 184.704);
- --chart-3: oklch(0.398 0.07 227.392);
- --chart-4: oklch(0.828 0.189 84.429);
- --chart-5: oklch(0.769 0.188 70.08);
- --radius: 0.625rem;
- --sidebar: oklch(0.985 0 0);
- --sidebar-foreground: oklch(0.145 0 0);
- --sidebar-primary: #030213;
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.97 0 0);
- --sidebar-accent-foreground: oklch(0.205 0 0);
- --sidebar-border: oklch(0.922 0 0);
- --sidebar-ring: oklch(0.708 0 0);
-}
-
-.dark {
- --background: oklch(0.145 0 0);
- --foreground: oklch(0.985 0 0);
- --card: oklch(0.145 0 0);
- --card-foreground: oklch(0.985 0 0);
- --popover: oklch(0.145 0 0);
- --popover-foreground: oklch(0.985 0 0);
- --primary: oklch(0.985 0 0);
- --primary-foreground: oklch(0.205 0 0);
- --secondary: oklch(0.269 0 0);
- --secondary-foreground: oklch(0.985 0 0);
- --muted: oklch(0.269 0 0);
- --muted-foreground: oklch(0.708 0 0);
- --accent: oklch(0.269 0 0);
- --accent-foreground: oklch(0.985 0 0);
- --destructive: oklch(0.396 0.141 25.723);
- --destructive-foreground: oklch(0.637 0.237 25.331);
- --border: oklch(0.269 0 0);
- --input: oklch(0.269 0 0);
- --ring: oklch(0.439 0 0);
- --font-weight-medium: 500;
- --font-weight-normal: 400;
- --chart-1: oklch(0.488 0.243 264.376);
- --chart-2: oklch(0.696 0.17 162.48);
- --chart-3: oklch(0.769 0.188 70.08);
- --chart-4: oklch(0.627 0.265 303.9);
- --chart-5: oklch(0.645 0.246 16.439);
- --sidebar: oklch(0.205 0 0);
- --sidebar-foreground: oklch(0.985 0 0);
- --sidebar-primary: oklch(0.488 0.243 264.376);
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.269 0 0);
- --sidebar-accent-foreground: oklch(0.985 0 0);
- --sidebar-border: oklch(0.269 0 0);
- --sidebar-ring: oklch(0.439 0 0);
-}
-
-@theme inline {
- --color-background: var(--background);
- --color-foreground: var(--foreground);
- --color-card: var(--card);
- --color-card-foreground: var(--card-foreground);
- --color-popover: var(--popover);
- --color-popover-foreground: var(--popover-foreground);
- --color-primary: var(--primary);
- --color-primary-foreground: var(--primary-foreground);
- --color-secondary: var(--secondary);
- --color-secondary-foreground: var(--secondary-foreground);
- --color-muted: var(--muted);
- --color-muted-foreground: var(--muted-foreground);
- --color-accent: var(--accent);
- --color-accent-foreground: var(--accent-foreground);
- --color-destructive: var(--destructive);
- --color-destructive-foreground: var(--destructive-foreground);
- --color-border: var(--border);
- --color-input: var(--input);
- --color-input-background: var(--input-background);
- --color-switch-background: var(--switch-background);
- --color-ring: var(--ring);
- --color-chart-1: var(--chart-1);
- --color-chart-2: var(--chart-2);
- --color-chart-3: var(--chart-3);
- --color-chart-4: var(--chart-4);
- --color-chart-5: var(--chart-5);
- --radius-sm: calc(var(--radius) - 4px);
- --radius-md: calc(var(--radius) - 2px);
- --radius-lg: var(--radius);
- --radius-xl: calc(var(--radius) + 4px);
- --color-sidebar: var(--sidebar);
- --color-sidebar-foreground: var(--sidebar-foreground);
- --color-sidebar-primary: var(--sidebar-primary);
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
- --color-sidebar-accent: var(--sidebar-accent);
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
- --color-sidebar-border: var(--sidebar-border);
- --color-sidebar-ring: var(--sidebar-ring);
-}
diff --git a/Untitled/index.html b/Untitled/index.html
deleted file mode 100644
index 30e21a2..0000000
--- a/Untitled/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
- Untitled
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Untitled/package.json b/Untitled/package.json
deleted file mode 100644
index fad7042..0000000
--- a/Untitled/package.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- "name": "@figma/my-make-file",
- "private": true,
- "version": "0.0.1",
- "type": "module",
- "scripts": {
- "build": "vite build",
- "dev": "vite"
- },
- "dependencies": {
- "@emotion/react": "11.14.0",
- "@emotion/styled": "11.14.1",
- "@mui/icons-material": "7.3.5",
- "@mui/material": "7.3.5",
- "@popperjs/core": "2.11.8",
- "@radix-ui/react-accordion": "1.2.3",
- "@radix-ui/react-alert-dialog": "1.1.6",
- "@radix-ui/react-aspect-ratio": "1.1.2",
- "@radix-ui/react-avatar": "1.1.3",
- "@radix-ui/react-checkbox": "1.1.4",
- "@radix-ui/react-collapsible": "1.1.3",
- "@radix-ui/react-context-menu": "2.2.6",
- "@radix-ui/react-dialog": "1.1.6",
- "@radix-ui/react-dropdown-menu": "2.1.6",
- "@radix-ui/react-hover-card": "1.1.6",
- "@radix-ui/react-label": "2.1.2",
- "@radix-ui/react-menubar": "1.1.6",
- "@radix-ui/react-navigation-menu": "1.2.5",
- "@radix-ui/react-popover": "1.1.6",
- "@radix-ui/react-progress": "1.1.2",
- "@radix-ui/react-radio-group": "1.2.3",
- "@radix-ui/react-scroll-area": "1.2.3",
- "@radix-ui/react-select": "2.1.6",
- "@radix-ui/react-separator": "1.1.2",
- "@radix-ui/react-slider": "1.2.3",
- "@radix-ui/react-slot": "1.1.2",
- "@radix-ui/react-switch": "1.1.3",
- "@radix-ui/react-tabs": "1.1.3",
- "@radix-ui/react-toggle-group": "1.1.2",
- "@radix-ui/react-toggle": "1.1.2",
- "@radix-ui/react-tooltip": "1.1.8",
- "canvas-confetti": "1.9.4",
- "class-variance-authority": "0.7.1",
- "clsx": "2.1.1",
- "cmdk": "1.1.1",
- "date-fns": "3.6.0",
- "embla-carousel-react": "8.6.0",
- "input-otp": "1.4.2",
- "lucide-react": "0.487.0",
- "motion": "12.23.24",
- "next-themes": "0.4.6",
- "react-day-picker": "8.10.1",
- "react-dnd": "16.0.1",
- "react-dnd-html5-backend": "16.0.1",
- "react-hook-form": "7.55.0",
- "react-popper": "2.3.0",
- "react-resizable-panels": "2.1.7",
- "react-responsive-masonry": "2.7.1",
- "react-router": "7.13.0",
- "react-slick": "0.31.0",
- "recharts": "2.15.2",
- "sonner": "2.0.3",
- "tailwind-merge": "3.2.0",
- "tw-animate-css": "1.3.8",
- "vaul": "1.1.2"
- },
- "devDependencies": {
- "@tailwindcss/vite": "4.1.12",
- "@vitejs/plugin-react": "4.7.0",
- "tailwindcss": "4.1.12",
- "vite": "6.3.5"
- },
- "peerDependencies": {
- "react": "18.3.1",
- "react-dom": "18.3.1"
- },
- "peerDependenciesMeta": {
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- }
- },
- "pnpm": {
- "overrides": {
- "vite": "6.3.5"
- }
- }
-}
\ No newline at end of file
diff --git a/Untitled/pnpm-workspace.yaml b/Untitled/pnpm-workspace.yaml
deleted file mode 100644
index e4aab11..0000000
--- a/Untitled/pnpm-workspace.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-packages:
- - '.'
\ No newline at end of file
diff --git a/Untitled/postcss.config.mjs b/Untitled/postcss.config.mjs
deleted file mode 100644
index 531dbec..0000000
--- a/Untitled/postcss.config.mjs
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * PostCSS Configuration
- *
- * Tailwind CSS v4 (via @tailwindcss/vite) automatically sets up all required
- * PostCSS plugins — you do NOT need to include `tailwindcss` or `autoprefixer` here.
- *
- * This file only exists for adding additional PostCSS plugins, if needed.
- * For example:
- *
- * import postcssNested from 'postcss-nested'
- * export default { plugins: [postcssNested()] }
- *
- * Otherwise, you can leave this file empty.
- */
-export default {}
diff --git a/Untitled/src/app/App.tsx b/Untitled/src/app/App.tsx
deleted file mode 100644
index 2040ce9..0000000
--- a/Untitled/src/app/App.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import { RouterProvider } from 'react-router';
-import { router } from './routes';
-
-export default function App() {
- return ;
-}
\ No newline at end of file
diff --git a/Untitled/src/app/components/figma/ImageWithFallback.tsx b/Untitled/src/app/components/figma/ImageWithFallback.tsx
deleted file mode 100644
index 0e26139..0000000
--- a/Untitled/src/app/components/figma/ImageWithFallback.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import React, { useState } from 'react'
-
-const ERROR_IMG_SRC =
- 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg=='
-
-export function ImageWithFallback(props: React.ImgHTMLAttributes) {
- const [didError, setDidError] = useState(false)
-
- const handleError = () => {
- setDidError(true)
- }
-
- const { src, alt, style, className, ...rest } = props
-
- return didError ? (
-
-
-

-
-
- ) : (
-
- )
-}
diff --git a/Untitled/src/app/components/layout/AccountSidebar.tsx b/Untitled/src/app/components/layout/AccountSidebar.tsx
deleted file mode 100644
index 4375341..0000000
--- a/Untitled/src/app/components/layout/AccountSidebar.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Link, useLocation } from 'react-router';
-import { Settings, MapPin, ShoppingBag, MessageSquare } from 'lucide-react';
-
-const navItems = [
- { path: '/account/settings', label: 'Настройки', icon: Settings },
- { path: '/account/addresses', label: 'Адреса', icon: MapPin },
- { path: '/account/orders', label: 'Заказы', icon: ShoppingBag },
- { path: '/account/messages', label: 'Сообщения', icon: MessageSquare }
-];
-
-export function AccountSidebar() {
- const location = useLocation();
-
- return (
-
- );
-}
diff --git a/Untitled/src/app/components/layout/AdminSidebar.tsx b/Untitled/src/app/components/layout/AdminSidebar.tsx
deleted file mode 100644
index 0d6ca85..0000000
--- a/Untitled/src/app/components/layout/AdminSidebar.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { Link, useLocation } from 'react-router';
-import { LayoutDashboard, ShoppingBag, Star, Users, FileText } from 'lucide-react';
-
-const navItems = [
- { path: '/admin', label: 'Dashboard', icon: LayoutDashboard },
- { path: '/admin/orders', label: 'Заказы', icon: ShoppingBag },
- { path: '/admin/reviews', label: 'Отзывы', icon: Star },
- { path: '/admin/users', label: 'Пользователи', icon: Users },
- { path: '/admin/info', label: 'Информация', icon: FileText }
-];
-
-export function AdminSidebar() {
- const location = useLocation();
-
- return (
-
- );
-}
diff --git a/Untitled/src/app/components/layout/Header.tsx b/Untitled/src/app/components/layout/Header.tsx
deleted file mode 100644
index c725fb0..0000000
--- a/Untitled/src/app/components/layout/Header.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import { Link } from 'react-router';
-import { ShoppingCart, User, Menu, Search } from 'lucide-react';
-
-interface HeaderProps {
- cartCount?: number;
-}
-
-export function Header({ cartCount = 0 }: HeaderProps) {
- return (
-
-
-
-
-
-
Craftshop
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {cartCount > 0 && (
-
- {cartCount}
-
- )}
-
-
-
-
-
-
-
- );
-}
diff --git a/Untitled/src/app/components/ui/EmptyState.tsx b/Untitled/src/app/components/ui/EmptyState.tsx
deleted file mode 100644
index 8f92274..0000000
--- a/Untitled/src/app/components/ui/EmptyState.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { ReactNode } from 'react';
-
-interface EmptyStateProps {
- icon?: ReactNode;
- title: string;
- description?: string;
- action?: ReactNode;
-}
-
-export function EmptyState({ icon, title, description, action }: EmptyStateProps) {
- return (
-
- {icon &&
{icon}
}
-
{title}
- {description &&
{description}
}
- {action &&
{action}
}
-
- );
-}
diff --git a/Untitled/src/app/components/ui/accordion.tsx b/Untitled/src/app/components/ui/accordion.tsx
deleted file mode 100644
index bd6b1e3..0000000
--- a/Untitled/src/app/components/ui/accordion.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as AccordionPrimitive from "@radix-ui/react-accordion";
-import { ChevronDownIcon } from "lucide-react";
-
-import { cn } from "./utils";
-
-function Accordion({
- ...props
-}: React.ComponentProps) {
- return ;
-}
-
-function AccordionItem({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AccordionTrigger({
- className,
- children,
- ...props
-}: React.ComponentProps) {
- return (
-
- svg]:rotate-180",
- className,
- )}
- {...props}
- >
- {children}
-
-
-
- );
-}
-
-function AccordionContent({
- className,
- children,
- ...props
-}: React.ComponentProps) {
- return (
-
- {children}
-
- );
-}
-
-export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
diff --git a/Untitled/src/app/components/ui/alert-dialog.tsx b/Untitled/src/app/components/ui/alert-dialog.tsx
deleted file mode 100644
index 875b8df..0000000
--- a/Untitled/src/app/components/ui/alert-dialog.tsx
+++ /dev/null
@@ -1,157 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
-
-import { cn } from "./utils";
-import { buttonVariants } from "./button";
-
-function AlertDialog({
- ...props
-}: React.ComponentProps) {
- return ;
-}
-
-function AlertDialogTrigger({
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AlertDialogPortal({
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AlertDialogOverlay({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AlertDialogContent({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
-
-
-
- );
-}
-
-function AlertDialogHeader({
- className,
- ...props
-}: React.ComponentProps<"div">) {
- return (
-
- );
-}
-
-function AlertDialogFooter({
- className,
- ...props
-}: React.ComponentProps<"div">) {
- return (
-
- );
-}
-
-function AlertDialogTitle({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AlertDialogDescription({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AlertDialogAction({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AlertDialogCancel({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-export {
- AlertDialog,
- AlertDialogPortal,
- AlertDialogOverlay,
- AlertDialogTrigger,
- AlertDialogContent,
- AlertDialogHeader,
- AlertDialogFooter,
- AlertDialogTitle,
- AlertDialogDescription,
- AlertDialogAction,
- AlertDialogCancel,
-};
diff --git a/Untitled/src/app/components/ui/alert.tsx b/Untitled/src/app/components/ui/alert.tsx
deleted file mode 100644
index 9c35976..0000000
--- a/Untitled/src/app/components/ui/alert.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import * as React from "react";
-import { cva, type VariantProps } from "class-variance-authority";
-
-import { cn } from "./utils";
-
-const alertVariants = cva(
- "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
- {
- variants: {
- variant: {
- default: "bg-card text-card-foreground",
- destructive:
- "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",
- },
- },
- defaultVariants: {
- variant: "default",
- },
- },
-);
-
-function Alert({
- className,
- variant,
- ...props
-}: React.ComponentProps<"div"> & VariantProps) {
- return (
-
- );
-}
-
-function AlertTitle({ className, ...props }: React.ComponentProps<"div">) {
- return (
-
- );
-}
-
-function AlertDescription({
- className,
- ...props
-}: React.ComponentProps<"div">) {
- return (
-
- );
-}
-
-export { Alert, AlertTitle, AlertDescription };
diff --git a/Untitled/src/app/components/ui/aspect-ratio.tsx b/Untitled/src/app/components/ui/aspect-ratio.tsx
deleted file mode 100644
index c16d6bc..0000000
--- a/Untitled/src/app/components/ui/aspect-ratio.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-"use client";
-
-import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
-
-function AspectRatio({
- ...props
-}: React.ComponentProps) {
- return ;
-}
-
-export { AspectRatio };
diff --git a/Untitled/src/app/components/ui/avatar.tsx b/Untitled/src/app/components/ui/avatar.tsx
deleted file mode 100644
index c990451..0000000
--- a/Untitled/src/app/components/ui/avatar.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as AvatarPrimitive from "@radix-ui/react-avatar";
-
-import { cn } from "./utils";
-
-function Avatar({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AvatarImage({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AvatarFallback({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-export { Avatar, AvatarImage, AvatarFallback };
diff --git a/Untitled/src/app/components/ui/badge.tsx b/Untitled/src/app/components/ui/badge.tsx
deleted file mode 100644
index 60172a5..0000000
--- a/Untitled/src/app/components/ui/badge.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { ReactNode } from 'react';
-
-interface BadgeProps {
- children: ReactNode;
- variant?: 'default' | 'primary' | 'success' | 'warning' | 'destructive';
- className?: string;
-}
-
-export function Badge({ children, variant = 'default', className = '' }: BadgeProps) {
- const variantClasses = {
- default: 'bg-muted text-foreground',
- primary: 'bg-primary text-primary-foreground',
- success: 'bg-success text-success-foreground',
- warning: 'bg-accent text-accent-foreground',
- destructive: 'bg-destructive text-destructive-foreground'
- };
-
- return (
-
- {children}
-
- );
-}
diff --git a/Untitled/src/app/components/ui/breadcrumb.tsx b/Untitled/src/app/components/ui/breadcrumb.tsx
deleted file mode 100644
index 8f84d7e..0000000
--- a/Untitled/src/app/components/ui/breadcrumb.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import * as React from "react";
-import { Slot } from "@radix-ui/react-slot";
-import { ChevronRight, MoreHorizontal } from "lucide-react";
-
-import { cn } from "./utils";
-
-function Breadcrumb({ ...props }: React.ComponentProps<"nav">) {
- return ;
-}
-
-function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">) {
- return (
-
- );
-}
-
-function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">) {
- return (
-
- );
-}
-
-function BreadcrumbLink({
- asChild,
- className,
- ...props
-}: React.ComponentProps<"a"> & {
- asChild?: boolean;
-}) {
- const Comp = asChild ? Slot : "a";
-
- return (
-
- );
-}
-
-function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">) {
- return (
-
- );
-}
-
-function BreadcrumbSeparator({
- children,
- className,
- ...props
-}: React.ComponentProps<"li">) {
- return (
- svg]:size-3.5", className)}
- {...props}
- >
- {children ?? }
-
- );
-}
-
-function BreadcrumbEllipsis({
- className,
- ...props
-}: React.ComponentProps<"span">) {
- return (
-
-
- More
-
- );
-}
-
-export {
- Breadcrumb,
- BreadcrumbList,
- BreadcrumbItem,
- BreadcrumbLink,
- BreadcrumbPage,
- BreadcrumbSeparator,
- BreadcrumbEllipsis,
-};
diff --git a/Untitled/src/app/components/ui/button.tsx b/Untitled/src/app/components/ui/button.tsx
deleted file mode 100644
index d4a5022..0000000
--- a/Untitled/src/app/components/ui/button.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import { ButtonHTMLAttributes, forwardRef } from 'react';
-
-interface ButtonProps extends ButtonHTMLAttributes {
- variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive';
- size?: 'sm' | 'md' | 'lg';
- fullWidth?: boolean;
-}
-
-export const Button = forwardRef(
- ({ variant = 'primary', size = 'md', fullWidth, className = '', children, ...props }, ref) => {
- const baseClasses = 'inline-flex items-center justify-center gap-2 transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed';
-
- const variantClasses = {
- primary: 'bg-primary text-primary-foreground hover:bg-primary-hover shadow-md hover:shadow-lg',
- secondary: 'bg-secondary text-secondary-foreground hover:bg-opacity-90 shadow-md hover:shadow-lg',
- outline: 'border-2 border-primary text-primary hover:bg-primary hover:text-primary-foreground',
- ghost: 'text-foreground hover:bg-muted',
- destructive: 'bg-destructive text-destructive-foreground hover:bg-opacity-90 shadow-md hover:shadow-lg'
- };
-
- const sizeClasses = {
- sm: 'px-3 py-1.5 text-sm rounded-lg',
- md: 'px-6 py-3 rounded-xl',
- lg: 'px-8 py-4 text-lg rounded-2xl'
- };
-
- const widthClass = fullWidth ? 'w-full' : '';
-
- return (
-
- );
- }
-);
-
-Button.displayName = 'Button';
diff --git a/Untitled/src/app/components/ui/calendar.tsx b/Untitled/src/app/components/ui/calendar.tsx
deleted file mode 100644
index ee7b73f..0000000
--- a/Untitled/src/app/components/ui/calendar.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-"use client";
-
-import * as React from "react";
-import { ChevronLeft, ChevronRight } from "lucide-react";
-import { DayPicker } from "react-day-picker";
-
-import { cn } from "./utils";
-import { buttonVariants } from "./button";
-
-function Calendar({
- className,
- classNames,
- showOutsideDays = true,
- ...props
-}: React.ComponentProps) {
- return (
- .day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md"
- : "[&:has([aria-selected])]:rounded-md",
- ),
- day: cn(
- buttonVariants({ variant: "ghost" }),
- "size-8 p-0 font-normal aria-selected:opacity-100",
- ),
- day_range_start:
- "day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground",
- day_range_end:
- "day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground",
- day_selected:
- "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
- day_today: "bg-accent text-accent-foreground",
- day_outside:
- "day-outside text-muted-foreground aria-selected:text-muted-foreground",
- day_disabled: "text-muted-foreground opacity-50",
- day_range_middle:
- "aria-selected:bg-accent aria-selected:text-accent-foreground",
- day_hidden: "invisible",
- ...classNames,
- }}
- components={{
- IconLeft: ({ className, ...props }) => (
-
- ),
- IconRight: ({ className, ...props }) => (
-
- ),
- }}
- {...props}
- />
- );
-}
-
-export { Calendar };
diff --git a/Untitled/src/app/components/ui/card.tsx b/Untitled/src/app/components/ui/card.tsx
deleted file mode 100644
index e069098..0000000
--- a/Untitled/src/app/components/ui/card.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ReactNode } from 'react';
-
-interface CardProps {
- children: ReactNode;
- className?: string;
- padding?: 'none' | 'sm' | 'md' | 'lg';
- hover?: boolean;
-}
-
-export function Card({ children, className = '', padding = 'md', hover = false }: CardProps) {
- const paddingClasses = {
- none: '',
- sm: 'p-4',
- md: 'p-6',
- lg: 'p-8'
- };
-
- const hoverClass = hover ? 'hover:shadow-lg transition-shadow duration-300' : '';
-
- return (
-
- {children}
-
- );
-}
diff --git a/Untitled/src/app/components/ui/carousel.tsx b/Untitled/src/app/components/ui/carousel.tsx
deleted file mode 100644
index bb5ab13..0000000
--- a/Untitled/src/app/components/ui/carousel.tsx
+++ /dev/null
@@ -1,241 +0,0 @@
-"use client";
-
-import * as React from "react";
-import useEmblaCarousel, {
- type UseEmblaCarouselType,
-} from "embla-carousel-react";
-import { ArrowLeft, ArrowRight } from "lucide-react";
-
-import { cn } from "./utils";
-import { Button } from "./button";
-
-type CarouselApi = UseEmblaCarouselType[1];
-type UseCarouselParameters = Parameters;
-type CarouselOptions = UseCarouselParameters[0];
-type CarouselPlugin = UseCarouselParameters[1];
-
-type CarouselProps = {
- opts?: CarouselOptions;
- plugins?: CarouselPlugin;
- orientation?: "horizontal" | "vertical";
- setApi?: (api: CarouselApi) => void;
-};
-
-type CarouselContextProps = {
- carouselRef: ReturnType[0];
- api: ReturnType[1];
- scrollPrev: () => void;
- scrollNext: () => void;
- canScrollPrev: boolean;
- canScrollNext: boolean;
-} & CarouselProps;
-
-const CarouselContext = React.createContext(null);
-
-function useCarousel() {
- const context = React.useContext(CarouselContext);
-
- if (!context) {
- throw new Error("useCarousel must be used within a ");
- }
-
- return context;
-}
-
-function Carousel({
- orientation = "horizontal",
- opts,
- setApi,
- plugins,
- className,
- children,
- ...props
-}: React.ComponentProps<"div"> & CarouselProps) {
- const [carouselRef, api] = useEmblaCarousel(
- {
- ...opts,
- axis: orientation === "horizontal" ? "x" : "y",
- },
- plugins,
- );
- const [canScrollPrev, setCanScrollPrev] = React.useState(false);
- const [canScrollNext, setCanScrollNext] = React.useState(false);
-
- const onSelect = React.useCallback((api: CarouselApi) => {
- if (!api) return;
- setCanScrollPrev(api.canScrollPrev());
- setCanScrollNext(api.canScrollNext());
- }, []);
-
- const scrollPrev = React.useCallback(() => {
- api?.scrollPrev();
- }, [api]);
-
- const scrollNext = React.useCallback(() => {
- api?.scrollNext();
- }, [api]);
-
- const handleKeyDown = React.useCallback(
- (event: React.KeyboardEvent) => {
- if (event.key === "ArrowLeft") {
- event.preventDefault();
- scrollPrev();
- } else if (event.key === "ArrowRight") {
- event.preventDefault();
- scrollNext();
- }
- },
- [scrollPrev, scrollNext],
- );
-
- React.useEffect(() => {
- if (!api || !setApi) return;
- setApi(api);
- }, [api, setApi]);
-
- React.useEffect(() => {
- if (!api) return;
- onSelect(api);
- api.on("reInit", onSelect);
- api.on("select", onSelect);
-
- return () => {
- api?.off("select", onSelect);
- };
- }, [api, onSelect]);
-
- return (
-
-
- {children}
-
-
- );
-}
-
-function CarouselContent({ className, ...props }: React.ComponentProps<"div">) {
- const { carouselRef, orientation } = useCarousel();
-
- return (
-
- );
-}
-
-function CarouselItem({ className, ...props }: React.ComponentProps<"div">) {
- const { orientation } = useCarousel();
-
- return (
-
- );
-}
-
-function CarouselPrevious({
- className,
- variant = "outline",
- size = "icon",
- ...props
-}: React.ComponentProps) {
- const { orientation, scrollPrev, canScrollPrev } = useCarousel();
-
- return (
-
- );
-}
-
-function CarouselNext({
- className,
- variant = "outline",
- size = "icon",
- ...props
-}: React.ComponentProps) {
- const { orientation, scrollNext, canScrollNext } = useCarousel();
-
- return (
-
- );
-}
-
-export {
- type CarouselApi,
- Carousel,
- CarouselContent,
- CarouselItem,
- CarouselPrevious,
- CarouselNext,
-};
diff --git a/Untitled/src/app/components/ui/chart.tsx b/Untitled/src/app/components/ui/chart.tsx
deleted file mode 100644
index b49bc36..0000000
--- a/Untitled/src/app/components/ui/chart.tsx
+++ /dev/null
@@ -1,353 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as RechartsPrimitive from "recharts";
-
-import { cn } from "./utils";
-
-// Format: { THEME_NAME: CSS_SELECTOR }
-const THEMES = { light: "", dark: ".dark" } as const;
-
-export type ChartConfig = {
- [k in string]: {
- label?: React.ReactNode;
- icon?: React.ComponentType;
- } & (
- | { color?: string; theme?: never }
- | { color?: never; theme: Record }
- );
-};
-
-type ChartContextProps = {
- config: ChartConfig;
-};
-
-const ChartContext = React.createContext(null);
-
-function useChart() {
- const context = React.useContext(ChartContext);
-
- if (!context) {
- throw new Error("useChart must be used within a ");
- }
-
- return context;
-}
-
-function ChartContainer({
- id,
- className,
- children,
- config,
- ...props
-}: React.ComponentProps<"div"> & {
- config: ChartConfig;
- children: React.ComponentProps<
- typeof RechartsPrimitive.ResponsiveContainer
- >["children"];
-}) {
- const uniqueId = React.useId();
- const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
-
- return (
-
-
-
-
- {children}
-
-
-
- );
-}
-
-const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {
- const colorConfig = Object.entries(config).filter(
- ([, config]) => config.theme || config.color,
- );
-
- if (!colorConfig.length) {
- return null;
- }
-
- return (
-