Luigi commited on
Commit
fb531d5
·
verified ·
1 Parent(s): 16ec358

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +248 -65
index.html CHANGED
@@ -3,7 +3,7 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Autotutorial.ai - Create Video Tutorials Effortlessly</title>
7
  <!-- Tailwind CSS CDN for styling -->
8
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/tailwind.min.css" rel="stylesheet">
9
  <!-- Font Awesome CDN for icons -->
@@ -13,34 +13,97 @@
13
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
14
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
15
  <style>
16
- body { font-family: 'Inter', sans-serif; }
17
- .btn-primary { @apply bg-blue-600 hover:bg-blue-700 text-white font-semibold py-2 px-4 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50 transition-colors duration-200; }
18
- .btn-primary:disabled { @apply bg-blue-300 cursor-not-allowed hover:bg-blue-300 focus:ring-0; }
19
- .btn-secondary { @apply bg-gray-200 hover:bg-gray-300 text-gray-700 font-semibold py-2 px-4 rounded focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-opacity-50 transition-colors duration-200; }
20
- .input-field { @apply shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline; }
 
 
 
 
 
 
 
 
 
21
  .input-label { @apply block text-gray-700 text-sm font-bold mb-2; }
22
- .status-box { @apply border rounded p-4 mb-4; }
 
 
 
 
23
  .error-text { @apply text-red-500 mt-2 text-sm; }
24
- .video-player-container { @apply rounded overflow-hidden shadow-xl; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  </style>
26
  </head>
27
- <body class="bg-gray-100 p-8">
28
- <div class="max-w-4xl mx-auto bg-white shadow-lg rounded-lg overflow-hidden">
29
  <!-- Header Section -->
30
- <header class="bg-blue-700 p-6 text-white">
31
- <h1 class="text-2xl font-bold"><i class="fas fa-video mr-2"></i> Autotutorial.ai</h1>
32
- <p class="text-sm mt-1">Effortlessly Generate Professional Video Tutorials</p>
33
  </header>
34
 
 
 
 
 
 
 
 
 
 
 
35
  <!-- Main Content Area -->
36
- <div class="p-8">
37
- <!-- Tutorial Input Section -->
38
- <section class="mb-6">
39
- <h2 class="text-xl font-semibold mb-4 text-gray-800">Tutorial Settings</h2>
40
- <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
 
 
41
  <div>
42
- <label for="tutorialTopic" class="input-label">Tutorial Topic <span class="text-gray-500">(e.g., "Getting Started with React")</span></label>
43
- <input type="text" id="tutorialTopic" class="input-field" placeholder="Enter tutorial topic" value="Mastering Asynchronous JavaScript" required>
44
  </div>
45
  <div>
46
  <label for="desiredDuration" class="input-label">Desired Duration (Minutes)</label>
@@ -52,69 +115,189 @@
52
  </select>
53
  </div>
54
  </div>
55
- </section>
56
 
57
- <!-- API Keys Section -->
58
- <section class="mb-6">
59
- <h2 class="text-xl font-semibold mb-4 text-gray-800">API Keys <span class="text-gray-500">(Optional, for advanced features)</span></h2>
60
- <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
61
- <div>
62
- <label for="openaiApiKey" class="input-label">OpenAI API Key <span class="text-gray-500">(For script generation)</span></label>
63
- <input type="text" id="openaiApiKey" class="input-field" placeholder="Enter your OpenAI API Key (Optional)" value="sk-YOUR_OPENAI_API_KEY_DEMO" >
 
 
 
 
64
  </div>
65
- <div>
66
- <label for="videoGenApiKey" class="input-label">Video Generation API Key <span class="text-gray-500">(For advanced video synthesis)</span></label>
67
- <input type="text" id="videoGenApiKey" class="input-field" placeholder="Enter Video API Key (Optional)" value="vg-YOUR_VIDEO_GEN_API_KEY_DEMO">
 
 
 
 
 
 
 
 
 
 
68
  </div>
69
- </div>
70
- <p class="text-sm text-gray-500 mt-2">These API keys are optional and enhance the tutorial generation process. You can still generate basic tutorials without them.</p>
71
- </section>
72
 
73
- <!-- Action Buttons -->
74
- <section class="mb-6 flex justify-between">
75
- <button id="generateButton" class="btn-primary"><i class="fas fa-magic mr-2"></i> Generate Tutorial</button>
76
- <button id="resetButton" class="btn-secondary hidden"><i class="fas fa-redo mr-2"></i> Reset</button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  </section>
78
 
79
- <!-- Status and Error Area -->
80
- <section id="statusSection" class="status-box bg-gray-50">
81
- <h3 class="font-semibold text-gray-700 mb-2"><i class="fas fa-spinner fa-spin mr-2"></i> Status Updates</h3>
82
- <div id="statusMessages">
83
- <p class="text-gray-600"><i class="fas fa-check-circle text-green-500 mr-1"></i> Ready to generate tutorial. Please click "Generate Tutorial".</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  </div>
85
- <p id="errorMessage" class="error-text hidden"></p>
86
  </section>
87
 
88
- <!-- Video Output Section -->
89
- <section id="videoOutputSection" class="hidden">
90
- <h2 class="text-xl font-semibold mb-4 text-gray-800"><i class="fas fa-film mr-2"></i> Generated Tutorial Preview</h2>
91
- <div class="video-player-container">
92
- <video id="tutorialVideo" controls width="100%">
93
- <source src="https://archive.org/download/ElephantsDream/ed_1024_512.mp4" type="video/mp4">
94
- Your browser does not support the video tag.
95
- </video>
96
- </div>
97
- <div class="mt-4 flex justify-between items-center">
 
 
 
 
98
  <div>
99
- <p class="text-gray-700"><strong>Tutorial Title:</strong> <span id="videoTitle">Mastering Asynchronous JavaScript in 10 Minutes</span></p>
100
- <p class="text-gray-500 text-sm">Generated based on your topic input.</p>
 
 
 
 
101
  </div>
102
  <div>
103
- <a href="#" id="downloadButton" class="btn-primary" download="tutorial.mp4"><i class="fas fa-download mr-2"></i> Download Video</a>
 
 
 
 
 
 
104
  </div>
 
 
 
 
 
 
 
 
 
105
  </div>
 
106
  </section>
107
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
 
109
  <!-- Footer Section -->
110
- <footer class="bg-gray-200 p-4 text-center text-gray-600 text-sm">
111
- © 2023 Autotutorial.ai. All rights reserved. | <a href="#" class="hover:underline">Terms of Service</a> | <a href="#" class="hover:underline">Privacy Policy</a>
112
  </footer>
113
  </div>
114
 
115
  <script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  document.getElementById('generateButton').addEventListener('click', function() {
117
- const topic = document.getElementById('tutorialTopic').value;
 
118
  const duration = document.getElementById('desiredDuration').value;
119
  const openaiKey = document.getElementById('openaiApiKey').value;
120
  const videoGenKey = document.getElementById('videoGenApiKey').value;
@@ -157,12 +340,11 @@
157
  }, false);
158
  }, false);
