Compare commits
2
Commits
e4b962bb1b
...
462d2058e1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
462d2058e1 | ||
|
|
16c5f79f2b |
@@ -54,15 +54,26 @@
|
|||||||
data-testid="inline-lead-form"
|
data-testid="inline-lead-form"
|
||||||
novalidate
|
novalidate
|
||||||
>
|
>
|
||||||
<!-- Honeypot (visually & SR-hidden — bots fill it, real users do not). -->
|
<!--
|
||||||
<div class="absolute -left-[9999px] top-auto w-px h-px overflow-hidden" aria-hidden="true">
|
Honeypot — off-screen positioned, NOT display:none / visibility:hidden
|
||||||
<label for="inline-lead-website">Website</label>
|
(some bots skip those entirely). aria-hidden + sr-only label keep it
|
||||||
|
silent for screen readers; tabindex="-1" + autocomplete="off" keep it
|
||||||
|
out of the tab order and browser autofill. Bots that blindly fill
|
||||||
|
every field will populate `website`, and /api/contact silently drops
|
||||||
|
the submission.
|
||||||
|
-->
|
||||||
|
<div
|
||||||
|
class="absolute -left-[9999px] top-auto w-px h-px overflow-hidden"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<label for="inline-lead-website" class="sr-only">Website</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
id="inline-lead-website"
|
id="inline-lead-website"
|
||||||
name="website"
|
name="website"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
+15
-5
@@ -156,18 +156,28 @@ const trustStats = [
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form id="contact-form" class="space-y-5" novalidate>
|
<form id="contact-form" class="space-y-5" novalidate>
|
||||||
<!-- Honeypot field (anti-spam) - hidden from users -->
|
<!--
|
||||||
<div class="absolute -left-[9999px]" aria-hidden="true">
|
Honeypot field (anti-spam).
|
||||||
<label for="website">
|
Hidden from sighted users via off-screen positioning (NOT display:none /
|
||||||
Website
|
visibility:hidden — some bots skip those entirely and never trip the trap).
|
||||||
|
The wrapper carries aria-hidden so screen-readers don't announce the label
|
||||||
|
or the input, and tabindex="-1" + autocomplete="off" keep it out of the
|
||||||
|
tab order and browser autofill. Bots that blindly fill every field will
|
||||||
|
set a value here, and /api/contact silently discards the submission.
|
||||||
|
-->
|
||||||
|
<div
|
||||||
|
class="absolute -left-[9999px] top-auto w-px h-px overflow-hidden"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<label for="website" class="sr-only">Website</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
id="website"
|
id="website"
|
||||||
name="website"
|
name="website"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Name + Email row -->
|
<!-- Name + Email row -->
|
||||||
|
|||||||
Reference in New Issue
Block a user