tfrere HF Staff commited on
Commit
fcd0e24
·
1 Parent(s): 53022bf

update details

Browse files
Files changed (2) hide show
  1. src/pages/Buy.jsx +5 -13
  2. src/pages/FAQ.jsx +56 -84
src/pages/Buy.jsx CHANGED
@@ -63,17 +63,17 @@ const products = {
63
  const comparisonFeatures = [
64
  { name: 'Motors & Mechanics', wireless: '5 servo motors', lite: '5 servo motors' },
65
  { name: 'Head Movement', wireless: '6 DOF (pitch, roll, yaw, x, y, z)', lite: '6 DOF (pitch, roll, yaw, x, y, z)' },
66
- { name: 'Body Rotation', wireless: '360° continuous', lite: '360° continuous' },
67
  { name: 'Antennas', wireless: '2 animated antennas', lite: '2 animated antennas' },
68
- { name: 'Camera', wireless: 'Wide angle (120°)', lite: 'Wide angle (120°)' },
69
  { name: 'Microphones', wireless: '4 microphones array', lite: '4 microphones array' },
70
  { name: 'Speaker', wireless: '5W speaker', lite: '5W speaker' },
71
- { name: 'On-board Compute', wireless: 'Raspberry Pi 4 (4GB)', lite: false },
72
  { name: 'Accelerometer', wireless: 'Built-in IMU', lite: false },
73
- { name: 'Wi-Fi Connectivity', wireless: 'Wi-Fi 5 (802.11ac)', lite: false },
74
  { name: 'Standalone Mode', wireless: true, lite: false },
75
  { name: 'USB Connection', wireless: true, lite: true },
76
- { name: 'Power', wireless: 'USB-C (5V/3A)', lite: 'USB-C (5V/3A)' },
77
  ];
78
 
79
  // What's in the box
@@ -96,10 +96,6 @@ const faqItems = [
96
  question: 'How long does assembly take?',
97
  answer: 'Most users report 1.5–2 hours for assembly. The kit comes with pre-printed parts and clear step-by-step video instructions. No soldering required!',
98
  },
99
- {
100
- question: 'Where do you ship?',
101
- answer: 'We ship worldwide from France. Shipping typically takes 5-10 business days for Europe, 10-15 days for North America, and 15-25 days for other regions.',
102
- },
103
  {
104
  question: 'What about customs and import taxes?',
105
  answer: 'The displayed price does not include customs duties or import taxes, which vary by country. You may be responsible for these fees upon delivery.',
@@ -112,10 +108,6 @@ const faqItems = [
112
  question: 'What software is included?',
113
  answer: 'All software is open-source and free. You get access to the Python SDK, desktop dashboard, and the entire library of community-built applications on Hugging Face Spaces.',
114
  },
115
- {
116
- question: 'Is there a warranty?',
117
- answer: 'Yes! We offer a 1-year warranty covering manufacturing defects. We also provide technical support through our Discord community.',
118
- },
119
  ];
120
 
121
  // Hero Section
 
63
  const comparisonFeatures = [
64
  { name: 'Motors & Mechanics', wireless: '5 servo motors', lite: '5 servo motors' },
65
  { name: 'Head Movement', wireless: '6 DOF (pitch, roll, yaw, x, y, z)', lite: '6 DOF (pitch, roll, yaw, x, y, z)' },
66
+ { name: 'Body Rotation', wireless: '280°', lite: '280°' },
67
  { name: 'Antennas', wireless: '2 animated antennas', lite: '2 animated antennas' },
68
+ { name: 'Camera', wireless: 'Wide angle', lite: 'Wide angle' },
69
  { name: 'Microphones', wireless: '4 microphones array', lite: '4 microphones array' },
70
  { name: 'Speaker', wireless: '5W speaker', lite: '5W speaker' },
71
+ { name: 'On-board Compute', wireless: 'Raspberry Pi 4 (16GB storage)', lite: false },
72
  { name: 'Accelerometer', wireless: 'Built-in IMU', lite: false },
73
+ { name: 'Wi-Fi Connectivity', wireless: 'Wi-Fi', lite: false },
74
  { name: 'Standalone Mode', wireless: true, lite: false },
75
  { name: 'USB Connection', wireless: true, lite: true },
76
+ { name: 'Power', wireless: 'USB-C (6.8V / 5A)', lite: 'USB-C (6.8V / 5A)' },
77
  ];
78
 
79
  // What's in the box
 
96
  question: 'How long does assembly take?',
97
  answer: 'Most users report 1.5–2 hours for assembly. The kit comes with pre-printed parts and clear step-by-step video instructions. No soldering required!',
98
  },
 
 
 
 