159
  }, false);
160
-
161
-
162
  });
163
 
164
  document.getElementById('resetButton').addEventListener('click', function() {
165
- const statusMessagesDiv = document.getElementById('statusMessages');
 
166
  const errorMessageDiv = document.getElementById('errorMessage');
167
  const generateButton = document.getElementById('generateButton');
168
  const resetButton = document.getElementById('resetButton');
@@ -182,7 +364,8 @@
182
 
183
 
184
  function simulateStep(statusDiv, message, delay, callback, isSuccess = true) {
185
- setTimeout(function() {
 
186
  const messageElement = document.createElement('p');
187
  if (isSuccess) {
188
  messageElement.classList.add('text-gray-600');
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Autotutorial.ai Desktop - Video Tutorial Generator</title> <!-- More Desktop-App Like Title -->
7
  <!-- Tailwind CSS CDN for styling -->
8
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/tailwind.min.css" rel="stylesheet">
9
  <!-- Font Awesome CDN for icons -->
 
13
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
14
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
15
  <style>
16
+ body { font-family: 'Inter', sans-serif; background-color: #f3f4f6; } /* Lighter background */
17
+ .app-container { max-width: 1200px; margin: 2rem auto; background-color: #fff; border-radius: 0.75rem; overflow: hidden; box-shadow: 0 4px 8px rgba(0,0,0,0.08); } /* Increased max-width and shadow */
18
+ header { background-image: linear-gradient(to right, #4f46e5, #6366f1); padding: 2rem 2.5rem; color: white; } /* Gradient header */
19
+ header h1 { font-size: 2.5rem; font-weight: 700; margin-bottom: 0.5rem; } /* Larger title */
20
+ header p { font-size: 1.125rem; color: #d1d5db; } /* Subtitle styling */
21
+ nav { background-color: #e5e7eb; border-bottom: 1px solid #d2d6da; } /* Navigation bar */
22
+ nav ul { display: flex; padding-left: 2.5rem; }
23
+ nav li { margin-right: 2rem; }
24
+ nav a { display: block; padding: 1rem 0; color: #4b5563; font-weight: 500; transition: color 0.2s; border-bottom: 2px solid transparent; }
25
+ nav a:hover, nav a.active { color: #374151; border-bottom-color: #4f46e5; } /* Active state and hover */
26
+ nav a.active { color: #4f46e5; }
27
+ main { padding: 2.5rem; }
28
+ section { margin-bottom: 2.5rem; } /* Increased section spacing */
29
+ section h2 { font-size: 1.75rem; font-weight: 600; color: #374151; margin-bottom: 1.5rem; } /* Section title styling */
30
  .input-label { @apply block text-gray-700 text-sm font-bold mb-2; }
31
+ .input-field { @apply shadow-sm appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:ring-2 focus:ring-blue-500; } /* Shadow on inputs */
32
+ .btn-primary { @apply bg-blue-600 hover:bg-blue-700 text-white font-semibold py-2.5 px-5 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50 transition-colors duration-200; } /* Rounded-md buttons and padding */
33
+ .btn-primary:disabled { @apply bg-blue-300 cursor-not-allowed hover:bg-blue-300 focus:ring-0; }
34
+ .btn-secondary { @apply bg-gray-200 hover:bg-gray-300 text-gray-700 font-semibold py-2.5 px-5 rounded-md focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-opacity-50 transition-colors duration-200; } /* Rounded-md buttons and padding */
35
+ .status-box { @apply border rounded-md p-4 mb-4 bg-gray-50 border-gray-200; } /* Rounded status box */
36
  .error-text { @apply text-red-500 mt-2 text-sm; }
37
+ .video-player-container { @apply rounded-md overflow-hidden shadow-md; } /* Rounded video player */
38
+ footer { background-color: #f9fafb; border-top: 1px solid #e5e7eb; padding: 1.5rem 2.5rem; text-center text-gray-500 text-sm; } /* Lighter footer */
39
+ footer a { color: #6b7280; text-decoration: none; }
40
+ footer a:hover { text-decoration: underline; }
41
+ .tutorial-item { @apply bg-white p-4 rounded-md shadow-sm border border-gray-100 hover:shadow-md transition-shadow duration-200 cursor-pointer; } /* Tutorial list item */
42
+ .tutorial-item h3 { @apply font-semibold text-gray-800 mb-1; }
43
+ .tutorial-item p { @apply text-gray-600 text-sm; }
44
+ .tutorial-list-section { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; } /* Responsive tutorial list */
45
+ .settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; } /* Settings grid layout */
46
+ .help-section p { line-height: 1.6; margin-bottom: 1rem; } /* Help section text */
47
+
48
+ /* Basic animation for button clicks */
49
+ .btn-primary:active, .btn-secondary:active {
50
+ transform: scale(0.98);
51
+ }
52
+
53
+ /* Custom Scrollbar (Webkit - Chrome, Safari) - Make it look less default */
54
+ ::-webkit-scrollbar {
55
+ width: 8px; /* Thin scrollbar */
56
+ height: 8px;
57
+ }
58
+ ::-webkit-scrollbar-track {
59
+ background: #f1f1f1; /* Light track background */
60
+ }
61
+ ::-webkit-scrollbar-thumb {
62
+ background: #a8a8a8; /* Gray thumb */
63
+ border-radius: 4px;
64
+ }
65
+ ::-webkit-scrollbar-thumb:hover {
66
+ background: #888; /* Darker gray on hover */
67
+ }
68
+
69
+ /* For Firefox - using CSS only, simpler customization */
70
+ /* No need for complex selectors, just set properties */
71
+ * {
72
+ scrollbar-width: thin;
73
+ scrollbar-color: #a8a8a8 #f1f1f1;
74
+ }
75
+
76
  </style>
77
  </head>
78
+ <body class="bg-gray-100">
79
+ <div class="app-container">
80
  <!-- Header Section -->
81
+ <header>
82
+ <h1 class="text-3xl">Autotutorial.ai Desktop</h1> <!-- Desktop App Title -->
83
+ <p class="text-lg">Effortlessly Generate Professional Video Tutorials</p>
84
  </header>
85
 
86
+ <!-- Navigation Bar -->
87
+ <nav>
88
+ <ul>
89
+ <li><a href="#generate" class="nav-link active" data-section="generate">Generate Tutorial</a></li>
90
+ <li><a href="#history" class="nav-link" data-section="history">Tutorial History</a></li>
91
+ <li><a href="#settings" class="nav-link" data-section="settings">Settings</a></li>
92
+ <li><a href="#help" class="nav-link" data-section="help">Help</a></li>
93
+ </ul>
94
+ </nav>
95
+
96
  <!-- Main Content Area -->
97
+ <main>
98
+ <!-- Generate Tutorial Section (Initially Active) -->
99
+ <section id="generate-section">
100
+ <h2 class="text-2xl">Generate New Tutorial</h2>
101
+ <p class="text-gray-700 mb-6">Enter the topic and duration for your new video tutorial.</p>
102
+
103
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
104
  <div>
105
+ <label for="tutorialTopic" class="input-label">Tutorial Topic <span class="text-gray-500">(e.g., "Getting Started with React Hooks")</span></label>
106
+ <input type="text" id="tutorialTopic" class="input-field" placeholder="Enter tutorial topic" value="Advanced CSS Animations and Transitions" required>
107
  </div>
108
  <div>
109
  <label for="desiredDuration" class="input-label">Desired Duration (Minutes)</label>
 
115
  </select>
116
  </div>
117
  </div>
 
118
 
119
+ <section class="mb-6">
120
+ <h3 class="text-xl font-semibold mb-4 text-gray-800">API Keys <span class="text-gray-500">(Optional, for enhanced features)</span></h3>
121
+ <div class="settings-grid">
122
+ <div>
123
+ <label for="openaiApiKey" class="input-label">OpenAI API Key <span class="text-gray-500">(For script generation)</span></label>
124
+ <input type="text" id="openaiApiKey" class="input-field" placeholder="Enter your OpenAI API Key (Optional)" value="sk-DEMO_OPENAI_KEY">
125
+ </div>
126
+ <div>
127
+ <label for="videoGenApiKey" class="input-label">Video Generation API Key <span class="text-gray-500">(For advanced video synthesis)</span></label>
128
+ <input type="text" id="videoGenApiKey" class="input-field" placeholder="Enter Video API Key (Optional)" value="vg-DEMO_VIDEO_GEN_KEY">
129
+ </div>
130
  </div>
131
+ <p class="text-sm text-gray-500 mt-2">Optional API keys enhance tutorial quality. Basic tutorials work without them.</p>
132
+ </section>
133
+
134
+
135
+ <section class="mb-6 flex justify-between">
136
+ <button id="generateButton" class="btn-primary"><i class="fas fa-magic mr-2"></i> Generate Tutorial</button>
137
+ <button id="resetButton" class="btn-secondary hidden"><i class="fas fa-redo mr-2"></i> Reset</button>
138
+ </section>
139
+
140
+ <section id="statusSection" class="status-box">
141
+ <h3 class="font-semibold text-gray-700 mb-2"><i class="fas fa-info-circle mr-2"></i> Status Updates</h3>
142
+ <div id="statusMessages">
143
+ <p class="text-gray-600"><i class="fas fa-check-circle text-green-500 mr-1"></i> Ready to generate. Click "Generate Tutorial".</p>
144
  </div>
145
+ <p id="errorMessage" class="error-text hidden"></p>
146
+ </section>
 
147
 
148
+ <section id="videoOutputSection" class="hidden">
149
+ <h2 class="text-xl font-semibold mb-4 text-gray-800"><i class="fas fa-film mr-2"></i> Tutorial Preview</h2>
150
+ <div class="video-player-container">
151
+ <video id="tutorialVideo" controls width="100%">
152
+ <source src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4" type="video/mp4"> <!-- More Engaging Demo Video -->
153
+ Your browser does not support the video tag.
154
+ </video>
155
+ </div>
156
+ <div class="mt-4 flex justify-between items-center">
157
+ <div>
158
+ <p class="text-gray-700"><strong>Tutorial Title:</strong> <span id="videoTitle">Advanced CSS Animations and Transitions in 10 Minutes</span></p>
159
+ <p class="text-gray-500 text-sm">Generated tutorial preview.</p>
160
+ </div>
161
+ <div>
162
+ <a href="#" id="downloadButton" class="btn-primary" download="tutorial.mp4"><i class="fas fa-download mr-2"></i> Download Video</a>
163
+ </div>
164
+ </div>
165
+ </section>
166
  </section>
167
 
168
+ <!-- Tutorial History Section (Initially Hidden) -->
169
+ <section id="history-section" class="hidden">
170
+ <h2 class="text-2xl">Tutorial History</h2>
171
+ <p class="text-gray-700 mb-6">Access your previously generated tutorials.</p>
172
+
173
+ <div class="tutorial-list-section">
174
+ <div class="tutorial-item">
175
+ <h3>Mastering JavaScript Promises</h3>
176
+ <p>Generated: October 26, 2023</p>
177
+ <p class="text-blue-600 font-semibold">View Tutorial</p>
178
+ </div>
179
+ <div class="tutorial-item">
180
+ <h3>Introduction to Python for Beginners</h3>
181
+ <p>Generated: October 25, 2023</p>
182
+ <p class="text-blue-600 font-semibold">View Tutorial</p>
183
+ </div>
184
+ <div class="tutorial-item">
185
+ <h3>Building a Simple REST API with Node.js</h3>
186
+ <p>Generated: October 20, 2023</p>
187
+ <p class="text-blue-600 font-semibold">View Tutorial</p>
188
+ </div>
189
+ <!-- Add more tutorial items here -->
190
  </div>
191
+ <p class="mt-4 text-sm text-gray-500">History is simulated for demo purposes.</p>
192
  </section>
193
 
194
+ <!-- Settings Section (Initially Hidden) -->
195
+ <section id="settings-section" class="hidden">
196
+ <h2 class="text-2xl">Settings</h2>
197
+ <p class="text-gray-700 mb-6">Customize your Autotutorial.ai experience.</p>
198
+
199
+ <div class="settings-grid">
200
+ <div>
201
+ <label for="defaultDurationSetting" class="input-label">Default Tutorial Duration</label>
202
+ <select id="defaultDurationSetting" class="input-field">
203
+ <option value="5">5 Minutes</option>
204
+ <option value="10" selected>10 Minutes</option>
205
+ <option value="15">15 Minutes</option>
206
+ </select>
207
+ </div>
208
  <div>
209
+ <label for="videoQualitySetting" class="input-label">Default Video Quality</label>
210
+ <select id="videoQualitySetting" class="input-field">
211
+ <option value="720p" selected>720p (HD)</option>
212
+ <option value="1080p">1080p (Full HD)</option>
213
+ <option value="4k">4K (Ultra HD) - Premium</option>
214
+ </select>
215
  </div>
216
  <div>
217
+ <label for="voiceoverLanguage" class="input-label">Voiceover Language</label>
218
+ <select id="voiceoverLanguage" class="input-field">
219
+ <option value="en-US" selected>English (US)</option>
220
+ <option value="en-GB">English (UK)</option>
221
+ <option value="es-ES">Spanish (ES)</option>
222
+ <option value="fr-FR">French (FR)</option>
223
+ </select>
224
  </div>
225
+ <div>
226
+ <label for="outputFormat" class="input-label">Default Output Format</label>
227
+ <select id="outputFormat" class="input-field">
228
+ <option value="mp4" selected>MP4 (Recommended)</option>
229
+ <option value="mov">MOV</option>
230
+ <option value="webm">WebM</option>
231
+ </select>
232
+ </div>
233
+ <!-- Add more settings as needed -->
234
  </div>
235
+ <p class="mt-4 text-sm text-gray-500">Basic settings for demo purposes.</p>
236
  </section>
237
+
238
+ <!-- Help Section (Initially Hidden) -->
239
+ <section id="help-section" class="hidden">
240
+ <h2 class="text-2xl">Help & Support</h2>
241
+ <p class="text-gray-700 mb-6">Get assistance and learn how to use Autotutorial.ai Desktop.</p>
242
+
243
+ <div class="help-section">
244
+ <p>Welcome to Autotutorial.ai Desktop! This application helps you automatically generate professional video tutorials quickly and easily.</p>
245
+ <p><strong>Getting Started:</strong></p>
246
+ <ol class="list-decimal pl-5 mb-4">
247
+ <li>Navigate to the "Generate Tutorial" section using the top navigation.</li>
248
+ <li>Enter the topic you want to create a tutorial about in the "Tutorial Topic" field.</li>
249
+ <li>Select your desired tutorial duration from the "Desired Duration" dropdown.</li>
250
+ <li>(Optional) Enter your OpenAI and Video Generation API keys for enhanced tutorial generation. These are not required for basic functionality.</li>
251
+ <li>Click the "Generate Tutorial" button.</li>
252
+ <li>Monitor the "Status Updates" section for progress.</li>
253
+ <li>Once generation is complete, preview your tutorial in the "Tutorial Preview" section and download it.</li>
254
+ </ol>
255
+ <p><strong>Tutorial History:</strong></p>
256
+ <p>The "Tutorial History" section allows you to view and access your previously generated tutorials. (This is a simulated demo feature).</p>
257
+ <p><strong>Settings:</strong></p>
258
+ <p>In the "Settings" section, you can customize default preferences such as tutorial duration, video quality, and output format. (These are basic settings for demonstration).</p>
259
+ <p>For further assistance or to report issues, please contact our support team at <a href="mailto:[email protected]">[email protected]</a>.</p>
260
+ </div>
261
+ </section>
262
+
263
+ </main>
264
 
265
  <!-- Footer Section -->
266
+ <footer>
267
+ © 2023 Autotutorial.ai Desktop. All rights reserved. | <a href="#">Terms of Service</a> | <a href="#">Privacy Policy</a> | <a href="#">Contact Us</a>
268
  </footer>
269
  </div>
270
 
271
  <script>
272
+ document.addEventListener('DOMContentLoaded', () => {
273
+ // Navigation functionality
274
+ const navLinks = document.querySelectorAll('nav a.nav-link');
275
+ const sections = document.querySelectorAll('main > section');
276
+
277
+ navLinks.forEach(link => {
278
+ link.addEventListener('click', function(event) {
279
+ event.preventDefault(); // Prevent default link behavior
280
+ const sectionId = this.getAttribute('data-section');
281
+
282
+ // Deactivate all nav links and hide all sections
283
+ navLinks.forEach(nl => nl.classList.remove('active'));
284
+ sections.forEach(sec => sec.classList.add('hidden'));
285
+
286
+ // Activate the clicked nav link and show the corresponding section
287
+ this.classList.add('active');
288
+ document.getElementById(`${sectionId}-section`).classList.remove('hidden');
289
+ });
290
+ });
291
+
292
+ // Keep "Generate Tutorial" section active on initial load
293
+ document.querySelector('nav a.nav-link[data-section="generate"]').classList.add('active');
294
+ document.getElementById('generate-section').classList.remove('hidden');
295
+ });
296
+
297
+
298
  document.getElementById('generateButton').addEventListener('click', function() {
299
+ // ... (same generateButton event listener logic as before, but with updated IDs if needed) ...
300
+ const topic = document.getElementById('tutorialTopic').value;
301
  const duration = document.getElementById('desiredDuration').value;
302
  const openaiKey = document.getElementById('openaiApiKey').value;
303
  const videoGenKey = document.getElementById('videoGenApiKey').value;
 
340
  }, false);
341
  }, false);
342
  }, false);
 
 
343
  });
344
 
345
  document.getElementById('resetButton').addEventListener('click', function() {
346
+ // ... (same resetButton event listener logic as before) ...
347
+ const statusMessagesDiv = document.getElementById('statusMessages');
348
  const errorMessageDiv = document.getElementById('errorMessage');
349
  const generateButton = document.getElementById('generateButton');
350
  const resetButton = document.getElementById('resetButton');
 
364
 
365
 
366
  function simulateStep(statusDiv, message, delay, callback, isSuccess = true) {
367
+ // ... (same simulateStep function as before) ...
368
+ setTimeout(function() {
369
  const messageElement = document.createElement('p');
370
  if (isSuccess) {
371
  messageElement.classList.add('text-gray-600');