diff --git a/app/page.tsx b/app/page.tsx index 4913d3a..4ae92f8 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect, useRef } from 'react' import { Button } from "@/components/ui/button" -import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Tooltip, TooltipContent, @@ -18,7 +18,7 @@ import { NavigationMenuTrigger, navigationMenuTriggerStyle, } from "@/components/ui/navigation-menu" -import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover" +import MovingGradient from "@/components/animata/background/moving-gradient"; import { Search, Zap, @@ -34,10 +34,10 @@ import { Server, Palette, Cpu, - ChevronDown, - Check, Menu, - X + X, + BarChart, + CircleDot } from "lucide-react" import NextLink from "next/link" import { @@ -53,6 +53,41 @@ import { cn } from '@/lib/utils'; import { Tweet } from 'react-tweet' import Image from 'next/image'; +function BentoCard({ + title, + icon: Icon, + description, + children, + gradient, + className, +}: { + title: string; + icon: React.ElementType; + description: string; + children?: React.ReactNode; + gradient?: string; + className?: string; +}) { + return ( + +
+
+
+ +

{title}

+
+
+
{description}
+ {children} +
+
+ ); +} + const TestimonialSection: React.FC = () => { const tweetIds = [ "1825543755748782500", @@ -121,58 +156,113 @@ const TestimonialSection: React.FC = () => { ); }; -const AboutUsSection: React.FC = () => { - const aboutPoints = [ - { - icon: Search, - title: "Minimalistic Search", - description: "We strip away the clutter to focus on what matters most - delivering accurate and relevant results." - }, - { - icon: Code, - title: "AI-Powered", - description: "Leveraging cutting-edge AI technology to understand and respond to your queries with precision." - }, - { - icon: Zap, - title: "Lightning Fast", - description: "Designed for speed, MiniPerplx provides instant answers to keep up with your pace of work." - } - ]; - +function GetStarted() { return ( -
+ +
+
Try
+
MiniPerplx
+ +
+ +
+
+
+
+ + ); +} + +function MinimalisticSearch() { + return ( + +
+
+ + Clean interface +
+
+ + Focused results +
+
+ + Distraction-free +
+
+
+ ); +} + +function AIPowered() { + return ( + +
+
+ Natural Language +
+
+
+
+
+ Context Understanding +
+
+
+
+
+ Adaptive Learning +
+
+
+
+
+
+ ); +} + +function LightningFast() { + return ( + + ); +} + +const AboutUsSection: React.FC = () => { + return ( +
- -

- About MiniPerplx -

-

- MiniPerplx is reimagining the way you search and interact with information online. -

-
-
- {aboutPoints.map((point, index) => ( - - - - -

{point.title}

-

{point.description}

-
-
-
- ))} +

+ About MiniPerplx +

+
+ + + +
@@ -551,7 +641,7 @@ const LandingPage: React.FC = () => { { icon: Globe, title: "Web Search", description: "Powered by Tavily AI for comprehensive web results." }, { icon: Code, title: "Code Interpreter", description: "Utilize e2b.dev for advanced code interpretation and execution." }, { icon: Cloud, title: "Weather Forecast", description: "Get accurate weather information via OpenWeatherMap." }, - { icon: Link, title: "URL Summary", description: "Summarize web content quickly with Jina AI Reader." }, + { icon: Link, title: "URL Summary", description: "Summarize web content quickly with FireCrawl." }, { icon: MapPin, title: "Location Search", description: "Find places and nearby locations using Google Maps API." }, { icon: Mic, title: "Translation & TTS", description: "Translate text and convert to speech with OpenAI TTS." }, ] diff --git a/components/animata/background/moving-gradient.tsx b/components/animata/background/moving-gradient.tsx new file mode 100644 index 0000000..416fe8e --- /dev/null +++ b/components/animata/background/moving-gradient.tsx @@ -0,0 +1,34 @@ +import { ComponentPropsWithoutRef } from "react"; + +import { cn } from "@/lib/utils"; + +interface MovingGradientProps extends ComponentPropsWithoutRef<"div"> { + animated?: boolean; + gradientClassName?: string; +} + +export default function MovingGradient({ + children, + className, + animated = true, + gradientClassName, + ...props +}: MovingGradientProps) { + const backgroundClassName = "pointer-events-none absolute h-full w-full"; + return ( +
+
+
+ {children} +
+ ); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0040583..d97b1b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2099,7 +2099,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.2 dev: false /busboy@1.6.0: @@ -4590,8 +4590,8 @@ packages: whatwg-url: 5.0.0 dev: false - /node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + /node-gyp-build@4.8.2: + resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} hasBin: true dev: false @@ -5924,7 +5924,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.2 dev: false /util-deprecate@1.0.2: diff --git a/tailwind.config.ts b/tailwind.config.ts index e137e18..d2bfc56 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -72,6 +72,10 @@ const config = { from: { height: "var(--radix-accordion-content-height)" }, to: { height: "0" }, }, + "bg-position": { + "0%": { backgroundPosition: "0% 50%" }, + "100%": { backgroundPosition: "100% 50%" }, + }, }, animation: { "accordion-down": "accordion-down 0.2s ease-out",