diff --git a/attached_assets/Pasted-Here-s-a-high-to-medium-level-outline-formatted-roadmap-for-turning-your-existing-embeddinggemma-30-1757473542795_1757473542795.txt b/attached_assets/Pasted-Here-s-a-high-to-medium-level-outline-formatted-roadmap-for-turning-your-existing-embeddinggemma-30-1757473542795_1757473542795.txt deleted file mode 100644 index 0cbb6cf670b4752b511d29c29fc4a88212e16bff..0000000000000000000000000000000000000000 --- a/attached_assets/Pasted-Here-s-a-high-to-medium-level-outline-formatted-roadmap-for-turning-your-existing-embeddinggemma-30-1757473542795_1757473542795.txt +++ /dev/null @@ -1,82 +0,0 @@ -Here’s a high-to-medium-level, outline-formatted roadmap for turning your existing embeddinggemma-300m setup into a unified CLI tool powered by Phi-2. No code snippets—just clear steps and gap-checks. - -1. Define Your Modular Surface -Embedder - -Uses google/embeddinggemma-300m to turn text into vectors - -Retriever - -Indexes and searches embeddings (e.g., FAISS or Chroma) - -Generator - -Runs Phi-2 (2.7 B) for response generation based on retrieved context - -CLI - -Ties everything together with a command-line interface (e.g., Typer) - -2. Prepare Your Conda Environment -Confirm sentence-transformers and transformers are installed - -Add your vector store library (FAISS/Chroma) - -Install any quantization/runtime helpers for Phi-2 (GGUF, bitsandbytes, etc.) - -Allocate model cache paths under your project (e.g., ./models/) - -3. Acquire and Optimize Phi-2 -Download the Phi-2 weights from Hugging Face or Azure AI Studio - -Quantize to Q4/Q5 to fit within ~6–8 GB of RAM on your i5/16 GB rig - -Validate loading speed and memory footprint in isolation before integration - -4. Sketch Your Data Flow -User Input: typed command + query text - -Embedding: call Gemma → vector - -Retrieval: query vector → top-k document vectors - -Context Assembly: stitch retrieved snippets - -Generation: feed context + user prompt into Phi-2 → text answer - -Output: print or save response - -5. Fill Logic Holes -You need a vector store backend; plain in-memory lists won’t scale - -Chunk larger documents before embedding (e.g., 500 token windows) - -Watch Phi-2’s context window (typically ~2 K tokens) and trim if needed - -Plan caching: don’t re-embed the same files on every run - -Design a config file for model paths, thresholds, and CLI defaults - -6. Organize Your Directory -Code -gemma-phi2-cli/ -├── models/ -│ ├── embeddinggemma-300m/ -│ └── phi2-quantized/ -├── data/ -│ └── index/ # FAISS/Chroma files -├── src/ -│ ├── embedder.py # wraps Gemma -│ ├── retriever.py # builds & queries index -│ ├── generator.py # wraps Phi-2 -│ └── cli.py # Typer entry point -├── config.yaml # model locations, hyperparams -└── README.md -7. Plan Your CLI Commands -init → create or update index from a target directory - -search → semantic lookup, returns file names + scores - -ask → retrieval + generation in one step - -serve → optional local API for integrations \ No newline at end of file diff --git a/client/index.html b/client/index.html deleted file mode 100644 index 0d05af327082f583ac298ab6103296eee7a0b3fd..0000000000000000000000000000000000000000 --- a/client/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - -
- - - - - \ No newline at end of file diff --git a/client/src/App.tsx b/client/src/App.tsx deleted file mode 100644 index 77bf6836b1417ccae1192042eb5c545a33cfeef6..0000000000000000000000000000000000000000 --- a/client/src/App.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Switch, Route } from "wouter"; -import { queryClient } from "./lib/queryClient"; -import { QueryClientProvider } from "@tanstack/react-query"; -import { Toaster } from "@/components/ui/toaster"; -import { TooltipProvider } from "@/components/ui/tooltip"; -import Dashboard from "./pages/dashboard"; -import NotFound from "@/pages/not-found"; - -function Router() { - return ( - - - - - ); -} - -function App() { - return ( - - -
- - -
-
-
- ); -} - -export default App; diff --git a/client/src/components/sections/commands.tsx b/client/src/components/sections/commands.tsx deleted file mode 100644 index d0ec8e141721a1de916a463f04f1d2e42b53d947..0000000000000000000000000000000000000000 --- a/client/src/components/sections/commands.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { Card } from "@/components/ui/card"; -import { TerminalComponent } from "@/components/ui/terminal"; -import { Terminal, Play, Settings } from "lucide-react"; - -export function CommandsSection() { - const coreCommands = [ - { - command: "gemma-phi2-cli init [path]", - description: "Initialize or update index from target directory", - color: "text-accent" - }, - { - command: "gemma-phi2-cli search [query]", - description: "Semantic lookup returning file names and scores", - color: "text-accent" - }, - { - command: "gemma-phi2-cli ask [question]", - description: "Retrieval + generation in one step", - color: "text-accent" - }, - { - command: "gemma-phi2-cli serve", - description: "Launch local API server for integrations", - color: "text-accent" - }, - { - command: "gemma-phi2-cli commit [--preview|--apply]", - description: "Generate commit messages from staged changes", - color: "text-accent" - }, - { - command: "gemma-phi2-cli commit --dry-run", - description: "Show file count, chunks, and token estimates", - color: "text-accent" - } - ]; - - const utilityCommands = [ - { - command: "gemma-phi2-cli status", - description: "Show current configuration and model status", - color: "text-accent" - }, - { - command: "gemma-phi2-cli config [key] [value]", - description: "Get or set configuration parameters", - color: "text-accent" - }, - { - command: "gemma-phi2-cli clear", - description: "Clear vector store and cached embeddings", - color: "text-accent" - }, - { - command: "gemma-phi2-cli --help", - description: "Display detailed help and usage examples", - color: "text-accent" - }, - { - command: "gemma-phi2-cli commit --preview", - description: "Preview generated commit message without applying", - color: "text-accent" - }, - { - command: "gemma-phi2-cli config --list-presets", - description: "Show available commit style presets", - color: "text-accent" - } - ]; - - return ( -
-

CLI Commands

- -
- - -
- -

- - Core Commands -

-
- {coreCommands.map((cmd, index) => ( - -
- {cmd.command} -
-
{cmd.description}
-
- ))} -
-
- - -

- - Utility Commands -

-
- {utilityCommands.map((cmd, index) => ( - -
- {cmd.command} -
-
{cmd.description}
-
- ))} -
-
-
-
-
- ); -} diff --git a/client/src/components/sections/configuration.tsx b/client/src/components/sections/configuration.tsx deleted file mode 100644 index ce9166bc213ac62598e8cf38092ad33a76978d85..0000000000000000000000000000000000000000 --- a/client/src/components/sections/configuration.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { Card } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { FileCode, Edit, Save } from "lucide-react"; - -export function ConfigurationSection() { - const configContent = `# Gemma-Phi2-CLI Configuration -models: - embedder: - path: "./models/embeddinggemma-300m" - batch_size: 32 - device: "cpu" - generator: - path: "./models/phi2-quantized.gguf" - quantization: "Q4_0" - max_tokens: 2048 - temperature: 0.7 - format: "gguf" - -embedding: - dim: 768 - truncate_to: 128 - sentence_transformers: true - -vector_store: - type: "faiss" - index_path: "./data/index" - persistence: true - -retrieval: - top_k: 5 - similarity_threshold: 0.75 - rerank: false - -performance: - cache_embeddings: true - chunk_size: 500 - chunk_overlap: 50 - -commit: - tone: "imperative" - style: "conventional" # Options: conventional | descriptive | terse - max_length: 72 - preview_by_default: true - fallback_enabled: true - dry_run_default: false - -logging: - level: "INFO" - file: "./logs/gemma-phi2.log" - verbose: true - telemetry: false - rotate_logs: true - -environment: - conda_env: "gemma-phi2-cli" - python_version: "3.10" - platform: "windows"`; - - return ( -
-

Configuration Management

- - -
-

- - config.yaml -

-
- - -
-
-
-
-
- {configContent.split('\n').map((line, index) => { - let className = ''; - if (line.trim().startsWith('#')) { - className = 'comment'; - } else if (line.includes(':') && !line.trim().startsWith(' ')) { - className = 'keyword'; - } else if (line.includes('"')) { - className = 'string'; - } - - return ( -
- {line || '\u00A0'} -
- ); - })} -
-
-
-
-
- ); -} \ No newline at end of file diff --git a/client/src/components/sections/deployment.tsx b/client/src/components/sections/deployment.tsx deleted file mode 100644 index e0a48fd178739f761924c03e5f5b4590add18350..0000000000000000000000000000000000000000 --- a/client/src/components/sections/deployment.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { Card } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { Progress } from "@/components/ui/progress"; -import { Server, Download, Rocket } from "lucide-react"; - -export function DeploymentSection() { - const systemRequirements = [ - { label: "CPU", value: "Intel i5+ / AMD Ryzen 5+" }, - { label: "RAM", value: "16 GB minimum" }, - { label: "Storage", value: "10 GB+ SSD" }, - { label: "Platform", value: "Windows 11 (primary)" }, - { label: "Python", value: "3.10 (Conda managed)" }, - { label: "Models", value: "CPU-only execution" } - ]; - - const installationSteps = [ - { name: "Conda Environment", progress: 100, status: "✓ Complete", color: "bg-green-400" }, - { name: "sentence-transformers", progress: 100, status: "✓ Complete", color: "bg-green-400" }, - { name: "FAISS + Typer + PyYAML", progress: 100, status: "✓ Complete", color: "bg-green-400" }, - { name: "EmbeddingGemma-300m", progress: 75, status: "⟳ Downloading", color: "bg-yellow-400" }, - { name: "Phi-2 GGUF (Q4_0)", progress: 0, status: "⏳ Pending", color: "bg-muted" } - ]; - - const quickStartSteps = [ - { - number: 1, - title: "Conda Setup", - commands: ["conda env create -f environment.yml", "conda activate gemma-phi2-cli", "pip install -e ."], - color: "bg-primary" - }, - { - number: 2, - title: "Model Download", - commands: ["python download_models.py", "# Downloads EmbeddingGemma + Phi-2 GGUF"], - color: "bg-accent" - }, - { - number: 3, - title: "CLI Usage", - commands: ["gemma-phi2-cli init ./my-project", "git add .", "gemma-phi2-cli commit --preview"], - color: "bg-green-400" - } - ]; - - return ( -
-

Deployment & Setup

- -
- {/* System Requirements */} - -

- - System Requirements -

-
- {systemRequirements.map((req, index) => ( -
- {req.label} - - {req.value} - -
- ))} -
-
- - {/* Installation Progress */} - -

- - Installation Progress -

-
- {installationSteps.map((step, index) => ( -
-
- {step.name} - - {step.status} - -
- -
- ))} -
-
-
- - {/* Quick Start Guide */} - -

- - Quick Start Guide -

-
- {quickStartSteps.map((step, index) => ( -
-
- {step.number} -
-

{step.title}

- - {step.commands.map((command, cmdIndex) => ( -
- {command} -
- ))} -
-
- ))} -
-
-
- ); -} diff --git a/client/src/components/sections/modules.tsx b/client/src/components/sections/modules.tsx deleted file mode 100644 index 3b951e8383f1d3718470a52bd21b57a5525eee9d..0000000000000000000000000000000000000000 --- a/client/src/components/sections/modules.tsx +++ /dev/null @@ -1,395 +0,0 @@ -import { Card } from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; -import { Badge } from "@/components/ui/badge"; -import { Brain, Search, Wand2, GitBranch, ChevronDown, CheckCircle, Clock } from "lucide-react"; -import { useState } from "react"; - -export function ModulesSection() { - const [expandedModules, setExpandedModules] = useState>(new Set(["embedder"])); - - const toggleModule = (moduleId: string) => { - const newExpanded = new Set(expandedModules); - if (newExpanded.has(moduleId)) { - newExpanded.delete(moduleId); - } else { - newExpanded.add(moduleId); - } - setExpandedModules(newExpanded); - }; - - return ( -
-

Module Configuration

- - {/* Embedder Module */} - -
-
-
- -

Embedder Module

- - Active - -
- -
-
- {expandedModules.has("embedder") && ( -
-
-
- - -
-
- - -
-
- -

- - Implementation Status -

-
-
- - Model loading interface -
-
- - Text preprocessing pipeline -
-
- - Batch processing optimization -
-
-
-
- )} -
- - {/* Retriever Module */} - -
-
-
- -

Retriever Module

- - Active - -
- -
-
- {expandedModules.has("retriever") && ( -
-
-
- - -
-
- - -
-
- - -
-
- -

Index Statistics

-
-
-
1,247
-
Documents
-
-
-
89,432
-
Embeddings
-
-
-
2.3GB
-
Index Size
-
-
-
-
- )} -
- - {/* DiffAnalyzer Module */} - -
-
-
- -

DiffAnalyzer Module

- - Active - -
- -
-
- {expandedModules.has("diffanalyzer") && ( -
-
-
- - -
-
- - -
-
- -

- - Git Integration -

-
-
- - Git diff parsing -
-
- - Staged changes detection -
-
- - Logical section chunking -
-
-
- -

- - Sample Diff Chunk -

-
-
diff --git a/src/embedder.py b/src/embedder.py
-
index 1a2b3c4..5d6e7f8 100644
-
--- a/src/embedder.py
-
+++ b/src/embedder.py
-
@@ -45,6 +45,12 @@ class Embedder:
-
- return self.model.encode(texts)
-
+ embeddings = self.model.encode(texts)
-
+ # Cache embeddings for faster retrieval
-
+ self._cache_embeddings(texts, embeddings)
-
+ return embeddings
-
-
-
- )} -
- - {/* Generator Module */} - -
-
-
- -

Generator Module

- - Loading - -
- -
-
- {expandedModules.has("generator") && ( -
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
- -

- - Commit Message Generation -

-
-
- - Conventional commit format -
-
- - Imperative tone enforcement -
-
- - Context-aware suggestions -
-
- - Fallback logic for model failures -
-
- - Style presets (conventional/descriptive/terse) -
-
-
-
- )} -
-
- ); -} diff --git a/client/src/components/sections/overview.tsx b/client/src/components/sections/overview.tsx deleted file mode 100644 index 403cac91efeb69f04c6e9733f9bc8130cb6b996b..0000000000000000000000000000000000000000 --- a/client/src/components/sections/overview.tsx +++ /dev/null @@ -1,154 +0,0 @@ -import { Card } from "@/components/ui/card"; -import { Badge } from "@/components/ui/badge"; -import { Brain, Search, Wand2, FolderTree, GitCommit } from "lucide-react"; - -export function OverviewSection() { - const features = [ - { - icon: Brain, - title: "EmbeddingGemma-300m", - description: "High-precision text embedding for semantic search", - color: "text-primary" - }, - { - icon: Search, - title: "FAISS Vector Store", - description: "Efficient similarity search and clustering", - color: "text-accent" - }, - { - icon: Wand2, - title: "Phi-2 Generator", - description: "2.7B parameter model for contextual responses", - color: "text-purple-400" - }, - { - icon: FolderTree, - title: "Commit Assistant", - description: "Git diff analysis and intelligent commit message generation", - color: "text-orange-400" - } - ]; - - const projectStructure = [ - { type: "folder", name: "gemma-phi2-cli/", level: 0 }, - { type: "folder", name: "models/", level: 1, badge: "AI Models" }, - { type: "folder", name: "embeddinggemma-300m/", level: 2 }, - { type: "folder", name: "phi2-quantized/", level: 2 }, - { type: "folder", name: "data/", level: 1 }, - { type: "folder", name: "index/", level: 2, badge: "Vector Store" }, - { type: "folder", name: "src/", level: 1 }, - { type: "file", name: "embedder.py", level: 2 }, - { type: "file", name: "retriever.py", level: 2 }, - { type: "file", name: "generator.py", level: 2 }, - { type: "file", name: "diff_analyzer.py", level: 2 }, - { type: "file", name: "cli.py", level: 2 }, - { type: "folder", name: "tests/", level: 1, badge: "Unit Tests" }, - { type: "file", name: "test_embedder.py", level: 2 }, - { type: "file", name: "test_retriever.py", level: 2 }, - { type: "file", name: "test_generator.py", level: 2 }, - { type: "folder", name: "examples/", level: 1, badge: "Sample Repo" }, - { type: "file", name: "sample_repo/", level: 2 }, - { type: "file", name: "config.yaml", level: 1 }, - { type: "file", name: "environment.yml", level: 1 }, - { type: "file", name: "README.md", level: 1 }, - ]; - - return ( -
-
-
-
-
-

Project Overview

-

- A seamless CLI assistant that combines EmbeddingGemma's precision with Phi-2's generative capabilities. -

-
- - v1.0.0 - -
- -
- {features.map((feature, index) => ( - -
- -

{feature.title}

-
-

{feature.description}

-
- ))} -
- - -

- - Data Flow Pipeline -

-
-
-
-
1
- Git Diff Analysis -
- diff_analyzer.py -
-
-
-
-
-
-
2
- Text Embedding -
- embedder.py -
-
-
-
-
-
-
3
- Context Retrieval -
- retriever.py -
-
-
-
-
-
-
4
- Message Generation -
- generator.py -
-
-
- - -

- - Project Structure -

-
- {projectStructure.map((item, index) => ( -
- - {item.name} - {item.badge && ( - - {item.badge} - - )} -
- ))} -
-
-
-
-
- ); -} diff --git a/client/src/components/ui/accordion.tsx b/client/src/components/ui/accordion.tsx deleted file mode 100644 index e6a723d06574ee5cec8b00759b98f3fbe1ac7cc9..0000000000000000000000000000000000000000 --- a/client/src/components/ui/accordion.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import * as React from "react" -import * as AccordionPrimitive from "@radix-ui/react-accordion" -import { ChevronDown } from "lucide-react" - -import { cn } from "@/lib/utils" - -const Accordion = AccordionPrimitive.Root - -const AccordionItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AccordionItem.displayName = "AccordionItem" - -const AccordionTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - svg]:rotate-180", - className - )} - {...props} - > - {children} - - - -)) -AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName - -const AccordionContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - -
{children}
-
-)) - -AccordionContent.displayName = AccordionPrimitive.Content.displayName - -export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } diff --git a/client/src/components/ui/alert-dialog.tsx b/client/src/components/ui/alert-dialog.tsx deleted file mode 100644 index 8722561cf6bda62d62f9a0c67730aefda971873a..0000000000000000000000000000000000000000 --- a/client/src/components/ui/alert-dialog.tsx +++ /dev/null @@ -1,139 +0,0 @@ -import * as React from "react" -import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" - -import { cn } from "@/lib/utils" -import { buttonVariants } from "@/components/ui/button" - -const AlertDialog = AlertDialogPrimitive.Root - -const AlertDialogTrigger = AlertDialogPrimitive.Trigger - -const AlertDialogPortal = AlertDialogPrimitive.Portal - -const AlertDialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName - -const AlertDialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - - -)) -AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName - -const AlertDialogHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-) -AlertDialogHeader.displayName = "AlertDialogHeader" - -const AlertDialogFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-) -AlertDialogFooter.displayName = "AlertDialogFooter" - -const AlertDialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName - -const AlertDialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogDescription.displayName = - AlertDialogPrimitive.Description.displayName - -const AlertDialogAction = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName - -const AlertDialogCancel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName - -export { - AlertDialog, - AlertDialogPortal, - AlertDialogOverlay, - AlertDialogTrigger, - AlertDialogContent, - AlertDialogHeader, - AlertDialogFooter, - AlertDialogTitle, - AlertDialogDescription, - AlertDialogAction, - AlertDialogCancel, -} diff --git a/client/src/components/ui/alert.tsx b/client/src/components/ui/alert.tsx deleted file mode 100644 index 41fa7e0561a3fdb5f986c1213a35e563de740e96..0000000000000000000000000000000000000000 --- a/client/src/components/ui/alert.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import * as React from "react" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const alertVariants = cva( - "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", - { - variants: { - variant: { - default: "bg-background text-foreground", - destructive: - "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", - }, - }, - defaultVariants: { - variant: "default", - }, - } -) - -const Alert = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes & VariantProps ->(({ className, variant, ...props }, ref) => ( -
-)) -Alert.displayName = "Alert" - -const AlertTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -AlertTitle.displayName = "AlertTitle" - -const AlertDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -AlertDescription.displayName = "AlertDescription" - -export { Alert, AlertTitle, AlertDescription } diff --git a/client/src/components/ui/aspect-ratio.tsx b/client/src/components/ui/aspect-ratio.tsx deleted file mode 100644 index c4abbf37f217c715a0eaade7f45ac78600df419f..0000000000000000000000000000000000000000 --- a/client/src/components/ui/aspect-ratio.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" - -const AspectRatio = AspectRatioPrimitive.Root - -export { AspectRatio } diff --git a/client/src/components/ui/avatar.tsx b/client/src/components/ui/avatar.tsx deleted file mode 100644 index 51e507ba9d08bcdbb1fb630498f1cbdf2bf50093..0000000000000000000000000000000000000000 --- a/client/src/components/ui/avatar.tsx +++ /dev/null @@ -1,50 +0,0 @@ -"use client" - -import * as React from "react" -import * as AvatarPrimitive from "@radix-ui/react-avatar" - -import { cn } from "@/lib/utils" - -const Avatar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -Avatar.displayName = AvatarPrimitive.Root.displayName - -const AvatarImage = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AvatarImage.displayName = AvatarPrimitive.Image.displayName - -const AvatarFallback = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName - -export { Avatar, AvatarImage, AvatarFallback } diff --git a/client/src/components/ui/badge.tsx b/client/src/components/ui/badge.tsx deleted file mode 100644 index f000e3ef5176395b067dfc3f3e1256a80c450015..0000000000000000000000000000000000000000 --- a/client/src/components/ui/badge.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import * as React from "react" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const badgeVariants = cva( - "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", - { - variants: { - variant: { - default: - "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", - secondary: - "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", - destructive: - "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", - outline: "text-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - } -) - -export interface BadgeProps - extends React.HTMLAttributes, - VariantProps {} - -function Badge({ className, variant, ...props }: BadgeProps) { - return ( -
- ) -} - -export { Badge, badgeVariants } diff --git a/client/src/components/ui/breadcrumb.tsx b/client/src/components/ui/breadcrumb.tsx deleted file mode 100644 index 60e6c96f72f0350d08b47e4730cab8f3975dc853..0000000000000000000000000000000000000000 --- a/client/src/components/ui/breadcrumb.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { ChevronRight, MoreHorizontal } from "lucide-react" - -import { cn } from "@/lib/utils" - -const Breadcrumb = React.forwardRef< - HTMLElement, - React.ComponentPropsWithoutRef<"nav"> & { - separator?: React.ReactNode - } ->(({ ...props }, ref) =>