Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -305,46 +305,46 @@ const UploadPage = () => {
};

return (
<div className="w-full max-w-2xl mx-auto px-4 pb-16 relative z-10">
<div className="w-full max-w-2xl mx-auto px-4 pb-6 relative z-10">
<OverlayLoader show={loadingState.isLoading} text={loadingState.message}
showProgress={loadingState.showProgress} duration={loadingState.duration} extra_info={loadingState.extra_info} />

{/* Step indicator */}
<div className="flex justify-center mb-10">
<div className="flex justify-center mb-5 md:mb-6">
<StepIndicator currentStep={step} totalSteps={3} />
</div>

{/* Wizard content */}
<div className="relative min-h-[420px]">
<div className="relative min-h-[380px]">
<AnimatePresence mode="wait" custom={direction}>
{/* ─── STEP 1: Topic & Attachments ─── */}
{step === 1 && (
<motion.div key="step1" custom={direction} variants={pageVariants}
initial="enter" animate="center" exit="exit" transition={pageTransition} className="w-full">
<div className="text-center mb-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-[#FEF2F2] border border-[#F25D6B]/15 text-[#F25D6B] text-xs font-semibold font-syne mb-4">
<div className="text-center mb-4 md:mb-5">
<div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-[#FEF2F2] border border-[#F25D6B]/15 text-[#F25D6B] text-xs font-semibold font-syne mb-2">
<FileText className="w-3.5 h-3.5" /> Step 1 of 3
</div>
<h2 className="text-3xl md:text-4xl font-unbounded font-normal text-gray-900 mb-3">
<h2 className="text-2xl md:text-3xl font-unbounded font-normal text-gray-900 mb-2">
What&apos;s your topic?
</h2>
<p className="text-gray-400 font-syne text-sm max-w-md mx-auto">
Describe your presentation topic or upload reference material to get started.
</p>
</div>

<div className="glass-card p-1 mb-4">
<div className="glass-card p-1 mb-3">
<textarea value={config.prompt} onChange={(e) => handleConfigChange("prompt", e.target.value)}
placeholder={animatedPlaceholder + "│"} rows={4} data-testid="prompt-input"
className="w-full bg-transparent text-gray-800 placeholder:text-gray-300 font-inter text-base p-5 resize-none focus:outline-none min-h-[140px] max-h-[240px] custom_scrollbar rounded-2xl"
placeholder={animatedPlaceholder + "│"} rows={3} data-testid="prompt-input"
className="w-full bg-transparent text-gray-800 placeholder:text-gray-300 font-inter text-base p-4 resize-none focus:outline-none min-h-[96px] max-h-[180px] custom_scrollbar rounded-2xl"
/>
</div>

<div className="glass-card p-5">
<div className="glass-card p-4">
<SupportingDoc files={[...files]} onFilesChange={setFiles} data-testid="file-upload-input" />
</div>

<div className="mt-8 flex justify-end">
<div className="mt-5 md:mt-6 flex justify-end">
<Button onClick={() => { if (validateStep1()) goNext(); }}
className="rounded-full px-8 py-5 bg-[#F25D6B] text-white font-syne font-semibold text-base hover:bg-[#E04A58] transition-all duration-300 btn-glow group">
Continue <ArrowRight className="!w-4 !h-4 ml-2 transition-transform group-hover:translate-x-1" />
Expand Down
10 changes: 4 additions & 6 deletions servers/nextjs/app/(presentation-generator)/upload/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ import React, { useState } from "react";
import { motion, AnimatePresence } from "framer-motion";
import UploadPage from "./components/UploadPage";
import UploadPageClassic from "./components/UploadPageClassic";
import Header from "@/app/(presentation-generator)/(dashboard)/dashboard/components/Header";
import { Layers, Zap } from "lucide-react";

const Page = () => {
const [isClassicUI, setIsClassicUI] = useState(false);

return (
<div className="relative min-h-screen bg-[#FAFAFA]">
<div className="relative min-h-screen bg-[#FAFAFA] overflow-x-hidden">
{/* Soft ambient glow at top */}
<div
className="fixed top-0 left-1/2 -translate-x-1/2 w-[900px] h-[400px] pointer-events-none z-0"
Expand All @@ -20,7 +19,6 @@ const Page = () => {
"radial-gradient(ellipse at center, rgba(242, 93, 107, 0.06) 0%, transparent 70%)",
}}
/>
<Header />

{/* UI toggle button — top right */}
<div className="fixed top-7 right-6 z-50">
Expand All @@ -44,11 +42,11 @@ const Page = () => {
</div>

{/* Hero */}
<div className="flex flex-col items-center justify-center mb-8 relative z-10">
<h1 className="text-[48px] md:text-[56px] font-normal font-unbounded gradient-text">
<div className="flex flex-col items-center justify-center pt-8 md:pt-10 mb-4 md:mb-5 relative z-10">
<h1 className="text-[38px] md:text-[48px] leading-tight font-normal font-unbounded gradient-text text-center px-4">
{isClassicUI ? "AI Presentation" : "Create a Presentation"}
</h1>
<p className="text-base font-syne text-gray-400">
<p className="text-sm md:text-base font-syne text-gray-400 mt-1 text-center px-4">
{isClassicUI
? "Choose a design, set preferences, and generate polished slides."
: "Three quick steps to a polished deck."}
Expand Down
Loading