AUXteam commited on
Commit
dc436d6
·
verified ·
1 Parent(s): fa22e51

Upload folder using huggingface_hub

Browse files
components/ChatPage.tsx CHANGED
@@ -62,14 +62,14 @@ const ChatInput: React.FC<{ onSimulate: (msg: string) => void; onHelpMeCraft: (m
62
  <div className="max-w-5xl mx-auto space-y-4">
63
  <textarea
64
  className="w-full h-24 bg-black border border-gray-800 text-gray-200 placeholder-gray-600 p-4 rounded-2xl resize-none focus:outline-none focus:border-gray-600 focus:ring-1 focus:ring-gray-600 transition-all text-sm leading-relaxed"
65
- placeholder="Paste your website link here"
66
  value={message}
67
  onChange={(e) => setMessage(e.target.value)}
68
  />
69
  <div className="flex flex-wrap justify-between items-start gap-4">
70
  <div className="flex gap-2 md:gap-3 flex-wrap">
71
  <div className="flex flex-col gap-2">
72
- <ChatButton label="Website Link for UX Testing" icon={<LinkIcon size={14} />} />
73
  </div>
74
  <input
75
  type="file"
 
62
  <div className="max-w-5xl mx-auto space-y-4">
63
  <textarea
64
  className="w-full h-24 bg-black border border-gray-800 text-gray-200 placeholder-gray-600 p-4 rounded-2xl resize-none focus:outline-none focus:border-gray-600 focus:ring-1 focus:ring-gray-600 transition-all text-sm leading-relaxed"
65
+ placeholder="Paste your brand narrative or campaign copy here"
66
  value={message}
67
  onChange={(e) => setMessage(e.target.value)}
68
  />
69
  <div className="flex flex-wrap justify-between items-start gap-4">
70
  <div className="flex gap-2 md:gap-3 flex-wrap">
71
  <div className="flex flex-col gap-2">
72
+ <ChatButton label="Brand Asset for Testing" icon={<LinkIcon size={14} />} />
73
  </div>
74
  <input
75
  type="file"
components/Hero.tsx CHANGED
@@ -29,10 +29,10 @@ const Hero: React.FC<HeroProps> = ({ onStart }) => {
29
  {/* Slide 1 */}
30
  <div className={`absolute top-0 left-0 w-full transition-all duration-1000 ease-in-out transform ${currentSlide === 0 ? 'opacity-100 translate-y-0' : 'opacity-0 -translate-y-10 pointer-events-none'}`}>
31
  <h1 className="text-5xl md:text-7xl font-bold leading-tight">
32
- User Simulation <span className="text-gray-400">API</span> for Developers
33
  </h1>
34
  <p className="text-xl text-gray-400 mt-6 max-w-lg">
35
- Programmatically test your UX decisions. Integrate accurate user simulation into your CI/CD pipeline. Free for developers.
36
  </p>
37
  <div className="flex flex-wrap gap-4 mt-8">
38
  <Button variant="primary" size="lg" onClick={onStart}>HF Space Demo</Button>
@@ -43,10 +43,10 @@ const Hero: React.FC<HeroProps> = ({ onStart }) => {
43
  {/* Slide 2 */}
44
  <div className={`absolute top-0 left-0 w-full transition-all duration-1000 ease-in-out transform ${currentSlide === 1 ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-10 pointer-events-none'}`}>
45
  <h1 className="text-5xl md:text-7xl font-bold leading-tight">
46
- Stop guessing. <span className="bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent">Start simulating.</span>
47
  </h1>
48
  <p className="text-xl text-gray-400 mt-6 max-w-lg">
49
- Validate features with AI-generated user societies before writing a single line of frontend code. The open standard for agentic UX testing.
50
  </p>
51
  <div className="flex flex-wrap gap-4 mt-8">
52
  <Button variant="primary" size="lg" onClick={onStart}>Start Building</Button>
 
29
  {/* Slide 1 */}
30
  <div className={`absolute top-0 left-0 w-full transition-all duration-1000 ease-in-out transform ${currentSlide === 0 ? 'opacity-100 translate-y-0' : 'opacity-0 -translate-y-10 pointer-events-none'}`}>
31
  <h1 className="text-5xl md:text-7xl font-bold leading-tight">
32
+ Branding Simulation <span className="text-gray-400">API</span> for Global Teams
33
  </h1>
34
  <p className="text-xl text-gray-400 mt-6 max-w-lg">
35
+ Programmatically test your brand narratives. Integrate accurate audience simulation into your creative workflow. Free for developers.
36
  </p>
37
  <div className="flex flex-wrap gap-4 mt-8">
38
  <Button variant="primary" size="lg" onClick={onStart}>HF Space Demo</Button>
 
43
  {/* Slide 2 */}
44
  <div className={`absolute top-0 left-0 w-full transition-all duration-1000 ease-in-out transform ${currentSlide === 1 ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-10 pointer-events-none'}`}>
45
  <h1 className="text-5xl md:text-7xl font-bold leading-tight">
46
+ Test your Brand. <span className="bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent">Before you launch.</span>
47
  </h1>
48
  <p className="text-xl text-gray-400 mt-6 max-w-lg">
49
+ Validate brand voice and campaign ideas with AI-generated focus groups. The new standard for agentic brand testing and narrative validation.
50
  </p>
51
  <div className="flex flex-wrap gap-4 mt-8">
52
  <Button variant="primary" size="lg" onClick={onStart}>Start Building</Button>
components/InteractiveDemo.tsx CHANGED
@@ -183,8 +183,8 @@ const Step2 = () => {
183
  return (
184
  <SectionLayout
185
  number="2"
186
- title="Run Rapid Experiments"
187
- description="Execute simulations in minutes to find the optimal form of your content or idea."
188
  visual={
189
  <>
190
  <NetworkBackground />
@@ -205,14 +205,14 @@ const Step2 = () => {
205
  </div>
206
  <div className="bg-gray-900 rounded-lg p-4 mb-4 border border-gray-800">
207
  <p className="text-gray-300 text-sm">
208
- We just secured $5.3M to build AI-native tools...
209
  </p>
210
  </div>
211
  <Button
212
  className="w-full flex items-center justify-center gap-2"
213
  onClick={handleSimulate}
214
  >
215
- Simulate Post <Send size={16} />
216
  </Button>
217
  </div>
218
 
@@ -239,8 +239,8 @@ const Step3 = () => {
239
  return (
240
  <SectionLayout
241
  number="3"
242
- title="Get Instant Insights"
243
- description="Evaluate the performance of your experiment with scores, comments, and summaries."
244
  visual={
245
  <>
246
  <NetworkBackground />
@@ -249,29 +249,29 @@ const Step3 = () => {
249
  <div className="bg-black border border-gray-800 rounded-xl p-6 shadow-2xl hover:border-gray-600 transition-colors cursor-default group">
250
  <div className="flex justify-between items-start mb-6">
251
  <div>
252
- <span className="text-xs text-gray-400 uppercase tracking-wider">Impact Score</span>
253
- <div className="text-3xl font-bold text-white mt-1">88<span className="text-base font-normal text-gray-500">/100</span></div>
254
  </div>
255
- <div className="bg-green-500/10 text-green-400 text-xs px-2 py-1 rounded border border-green-500/20">Exceptional</div>
256
  </div>
257
 
258
  <div className="space-y-4">
259
  <div>
260
  <div className="flex justify-between text-xs text-gray-400 mb-1">
261
- <span>Attention</span>
262
- <span>80%</span>
263
  </div>
264
  <div className="h-1.5 bg-gray-800 rounded-full overflow-hidden">
265
- <div className="h-full bg-green-500 w-[80%] rounded-full group-hover:bg-green-400 transition-colors"></div>
266
  </div>
267
  </div>
268
  <div>
269
  <div className="flex justify-between text-xs text-gray-400 mb-1">
270
- <span>Relevance</span>
271
- <span>92%</span>
272
  </div>
273
  <div className="h-1.5 bg-gray-800 rounded-full overflow-hidden">
274
- <div className="h-full bg-teal-500 w-[92%] rounded-full group-hover:bg-teal-400 transition-colors"></div>
275
  </div>
276
  </div>
277
  </div>
@@ -281,10 +281,10 @@ const Step3 = () => {
281
  <div className="bg-gray-900/50 border border-gray-800 rounded-xl p-5 backdrop-blur-sm animate-fade-in-up" style={{ animationDelay: '0.2s' }}>
282
  <div className="flex items-center gap-2 mb-3">
283
  <MessageSquare size={14} className="text-purple-400" />
284
- <span className="text-xs font-medium text-purple-200">Key Insight</span>
285
  </div>
286
  <p className="text-sm text-gray-300 leading-relaxed italic">
287
- "Founders in the EU region responded strongly to the 'no-code' angle, seeing it as a major time-saver."
288
  </p>
289
  </div>
290
  </div>
@@ -300,9 +300,9 @@ const Step4 = () => {
300
  const [activeVariant, setActiveVariant] = useState(0);
301
 
302
  const variants = [
303
- { label: "Original", score: 48, text: "We just secured $5.3M to build AI-native tools..." },
304
- { label: "Variant 1", score: 88, text: "Stop writing code before you have product-market fit. We just raised $5.3M to help you simulate it first." },
305
- { label: "Variant 2", score: 83, text: "Big news: $5.3M raised! We're building the future of founder tools in Europe." },
306
  ];
307
 
308
  return (
 
183
  return (
184
  <SectionLayout
185
  number="2"
186
+ title="Validate Campaign Narratives"
187
+ description="Execute simulations in minutes to find the optimal resonance of your brand message."
188
  visual={
189
  <>
190
  <NetworkBackground />
 
205
  </div>
206
  <div className="bg-gray-900 rounded-lg p-4 mb-4 border border-gray-800">
207
  <p className="text-gray-300 text-sm">
208
+ Our new brand identity focuses on radical transparency and community-driven growth...
209
  </p>
210
  </div>
211
  <Button
212
  className="w-full flex items-center justify-center gap-2"
213
  onClick={handleSimulate}
214
  >
215
+ Simulate Campaign <Send size={16} />
216
  </Button>
217
  </div>
218
 
 
239
  return (
240
  <SectionLayout
241
  number="3"
242
+ title="Measure Brand Resonance"
243
+ description="Evaluate how your brand values land with specific demographics through detailed sentiment scores."
244
  visual={
245
  <>
246
  <NetworkBackground />
 
249
  <div className="bg-black border border-gray-800 rounded-xl p-6 shadow-2xl hover:border-gray-600 transition-colors cursor-default group">
250
  <div className="flex justify-between items-start mb-6">
251
  <div>
252
+ <span className="text-xs text-gray-400 uppercase tracking-wider">Brand Alignment</span>
253
+ <div className="text-3xl font-bold text-white mt-1">94<span className="text-base font-normal text-gray-500">/100</span></div>
254
  </div>
255
+ <div className="bg-green-500/10 text-green-400 text-xs px-2 py-1 rounded border border-green-500/20">Highly Coherent</div>
256
  </div>
257
 
258
  <div className="space-y-4">
259
  <div>
260
  <div className="flex justify-between text-xs text-gray-400 mb-1">
261
+ <span>Trustworthiness</span>
262
+ <span>88%</span>
263
  </div>
264
  <div className="h-1.5 bg-gray-800 rounded-full overflow-hidden">
265
+ <div className="h-full bg-green-500 w-[88%] rounded-full group-hover:bg-green-400 transition-colors"></div>
266
  </div>
267
  </div>
268
  <div>
269
  <div className="flex justify-between text-xs text-gray-400 mb-1">
270
+ <span>Brand Recall</span>
271
+ <span>82%</span>
272
  </div>
273
  <div className="h-1.5 bg-gray-800 rounded-full overflow-hidden">
274
+ <div className="h-full bg-teal-500 w-[82%] rounded-full group-hover:bg-teal-400 transition-colors"></div>
275
  </div>
276
  </div>
277
  </div>
 
281
  <div className="bg-gray-900/50 border border-gray-800 rounded-xl p-5 backdrop-blur-sm animate-fade-in-up" style={{ animationDelay: '0.2s' }}>
282
  <div className="flex items-center gap-2 mb-3">
283
  <MessageSquare size={14} className="text-purple-400" />
284
+ <span className="text-xs font-medium text-purple-200">Brand Insight</span>
285
  </div>
286
  <p className="text-sm text-gray-300 leading-relaxed italic">
287
+ "The 'transparency' angle increased trust scores by 25% among Millennial tech professionals."
288
  </p>
289
  </div>
290
  </div>
 
300
  const [activeVariant, setActiveVariant] = useState(0);
301
 
302
  const variants = [
303
+ { label: "Original", score: 52, text: "We're launching a new sustainable clothing line next month." },
304
+ { label: "Variant 1", score: 91, text: "Radical transparency in every stitch. Meet the brand that's redefining sustainable luxury." },
305
+ { label: "Variant 2", score: 78, text: "Style without compromise. Our eco-friendly collection arrives soon." },
306
  ];
307
 
308
  return (
components/ProductOverview.tsx CHANGED
@@ -33,7 +33,7 @@ const ProductOverview: React.FC = () => {
33
  </div>
34
 
35
  <h2 className="text-3xl md:text-5xl font-semibold text-center max-w-4xl mx-auto leading-tight mb-20">
36
- Create realistic simulations of your target audience to instantly test messages, content, or ideas
37
  </h2>
38
 
39
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
 
33
  </div>
34
 
35
  <h2 className="text-3xl md:text-5xl font-semibold text-center max-w-4xl mx-auto leading-tight mb-20">
36
+ Create realistic simulations of your target audience to instantly test brand narratives, voice, and campaign ideas
37
  </h2>
38
 
39
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
components/SimulationPage.tsx CHANGED
@@ -1,5 +1,5 @@
1
- import React, { useState } from 'react';
2
- import { ChevronDown, Plus, Info, MessageSquare, BookOpen, LogOut, PanelLeftClose, MessageCircle, AlertTriangle } from 'lucide-react';
3
  import SimulationGraph from './SimulationGraph';
4
 
5
  interface SimulationPageProps {
@@ -42,7 +42,20 @@ const SimulationPage: React.FC<SimulationPageProps> = ({ onBack, onOpenConversat
42
  const [society, setSociety] = useState('User Group 1');
43
  const [viewMode, setViewMode] = useState('Job Title');
44
  const [isBuilding, setIsBuilding] = useState(false);
45
- const [isRightPanelOpen, setIsRightPanelOpen] = useState(true);
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
  // Function to simulate rebuilding the graph when settings change
48
  const handleSettingChange = (setter: (val: string) => void, value: string) => {
@@ -59,16 +72,21 @@ const SimulationPage: React.FC<SimulationPageProps> = ({ onBack, onOpenConversat
59
  const currentFilters = VIEW_FILTERS[viewMode] || VIEW_FILTERS['Country'];
60
 
61
  return (
62
- <div className="flex h-screen w-screen overflow-hidden bg-black text-white font-sans">
63
  {/* Sidebar */}
64
- <aside className="w-[300px] flex-shrink-0 border-r border-gray-800 flex flex-col bg-[#0a0a0a] z-20">
65
  {/* Header */}
66
  <div className="p-4 h-16 border-b border-gray-800 flex items-center justify-between">
67
  <div className="flex items-center gap-2 cursor-pointer" onClick={onBack}>
68
  <div className="w-6 h-6 flex items-center justify-center font-bold text-white">Λ</div>
69
  <span className="font-semibold tracking-tight">SyncUsers</span>
70
  </div>
71
- <button className="text-gray-500 hover:text-white"><PanelLeftClose size={18}/></button>
 
 
 
 
 
72
  </div>
73
 
74
  {/* Scrollable Content */}
@@ -142,13 +160,13 @@ const SimulationPage: React.FC<SimulationPageProps> = ({ onBack, onOpenConversat
142
  <div className="space-y-1 pt-4">
143
  <label className="text-xs text-gray-500 font-medium uppercase tracking-wider mb-2 block">Recent Tests</label>
144
  <div className="text-sm text-gray-400 py-2 px-2 hover:bg-gray-800/50 rounded cursor-pointer truncate">
145
- Duality in portraits and sha...
146
  </div>
147
  <div className="text-sm text-gray-400 py-2 px-2 hover:bg-gray-800/50 rounded cursor-pointer truncate">
148
- Volcanoes: Threat or Misun...
149
  </div>
150
  <div className="text-sm text-gray-400 py-2 px-2 hover:bg-gray-800/50 rounded cursor-pointer truncate">
151
- Sustainable Fashion 2024
152
  </div>
153
  </div>
154
  </div>
@@ -172,9 +190,27 @@ const SimulationPage: React.FC<SimulationPageProps> = ({ onBack, onOpenConversat
172
  {/* Main Content Area */}
173
  <main className="flex-1 flex flex-col relative bg-black overflow-hidden">
174
  {/* Top Navigation Overlay */}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  <div className="absolute top-6 left-6 right-6 z-10 flex justify-center pointer-events-none">
176
  {/* Legend / Filter Chips */}
177
- <div className="flex flex-wrap justify-center gap-2 pointer-events-auto">
178
  {currentFilters.map((filter, idx) => (
179
  <FilterChip key={idx} color={filter.color} label={filter.label} />
180
  ))}
@@ -199,10 +235,10 @@ const SimulationPage: React.FC<SimulationPageProps> = ({ onBack, onOpenConversat
199
  </main>
200
 
201
  {/* Right Sidebar (Output) */}
202
- <aside className={`w-[300px] flex-shrink-0 border-l border-gray-800 flex flex-col bg-[#0a0a0a] z-20 transition-all duration-300 ${isRightPanelOpen ? 'mr-0' : '-mr-[300px]'}`}>
203
  <div className="p-4 h-16 border-b border-gray-800 flex items-center justify-between">
204
  <span className="font-semibold tracking-tight uppercase text-xs text-gray-500">Output</span>
205
- <button onClick={() => setIsRightPanelOpen(false)} className="text-gray-500 hover:text-white"><PanelLeftClose size={18} className="rotate-180"/></button>
206
  </div>
207
  <div className="flex-1 overflow-y-auto p-4 space-y-4">
208
  <div className="bg-gray-900/50 border border-gray-800 rounded-xl p-4">
 
1
+ import React, { useState, useEffect } from 'react';
2
+ import { ChevronDown, Plus, Info, MessageSquare, BookOpen, LogOut, PanelLeftClose, MessageCircle, AlertTriangle, Menu, PanelRightClose } from 'lucide-react';
3
  import SimulationGraph from './SimulationGraph';
4
 
5
  interface SimulationPageProps {
 
42
  const [society, setSociety] = useState('User Group 1');
43
  const [viewMode, setViewMode] = useState('Job Title');
44
  const [isBuilding, setIsBuilding] = useState(false);
45
+ const [isRightPanelOpen, setIsRightPanelOpen] = useState(window.innerWidth > 1200);
46
+ const [isLeftPanelOpen, setIsLeftPanelOpen] = useState(window.innerWidth > 768);
47
+
48
+ // Handle window resize for mobile responsiveness
49
+ useEffect(() => {
50
+ const handleResize = () => {
51
+ if (window.innerWidth < 768) {
52
+ setIsLeftPanelOpen(false);
53
+ setIsRightPanelOpen(false);
54
+ }
55
+ };
56
+ window.addEventListener('resize', handleResize);
57
+ return () => window.removeEventListener('resize', handleResize);
58
+ }, []);
59
 
60
  // Function to simulate rebuilding the graph when settings change
61
  const handleSettingChange = (setter: (val: string) => void, value: string) => {
 
72
  const currentFilters = VIEW_FILTERS[viewMode] || VIEW_FILTERS['Country'];
73
 
74
  return (
75
+ <div className="flex h-screen w-screen overflow-hidden bg-black text-white font-sans relative">
76
  {/* Sidebar */}
77
+ <aside className={`fixed md:relative w-[300px] h-full flex-shrink-0 border-r border-gray-800 flex flex-col bg-[#0a0a0a] z-40 transition-all duration-300 ${isLeftPanelOpen ? 'translate-x-0' : '-translate-x-full md:-ml-[300px]'}`}>
78
  {/* Header */}
79
  <div className="p-4 h-16 border-b border-gray-800 flex items-center justify-between">
80
  <div className="flex items-center gap-2 cursor-pointer" onClick={onBack}>
81
  <div className="w-6 h-6 flex items-center justify-center font-bold text-white">Λ</div>
82
  <span className="font-semibold tracking-tight">SyncUsers</span>
83
  </div>
84
+ <button
85
+ onClick={() => setIsLeftPanelOpen(false)}
86
+ className="text-gray-500 hover:text-white"
87
+ >
88
+ <PanelLeftClose size={18}/>
89
+ </button>
90
  </div>
91
 
92
  {/* Scrollable Content */}
 
160
  <div className="space-y-1 pt-4">
161
  <label className="text-xs text-gray-500 font-medium uppercase tracking-wider mb-2 block">Recent Tests</label>
162
  <div className="text-sm text-gray-400 py-2 px-2 hover:bg-gray-800/50 rounded cursor-pointer truncate">
163
+ Sustainable Luxury Narrative
164
  </div>
165
  <div className="text-sm text-gray-400 py-2 px-2 hover:bg-gray-800/50 rounded cursor-pointer truncate">
166
+ Radical Transparency Voice
167
  </div>
168
  <div className="text-sm text-gray-400 py-2 px-2 hover:bg-gray-800/50 rounded cursor-pointer truncate">
169
+ Gen-Z Greenwash Perception
170
  </div>
171
  </div>
172
  </div>
 
190
  {/* Main Content Area */}
191
  <main className="flex-1 flex flex-col relative bg-black overflow-hidden">
192
  {/* Top Navigation Overlay */}
193
+ <div className="absolute top-4 left-4 right-4 z-30 flex justify-between items-center pointer-events-none">
194
+ {/* Left Toggle (when sidebar closed) */}
195
+ <button
196
+ onClick={() => setIsLeftPanelOpen(true)}
197
+ className={`pointer-events-auto p-2 bg-gray-900/80 border border-gray-700 rounded-lg text-gray-400 hover:text-white transition-opacity ${isLeftPanelOpen ? 'opacity-0 pointer-events-none' : 'opacity-100'}`}
198
+ >
199
+ <Menu size={20} />
200
+ </button>
201
+
202
+ {/* Right Toggle (when output closed) */}
203
+ <button
204
+ onClick={() => setIsRightPanelOpen(true)}
205
+ className={`pointer-events-auto p-2 bg-gray-900/80 border border-gray-700 rounded-lg text-gray-400 hover:text-white transition-opacity ml-auto ${isRightPanelOpen ? 'opacity-0 pointer-events-none' : 'opacity-100'}`}
206
+ >
207
+ <PanelRightClose size={20} className="rotate-180" />
208
+ </button>
209
+ </div>
210
+
211
  <div className="absolute top-6 left-6 right-6 z-10 flex justify-center pointer-events-none">
212
  {/* Legend / Filter Chips */}
213
+ <div className="flex flex-wrap justify-center gap-2 pointer-events-auto max-w-[60%]">
214
  {currentFilters.map((filter, idx) => (
215
  <FilterChip key={idx} color={filter.color} label={filter.label} />
216
  ))}
 
235
  </main>
236
 
237
  {/* Right Sidebar (Output) */}
238
+ <aside className={`fixed right-0 md:relative w-[300px] h-full flex-shrink-0 border-l border-gray-800 flex flex-col bg-[#0a0a0a] z-40 transition-all duration-300 ${isRightPanelOpen ? 'translate-x-0' : 'translate-x-full md:-mr-[300px]'}`}>
239
  <div className="p-4 h-16 border-b border-gray-800 flex items-center justify-between">
240
  <span className="font-semibold tracking-tight uppercase text-xs text-gray-500">Output</span>
241
+ <button onClick={() => setIsRightPanelOpen(false)} className="text-gray-500 hover:text-white"><PanelRightClose size={18}/></button>
242
  </div>
243
  <div className="flex-1 overflow-y-auto p-4 space-y-4">
244
  <div className="bg-gray-900/50 border border-gray-800 rounded-xl p-4">
components/UseCases.tsx CHANGED
@@ -8,7 +8,7 @@ const UseCases: React.FC = () => {
8
  <div className="flex justify-center mb-8">
9
  <span className="px-4 py-1.5 rounded-full border border-gray-700 text-sm text-gray-300">Use Cases</span>
10
  </div>
11
- <h2 className="text-3xl md:text-5xl font-semibold text-center mb-20">Optimize any kind of message</h2>
12
 
13
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
14
  {USE_CASES.map((useCase, idx) => (
 
8
  <div className="flex justify-center mb-8">
9
  <span className="px-4 py-1.5 rounded-full border border-gray-700 text-sm text-gray-300">Use Cases</span>
10
  </div>
11
+ <h2 className="text-3xl md:text-5xl font-semibold text-center mb-20">Solve high-stakes branding challenges</h2>
12
 
13
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
14
  {USE_CASES.map((useCase, idx) => (
constants.ts CHANGED
@@ -11,20 +11,20 @@ export const NAV_LINKS: NavLink[] = [
11
  export const USE_CASES: UseCase[] = [
12
  {
13
  category: UseCaseCategory.PR_COMMS,
14
- title: "Craft Narratives",
15
- description: "Test different communication strategies via API to deliver the right reaction",
16
  color: "bg-purple-500"
17
  },
18
  {
19
  category: UseCaseCategory.PRODUCT,
20
- title: "Decide Features",
21
- description: "Test how your target customers react to product ideas and new features",
22
  color: "bg-teal-500"
23
  },
24
  {
25
  category: UseCaseCategory.BRANDING,
26
- title: "Stand Out",
27
- description: "Test how different brand and voice ideas resonate with your ideal buyer.",
28
  color: "bg-pink-500"
29
  },
30
  {
 
11
  export const USE_CASES: UseCase[] = [
12
  {
13
  category: UseCaseCategory.PR_COMMS,
14
+ title: "Brand Narratives",
15
+ description: "Test different brand communication strategies via API to deliver the right emotional impact",
16
  color: "bg-purple-500"
17
  },
18
  {
19
  category: UseCaseCategory.PRODUCT,
20
+ title: "Market Positioning",
21
+ description: "Test how your target customers perceive your brand positioning and values",
22
  color: "bg-teal-500"
23
  },
24
  {
25
  category: UseCaseCategory.BRANDING,
26
+ title: "Visual Identity",
27
+ description: "Test how different visual brand assets and voice ideas resonate with your ideal buyer.",
28
  color: "bg-pink-500"
29
  },
30
  {