bulmatown 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ };