banners & tags

TuxCookieConsent

Bottom-right floating card (or bottom strip) with the privacy notice required on public TTI surfaces. Persists the decision in localStorage; emits decision for consumers wiring analytics gating. Compose per-category toggles via the #categories slot — the component is the surface, the host owns categories.

demo

Try it

Click "Show demo" to render a notice keyed to a separate storage slot (tux-cookie-consent-demo). Reset clears the slot and re-shows the prompt.

basic

Default placement

Renders into <body> via Teleport — see the live demo above instead of a card preview.

<tux-cookie-consent @decision="onDecision" />

custom categories

With per-category toggles

Pass a #categories slot to render checkboxes for analytics / marketing / etc. The "Customize preferences" link expands the slot in place.

<tux-cookie-consent>
  <template #categories>
    <div class="space-y-2">
      <label class="flex items-center gap-2">
        <input type="checkbox" checked disabled />
        <span>Necessary (always on)</span>
      </label>
      <label class="flex items-center gap-2">
        <input type="checkbox" v-model="analytics" />
        <span>Analytics — Plausible, anonymized.</span>
      </label>
      <label class="flex items-center gap-2">
        <input type="checkbox" v-model="marketing" />
        <span>Marketing — conversion attribution.</span>
      </label>
    </div>
  </template>
</tux-cookie-consent>

notes

Posture

  • Necessary cookies are implicitly accepted — no toggle.
  • This component is a surface; analytics / marketing wiring lives in the host app.
  • The decision persists in localStorage; no cookie is set by the consent prompt itself.
  • Compatible with the TAMUS digital-accessibility policy linked in the unified TuxFooter legal strip.