File size: 5,811 Bytes
a1ddd34
 
fe029e8
a1ddd34
fe029e8
a1ddd34
 
 
 
 
 
fe029e8
a1ddd34
 
 
 
 
fe029e8
a1ddd34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fe029e8
a1ddd34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import { Film, Terminal, Sparkles, ChevronDown } from "lucide-react";

export function ProjectsGuide({ compact = false }: { compact?: boolean }) {
  return (
    <div className={compact ? "h-full overflow-y-auto p-4 space-y-5" : "max-w-2xl mx-auto p-8 space-y-8"}>
      {/* Header */}
      <div className="flex items-center gap-3">
        <div className="w-12 h-12 rounded-2xl bg-gradient-to-br from-violet-500 to-indigo-500 flex items-center justify-center shadow-lg shadow-violet-500/20 ring-1 ring-white/10">
          <Film className="w-6 h-6 text-white" />
        </div>
        <div>
          <h2 className={compact ? "text-lg font-bold tracking-tight" : "text-xl font-bold tracking-tight"}>Projects</h2>
          <p className="text-sm text-gray-500">Tell your AI agent what to make. It handles the rest.</p>
        </div>
      </div>

      {/* Core instruction */}
      <div className={compact ? "rounded-2xl border border-violet-600/20 bg-gradient-to-b from-violet-950/10 to-gray-900/20 p-4" : "rounded-2xl border border-violet-600/20 bg-gradient-to-b from-violet-950/10 to-gray-900/20 p-6"}>
        <div className="flex items-center gap-2 mb-4">
          <Terminal className="w-4 h-4 text-violet-400" />
          <span className="text-sm font-semibold text-violet-200">How it works</span>
        </div>
        <p className="text-sm text-gray-300 leading-relaxed mb-4">
          You talk to your AI agent like you'd talk to a person. Tell it what you want β€” the agent plans the scenes, picks the shots, generates the images, animates them, and stitches everything together. You just review and say yes or no.
        </p>
        <p className="text-xs text-gray-500">That's it. No settings. No config. Just talk.</p>
      </div>

      {/* Example prompts β€” simple natural language */}
      <div className="space-y-4">
        <h3 className="text-sm font-semibold text-gray-300 flex items-center gap-2">
          <Sparkles className="w-4 h-4 text-amber-400" />
          What to say to your agent
        </h3>

        {[
          {
            type: "Story video",
            say: "Make me a short cyberpunk teaser. Dark city, rain, neon lights. My character is walking through it, and at the end he gets a phone call that changes everything. About a minute long, cinematic style.",
          },
          {
            type: "Character image",
            say: "Create a 30-second montage of my character. Show different angles and expressions β€” serious, smiling, looking away. Studio lighting, clean background. I want to use these as profile pictures.",
          },
          {
            type: "Product demo",
            say: "I need a 45-second product walkthrough. Show my character using the app on their phone, then switching to a laptop, then reacting to the results on screen. Modern office setting, natural light.",
          },
          {
            type: "Social media reel",
            say: "Make me an Instagram reel β€” vertical format, quick cuts, high energy. My character doing everyday things in a cinematic way. Coffee, walking, looking at the skyline. 15 seconds.",
          },
          {
            type: "Anime short",
            say: "An anime-style short about a lone wanderer entering a haunted forest. Studio Ghibli vibes. About 45 seconds. Slow, atmospheric, beautiful.",
          },
          {
            type: "Kids' storybook",
            say: "A children's storybook style video. My character as the hero of a fairy tale β€” castle, forest, friendly dragon. Gentle narration vibe. One minute.",
          },
        ].map((ex, i) => (
          <div key={i} className="rounded-xl border border-gray-800/40 bg-gray-900/20 p-4 hover:border-gray-600 transition">
            <div className="flex items-center gap-2 mb-2">
              <span className="text-[10px] uppercase tracking-wider text-gray-500 bg-gray-800/60 rounded-md px-2 py-0.5">{ex.type}</span>
            </div>
            <p className="text-sm text-gray-300 leading-relaxed italic">"{ex.say}"</p>
          </div>
        ))}
      </div>

      {/* Iterate */}
      <div className="rounded-2xl border border-gray-800/40 bg-gray-900/20 p-5">
        <h3 className="text-sm font-semibold text-gray-300 mb-3 flex items-center gap-2">
          <Terminal className="w-4 h-4 text-rose-400" />
          After you see it, change anything
        </h3>
        <div className="space-y-1.5 text-sm text-gray-400">
          <p>"I don't like shot 3 β€” try a wider angle"</p>
          <p>"Make scene 2 darker, more moody"</p>
          <p>"Swap my outfit to a hoodie in all shots"</p>
          <p>"Add a slow-motion moment at the end"</p>
          <p>"Cut the whole thing down to 30 seconds"</p>
        </div>
      </div>

      {/* API peek β€” collapsed */}
      <details className="rounded-2xl border border-gray-800/30 bg-gray-900/10 overflow-hidden">
        <summary className="px-4 py-2.5 cursor-pointer hover:bg-gray-800/20 transition flex items-center gap-2 list-none">
          <ChevronDown className="w-3 h-3 text-gray-600" />
          <span className="text-[11px] text-gray-600">API endpoints (for developers)</span>
        </summary>
        <div className="px-4 pb-4">
          <pre className="text-[10px] text-gray-600 font-mono leading-relaxed">
{`POST   /api/projects                          create a project
POST   /api/projects/:id/scenes                add a scene
POST   /api/projects/:id/scenes/:sid/shots     add a shot
POST   .../shots/:sid/generate-image           generate image
POST   .../shots/:sid/animate                  animate shot
GET    /api/projects/:id                       view full project
POST   /api/projects/:id/export                export MP4`}
          </pre>
        </div>
      </details>
    </div>
  );
}