|
14 | 14 | MessageCircle, |
15 | 15 | Github, |
16 | 16 | Twitter, |
17 | | - Linkedin, |
18 | | - Star |
| 17 | + Linkedin |
19 | 18 | } from '@lucide/svelte'; |
20 | 19 | import { enhance } from '$app/forms'; |
21 | 20 |
|
22 | 21 | let isMenuOpen = false; |
23 | 22 | let scrollY = 0; |
| 23 | + /** @type {HTMLFormElement} */ |
24 | 24 | let newsletterForm; |
| 25 | + /** @type {string} */ |
25 | 26 | let newsletterMessage = ''; |
26 | 27 | let showNewsletterMessage = false; |
27 | 28 | |
|
45 | 46 | window.addEventListener('scroll', handleScroll); |
46 | 47 | |
47 | 48 | // Close mobile menu when clicking outside |
| 49 | + /** |
| 50 | + * @param {Event} event |
| 51 | + */ |
48 | 52 | const handleClickOutside = (event) => { |
49 | 53 | const nav = document.querySelector('nav'); |
50 | | - if (isMenuOpen && nav && !nav.contains(event.target)) { |
| 54 | + if (isMenuOpen && nav && !nav.contains(/** @type {Node} */ (event.target))) { |
51 | 55 | isMenuOpen = false; |
52 | 56 | } |
53 | 57 | }; |
|
243 | 247 | method="POST" |
244 | 248 | action="/?/subscribe" |
245 | 249 | class="max-w-md mx-auto" |
246 | | - use:enhance={({ submitter, formData }) => { |
247 | | - submitter.disabled = true; |
| 250 | + use:enhance={({ submitter }) => { |
| 251 | + if (submitter) /** @type {HTMLButtonElement} */ (submitter).disabled = true; |
248 | 252 | return async ({ result, update }) => { |
249 | 253 | if (result.type === 'success') { |
250 | | - newsletterMessage = result.data?.message || 'Successfully subscribed to newsletter!'; |
| 254 | + newsletterMessage = /** @type {string} */ (result.data?.message) || 'Successfully subscribed to newsletter!'; |
251 | 255 | showNewsletterMessage = true; |
252 | 256 | newsletterForm.reset(); |
253 | 257 | setTimeout(() => { showNewsletterMessage = false; }, 5000); |
254 | 258 | } else if (result.type === 'failure') { |
255 | | - newsletterMessage = result.data?.message || 'Failed to subscribe. Please try again.'; |
| 259 | + newsletterMessage = /** @type {string} */ (result.data?.message) || 'Failed to subscribe. Please try again.'; |
256 | 260 | showNewsletterMessage = true; |
257 | 261 | setTimeout(() => { showNewsletterMessage = false; }, 5000); |
258 | 262 | } |
259 | | - submitter.disabled = false; |
| 263 | + if (submitter) /** @type {HTMLButtonElement} */ (submitter).disabled = false; |
260 | 264 | await update(); |
261 | 265 | }; |
262 | 266 | }} |
|
0 commit comments