ShadCN Projects


Beginners To Experts


The site is under development.

ShadCN Projects

<!-- Step 1: Install Node.js and npm -->
<!-- Download from https://nodejs.org and install on your machine -->

<!-- Step 2: Create a new Next.js project -->
npm create next-app@latest my-shadcn-app
<!-- This creates a new Next.js project folder named 'my-shadcn-app' -->

<!-- Step 3: Change directory to project folder -->
cd my-shadcn-app
<!-- Now inside your project directory -->

<!-- Step 4: Install shadcn/ui dependencies -->
npm install @shadcn/ui react react-dom next
<!-- This installs the UI library and React dependencies -->

<!-- Step 5: Initialize shadcn UI setup (example command) -->
npx shadcn-ui init
<!-- This generates the UI components and config files -->

<!-- Step 6: Start the development server -->
npm run dev
<!-- Your project will be available at http://localhost:3000 -->
      

Output:

  • Node.js and npm installed successfully.
  • Next.js project created as 'my-shadcn-app'.
  • shadcn UI dependencies installed.
  • Development server running at http://localhost:3000.

<!-- Basic Button component using shadcn UI -->
<button className="btn btn-primary">Click Me</button>
<!-- 
btn btn-primary are shadcn UI utility classes 
that style the button with primary color and hover effects 
-->
      

Output:

<!-- Card component example -->
<div className="card p-4 shadow-md">
  <h3>Card Title</h3>
  <p>This is a card component using shadcn styles.</p>
</div>

<!-- 
card: base card styling 
p-4: padding 1rem 
shadow-md: medium shadow for elevation 
-->
      

Output:

Card Title

This is a card component using shadcn styles.

<!-- Simple input form using shadcn styles -->
<form>
  <label htmlFor="name">Name:</label>
  <input id="name" type="text" className="input input-bordered" placeholder="Enter your name" />
  <button type="submit" className="btn btn-secondary mt-2">Submit</button>
</form>

<!-- 
input-bordered adds border styling 
btn btn-secondary styles button with secondary color 
mt-2 adds margin top for spacing 
-->
      

Output:



<!-- Modal example structure -->
<div className="modal">
  <div className="modal-box">
    <h3>Modal Title</h3>
    <p>This is a modal dialog using shadcn UI styles.</p>
    <button className="btn btn-primary">Close</button>
  </div>
</div>

<!-- 
modal and modal-box are shadcn UI classes for modal styling 
btn btn-primary styles the close button 
-->
      

Output (Static View):

Modal Title

This is a modal dialog using shadcn UI styles.

<!-- Simple navbar using shadcn UI -->
<nav className="navbar bg-base-100 p-3">
  <ul className="menu menu-horizontal">
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

<!-- 
menu menu-horizontal creates horizontal menu styling 
bg-base-100 sets background color 
p-3 adds padding 
-->
      

Output:

<!-- Badge example using shadcn UI styles -->
<span className="badge badge-primary">New</span>

<!-- 
badge adds small rounded label 
badge-primary styles it with primary color 
-->
      

Output:

New

<!-- Tooltip wrapper example -->
<div className="tooltip" data-tip="Tooltip text">
  <button className="btn btn-info">Hover me</button>
</div>

<!-- 
tooltip class provides tooltip styling 
data-tip attribute contains tooltip text 
btn btn-info styles button with info color 
-->
      

Output (hover not functional here):

<!-- Checkbox input example -->
<label className="flex items-center space-x-2">
  <input type="checkbox" className="checkbox checkbox-primary" />
  <span>Accept Terms</span>
</label>

<!-- 
checkbox and checkbox-primary provide checkbox styling 
flex and space-x-2 align items horizontally with spacing 
-->
      

Output:

