Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions apps/site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@
content="width=device-width, initial-scale=1.0,viewport-fit=cover"
/>
<meta name="theme-color" content="#000000" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Racing+Sans+One&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Archivo+Black&display=swap"
rel="stylesheet"
/>

<title>Reflections | Projections</title>
</head>
<body>
Expand Down
18 changes: 18 additions & 0 deletions apps/site/public/finish-line.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/site/public/magistral.ttf
Binary file not shown.
Binary file added apps/site/public/pro-racing-slant.ttf
Binary file not shown.
Binary file added apps/site/public/pro-racing.ttf
Binary file not shown.
66 changes: 66 additions & 0 deletions apps/site/public/schedule-mobile.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
113 changes: 113 additions & 0 deletions apps/site/public/schedule.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
82 changes: 82 additions & 0 deletions apps/site/src/components/Home/Schedule/AudioVisualizer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import React, { useState, useEffect } from "react";
import { Flex } from "@chakra-ui/react";
import { motion } from "framer-motion";

interface AudioVisualizerProps {
barCount?: number;
maxHeight?: number;
updateInterval?: number;
variance?: number;
// Spring animation properties
stiffness?: number;
damping?: number;
mass?: number;
}

export const AudioVisualizer: React.FC<AudioVisualizerProps> = ({
barCount = 40,
maxHeight = 60,
updateInterval = 100,
// Default spring physics values
stiffness = 100,
damping = 10,
mass = 1
}) => {
const [heights, setHeights] = useState<number[]>(
Array.from({ length: barCount }, () => Math.random() * maxHeight)
);

useEffect(() => {
const timer = setInterval(() => {
setHeights((prev) =>
prev.map((h) => {
// Create more dramatic changes by using a new random value
// combined with the previous height
const targetHeight = Math.random() * maxHeight;
// Mix previous height (30%) with new random height (70%)
// This creates more noticeable variations while maintaining some continuity
const newHeight = h * 0.3 + targetHeight * 0.7;

// Add extra randomness for occasional peaks
const shouldSpike = Math.random() > 0.85;
const spikeMultiplier = shouldSpike ? Math.random() * 0.7 + 0.3 : 0;

return Math.max(
5,
Math.min(newHeight + maxHeight * spikeMultiplier, maxHeight)
);
})
);
}, updateInterval);
return () => clearInterval(timer);
}, [maxHeight, updateInterval]);

return (
<Flex
flex={2}
alignItems="flex-end"
height={`${maxHeight}px`}
gap="2px"
width="100%"
>
{heights.map((h, idx) => (
<motion.div
key={idx}
style={{
flex: 1,
backgroundColor: "var(--chakra-colors-orange-300)",
borderRadius: "2px",
height: `${h}px`
}}
initial={{ height: 0 }}
animate={{ height: `${h}px` }}
transition={{
stiffness,
damping,
mass
}}
/>
))}
</Flex>
);
};
Loading
Loading