Spaces:
Running
Running
update details
Browse files- src/pages/Buy.jsx +5 -13
- 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: '
|
| 67 |
{ name: 'Antennas', wireless: '2 animated antennas', lite: '2 animated antennas' },
|
| 68 |
-
{ name: 'Camera', wireless: '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 (
|
| 72 |
{ name: 'Accelerometer', wireless: 'Built-in IMU', lite: false },
|
| 73 |
-
{ name: 'Wi-Fi Connectivity', wireless: 'Wi-Fi
|
| 74 |
{ name: 'Standalone Mode', wireless: true, lite: false },
|
| 75 |
{ name: 'USB Connection', wireless: true, lite: true },
|
| 76 |
-
{ name: 'Power', wireless: 'USB-C (
|
| 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
|
| 204 |
-
const
|
| 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 |
-
?
|
| 359 |
-
:
|
| 360 |
color:
|
| 361 |
selectedTag === tag
|
| 362 |
? 'white'
|
| 363 |
-
:
|
| 364 |
border: `1px solid ${
|
| 365 |
selectedTag === tag
|
| 366 |
-
?
|
| 367 |
-
:
|
| 368 |
}`,
|
| 369 |
'&:hover': {
|
| 370 |
backgroundColor:
|
| 371 |
selectedTag === tag
|
| 372 |
-
?
|
| 373 |
-
:
|
| 374 |
transform: 'translateY(-1px)',
|
| 375 |
},
|
| 376 |
}}
|
|
@@ -398,13 +385,13 @@ export default function FAQ() {
|
|
| 398 |
sx={{
|
| 399 |
fontSize: 11,
|
| 400 |
height: 24,
|
| 401 |
-
backgroundColor:
|
| 402 |
-
color:
|
| 403 |
fontWeight: 600,
|
| 404 |
'& .MuiChip-deleteIcon': {
|
| 405 |
-
color:
|
| 406 |
'&:hover': {
|
| 407 |
-
color:
|
| 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 |
-
<
|
| 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:
|
| 505 |
-
color:
|
| 506 |
border: `1px solid ${
|
| 507 |
selectedTag === tag
|
| 508 |
-
?
|
| 509 |
: 'transparent'
|
| 510 |
}`,
|
| 511 |
fontWeight: 600,
|
| 512 |
transition: 'all 0.15s ease',
|
| 513 |
'&:hover': {
|
| 514 |
-
backgroundColor:
|
| 515 |
transform: 'scale(1.05)',
|
| 516 |
},
|
| 517 |
}}
|
|
@@ -546,57 +517,58 @@ export default function FAQ() {
|
|
| 546 |
)}
|
| 547 |
</Container>
|
| 548 |
|
| 549 |
-
{/* Still have questions? -
|
| 550 |
-
<Box
|
| 551 |
-
sx={{
|
| 552 |
-
py: 8,
|
| 553 |
-
borderTop: '1px solid',
|
| 554 |
-
borderColor: 'divider',
|
| 555 |
-
}}
|
| 556 |
-
>
|
| 557 |
<Container maxWidth="md">
|
| 558 |
-
<
|
| 559 |
-
|
| 560 |
-
|
| 561 |
-
|
| 562 |
-
|
| 563 |
sx={{
|
| 564 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 565 |
borderRadius: 4,
|
| 566 |
-
background: '
|
| 567 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 568 |
}}
|
| 569 |
>
|
| 570 |
-
<Stack direction="row" spacing={
|
| 571 |
-
<Box
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 572 |
<Box>
|
| 573 |
-
<Typography variant="
|
| 574 |
Need more help?
|
| 575 |
</Typography>
|
| 576 |
-
<Typography
|
| 577 |
-
Join our Discord to chat with
|
| 578 |
</Typography>
|
| 579 |
</Box>
|
| 580 |
</Stack>
|
| 581 |
-
<
|
| 582 |
-
variant="contained"
|
| 583 |
-
href="https://discord.gg/2bAhWfXme9"
|
| 584 |
-
target="_blank"
|
| 585 |
-
endIcon={<OpenInNewIcon />}
|
| 586 |
sx={{
|
| 587 |
-
|
| 588 |
-
|
| 589 |
-
|
| 590 |
-
|
| 591 |
-
px: 3,
|
| 592 |
-
'&:hover': {
|
| 593 |
-
backgroundColor: 'rgba(255,255,255,0.9)',
|
| 594 |
-
},
|
| 595 |
}}
|
| 596 |
>
|
| 597 |
-
Join Discord
|
| 598 |
-
</
|
| 599 |
-
</
|
| 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>
|