{"id":15019507,"url":"https://github.com/tsparticles/vue","last_synced_at":"2025-10-24T12:31:26.281Z","repository":{"id":194978926,"uuid":"683479687","full_name":"tsparticles/vue","owner":"tsparticles","description":"tsParticles official Vue.js component library","archived":false,"fork":false,"pushed_at":"2025-02-09T13:09:19.000Z","size":378,"stargazers_count":8,"open_issues_count":12,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-09T14:22:42.307Z","etag":null,"topics":["hacktoberfest","javascript","nuxt","nuxt2","nuxt3","tsparticles","typescript","vue","vuejs","vuejs2","vuejs3"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsparticles.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"matteobruni,tsparticles"}},"created_at":"2023-08-26T17:50:06.000Z","updated_at":"2024-11-26T21:03:42.000Z","dependencies_parsed_at":"2024-01-11T21:49:32.424Z","dependency_job_id":"3b5099b2-9884-45ec-aaa2-442d058eb150","html_url":"https://github.com/tsparticles/vue","commit_stats":{"total_commits":6,"total_committers":2,"mean_commits":3.0,"dds":"0.33333333333333337","last_synced_commit":"3db8373bce10c2260e69902fab5f7cc9bdb8137a"},"previous_names":["tsparticles/vue"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsparticles","download_url":"https://codeload.github.com/tsparticles/vue/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237964666,"owners_count":19394439,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","javascript","nuxt","nuxt2","nuxt3","tsparticles","typescript","vue","vuejs","vuejs2","vuejs3"],"created_at":"2024-09-24T19:53:37.751Z","updated_at":"2025-10-24T12:31:20.883Z","avatar_url":"https://github.com/tsparticles.png","language":"Vue","funding_links":["https://github.com/sponsors/matteobruni,tsparticles","https://github.com/sponsors/matteobruni","https://www.buymeacoffee.com/matteobruni","https://img.buymeacoffee.com/button-api/?text=Buy"],"categories":[],"sub_categories":[],"readme":"[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org)\n\n# @tsparticles/vue\n\n[![npm](https://img.shields.io/npm/v/@tsparticles/vue)](https://www.npmjs.com/package/@tsparticles/vue) [![npm](https://img.shields.io/npm/dm/@tsparticles/vue)](https://www.npmjs.com/package/@tsparticles/vue) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni)\n\nOfficial [tsParticles](https://github.com/matteobruni/tsparticles) VueJS 3.x component\n\n[![Discord](https://particles.js.org/images/discord.png)](https://discord.gg/hACwv45Hme) [![Telegram](https://particles.js.org/images/telegram.png)](https://t.me/tsparticles)\n\n[![tsParticles Product Hunt](https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=186113\u0026theme=light)](https://www.producthunt.com/posts/tsparticles?utm_source=badge-featured\u0026utm_medium=badge\u0026utm_souce=badge-tsparticles\") \u003ca href=\"https://www.buymeacoffee.com/matteobruni\"\u003e\u003cimg src=\"https://img.buymeacoffee.com/button-api/?text=Buy me a beer\u0026emoji=🍺\u0026slug=matteobruni\u0026button_colour=5F7FFF\u0026font_colour=ffffff\u0026font_family=Arial\u0026outline_colour=000000\u0026coffee_colour=FFDD00\"\u003e\u003c/a\u003e\n\n## Installation\n\n```shell script\nyarn add @tsparticles/vue\n```\n\n## Usage\n\n```javascript\nimport Particles from \"@tsparticles/vue\";\n\ncreateApp(App).use(Particles);\n```\n\n### Demo config\n\n```html\n\u003ctemplate\u003e\n    \u003cdiv id=\"app\"\u003e\n        \u003cvue-particles\n            id=\"tsparticles\"\n            :particlesInit=\"particlesInit\"\n            :particlesLoaded=\"particlesLoaded\"\n            url=\"http://foo.bar/particles.json\"\n        /\u003e\n\n        \u003cvue-particles\n            id=\"tsparticles\"\n            :particlesInit=\"particlesInit\"\n            :particlesLoaded=\"particlesLoaded\"\n            :options=\"{\n                    background: {\n                        color: {\n                            value: '#0d47a1'\n                        }\n                    },\n                    fpsLimit: 120,\n                    interactivity: {\n                        events: {\n                            onClick: {\n                                enable: true,\n                                mode: 'push'\n                            },\n                            onHover: {\n                                enable: true,\n                                mode: 'repulse'\n                            },\n                            resize: true\n                        },\n                        modes: {\n                            bubble: {\n                                distance: 400,\n                                duration: 2,\n                                opacity: 0.8,\n                                size: 40\n                            },\n                            push: {\n                                quantity: 4\n                            },\n                            repulse: {\n                                distance: 200,\n                                duration: 0.4\n                            }\n                        }\n                    },\n                    particles: {\n                        color: {\n                            value: '#ffffff'\n                        },\n                        links: {\n                            color: '#ffffff',\n                            distance: 150,\n                            enable: true,\n                            opacity: 0.5,\n                            width: 1\n                        },\n                        move: {\n                            direction: 'none',\n                            enable: true,\n                            outMode: 'bounce',\n                            random: false,\n                            speed: 6,\n                            straight: false\n                        },\n                        number: {\n                            density: {\n                                enable: true,\n                                area: 800\n                            },\n                            value: 80\n                        },\n                        opacity: {\n                            value: 0.5\n                        },\n                        shape: {\n                            type: 'circle'\n                        },\n                        size: {\n                            random: true,\n                            value: 5\n                        }\n                    },\n                    detectRetina: true\n                }\"\n        /\u003e\n    \u003c/div\u003e\n\u003c/template\u003e\n```\n\n```javascript\n//import { loadFull } from \"tsparticles\"; // if you are going to use `loadFull`, install the \"tsparticles\" package too.\nimport { loadSlim } from \"@tsparticles/slim\"; // if you are going to use `loadSlim`, install the \"@tsparticles/slim\" package too.\n\nconst particlesInit = async engine =\u003e {\n    //await loadFull(engine);\n    await loadSlim(engine);\n};\n\nconst particlesLoaded = async container =\u003e {\n    console.log(\"Particles container loaded\", container);\n};\n```\n\n### TypeScript errors\n\nIf TypeScript returns error while importing/using Particles plugin try adding the following import before the previous\ncode:\n\n```typescript\ndeclare module \"@tsparticles/vue\";\n```\n\n## Demos\n\nThe demo website is [here](https://particles.js.org)\n\n\u003chttps://particles.js.org\u003e\n\nThere's also a CodePen collection actively maintained and updated [here](https://codepen.io/collection/DPOage)\n\n\u003chttps://codepen.io/collection/DPOage\u003e\n\n## Migrating from Vue 2.x to Vue 3.x\n\nIf you are migrating your project from Vue 2.x to 3.x you need to these steps:\n\n-   Change the dependency from `vue2-particles` to `@tsparticles/vue`\n-   Update the `node_modules` folder executing `npm install` or `yarn`\n-   Change the `use` function from `Vue.use(Particles)` to `createApp(App).use(Particles)`.\n\nThe `\u003cParticles /\u003e` tag syntax remains the same, so you don't need to do any additional action.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsparticles%2Fvue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsparticles%2Fvue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsparticles%2Fvue/lists"}