juheon2 commited on
Commit
4402acc
·
1 Parent(s): 5c9aa75

Add Voice Builder CTA

Browse files
Files changed (3) hide show
  1. index.html +1 -17
  2. script.js +0 -26
  3. styles.css +26 -127
index.html CHANGED
@@ -69,7 +69,7 @@
69
  <span class="speaker-item" data-voice="F3">Jessica</span><span class="speaker-separator">, </span>
70
  <span class="speaker-item" data-voice="F4">Olivia</span><span class="speaker-separator">, </span>
71
  <span class="speaker-item" data-voice="F5">Emily</span>
72
- <span class="speaker-item speaker-item-create" id="createVoiceBtn" style="display: none;">+Create your own voice</span>
73
  </div>
74
  </div>
75
  <div class="language-info">
@@ -145,22 +145,6 @@
145
  </div>
146
 
147
  <div class="demo-output-section">
148
- <!-- Coming Soon Modal -->
149
- <div id="comingSoonModal" class="coming-soon-modal">
150
- <div class="coming-soon-modal-overlay"></div>
151
- <div class="coming-soon-modal-content">
152
- <div class="coming-soon-modal-header">
153
- <h3>Coming Soon</h3>
154
- </div>
155
- <div class="coming-soon-modal-body">
156
- <p>Custom voice creation feature will be available soon.</p>
157
- </div>
158
- <div class="coming-soon-modal-footer">
159
- <button class="coming-soon-modal-btn" id="comingSoonCloseBtn">OK</button>
160
- </div>
161
- </div>
162
- </div>
163
-
164
  <!-- Parameters in horizontal layout -->
165
  <div class="demo-params-row">
166
  <div class="demo-param">
 
69
  <span class="speaker-item" data-voice="F3">Jessica</span><span class="speaker-separator">, </span>
70
  <span class="speaker-item" data-voice="F4">Olivia</span><span class="speaker-separator">, </span>
71
  <span class="speaker-item" data-voice="F5">Emily</span>
72
+ <a class="speaker-clone-link" id="createVoiceBtn" href="https://supertonic.supertone.ai/voice-builder" target="_blank" rel="noopener noreferrer">Clone your own voice</a>
73
  </div>
74
  </div>
75
  <div class="language-info">
 
145
  </div>
146
 
147
  <div class="demo-output-section">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  <!-- Parameters in horizontal layout -->
149
  <div class="demo-params-row">
150
  <div class="demo-param">
script.js CHANGED
@@ -2701,9 +2701,6 @@ document.addEventListener('DOMContentLoaded', () => {
2701
  // Speaker list handler (replaces voice select dropdown)
2702
  const speakerList = document.getElementById('speakerList');
2703
  const speakerItems = speakerList ? speakerList.querySelectorAll('.speaker-item[data-voice]') : [];
2704
- const createVoiceBtn = document.getElementById('createVoiceBtn');
2705
- const comingSoonModal = document.getElementById('comingSoonModal');
2706
- const comingSoonCloseBtn = document.getElementById('comingSoonCloseBtn');
2707
  let voiceSelectDisabled = false;
2708
 
2709
  // Update active speaker item (global function for use in switchVoice)
@@ -2963,29 +2960,6 @@ document.addEventListener('DOMContentLoaded', () => {
2963
  }
2964
  }
2965
 
2966
- // Handle "Create your own voice" button
2967
- if (createVoiceBtn && comingSoonModal) {
2968
- createVoiceBtn.addEventListener('click', () => {
2969
- comingSoonModal.classList.add('show');
2970
- });
2971
- }
2972
-
2973
- // Close modal handlers
2974
- if (comingSoonCloseBtn && comingSoonModal) {
2975
- comingSoonCloseBtn.addEventListener('click', () => {
2976
- comingSoonModal.classList.remove('show');
2977
- });
2978
- }
2979
-
2980
- if (comingSoonModal) {
2981
- const overlay = comingSoonModal.querySelector('.coming-soon-modal-overlay');
2982
- if (overlay) {
2983
- overlay.addEventListener('click', () => {
2984
- comingSoonModal.classList.remove('show');
2985
- });
2986
- }
2987
- }
2988
-
2989
  // Language selection handler
2990
  const languageList = document.getElementById('languageList');
2991
  const languageItems = languageList ? languageList.querySelectorAll('.speaker-item[data-language]') : [];
 
2701
  // Speaker list handler (replaces voice select dropdown)
2702
  const speakerList = document.getElementById('speakerList');
2703
  const speakerItems = speakerList ? speakerList.querySelectorAll('.speaker-item[data-voice]') : [];
 
 
 
2704
  let voiceSelectDisabled = false;
2705
 
2706
  // Update active speaker item (global function for use in switchVoice)
 
2960
  }
2961
  }
2962
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2963
  // Language selection handler
2964
  const languageList = document.getElementById('languageList');
2965
  const languageItems = languageList ? languageList.querySelectorAll('.speaker-item[data-language]') : [];
styles.css CHANGED
@@ -957,17 +957,34 @@ body {
957
  margin-right: 0;
958
  }
959
 
960
- .speaker-item-create {
961
- color: #ffffff;
962
- opacity: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
963
  }
964
 
965
- .speaker-item-create:hover {
966
- opacity: 0.8;
967
- text-decoration: underline;
968
- text-decoration-style: solid;
969
- text-decoration-thickness: 1px;
970
- text-underline-offset: 4px;
 
 
 
 
971
  }
972
 
973
  /* Speaker Tooltip */
