- {/* Font Size Buttons */}
- {/* Language Selector */}
);
diff --git a/client/src/components/components/FeatureShowcase.jsx b/client/src/components/components/FeatureShowcase.jsx
new file mode 100644
index 0000000..5cb0316
--- /dev/null
+++ b/client/src/components/components/FeatureShowcase.jsx
@@ -0,0 +1,360 @@
+"use client"
+
+import { useState, useEffect, useRef } from "react"
+import { Code, MessageSquare, Play, Terminal, Zap } from 'lucide-react'
+
+const FeatureShowcase = () => {
+ const [activeFeature, setActiveFeature] = useState(0)
+ const [isHovering, setIsHovering] = useState(false)
+ const showcaseRef = useRef(null)
+
+ // Auto-rotate features every 6 seconds unless user is hovering
+ useEffect(() => {
+ if (isHovering) return
+
+ const interval = setInterval(() => {
+ setActiveFeature((prev) => (prev === 2 ? 0 : prev + 1))
+ }, 6000)
+
+ return () => clearInterval(interval)
+ }, [isHovering])
+
+ const features = [
+ {
+ id: 0,
+ title: "Select Interview",
+ description: "Choose from a variety of LeetCode problems to practice",
+ icon:
,
+ color: "from-emerald-500 to-teal-500",
+ textColor: "text-emerald-400",
+ bgColor: "bg-emerald-500/10",
+ borderColor: "border-emerald-500/30"
+ },
+ {
+ id: 1,
+ title: "AI Code Feedback",
+ description: "Get instant feedback on your code quality and approach",
+ icon:
,
+ color: "from-blue-500 to-cyan-500",
+ textColor: "text-blue-400",
+ bgColor: "bg-blue-500/10",
+ borderColor: "border-blue-500/30"
+ },
+ {
+ id: 2,
+ title: "Test & Submit",
+ description: "Run your code against test cases and submit solutions",
+ icon:
,
+ color: "from-purple-500 to-pink-500",
+ textColor: "text-purple-400",
+ bgColor: "bg-purple-500/10",
+ borderColor: "border-purple-500/30"
+ },
+ ]
+
+ return (
+
setIsHovering(true)}
+ onMouseLeave={() => setIsHovering(false)}
+ >
+
+
+ {features.map((feature) => (
+
+ ))}
+
+
+
+
+
+
+
+ {features.map((feature) => (
+
+ {feature.id === 0 && (
+
+
+
+
+
+ Select Interview
+
+
+
+
+
+ $
+ meetcode --select-problem
+
+
+
+
Available Problems:
+
+
+
Easy
+
+
Two Sum
+
Array, Hash Table
+
+
+
+
+
+
Med
+
+
Add Two Numbers
+
Linked List, Math
+
+
+
+
+
+
Hard
+
+
Median of Two Sorted Arrays
+
Array, Binary Search
+
+
+
+
+
+
+
+ $
+ _
+
+
+
+ )}
+
+ {feature.id === 1 && (
+
+
+
+
+
+ AI Feedback
+
+
two_sum.py
+
+
+
+
+
+
1
+
def two_sum(nums, target):
+
+
+
2
+
# Brute force approach
+
+
+
3
+
for i in range(len(nums)):
+
+
+
4
+
for j in range(i + 1, len(nums)):
+
+
+
5
+
if nums[i] + nums[j] == target:
+
+
+
+
+
8
+
# Time Complexity: O(n²)
+
+
+
9
+
# Space Complexity: O(1)
+
+
+
+
+
+
Performance Issue
+
The highlighted code uses a nested loop approach with O(n²) time complexity. This can be inefficient for large input arrays.
+
+
+
+
Suggested Improvement
+
Consider using a hash map to achieve O(n) time complexity:
+
+
def two_sum(nums, target):
+
num_map = {}
+
for i, num in enumerate(nums):
+
complement = target - num
+
if complement in num_map:
+
return [num_map[complement], i]
+
+
+
+
+
Interview Tip
+
Always discuss the time and space complexity trade-offs. The hash map approach uses O(n) extra space but improves time complexity to O(n).
+
+
+
+
+ )}
+
+ {feature.id === 2 && (
+
+
+
+
+
+
+
1
+
def two_sum(nums, target):
+
+
+
+
3
+
for i, num in enumerate(nums):
+
+
+
4
+
complement = target - num
+
+
+
5
+
if complement in num_map:
+
+
+
6
+
return [num_map[complement], i]
+
+
+
+
+
+
10
+
print(two_sum([2, 7, 11, 15], 9))
+
+
+
11
+
print(two_sum([3, 2, 4], 6))
+
+
+
+
+
+
$ python two_sum.py
+
[0, 1]
+
[1, 2]
+
Process completed with exit code 0
+
+
+
+
+
All Tests Passed
+
+ Runtime:
+ 36 ms (faster than 92%)
+
+
+ Memory:
+ 14.2 MB (better than 85%)
+
+
+
+
+
+
+
+
+ )}
+
+ ))}
+
+
+
+
+
+ {features.map((feature) => (
+
+
+
+ )
+}
+
+export default FeatureShowcase
diff --git a/client/src/components/components/InteractiveTabs.jsx b/client/src/components/components/InteractiveTabs.jsx
index 84e8296..97a0a36 100644
--- a/client/src/components/components/InteractiveTabs.jsx
+++ b/client/src/components/components/InteractiveTabs.jsx
@@ -1,69 +1,139 @@
-import React, { useState } from 'react';
+"use client"
+
+import { useState, useEffect } from "react"
+import { Code, MessageSquare, Play } from 'lucide-react'
const InteractiveTabs = () => {
- const [activeTab, setActiveTab] = useState(0);
-
+ const [activeTab, setActiveTab] = useState(0)
+ const [isHovering, setIsHovering] = useState(false)
+
+ // auto rotates tabs every 8 seconds unless user is hovering
+ useEffect(() => {
+ if (isHovering) return
+
+ const interval = setInterval(() => {
+ setActiveTab((prev) => (prev === 2 ? 0 : prev + 1))
+ }, 8000)
+
+ return () => clearInterval(interval)
+ }, [isHovering])
+
const tabs = [
- "Solve LeetCode Questions Directly",
- "Compile Code",
- "Discuss Highlighted Code"
- ];
+ {
+ id: 0,
+ title: "Select Interview",
+ description: "Solve LeetCode Questions Directly",
+ icon:
,
+ color: "from-emerald-500 to-teal-500",
+ textColor: "text-emerald-400",
+ borderColor: "border-emerald-500",
+ videoSrc: "ScreenRecording1.mov",
+ },
+ {
+ id: 1,
+ title: "Discuss Highlighted Code",
+ description: "Get AI feedback on your code",
+ icon:
,
+ color: "from-blue-500 to-cyan-500",
+ textColor: "text-blue-400",
+ borderColor: "border-blue-500",
+ videoSrc: "ScreenRecording2.mov",
+ },
+ {
+ id: 2,
+ title: "Compile Code",
+ description: "Test your solutions instantly",
+ icon:
,
+ color: "from-purple-500 to-pink-500",
+ textColor: "text-purple-400",
+ borderColor: "border-purple-500",
+ videoSrc: "ScreenRecording3.mov",
+ },
+ ]
return (
-
-
-
setActiveTab(0)} className={`transition-all duration-300 cursor-pointer h-full w-full border-r-1 border-b-1 border-white/10 flex justify-center items-center text-center px-3 ${activeTab === 0 ? 'bg-white/5 text-white' : 'hover:bg-white/5 text-white/60'}`}>Select
Interview
-
setActiveTab(1)} className={`transition-all duration-300 cursor-pointer h-full w-full border-r-1 border-b-1 border-white/10 flex justify-center items-center text-center px-3 ${activeTab === 1 ? 'bg-white/5 text-white' : 'hover:bg-white/5 text-white/60'}`}>Discuss
Highlighted Code
-
setActiveTab(2)} className={`transition-all duration-300 cursor-pointer h-full w-full border-r-1 border-b-1 border-white/10 flex justify-center items-center text-center px-3 ${activeTab === 2 ? 'bg-white/5 text-white' : 'hover:bg-white/5 text-white/60'}`}>Compile
Code
+
setIsHovering(true)}
+ onMouseLeave={() => setIsHovering(false)}
+ >
+
+
+ {tabs.map((tab) => (
+
+ ))}
+
-
-
- {activeTab === 0 && (
-
-
-
- )}
- {activeTab === 1 && (
-
-
-
- )}
- {activeTab === 2 && (
-
-
+
+
+
+
+
+ {tabs.map((tab) => (
+
+
+
+
+
+
+
+
+
+ {tab.icon}
+ {tab.title}
+
+
+
+
+ {tab.description}
+
+
+
- )}
+ ))}
+
+
+
+
+
+ {tabs.map((tab) => (
+
- );
-};
+ )
+}
-export default InteractiveTabs;
+export default InteractiveTabs;
\ No newline at end of file
diff --git a/client/src/components/components/MuteButton.jsx b/client/src/components/components/MuteButton.jsx
index e1bb896..bc7d078 100644
--- a/client/src/components/components/MuteButton.jsx
+++ b/client/src/components/components/MuteButton.jsx
@@ -130,7 +130,6 @@ const MuteButton = ({ hasStarted, averageVolume, startRecording, stopRecording,
)}
- {/* Mute Overlay */}
{showOverlay && (
- {/* Bars */}
{barMultipliers.map((multiplier, i) => (
@@ -167,7 +163,6 @@ const MuteButton = ({ hasStarted, averageVolume, startRecording, stopRecording,
- {/* Mute/Unmute Button */}