feat: add robotics showcase components and UI enhancements
- Introduced FounderSection component to highlight leadership and vision. - Created ServicesGrid component to display various robotics services offered. - Developed RoboticsScrollShowcase for showcasing robots with interactive elements. - Implemented RoboticsSplineShowcase featuring a 3D Spline scene for enhanced user experience. - Added reusable Card component for consistent styling across sections. - Integrated ContainerScroll for animated scrolling effects in the showcase. - Built SplineScene component for lazy loading Spline 3D scenes. - Added Spotlight component for interactive hover effects. - Created utility function for class name merging to streamline styling.
|
After Width: | Height: | Size: 356 KiB |
@@ -1,20 +1,20 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" role="img" aria-label="Pudu BellaBot delivery robot silhouette">
|
||||
<defs>
|
||||
<radialGradient id="bg" cx="50%" cy="45%" r="60%">
|
||||
<stop offset="0%" stop-color="#c4a265" stop-opacity="0.35"/>
|
||||
<stop offset="60%" stop-color="#0a0907" stop-opacity="0"/>
|
||||
<stop offset="0%" stop-color="#3a55c4" stop-opacity="0.35"/>
|
||||
<stop offset="60%" stop-color="#0a0a0c" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="body" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#f5f1e8"/>
|
||||
<stop offset="100%" stop-color="#94908a"/>
|
||||
<stop offset="0%" stop-color="#FBFBFD"/>
|
||||
<stop offset="100%" stop-color="#8891C7"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="screen" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#1f1a10"/>
|
||||
<stop offset="100%" stop-color="#0a0907"/>
|
||||
<stop offset="0%" stop-color="#1c1b21"/>
|
||||
<stop offset="100%" stop-color="#0a0a0c"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#e0c896"/>
|
||||
<stop offset="100%" stop-color="#8b6f47"/>
|
||||
<stop offset="0%" stop-color="#DEE0F0"/>
|
||||
<stop offset="100%" stop-color="#273F94"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="600" height="600" fill="url(#bg)"/>
|
||||
@@ -22,18 +22,18 @@
|
||||
<ellipse cx="0" cy="0" rx="160" ry="14" fill="#000" opacity="0.55"/>
|
||||
</g>
|
||||
<g transform="translate(300 100)">
|
||||
<rect x="-120" y="0" width="240" height="120" rx="36" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<rect x="-120" y="0" width="240" height="120" rx="36" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<rect x="-100" y="20" width="200" height="80" rx="22" fill="url(#screen)"/>
|
||||
<circle cx="-44" cy="60" r="14" fill="url(#accent)"/>
|
||||
<circle cx="44" cy="60" r="14" fill="url(#accent)"/>
|
||||
<path d="M -30 88 Q 0 78 30 88" stroke="url(#accent)" stroke-width="4" fill="none" stroke-linecap="round"/>
|
||||
<rect x="-140" y="140" width="280" height="14" rx="6" fill="#5a4a30"/>
|
||||
<rect x="-128" y="170" width="256" height="50" rx="12" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<rect x="-128" y="240" width="256" height="50" rx="12" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<rect x="-128" y="310" width="256" height="50" rx="12" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<rect x="-100" y="370" width="200" height="14" rx="6" fill="#3a2f1c"/>
|
||||
<circle cx="-72" cy="384" r="20" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<circle cx="72" cy="384" r="20" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<rect x="-140" y="140" width="280" height="14" rx="6" fill="#5a5e7a"/>
|
||||
<rect x="-128" y="170" width="256" height="50" rx="12" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<rect x="-128" y="240" width="256" height="50" rx="12" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<rect x="-128" y="310" width="256" height="50" rx="12" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<rect x="-100" y="370" width="200" height="14" rx="6" fill="#3a3d52"/>
|
||||
<circle cx="-72" cy="384" r="20" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
<circle cx="72" cy="384" r="20" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
</g>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#94908a" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU BELLABOT</text>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#8891C7" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU BELLABOT</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
@@ -1,31 +1,31 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" role="img" aria-label="Pudu CC1 cleaning robot silhouette">
|
||||
<defs>
|
||||
<radialGradient id="bg" cx="50%" cy="55%" r="60%">
|
||||
<stop offset="0%" stop-color="#c4a265" stop-opacity="0.32"/>
|
||||
<stop offset="60%" stop-color="#0a0907" stop-opacity="0"/>
|
||||
<stop offset="0%" stop-color="#3a55c4" stop-opacity="0.32"/>
|
||||
<stop offset="60%" stop-color="#0a0a0c" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="body" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#f5f1e8"/>
|
||||
<stop offset="100%" stop-color="#94908a"/>
|
||||
<stop offset="0%" stop-color="#FBFBFD"/>
|
||||
<stop offset="100%" stop-color="#8891C7"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#e0c896"/>
|
||||
<stop offset="100%" stop-color="#8b6f47"/>
|
||||
<stop offset="0%" stop-color="#DEE0F0"/>
|
||||
<stop offset="100%" stop-color="#273F94"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="600" height="600" fill="url(#bg)"/>
|
||||
<g transform="translate(300 360)">
|
||||
<ellipse cx="0" cy="120" rx="200" ry="20" fill="#000" opacity="0.55"/>
|
||||
<rect x="-180" y="-180" width="360" height="240" rx="40" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<rect x="-160" y="-160" width="160" height="100" rx="18" fill="#0a0907"/>
|
||||
<rect x="-180" y="-180" width="360" height="240" rx="40" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<rect x="-160" y="-160" width="160" height="100" rx="18" fill="#0a0a0c"/>
|
||||
<rect x="-150" y="-150" width="140" height="14" rx="6" fill="url(#accent)" opacity="0.9"/>
|
||||
<rect x="-150" y="-130" width="100" height="10" rx="4" fill="#5a4a30"/>
|
||||
<rect x="-150" y="-110" width="120" height="10" rx="4" fill="#5a4a30"/>
|
||||
<circle cx="120" cy="-110" r="34" fill="#1f1a10" stroke="#5a4a30" stroke-width="2"/>
|
||||
<rect x="-150" y="-130" width="100" height="10" rx="4" fill="#5a5e7a"/>
|
||||
<rect x="-150" y="-110" width="120" height="10" rx="4" fill="#5a5e7a"/>
|
||||
<circle cx="120" cy="-110" r="34" fill="#1c1b21" stroke="#5a5e7a" stroke-width="2"/>
|
||||
<circle cx="120" cy="-110" r="14" fill="url(#accent)"/>
|
||||
<rect x="-170" y="80" width="340" height="30" rx="8" fill="#0a0907"/>
|
||||
<circle cx="-130" cy="110" r="22" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<circle cx="130" cy="110" r="22" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<rect x="-170" y="80" width="340" height="30" rx="8" fill="#0a0a0c"/>
|
||||
<circle cx="-130" cy="110" r="22" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
<circle cx="130" cy="110" r="22" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
</g>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#94908a" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU CC1 CLEANING ROBOT</text>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#8891C7" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU CC1 CLEANING ROBOT</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -1,35 +1,35 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" role="img" aria-label="Pudu KettyBot service robot silhouette">
|
||||
<defs>
|
||||
<radialGradient id="bg" cx="50%" cy="45%" r="60%">
|
||||
<stop offset="0%" stop-color="#c4a265" stop-opacity="0.32"/>
|
||||
<stop offset="60%" stop-color="#0a0907" stop-opacity="0"/>
|
||||
<stop offset="0%" stop-color="#3a55c4" stop-opacity="0.32"/>
|
||||
<stop offset="60%" stop-color="#0a0a0c" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="body" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#f5f1e8"/>
|
||||
<stop offset="100%" stop-color="#94908a"/>
|
||||
<stop offset="0%" stop-color="#FBFBFD"/>
|
||||
<stop offset="100%" stop-color="#8891C7"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="screen" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#0a0907"/>
|
||||
<stop offset="100%" stop-color="#3a2f1c"/>
|
||||
<stop offset="0%" stop-color="#0a0a0c"/>
|
||||
<stop offset="100%" stop-color="#3a3d52"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#e0c896"/>
|
||||
<stop offset="100%" stop-color="#c4a265"/>
|
||||
<stop offset="0%" stop-color="#DEE0F0"/>
|
||||
<stop offset="100%" stop-color="#3a55c4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="600" height="600" fill="url(#bg)"/>
|
||||
<g transform="translate(300 110)">
|
||||
<rect x="-110" y="0" width="220" height="280" rx="28" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<rect x="-110" y="0" width="220" height="280" rx="28" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<rect x="-92" y="22" width="184" height="240" rx="18" fill="url(#screen)"/>
|
||||
<g transform="translate(0 110)">
|
||||
<circle cx="-30" cy="0" r="12" fill="url(#accent)"/>
|
||||
<circle cx="30" cy="0" r="12" fill="url(#accent)"/>
|
||||
<path d="M -22 30 Q 0 18 22 30" stroke="url(#accent)" stroke-width="3" fill="none" stroke-linecap="round"/>
|
||||
</g>
|
||||
<rect x="-130" y="300" width="260" height="14" rx="6" fill="#5a4a30"/>
|
||||
<path d="M -120 320 L 120 320 L 100 460 L -100 460 Z" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<circle cx="-70" cy="460" r="22" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<circle cx="70" cy="460" r="22" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<rect x="-130" y="300" width="260" height="14" rx="6" fill="#5a5e7a"/>
|
||||
<path d="M -120 320 L 120 320 L 100 460 L -100 460 Z" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<circle cx="-70" cy="460" r="22" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
<circle cx="70" cy="460" r="22" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
</g>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#94908a" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU KETTYBOT</text>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#8891C7" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU KETTYBOT</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -1,29 +1,29 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" role="img" aria-label="Pudu D-Series industrial delivery robot silhouette">
|
||||
<defs>
|
||||
<radialGradient id="bg" cx="50%" cy="55%" r="60%">
|
||||
<stop offset="0%" stop-color="#c4a265" stop-opacity="0.32"/>
|
||||
<stop offset="60%" stop-color="#0a0907" stop-opacity="0"/>
|
||||
<stop offset="0%" stop-color="#3a55c4" stop-opacity="0.32"/>
|
||||
<stop offset="60%" stop-color="#0a0a0c" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="body" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#f5f1e8"/>
|
||||
<stop offset="100%" stop-color="#6b6862"/>
|
||||
<stop offset="0%" stop-color="#FBFBFD"/>
|
||||
<stop offset="100%" stop-color="#6a73a5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#e0c896"/>
|
||||
<stop offset="100%" stop-color="#c4a265"/>
|
||||
<stop offset="0%" stop-color="#DEE0F0"/>
|
||||
<stop offset="100%" stop-color="#3a55c4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="600" height="600" fill="url(#bg)"/>
|
||||
<g transform="translate(300 380)">
|
||||
<ellipse cx="0" cy="120" rx="200" ry="18" fill="#000" opacity="0.55"/>
|
||||
<rect x="-180" y="-220" width="360" height="320" rx="36" fill="url(#body)" stroke="#3a2f1c" stroke-width="2"/>
|
||||
<rect x="-160" y="-200" width="320" height="40" rx="10" fill="#0a0907"/>
|
||||
<rect x="-160" y="-140" width="320" height="80" rx="12" fill="#1f1a10"/>
|
||||
<rect x="-160" y="-40" width="320" height="80" rx="12" fill="#1f1a10"/>
|
||||
<rect x="-180" y="-220" width="360" height="320" rx="36" fill="url(#body)" stroke="#3a3d52" stroke-width="2"/>
|
||||
<rect x="-160" y="-200" width="320" height="40" rx="10" fill="#0a0a0c"/>
|
||||
<rect x="-160" y="-140" width="320" height="80" rx="12" fill="#1c1b21"/>
|
||||
<rect x="-160" y="-40" width="320" height="80" rx="12" fill="#1c1b21"/>
|
||||
<rect x="-160" y="60" width="320" height="30" rx="10" fill="url(#accent)" opacity="0.85"/>
|
||||
<rect x="-180" y="100" width="360" height="20" rx="8" fill="#0a0907"/>
|
||||
<circle cx="-130" cy="120" r="26" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<circle cx="130" cy="120" r="26" fill="#0a0907" stroke="#5a4a30" stroke-width="2"/>
|
||||
<rect x="-180" y="100" width="360" height="20" rx="8" fill="#0a0a0c"/>
|
||||
<circle cx="-130" cy="120" r="26" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
<circle cx="130" cy="120" r="26" fill="#0a0a0c" stroke="#5a5e7a" stroke-width="2"/>
|
||||
</g>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#94908a" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU D-SERIES</text>
|
||||
<text x="50%" y="96%" text-anchor="middle" fill="#8891C7" font-family="Inter, sans-serif" font-size="20" letter-spacing="6">PUDU D-SERIES</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |