bulmatown 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +38 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +22 -0
  5. data/CHANGELOG.md +7 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +53 -0
  9. data/Rakefile +8 -0
  10. data/bridgetown.automation.rb +11 -0
  11. data/bulmatown.gemspec +29 -0
  12. data/components/bulmatown/button.liquid +16 -0
  13. data/components/bulmatown/collection.liquid +37 -0
  14. data/components/bulmatown/collection.scss +12 -0
  15. data/components/bulmatown/hero.liquid +16 -0
  16. data/components/bulmatown/hero.scss +31 -0
  17. data/components/bulmatown/hero_wrapper.liquid +12 -0
  18. data/components/bulmatown/navbar.liquid +20 -0
  19. data/components/bulmatown/navbar.scss +54 -0
  20. data/components/bulmatown/pagination.liquid +31 -0
  21. data/content/bulmatown/example_page.md +8 -0
  22. data/content/bulmatown/train-on-rails.jpeg +0 -0
  23. data/example/.gitignore +35 -0
  24. data/example/Gemfile +22 -0
  25. data/example/bridgetown.config.yml +26 -0
  26. data/example/frontend/fonts/forkawesome-webfont.eot +0 -0
  27. data/example/frontend/fonts/forkawesome-webfont.svg +2849 -0
  28. data/example/frontend/fonts/forkawesome-webfont.ttf +0 -0
  29. data/example/frontend/fonts/forkawesome-webfont.woff +0 -0
  30. data/example/frontend/fonts/forkawesome-webfont.woff2 +0 -0
  31. data/example/frontend/javascript/index.js +4 -0
  32. data/example/frontend/styles/index.scss +5 -0
  33. data/example/package.json +37 -0
  34. data/example/plugins/builders/.keep +0 -0
  35. data/example/plugins/site_builder.rb +4 -0
  36. data/example/src/404.html +9 -0
  37. data/example/src/_components/footer.liquid +53 -0
  38. data/example/src/_components/head.liquid +9 -0
  39. data/example/src/_components/navbar.liquid +51 -0
  40. data/example/src/_data/authors.yml +5 -0
  41. data/example/src/_data/site_metadata.yml +18 -0
  42. data/example/src/_layouts/default.html +15 -0
  43. data/example/src/_layouts/home.html +5 -0
  44. data/example/src/_layouts/page.html +5 -0
  45. data/example/src/_layouts/post.html +5 -0
  46. data/example/src/_posts/2020-06-13-this-is-groovy.md +29 -0
  47. data/example/src/_posts/2020-06-13-welcome-to-bridgetown.md +30 -0
  48. data/example/src/about.md +11 -0
  49. data/example/src/favicon.ico +0 -0
  50. data/example/src/images/jared-white-avatar.jpg +0 -0
  51. data/example/src/index.md +21 -0
  52. data/example/src/posts.md +11 -0
  53. data/example/start.js +17 -0
  54. data/example/sync.js +35 -0
  55. data/example/webpack.config.js +78 -0
  56. data/example/yarn.lock +6127 -0
  57. data/layouts/bulmatown/homepage.html +18 -0
  58. data/layouts/bulmatown/page.html +18 -0
  59. data/layouts/bulmatown/post.html +29 -0
  60. data/lib/bulmatown.rb +11 -0
  61. data/lib/bulmatown/builder.rb +13 -0
  62. data/lib/bulmatown/version.rb +5 -0
  63. data/package.json +21 -0
  64. data/yarn.lock +51 -0
  65. metadata +210 -0