@@ -986,103 +1003,6 @@ body {
986
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
987
  }
988
 
989
- /* Coming Soon Modal */
990
- .coming-soon-modal {
991
- display: none;
992
- position: fixed;
993
- top: 0;
994
- left: 0;
995
- right: 0;
996
- bottom: 0;
997
- z-index: 10000;
998
- align-items: center;
999
- justify-content: center;
1000
- padding: 1rem;
1001
- }
1002
-
1003
- .coming-soon-modal.show {
1004
- display: flex;
1005
- animation: modalFadeIn 0.2s ease-out;
1006
- }
1007
-
1008
- .coming-soon-modal-overlay {
1009
- position: absolute;
1010
- top: 0;
1011
- left: 0;
1012
- right: 0;
1013
- bottom: 0;
1014
- background: rgba(0, 0, 0, 0.5);
1015
- backdrop-filter: blur(4px);
1016
- }
1017
-
1018
- .coming-soon-modal-content {
1019
- position: relative;
1020
- background: white;
1021
- border-radius: 0.75rem;
1022
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
1023
- max-width: 400px;
1024
- width: 100%;
1025
- overflow: hidden;
1026
- animation: modalSlideUp 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1027
- }
1028
-
1029
- .coming-soon-modal-header {
1030
- padding: 1.5rem 1.5rem 1rem;
1031
- text-align: center;
1032
- border-bottom: 1px solid var(--light-darker);
1033
- }
1034
-
1035
- .coming-soon-modal-header h3 {
1036
- font-family: var(--font-display);
1037
- font-size: 1.25rem;
1038
- font-weight: 500;
1039
- color: var(--text);
1040
- margin: 0;
1041
- }
1042
-
1043
- .coming-soon-modal-body {
1044
- padding: 1.5rem;
1045
- text-align: center;
1046
- }
1047
-
1048
- .coming-soon-modal-body p {
1049
- font-family: var(--font-body);
1050
- font-size: 1rem;
1051
- color: var(--text-secondary);
1052
- margin: 0;
1053
- line-height: 1.6;
1054
- }
1055
-
1056
- .coming-soon-modal-footer {
1057
- padding: 1rem 1.5rem 1.5rem;
1058
- display: flex;
1059
- justify-content: center;
1060
- }
1061
-
1062
- .coming-soon-modal-btn {
1063
- padding: 0.75rem 2rem;
1064
- border-radius: 0.5rem;
1065
- font-family: var(--font-body);
1066
- font-size: 1rem;
1067
- font-weight: 500;
1068
- cursor: pointer;
1069
- transition: all 0.2s ease;
1070
- border: none;
1071
- outline: none;
1072
- background: var(--supertone_blue);
1073
- color: white;
1074
- }
1075
-
1076
- .coming-soon-modal-btn:hover {
1077
- background: var(--primary-dark);
1078
- transform: translateY(-1px);
1079
- box-shadow: 0 4px 12px rgba(34, 124, 255, 0.3);
1080
- }
1081
-
1082
- .coming-soon-modal-btn:active {
1083
- transform: translateY(0);
1084
- }
1085
-
1086
  .demo-generate-btn {
1087
  display: inline-flex;
1088
  align-items: center;
@@ -1672,27 +1592,6 @@ body.comparison-mode .demo-result-item {
1672
  }
1673
  }
1674
 
1675
- /* Modal Animations */
1676
- @keyframes modalFadeIn {
1677
- from {
1678
- opacity: 0;
1679
- }
1680
- to {
1681
- opacity: 1;
1682
- }
1683
- }
1684
-
1685
- @keyframes modalSlideUp {
1686
- from {
1687
- opacity: 0;
1688
- transform: translateY(30px) scale(0.95);
1689
- }
1690
- to {
1691
- opacity: 1;
1692
- transform: translateY(0) scale(1);
1693
- }
1694
- }
1695
-
1696
  /* Language Auto-Detection Toast */
1697
  .language-toast {
1698
  position: fixed;
 
957
  margin-right: 0;
958
  }
959
 
960
+ .speaker-clone-link {
961
+ display: inline-flex;
962
+ align-items: center;
963
+ min-height: 1.8rem;
964
+ margin-left: 0.45rem;
965
+ padding: 0.12rem 0.65rem 0.16rem;
966
+ border: 1px solid rgba(255, 255, 0, 0.45);
967
+ border-radius: 999px;
968
+ background: rgba(255, 255, 0, 0.10);
969
+ color: var(--accent-yellow);
970
+ font-size: 0.9rem;
971
+ font-weight: 600;
972
+ line-height: 1.2;
973
+ text-decoration: none;
974
+ white-space: nowrap;
975
+ transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
976
  }
977
 
978
+ .speaker-clone-link:hover {
979
+ background: rgba(255, 255, 0, 0.16);
980
+ border-color: rgba(255, 255, 0, 0.75);
981
+ color: #ffff7a;
982
+ transform: translateY(-1px);
983
+ }
984
+
985
+ .speaker-clone-link:focus-visible {
986
+ outline: 2px solid rgba(255, 255, 0, 0.45);
987
+ outline-offset: 2px;
988
  }
989
 
990
  /* Speaker Tooltip */
 
1003
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
1004
  }
1005
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1006
  .demo-generate-btn {
1007
  display: inline-flex;
1008
  align-items: center;
 
1592
  }
1593
  }
1594
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1595
  /* Language Auto-Detection Toast */
1596
  .language-toast {
1597
  position: fixed;