{"id":15284290,"url":"https://github.com/tsparticles/vue3","last_synced_at":"2025-05-15T23:03:29.514Z","repository":{"id":103338016,"uuid":"564549595","full_name":"tsparticles/vue3","owner":"tsparticles","description":"Vue.js tsParticles official component","archived":false,"fork":false,"pushed_at":"2025-05-14T08:04:24.000Z","size":1161,"stargazers_count":165,"open_issues_count":12,"forks_count":13,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-14T09:26:15.122Z","etag":null,"topics":["hacktoberfest","javascript","tsparticles","typescript","vue","vue3","vuejs","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,"zenodo":null},"funding":{"github":"matteobruni,tsparticles"}},"created_at":"2022-11-11T00:29:42.000Z","updated_at":"2025-04-26T14:02:57.000Z","dependencies_parsed_at":"2024-01-15T19:45:39.058Z","dependency_job_id":"7db22833-625c-4854-b850-7591f2daafd7","html_url":"https://github.com/tsparticles/vue3","commit_stats":{"total_commits":74,"total_committers":5,"mean_commits":14.8,"dds":0.527027027027027,"last_synced_commit":"fdd086d0eb44eee5beed4acea4937d2e580956d3"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsparticles%2Fvue3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsparticles","download_url":"https://codeload.github.com/tsparticles/vue3/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254133533,"owners_count":22020352,"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","tsparticles","typescript","vue","vue3","vuejs","vuejs3"],"created_at":"2024-09-30T14:52:54.617Z","updated_at":"2025-05-15T23:03:29.421Z","avatar_url":"https://github.com/tsparticles.png","language":"Vue","readme":"[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org)\n\n# @tsparticles/vue3\n\n[![npm](https://img.shields.io/npm/v/@tsparticles/vue3)](https://www.npmjs.com/package/@tsparticles/vue3) [![npm](https://img.shields.io/npm/dm/@tsparticles/vue3)](https://www.npmjs.com/package/@tsparticles/vue3) [![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[![Slack](https://particles.js.org/images/slack.png)](https://join.slack.com/t/tsparticles/shared_invite/enQtOTcxNTQxNjQ4NzkxLWE2MTZhZWExMWRmOWI5MTMxNjczOGE1Yjk0MjViYjdkYTUzODM3OTc5MGQ5MjFlODc4MzE0N2Q1OWQxZDc1YzI) [![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/vue3\n```\n\n## Usage\n\n```javascript\nimport Particles from \"@tsparticles/vue3\";\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\ncreateApp(App).use(Particles, {\n  init: async engine =\u003e {\n    // await loadFull(engine); // you can load the full tsParticles library from \"tsparticles\" if you need it\n    await loadSlim(engine); // or you can load the slim version from \"@tsparticles/slim\" if don't need Shapes or Animations\n  },\n});\n```\n\n### Demo config\n\n```html\n\u003ctemplate\u003e\n    \u003cdiv id=\"app\"\u003e\n        \u003cvue-particles id=\"tsparticles\" @particles-loaded=\"particlesLoaded\" url=\"http://foo.bar/particles.json\" /\u003e\n\n        \u003cvue-particles\n            id=\"tsparticles\"\n            @particles-loaded=\"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                        },\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                            outModes: 'bounce',\n                            random: false,\n                            speed: 6,\n                            straight: false\n                        },\n                        number: {\n                            density: {\n                                enable: true,\n                            },\n                            value: 80\n                        },\n                        opacity: {\n                            value: 0.5\n                        },\n                        shape: {\n                            type: 'circle'\n                        },\n                        size: {\n                            value: { min: 1, max: 5 }\n                        }\n                    },\n                    detectRetina: true\n                }\"\n        /\u003e\n    \u003c/div\u003e\n\u003c/template\u003e\n```\n\n```javascript\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/vue3\";\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 `@tsparticles/vue2` to `@tsparticles/vue3`\n-   Update the `node_modules` folder executing `npm install` or `yarn`\n-   Change the `use` function from `Vue.use(Particles, { init: /* omissis */ })`\n    to `createApp(App).use(Particles, { init: /* omissis */ })`.\n\nThe `\u003cvue-particles /\u003e` tag syntax remains the same, so you don't need to do any additional action.\n","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":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsparticles%2Fvue3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsparticles%2Fvue3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsparticles%2Fvue3/lists"}