@@ -0,0 +1,4 @@
1
+ import "../styles/index.scss"
2
+ import Bulmatown from "bulmatown"
3
+
4
+ console.info("Bridgetown is loaded!")
@@ -0,0 +1,5 @@
1
+ //$text: #444;
2
+
3
+ //$theme_variation: rust;
4
+
5
+ @import "~bulmatown/frontend/styles"
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "new-bridgetown-site",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "build": "bundle exec bridgetown build",
7
+ "serve": "bundle exec bridgetown serve",
8
+ "webpack-build": "webpack --mode production",
9
+ "webpack-dev": "webpack --mode development -w",
10
+ "deploy": "yarn webpack-build && yarn build",
11
+ "sync": "node sync.js",
12
+ "start": "node start.js"
13
+ },
14
+ "dependencies": {
15
+ "bridgetown-quick-search": "1.0.3",
16
+ "bulmatown": "../../bulmatown"
17
+ },
18
+ "devDependencies": {
19
+ "@babel/core": "^7.9.0",
20
+ "@babel/plugin-proposal-class-properties": "^7.8.3",
21
+ "@babel/plugin-proposal-decorators": "^7.10.1",
22
+ "@babel/plugin-transform-runtime": "^7.9.0",
23
+ "@babel/preset-env": "^7.9.0",
24
+ "babel-loader": "^8.1.0",
25
+ "browser-sync": "^2.26.7",
26
+ "concurrently": "^5.2.0",
27
+ "css-loader": "^3.4.2",
28
+ "file-loader": "^6.0.0",
29
+ "mini-css-extract-plugin": "^0.9.0",
30
+ "node-sass": "^4.13.1",
31
+ "sass-loader": "^8.0.2",
32
+ "style-loader": "^1.1.3",
33
+ "webpack": "^4.42.1",
34
+ "webpack-cli": "^3.3.11",
35
+ "webpack-manifest-plugin": "^2.2.0"
36
+ }
37
+ }
File without changes
@@ -0,0 +1,4 @@
1
+ class SiteBuilder < Bridgetown::Builder
2
+ # write builders which subclass SiteBuilder in plugins/builder
3
+ end
4
+
@@ -0,0 +1,9 @@
1
+ ---
2
+ permalink: /404.html
3
+ layout: default
4
+ ---
5
+
6
+ <h1>404</h1>
7
+
8
+ <p><strong>Page not found :(</strong></p>
9
+ <p>The requested page could not be found.</p>
@@ -0,0 +1,53 @@
1
+ <footer class="footer">
2
+ <div class="container">
3
+ <div class="columns">
4
+ <div class="column is-5">
5
+ <div class="logo">
6
+ {{ metadata.title}}
7
+ </div>
8
+
9
+ <h4>
10
+ {{ metadata.tagline }}
11
+ </h4>
12
+
13
+ <div class="mt-3">
14
+ Follow on Twitter: <strong><a href="https://twitter.com/{{ metadata.twitter }}">@{{ metadata.twitter }}</strong></a>
15
+ </div>
16
+
17
+ <div class="mt-6 is-size-7">
18
+ Website content licensed <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a>
19
+ </div>
20
+
21
+ </div>
22
+ <div class="column is-4">
23
+ <h4>
24
+ Other <strong>Resources</strong>
25
+ </h4>
26
+
27
+ <div class="mt-5">
28
+ <a href="https://wikipedia.org">Wikipedia</a><br/>
29
+ <a href="https://archive.org/web/">Wayback Machine</a>
30
+ </div>
31
+ </div>
32
+ <div class="column is-3">
33
+ <h4>
34
+ <strong>Share</strong> on Social Media
35
+ </h4>
36
+
37
+ <div class="mt-5">
38
+ <a href="https://twitter.com/intent/tweet?url={{ url | uri_escape }}&via={{ metadata.twitter }}&text=Check%20out%20this%20awesome%20new%20site%20built%20with%20Bridgetown%20and%20Ruby%21&hashtags=SpinUpBridgetown%2CJamstack" class="button is-info">
39
+ <span class="icon"> <i class="fa fa-twitter is-size-5"></i> </span>
40
+ <span class="has-text-weight-bold">Tweet</span>
41
+ </a>
42
+ </div>
43
+
44
+ <div class="mt-6">
45
+ <a href="/feed.xml" class="button is-danger is-small">
46
+ <span class="icon"> <i class="fa fa-rss"></i> </span>
47
+ <span class="has-text-weight-bold">News Feed</span>
48
+ </a>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </footer>
@@ -0,0 +1,9 @@
1
+ <meta charset="utf-8" />
2
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
3
+ {% capture page_title %}{{ title | strip_html | strip_newlines }}{% endcapture %}
4
+ <title>{% if page_title != "" %}{{ page_title | escape }} | {{ metadata.title | escape }}{% else %}{{ metadata.title | escape }}: {{ metadata.tagline | escape }}{% endif %}</title>
5
+
6
+ <meta name="description" content="{{ metadata.description }}" />
7
+
8
+ <link rel="stylesheet" href="{% webpack_path css %}" />
9
+ <script src="{% webpack_path js %}" defer></script>
@@ -0,0 +1,51 @@
1
+ {% rendercontent "bulmatown/navbar", class: "is-dark" %}
2
+ {% with logo %}
3
+ <a class="navbar-item" href="/">
4
+ {{ metadata.title }}
5
+ </a>
6
+ {% endwith %}
7
+ {% with items_start %}
8
+ <a class="navbar-item" href="/">Home</a>
9
+ <a class="navbar-item" href="/posts">Articles</a>
10
+ <a class="navbar-item" href="/about">About</a>
11
+ <div class="navbar-item has-dropdown is-hoverable">
12
+ <a class="navbar-link" href="/topics">
13
+ Topics
14
+ </a>
15
+ <div class="navbar-dropdown is-boxed">
16
+ <a class="navbar-item" href="https://bulma.io/documentation/overview/start/">
17
+ Overview
18
+ </a>
19
+ <a class="navbar-item" href="https://bulma.io/documentation/overview/modifiers/">
20
+ Modifiers
21
+ </a>
22
+ <a class="navbar-item" href="https://bulma.io/documentation/columns/basics/">
23
+ Columns
24
+ </a>
25
+ <a class="navbar-item" href="https://bulma.io/documentation/layout/container/">
26
+ Layout
27
+ </a>
28
+ <a class="navbar-item" href="https://bulma.io/documentation/form/general/">
29
+ Form
30
+ </a>
31
+ <hr class="navbar-divider">
32
+ <a class="navbar-item" href="https://bulma.io/documentation/elements/box/">
33
+ Elements
34
+ </a>
35
+ <a class="navbar-item" href="https://bulma.io/documentation/components/breadcrumb/">
36
+ Components
37
+ </a>
38
+ </div>
39
+ </div>
40
+ {% endwith %}
41
+
42
+ {% with items_end %}
43
+ <div class="navbar-item search-item">
44
+ {% render "bridgetown_quick_search/search", placeholder: "Search", input_class: "input" %}
45
+ </div>
46
+ <a class="navbar-item is-hidden-desktop-only" href="https://twitter.com/{{ metadata.twitter }}" target="_blank">
47
+ <span class="icon"><i class="fa fa-twitter is-size-6"></i></span>
48
+ <span class="is-hidden-tablet">Twitter</span>
49
+ </a>
50
+ {% endwith %}
51
+ {% endrendercontent %}
@@ -0,0 +1,5 @@
1
+ jared:
2
+ name: Jared White
3
+ avatar: /images/jared-white-avatar.jpg
4
+ twitter: jaredcwhite
5
+ website: https://jaredwhite.com
@@ -0,0 +1,18 @@
1
+ # Site settings
2
+ # These are used to personalize your new site. If you look in the HTML files,
3
+ # you will see them accessed via {{ site.metadata.title }}, {{ site.metadata.email }}, and so on.
4
+ # You can create any custom variable you would like, and they will be accessible
5
+ # in the templates via {{ site.metadata.myvariable }}.
6
+
7
+ title: Your awesome title
8
+ tagline: This site is totally awesome
9
+ email: your-email@example.com
10
+ description: >- # this means to ignore newlines until "baseurl:"
11
+ Write an awesome description for your new site here. It will appear in your document head meta (for Google search results) and in your feed.xml site description.
12
+
13
+ twitter: jaredcwhite
14
+
15
+ bulmatown_theme:
16
+ image_sizes:
17
+ embed: image
18
+ hero: image_hero
@@ -0,0 +1,15 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ {% render "head", metadata: site.metadata, title: page.title %}
5
+ </head>
6
+ <body class="{{ page.layout }} {{ page.page_class }}">
7
+ {% render "navbar", metadata: site.metadata %}
8
+
9
+ <main>
10
+ {{ content }}
11
+ </main>
12
+
13
+ {% render "footer", url: site.url, metadata: site.metadata %}
14
+ </body>
15
+ </html>
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: bulmatown/homepage
3
+ ---
4
+
5
+ {{ content }}
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: bulmatown/page
3
+ ---
4
+
5
+ {{ content }}
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: bulmatown/post
3
+ ---
4
+
5
+ {{ content }}
@@ -0,0 +1,29 @@
1
+ ---
2
+ layout: post
3
+ title: This is Groovy
4
+ subtitle: Take a look at the source for this post to get an idea about how it works.
5
+ image: https://res.cloudinary.com/mariposta/image/upload/w_1800,c_limit,q_65/EEF14FD7-4409-419C-B4CF-DE4934C67F1A_eexxp7.jpg
6
+ image_hero: https://res.cloudinary.com/mariposta/image/upload/w_2048,c_limit,q_65/EEF14FD7-4409-419C-B4CF-DE4934C67F1A_eexxp7.jpg
7
+ rainbow_hero: true
8
+ author: jared
9
+ ---
10
+
11
+ You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `bridgetown serve`, which launches a web server and auto-regenerates your site when a file is updated.
12
+
13
+ Bridgetown requires blog post files to be named according to the following format:
14
+
15
+ `YEAR-MONTH-DAY-title.EXT`
16
+
17
+ Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `EXT` is the file extension representing the format used in the file (for example, `md` for Markdown). After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
18
+
19
+ Bridgetown also offers powerful support for code snippets:
20
+
21
+ ```ruby
22
+ def print_hi(name)
23
+ puts "Hi, #{name}"
24
+ end
25
+ print_hi('Tom')
26
+ #=> prints 'Hi, Tom' to STDOUT.
27
+ ````
28
+
29
+ Check out the [Bridgetown docs](https://bridgetownrb.com/docs/) for more info on how to get the most out of Bridgetown. File all bugs/feature requests at [Bridgetown’s GitHub repo](https://github.com/bridgetownrb/bridgetown). If you have questions, you can ask them on [Bridgetown Community Forum](https://community.bridgetownrb.com).
@@ -0,0 +1,30 @@
1
+ ---
2
+ layout: post
3
+ title: "Your First Post on Bridgetown"
4
+ subtitle: You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes!
5
+ date: 2020-06-13 08:39:40 -0700
6
+ categories: updates
7
+ image: https://res.cloudinary.com/mariposta/image/upload/w_1800,c_limit,q_65/IMG_5232_srqhvl.jpg
8
+ image_hero: https://res.cloudinary.com/mariposta/image/upload/w_2048,c_limit,q_65/IMG_5232_srqhvl.jpg
9
+ author: jared
10
+ ---
11
+
12
+ You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `bridgetown serve`, which launches a web server and auto-regenerates your site when a file is updated.
13
+
14
+ Bridgetown requires blog post files to be named according to the following format:
15
+
16
+ `YEAR-MONTH-DAY-title.EXT`
17
+
18
+ Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `EXT` is the file extension representing the format used in the file (for example, `md` for Markdown). After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
19
+
20
+ Bridgetown also offers powerful support for code snippets:
21
+
22
+ ```ruby
23
+ def print_hi(name)
24
+ puts "Hi, #{name}"
25
+ end
26
+ print_hi('Tom')
27
+ #=> prints 'Hi, Tom' to STDOUT.
28
+ ````
29
+
30
+ Check out the [Bridgetown docs](https://bridgetownrb.com/docs/) for more info on how to get the most out of Bridgetown. File all bugs/feature requests at [Bridgetown’s GitHub repo](https://github.com/bridgetownrb/bridgetown). If you have questions, you can ask them on [Bridgetown Community Forum](https://community.bridgetownrb.com).
@@ -0,0 +1,11 @@
1
+ ---
2
+ layout: page
3
+ title: About
4
+ subtitle: This is an About page.
5
+ ---
6
+
7
+ This is the basic Bridgetown site template. You can find out more info about customizing your Bridgetown site, as well as basic Bridgetown usage documentation at [bridgetownrb.com](https://bridgetownrb.com/)
8
+
9
+ You can find the source code for Bridgetown at GitHub:
10
+ [bridgetownrb](https://github.com/bridgetownrb) /
11
+ [bridgetown](https://github.com/bridgetownrb/bridgetown)
File without changes
@@ -0,0 +1,21 @@
1
+ ---
2
+ layout: home
3
+ ---
4
+
5
+ Welcome to my site!
6
+
7
+ I write about topics that I care about and believe are important. I try to bring my authentic voice every time I set out to type, and I strive to share a viewpoint that gets you thinking and inspired to dig deeper.
8
+
9
+ ----
10
+ {: .my-6}
11
+
12
+ # Latest Articles
13
+ {: .mb-5 .title .has-text-centered}
14
+
15
+ {% assign posts = site.posts | slice: 0, 6 %}
16
+ {% render "bulmatown/collection", collection: posts, metadata: site.metadata %}
17
+
18
+ {% if site.posts.size > 6 %}
19
+ <a href="/posts/" class="button is-primary is-outlined is-small"><span>Previous Articles</span> <span class="icon"><i class="fa fa-arrow-right"></i></span></a>
20
+ {: .mt-6 .has-text-centered}
21
+ {% endif %}
@@ -0,0 +1,11 @@
1
+ ---
2
+ layout: page
3
+ title: Articles
4
+ pagination:
5
+ enabled: true
6
+ ---
7
+
8
+ {% assign posts = paginator.documents %}
9
+ {% render "bulmatown/collection", collection: posts, metadata: site.metadata %}
10
+
11
+ {% render "bulmatown/pagination", paginator: paginator %}
@@ -0,0 +1,17 @@
1
+ const concurrently = require('concurrently');
2
+
3
+ // By default, configure Bridgetown to use port 4001 so Browsersync can use 4000
4
+ // See also Browsersync settings in sync.js
5
+ const port = 4001
6
+
7
+ /////////////////
8
+ // Concurrently
9
+ /////////////////
10
+ concurrently([
11
+ { command: "yarn webpack-dev", name: "Webpack", prefixColor: "yellow"},
12
+ { command: "sleep 4; yarn serve --port " + port, name: "Bridgetown", prefixColor: "green"},
13
+ { command: "sleep 8; yarn sync", name: "Live", prefixColor: "blue"}
14
+ ], {
15
+ restartTries: 3,
16
+ killOthers: ['failure', 'success'],
17
+ }).then(() => { console.log("Done.");console.log('\033[0G'); }, () => {});
@@ -0,0 +1,35 @@
1
+ const browserSync = require("browser-sync").create();
2
+
3
+ // You can change these configuration values:
4
+ const proxy = "http://localhost:4001"
5
+ const port = 4000
6
+ const uiPort = 4002
7
+
8
+ ////////////////
9
+ // Browsersync
10
+ ////////////////
11
+ browserSync.init({
12
+ open: false,
13
+ notify: false,
14
+ proxy: proxy,
15
+ port: port,
16
+ files: "output/index.html",
17
+ ghostMode: {
18
+ clicks: false,
19
+ forms: false,
20
+ scroll: false,
21
+ },
22
+ reloadDelay: 0,
23
+ injectChanges: false,
24
+ ui: {
25
+ port: uiPort
26
+ },
27
+ snippetOptions: {
28
+ rule: {
29
+ match: /<\/head>/i,
30
+ fn: function (snippet, match) {
31
+ return snippet + match;
32
+ },
33
+ },
34
+ },
35
+ });
@@ -0,0 +1,78 @@
1
+ const path = require("path");
2
+ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
3
+ const ManifestPlugin = require("webpack-manifest-plugin");
4
+
5
+ module.exports = {
6
+ entry: "./frontend/javascript/index.js",
7
+ devtool: "source-map",
8
+ // Set some or all of these to true if you want more verbose logging:
9
+ stats: {
10
+ modules: false,
11
+ builtAt: false,
12
+ timings: false,
13
+ children: false,
14
+ },
15
+ output: {
16
+ path: path.resolve(__dirname, "output", "_bridgetown", "static", "js"),
17
+ filename: "all.[contenthash].js",
18
+ },
19
+ resolve: {
20
+ extensions: [".js", ".jsx"],
21
+ },
22
+ plugins: [
23
+ new MiniCssExtractPlugin({
24
+ filename: "../css/all.[contenthash].css",
25
+ }),
26
+ new ManifestPlugin({
27
+ fileName: path.resolve(__dirname, ".bridgetown-webpack", "manifest.json"),
28
+ }),
29
+ ],
30
+ module: {
31
+ rules: [
32
+ {
33
+ test: /\.(js|jsx)/,
34
+ use: {
35
+ loader: "babel-loader",
36
+ options: {
37
+ presets: ["@babel/preset-env"],
38
+ plugins: [
39
+ ["@babel/plugin-proposal-decorators", { "legacy": true }],
40
+ ["@babel/plugin-proposal-class-properties", { "loose" : true }],
41
+ [
42
+ "@babel/plugin-transform-runtime",
43
+ {
44
+ helpers: false,
45
+ },
46
+ ],
47
+ ],
48
+ },
49
+ },
50
+ },
51
+ {
52
+ test: /\.(s[ac]|c)ss$/,
53
+ use: [
54
+ MiniCssExtractPlugin.loader,
55
+ "css-loader",
56
+ {
57
+ loader: "sass-loader",
58
+ options: {
59
+ sassOptions: {
60
+ includePaths: [
61
+ path.resolve(__dirname, "src/_components")
62
+ ],
63
+ },
64
+ },
65
+ },
66
+ ],
67
+ },
68
+ {
69
+ test: /\.woff2?$|\.ttf$|\.eot$|\.svg$/,
70
+ loader: "file-loader",
71
+ options: {
72
+ outputPath: "../fonts",
73
+ publicPath: "../fonts",
74
+ },
75
+ },
76
+ ],
77
+ },
78
+ };