simple-donation
| Install | |
|---|---|
npm install simple-donation |
|
| Latest Version: | 1.4.0 |
| Vue: | 3 |
| License: | MIT |
| Last Updated: | Oct 7, 2026 |
| Links: | GitHub · npm |
Simple donation module for Nuxt
A customizable donation component for Nuxt 3 and Nuxt 4 projects, with PayPal integration for configurable one-time donations.
Live demo
You can see it in action at https://wikiherbalist.com/donazioni.
Features
- Compatible with Nuxt 3 and Nuxt 4
- PayPal integration for secure payments
- Customizable donation amounts
- Multilingual support: EN, IT, ES, FR, DE
- Responsive design with Tailwind CSS
- Configurable color scheme via CSS variables
- Custom FAQ sidebar
- XSS protection via DOMPurify sanitization
- Full TypeScript support
Requirements
- Nuxt 3.x or Nuxt 4.x
- Node.js 20.19.5 or higher
Installation
- Install the package:
npm install simple-donation
# or
yarn add simple-donation
-
Add the module to your
nuxt.config.tsas described in the Configuration section. -
Create a
.envfile in your project root and add your PayPal client ID:
PAYPAL_CLIENT_ID=your_paypal_client_id_here
Usage
Once installed and configured, add the component to any page or component:
<template>
<div>
<h1>Support our project</h1>
<SimpleDonation />
</div>
</template>
Configuration
Configure the module in nuxt.config.ts:
export default defineNuxtConfig({
modules: [
['simple-donation', {
paypal: {
clientId: process.env.PAYPAL_CLIENT_ID
},
colors: {
primary: '#3B82F6', // main buttons and highlights
secondary: '#1E40AF', // secondary elements
accent: '#60A5FA', // accents and focus states
background: '#FFFFFF' // component background
}
}]
]
})
Customization
Language
Use the lang prop to set the component language. Supported values: en, it, es, fr, de. Defaults to en.
<SimpleDonation lang="it" />
All UI labels, step names, button text, and default FAQ content will be displayed in the chosen language.
Color scheme
The four color options available are:
primary: main color for buttons and highlightssecondary: used for secondary elements and hover statesaccent: used for accents and focus statesbackground: background color of the component
Custom FAQs
Pass a faqs prop to override the default FAQ items shown in the sidebar:
<template>
<div>
<SimpleDonation lang="it" :faqs="customFaqs" />
</div>
</template>
<script setup>
const customFaqs = [
{
question: 'Come vengono utilizzate le donazioni?',
answer: 'Le donazioni supportano lo sviluppo e la manutenzione del progetto.'
},
{
question: 'Il sistema è sicuro?',
answer: 'Sì, tutte le transazioni utilizzano sistemi con elevati livelli di sicurezza.'
},
{
question: 'Posso fare una donazione ricorrente?',
answer: 'Al momento supportiamo solo donazioni una tantum.'
}
]
</script>
Each FAQ item needs a question and an answer property. HTML is allowed and automatically sanitized.
New in 1.4
- Nuxt 3 and Nuxt 4 package-level compatibility tests
- Configurable
currency,amountsanddefaultAmount success,errorandcancelevents- Optional built-in alerts with
:show-alerts="false" - SSR-safe FAQ sanitization
- Fixed runtime color configuration
- Safe support for multiple component instances on one page
Example:
<SimpleDonation
lang="it"
currency="EUR"
:amounts="[5, 15, 30, 50]"
:default-amount="15"
:show-alerts="false"
@success="handleDonation"
/>
Roadmap
- Multiple currencies: support for currencies other than EUR.
- Recurring donations: let donors set up a monthly contribution.
- More payment options: including cryptocurrency.
- Automatic thank-you emails to donors after each transaction.
Roadmap
See ROADMAP.md for planned improvements, including recurring donations, server-side PayPal verification, headless/compact modes, accessibility work and CI coverage.
Contributing
Contributions are welcome. Feel free to open an issue or submit a pull request on GitHub.
License
This project is open source and available under the MIT License.
Related Packages
One utility function for module authors to define compiler constants for all bui...
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 1.4.0 | ^3.0 | MIT | |
| 1.3.4 | ^3.0 | MIT | |
| 1.2.3 | ^3.0 | MIT | |
| 1.2.2 | ^3.0 | MIT | |
| 1.2.1 | ^3.0 | MIT | |
| 1.2.0 | ^3.0 | MIT | |
| 1.1.3 | ^3.0 | MIT | |
| 1.1.2 | ^3.0 | MIT | |
| 1.1.0 | ^3.0 | MIT | |
| 1.0.0 | ^3.0 | MIT |