├── .gitignore ├── LICENSE ├── README.md ├── gallery ├── .vuepress │ ├── components │ │ └── ImageList.vue │ ├── config.js │ ├── public │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── gallery │ │ │ ├── alex-jover-post.png │ │ │ ├── alex-jover.png │ │ │ ├── amie-chen-blog.png │ │ │ ├── amie-chen-post-1.png │ │ │ ├── amie-chen-post.png │ │ │ ├── amie-chen.png │ │ │ ├── ben-home.png │ │ │ ├── ben-list.png │ │ │ ├── ben-post.png │ │ │ ├── ktquez-post.png │ │ │ ├── ktquez.png │ │ │ ├── portfolio-post.jpg │ │ │ ├── portfolio.jpg │ │ │ ├── vuepress-terminal.png │ │ │ ├── vuesax-docs.png │ │ │ └── vuesax.png │ │ └── twitter-card.png │ └── theme │ │ ├── Layout.vue │ │ ├── components │ │ └── TheHeader.vue │ │ ├── fonts │ │ ├── Lato-Regular.ttf │ │ └── Lora-Regular.ttf │ │ ├── layouts │ │ ├── Gallery.vue │ │ └── GalleryItem.vue │ │ └── styles │ │ └── theme.sass ├── README.md ├── about │ └── README.md ├── gallery │ └── .gitkeep ├── library │ └── README.md └── resources │ └── README.md ├── package.json ├── service.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | gallery/.vuepress/dist 4 | .env 5 | 6 | /gallery/gallery/* 7 | !/gallery/gallery/README.md 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Victoria Bergquist 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VuePress Gallery 💚 2 | 3 | This is a curated list of custom VuePress themes. 4 | 5 | ## To Do List / Roadmap 6 | 7 | - [x] Feature: Link to individual website 8 | - [x] Feature: Tags (blog, portfolio, documentation etc.) 9 | - [ ] Feature: "Submit a theme" button 10 | - [ ] Feature: "Likes", signin with twitter/github 11 | - [ ] Feature: Filter by latest/most popular/oldest 12 | - [x] Feature: Filter by tags 13 | - [ ] Feature: Zoom in on screenshot (@vuepress/medium-zoom) 14 | - [ ] Feature: Tutorials/resources page 15 | - [ ] Todo: update single post layout and content -------------------------------------------------------------------------------- /gallery/.vuepress/components/ImageList.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 36 | 37 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /gallery/.vuepress/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | title: 'VuePress Gallery', 3 | description: 'A VuePress theme gallery, made with VuePress.', 4 | themeConfig: { 5 | nav: [ 6 | { text: 'Gallery', link: '/' }, 7 | // { text: 'Resources', link: '/resources/' }, 8 | // { text: 'Components', link: '/library/' }, 9 | { text: 'About', link: '/about/' } 10 | // { text: 'Submissions', link: 'https://github.com/vicbergquist/vuepress.gallery' } 11 | ] 12 | }, 13 | markdown: { 14 | anchor: { 15 | permalink: false 16 | } 17 | }, 18 | plugins: [ 19 | [ 20 | '@vuepress/google-analytics', 21 | { 22 | ga: 'UA-133690351-1' 23 | } 24 | ] 25 | // ['@vuepress/pwa', 26 | // { 27 | // serviceWorker: true 28 | // }] 29 | ], 30 | head: [ 31 | ['meta', { name: 'google-site-verification', content: 'nvnApLC80g7AZLICqtOpuMvdcU-CjQ7gJsku-gpkZAc'}], 32 | ['meta', { name: 'twitter:card', content: 'summary'}], 33 | ['meta', { name: 'twitter:title', content: 'VuePress Gallery 💚'}], 34 | ['meta', { name: 'twitter:image', content: 'https://vuepress.gallery/twitter-card.png'}], 35 | ['meta', { name: 'twitter:creator', content: '@vicbergquist'}], 36 | ['meta', { name: 'twitter:site', content: '@vicbergquist'}], 37 | ['meta', { name: 'twitter:description', content: 'A VuePress theme gallery, made with VuePress.'}] 38 | ] 39 | } -------------------------------------------------------------------------------- /gallery/.vuepress/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/favicon.ico -------------------------------------------------------------------------------- /gallery/.vuepress/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/favicon.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/alex-jover-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/alex-jover-post.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/alex-jover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/alex-jover.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/amie-chen-blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/amie-chen-blog.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/amie-chen-post-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/amie-chen-post-1.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/amie-chen-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/amie-chen-post.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/amie-chen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/amie-chen.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/ben-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/ben-home.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/ben-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/ben-list.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/ben-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/ben-post.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/ktquez-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/ktquez-post.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/ktquez.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/ktquez.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/portfolio-post.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/portfolio-post.jpg -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/portfolio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/portfolio.jpg -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/vuepress-terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/vuepress-terminal.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/vuesax-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/vuesax-docs.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/gallery/vuesax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/gallery/vuesax.png -------------------------------------------------------------------------------- /gallery/.vuepress/public/twitter-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/public/twitter-card.png -------------------------------------------------------------------------------- /gallery/.vuepress/theme/Layout.vue: -------------------------------------------------------------------------------- 1 | 8 | 40 | 41 | 44 | -------------------------------------------------------------------------------- /gallery/.vuepress/theme/components/TheHeader.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 57 | -------------------------------------------------------------------------------- /gallery/.vuepress/theme/fonts/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/theme/fonts/Lato-Regular.ttf -------------------------------------------------------------------------------- /gallery/.vuepress/theme/fonts/Lora-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/.vuepress/theme/fonts/Lora-Regular.ttf -------------------------------------------------------------------------------- /gallery/.vuepress/theme/layouts/Gallery.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 84 | 85 | -------------------------------------------------------------------------------- /gallery/.vuepress/theme/layouts/GalleryItem.vue: -------------------------------------------------------------------------------- 1 | 45 | 46 | 65 | 66 | -------------------------------------------------------------------------------- /gallery/.vuepress/theme/styles/theme.sass: -------------------------------------------------------------------------------- 1 | @font-face 2 | font-family: "Lora" 3 | src: url("./fonts/Lora-Regular.ttf") 4 | font-weight: normal 5 | font-style: normal 6 | font-display: swap 7 | 8 | @font-face 9 | font-family: "Lato" 10 | src: url("./fonts/Lato-Regular.ttf") 11 | font-weight: normal 12 | font-style: normal 13 | font-display: swap 14 | 15 | $heading: 'Lora', serif 16 | $body: 'Lato', sans-serif 17 | 18 | $black: #333 19 | $bg: #feffff 20 | 21 | * 22 | box-sizing: border-box 23 | margin: 0 24 | padding: 0 25 | 26 | body 27 | font-family: $body 28 | color: $black 29 | font-size: 20px 30 | margin: 0 31 | padding: 0 32 | background: $bg 33 | line-height: 1.4 34 | height: 100% 35 | overflow-x: hidden 36 | @media screen and (max-width: 768px) 37 | font-size: 18px 38 | 39 | h1,h2,h3 40 | font-family: $heading 41 | color: $black 42 | font-weight: normal 43 | margin: .5rem 0 44 | 45 | h1 46 | font-size: 1.8em 47 | line-height: 1.4 48 | margin-bottom: .5rem 49 | @media screen and (max-width: 420px) 50 | font-size: 1.6em 51 | 52 | h2 53 | font-size: 1.2em 54 | font-family: $body 55 | font-weight: bold 56 | margin-top: 1em 57 | 58 | h3 59 | font-size: 1em 60 | font-family: $body 61 | font-weight: bold 62 | margin-top: 1em 63 | 64 | ul 65 | margin: 1em 0 66 | padding-left: 2em 67 | 68 | h3 69 | font-family: $body 70 | margin: .5em 0 71 | 72 | h3 73 | font-family: $body 74 | margin: .5em 0 75 | 76 | a, a:visited, a:hover, a:focus 77 | text-decoration: none 78 | color: $black 79 | 80 | p a, a:hover 81 | border-bottom: 1px solid #333 82 | 83 | a:focus 84 | border-bottom: 1px solid #36c425 85 | 86 | p 87 | margin-bottom: 1rem 88 | 89 | img 90 | width: 100% 91 | height: 100% 92 | 93 | .default 94 | max-width: 700px 95 | margin: 0 auto 96 | 97 | .wrapper 98 | padding: 0 1em 99 | 100 | .accent 101 | font-size: .9rem 102 | font-family: 'Lato', sans-serif 103 | text-transform: uppercase 104 | letter-spacing: .1em 105 | border-bottom: 0 106 | &:focus 107 | border-bottom: 1px solid #333 108 | &:focus 109 | border-bottom: 1px solid #36c425 110 | 111 | .theme-title 112 | font-family: 'Lora' 113 | font-weight: normal 114 | font-size: 1.3em 115 | margin: 0 auto 116 | padding: 0 .2em 117 | margin-top: .5em 118 | &:first-letter 119 | text-transform: capitalize 120 | 121 | .page-wrapper 122 | width: 100% 123 | 124 | svg.icon.outbound 125 | display: none 126 | 127 | .btn 128 | display: flex 129 | align-items: center 130 | border: 0 131 | font-size: .9em 132 | padding: .5em 1.5em 133 | font-family: 'Lato' 134 | font-weight: bold 135 | color: #333 136 | border-radius: 3px 137 | -------------------------------------------------------------------------------- /gallery/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | home: true 3 | title: VuePress Gallery 💚 4 | --- -------------------------------------------------------------------------------- /gallery/about/README.md: -------------------------------------------------------------------------------- 1 | # About VuePress Gallery 2 | 3 | 4 | 5 | VuePress Gallery is a curated list of custom VuePress themes and resources. Find inspiration and learning materials to help you get started writing your own VuePress themes. 6 | 7 | VuePress Gallery is made with VuePress and created by [Victoria Bergquist](https://twitter.com/vicbergquist). 8 | 9 | If you would like add your own theme to the gallery, please submit a [pull request](https://github.com/vicbergquist/vuepress.gallery). Other contributions are also welcome and appreciated! 10 | 11 | ## Roadmap 12 | 13 | VuePress Gallery is a work in progress. Here are some features that are currently being planned or worked on: 14 | 15 | - Image optimization 16 | - More themes 17 | - Accessibility fixes 18 | - Repository links for each theme 19 | - Submit a theme feature 20 | - Resource page 21 | - VuePress components library 22 | 23 | For more information, please take a look at the project on [GitHub](https://github.com/vicbergquist/vuepress.gallery). 24 | 25 | ## What is VuePress? 26 | 27 | VuePress is a Vue-powered static site generator for writing documentation. To learn more about VuePress and to get started, please see the [official documentation](https://vuepress.vuejs.org). 28 | 29 | You can now also get started with VuePress on [CodeSandbox](https://codesandbox.io)! VuePress has been added as a server template and the starter project includes information about files and structure, as well as a small guide on how to get started with theme customization. 30 | -------------------------------------------------------------------------------- /gallery/gallery/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vicmeow/vuepress.gallery/c8d1d237324bc72e3cf9e7bdb5b71c7f72df714a/gallery/gallery/.gitkeep -------------------------------------------------------------------------------- /gallery/library/README.md: -------------------------------------------------------------------------------- 1 | # Component Library 2 | 3 | VuePress lets you use vue components in your markdown files. Here you'll find a collection of some useful ones that you can use in your own projects, either as is or by customising them according to your needs. 4 | 5 | - Image caption 6 | - Link preview 7 | - Video -------------------------------------------------------------------------------- /gallery/resources/README.md: -------------------------------------------------------------------------------- 1 | # Resources 2 | 3 | To get off to a great start with VuePress, we've collected our favourite VuePress resources. These include custom theme tutorials and general learning material. -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vuepress.gallery", 3 | "version": "1.0.0", 4 | "author": "vicbergquist", 5 | "description": "A curated list of custom VuePress themes.", 6 | "url": "https://github.com/vicbergquist/madewith-vuepress", 7 | "license": "MIT", 8 | "scripts": { 9 | "build:files": "node service.js", 10 | "serve:app": "vuepress dev gallery", 11 | "serve": "run-s build:files serve:app", 12 | "build": "run-s build:files build:app", 13 | "build:app": "vuepress build gallery" 14 | }, 15 | "dependencies": { 16 | "vuepress": "^1.0.0" 17 | }, 18 | "devDependencies": { 19 | "@vuepress/plugin-google-analytics": "^1.0.0", 20 | "@vuepress/plugin-pwa": "^1.0.0", 21 | "dotenv": "^8.0.0", 22 | "firebase": "^6.1.1", 23 | "node-sass": "^4.12.0", 24 | "npm-run-all": "^4.1.5", 25 | "sass-loader": "^7.1.0", 26 | "vuepress-plugin-clean-urls": "^1.0.3" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /service.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config() 2 | const fs = require('fs'); 3 | const yaml = require('js-yaml'); 4 | const firebase = require('firebase'); 5 | 6 | var config = { 7 | apiKey: process.env.API_KEY, 8 | authDomain: "vuepressgallery.firebaseapp.com", 9 | databaseURL: "https://vuepressgallery.firebaseio.com", 10 | projectId: "vuepressgallery", 11 | storageBucket: "vuepressgallery.appspot.com", 12 | messagingSenderId: "125790916337" 13 | }; 14 | firebase.initializeApp(config); 15 | 16 | const db = firebase.firestore(); 17 | var themesRef = db.collection('themes'); 18 | 19 | async function createThemeFiles() { 20 | const snapshot = await themesRef.get() 21 | 22 | return snapshot.forEach(data => { 23 | const theme = data.data(); 24 | const fileName = theme.title.replace(/[\s_]+/g, '-').toLowerCase(); 25 | const filePath = 'gallery/gallery/' + fileName + '.md'; 26 | const fileContent = '---\n' + yaml.safeDump(theme) + '---'; 27 | try { 28 | fs.writeFileSync(filePath, fileContent, { flag: 'wx' }) 29 | console.log('file written for ' + theme.title) 30 | } catch(e) { 31 | console.log('The file already exists') 32 | } 33 | }) 34 | } 35 | 36 | const run = async () => { 37 | await createThemeFiles(); 38 | process.exit(); 39 | } 40 | 41 | run() 42 | --------------------------------------------------------------------------------