diff --git a/.gitignore b/.gitignore
index b1b0fc42ff..c444fd2247 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,4 @@ yarn-error.log
templates/storyteller-stream-green
packages/fakeyou/.env
+packages/storyteller-stream/.env
diff --git a/packages/storyteller-stream/package.json b/packages/storyteller-stream/package.json
index 95fc2f1671..92a005cfc3 100644
--- a/packages/storyteller-stream/package.json
+++ b/packages/storyteller-stream/package.json
@@ -24,7 +24,9 @@
"react-router-dom": "^5.2.0",
"react-scripts": "5.0.0",
"typescript": "^4.5.5",
- "web-vitals": "^2.1.4"
+ "web-vitals": "^2.1.4",
+ "react-wavesurfer.js": "^0.0.5",
+ "wavesurfer.js": "^6.2.0"
},
"scripts": {
"start": "craco start",
diff --git a/packages/storyteller-stream/public/assets/preview/monokuma.wav b/packages/storyteller-stream/public/assets/preview/monokuma.wav
new file mode 100644
index 0000000000..5ce286edac
Binary files /dev/null and b/packages/storyteller-stream/public/assets/preview/monokuma.wav differ
diff --git a/packages/storyteller-stream/public/assets/preview/son-goku.wav b/packages/storyteller-stream/public/assets/preview/son-goku.wav
new file mode 100644
index 0000000000..4b1f55dd6e
Binary files /dev/null and b/packages/storyteller-stream/public/assets/preview/son-goku.wav differ
diff --git a/packages/storyteller-stream/public/assets/preview/stan-lee.wav b/packages/storyteller-stream/public/assets/preview/stan-lee.wav
new file mode 100644
index 0000000000..5537f691ed
Binary files /dev/null and b/packages/storyteller-stream/public/assets/preview/stan-lee.wav differ
diff --git a/packages/storyteller-stream/public/assets/preview/tracer.wav b/packages/storyteller-stream/public/assets/preview/tracer.wav
new file mode 100644
index 0000000000..898010cb28
Binary files /dev/null and b/packages/storyteller-stream/public/assets/preview/tracer.wav differ
diff --git a/packages/storyteller-stream/src/App.scss b/packages/storyteller-stream/src/App.scss
index ddf66743f7..3ae67f8599 100644
--- a/packages/storyteller-stream/src/App.scss
+++ b/packages/storyteller-stream/src/App.scss
@@ -88,6 +88,10 @@ p {
color: rgba(255, 255, 255, 0.8);
}
+.fw-semibold {
+ font-weight: 500;
+}
+
.pre-heading {
font-size: 18px;
color: #fc6b68;
@@ -291,7 +295,7 @@ span.word:after {
.btn-secondary:focus,
.btn-secondary:active {
background-color: #fff;
- color: #443a40;
+ color: #212529;
border: 2.5px solid;
border-color: #fff;
transition: 0.2s;
@@ -299,7 +303,7 @@ span.word:after {
.btn-secondary:hover {
background-color: #ccc;
- color: #443a40;
+ color: #212529;
border: 2.5px solid;
border-color: #ccc;
}
@@ -418,7 +422,7 @@ span.word:after {
opacity: 15%;
width: 115%;
min-height: 150px;
- // background-image: url("assets/hero-audio-wave.png");
+ background-image: url("../public/assets/hero-audio-wave.png");
background-repeat: repeat-x;
animation: animatedBackground 20s linear infinite;
mix-blend-mode: screen;
@@ -513,6 +517,13 @@ span.word:after {
background-size: cover;
}
+.voices-section {
+ width: 100%;
+ text-align: center;
+ margin-top: 50px;
+ margin-bottom: -60px;
+}
+
.insights-section {
max-width: 1000px;
}
@@ -759,6 +770,18 @@ span.word:after {
color: rgba(255, 255, 255, 0.4);
}
+.voice-preview-text {
+ font-size: 14px;
+}
+
+.btn-voice-preview {
+ padding: 0;
+ margin: 0;
+ height: 30px;
+ width: 30px;
+ min-width: 30px;
+}
+
@media (min-width: 992px) {
.panel-title {
position: absolute;
diff --git a/packages/storyteller-stream/src/pages/index/AudioSampleButton.tsx b/packages/storyteller-stream/src/pages/index/AudioSampleButton.tsx
new file mode 100644
index 0000000000..dc4b574c8d
--- /dev/null
+++ b/packages/storyteller-stream/src/pages/index/AudioSampleButton.tsx
@@ -0,0 +1,22 @@
+import React, { useState, useCallback, useEffect } from "react";
+
+interface Props {
+ filename: string;
+ title: string;
+}
+
+function AudioSampleButton(props: Props) {
+ const [isPlaying, setIsPlaying] = useState(false);
+ const [position, setPosition] = useState(0);
+
+ const handleTogglePlay = useCallback(() => {
+ setIsPlaying(false);
+ });
+
+ return (
+ <>
+
+
+
+