Zoeken...  ⌘K GitHub

FormMini Forms

Minimaal contactformulier.

/form-mini
src/components/forms/FormMini.astro
---
interface Props {
  placeholder?: string;
  submitLabel?: string;
  label?: string;
  name?: string;
  successText?: string;
}

const {
  placeholder = "Jouw e-mailadres",
  submitLabel = "Aanmelden",
  label = "Nieuwsbrief",
  name = "email",
  successText = "✓ Je staat op de lijst",
} = Astro.props;
---

<div class="fmn-wrap">
  {label && <span class="fmn-label">{label}</span>}
  <form class="fmn-form" onsubmit="return false;" novalidate>
    <input
      class="fmn-input"
      type="email"
      name={name}
      placeholder={placeholder}
      required
      autocomplete="email"
      aria-label={placeholder}
    />
    <button class="fmn-btn" type="submit">{submitLabel}</button>
  </form>
  <p class="fmn-hint">Geen spam. Afmelden kan altijd.</p>
</div>

<style>
  .fmn-wrap { display: inline-flex; flex-direction: column; gap: 0.5rem; }
  .fmn-label {
    font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
    color: var(--color-accent, #6366f1);
  }
  .fmn-form {
    display: flex; align-items: stretch;
    background: #fff; border: 1.5px solid #ddd; border-radius: 8px;
    overflow: hidden; transition: border-color 0.2s, box-shadow 0.2s;
  }
  .fmn-form:focus-within {
    border-color: var(--color-accent, #6366f1);
    box-shadow: 0 0 0 3px rgba(99,102,241,0.12);
  }
  .fmn-input {
    flex: 1; padding: 0.65rem 0.9rem; border: none; font-size: 0.9rem;
    color: var(--color-primary, #0a0a0a); background: transparent; font-family: inherit;
    min-width: 0;
  }
  .fmn-input:focus { outline: none; }
  .fmn-btn {
    padding: 0.65rem 1.1rem; background: var(--color-accent, #6366f1); color: #fff;
    border: none; font-size: 0.875rem; font-weight: 600; cursor: pointer;
    transition: opacity 0.2s; white-space: nowrap; flex-shrink: 0;
  }
  .fmn-btn:hover { opacity: 0.88; }
  .fmn-hint { font-size: 0.72rem; color: #aaa; margin: 0; }
</style>

Props

Prop Type Default Beschrijving
headline string Formuliertitel

* = verplicht