rails_app_generator 0.2.3 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/after_templates/addons/lograge/_.rb +22 -0
  4. data/after_templates/addons/lograge/app/controllers/home_controller.rb +9 -0
  5. data/after_templates/addons/lograge/app/views/home/index.html.erb +11 -0
  6. data/after_templates/addons/lograge/app/views/layouts/application.html.erb +21 -0
  7. data/after_templates/addons/phony_rails/_.rb +62 -0
  8. data/after_templates/addons/phony_rails/app/controllers/home_controller.rb +7 -0
  9. data/after_templates/addons/phony_rails/app/views/home/index.html.erb +46 -0
  10. data/after_templates/addons/phony_rails/app/views/layouts/application.html.erb +19 -0
  11. data/after_templates/addons/phony_rails/db/seeds.rb +16 -0
  12. data/after_templates/addons/public_suffix/_.rb +23 -0
  13. data/after_templates/addons/public_suffix/app/controllers/home_controller.rb +7 -0
  14. data/after_templates/addons/public_suffix/app/views/home/index.html.erb +29 -0
  15. data/after_templates/addons/public_suffix/app/views/layouts/application.html.erb +23 -0
  16. data/after_templates/application/printspeak/_.rb +21 -27
  17. data/after_templates/application/printspeak/app/assets/stylesheets/application.bootstrap.scss +1 -1
  18. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/_global.scss +0 -0
  19. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/_variables.scss +0 -0
  20. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/components/_buttons.scss +0 -0
  21. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/components/_navbar.scss +0 -0
  22. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/sections/_contact.scss +0 -0
  23. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/sections/_footer.scss +0 -0
  24. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/sections/_masthead.scss +0 -0
  25. data/after_templates/application/printspeak/app/assets/stylesheets/page/sections/_pagehead.scss +52 -0
  26. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/sections/_portfolio.scss +0 -0
  27. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/sections/_team.scss +0 -0
  28. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/sections/_timeline.scss +0 -0
  29. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/styles.scss +1 -0
  30. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/variables/_colors.scss +0 -0
  31. data/after_templates/application/printspeak/app/assets/stylesheets/{home → page}/variables/_typography.scss +0 -0
  32. data/after_templates/application/printspeak/app/controllers/application_controller.rb +41 -0
  33. data/after_templates/application/printspeak/app/controllers/home_controller.rb +3 -3
  34. data/after_templates/application/printspeak/app/controllers/page_controller.rb +13 -0
  35. data/after_templates/application/printspeak/app/views/home/_body_end.html.erb +45 -0
  36. data/after_templates/application/printspeak/app/views/home/_navbar.html.erb +14 -0
  37. data/after_templates/application/printspeak/app/views/home/index.html.erb +234 -283
  38. data/after_templates/application/printspeak/app/views/layouts/_body_end.html.erb +0 -0
  39. data/after_templates/application/printspeak/app/views/layouts/_footer.html.erb +2 -2
  40. data/after_templates/application/printspeak/app/views/layouts/_head.html.erb +0 -0
  41. data/after_templates/application/printspeak/app/views/layouts/application.html.erb +3 -3
  42. data/after_templates/application/printspeak/app/views/page/_navbar.html.erb +9 -0
  43. data/after_templates/application/printspeak/app/views/page/benefits.html.erb +28 -0
  44. data/after_templates/application/printspeak/app/views/page/privacy.html.erb +12 -0
  45. data/after_templates/application/printspeak/app/views/page/terms.html.erb +12 -0
  46. data/docs/last_run/app_generator_class.json +24 -0
  47. data/docs/last_run/app_generator_data.json +5 -2
  48. data/docs/last_run/rails_options_class.json +25 -1
  49. data/docs/last_run/rails_options_data.json +5 -2
  50. data/lib/rails_app_generator/addons/docker.rb +1 -0
  51. data/lib/rails_app_generator/addons/generators.rb +1 -0
  52. data/lib/rails_app_generator/addons/lograge.rb +3 -1
  53. data/lib/rails_app_generator/addons/phony_rails.rb +13 -0
  54. data/lib/rails_app_generator/addons/public_suffix.rb +13 -0
  55. data/lib/rails_app_generator/app_generator.rb +10 -2
  56. data/lib/rails_app_generator/rag_initializer.rb +14 -128
  57. data/lib/rails_app_generator/version.rb +1 -1
  58. data/package-lock.json +2 -2
  59. data/package.json +1 -1
  60. data/profiles/addons/lograge.json +12 -0
  61. data/profiles/addons/phony_rails.json +12 -0
  62. data/profiles/addons/public_suffix.json +12 -0
  63. data/profiles/application/printspeak.json +2 -1
  64. data/templates/addons/lograge/config/initializers/lograge.rb +9 -1
  65. data/templates/thor_task/profile/after_template.rb +17 -8
  66. metadata +44 -21
  67. data/after_templates/application/printspeak/app/views/layouts/_alerts.html.erb +0 -2
  68. data/after_templates/application/printspeak/app/views/page/_footer.html.erb +0 -184
  69. data/after_templates/application/printspeak/app/views/page/architecture.html.erb +0 -33
  70. data/after_templates/application/printspeak/app/views/page/blog.html.erb +0 -44
  71. data/after_templates/application/printspeak/app/views/page/page_controller.rb +0 -27
  72. data/after_templates/application/printspeak/app/views/page/readme.html.erb +0 -49
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae97bb31a180dfc073aae1492fd1da10ad392d906ce5912a8ae50840cd1b65b9
4
- data.tar.gz: fa9bbe29a263dec0e61ea7bbdbbfc361f16e3eb36d30e389364d3106c375920f
3
+ metadata.gz: 741a7b8a1f24f5287e02fffadea46a97f383e52598674edaf12741d16ff3d402
4
+ data.tar.gz: c22870121507421a70589f0f43e17c39b8bf309b97674aae80a425022e1490d9
5
5
  SHA512:
