Popups and consent
Native dialogs with a focus trap and Escape, a consent bar with settings and a toast stack.
Switch category
Marketing
- Hero17
- Features15
- Logo clouds8
- Stats8
- Pricing11
- Testimonials11
- Call to action11
- FAQ7
- Newsletter12
- Banners9
- Popups and consent7
- Services7
- Use cases6
- Security and trust7
- Changelog and roadmap6
- Launch and waitlist6
- Product tour6
- Press and awards10
- AI features6
- App download5
- Donations and support4
- Problem and solution5
- Objections5
- Calculators10
- Quiz and product finder5
- Free trial5
- Referral and partners10
- Community5
- Open source5
- Manifesto5
- Offer5
- Lead magnet4
- Scroll stories20
- Scroll journeys13
- Scroll effects13
- Scroll reveals and transitions15
Content
- Blog16
- Gallery7
- Team8
- About11
- Content8
- Process7
- Contact8
- Comparison5
- Integrations5
- Error pages5
- Careers7
- Case studies6
- Portfolio6
- Events and webinars6
- Help center6
- Legal pages5
- Documentation4
- Search results5
- Resources and downloads4
- Podcast4
- Editorial15
- Authors and interviews10
- Glossary5
- Recipes5
- Data stories10
- Long reads5
- Surveys and feedback14
- Form states12
- Request forms16
- Applications and sign-ups13
- Address, payment and consent12
App
- Authentication9
- Dashboards6
- Tables6
- Settings5
- AI and chat16
- Calendar5
- Inbox and messages5
- Notifications6
- Files6
- Projects6
- Profiles6
- Onboarding6
- Billing and usage10
- Developer settings15
- Security and access10
- Import, export and history15
- Automation and builders14
- AI answers18
- AI writing and creation13
- AI setup14
- AI assistants9
E-Commerce
Industries
- Menus7
- Appointments6
- Listings6
- Courses6
- Rooms and stays5
- Classes and schedules6
- Medical practice5
- Law firm5
- Salon and spa5
- Automotive5
- Travel5
- Sports club5
- Coworking5
- Museum5
- Cinema5
- School5
- Trades5
- Insurance5
- Banking5
- Personal brand15
- Speakers and media kits10
- Creators15
- Coaching and consulting10
- Artists and musicians15
- Dental practice5
- Veterinary practice5
- Therapy practice5
- Weddings and events5
- Architecture studio5
- Tax advisor5
- Estate agent5
- Florist5
- Winery5
- Daycare5
- Driving school5
- Care services5
- Festival5
Elements
- Buttons20
- Forms and inputs22
- Pickers and selections21
- Special input fields20
- Cards10
- Overlays21
- Navigation elements15
- Menu bars and switchers14
- Data display15
- Progress and states13
- Lists, trees and timelines17
- Charts22
- Comparison charts22
- Statistical charts20
- KPI, live and map charts22
- Text effects15
- Text accents16
- Backgrounds19
- Beams, particles and motion18
- Media19
- Code and JSON8
- Panels and splitters4
Popups and consent
Details
What Popups and consent brings along, read from the registry and the source.
- Area
- Marketing
- Variants
- 7
- Version
- 1.0.0 · since 1.0.0
- File
- components/ui/popup.tsx
- npm packages
- None
- Languages
- English and German, 22 texts of its own
- Studio
- All 7 variants editable
- Build with AI
- Over MCP in Claude, Cursor, Copilot and Codex
Props
The PopupProps interface from components/ui/popup.tsx, with the comments from the code.
variantoptionalPopupVariantcookie-consentnewsletter-modalofferannouncementexit-intentconfirmationtoast-stack
titleoptionalReact.ReactNodedescriptionoptionalReact.ReactNodedefaultOpenoptionalbooleanOpen on load. Server rendered open too, so the content is there without JavaScript.
triggerLabeloptionalstringRenders a button that opens the dialog (or adds a toast)
mediaoptionalReact.ReactNodeA picture: side of newsletter-modal, top of announcement and exit-intent
tagoptionalstringSmall label above the title
actionoptionalPopupActionsecondaryActionoptionalPopupActioncategoriesoptionalConsentCategory[]cookie-consent: the switches in the settings dialog
onConsentoptional(choices: Record<string, boolean>) => voidcookie-consent: called with every category and its state
policyoptional{ label: string; href: string }cookie-consent: privacy policy link
onSubscribeoptional(email: string) => void | Promise<void>newsletter-modal, exit-intent: called with the email
noteoptionalReact.ReactNodenewsletter-modal, exit-intent: small print under the form
valueoptionalstringoffer: the big number and the code
codeoptionalstringitemsoptional{ icon: IconName; title: string; text?: string }[]announcement: what is new
confirmTextoptionalstringconfirmation: the word to type before the action unlocks, e.g. the project name
onConfirmoptional() => voidtoastsoptionalToastItem[]toast-stack: the toasts on screen and the one the trigger adds
durationoptionalnumbertoast-stack: closes each toast after so many milliseconds
Built-in texts
Popups and consent writes these texts itself. The language follows the KitProvider, the labels prop replaces single ones.
Show all 22 texts
| Key | English | German |
|---|---|---|
| close | English Close | German Schließen |
| acceptAll | English Accept all | German Alle akzeptieren |
| rejectAll | English Reject all | German Alle ablehnen |
| settings | English Settings | German Einstellungen |
| save | English Save choices | German Auswahl speichern |
| alwaysOn | English Always on | German Immer aktiv |
| cookies | English Privacy settings | German Datenschutz-Einstellungen |
| English Email address | German E-Mail-Adresse | |
| placeholder | English you@example.com | German du@beispiel.de |
| subscribe | English Subscribe | German Abonnieren |
| sending | English Sending | German Wird gesendet |
| invalid | English Please enter a full email address. | German Bitte gib eine vollständige E-Mail-Adresse ein. |
| failed | English That did not work. Please try again. | German Das hat nicht geklappt. Bitte versuch es noch einmal. |
| done | English Check your inbox to confirm. Thank you! | German Bitte bestätige im Postfach. Danke dir! |
| noThanks | English No thanks | German Nein, danke |
| copy | English Copy | German Kopieren |
| copied | English Copied | German Kopiert |
| cancel | English Cancel | German Abbrechen |
| confirm | English Delete | German Löschen |
| typeToConfirm | English Type {text} to confirm | German Zum Bestätigen {text} eingeben |
| notifications | English Notifications | German Benachrichtigungen |
| dismiss | English Dismiss | German Ausblenden |
Accessibility
Read from the source of the component.
- Popups and consent handles the keys Delete itself.
- Built on the native dialog element. The browser keeps focus inside and closes it with Escape.
- Sets aria-describedby, aria-invalid, aria-label, aria-labelledby and aria-live, so screen readers announce purpose and state.
- Uses the roles alert, alertdialog, region, role, status and switch.
- Announces changes through a live region without moving focus.
- Every field has a label, visible or for screen readers.
- Shows a visible focus ring when used with the keyboard.
- The server renders the starting state in full, JavaScript only adds the interaction.
Motion
- Rises in briefly the first time it comes into view (kit-rise, useInView).
- Moves with the scroll, its progress follows the position on the page.
- Brings animations of its own, calmly timed and without wobble.
- With reduced motion (prefers-reduced-motion) it stays still. 8 places in the code switch motion off then.
Frequent questions
How do I install Popups and consent?
With aiw add @ai-website/popup. The command puts components/ui/popup.tsx into your project, the code is yours from then on. It brings along button and icon. It needs no further npm packages.
Which variants does Popups and consent have?
7 variants, Cookie consent, Newsletter dialog, Offer, Announcement, Exit intent, Confirmation and Toast stack. You pick one with the variant prop, for example variant="newsletter-modal".
Can I translate the texts of Popups and consent?
Yes. Popups and consent carries 22 texts of its own in English and German, such as “Close”, “Accept all” and “Reject all”. The language follows the KitProvider, single texts change through the labels prop.
Can an AI assistant build with Popups and consent?
Yes. Through the MCP server of the aiw CLI, Claude, Cursor, GitHub Copilot, Windsurf, Codex and Gemini find Popups and consent with aiw_components and install it with aiw_add @ai-website/popup. Name the variant in your prompt, for example variant="cookie-consent", and the assistant writes your content straight into the props.
Can I adjust Popups and consent without code?
Yes, in the Studio. All 7 variants are editable there, texts, lists and switches. The Studio writes the matching Popup code to copy.
Similar components, Often combined with
Similar components
More from Marketing, the same area of the kit.
- ServicesWhat you offer, as cards, lists and detail rows.
- Use casesOne product, shown for the people who use it.
- FAQFrequent questions as accordions and grids.
- Security and trustCertificates, data protection, uptime and guarantees.
- All of MarketingSections that sell. Heroes, features, pricing, social proof and calls to action.
Often combined with
Sections that usually sit next to Popups and consent on a page.
Loading the source