rails_app_generator 0.2.3 → 0.2.6

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 (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-->