6
- metadata.gz: 74757b083c9a9aa1fbc1a66ef3646781237f9f2b09b39beb829a66480082df4ac53f2f63fc0c24687914d1737847a9ec95221db6a60e04b4c160f4174a64c433
7
- data.tar.gz: 9ad5c9b38e11cdf2ccfb633c141412b2ee610ea0c3ea42dc52e238cc65c5363d024798ab495a61142fca05ece2a0ee56dec87f2ea3de37151daa889c3253ab91
6
+ metadata.gz: d778c940bc53520709050b3c34d2aae1e083a2bc450c03fbcd288b67b21fcf24fa4b50e0b0c680b848c9cb0b0c7ccd24c26f8b65e6ff36843a4aff1505d7d1f2
7
+ data.tar.gz: '099224eea8b76be2fe7dcfb49aa60200a8c85b0525508372ec24818901547200fc720fcffdd37d3c7e973cd2353238b24d42e20d271fbfb7486e5aaeb3c04712'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## [0.2.5](https://github.com/klueless-io/rails_app_generator/compare/v0.2.4...v0.2.5) (2022-08-10)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add public_suffix addon ([dce30f3](https://github.com/klueless-io/rails_app_generator/commit/dce30f3d3a479ca41ab7c60deef59f9d19d2ce13))
7
+
8
+ ## [0.2.4](https://github.com/klueless-io/rails_app_generator/compare/v0.2.3...v0.2.4) (2022-08-10)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add lograge addon ([e980bb2](https://github.com/klueless-io/rails_app_generator/commit/e980bb2ccf46a33aba755c0370a9ae263e820256))
14
+ * cops ([cce097d](https://github.com/klueless-io/rails_app_generator/commit/cce097d61da2a5d8a3d1c335a08820cacb1936f4))
15
+
16
+ ## [0.2.3](https://github.com/klueless-io/rails_app_generator/compare/v0.2.2...v0.2.3) (2022-08-09)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * add profile - rubocop ([1c30098](https://github.com/klueless-io/rails_app_generator/commit/1c30098ea0abee370aba96f3f7db6748ebdbccd4))
22
+
1
23
  ## [0.2.2](https://github.com/klueless-io/rails_app_generator/compare/v0.2.1...v0.2.2) (2022-08-09)
2
24
 
3
25
 
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Tame Rails multi-line logging into a single line per request
4
+ #
5
+ # exe/rag addons/lograge
6
+
7
+ self.local_template_path = File.dirname(__FILE__)
8
+
9
+ gac 'base rails 7 image created'
10
+
11
+ bundle_install
12
+
13
+ add_controller('home', 'index')
14
+
15
+ route("root 'home#index'")
16
+
17
+ force_copy
18
+
19
+ directory "app/controllers"
20
+ directory "app/views/home"
21
+ directory "app/views/layouts"
22
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
@@ -0,0 +1,9 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ logger.debug("I'm a debug log")
4
+ logger.info("I'm an info log")
5
+ logger.warn("I'm a warn log")
6
+ logger.error("I'm an error log: error message")
7
+ logger.fatal("I'm a fatal log")
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ <style>
2
+ .alert { color: red; }
3
+ .notice { color: green; }
4
+ </style>
5
+
6
+ <% flash.each do |type, msg| %><div class="<%= type %>"><%= msg %></div><% end %>
7
+ <% if flash.any? %><hr /><% end %>
8
+
9
+ <h1>Lograge</h1>
10
+
11
+ <h2>Tame Rails' multi-line logging into a single line per request</h2>
@@ -0,0 +1,21 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= camelized %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <%%= csrf_meta_tags %>
7
+ <%%= csp_meta_tag %>
8
+
9
+ <%- if options[:skip_hotwire] || options[:skip_javascript] -%>
10
+ <%%= stylesheet_link_tag "application" %>
11
+ <%- else -%>
12
+ <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
13
+ <%- end -%>
14
+ </head>
15
+
16
+ <body>
17
+ <main>
18
+ <%%= yield %>
19
+ </main>
20
+ </body>
21
+ </html>
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This Gem adds useful methods to your Rails app to validate, display and save phone numbers.
4
+ #
5
+ # exe/rag addons/phony_rails
6
+
7
+ self.local_template_path = File.dirname(__FILE__)
8
+
9
+ gac 'base rails 7 image created'
10
+
11
+ bundle_install
12
+
13
+ add_controller('home', 'index')
14
+
15
+ route("root 'home#index'")
16
+
17
+ force_copy
18
+
19
+ directory "app/controllers"
20
+ directory "app/views/home"
21
+ directory "app/views/layouts"
22
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
23
+
24
+ template 'db/seeds.rb' , 'db/seeds.rb'
25
+
26
+ after_bundle do
27
+ setup_db
28
+ end
29
+
30
+ def setup_db
31
+ # add_scaffold('post', 'title', 'body:text')
32
+ # add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
33
+ # add_scaffold('product', 'name', 'price:integer')
34
+
35
+ # db_migrate
36
+ end
37
+
38
+ # Other template command examples
39
+ # bundle_install
40
+ # css_install('tailwind')
41
+ # rails_command('db:migrate')
42
+ # rails_command('db:migrate')
43
+ # bundle_add('hotwire-rails')
44
+ # rails_command('hotwire:install')
45
+ # run('bin/importmap pin sortablejs')
46
+ # run('npm install daisyui')
47
+ # rubocop
48
+ #
49
+ # directory 'app/assets/images'
50
+ # create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
51
+ # append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
52
+ # insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
53
+ # before: %( <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
54
+ # gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mx-auto px-5'
55
+ # template 'home.css', 'app/assets/stylesheets/home.css'
56
+ #
57
+ # add_controller('page', 'benefits', 'faq', 'terms', 'privacy', '--skip-routes')
58
+ # route(<<-'RUBY')
59
+ # PageController.action_methods.each do |action|
60
+ # get "/#{action}", to: "page##{action}", as: "page_#{action}"
61
+ # end
62
+ # RUBY
@@ -0,0 +1,7 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def some_action
6
+ end
7
+ end
@@ -0,0 +1,46 @@
1
+ <style>
2
+ .alert { color: red; }
3
+ .notice { color: green; }
4
+ </style>
5
+
6
+ <% flash.each do |type, msg| %><div class="<%= type %>"><%= msg %></div><% end %>
7
+ <% if flash.any? %><hr /><% end %>
8
+
9
+ <h1>Phony rails</h1>
10
+
11
+ <h2>This Gem adds useful methods to your Rails app to validate, display and save phone numbers.</h2>
12
+
13
+ <hr />
14
+
15
+ <pre>
16
+ <code>
17
+ PhonyRails.normalize_number('0211112222', country_code: 'AU')
18
+ PhonyRails.normalize_number('0424001122', country_code: 'AU')
19
+ PhonyRails.normalize_number('+4790909090', default_country_code: 'SE')
20
+ </code>
21
+ </pre>
22
+
23
+ <pre>
24
+ <code>
25
+ <%= PhonyRails.normalize_number('0211112222', country_code: 'AU') %>
26
+ <%= PhonyRails.normalize_number('0424001122', country_code: 'AU') %>
27
+ <%= PhonyRails.normalize_number('+61424001122', default_country_code: 'AU') %>
28
+ </code>
29
+ </pre>
30
+
31
+ <hr />
32
+
33
+ <pre>
34
+ <code>
35
+ "311012341234".phony_formatted(format: :international, spaces: '-')
36
+ "+31-10-12341234".phony_formatted(format: :international, spaces: '-')
37
+ "+31(0)012341234".phony_formatted(format: :international, spaces: '-')
38
+ </code>
39
+ </pre>
40
+
41
+ <pre>
42
+ <code>
43
+ <%= "311012341234".phony_formatted(format: :international, spaces: '-') %>
44
+ <%= "+31-10-12341234".phony_formatted(format: :international, spaces: '-') %>
45
+ <%= "+31(0)012341234".phony_formatted(format: :international, spaces: '-') %></code>
46
+ </pre>
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= camelized %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <%%= csrf_meta_tags %>
7
+ <%%= csp_meta_tag %>
8
+
9
+ <%- if options[:skip_hotwire] || options[:skip_javascript] -%>
10
+ <%%= stylesheet_link_tag "application" %>
11
+ <%- else -%>
12
+ <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
13
+ <%- end -%>
14
+ </head>
15
+
16
+ <body>
17
+ <%%= yield %>
18
+ </body>
19
+ </html>
@@ -0,0 +1,16 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
3
+ #
4
+ # User.find_or_create_by(email: "admin@admin.com") do |user|
5
+ # user.name = 'Admin'
6
+ # user.password = 'password'
7
+ # user.admin = true
8
+ # end
9
+
10
+ # david = User.create(email: 'david@site.com', name: 'david', password: 'password')
11
+ # bob = User.create(email: 'bob@site.com', name: 'bob', password: 'password')
12
+ # lisa = User.create(email: 'lisa@site.com', name: 'lisa', password: 'password')
13
+
14
+ # 10.times do |i|
15
+ # Post.create(title: "Post #{i}", body: "This is the body of post #{i}", user: User.all.sample)
16
+ # end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains.
4
+ #
5
+ # exe/rag addons/public_suffix
6
+
7
+ self.local_template_path = File.dirname(__FILE__)
8
+
9
+ gac 'base rails 7 image created'
10
+
11
+ bundle_install
12
+
13
+ add_controller('home', 'index')
14
+
15
+ route("root 'home#index'")
16
+
17
+ force_copy
18
+
19
+ directory "app/controllers"
20
+ directory "app/views/home"
21
+ directory "app/views/layouts"
22
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
23
+
@@ -0,0 +1,7 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def some_action
6
+ end
7
+ end
@@ -0,0 +1,29 @@
1
+ <h1>Public suffix</h1>
2
+
3
+ <h2>PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains.</h2>
4
+
5
+ <hr />
6
+
7
+ <p>PublicSuffix.domain("<b>KlueLess.io</b>")</p>
8
+ <code><%= PublicSuffix.domain("KlueLess.io") %></code>
9
+ <br><br>
10
+ <p>PublicSuffix.domain("<b>AppyDave.com</b>")</p>
11
+ <code><%= PublicSuffix.domain("AppyDave.com") %></code>
12
+ <br><br>
13
+ <p>PublicSuffix.domain("<b>www.google.com</b>")</p>
14
+ <code><%= PublicSuffix.domain("www.google.com") %></code>
15
+ <br><br>
16
+ <p>PublicSuffix.domain("<b>www.google.co.uk</b>")</p>
17
+ <code><%= PublicSuffix.domain("www.google.co.uk") %></code>
18
+ <br><br>
19
+
20
+ <hr />
21
+
22
+ <p>domain = PublicSuffix.parse("<b>www.google.com</b>")</p>
23
+ <% domain = PublicSuffix.parse("www.google.com") %>
24
+
25
+ <p>tld: <code><b><%= domain.tld %></b></code>
26
+ <p>sld: <code><b><%= domain.sld %></b></code>
27
+ <p>trd: <code><b><%= domain.trd %></b></code>
28
+ <p>domain: <code><b><%= domain.domain %></b></code>
29
+ <p>subdomain: <code><b><%= domain.subdomain %></b></code>
@@ -0,0 +1,23 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= camelized %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <%%= csrf_meta_tags %>
7
+ <%%= csp_meta_tag %>
8
+
9
+ <%- if options[:skip_hotwire] || options[:skip_javascript] -%>
10
+ <%%= stylesheet_link_tag "application" %>
11
+ <%- else -%>
12
+ <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
13
+ <%- end -%>
14
+ <style>
15
+ .alert { color: red; }
16
+ .notice { color: green; }
17
+ </style>
18
+ </head>
19
+
20
+ <body>
21
+ <%%= yield %>
22
+ </body>
23
+ </html>
@@ -9,28 +9,36 @@ self.local_template_path = File.dirname(__FILE__)
9
9
  gac 'base rails 7 image created'
10
10
 
11
11
  add_controller('home', 'index')
12
- add_controller('page', 'blog', 'readme', 'about', 'contact', 'faq', 'terms', 'privacy')
12
+ add_controller('page', 'benefits', 'faq', 'terms', 'privacy', '--skip-routes')
13
13
 
14
14
  route("root 'home#index'")
15
+ route(<<-'RUBY')
16
+ PageController.action_methods.each do |action|
17
+ get "/#{action}", to: "page##{action}", as: "page_#{action}"
18
+ end
19
+ RUBY
15
20
 
16
- force_copy
17
-
18
- copy_file 'app/controllers/home_controller.rb' , 'app/controllers/home_controller.rb'
19
- copy_file 'app/views/home/index.html.erb' , 'app/views/home/index.html.erb'
20
-
21
- copy_file 'app/views/layouts/_alerts.html.erb' , 'app/views/layouts/_alerts.html.erb'
22
- copy_file 'app/views/layouts/_navbar.html.erb' , 'app/views/layouts/_navbar.html.erb'
23
- copy_file 'app/views/layouts/_footer.html.erb' , 'app/views/layouts/_footer.html.erb'
24
- template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
21
+ after_bundle do
22
+ customizations
23
+ setup_db
24
+ rubocop
25
+ end
25
26
 
26
- template 'db/seeds.rb' , 'db/seeds.rb'
27
+ def customizations
28
+ force_copy
27
29
 
28
- after_bundle do
29
30
  directory "app/assets/images"
30
31
  directory "app/assets/stylesheets"
32
+
33
+ directory "app/controllers"
34
+
35
+ directory "app/views/home"
31
36
  directory "app/views/page"
32
37
 
33
- setup_db
38
+ directory "app/views/layouts"
39
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
40
+
41
+ template 'db/seeds.rb' , 'db/seeds.rb'
34
42
  end
35
43
 
36
44
  def setup_db
@@ -39,17 +47,3 @@ def setup_db
39
47
 
40
48
  db_migrate
41
49
  end
42
-
43
- # Other template command examples
44
- # css_install('tailwind')
45
- # rails_command('db:migrate')
46
- # bundle_add('hotwire-rails')
47
- # rails_command('hotwire:install')
48
- # run('bin/importmap pin sortablejs')
49
- # run('npm install daisyui')
50
- # create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
51
- # append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
52
- # insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
53
- # before: %( <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
54
- # gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mx-auto px-5'
55
- # template 'home.css', 'app/assets/stylesheets/home.css'
@@ -1,3 +1,3 @@
1
1
  @import 'bootstrap/scss/bootstrap';
2
2
  @import 'bootstrap-icons/font/bootstrap-icons';
3
- @import 'home/styles.scss'
3
+ @import 'page/styles.scss'
@@ -0,0 +1,52 @@
1
+ //
2
+ // pagehead section styling
3
+ //
4
+
5
+ header.pagehead {
6
+ padding-top: 6rem;
7
+ padding-bottom: 2rem;
8
+ text-align: center;
9
+ color: $white;
10
+ background-image: url("header-bg.jpg");
11
+ background-repeat: no-repeat;
12
+ background-attachment: scroll;
13
+ background-position: center center;
14
+ background-size: cover;
15
+
16
+ .pagehead-subheading {
17
+ font-size: 1.5rem;
18
+ font-style: italic;
19
+ line-height: 1.5rem;
20
+ margin-bottom: 25px;
21
+ font-family: $subheadings-font-family;
22
+ }
23
+
24
+ .pagehead-heading {
25
+ font-size: 3.25rem;
26
+ font-weight: 700;
27
+ line-height: 3.25rem;
28
+ margin-bottom: 2rem;
29
+ font-family: $headings-font-family;
30
+ }
31
+ }
32
+
33
+ @include media-breakpoint-up(md) {
34
+ header.pagehead {
35
+ padding-top: 6rem;
36
+ padding-bottom: 2rem;
37
+
38
+ .pagehead-subheading {
39
+ font-size: 2.25rem;
40
+ font-style: italic;
41
+ line-height: 2.25rem;
42
+ margin-bottom: 2rem;
43
+ }
44
+
45
+ .pagehead-heading {
46
+ font-size: 4.5rem;
47
+ font-weight: 700;
48
+ line-height: 4.5rem;
49
+ margin-bottom: 4rem;
50
+ }
51
+ }
52
+ }
@@ -17,6 +17,7 @@
17
17
 
18
18
  // Sections
19
19
  @import "./sections/masthead.scss";
20
+ @import "./sections/pagehead.scss";
20
21
  @import "./sections/portfolio.scss";
21
22
  @import "./sections/timeline.scss";
22
23
  @import "./sections/team.scss";
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ApplicationController < ActionController::Base
4
+
5
+ # Don't expose any of these methods as action_methods
6
+ protected
7
+
8
+ def navbar_partial(partial = nil)
9
+ @partial_navbar = partial if partial
10
+ return @partial_navbar if defined? @partial_navbar
11
+
12
+ @partial_navbar = 'layouts/navbar'
13
+ end
14
+ helper_method :navbar_partial
15
+
16
+ def footer_partial(partial = nil)
17
+ @partial_footer = partial if partial
18
+ return @partial_footer if defined? @partial_footer
19
+
20
+ @partial_footer = 'layouts/footer'
21
+ end
22
+ helper_method :footer_partial
23
+
24
+ # Useful for scripts that go just before </head>
25
+ def head_partial(partial = nil)
26
+ @partial_head = partial if partial
27
+ return @partial_head if defined? @partial_head
28
+
29
+ @partial_head = 'layouts/head'
30
+ end
31
+ helper_method :head_partial
32
+
33
+ # Useful for scripts that go just before </body>
34
+ def body_end_partial(partial = nil)
35
+ @partial_body_end = partial if partial
36
+ return @partial_body_end if defined? @partial_body_end
37
+
38
+ @partial_body_end = 'layouts/body_end'
39
+ end
40
+ helper_method :body_end_partial
41
+ end
@@ -1,7 +1,7 @@
1
1
  class HomeController < ApplicationController
2
- def index
3
- end
2
+ before_action { navbar_partial('navbar') }
3
+ before_action { body_end_partial('body_end') }
4
4
 
5
- def some_action
5
+ def index
6
6
  end
7
7
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class PageController < ApplicationController
4
+ before_action { navbar_partial('navbar') }
5
+
6
+ def benefits; end
7
+
8
+ def faq; end
9
+
10
+ def terms; end
11
+
12
+ def privacy; end
13
+ end
@@ -0,0 +1,45 @@
1
+ <script>
2
+ window.addEventListener('DOMContentLoaded', event => {
3
+ // Navbar shrink function
4
+ var navbarShrink = function () {
5
+ const navbarCollapsible = document.body.querySelector('#mainNav');
6
+ if (!navbarCollapsible) {
7
+ return;
8
+ }
9
+ if (window.scrollY === 0) {
10
+ navbarCollapsible.classList.remove('navbar-shrink')
11
+ } else {
12
+ navbarCollapsible.classList.add('navbar-shrink')
13
+ }
14
+ };
15
+
16
+ // Shrink the navbar
17
+ navbarShrink();
18
+
19
+ // Shrink the navbar when page is scrolled
20
+ document.addEventListener('scroll', navbarShrink);
21
+
22
+ // Activate Bootstrap scrollspy on the main nav element
23
+ const mainNav = document.body.querySelector('#mainNav');
24
+ if (mainNav) {
25
+ new bootstrap.ScrollSpy(document.body, {
26
+ target: '#mainNav',
27
+ offset: 74,
28
+ });
29
+ };
30
+
31
+ // Collapse responsive navbar when toggler is visible
32
+ const navbarToggler = document.body.querySelector('.navbar-toggler');
33
+ const responsiveNavItems = [].slice.call(
34
+ document.querySelectorAll('#navbarResponsive .nav-link')
35
+ );
36
+ responsiveNavItems.map(function (responsiveNavItem) {
37
+ responsiveNavItem.addEventListener('click', () => {
38
+ if (window.getComputedStyle(navbarToggler).display !== 'none') {
39
+ navbarToggler.click();
40
+ }
41
+ });
42
+ });
43
+
44
+ });
45
+ </script>
@@ -0,0 +1,14 @@
1
+ <nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="mainNav">
2
+ <div class="container"><a class="navbar-brand" href="#page-top"><%= image_tag "printspeak-logo.svg", alt: "..." %></a><button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">Menu<i class="fas fa-bars ms-1"></i></button>
3
+ <div class="collapse navbar-collapse" id="navbarResponsive">
4
+ <ul class="navbar-nav text-uppercase ms-auto py-4 py-lg-0">
5
+ <li class="nav-item"><%= link_to 'Home', root_path, class: "nav-link" %></li>
6
+ <li class="nav-item"><a class="nav-link" href="#services">Services</a></li>
7
+ <li class="nav-item"><a class="nav-link" href="#portfolio">Portfolio</a></li>
8
+ <li class="nav-item"><a class="nav-link" href="#about">About</a></li>
9
+ <li class="nav-item"><a class="nav-link" href="#team">Team</a></li>
10
+ <li class="nav-item"><a class="nav-link" href="#contact">Contact</a></li>
11
+ </ul>
12
+ </div>
13
+ </div>
14
+ </nav><!-- Masthead-->