(sectionsRef.current[1] = el)}
- >
-
+ {/* Features Section */}
+
(sectionsRef.current[1] = el)}
+ >
+
+
+
Why Choose Our Roadmaps
+
+ Our carefully designed roadmaps will guide you through your tech journey with clear steps and resources.
+
+
+
+
+
+
+
Curated Resources
+
+ Hand-picked learning resources tested and approved by industry professionals.
+
+
+
+
+
+
Community Support
+
+ Join a community of like-minded individuals on similar journeys.
+
+
+
+
+
+
Clear Progression
+
+ Step-by-step guidance from basics to advanced topics with practical challenges.
+
+
+
+
-
(sectionsRef.current[2] = el)}
- >
-
Testimonials
-
Coming soon...
+ {/* Featured Roadmaps Section */}
+
(sectionsRef.current[2] = el)}
+ >
+
+
+
+ {/* Testimonials (Coming Soon) */}
+
(sectionsRef.current[3] = el)}
+ >
+
+
Success Stories
+
+
+ "Testimonials from our successful community members coming soon... Join us and become one of our success stories!"
+
+
+
+ Learn more about our mission →
+
+
+
+
-
(sectionsRef.current[3] = el)}
- >
-
Join Our Community
-
- Connect with like-minded individuals, share your journey, and get
- support from our community.
+ {/* Call to Action */}
+ (sectionsRef.current[4] = el)}
+ >
+
+
Ready to Start Your Tech Journey?
+
+ Join our community today and get access to all our roadmaps, resources, and supportive network.
- Join Now
+ Join Our Community
+
-
-
+
);
};
-export default Home;
-
+export default Home;
\ No newline at end of file
diff --git a/src/components/MailingListDialog.jsx b/src/components/MailingListDialog.jsx
index b1340c8..73191a8 100644
--- a/src/components/MailingListDialog.jsx
+++ b/src/components/MailingListDialog.jsx
@@ -6,6 +6,50 @@ import DialogContentText from "@mui/material/DialogContentText";
import DialogTitle from "@mui/material/DialogTitle";
import Button from "@mui/material/Button";
import TextField from "@mui/material/TextField";
+import { createTheme, ThemeProvider } from '@mui/material/styles';
+
+// Create a custom theme that matches our design system
+const theme = createTheme({
+ palette: {
+ primary: {
+ main: '#22c55e', // primary-600 color
+ },
+ secondary: {
+ main: '#6366f1', // secondary-500 color
+ },
+ background: {
+ default: '#0f172a', // dark-900 color
+ paper: '#1e293b', // dark-800 color
+ },
+ text: {
+ primary: '#f8fafc',
+ secondary: '#94a3b8',
+ },
+ },
+ typography: {
+ fontFamily: 'Inter, system-ui, sans-serif',
+ },
+ shape: {
+ borderRadius: 8,
+ },
+ components: {
+ MuiButton: {
+ styleOverrides: {
+ root: {
+ textTransform: 'none',
+ fontWeight: 500,
+ },
+ },
+ },
+ MuiDialog: {
+ styleOverrides: {
+ paper: {
+ borderRadius: 12,
+ },
+ },
+ },
+ },
+});
const MailingListDialog = ({ open, onClose }) => {
const [name, setName] = useState("");
@@ -18,6 +62,19 @@ const MailingListDialog = ({ open, onClose }) => {
setError("");
setSuccess("");
+ // Basic validation
+ if (!name.trim() || !email.trim()) {
+ setError("Please fill in all fields");
+ return;
+ }
+
+ // Email validation
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ if (!emailRegex.test(email)) {
+ setError("Please enter a valid email address");
+ return;
+ }
+
const form = document.createElement("form");
form.action = "https://tech.us9.list-manage.com/subscribe/post";
form.method = "POST";
@@ -45,63 +102,141 @@ const MailingListDialog = ({ open, onClose }) => {
setSuccess("Thank you for subscribing!");
setName("");
setEmail("");
- onClose();
+
+ // Close the dialog after a short delay to allow user to see the success message
+ setTimeout(() => {
+ onClose();
+ }, 1500);
};
return (
-
- Join Our Mailing List
-
-
- Stay updated with the latest news and updates from Do Tech Bro.
-
- setName(e.target.value)}
- />
- setEmail(e.target.value)}
- />
-
- We promise not to sell your information or email you more than once or
- twice a month.
-
- {error && (
-
- {error}
+
+
+
+ Join Our Community
+
+
+
+
+ Get exclusive access to roadmaps, resources, and updates to accelerate your tech journey.
- )}
- {success && (
-
- {success}
+
+ setName(e.target.value)}
+ sx={{
+ mb: 2,
+ '& .MuiOutlinedInput-root': {
+ '& fieldset': {
+ borderColor: 'rgba(148, 163, 184, 0.2)',
+ },
+ '&:hover fieldset': {
+ borderColor: 'primary.main',
+ },
+ },
+ '& .MuiInputLabel-root': {
+ color: 'text.secondary',
+ },
+ '& .MuiInputBase-input': {
+ color: 'text.primary',
+ }
+ }}
+ />
+
+ setEmail(e.target.value)}
+ sx={{
+ mb: 2,
+ '& .MuiOutlinedInput-root': {
+ '& fieldset': {
+ borderColor: 'rgba(148, 163, 184, 0.2)',
+ },
+ '&:hover fieldset': {
+ borderColor: 'primary.main',
+ },
+ },
+ '& .MuiInputLabel-root': {
+ color: 'text.secondary',
+ },
+ '& .MuiInputBase-input': {
+ color: 'text.primary',
+ }
+ }}
+ />
+
+
+ We promise not to sell your information or email you more than once or
+ twice a month.
- )}
-
-
-
- Cancel
-
-
- Subscribe
-
-
-
+
+ {error && (
+
+ {error}
+
+ )}
+
+ {success && (
+
+ {success}
+
+ )}
+
+
+
+
+ Cancel
+
+
+
+ Subscribe
+
+
+
+
);
};
-export default MailingListDialog;
-
+export default MailingListDialog;
\ No newline at end of file
diff --git a/src/components/NotFound.jsx b/src/components/NotFound.jsx
index 0093105..79a7d3e 100644
--- a/src/components/NotFound.jsx
+++ b/src/components/NotFound.jsx
@@ -1,15 +1,47 @@
import { Link } from 'react-router-dom';
const NotFound = () => {
- return (
-
-
404
-
Oops! The page you're looking for doesn't exist.
-
- Go Back Home
-
+ return (
+
+
+
404
+
+
Page Not Found
+
+
+ Oops! The page you're looking for doesn't exist or has been moved to a different location.
+
+
+
+
+ Return Home
+
+
+
+ Explore Roadmaps
+
- );
+
+
+
+
+ );
};
export default NotFound;
\ No newline at end of file
diff --git a/src/components/Roadmap.jsx b/src/components/Roadmap.jsx
index 4d26941..73c9cdd 100644
--- a/src/components/Roadmap.jsx
+++ b/src/components/Roadmap.jsx
@@ -1,61 +1,145 @@
import { Outlet, useLocation, Link } from 'react-router-dom';
import challenges from '../challenges';
-import roadmaps from '../roadmaps.json'; // Import the roadmaps data
-import Accordion from './Accordion'; // Import the Accordion component
+import roadmaps from '../roadmaps.json';
+import Accordion from './Accordion';
const Roadmap = () => {
- const location = useLocation();
- const isRootPath = location.pathname === '/roadmap';
+ const location = useLocation();
+ const isRootPath = location.pathname === '/roadmap';
- return (
-
-
- Roadmaps
-
-
- Dive into our comprehensive roadmaps designed to illuminate your path into the tech industry. Each roadmap offers step-by-step guidance, tailored resources, and practical tips to help you navigate challenges and seize opportunities. Whether you’re just starting out or looking to advance your career, these roadmaps are your essential tools for success. Let’s chart your course together!
-
+ return (
+
+ {isRootPath ? (
+ <>
+ {/* Hero Section */}
+
+
+
+
Tech Career Roadmaps
+
+ Structured pathways to help you navigate your journey into tech, with step-by-step guidance
+ and curated resources tailored for minorities entering the industry.
+
+
+
+
+
- {isRootPath && (
- <>
-
+ {/* Challenges Section */}
+
+
+
+
Common Challenges
+
+ We understand the unique obstacles minorities face when entering tech.
+ Here's how our roadmaps address these challenges.
+
+
+
+
+
-
-
-
Available Roadmaps
-
- {roadmaps.map((roadmap, index) => (
-
-
{roadmap.title}
-
{roadmap.description}
-
- ))}
-
+ {/* Roadmaps Section */}
+
+
+
Available Roadmaps
+
+ Select a roadmap that aligns with your interests and goals. Each provides a clear path
+ from beginner to professional.
+
+
+
+ {roadmaps.map((roadmap, index) => (
+
+
+
+
+ {roadmap.title}
+
+
{roadmap.description}
+
+ {['Beginner-Friendly', 'Step-by-Step', 'Resource Links'].map((tag, i) => (
+
+ {tag}
+
+ ))}
+
-
-
-
More Roadmaps Coming Soon
-
- We’re excited to share that we’re actively developing additional roadmaps to guide you on your tech journey. These resources are designed to empower you, providing clear paths and actionable steps tailored to your goals. Keep an eye out for updates—your future in tech is bright, and we’re here to support you every step of the way!
-
+
+
+ ))}
+
+
+
-
-
Open Source Collaboration
-
- These roadmaps are open source and we welcome collaboration from the community. Feel free to contribute and help us improve these resources.
-
-
- Contribute Now
-
+ {/* Coming Soon Section */}
+
+
+
+
More Roadmaps Coming Soon
+
+
+
+ We're actively developing additional roadmaps for various tech roles including:
+
+
+ Cloud Engineering
+ Machine Learning & AI
+ Product Management
+ Cybersecurity
+ Mobile App Development
+
+
+ Subscribe to our newsletter to get notified when new roadmaps are released.
+
+
+
+
+
+
+
- {!isRootPath &&
}
-
- );
+ {/* Contribute Section */}
+
+
+
Open Source Collaboration
+
+ These roadmaps are open source and we welcome contributions from the community.
+ Help us improve these resources for everyone.
+
+
+
+ Contribute on GitHub
+
+
+
+
+ >
+ ) : (
+
+ )}
+
+ );
};
export default Roadmap;
\ No newline at end of file
diff --git a/src/components/RoadmapDetail.jsx b/src/components/RoadmapDetail.jsx
index 83b3204..8c4113b 100644
--- a/src/components/RoadmapDetail.jsx
+++ b/src/components/RoadmapDetail.jsx
@@ -1,16 +1,243 @@
// src/components/RoadmapDetail.jsx
-import React from 'react';
-import { useParams } from 'react-router-dom';
+import React, { useState, useEffect } from 'react';
+import { useParams, Link } from 'react-router-dom';
+import roadmaps from '../roadmaps.json';
const RoadmapDetail = () => {
- const { id } = useParams();
+ const { id } = useParams();
+ const [roadmap, setRoadmap] = useState(null);
+ const [activeStep, setActiveStep] = useState(0);
+ useEffect(() => {
+ // Find the roadmap with the matching id
+ const foundRoadmap = roadmaps.find(r => r.id === id);
+ if (foundRoadmap) {
+ setRoadmap(foundRoadmap);
+ }
+ }, [id]);
+
+ if (!roadmap) {
return (
-
-
Roadmap Detail: {id}
-
Details for roadmap {id} will be displayed here.
-
+
+
Roadmap Not Found
+
We couldn't find the roadmap you're looking for.
+
+ View All Roadmaps
+
+
);
+ }
+
+ // Mock data for steps (this would come from the roadmap data in a real implementation)
+ const steps = [
+ {
+ title: "Getting Started",
+ description: "Begin your journey by understanding the fundamentals and setting up your learning environment.",
+ content: `
+ Welcome to your tech journey! This first phase is all about building a solid foundation. You'll get familiar with key concepts, tools, and start building habits that will serve you throughout your career.
+ Key Objectives:
+
+ Understand the field and career opportunities
+ Set up your development environment
+ Learn the fundamental concepts
+ Build your first small projects
+
+ `,
+ resources: [
+ { title: "Free Code Camp", url: "https://www.freecodecamp.org/" },
+ { title: "The Odin Project", url: "https://www.theodinproject.com/" },
+ { title: "MDN Web Docs", url: "https://developer.mozilla.org/" }
+ ]
+ },
+ {
+ title: "Building Skills",
+ description: "Develop core technical skills and start working on meaningful projects.",
+ content: `
+ Now that you have the basics down, it's time to deepen your knowledge and start applying what you've learned to more complex problems and projects.
+ Key Objectives:
+
+ Master core programming concepts
+ Learn industry-standard tools and frameworks
+ Build a portfolio of projects
+ Practice problem-solving skills
+
+ `,
+ resources: [
+ { title: "LeetCode", url: "https://leetcode.com/" },
+ { title: "GitHub Learning Lab", url: "https://lab.github.com/" },
+ { title: "Codecademy", url: "https://www.codecademy.com/" }
+ ]
+ },
+ {
+ title: "Professional Development",
+ description: "Prepare for the job market and develop professional skills.",
+ content: `
+ Technical skills are just one part of a successful tech career. In this phase, you'll focus on the professional aspects of working in tech and prepare for your job search.
+ Key Objectives:
+
+ Create a professional resume and online presence
+ Develop interview skills (technical and behavioral)
+ Build your network and find mentors
+ Learn about industry practices and workflows
+
+ `,
+ resources: [
+ { title: "Tech Interview Handbook", url: "https://www.techinterviewhandbook.org/" },
+ { title: "LinkedIn Learning", url: "https://www.linkedin.com/learning/" },
+ { title: "AngelList", url: "https://angel.co/jobs" }
+ ]
+ },
+ {
+ title: "Landing Your First Role",
+ description: "Strategies for job searching and excelling in your first position.",
+ content: `
+ This is where all your hard work comes together. You'll apply for jobs, go through interviews, and start your professional journey in tech.
+ Key Objectives:
+
+ Develop an effective job search strategy
+ Prepare for technical and behavioral interviews
+ Evaluate job offers and negotiate compensation
+ Plan for success in your first 90 days
+
+ `,
+ resources: [
+ { title: "Hired", url: "https://hired.com/" },
+ { title: "Glassdoor", url: "https://www.glassdoor.com/" },
+ { title: "Blind", url: "https://www.teamblind.com/" }
+ ]
+ }
+ ];
+
+ return (
+
+ {/* Roadmap Header */}
+
+
+
+
+
+ Back to Roadmaps
+
+
{roadmap.title}
+
{roadmap.description}
+
+
+ {/* Progress Indicator */}
+
+
+
+
+ {steps.map((step, index) => (
+ setActiveStep(index)}
+ className={`flex items-center justify-center w-12 h-12 rounded-full text-lg font-bold ${
+ index === activeStep
+ ? 'bg-primary-500 text-white shadow-lg'
+ : index < activeStep
+ ? 'bg-primary-800 text-primary-200'
+ : 'bg-dark-600 text-gray-400'
+ } transition-all duration-300`}
+ >
+ {index + 1}
+
+ ))}
+
+
+
+ {steps.map((step, index) => (
+
+
{step.title}
+
+ ))}
+
+
+
+ {/* Active Step Content */}
+
+
+
+
{steps[activeStep].title}
+
{steps[activeStep].description}
+
+
+
+
+
Recommended Resources
+
+
+
+
+
+
+ {/* Navigation Buttons */}
+
+
setActiveStep(Math.max(0, activeStep - 1))}
+ disabled={activeStep === 0}
+ className={`flex items-center px-6 py-3 rounded-lg transition-colors ${
+ activeStep === 0
+ ? 'bg-dark-700 text-gray-500 cursor-not-allowed'
+ : 'bg-dark-700 hover:bg-dark-600 text-white'
+ }`}
+ >
+
+
+
+ Previous Step
+
+
+
setActiveStep(Math.min(steps.length - 1, activeStep + 1))}
+ disabled={activeStep === steps.length - 1}
+ className={`flex items-center px-6 py-3 rounded-lg transition-colors ${
+ activeStep === steps.length - 1
+ ? 'bg-dark-700 text-gray-500 cursor-not-allowed'
+ : 'bg-primary-600 hover:bg-primary-700 text-white'
+ }`}
+ >
+ Next Step
+
+
+
+
+
+
+ {/* Community Support Section */}
+
+
Need Support?
+
+ Join our community to connect with mentors and peers who are on similar journeys.
+ Get answers to your questions and share your progress.
+
+
+ Join Our Community
+
+
+
+ );
};
export default RoadmapDetail;
\ No newline at end of file
diff --git a/src/index.css b/src/index.css
index 6119ad9..a05d43a 100644
--- a/src/index.css
+++ b/src/index.css
@@ -4,65 +4,184 @@
font-weight: 400;
color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #242424;
+ color: rgba(255, 255, 255, 0.95);
+ background-color: #0f172a;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
+
+ /* Base typography scale */
+ --font-size-xs: 0.75rem;
+ --font-size-sm: 0.875rem;
+ --font-size-base: 1rem;
+ --font-size-lg: 1.125rem;
+ --font-size-xl: 1.25rem;
+ --font-size-2xl: 1.5rem;
+ --font-size-3xl: 1.875rem;
+ --font-size-4xl: 2.25rem;
+ --font-size-5xl: 3rem;
+
+ /* Spacing scale */
+ --spacing-0: 0;
+ --spacing-1: 0.25rem;
+ --spacing-2: 0.5rem;
+ --spacing-3: 0.75rem;
+ --spacing-4: 1rem;
+ --spacing-6: 1.5rem;
+ --spacing-8: 2rem;
+ --spacing-12: 3rem;
+ --spacing-16: 4rem;
+
+ /* Colors */
+ --color-primary: #22c55e;
+ --color-primary-dark: #15803d;
+ --color-primary-light: #4ade80;
+ --color-secondary: #6366f1;
+ --color-secondary-dark: #4338ca;
+ --color-secondary-light: #818cf8;
+ --color-dark: #0f172a;
+ --color-dark-lighter: #1e293b;
+ --color-gray: #64748b;
+ --color-gray-light: #94a3b8;
}
a {
font-weight: 500;
- color: #646cff;
+ color: var(--color-secondary);
text-decoration: inherit;
+ transition: color 0.2s ease;
}
+
a:hover {
- color: #535bf2;
+ color: var(--color-secondary-light);
}
body {
margin: 0;
display: flex;
- place-items: center;
+ flex-direction: column;
min-width: 320px;
min-height: 100vh;
+ overflow-x: hidden;
+ background-color: var(--color-dark);
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin-top: 0;
+ font-weight: 700;
+ line-height: 1.2;
}
h1 {
- font-size: 3.2em;
- line-height: 1.1;
+ font-size: var(--font-size-4xl);
+ margin-bottom: var(--spacing-6);
+}
+
+h2 {
+ font-size: var(--font-size-3xl);
+ margin-bottom: var(--spacing-4);
+}
+
+h3 {
+ font-size: var(--font-size-2xl);
+ margin-bottom: var(--spacing-3);
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: var(--spacing-4);
}
button {
- border-radius: 8px;
+ border-radius: 0.5rem;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
- background-color: #1a1a1a;
+ background-color: var(--color-dark-lighter);
cursor: pointer;
- transition: border-color 0.25s;
+ transition: all 0.2s ease;
}
+
button:hover {
- border-color: #646cff;
+ border-color: var(--color-primary);
+ background-color: rgba(34, 197, 94, 0.1);
}
+
button:focus,
button:focus-visible {
- outline: 4px auto -webkit-focus-ring-color;
+ outline: 2px solid var(--color-primary);
+ outline-offset: 2px;
+}
+
+/* Custom utility classes */
+.container {
+ width: 100%;
+ max-width: 1280px;
+ margin: 0 auto;
+ padding: 0 1rem;
+}
+
+.btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.5rem 1.5rem;
+ font-weight: 500;
+ border-radius: 0.5rem;
+ transition: all 0.2s ease;
+}
+
+.btn-primary {
+ background-color: var(--color-primary);
+ color: #fff;
+}
+
+.btn-primary:hover {
+ background-color: var(--color-primary-dark);
+}
+
+.btn-secondary {
+ background-color: var(--color-secondary);
+ color: #fff;
+}
+
+.btn-secondary:hover {
+ background-color: var(--color-secondary-dark);
+}
+
+.btn-outline {
+ background-color: transparent;
+ border: 1px solid var(--color-primary);
+ color: var(--color-primary);
+}
+
+.btn-outline:hover {
+ background-color: var(--color-primary);
+ color: #fff;
}
@media (prefers-color-scheme: light) {
:root {
- color: #213547;
- background-color: #ffffff;
+ color: #334155;
+ background-color: #f8fafc;
+
+ --color-dark: #f8fafc;
+ --color-dark-lighter: #f1f5f9;
}
- a:hover {
- color: #747bff;
+
+ body {
+ background-color: #f8fafc;
}
+
button {
- background-color: #f9f9f9;
+ background-color: #e2e8f0;
+ }
+
+ button:hover {
+ background-color: rgba(34, 197, 94, 0.1);
}
}
diff --git a/tailwind.config.js b/tailwind.config.js
index dc2471f..b52f742 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -6,9 +6,116 @@ export default {
],
theme: {
extend: {
+ colors: {
+ primary: {
+ 50: '#f0fdf4',
+ 100: '#dcfce7',
+ 200: '#bbf7d0',
+ 300: '#86efac',
+ 400: '#4ade80',
+ 500: '#22c55e',
+ 600: '#16a34a',
+ 700: '#15803d',
+ 800: '#166534',
+ 900: '#14532d',
+ 950: '#052e16',
+ },
+ secondary: {
+ 50: '#eef2ff',
+ 100: '#e0e7ff',
+ 200: '#c7d2fe',
+ 300: '#a5b4fc',
+ 400: '#818cf8',
+ 500: '#6366f1',
+ 600: '#4f46e5',
+ 700: '#4338ca',
+ 800: '#3730a3',
+ 900: '#312e81',
+ 950: '#1e1b4b',
+ },
+ dark: {
+ 50: '#f9fafb',
+ 100: '#f3f4f6',
+ 200: '#e5e7eb',
+ 300: '#d1d5db',
+ 400: '#9ca3af',
+ 500: '#6b7280',
+ 600: '#4b5563',
+ 700: '#374151',
+ 800: '#1f2937',
+ 900: '#111827',
+ 950: '#030712',
+ },
+ },
fontFamily: {
+ sans: ['Inter', 'system-ui', 'sans-serif'],
inter: ['Inter', 'sans-serif'],
},
+ fontSize: {
+ xs: ['0.75rem', { lineHeight: '1rem' }],
+ sm: ['0.875rem', { lineHeight: '1.25rem' }],
+ base: ['1rem', { lineHeight: '1.5rem' }],
+ lg: ['1.125rem', { lineHeight: '1.75rem' }],
+ xl: ['1.25rem', { lineHeight: '1.75rem' }],
+ '2xl': ['1.5rem', { lineHeight: '2rem' }],
+ '3xl': ['1.875rem', { lineHeight: '2.25rem' }],
+ '4xl': ['2.25rem', { lineHeight: '2.5rem' }],
+ '5xl': ['3rem', { lineHeight: '1.16' }],
+ '6xl': ['3.75rem', { lineHeight: '1.16' }],
+ },
+ spacing: {
+ '0': '0',
+ '1': '0.25rem',
+ '2': '0.5rem',
+ '3': '0.75rem',
+ '4': '1rem',
+ '5': '1.25rem',
+ '6': '1.5rem',
+ '8': '2rem',
+ '10': '2.5rem',
+ '12': '3rem',
+ '16': '4rem',
+ '20': '5rem',
+ '24': '6rem',
+ '32': '8rem',
+ '40': '10rem',
+ '48': '12rem',
+ '56': '14rem',
+ '64': '16rem',
+ '72': '18rem',
+ '80': '20rem',
+ '96': '24rem',
+ },
+ borderRadius: {
+ 'none': '0',
+ 'sm': '0.125rem',
+ DEFAULT: '0.25rem',
+ 'md': '0.375rem',
+ 'lg': '0.5rem',
+ 'xl': '0.75rem',
+ '2xl': '1rem',
+ '3xl': '1.5rem',
+ 'full': '9999px',
+ },
+ boxShadow: {
+ sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
+ DEFAULT: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
+ md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
+ lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
+ xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',
+ '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
+ inner: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)',
+ none: 'none',
+ },
+ animation: {
+ 'dropdown': 'dropdown 0.3s ease-in-out',
+ },
+ keyframes: {
+ dropdown: {
+ '0%': { opacity: 0, transform: 'translateY(-10px)' },
+ '100%': { opacity: 1, transform: 'translateY(0)' },
+ },
+ },
},
},
plugins: [],