File size: 1,679 Bytes
703a33a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import type { SeedVoice, StudioNarrative } from "../content/types";

interface StudioSectionProps {
  narrative: StudioNarrative;
  seedLibrary: SeedVoice[];
}

export function StudioSection({ narrative, seedLibrary }: StudioSectionProps) {
  return (
    <div className="studio-layout">
      <div className="studio-story">
        <h3>{narrative.headline}</h3>
        <p>{narrative.body}</p>
        <div className="pillar-grid">
          {narrative.pillars.map((pillar) => (
            <article key={pillar.title} className="pillar-card">
              <h4>{pillar.title}</h4>
              <p>{pillar.description}</p>
            </article>
          ))}
        </div>
      </div>
      <div className="studio-assets">
        <div className="image-card">
          <img src="/public/studio-surface.svg" alt="Aether Voice Studio workflow illustration" />
        </div>
        <div className="seed-list">
          <div className="seed-list-head">
            <h4>Seed voice library</h4>
            <span>{seedLibrary.length} curated entries</span>
          </div>
          {seedLibrary.map((voice) => (
            <article key={voice.id} className="seed-card">
              <div>
                <h5>{voice.name}</h5>
                <p>{voice.persona}</p>
              </div>
              <span className="route-pill">{voice.route}</span>
              <p className="seed-purpose">{voice.bestFor}</p>
              <div className="tag-row">
                {voice.styleTags.map((tag) => (
                  <span key={tag}>{tag}</span>
                ))}
              </div>
            </article>
          ))}
        </div>
      </div>
    </div>
  );
}