From b5fa367c3de5c1060737f7a3cf9ab430c09ef159 Mon Sep 17 00:00:00 2001 From: Rodger Jordas Date: Tue, 5 Jun 2018 01:57:07 +0800 Subject: [PATCH] Add files for initial deployment --- .editorconfig | 9 + .github/CONTRIBUTING.md | 35 + .gitignore | 67 + .markdownlint.json | 4 + .travis.yml | 25 + .vuepress/config.js | 70 + .vuepress/public/hero.png | Bin 0 -> 18107 bytes .../public/icons/android-chrome-192x192.png | Bin 0 -> 6379 bytes .../public/icons/android-chrome-512x512.png | Bin 0 -> 16904 bytes .vuepress/public/icons/apple-touch-icon.png | Bin 0 -> 6919 bytes .vuepress/public/icons/favicon-16x16.png | Bin 0 -> 955 bytes .vuepress/public/icons/favicon-32x32.png | Bin 0 -> 1621 bytes .vuepress/public/icons/mstile-150x150.png | Bin 0 -> 4854 bytes .vuepress/public/icons/safari-pinned-tab.svg | 60 + .vuepress/public/logo.png | Bin 0 -> 6379 bytes .vuepress/public/manifest.json | 21 + README.md | 6 + components-and-libraries/dev-tools.md | 108 + components-and-libraries/frameworks.md | 90 + components-and-libraries/integrations.md | 44 + components-and-libraries/prerendering.md | 5 + components-and-libraries/runtime.md | 5 + components-and-libraries/scaffold.md | 94 + components-and-libraries/ui-components.md | 619 + components-and-libraries/ui-layout.md | 23 + components-and-libraries/ui-utilities.md | 208 + components-and-libraries/utilities.md | 256 + package-lock.json | 11963 ++++++++++++++++ package.json | 32 + projects-using-vue-js/a11y.md | 9 + projects-using-vue-js/apps-websites.md | 133 + projects-using-vue-js/commercial-products.md | 10 + projects-using-vue-js/enterprise-usage.md | 27 + .../interactive-experiences.md | 14 + projects-using-vue-js/open-source.md | 118 + resources/books.md | 17 + resources/community.md | 20 + resources/conferences.md | 5 + resources/examples.md | 104 + resources/external-resources.md | 10 + resources/job-portal.md | 3 + resources/official-examples.md | 7 + resources/official-resources.md | 8 + resources/podcasts.md | 17 + resources/tutorials.md | 126 + resources/youtube-channels.md | 4 + 46 files changed, 14376 insertions(+) create mode 100644 .editorconfig create mode 100644 .github/CONTRIBUTING.md create mode 100644 .gitignore create mode 100644 .markdownlint.json create mode 100644 .travis.yml create mode 100644 .vuepress/config.js create mode 100644 .vuepress/public/hero.png create mode 100644 .vuepress/public/icons/android-chrome-192x192.png create mode 100644 .vuepress/public/icons/android-chrome-512x512.png create mode 100644 .vuepress/public/icons/apple-touch-icon.png create mode 100644 .vuepress/public/icons/favicon-16x16.png create mode 100644 .vuepress/public/icons/favicon-32x32.png create mode 100644 .vuepress/public/icons/mstile-150x150.png create mode 100644 .vuepress/public/icons/safari-pinned-tab.svg create mode 100644 .vuepress/public/logo.png create mode 100644 .vuepress/public/manifest.json create mode 100644 README.md create mode 100644 components-and-libraries/dev-tools.md create mode 100644 components-and-libraries/frameworks.md create mode 100644 components-and-libraries/integrations.md create mode 100644 components-and-libraries/prerendering.md create mode 100644 components-and-libraries/runtime.md create mode 100644 components-and-libraries/scaffold.md create mode 100644 components-and-libraries/ui-components.md create mode 100644 components-and-libraries/ui-layout.md create mode 100644 components-and-libraries/ui-utilities.md create mode 100644 components-and-libraries/utilities.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 projects-using-vue-js/a11y.md create mode 100644 projects-using-vue-js/apps-websites.md create mode 100644 projects-using-vue-js/commercial-products.md create mode 100644 projects-using-vue-js/enterprise-usage.md create mode 100644 projects-using-vue-js/interactive-experiences.md create mode 100644 projects-using-vue-js/open-source.md create mode 100644 resources/books.md create mode 100644 resources/community.md create mode 100644 resources/conferences.md create mode 100644 resources/examples.md create mode 100644 resources/external-resources.md create mode 100644 resources/job-portal.md create mode 100644 resources/official-examples.md create mode 100644 resources/official-resources.md create mode 100644 resources/podcasts.md create mode 100644 resources/tutorials.md create mode 100644 resources/youtube-channels.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..c6c8b362 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..5b927b30 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# Contributing Guide + +1. Make sure you put things in the right category! +2. Always add your items to the end of a list. To be fair, the order is first-come-first-serve. +3. If you think something belongs in the wrong category, or think there needs to be a new category, feel free to edit things too. + +## Projects using Vue.js + +Make sure you put things in the right category. There are two main categories: + +- Open Source +- Apps/Websites + +### Open source + +Open Source section gives the possibility for developers to contribute and be a part of an open source project using their knowledge of the Vue.js. +You should put your project in this category if the following conditions are true: + +- The documentation (README) contains a description of the project, illustration of the project with a demo or screenshots and a CONTRIBUTING section. +- The documentation is in English. +- The project is active and maintained. +- The project accepts contributions. + +The link provided should be the link of the GitHub repository, not the demo. +If you consider your project finished, and it does not need any contributions, consider the apps/website category. + +### Apps/Websites + +Apps/Websites gives the opportunity to showcase the awesome things we can build with Vue.js. +You should put your app/website in this category if the following conditions are true: + +- The website is available without errors or SSL certificate problems, and load in a reasonable amount of time. +- The website is using Vue.js intensively. It should detect Vue with [vue-devtools](https://github.com/vuejs/vue-devtools). +- If you cannot detect Vue with `vue-devtools` due to work at non public pages (e.g. for enterprise website), you can send Pull Request with screenshot that detected it. +- The website is original and not too simple. For that reason, blogs and simple landing pages are rejected. diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..4454ba1b --- /dev/null +++ b/.gitignore @@ -0,0 +1,67 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 00000000..7d6a1565 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,4 @@ +{ + "default": true, + "MD013": { "line_length": 1000 } +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..7ba35240 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,25 @@ +language: node_js + +node_js: + - "lts/*" + +cache: + directories: + - "node_modules" + +install: + - npm install + - npm run build + +script: + - npm test + +deploy: + provider: pages + skip-cleanup: true + github-token: $GITHUB_TOKEN + target-branch: gh-pages + keep-history: true + local-dir: .vuepress/dist + on: + branch: master diff --git a/.vuepress/config.js b/.vuepress/config.js new file mode 100644 index 00000000..e899648d --- /dev/null +++ b/.vuepress/config.js @@ -0,0 +1,70 @@ +module.exports = { + title: 'Awesome Vue.js', + description: '🎉 A curated list of awesome things related to Vue.js', + head: [ + ['link', { rel: 'icon', href: `/logo.png` }], + ['link', { rel: 'manifest', href: '/manifest.json' }], + ['meta', { name: 'theme-color', content: '#3eaf7c' }], + ['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }], + ['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }], + ['link', { rel: 'apple-touch-icon', href: `/icons/apple-touch-icon-152x152.png` }], + ['link', { rel: 'mask-icon', href: '/icons/safari-pinned-tab.svg', color: '#3eaf7c' }], + ['meta', { name: 'msapplication-TileImage', content: '/icons/msapplication-icon-144x144.png' }], + ['meta', { name: 'msapplication-TileColor', content: '#fff' }] + ], + serviceWorker: true, + base: '/awesome-vue/', + themeConfig: { + repo: 'rmjordas/awesome-vue', + editLinks: true, + lastUpdated: 'Last Updated', + nav: [], + sidebar: [ + { + title: 'Resources', + collapsable: false, + children: [ + '/resources/official-resources', + '/resources/external-resources', + '/resources/job-portal', + '/resources/community', + '/resources/conferences', + '/resources/podcasts', + '/resources/youtube-channels', + '/resources/official-examples', + '/resources/tutorials', + '/resources/examples', + '/resources/books', + ], + }, + { + title: 'Projects Using Vue.js', + collapsable: false, + children: [ + '/projects-using-vue-js/open-source', + '/projects-using-vue-js/commercial-products', + '/projects-using-vue-js/apps-websites', + '/projects-using-vue-js/interactive-experiences', + '/projects-using-vue-js/enterprise-usage', + '/projects-using-vue-js/a11y', + ], + }, + { + title: 'Components and Libraries', + collapsable: false, + children: [ + '/components-and-libraries/ui-components', + '/components-and-libraries/ui-layout', + '/components-and-libraries/frameworks', + '/components-and-libraries/ui-utilities', + '/components-and-libraries/utilities', + '/components-and-libraries/integrations', + '/components-and-libraries/dev-tools', + '/components-and-libraries/scaffold', + '/components-and-libraries/runtime', + '/components-and-libraries/prerendering', + ], + }, + ] + } +}; diff --git a/.vuepress/public/hero.png b/.vuepress/public/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..e55b79bcb31e68546bedeb7d53734e085eb7620b GIT binary patch literal 18107 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 NRb`C_MM~x`{|~gs!pZ;u literal 0 HcmV?d00001 diff --git a/.vuepress/public/icons/android-chrome-192x192.png b/.vuepress/public/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..cc078d86f0bca5f4fbce93bb6437220e58819e06 GIT binary patch literal 6379 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 E0Wqq;3;+NC literal 0 HcmV?d00001 diff --git a/.vuepress/public/icons/android-chrome-512x512.png b/.vuepress/public/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..cec8830253838e4348e7a241749f635e93b36558 GIT binary patch literal 16904 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 literal 0 HcmV?d00001 diff --git a/.vuepress/public/icons/favicon-32x32.png b/.vuepress/public/icons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0b940fda100fe322b1670d29a6cd8350367b59 GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+081JjxSpAc7|0>|x5rk-&Q zJDTpNENA%7a6N0upM({*I~yIgH+ec|IPPcyDgdD!O%7}8%_EXcJ>r1s;m9mB$zfF; zR1HMs)<(;sY*TlH8jxc5Sj)UD$1RP>D&d9z84z)xGwgSO+yg{F1`yTH>W6S^X7~MP z_yTm>zxWlOQ~?@04@5v;0J(4}IOBWL^1ZdQch}AS zn!Nlkl3ut1GzL)3$%=W0tLC7IL%6>ZS0t|Jh*{MRG!{((&<#+3!5C2Q14DHOD0p!q z#|%#(!lQuNQb70EFRV5TNd(5PSzw~w+$x|`t?TlEfp1ln=eVuOb8`zYqRnGc%p;TS zSJZlJX$HoQO;3rbcf6@roJ~g&Fzy^SHdth2n0UmRr=;7juiwxzV?)c#bp?~wgmtaU zo3x>M1~7d7#jpGyxAJe|%GIfT%Ts%QC$0D&zw$@&^1}Z1%!#evQkDaQv0zb8=F+Y& zDa(K%@4undXH(1n|Nmv3k4gg5>$;L4zhEE@2f}8iKw!+vZDeXHs&@JFM<6K9dJiOT z=vM!`tFCyhl~MBKw7v`SZQs65U}TCvapCgGbQac}6Ha!o-@DlyD`xZfICb{3mvg5c z`4SlWFFoW>ob2&`|Nfm-R%=|gVrk8mT~$k#w`eh1ynN@t)IEh+TuLr9NY7QvJbBTiOlp^tE};l}pzy-rbS;d6#b0uN7PpGkAHn z=iJ;?ID6v9ZN0b4a|{hr-HKVbSKmBWy1OjjWc!UB>F;;dP7BLf@#)Pqvu$O+ughBO z$i2Pr@aw)C))rP97oV`+y<^wTY8lI_H$OfKtM^w_RsR0*OL29=cm4ui9xl7mUuSM^ ze(pD)pOcrnzr!U^K(zMZq1Nu{da?V8zTR5ueZ6rGx8V$~h6l&aMsHWtF=5?UC~(ob z{Qcc}hBVjXi#0qvSi03z?Q5n?Vo6)JY@tSi|M?SVPMtb;(zZxNf4{~L@8;dx zcWvH3&X^NiYJRh9QeR!koV@(}49o0qbJ})(e&(O$7PuiH@%5sk-qX%SZ`+f5^i=5T z=qRb**9#WzW_Z@O)j;hcXW0j422cIvtPh=+?f}MXPASgue| zl%JNFld4csS&*ubSx}P9z)&&g@h2XR!Y~buQ~syVcs>ncU{>bVOXe0<7WSSj!Yr)d z(qM8pg;{xXh{EX`S56!`b42C{`{@Rc1zvg#ufzpQJ~^3A1zN%2>FVdQ&MBb@02L#> A*Z=?k literal 0 HcmV?d00001 diff --git a/.vuepress/public/icons/mstile-150x150.png b/.vuepress/public/icons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..a6789943cb53e0fa32f207f44ecc04fa2bd1366f GIT binary patch literal 4854 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 + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + + + diff --git a/.vuepress/public/logo.png b/.vuepress/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cc078d86f0bca5f4fbce93bb6437220e58819e06 GIT binary patch literal 6379 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 E0Wqq;3;+NC literal 0 HcmV?d00001 diff --git a/.vuepress/public/manifest.json b/.vuepress/public/manifest.json new file mode 100644 index 00000000..dce906e3 --- /dev/null +++ b/.vuepress/public/manifest.json @@ -0,0 +1,21 @@ +{ + "name": "Awesome Vue.js", + "short_name": "AwesomeVue", + "icons": [ + { + "src": "/awesome-vue/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/awesome-vue/icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "/index.html", + "display": "standalone", + "background_color": "#fff", + "orientation": "portrait", + "theme_color": "#3eaf7c" +} diff --git a/README.md b/README.md new file mode 100644 index 00000000..7c59edec --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +--- +home: true +heroImage: /hero.png +actionText: Get Started → +actionLink: /resources/official-resources +--- diff --git a/components-and-libraries/dev-tools.md b/components-and-libraries/dev-tools.md new file mode 100644 index 00000000..4c3edd9e --- /dev/null +++ b/components-and-libraries/dev-tools.md @@ -0,0 +1,108 @@ +# Dev Tools + +- [vue-dev-server](https://github.com/paulpflug/vue-dev-server) - A small development server for building `vue` components. +- [vuepack.org](http://vuepack.org) - A simple page that allows you to select Vue components and download them as a single minified JS file. +- [Storybook](https://storybook.js.org) - The UI Development Environment. works with v3.2+ later. +- [Font Awesome Finder](https://chrome.google.com/webstore/detail/font-awesome-icon-finder/kjejboahkcobalmgldloeinebmbomgog) - Chrome extension to search, preview and choose Font Awesome icons and copy the selected icon HTML code & Unicode to clipboard. +- [vue-dummy](https://github.com/paulcollett/vue-dummy) - Placeholder Text and Dummy Images as a simple `v-dummy` directive. +- [Bit](https://github.com/teambit/bit) - Manage and reuse `vue` components between projects. Easily isolate ans share components from any projec without chagning its source code, organize curated collections and install in different projects. +- [Vuenut](https://lusaxweb.github.io/vuenut.org/) - is a component to develop faster and more fluently. + +## Inspect + +Inspecting & debugging + +- [Vue.js devtools](https://github.com/vuejs/vue-devtools) - Chrome devtools extension for debugging Vue.js applications. +- [DejaVue](https://github.com/MiCottOn/DejaVue) - Visualization and debugging tool built for Vue.js. +- [vue-clicky](https://github.com/Herteby/vue-clicky) - Right click any component to show info about it in the console. +- [vuejs-logger](https://github.com/justinkames/vuejs-logger) - Provides customizable logging functionality for Vue.js. +- [bugsnag-vue](https://github.com/bugsnag/bugsnag-vue) - Official Vue.js plugin for [bugsnag](https://www.bugsnag.com/) error reporting +- [vue-inspector](https://github.com/calirojas506/vue-inspector) - Vue.js Inspector for Mobile Devices +- [Vue Performance Devtool](https://github.com/vue-perf-devtool/vue-perf-devtool) - Vue Performance Devtool is a browser extension for inspecting the performance of Vue Components +- [VueSource](https://github.com/davestewart/vue-source) - Global Vue mixin which identifies components in source code by adding HTML comments + +## Docs + +Create documentation + +- [vue-markdown-loader](https://github.com/QingWei-Li/vue-markdown-loader) - Convert Markdown file to Vue Component. +- [vue-play](https://github.com/vue-play/vue-play) - A minimalistic framework for demonstrating your Vue components. +- [vue-styleguide-generator](https://github.com/shershen08/vue-styleguide-generator) - React inspired style guide generator for Vue.js. +- [CheatSheet](https://vuejs-tips.github.io/cheatsheet) - Complete Interactive API. +- [propdoc](https://github.com/propellant/doctor) - A single component that provides simple documentation of Vue.js components/props. +- [Vuex CheatSheet](https://vuejs-tips.github.io/vuex-cheatsheet) - Complete Interactive Vuex API. +- [vue-styleguidist](https://github.com/vue-styleguidist/vue-styleguidist) - A style guide generator for Vue components with a living style guide. +- [vue-elucidate](https://github.com/mattrothenberg/vue-elucidate) - A component that generates beautiful documentation for your living styleguide / design system. +- [vue-md-loader](https://github.com/wxsms/vue-md-loader) - Markdown files to ALIVE Vue components. +- [@vuedoc/parser](https://github.com/vuedoc/parser) - Generate a JSON documentation for a Vue file component. +- [@vuedoc/md](https://github.com/vuedoc/md) - Generate a Markdown Documentation for a Vue file. +- [jsdoc-vue-component](https://github.com/ccqgithub/jsdoc-vue-component) - A jsodc3 plugin that extract vue SFC info(name, props, events...) to document. +- [jsdoc-vuedoc](https://github.com/ccqgithub/jsdoc-vuedoc) - A jsdoc3 plugin use `@vuedoc/md`. +- [vue-storybook](https://github.com/mattrothenberg/vue-storybook) – Add `` blocks to your Vue single file components for tighter integration of Vue + [Storybook](https://github.com/storybooks/storybook) + +## Test + +- [avoriaz](https://github.com/eddyerburgh/avoriaz) - A Vue.js testing utility library. +- [vue-container](https://github.com/dealloc/vuec) - A simple dependency injection library for Vue 2. +- [vuenit](https://github.com/jackmellis/vuenit) - Utilities for testing Vue components and directives. +- [vue-unit](https://github.com/wrseward/vue-unit) - A library for Vue.js that makes it easier to create and unit test components. +- [vue-a2b](https://github.com/fromAtoB/vue-a2b) - A library for Split Testing with Vue.js. Highly configurable and tiny (1.2k gzipped). +- [vue-test-utils](https://github.com/vuejs/vue-test-utils) - Official utilities for testing Vue components. + +### Browser-less require + +Load Vue components without browser + +- [vuegister](https://github.com/iatsiuk/vuegister) - Vuegister (a portmanteau of vue & register) is a require hook for loading of the Vue.js single-file components (or .vue files). +- [vue-node](https://github.com/knpwrs/vue-node) - Load vue components in node. + +## Source Code Editing + +Text editor plugins + +### Atom + +- [language-vue@atom.io](https://github.com/hedefalk/atom-vue) - Vue component file syntax for Atom. +- [language-vue-component@atom.io](https://github.com/CYBAI/language-vue-component) - Adds syntax highlighting to Vue Component files in Atom. +- [vue-autocomplete@atom.io](https://github.com/ealves-pt/atom-vue-autocomplete) - Vue.js 1.0+ autocomplete for Atom. +- [vue-snippets@atom.io](https://github.com/ealves-pt/atom-vue-snippets) - Atom snippets for Vue component files. +- [vue-autocompile@atom.io](https://github.com/paulpflug/vue-autocompile) - Auto compile vue file on save. +- [lint-sass-vue@atom.io](https://github.com/fsblemos/lint-sass-vue) - Atom.io package to lint Sass/SCSS in `.vue` files. +- [vuejs2-snippets@atom.io](https://github.com/CorentinAndre/Vuejs-snippets) - Atom snippets for javascript and components, including lifecycle hooks, directives, properties, vuex, vue-router, vue-i18n support. +- [vue2-autocomplete@atom.io](https://github.com/ealves-pt/atom-vue2-autocomplete) - Vue.js 2.0+ autocomplete for Atom. + +### Sublime Text + +- [Vue Syntax Highlight](https://github.com/vuejs/vue-syntax-highlight) - Sublime Text syntax highlighting for single-file Vue components. +- [VUEFormatter](https://github.com/baixuexiyang/VUEFormatter) - Sublime Text code format +- [vuejs-sublime-complete](https://github.com/BrainBuzzer/vuejs-sublime-complete) - Sublime Text code complete +- [Vue Next Formatter](https://github.com/luozhihua/sublime-vue-formatter) - Sublime Text Vue formatter, Supported ES5/6/7, Less/Sass and Pug/Html template. + +### Vim + +- [Vim Vue](https://github.com/posva/vim-vue) - Syntax Highlight for Vue.js components. + +### Visual Studio Code + +- [Vetur](https://github.com/octref/vetur) - Vue tooling for VSCode. + +### Visual Studio + +- [VuePack](https://github.com/madskristensen/VuePack) - Contains HTML Intellisense and code snippets for the Vue.js JavaScript library. + +### Brackets + +- [Brackets Vue](https://github.com/pandao/brackets-vue) - Brackets extension for Vue.js. + +### Intellij + +- [Vue.js Plugin](https://github.com/postalservice14/vuejs-plugin) - Vue.js features for the Intellij Platform (WebStorm, RubyMine, Intellij, etc). +- [Vue.js support for WebStorm](https://github.com/JetBrains/intellij-plugins/tree/master/vuejs), IntelliJ IDEA, PhpStorm, PyCharm & RubyMine – official Vue.js support by JetBrains + +### Emacs + +- [Vue Mode](https://github.com/CodeFalling/vue-mode) - Emacs major mode for vue.js. + +### Kate + +- [Kate Syntax Files](https://github.com/mtorromeo/kate-syntax-files) - Syntax files (modified or original) for katepart (kate, kwrite, kdevelop). diff --git a/components-and-libraries/frameworks.md b/components-and-libraries/frameworks.md new file mode 100644 index 00000000..2e9eb114 --- /dev/null +++ b/components-and-libraries/frameworks.md @@ -0,0 +1,90 @@ +# Frameworks + +## Responsive + +Set of components + responsive layout system + +- [quasar-framework](https://github.com/quasarframework/quasar) - Quasar Framework. Build responsive websites, hybrid mobile Apps (that look native on Android and iOS) and Electron apps using same code, with VueJs 2. +- [vue-material](https://github.com/vuematerial/vue-material) - Material design for Vue.js. +- [vuetify](https://github.com/vuetifyjs/vuetify) - Material Component Framework for Vue.js 2. +- [muse-ui](https://github.com/museui/muse-ui) - Material Component library for Vue.js 2. +- [buefy](https://github.com/rafaelpimpa/buefy) - Components based on Bulma framework. +- [element-ui](https://github.com/ElemeFE/element) - A Vue.js 2.0 UI Toolkit for Web. +- [vulma](https://vulma.org) - Vue + Bulma = Vulma. +- [vue-bulma-components](https://github.com/vouill/vue-bulma-components) - Easily use bulma class syntax with vue components. +- [iview-ui](https://www.iviewui.com) - A Vue.js 2.0 UI Framework for web. +- [AT-UI](https://at.aotu.io) - A fresh and flat UI-Kit specially for desktop application, made with ♥ by Vue.js 2.0 +- [v-semantic](https://www.npmjs.com/package/v-semantic) - Implementation of [semantic-ui](https://semantic-ui.com/) for Vue +- [bootstrap-vue](https://bootstrap-vue.github.io) - Implementation of [bootstrap-4](https://getbootstrap.com/) grid and components for Vue.js 2. +- [fish-ui](https://myliang.github.io/fish-ui) - A Vue.js 2.0 UI Toolkit for Web +- [Zircle UI](https://zircleui.github.io/zircleUI/) - A lightweight front-end library for developing zoomable user interfaces. +- [vue-mdc-adapter](https://github.com/stasson/vue-mdc-adapter) - Material Components integration for Vue.js as per MDC Team's [guidelines](https://github.com/material-components/material-components-web/blob/master/docs/integrating-into-frameworks.md). +- [Material Components Vue](https://github.com/matsp/material-components-vue) - wrapper around [material-components-web](https://github.com/material-components/material-components-web) for Vue.js +- [PrimeVue](https://github.com/primefaces/primevue) - A Vue.js 2.0 UI Component library for Web +- [vuesax](https://github.com/lusaxweb/vuesax) - Frontend vue Components for Vue.js. +- [vuecidity](https://bitbucket.org/acidmartin/vuecidity) - UI component framework for Vue.js 2.0 +- [vue-antd-ui](https://github.com/vueComponent/ant-design) - An enterprise-class UI components based on Ant Design and Vue 2.5.0 + +## Mobile UI Frameworks + +UI frameworks for mobile + +- [Framework7-Vue](https://github.com/nolimits4web/Framework7-Vue) - Build full featured iOS & Android apps using Framework7 & Vue. +- [vux](https://github.com/airyland/vux) - [Chinese] Vue UI Components based on WeUI. +- [vue-onsenui](https://github.com/OnsenUI/OnsenUI) - Mobile app development framework and SDK using HTML5 and JavaScript. Create beautiful and performant cross-platform mobile apps. Based on Web Components, and provides bindings for Angular 1, 2, React and Vue.js. +- [Weex](https://weex.incubator.apache.org/) - Weex provides the ability to publish cross platform, so web, Android, and IOS apps can use the same API development functions. +- [weex-eros](https://github.com/bmfe/eros-template) - [Chinese] Eros is a app solution based on Weex and Vue, which enables you to use API of Vue, simple and quick development of small and medium app. + +## Component Collections + +Set of components without layout system + +- [vue-mdc](https://github.com/posva/vue-mdc) - Material Components Web for Vue.js. +- [keen-ui](https://github.com/JosephusPaye/Keen-UI) - A lightweight collection of essential UI components written with Vue and inspired by Material Design. +- [vue-admin](https://github.com/vue-bulma/vue-admin) - Vue Admin Panel Framework, Powered by Vue 2.0 and Bulma 0.3. +- [vuikit](https://github.com/vuikit/vuikit) - UIkit with all the power of Vue. +- [uiv](https://github.com/wxsms/uiv) Bootstrap3 components implemented by Vue2. +- [yuche/vue-strap](https://github.com/yuche/vue-strap) - Bootstrap 3 components built with Vue.js 1 +- [wffranco/vue-strap](https://github.com/wffranco/vue-strap) - Bootstrap 3 components built with Vue.js 2 +- [N3-components](https://github.com/N3-components/N3-components) - Beautiful Web Components built with Vue 2 +- [jsmod-vue-pc](https://github.com/chaogao/jsmod-pc-vue) - Highly scalable web components for vue 2.0 +- [guilhermewaess/SemVue](https://github.com/guilhermewaess/SemVue) - Semantic-ui Modules implemented with Vue 2 +- [office-ui-fabric-vue](https://github.com/aidewoode/office-ui-fabric-vue) - Office UI Fabric implementation for Vue.js +- [vuestic-admin](https://github.com/epicmaxco/vuestic-admin) - Vue Admin Dasboard with collection of custom components. Built with Vue 2 and Bootstrap 4 +- [Semantic UI Vue](https://github.com/Semantic-UI-Vue/Semantic-UI-Vue) - Semantic UI integration for Vue +- [Carvue.js](https://github.com/nicholaslee119/carbon-components-vue) - IBM's Carbon Design System for Vue.js +- [vuesax](https://github.com/lusaxweb/vuesax) - Frontend vue Components for Vue.js. + +## Mobile Components + +Set of components for mobile + +- [mint-ui](https://github.com/ElemeFE/mint-ui) - Mobile UI elements for Vue.js. +- [vant](https://github.com/youzan/vant) - A Vue.js 2.0 Mobile UI From YouZan. +- [cube-ui](https://didi.github.io/cube-ui) - A fantastic mobile ui lib implement by Vue.js 2. + +## Admin Template + +Set of admin template + +- [iView Vue Admin](https://github.com/TonyLuo/iview-vue-admin) - iView Vue Admin / An admin portal template based on iView 2.x +- [element Vue Admin](https://github.com/TonyLuo/element-vue-admin) - element Vue Admin / An admin portal template based on Element UI 2.x +- [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) - A magical vue admin based on Element UI 2.x +- [d2admin](https://github.com/FairyEver/d2admin-vue-element) - An elegant backstage template build by vue + +## Server-side rendering + +- [Nuxt.js](https://github.com/nuxt/nuxt.js) - Versatile Vue.js Framework. +- [Ream](https://github.com/ream/ream) - A minimalistic framework for building server-rendered and static websites. + +## Static website generator + +- [VuePress](https://github.com/vuejs/vuepress) - Minimalistic Vue-powered static site generator. +- [Peco](https://github.com/egojump/peco) - A static website generator for humans. + +## Other + +- [app-framework](https://github.com/scriptPilot/app-framework) - IOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source. +- [Myfirebase](https://github.com/myfirebase/myfirebase) - A decoupled Single page application Framework which is highly compatible with google firebase. +- [Vue-Access-Control](https://github.com/tower1229/Vue-Access-Control) Frontend access control framework based Vue.js 2. +- [Basys](https://github.com/basys/basys) Toolbox for building full-stack Vue.js apps diff --git a/components-and-libraries/integrations.md b/components-and-libraries/integrations.md new file mode 100644 index 00000000..50f23e9d --- /dev/null +++ b/components-and-libraries/integrations.md @@ -0,0 +1,44 @@ +# Integrations + +Integrate with services or other frameworks + +- [vue-disqus](https://github.com/ktquez/vue-disqus) - Vue component to integrate Disqus comments in your application, with support for SPA. +- [vue-youtube-embed](https://github.com/kaorun343/vue-youtube-embed) - Vue.js and YouTube. +- [vue-add-to-calendar](https://github.com/nicolasbeauvais/vue-add-to-calendar) - A Vue.js component that provides "Add to Calendar" functionality, works with Vue 2.X. +- [Vue + Meteor](https://github.com/Akryum/vue-meteor) - Vue first-class integration in Meteor. +- [av-ts](https://github.com/HerringtonDarkholme/av-ts) - A modern, type-safe, idiomatic Vue binding library. +- [Neutronium](https://github.com/NeutroniumCore/Neutronium) - Build .NET desktop applications using HTML, CSS and javascript. +- [vue-typescript-jest](https://github.com/locoslab/vue-typescript-jest) - Jest preprocessor.js for Vue.js components (supporting html, pug, and babel) and TypeScript. +- [vue-jest-utils](https://github.com/locoslab/vue-jest-utils) - Utilities for testing Vue.js components using Jest. +- [vue-custom-element](https://github.com/karol-f/vue-custom-element) - Vue Custom Element - Custom Elements for Vue.js. +- [vue-cordova](https://github.com/kartsims/vue-cordova) - Vue.js plugin for Cordova. +- [vue-wamp](https://github.com/lajosbencz/vue-wamp) - AutobahnJS wrapper library fo Vue.js. +- [express-vue](https://github.com/danmademe/express-vue) - Vue rendering engine for Express.js. Use .Vue files as templates using res.render(). +- [vue-grecaptcha](https://github.com/drozdzynski/vue-grecaptcha) - Google reCAPTCHA for VueJS 2 +- [vue-recaptcha](https://github.com/DanSnow/vue-recaptcha) - Google reCAPTCHA component for Vue.js +- [require-vuejs](https://github.com/edgardleal/require-vuejs) - RequireJS plugin to async and dynamic load and parse .vue components. +- [facebook-login-vuejs](https://github.com/iliran11/facebook-login-vue.git) - Vue Component for Authenticating your Facebook App and get the benefits of Facebook Login. +- [vuejs/vuefire](https://github.com/vuejs/vuefire) - Official Firebase Integration for VueJS +- [vuefire](https://github.com/nigeltiany/vuefire) - Firebase for VueJS and Vuex +- [vue-runkit](https://github.com/maple3142/vue-runkit) - RunKit Embed for Vue.js +- [vue-youtube](https://github.com/anteriovieira/vue-youtube) - Provides a simple layer for you to use your imagination while over the [YouTube IFrame Player API](https://developers.google.com/youtube/iframe_api_reference). (Compatible with SSR) +- [vue-introjs](https://github.com/alex-oleshkevich/vue-introjs) - Integrates intro.js step-by-step guide and feature introduction with Vue.js [http://introjs.com/](http://introjs.com/). +- [vue-loopback](https://github.com/InCuca/vue-loopback) - Loopback and Vue application template +- [vue-laroute](https://github.com/samturrell/vue-laroute) - Integrate Laravel routes into your VueJS application using laroute. +- [vue-raven](https://github.com/anteriovieira/vue-raven) - Automatically reports uncaught JavaScript exceptions triggered from vue component. +- [vue-telegram-login](https://github.com/vchaptsev/vue-telegram-login) - Vue Component for [Telegram Login](https://core.telegram.org/widgets/login) by [@vchaptsev](https://github.com/vchaptsev/) +- [vuexpress](https://github.com/vuexpress/vuexpress) - Vue + Express.js = VueXpress / A server side rendering engine for Express.js. Use .vue files as your express.js templates. +- [vue-fixer](https://github.com/eperedo/vue-fixer) - A simple vue component for the [fixer API](https://fixer.io). +- [amazon-cognito-vuex-module](https://github.com/Botre/amazon-cognito-vuex-module) - Vuex module for Amazon Cognito. +- [vue-web3](https://github.com/morrislaptop/vue-web3) - Web3 blockchain bindings for Vue.js (inspired by Vuefire and Drizzle) + +## Google Analytics + +- [vue-ua](https://github.com/ScreamZ/vue-analytics) - Google Universal Analytics support in Vue.js. +- [vue-analytics](https://github.com/MatteoGabriele/vue-analytics) - Vue plugin for Google Analytics. +- [vue-gtm](https://github.com/mib200/vue-gtm) - Vue plugin for Google Tag Manager + +## Yandex Metrika + +- [vue-ya-metrica](https://github.com/shershen08/vue-ya-metrica) - Vue plugin for Yandex.Metrica +- [vue-yandex-metrika](https://github.com/vchaptsev/vue-yandex-metrika) - Vue plugin for Yandex Metrika with router integration, plugin options by [@vchaptsev](https://github.com/vchaptsev/) diff --git a/components-and-libraries/prerendering.md b/components-and-libraries/prerendering.md new file mode 100644 index 00000000..e3a0a6c8 --- /dev/null +++ b/components-and-libraries/prerendering.md @@ -0,0 +1,5 @@ +# Prerendering + +- [react-snap](https://github.com/stereobooster/react-snap) - A zero-configuration static pre-renderer for SPA +- [prerender-plugin](https://github.com/mubaidr/prerender-plugin) - A Node.js/ webpack plugin to prerender static HTML in a single-page application (SPA). +- [vue-prerender](https://github.com/eldarc/vue-prerender) - A Vue.js tailored plugin which implements three strategies for prerendering Vue.js pages using headless chrome. diff --git a/components-and-libraries/runtime.md b/components-and-libraries/runtime.md new file mode 100644 index 00000000..e39e8b6e --- /dev/null +++ b/components-and-libraries/runtime.md @@ -0,0 +1,5 @@ +# Runtime + +## Command Line / Terminal + +- [blessed-vue](https://github.com/lyonlai/blessed-vue) - A VueJS runtime to let you write command line UI in Vue Edit diff --git a/components-and-libraries/scaffold.md b/components-and-libraries/scaffold.md new file mode 100644 index 00000000..f701663c --- /dev/null +++ b/components-and-libraries/scaffold.md @@ -0,0 +1,94 @@ +# Scaffold + +Scaffold / boilerplate / seed / starter kits / stack ensemble / Yeoman generator + +- [vue-cli](https://github.com/vuejs/vue-cli) - Simple CLI for scaffolding Vue.js projects. +- [Vue-Django](https://github.com/NdagiStanley/vue-django) - A boilerplate to set you up in bringing the awesomeness of VueJS into a Django (Python) app. +- [python-vuejs](https://github.com/cstrap/python-vuejs) - Gluing Python web frameworks and Vue.js with a set of scripts. Basically a `vue-cli` wrapper. +- [generator-vue-plugin](https://github.com/jeneser/generator-vue-plugin) - Yeoman generator generating vue plugin. +- [vue-seed](https://github.com/dulin666/vue-seed) - vue-seed is minimal seed for those looking to get up-and-running with Vue +- [nuxt-seed](https://github.com/dulin666/nuxt-seed) - nuxt-seed is minimal seed for those looking to get up-and-running with Vue and Nuxt +- [rails_vue_melt](https://github.com/midnightSuyama/rails_vue_melt) - Rails view with webpack=vue optimizer. +- [vue-starter](https://github.com/rohitkrai03/vue-starter) - A Vue.js starter kit that lets you focus on more programming and less configuration. +- [vue-standalone-component](https://github.com/InCuca/vue-standalone-component) - A standalone component generator with documentation support using jsdoc and vue-styleguidist +- [vuejs-wordpress-theme-starter](https://github.com/EvanAgee/vuejs-wordpress-theme-starter) - A WordPress theme with the guts ripped out and replaced with Vue +- [Cordovue](https://github.com/TheMushrr00m/cordovue) - A sample Apache Cordova application using Vue. +- [Cookiecutter-Django-Vue](https://github.com/vchaptsev/cookiecutter-django-vue) - Django+VueJS+Docker customizable project generator with a large number of settings/integrations by [@vchaptsev](https://github.com/vchaptsev/) +- **[iBiu](https://github.com/bobiscool/iBiu)** A visual CLI for scaffolding large Vue projects in 2 seconds. +- [wp-vue](https://github.com/alexmacarthur/wp-vue) - A simple Vue blog template that displays posts from a WordPress REST API endpoint. +- [vue-cli-template-nativescript](https://github.com/julon/vue-cli-template-nativescript) - Template for starting new nativescript+vue projects with rollup+babel+eslint +- [vue-element-ui-scaffold](https://scaffoldhub.io/vue-sample) - Online and visual Vue 2 with Element-UI CRUD scaffold/generator. +- [vue-firebase-element-ui-scaffold](https://scaffoldhub.io/vue-firebase) - Online and visual Vue 2, Element-UI and Firebase scaffold/generator with CRUDs, authentication, file/image upload, activity log and more. +- [vue-starter](https://github.com/devCrossNet/vue-starter) - an enterprise ready boilerplate for isomorphic, progressive web apps with Vue.JS +- [vue-vuex-typescript-webpack-seed](https://github.com/IsraelZablianov/vue-vuex-typescript-webpack-seed) - A seed project with Vue, Vuex, Typescript, Scss & Webpack with hot reloading +- [VueCharged Template](https://github.com/mrboomer/vuecharged-template) - A highly opinionated, feature-first Vue 2 template with CLI scaffolding. Uses Vue 2, Vuex, Vue Router and Vue I18n. +- [Huncwot](https://github.com/zaiste/huncwot) - Vue.js boilerplate with Node.js for building modern JavaScript applications with « batteries included » approach. +- [wemake-vue-template](https://github.com/wemake-services/wemake-vue-template) - Bleeding edge vue template focused on code quality and developer happiness. Featuring: nuxt, flow, and jest. +- [vue-lib-template](https://github.com/biigpongsatorn/vue-lib-template) - 🛠 A simple template for building and publishing Vue component/library as a opensource. + +## Client + +Render Vue application in the browser only + +- [Vue Plugin Boilerplate](https://github.com/kazupon/vue-plugin-boilerplate) - Boilerplate for Vue.js plugin. +- [Bourgeon](https://github.com/rayfranco/bourgeon) - Bourgeon is an opinionated-featured VueJS 2.0 setup for Webpack. +- [VuePack](https://github.com/egoist/vuepack) - A modern starter which uses Vue 2, Vuex, Vue-router and Webpack 2 (and even Electron). +- [Vue Settler](https://github.com/weavingbird/vue-settler) - An opinionated Vue 2.0 SPA Starter. +- [vue-build](https://github.com/brianvoe/vue-build) - Ultra Simple, Development, Testing and Production Build Cli. +- [Vue Element Starter](https://github.com/Metnew/vue-element-starter) - Robust Vue 2 starter with Element-UI. +- [vue-multiple-pages](https://github.com/Plortinus/vue-multiple-pages) - A modern Vue.js multiple pages starter which uses Vue 2, Webpack2, and Element-UI +- [vue-typescript-boilerplate](https://github.com/twcapps/vue-typescript-boilerplate) - A Vue.js typescript SPA starter with Vue 2, Vue Typed, Vuex, Vue Router and localization +- [vue-tachyons-template](https://github.com/colorful-tones/vue-tachyons-template) - A Vue 2 project starter template w/ Tachyons, Webpack, and ESLint +- [Vuets](https://github.com/AkiraLaine/Vuets) - A Vue, TypeScript ready boilerplate using class-style components, vue plugin options, webpack & vue-cli. +- [MMF-FE/vue-typescript](https://github.com/MMF-FE/vue-typescript) - A vue2.x typescript template. +- [Friendly Vue Starter](https://github.com/mcongy/friendly-vue-starter) - A full featured Vue.js starter project with GraphQL support via Apollo-client (Vuex, Vue-router, Vue-i18n, Webpack 3, Eslint, Prettier, ...) +- [vue-webpack-typescript](https://github.com/ducksoupdev/vue-webpack-typescript) - A Vue 2.2 Webpack 2 and Typescript 2 setup with hot reload, unit testing, code coverage, sass and bundling/minification. +- [vue-ts-amd](https://github.com/Micene09/vue-ts-amd) - A full-featured Vue.js 2 boilerplate using AMD pattern (RequireJS) and Typescript. +- [**vue-2-boilerplate**](https://github.com/petervmeijgaard/vue-2-boilerplate) - Vue 2 boilerplate for developing medium to large single page applications by [petervmeijgaard](https://github.com/petervmeijgaard/) +- [layout](https://github.com/ktquez/layout) - A full-featured Webpack + Vue Extend layout +- [layout-simple](https://github.com/ktquez/layout-simple) - A simple Webpack + Vue Extend layout +- [vue-cli-template-library](https://github.com/julon/vue-cli-template-library) - Template for developing open-source vue.js libraries with Rollup + Jest + Babel + Storybook + TravisCI + SemanticRelease. +- [vue-cli-template-github-pages](https://github.com/julon/vue-cli-template-github-pages) - A full-featured Webpack + vue-loader setup for Github Pages Deployment with travisCI. +- [vue-webpack-chrome-extension-template](https://github.com/ALiangLiang/vue-webpack-chrome-extension-template) - Template for quick creation of Chrome extension on Vuejs hot reloading when developing. +- [buildless-vue](https://github.com/Botre/buildless-vue) - Quickly use Vue without a build step. +- [vue-component-template](https://github.com/IneoO/vue-component-template) - Webpack setup for building & publishing a Vue component/library (with docs/demo site). + +## Universal + +Render Vue application to HTML on the server and to the DOM in the browser + +- [SPA Starter Kit](https://github.com/codecasts/spa-starter-kit) - A highly opinionated starter kit for building Single Page Applications with Laravel and Vue.js. +- [SSR Boilerplate](https://github.com/fenivana/vue-ssr-boilerplate) - Vue.js Server Side Rendering Boilerplate without Polluting Vuex. +- [neutrino-preset-vue-static](https://github.com/shyiko/neutrino-preset-vue-static) - A minimalistic starter kit for building static sites using Vue.js. +- [Vueniverse](https://github.com/rlindskog/vueniverse) - A fully featured, universal Vue template for user-based applications, powered by Nuxt.js and Express. +- [vue-preload](https://github.com/shershen08/vue-preload) - A plugin Vue for adding ` 2 dropdown. Easy to use, no external, optional. +- [vue-bulma-accordion](https://github.com/Lunrtick/vue-bulma-accordion) - Simple, easily configurable accordion or collapsible styled with Bulma custom or built in icons available + +## Carousel + +- [vue-easy-slider](https://github.com/shhdgit/vue-easy-slider) - Slider Component of Vue.js. +- [vue-l-carousel](https://github.com/lsycxyj/vue-l-carousel) - A responsive carousel(namely slider or swiper) component for Vue.js v2.x+. +- [vue-awesome-swiper](https://github.com/surmon-china/vue-awesome-swiper) - Swiper(slide) component for Vue.js(1.x ~ 2.x). +- [vue-lory](https://github.com/vue-bulma/lory) - Vue Slider Component based on lory. +- [vue-slick](https://github.com/staskjs/vue-slick) - Vue component for Slick-carousel. +- [vue-flickity](https://github.com/drewjbartlett/vue-flickity) - A Vue Component for Flickity.js. +- [vue-carousel-3d](https://github.com/wlada/vue-carousel-3d) - Vue Carousel 3D - Beautiful, flexible and touch supported 3D Carousel for Vue.js. +- [vue-carousel](https://github.com/SSENSE/vue-carousel) - A flexible, responsive, touch-friendly carousel for Vue.js. +- [vue-coverflow](https://github.com/OrangeXC/vue-coverflow) - A vue2.x coverflow component. +- [vue-agile](https://github.com/lukaszflorczak/vue-agile) – A carousel component inspired by Slick, written in Vue.js and vanilla JS only. +- [vue-tiny-slider](https://github.com/viktorlarsson/vue-tiny-slider) – A carousel component created by ganlanyuan, written in Vue.js. No jQuery. Works in IE8+. +- [vue2-text-swimlane](https://github.com/mubaidr/vue-swimlane) - A Text Swimlane plugin for Vue.js +- [vue-picture-swipe](https://github.com/rap2hpoutre/vue-picture-swipe) - Vue Picture Swipe Gallery (a gallery of image with thumbnails, lazy-load and swipe) backed by photoswipe. + +## Charts + +- [vue-morris](https://github.com/bbonnin/vue-morris) - VueJS component wrapping Morris.js. +- [vue-charts](https://github.com/haydenbbickerton/vue-charts) - Google Charts plugin for Vue.js. +- [vue-chartjs](https://github.com/apertureless/vue-chartjs) - Vue.js wrapper for Chart.js. +- [hchs-vue-charts](https://github.com/hchstera/vue-charts) - Based on Vue2.0 wrapper for ChartJs. +- [vue-echarts](https://github.com/Justineo/vue-echarts) - ECharts component for Vue.js. +- [vuetrend](https://github.com/QingWei-Li/vue-trend) - Simple, elegant spark lines for Vue.js. +- [vue-highcharts](https://github.com/weizhenye/vue-highcharts) - Highcharts component for Vue. +- [vue-echarts-v3](https://github.com/xlsdg/vue-echarts-v3) - Vue.js(v2.x+) component wrap for ECharts.js(v3.x+). +- [vue-chartist](https://github.com/lakb248/vue-chartist) - Vue.js 2.0 component wrap for Chartist. +- [g2-vue](https://github.com/fireyy/g2-vue) - Factory wrapper for using G2 easily in a Vue Component. +- [vuebars](https://github.com/DeviaVir/vue-bar) - Simple, elegant spark bars for Vue.js. +- [vue-d3-network](https://github.com/emiliorizzo/vue-d3-network) - Vue component to graph networks using d3-force +- [vue2vis](https://github.com/alexcode/vue2vis) - Vue2 wrapper for [Visjs](http://visjs.org). +- [vue-c3](https://github.com/chryb/vue-c3) - A reusable vue component for c3 charts +- [vue-d2b](https://github.com/d2bjs/vue-d2b) - Vue components for d2b charts. (Including axis, pie, sankey, and sunburst charts) +- [VueChart](https://github.com/SeregPie/VueChart) - A very simple Vue wrapper for Chart. +- [vue-chartkick](https://github.com/ankane/vue-chartkick) - Create beautiful JavaScript charts with one line of Vue +- [d3vue](https://github.com/ignoreintuition/d3vue) - A D3 Plugin for Creating Reactive Data Visualizations in VueJS +- [vue2-frappe](https://github.com/JustSteveKing/vue2-frappe) - A simple wrapper around Frappe Charts for VueJS + +## Time + +Display time / date / age + +- [vue-timeago](https://github.com/egoist/vue-timeago) - A tiny timeago component for Vue. +- [vue-moment-jalaali](https://github.com/saman/vue-moment-jalaali) - Jalaali Moment.js filters for your Vue.js project. +- [vue-countdown-timer](https://github.com/sagarkbhatt/vuejs-countdown-timer) - Added timezone conversion support. +- [vue-analog-clock-range](https://github.com/f/vue-analog-clock-range) - Analog clock range to show time difference. +- [vue-moment-lib](https://github.com/julon/vue-moment-lib) - A simple Vue.js 2.0 MomentJS library (filters & globals) using the same momentjs API. +- [vuejs-countdown](https://github.com/getanwar/vuejs-countdown) - A simple countdown timer component for vue js 2.0 + +## Calendar + +Display non-editable events in a Calendar + +- [vue-fullcalendar](https://github.com/Wanderxx/vue-fullcalendar) - Vue calendar fullCalendar. No jQuery required. Schedule events management. +- [vue-event-calendar](https://github.com/GeoffZhu/vue-event-calendar) - A simple events calendar for Vue2, no dependencies except Vue2. +- [vue-calendar-picker](https://github.com/FranckFreiburger/vue-calendar-picker) - Lightweight calendar component for events display, period selection and date picker. +- [vue-lunar-calendar](https://github.com/KimWooHyun/vue-lunar-calendar) - A vue component for lunar calendar. Uses Moment.js for date operations. +- [vue-simple-calendar](https://github.com/richardtallent/vue-simple-calendar) - Flexbox-based Vue month calendar compenent; supports multi-day events, localization, holiday emoji, drag/drop. No dependencies. +- [vue2-calendar](https://github.com/Trekels/vue2-calendar) - A simple full calendar component aimed at beeing flexibile and lightweight. +- [vue-jlunar-datepicker](https://github.com/tuhe32/vue-jLunar-datePicker) - A Chinese lunar datepicker component with festivals and solar terms. +- [vue-full-calendar](https://github.com/CroudSupport/vue-fullcalendar) - A complete [fullcalendar.io](fullcalendar.io) wrapper for both Vue 1 and 2 +- [v-calendar](https://github.com/nathanreyes/v-calendar) - Animated calendar/datepicker that displays regions, indicators and day popovers for simple & recurring dates. +- [vue-infinite-calendar](https://github.com/laleshii/vue-infinite-calendar) - A simple infinite calendar implementation for Vue 2 +- [vue-calendar](https://github.com/kylin-z/vue-calendar) - A simple calendar components for Vue 2.1.5+ ,support custom content. No dependencies. +- [vue2-event-calendar](https://github.com/kitwon/vue2-event-calendar) - An events calendar for Vue2, support customize event items and calendar header. +- [vue2-datePicker-infinite](https://github.com/leepyng/vue-datepicker-infinite) - An infinite datePicker for Vue2,easy to use and no dependencies. +- [vue2-slot-calendar](https://github.com/icai/vue2-calendar) - A vue 2 calendar, datepicker component which supported lunar or date event, bootstrap style. + +## Map + +- [vue2-google-maps](https://github.com/xkjyeah/vue-google-maps) - Google maps component for vue with 2-way data binding. +- [vue2-leaflet](https://github.com/KoRiGaN/Vue2Leaflet) - Vue 2 components for Leaflet maps. +- [vue-mapbox-gl](https://github.com/phegman/vue-mapbox-gl) - Vue 2.x component for Mapbox GL JS +- [vue-yandex-maps](https://github.com/PNKBizz/vue-yandex-map) - Vue 2.x component for Yandex Maps +- [vue-baidu-map](https://github.com/Dafrok/vue-baidu-map) - Vue 2.x component for Baidu Maps. +- [vue-choropleth](https://github.com/voluntadpear/vue-choropleth) - Vue 2.x component to display a choropleth map. +- [vuelayers](https://github.com/ghettovoice/vuelayers) - Vue 2 components to work with OpenLayers. +- [vue-googlemaps](https://github.com/Akryum/vue-googlemaps) - Vue 2.x components to integrate Google Maps. +- [vue-static-map](https://github.com/eperedo/vue-static-map) - Vue 2.x simple component to generate an static google map + +## Audio / Video + +- [Vue-APlayer](https://github.com/SevenOutman/vue-aplayer) - :cake: Easy-to-config music player for Vue 2.x. +- [vue-audio](https://github.com/shershen08/vuejs-sound-player) - audio-tag wrapper; sound player component for Vue 2.x +- [vue-dplayer](https://github.com/sinchang/vue-dplayer) - A Vue 2.x video player component based on DPlayer. +- [vue-canvasvideo](https://github.com/chrishurlburt/vue-canvasvideo) - A Vue 2.x component for video backgrounds and autoplay video on iOS/Safari. +- [vue-music](https://github.com/petsgre/music) - A Vue component base on html5 `