99
  {
100
  question: 'What about customs and import taxes?',
101
  answer: 'The displayed price does not include customs duties or import taxes, which vary by country. You may be responsible for these fees upon delivery.',
 
108
  question: 'What software is included?',
109
  answer: 'All software is open-source and free. You get access to the Python SDK, desktop dashboard, and the entire library of community-built applications on Hugging Face Spaces.',
110
  },
 
 
 
 
111
  ];
112
 
113
  // Hero Section
src/pages/FAQ.jsx CHANGED
@@ -26,7 +26,6 @@ import PageHero from '../components/PageHero';
26
  const faqSections = [
27
  {
28
  id: 'getting-started',
29
- icon: '🧭',
30
  title: 'Getting Started',
31
  items: [
32
  {
@@ -68,7 +67,6 @@ This connects to the Reachy Mini daemon and initializes motors and sensors.`,
68
  },
69
  {
70
  id: 'movement',
71
- icon: '🦾',
72
  title: 'Moving the Robot',
73
  items: [
74
  {
@@ -109,7 +107,6 @@ mini.goto_target(
109
  },
110
  {
111
  id: 'apps',
112
- icon: '🧩',
113
  title: 'Writing & Sharing Apps',
114
  items: [
115
  {
@@ -140,7 +137,6 @@ This creates a complete project structure with pyproject.toml, README.md, and th
140
  },
141
  {
142
  id: 'hardware',
143
- icon: '🎛',
144
  title: 'Hardware & Motion Limits',
145
  items: [
146
  {
@@ -158,7 +154,6 @@ If you command a pose outside these limits, Reachy Mini will automatically clamp
158
  },
159
  {
160
  id: 'sensors',
161
- icon: '🧠',
162
  title: 'Sensors & Media',
163
  items: [
164
  {
@@ -184,7 +179,6 @@ with ReachyMini() as mini:
184
  },
185
  {
186
  id: 'motors',
187
- icon: '🦴',
188
  title: 'Motors & Compliancy',
189
  items: [
190
  {
@@ -200,15 +194,8 @@ with ReachyMini() as mini:
200
  },
201
  ];
202
 
203
- // Tag color mapping
204
- const tagColors = {
205
- SDK: { bg: 'rgba(255, 149, 0, 0.15)', color: '#FF9500', border: 'rgba(255, 149, 0, 0.3)' },
206
- Python: { bg: 'rgba(16, 185, 129, 0.15)', color: '#10b981', border: 'rgba(16, 185, 129, 0.3)' },
207
- Movement: { bg: 'rgba(118, 75, 162, 0.15)', color: '#764ba2', border: 'rgba(118, 75, 162, 0.3)' },
208
- Hardware: { bg: 'rgba(245, 158, 11, 0.15)', color: '#f59e0b', border: 'rgba(245, 158, 11, 0.3)' },
209
- Audio: { bg: 'rgba(236, 72, 153, 0.15)', color: '#ec4899', border: 'rgba(236, 72, 153, 0.3)' },
210
- Vision: { bg: 'rgba(6, 182, 212, 0.15)', color: '#06b6d4', border: 'rgba(6, 182, 212, 0.3)' },
211
- };
212
 
213
  // Extract all unique tags from FAQ data
214
  const allTags = [...new Set(faqSections.flatMap((s) => s.items.flatMap((i) => i.tags)))].sort();
@@ -355,22 +342,22 @@ export default function FAQ() {
355
  transition: 'all 0.2s ease',
356
  backgroundColor:
357
  selectedTag === tag
358
- ? tagColors[tag]?.color || 'primary.main'
359
- : tagColors[tag]?.bg || 'rgba(0,0,0,0.06)',
360
  color:
361
  selectedTag === tag
362
  ? 'white'
363
- : tagColors[tag]?.color || 'text.secondary',
364
  border: `1px solid ${
365
  selectedTag === tag
366
- ? tagColors[tag]?.color || 'primary.main'
367
- : tagColors[tag]?.border || 'transparent'
368
  }`,
369
  '&:hover': {
370
  backgroundColor:
371
  selectedTag === tag
372
- ? tagColors[tag]?.color || 'primary.main'
373
- : tagColors[tag]?.bg || 'rgba(0,0,0,0.08)',
374
  transform: 'translateY(-1px)',
375
  },
376
  }}
@@ -398,13 +385,13 @@ export default function FAQ() {
398
  sx={{
399
  fontSize: 11,
400
  height: 24,
401
- backgroundColor: tagColors[selectedTag]?.bg || 'rgba(0,0,0,0.06)',
402
- color: tagColors[selectedTag]?.color || 'text.secondary',
403
  fontWeight: 600,
404
  '& .MuiChip-deleteIcon': {
405
- color: tagColors[selectedTag]?.color || 'text.secondary',
406
  '&:hover': {
407
- color: tagColors[selectedTag]?.color || 'text.primary',
408
  },
409
  },
410
  }}
@@ -452,23 +439,7 @@ export default function FAQ() {
452
  filteredSections.map((section) => (
453
  <Box key={section.id} sx={{ mb: 6 }}>
454
  {/* Section header */}
455
- <Stack direction="row" spacing={2} alignItems="center" sx={{ mb: 3 }}>
456
- <Box
457
- sx={{
458
- width: 48,
459
- height: 48,
460
- backgroundColor: 'background.alt',
461
- borderRadius: 3,
462
- display: 'flex',
463
- alignItems: 'center',
464
- justifyContent: 'center',
465
- fontSize: 24,
466
- }}
467
- >
468
- {section.icon}
469
- </Box>
470
- <Typography variant="h4">{section.title}</Typography>
471
- </Stack>
472
 
473
  {/* FAQ items */}
474
  {section.items.map((item, index) => (
@@ -501,17 +472,17 @@ export default function FAQ() {
501
  fontSize: 11,
502
  height: 22,
503
  cursor: 'pointer',
504
- backgroundColor: tagColors[tag]?.bg || 'rgba(0,0,0,0.06)',
505
- color: tagColors[tag]?.color || 'text.secondary',
506
  border: `1px solid ${
507
  selectedTag === tag
508
- ? tagColors[tag]?.color || 'rgba(0,0,0,0.2)'
509
  : 'transparent'
510
  }`,
511
  fontWeight: 600,
512
  transition: 'all 0.15s ease',
513
  '&:hover': {
514
- backgroundColor: tagColors[tag]?.bg || 'rgba(0,0,0,0.08)',
515
  transform: 'scale(1.05)',
516
  },
517
  }}
@@ -546,57 +517,58 @@ export default function FAQ() {
546
  )}
547
  </Container>
548
 
549
- {/* Still have questions? - Simple Discord CTA */}
550
- <Box
551
- sx={{
552
- py: 8,
553
- borderTop: '1px solid',
554
- borderColor: 'divider',
555
- }}
556
- >
557
  <Container maxWidth="md">
558
- <Stack
559
- direction={{ xs: 'column', sm: 'row' }}
560
- alignItems="center"
561
- justifyContent="space-between"
562
- spacing={3}
563
  sx={{
564
- p: 4,
 
 
 
 
 
565
  borderRadius: 4,
566
- background: 'linear-gradient(135deg, #5865F2 0%, #7289DA 100%)',
567
- color: 'white',
 
 
 
 
 
568
  }}
569
  >
570
- <Stack direction="row" spacing={2} alignItems="center">
571
- <Box sx={{ fontSize: 32 }}>💬</Box>
 
 
 
 
 
572
  <Box>
573
- <Typography variant="h6" sx={{ fontWeight: 700, mb: 0.25 }}>
574
  Need more help?
575
  </Typography>
576
- <Typography variant="body2" sx={{ opacity: 0.9 }}>
577
- Join our Discord to chat with the community and the Pollen team.
578
  </Typography>
579
  </Box>
580
  </Stack>
581
- <Button
582
- variant="contained"
583
- href="https://discord.gg/2bAhWfXme9"
584
- target="_blank"
585
- endIcon={<OpenInNewIcon />}
586
  sx={{
587
- flexShrink: 0,
588
- backgroundColor: 'white',
589
- color: '#5865F2',
590
- fontWeight: 600,
591
- px: 3,
592
- '&:hover': {
593
- backgroundColor: 'rgba(255,255,255,0.9)',
594
- },
595
  }}
596
  >
597
- Join Discord
598
- </Button>
599
- </Stack>
600
  </Container>
601
  </Box>
602
  </Layout>
 
26
  const faqSections = [
27
  {
28
  id: 'getting-started',
 
29
  title: 'Getting Started',
30
  items: [
31
  {
 
67
  },
68
  {
69
  id: 'movement',
 
70
  title: 'Moving the Robot',
71
  items: [
72
  {
 
107
  },
108
  {
109
  id: 'apps',
 
110
  title: 'Writing & Sharing Apps',
111
  items: [
112
  {
 
137
  },
138
  {
139
  id: 'hardware',
 
140
  title: 'Hardware & Motion Limits',
141
  items: [
142
  {
 
154
  },
155
  {
156
  id: 'sensors',
 
157
  title: 'Sensors & Media',
158
  items: [
159
  {
 
179
  },
180
  {
181
  id: 'motors',
 
182
  title: 'Motors & Compliancy',
183
  items: [
184
  {
 
194
  },
195
  ];
196
 
197
+ // Tag color - all primary
198
+ const tagColor = { bg: 'rgba(255, 149, 0, 0.1)', color: '#FF9500', border: 'rgba(255, 149, 0, 0.25)' };
 
 
 
 
 
 
 
199
 
200
  // Extract all unique tags from FAQ data
201
  const allTags = [...new Set(faqSections.flatMap((s) => s.items.flatMap((i) => i.tags)))].sort();
 
342
  transition: 'all 0.2s ease',
343
  backgroundColor:
344
  selectedTag === tag
345
+ ? tagColor.color
346
+ : tagColor.bg,
347
  color:
348
  selectedTag === tag
349
  ? 'white'
350
+ : tagColor.color,
351
  border: `1px solid ${
352
  selectedTag === tag
353
+ ? tagColor.color
354
+ : tagColor.border
355
  }`,
356
  '&:hover': {
357
  backgroundColor:
358
  selectedTag === tag
359
+ ? tagColor.color
360
+ : tagColor.bg,
361
  transform: 'translateY(-1px)',
362
  },
363
  }}
 
385
  sx={{
386
  fontSize: 11,
387
  height: 24,
388
+ backgroundColor: tagColor.bg,
389
+ color: tagColor.color,
390
  fontWeight: 600,
391
  '& .MuiChip-deleteIcon': {
392
+ color: tagColor.color,
393
  '&:hover': {
394
+ color: tagColor.color,
395
  },
396
  },
397
  }}
 
439
  filteredSections.map((section) => (
440
  <Box key={section.id} sx={{ mb: 6 }}>
441
  {/* Section header */}
442
+ <Typography variant="h4" sx={{ mb: 3 }}>{section.title}</Typography>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
 
444
  {/* FAQ items */}
445
  {section.items.map((item, index) => (
 
472
  fontSize: 11,
473
  height: 22,
474
  cursor: 'pointer',
475
+ backgroundColor: tagColor.bg,
476
+ color: tagColor.color,
477
  border: `1px solid ${
478
  selectedTag === tag
479
+ ? tagColor.color
480
  : 'transparent'
481
  }`,
482
  fontWeight: 600,
483
  transition: 'all 0.15s ease',
484
  '&:hover': {
485
+ backgroundColor: tagColor.bg,
486
  transform: 'scale(1.05)',
487
  },
488
  }}
 
517
  )}
518
  </Container>
519
 
520
+ {/* Still have questions? - Discord CTA */}
521
+ <Box sx={{ py: 8 }}>
 
 
 
 
 
 
522
  <Container maxWidth="md">
523
+ <Box
524
+ component="a"
525
+ href="https://discord.gg/2bAhWfXme9"
526
+ target="_blank"
527
+ rel="noopener noreferrer"
528
  sx={{
529
+ display: 'flex',
530
+ flexDirection: { xs: 'column', sm: 'row' },
531
+ alignItems: { xs: 'flex-start', sm: 'center' },
532
+ justifyContent: 'space-between',
533
+ gap: 3,
534
+ p: { xs: 4, md: 5 },
535
  borderRadius: 4,
536
+ background: '#0f0f1a',
537
+ border: '1px solid rgba(255,255,255,0.08)',
538
+ textDecoration: 'none',
539
+ transition: 'all 0.3s ease',
540
+ '&:hover': {
541
+ borderColor: 'rgba(255,255,255,0.2)',
542
+ },
543
  }}
544
  >
545
+ <Stack direction="row" spacing={3} alignItems="center">
546
+ <Box
547
+ component="img"
548
+ src="/assets/discord-logo.svg"
549
+ alt="Discord"
550
+ sx={{ width: 48, height: 48, opacity: 0.9 }}
551
+ />
552
  <Box>
553
+ <Typography variant="h5" sx={{ color: 'white', fontWeight: 600, mb: 0.5 }}>
554
  Need more help?
555
  </Typography>
556
+ <Typography sx={{ color: 'rgba(255,255,255,0.5)', fontSize: 14 }}>
557
+ Join our Discord to chat with 500+ makers and the Pollen team.
558
  </Typography>
559
  </Box>
560
  </Stack>
561
+ <Typography
 
 
 
 
562
  sx={{
563
+ color: 'rgba(255,255,255,0.6)',
564
+ fontSize: 14,
565
+ fontWeight: 500,
566
+ whiteSpace: 'nowrap',
 
 
 
 
567
  }}
568
  >
569
+ Join Discord
570
+ </Typography>
571
+ </Box>
572
  </Container>
573
  </Box>
574
  </Layout>