<!-- Dropdown menu example -->
<div className="dropdown">
  <label tabIndex="0" className="btn m-1">Dropdown</label>
  <ul tabIndex="0" className="dropdown-content menu p-2 shadow bg-base-100 rounded-box w-52">
    <li><a href="#">Item 1</a></li>
    <li><a href="#">Item 2</a></li>
    <li><a href="#">Item 3</a></li>
  </ul>
</div>

<!-- 
dropdown and dropdown-content style dropdown menus 
menu styles menu list 
-->
      

Output (static):

<!-- Tabs example using shadcn styles -->
<div className="tabs">
  <a className="tab tab-active">Tab 1</a>
  <a className="tab">Tab 2</a>
  <a className="tab">Tab 3</a>
</div>

<!-- 
tabs: container for tabs 
tab: single tab styling 
tab-active highlights the active tab 
-->
      

Output:

Tab 1 Tab 2 Tab 3

<!-- Task Manager Dashboard using ShadCN UI -->
<pre>
// Import necessary UI components from shadcn
import { Card, CardContent, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";

// Define the TaskManager component
export default function TaskManager() {
const tasks = [
{ id: 1, title: "Finish Report", status: "In Progress" },
{ id: 2, title: "Call Client", status: "Pending" },
{ id: 3, title: "Update Website", status: "Completed" },
];

return (
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
{tasks.map((task) => (
<Card key={task.id} className="p-4">
<CardTitle>{task.title}</CardTitle>
<CardContent>
<p>Status: {task.status}</p>
<Button>Update</Button>
</CardContent>
</Card>
))}
</div>
);
}
</pre>

<!-- Create a conversational chatbot using shadcn UI -->
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
const Chatbot = () => {
const [message, setMessage] = useState("");
const [response, setResponse] = useState("");
const handleSend = () => {
// Simulate AI response
setResponse("Hi! This is an AI response to: " + message);
};
return (
<div>
<Input value={message} onChange={e => setMessage(e.target.value)} />
<Button onClick={handleSend}>Send</Button>
<p>{response}</p>
</div>
);
};

<!-- Auto-fill form fields based on context using AI -->
import { Input, Label } from "@/components/ui/input";
const AutoFillForm = () => {
const [name, setName] = useState("");
const handleAutoFill = () => {
// Simulated AI fill logic
setName("John Doe");
};
return (
<div>
<Label>Name</Label>
<Input value={name} onChange={e => setName(e.target.value)} />
<button onClick={handleAutoFill}>Auto-Fill</button>
</div>
);
};

<!-- Highlight input sentiment using AI and shadcn UI -->
import { Textarea } from "@/components/ui/textarea";
import { Badge } from "@/components/ui/badge";
const SentimentHighlighter = () => {
const [text, setText] = useState("");
const [sentiment, setSentiment] = useState("");
const analyzeSentiment = () => {
// Dummy AI sentiment detection
if (text.includes("happy") || text.includes("great")) {
setSentiment("Positive");
} else if (text.includes("sad") || text.includes("bad")) {
setSentiment("Negative");
} else {
setSentiment("Neutral");
}
};
return (
<div>
<Textarea value={text} onChange={e => setText(e.target.value)} />
<button onClick={analyzeSentiment}>Analyze Sentiment</button>
<Badge>{sentiment}</Badge>
</div>
);
};

<!-- Generate image captions using AI -->
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
const CaptionGenerator = () => {
const [imageUrl, setImageUrl] = useState("");
const [caption, setCaption] = useState("");
const generateCaption = () => {
setCaption("This is a caption for the given image.");
};
return (
<div>
<Input value={imageUrl} onChange={e => setImageUrl(e.target.value)} />
<Button onClick={generateCaption}>Generate</Button>
<p>{caption}</p>
</div>
);
};

<!-- Execute tasks based on voice commands using AI -->
import { Button } from "@/components/ui/button";
const VoiceCommand = () => {
const [command, setCommand] = useState("");
const [result, setResult] = useState("");
const executeCommand = () => {
setResult(`Executed: ${command}`);
};
return (
<div>
<Button onClick={() => setCommand("Open Email")}>Simulate Voice</Button>
<Button onClick={executeCommand}>Execute</Button>
<p>{result}</p>
</div>
);
};

<!-- Compose music with AI -->
import { useState } from 'react';
import { Button } from '@/components/ui/button';
const MusicComposer = () => {
const [composition, setComposition] = useState('');
const composeMusic = () => {
setComposition('A soothing piano melody generated by AI.');
};
return (
<div>
<Button onClick={composeMusic}>Compose Music</Button>
<p>{composition}</p>
</div>
);
};
export default MusicComposer;

<!-- Explain code snippets using AI -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const CodeExplainer = () => {
const [code, setCode] = useState('');
const [explanation, setExplanation] = useState('');
const explainCode = () => {
setExplanation('This code defines a React component that displays a button.');
};
return (
<div>
<Input placeholder="Paste code here" value={code} onChange={e => setCode(e.target.value)} />
<Button onClick={explainCode}>Explain</Button>
<pre>{explanation}</pre>
</div>
);
};
export default CodeExplainer;

<!-- Summarize text with AI -->
import { useState } from 'react';
import { Textarea } from '@/components/ui/textarea';
import { Button } from '@/components/ui/button';
const TextSummarizer = () => {
const [text, setText] = useState('');
const [summary, setSummary] = useState('');
const summarizeText = () => {
setSummary('This is a brief summary generated by AI.');
};
return (
<div>
<Textarea placeholder="Enter text here" value={text} onChange={e => setText(e.target.value)} />
<Button onClick={summarizeText}>Summarize</Button>
<blockquote>{summary}</blockquote>
</div>
);
};
export default TextSummarizer;

<!-- Simple AI Chatbot -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const Chatbot = () => {
const [message, setMessage] = useState('');
const [response, setResponse] = useState('');
const sendMessage = () => {
setResponse('Hello! How can I assist you today?');
};
return (
<div>
<Input placeholder="Type your message" value={message} onChange={e => setMessage(e.target.value)} />
<Button onClick={sendMessage}>Send</Button>
<p>{response}</p>
</div>
);
};
export default Chatbot;

<!-- Generate captions for images using AI -->
import { useState } from 'react';
import { Button } from '@/components/ui/button';
const ImageCaptioner = () => {
const [caption, setCaption] = useState('');
const generateCaption = () => {
setCaption('A beautiful sunset over the mountains.');
};
return (
<div>
<Button onClick={generateCaption}>Generate Caption</Button>
<p>{caption}</p>
</div>
);
};
export default ImageCaptioner;

<!-- Analyze sentiment of text using AI -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const SentimentAnalyzer = () => {
const [text, setText] = useState('');
const [sentiment, setSentiment] = useState('');
const analyzeSentiment = () => {
setSentiment('Positive sentiment detected.');
};
return (
<div>
<Input placeholder="Enter text" value={text} onChange={e => setText(e.target.value)} />
<Button onClick={analyzeSentiment}>Analyze</Button>
<div>{sentiment}</div>
</div>
);
};
export default SentimentAnalyzer;

<!-- Translate text between languages using AI -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const Translator = () => {
const [text, setText] = useState('');
const [translation, setTranslation] = useState('');
const translateText = () => {
setTranslation('Bonjour, ceci est une traduction générée par IA.');
};
return (
<div>
<Input placeholder="Enter text to translate" value={text} onChange={e => setText(e.target.value)} />
<Button onClick={translateText}>Translate</Button>
<div>{translation}</div>
</div>
);
};
export default Translator;

<!-- Generate images based on prompts using AI -->
import { useState } from 'react';
import { Button } from '@/components/ui/button';
const ImageGenerator = () => {
const [imageUrl, setImageUrl] = useState('');
const generateImage = () => {
setImageUrl('https://example.com/generated-image.png');
};
return (
<div>
<Button onClick={generateImage}>Generate Image</Button>
{imageUrl && <img src={imageUrl} alt="Generated AI" />}
</div>
);
};
export default ImageGenerator;

<!-- Classify documents automatically using AI -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const DocumentClassifier = () => {
const [docText, setDocText] = useState('');
const [category, setCategory] = useState('');
const classifyDocument = () => {
setCategory('Finance');
};
return (
<div>
<Input placeholder="Paste document text" value={docText} onChange={e => setDocText(e.target.value)} />
<Button onClick={classifyDocument}>Classify</Button>
<div>{category}</div>
</div>
);
};
export default DocumentClassifier;

<!-- Simple AI chatbot interface -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const Chatbot = () => {
const [messages, setMessages] = useState([]);
const [input, setInput] = useState('');
const sendMessage = () => {
setMessages([...messages, { text: input, fromUser: true }, { text: 'Hello! How can I help?', fromUser: false }]);
setInput('');
};
return (
<div>
<div>{messages.map((msg, i) => (
<p key={i} className={msg.fromUser ? 'user-msg' : 'bot-msg'}>{msg.text}</p>
))}</div>
<Input value={input} onChange={e => setInput(e.target.value)} />
<Button onClick={sendMessage}>Send</Button>
</div>
);
};
export default Chatbot;

<!-- Summarize long text using AI -->
import { useState } from 'react';
import { Textarea } from '@/components/ui/textarea';
import { Button } from '@/components/ui/button';
const Summarizer = () => {
const [text, setText] = useState('');
const [summary, setSummary] = useState('');
const summarizeText = () => {
setSummary('This is a short summary of the provided text.');
};
return (
<div>
<Textarea value={text} onChange={e => setText(e.target.value)} />
<Button onClick={summarizeText}>Summarize</Button>
<div>{summary}</div>
</div>
);
};
export default Summarizer;

<!-- Help generate code snippets using AI -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const CodeAssistant = () => {
const [query, setQuery] = useState('');
const [code, setCode] = useState('');
const generateCode = () => {
setCode('// Example generated code snippet');
};
return (
<div>
<Input placeholder="Describe what you need" value={query} onChange={e => setQuery(e.target.value)} />
<Button onClick={generateCode}>Generate</Button>
<pre>{code}</pre>
</div>
);
};
export default CodeAssistant;

<!-- Auto respond to emails using AI -->
import { useState } from 'react';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
const EmailResponder = () => {
const [email, setEmail] = useState('');
const [response, setResponse] = useState('');
const autoRespond = () => {
setResponse('Thank you for your email. We will get back to you shortly.');
};
return (
<div>
<Input placeholder="Enter email content" value={email} onChange={e => setEmail(e.target.value)} />
<Button onClick={autoRespond}>Auto-Respond</Button>
<div>{response}</div>
</div>
);
};
export default EmailResponder;

<!-- Simple AI voice assistant interface -->
import { useState } from 'react';
import { Button } from '@/components/ui/button';
const VoiceAssistant = () => {
const [response, setResponse] = useState('');
const listenAndRespond = () => {
setResponse('I heard you and here is the response.');
};
return (
<div>
<Button onClick={listenAndRespond}>Talk</Button>
<div>{response}</div>
</div>
);
};
export default VoiceAssistant;

<!-- Personalized news feed powered by AI -->
import { useState, useEffect } from 'react';
const NewsFeed = () => {
const [articles, setArticles] = useState([]);
useEffect(() => {
setArticles([
{ title: 'AI breakthrough in medicine' },
{ title: 'New AI model released' }
]);
}, []);
return (
<div>
{articles.map((article, i) => <div key={i}>{article.title}</div>)}
</div>
);
};
export default NewsFeed;

<!-- Transfer style of one image onto another using AI -->
import { useState } from 'react';
import { Button } from '@/components/ui/button';
const StyleTransfer = () => {
const [resultUrl, setResultUrl] = useState('');
const transferStyle = () => {
setResultUrl('https://example.com/styled-image.png');
};
return (
<div>
<Button onClick={transferStyle}>Apply Style</Button>
{resultUrl && <img src={resultUrl} alt="Styled Image" />}
</div>
);
};
export default StyleTransfer;

<!-- Suggest travel destinations based on user interests -->
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
const TravelRecommender = () => {
const [interest, setInterest] = useState("");
const [destination, setDestination] = useState("");
const recommend = () => {
setDestination("Try Bali for beaches and relaxation!");
};
return (
<div>
<Input value={interest} onChange={e => setInterest(e.target.value)} />
<Button onClick={recommend}>Recommend</Button>
<p>{destination}</p>
</div>
);
};

<!-- Provide supportive messages for mental wellness -->
import { Button } from "@/components/ui/button";
const MentalHealthBot = () => {
const [message, setMessage] = useState("");
const getSupport = () => {
setMessage("You are doing great! Take a deep breath.");
};
return (
<div>
<Button onClick={getSupport}>Get Support</Button>
<p>{message}</p>
</div>
);
};

<!-- Provide AI critique on uploaded artwork -->
import { Button } from "@/components/ui/button";
const ArtCritique = () => {
const [feedback, setFeedback] = useState("");
const critique = () => {
setFeedback("Strong use of color, but work on perspective.");
};
return (
<div>
<Button onClick={critique}>Critique My Art</Button>
<p>{feedback}</p>
</div>
);
};

<!-- Enhance resume content using AI suggestions -->
import { Textarea } from "@/components/ui/textarea";
import { Button } from "@/components/ui/button";
const ResumeEnhancer = () => {
const [resume, setResume] = useState("");
const [enhanced, setEnhanced] = useState("");
const enhanceResume = () => {
setEnhanced("Enhanced version of your resume.");
};
return (
<div>
<Textarea value={resume} onChange={e => setResume(e.target.value)} />
<Button onClick={enhanceResume}>Enhance</Button>
<p>{enhanced}</p>
</div>
);
};

<!-- Check possible conditions based on symptoms using AI -->
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
const SymptomChecker = () => {
const [symptom, setSymptom] = useState("");
const [diagnosis, setDiagnosis] = useState("");
const checkSymptom = () => {
setDiagnosis("You may be experiencing a common cold.");
};
return (
<div>
<Input value={symptom} onChange={e => setSymptom(e.target.value)} />
<Button onClick={checkSymptom}>Check</Button>
<p>{diagnosis}</p>
</div>
);
};

<!-- Suggest investments based on AI analysis -->
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
const InvestmentAdvisor = () => {
const [goal, setGoal] = useState("");
const [advice, setAdvice] = useState("");
const getAdvice = () => {
setAdvice("Consider investing in index funds.");
};
return (
<div>
<Input value={goal} onChange={e => setGoal(e.target.value)} />
<Button onClick={getAdvice}>Get Advice</Button>
<p>{advice}</p>
</div>
);
};

<!-- Plan a travel itinerary using AI -->
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
const TravelPlanner = () => {
const [destination, setDestination] = useState("");
const [plan, setPlan] = useState("");
const planTrip = () => {
setPlan("Visit Eiffel Tower, Louvre, and Seine River.");
};
return (
<div>
<Input value={destination} onChange={e => setDestination(e.target.value)} />
<Button onClick={planTrip}>Plan</Button>
<p>{plan}</p>
</div>
);
};

<!-- Help with homework solutions using AI -->
import { Textarea } from "@/components/ui/textarea";
import { Button } from "@/components/ui/button";
const HomeworkHelper = () => {
const [question, setQuestion] = useState("");
const [solution, setSolution] = useState("");
const solveHomework = () => {
setSolution("Here is a helpful explanation and solution.");
};
return (
<div>
<Textarea value={question} onChange={e => setQuestion(e.target.value)} />
<Button onClick={solveHomework}>Solve</Button>
<p>{solution}</p>
</div>
);
};