rails_app_generator 0.0.5 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.vscode/settings.json +3 -0
- data/CHANGELOG.md +23 -0
- data/README.md +9 -0
- data/after_templates/README.md +3 -0
- data/after_templates/___base_template.rb +1 -0
- data/after_templates/___r7_hotwire.rb +1 -0
- data/after_templates/rag_bootstrap/application-yield.html.erb +5 -0
- data/after_templates/rag_bootstrap/application.html.erb +4 -0
- data/after_templates/rag_bootstrap/component-cards-fancy.css +84 -0
- data/after_templates/rag_bootstrap/component-cards-fancy.html +80 -0
- data/after_templates/rag_bootstrap/component-cards-staff.css +90 -0
- data/after_templates/rag_bootstrap/component-cards-staff.html +140 -0
- data/after_templates/rag_bootstrap/component-cards-styled.html +31 -0
- data/after_templates/rag_bootstrap/component-footer.html +34 -0
- data/after_templates/rag_bootstrap/component-hero.html +15 -0
- data/after_templates/rag_bootstrap/component-nav.html +36 -0
- data/after_templates/rag_bootstrap/custom-bootstrap-import.scss +5 -0
- data/after_templates/rag_bootstrap/custom-using-css.css +3 -0
- data/after_templates/rag_bootstrap/custom-using-scss.scss +5 -0
- data/after_templates/rag_bootstrap/manifest.js +3 -0
- data/after_templates/rag_bootstrap.rb +1 -0
- data/after_templates/rag_simple.rb +25 -0
- data/after_templates/rag_tailwind.rb +74 -0
- data/exe/rag +41 -0
- data/lib/rails_app_generator/add_on.rb +73 -0
- data/lib/rails_app_generator/addons/annotate.rb +15 -0
- data/lib/rails_app_generator/addons/continuous_integration.rb +14 -0
- data/lib/rails_app_generator/addons/devise.rb +50 -0
- data/lib/rails_app_generator/addons/docker.rb +14 -0
- data/lib/rails_app_generator/addons/docker_compose.rb +13 -0
- data/lib/rails_app_generator/addons/dotenv.rb +13 -0
- data/lib/rails_app_generator/addons/factory_bot.rb +19 -0
- data/lib/rails_app_generator/addons/foreman.rb +15 -0
- data/lib/rails_app_generator/addons/generators.rb +31 -0
- data/lib/rails_app_generator/addons/high_voltage.rb +15 -0
- data/lib/rails_app_generator/addons/inline_svg.rb +11 -0
- data/lib/rails_app_generator/addons/irbrc.rb +13 -0
- data/lib/rails_app_generator/addons/lograge.rb +13 -0
- data/lib/rails_app_generator/addons/pundit.rb +16 -0
- data/lib/rails_app_generator/addons/rspec.rb +17 -0
- data/lib/rails_app_generator/addons/rubocop.rb +13 -0
- data/lib/rails_app_generator/addons/scaffold.rb +15 -0
- data/lib/rails_app_generator/addons/services.rb +13 -0
- data/lib/rails_app_generator/addons/sidekiq.rb +18 -0
- data/lib/rails_app_generator/addons/stimulus.rb +15 -0
- data/lib/rails_app_generator/addons/stimulus_components.rb +33 -0
- data/lib/rails_app_generator/addons/tailwind.rb +22 -0
- data/lib/rails_app_generator/addons/views.rb +21 -0
- data/lib/rails_app_generator/app_builder.rb +7 -5
- data/lib/rails_app_generator/app_generator.rb +187 -99
- data/lib/rails_app_generator/context.rb +75 -0
- data/lib/rails_app_generator/dependencies.rb +34 -0
- data/lib/rails_app_generator/notes/a1.txt +1 -1
- data/lib/rails_app_generator/notes/a2.txt +1 -1
- data/lib/rails_app_generator/notes/kw01-b.txt +86 -0
- data/lib/rails_app_generator/notes/kw01.txt +91 -0
- data/lib/rails_app_generator/options/map_option_string.rb +2 -0
- data/lib/rails_app_generator/options/rails_options.rb +52 -32
- data/lib/rails_app_generator/starter.rb +17 -8
- data/lib/rails_app_generator/version.rb +1 -1
- data/lib/rails_app_generator.rb +5 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/rag-add-some-pages.json +11 -0
- data/profiles/rag-bootstrap.json +12 -0
- data/profiles/rag-simple.json +11 -0
- data/profiles/rag-tailwind.json +12 -0
- data/templates/README.md.erb +43 -0
- data/templates/addons/annotate/auto_annotate_models.rake +60 -0
- data/templates/addons/continuous_integration/.github/workflows/build.yml.erb +49 -0
- data/templates/addons/devise/app/views/devise/confirmations/new.html.erb +24 -0
- data/templates/addons/devise/app/views/devise/passwords/edit.html.erb +34 -0
- data/templates/addons/devise/app/views/devise/passwords/new.html.erb +23 -0
- data/templates/addons/devise/app/views/devise/registrations/edit.html.erb +62 -0
- data/templates/addons/devise/app/views/devise/registrations/new.html.erb +45 -0
- data/templates/addons/devise/app/views/devise/sessions/new.html.erb +33 -0
- data/templates/addons/devise/app/views/devise/shared/_error_messages.html.erb +15 -0
- data/templates/addons/devise/app/views/devise/shared/_form_wrap.html.erb +5 -0
- data/templates/addons/devise/app/views/devise/shared/_links.html.erb +25 -0
- data/templates/addons/devise/app/views/devise/unlocks/new.html.erb +22 -0
- data/templates/addons/docker/.dockerignore.erb +51 -0
- data/templates/addons/docker/Dockerfile.erb +45 -0
- data/templates/addons/docker_compose/docker-compose.yml.erb +21 -0
- data/templates/addons/dotenv/.env.development.erb +3 -0
- data/templates/addons/foreman/.foreman.erb +1 -0
- data/templates/addons/foreman/Procfile.dev.erb +7 -0
- data/templates/addons/foreman/Procfile.erb +4 -0
- data/templates/addons/generators/lib/generators/rails/navigation/USAGE +6 -0
- data/templates/addons/generators/lib/generators/rails/navigation/navigation_generator.rb +16 -0
- data/templates/addons/generators/lib/generators/rails/scaffold_controller_generator.rb +12 -0
- data/templates/addons/high_voltage/config/initializers/high_voltage.rb +6 -0
- data/templates/addons/irbrc/.irbrc.erb +13 -0
- data/templates/addons/lograge/config/initializers/lograge.rb +5 -0
- data/templates/addons/pundit/app/controllers/authorized_controller.rb.erb +10 -0
- data/templates/addons/pundit/app/policies/application_policy.rb +57 -0
- data/templates/addons/rspec/spec/rails_helper.rb +26 -0
- data/templates/addons/rspec/spec/spec_helper.rb +61 -0
- data/templates/addons/rubocop/.rubocop.yml.erb +37 -0
- data/templates/addons/scaffold/lib/templates/erb/scaffold/_form.html.erb +39 -0
- data/templates/addons/scaffold/lib/templates/erb/scaffold/edit.html.erb +7 -0
- data/templates/addons/scaffold/lib/templates/erb/scaffold/index.html.erb +34 -0
- data/templates/addons/scaffold/lib/templates/erb/scaffold/new.html.erb +7 -0
- data/templates/addons/scaffold/lib/templates/erb/scaffold/show.html.erb +18 -0
- data/templates/addons/services/app/services/application_service.rb +15 -0
- data/templates/app_x/controllers/authorized_controller.rb.erb +10 -0
- data/templates/app_x/controllers/errors_controller.rb.erb +24 -0
- data/templates/app_x/javascript/images/checkmark.svg +1 -0
- data/templates/app_x/javascript/images/logo.svg +1 -0
- data/templates/app_x/javascript/stylesheets/components.scss +206 -0
- data/templates/app_x/views/errors/internal_error.html.erb +14 -0
- data/templates/app_x/views/errors/not_found.html.erb +14 -0
- data/templates/app_x/views/errors/unacceptable.html.erb +14 -0
- data/templates/app_x/views/layouts/application.html.erb.tt +30 -0
- data/templates/app_x/views/pages/home.html.erb.tt +20 -0
- data/templates/app_x/views/shared/_flashes.html.erb.tt +12 -0
- data/templates/app_x/views/shared/_footer.html.erb.tt +21 -0
- data/templates/app_x/views/shared/_navbar.html.erb.tt +55 -0
- data/templates/app_x/workers/application_worker.rb +5 -0
- metadata +207 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41476a3a9b133970991c3fbf3562c102ba8249f5b682233f20d84884fb8af678
|
4
|
+
data.tar.gz: 3a9cf1a5878bbee17e0cfff3c6facac2c8af128bd940ce5bdc6bd5894b6c8cf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c88ba2a2ea096fd88795844acd1437af6cc87398f63002ad34dfe99576284ef8ede1e6f34c57b1fe7be9b4fccf174d25211a9084ee8691004c7ed243bc6c061
|
7
|
+
data.tar.gz: 0a16711784c631424eea1d80174697b1e04df33d8803b0963e23b76f70c625ceaa05815b665c81ea78c6958872676632187d487e160e1781e90b914d93a1ef00
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
## [0.0.7](https://github.com/klueless-io/rails_app_generator/compare/v0.0.6...v0.0.7) (2022-07-22)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add support for profiles and after templates ([1ecf4ab](https://github.com/klueless-io/rails_app_generator/commit/1ecf4abef1bc0f45928a33319ed9db8bebe1c27a))
|
7
|
+
|
8
|
+
## [0.0.6](https://github.com/klueless-io/rails_app_generator/compare/v0.0.5...v0.0.6) (2022-07-21)
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* add a bunch of addons ([b781af6](https://github.com/klueless-io/rails_app_generator/commit/b781af66d7fe7d7dcd2550577166213deefc06c6))
|
14
|
+
* add a bunch of addons ([d9a85b7](https://github.com/klueless-io/rails_app_generator/commit/d9a85b7b32c2c25577d98b4b3be9aab7947ff6e9))
|
15
|
+
* update template paths in app_generator ([9b28a5e](https://github.com/klueless-io/rails_app_generator/commit/9b28a5ee58535a761581e619eb01dc3059a79948))
|
16
|
+
|
17
|
+
## [0.0.5](https://github.com/klueless-io/rails_app_generator/compare/v0.0.4...v0.0.5) (2022-07-19)
|
18
|
+
|
19
|
+
|
20
|
+
### Bug Fixes
|
21
|
+
|
22
|
+
* add console output capture ([0d66a3b](https://github.com/klueless-io/rails_app_generator/commit/0d66a3ba19c2adbd0f2c0747b8212e7e628c22ba))
|
23
|
+
|
1
24
|
## [0.0.4](https://github.com/klueless-io/rails_app_generator/compare/v0.0.3...v0.0.4) (2022-07-19)
|
2
25
|
|
3
26
|
|
data/README.md
CHANGED
@@ -22,6 +22,15 @@ Or install it yourself as:
|
|
22
22
|
gem install rails_app_generator
|
23
23
|
```
|
24
24
|
|
25
|
+
## Notes
|
26
|
+
|
27
|
+
You can use rails_app_generator to create Rails 7 applications
|
28
|
+
You can use rails_app_generator with ruby 2.7 or 3.1
|
29
|
+
|
30
|
+
Rails new uses a batteries included approach, this means that you get everything and if you don't want a feature you need to turn it off explicitly using --skip-feature
|
31
|
+
I hope to change the focus in this project so that you get very minimal installation and then you turn on what you want explicitly.
|
32
|
+
Templates for rails are separated from templates for addons
|
33
|
+
|
25
34
|
## Stories
|
26
35
|
|
27
36
|
### Main Story
|
@@ -0,0 +1 @@
|
|
1
|
+
# frozen_string_literal: true
|
@@ -0,0 +1 @@
|
|
1
|
+
# frozen_string_literal: true
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<%= stylesheet_link_tag "custom-using-css" %>
|
2
|
+
<%= stylesheet_link_tag "custom-using-scss" %>
|
3
|
+
<%= stylesheet_link_tag "custom-component" %>
|
4
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
@@ -0,0 +1,84 @@
|
|
1
|
+
// Cards 1 : Source: https://codepen.io/donho_zamo/pen/YzXzPXZ
|
2
|
+
|
3
|
+
/*---- Main Style ----*/
|
4
|
+
#cards_landscape_wrap-2{
|
5
|
+
text-align: center;
|
6
|
+
background: #F7F7F7;
|
7
|
+
}
|
8
|
+
#cards_landscape_wrap-2 .container{
|
9
|
+
padding-top: 80px;
|
10
|
+
padding-bottom: 100px;
|
11
|
+
}
|
12
|
+
#cards_landscape_wrap-2 a{
|
13
|
+
text-decoration: none;
|
14
|
+
outline: none;
|
15
|
+
}
|
16
|
+
#cards_landscape_wrap-2 .card-flyer {
|
17
|
+
border-radius: 5px;
|
18
|
+
}
|
19
|
+
#cards_landscape_wrap-2 .card-flyer .image-box{
|
20
|
+
background: #ffffff;
|
21
|
+
overflow: hidden;
|
22
|
+
box-shadow: 0px 2px 15px rgba(0, 0, 0, 0.50);
|
23
|
+
border-radius: 5px;
|
24
|
+
}
|
25
|
+
#cards_landscape_wrap-2 .card-flyer .image-box img{
|
26
|
+
-webkit-transition:all .9s ease;
|
27
|
+
-moz-transition:all .9s ease;
|
28
|
+
-o-transition:all .9s ease;
|
29
|
+
-ms-transition:all .9s ease;
|
30
|
+
width: 100%;
|
31
|
+
height: 200px;
|
32
|
+
}
|
33
|
+
#cards_landscape_wrap-2 .card-flyer:hover .image-box img{
|
34
|
+
opacity: 0.7;
|
35
|
+
-webkit-transform:scale(1.15);
|
36
|
+
-moz-transform:scale(1.15);
|
37
|
+
-ms-transform:scale(1.15);
|
38
|
+
-o-transform:scale(1.15);
|
39
|
+
transform:scale(1.15);
|
40
|
+
}
|
41
|
+
#cards_landscape_wrap-2 .card-flyer .text-box{
|
42
|
+
text-align: center;
|
43
|
+
}
|
44
|
+
#cards_landscape_wrap-2 .card-flyer .text-box .text-container{
|
45
|
+
padding: 30px 18px;
|
46
|
+
}
|
47
|
+
#cards_landscape_wrap-2 .card-flyer{
|
48
|
+
background: #FFFFFF;
|
49
|
+
margin-top: 50px;
|
50
|
+
-webkit-transition: all 0.2s ease-in;
|
51
|
+
-moz-transition: all 0.2s ease-in;
|
52
|
+
-ms-transition: all 0.2s ease-in;
|
53
|
+
-o-transition: all 0.2s ease-in;
|
54
|
+
transition: all 0.2s ease-in;
|
55
|
+
box-shadow: 0px 3px 4px rgba(0, 0, 0, 0.40);
|
56
|
+
}
|
57
|
+
#cards_landscape_wrap-2 .card-flyer:hover{
|
58
|
+
background: #fff;
|
59
|
+
box-shadow: 0px 15px 26px rgba(0, 0, 0, 0.50);
|
60
|
+
-webkit-transition: all 0.2s ease-in;
|
61
|
+
-moz-transition: all 0.2s ease-in;
|
62
|
+
-ms-transition: all 0.2s ease-in;
|
63
|
+
-o-transition: all 0.2s ease-in;
|
64
|
+
transition: all 0.2s ease-in;
|
65
|
+
margin-top: 50px;
|
66
|
+
}
|
67
|
+
#cards_landscape_wrap-2 .card-flyer .text-box p{
|
68
|
+
margin-top: 10px;
|
69
|
+
margin-bottom: 0px;
|
70
|
+
padding-bottom: 0px;
|
71
|
+
font-size: 14px;
|
72
|
+
letter-spacing: 1px;
|
73
|
+
color: #000000;
|
74
|
+
}
|
75
|
+
#cards_landscape_wrap-2 .card-flyer .text-box h6{
|
76
|
+
margin-top: 0px;
|
77
|
+
margin-bottom: 4px;
|
78
|
+
font-size: 18px;
|
79
|
+
font-weight: bold;
|
80
|
+
text-transform: uppercase;
|
81
|
+
font-family: 'Roboto Black', sans-serif;
|
82
|
+
letter-spacing: 1px;
|
83
|
+
color: #00acc1;
|
84
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
<!-- Topic Cards -->
|
2
|
+
<div id="cards_landscape_wrap-2">
|
3
|
+
<div class="container">
|
4
|
+
<div class="row">
|
5
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
6
|
+
<a href="">
|
7
|
+
<div class="card-flyer">
|
8
|
+
<div class="text-box">
|
9
|
+
<div class="image-box">
|
10
|
+
<img src="https://cdn.pixabay.com/photo/2018/03/30/15/11/deer-3275594_960_720.jpg" alt="" />
|
11
|
+
</div>
|
12
|
+
<div class="text-container">
|
13
|
+
<h6>Title 01</h6>
|
14
|
+
<p>
|
15
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
16
|
+
industry's standard dummy text ever since the 1500s.
|
17
|
+
</p>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</a>
|
22
|
+
</div>
|
23
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
24
|
+
<a href="">
|
25
|
+
<div class="card-flyer">
|
26
|
+
<div class="text-box">
|
27
|
+
<div class="image-box">
|
28
|
+
<img src="https://cdn.pixabay.com/photo/2018/04/09/19/55/low-poly-3305284_960_720.jpg" alt="" />
|
29
|
+
</div>
|
30
|
+
<div class="text-container">
|
31
|
+
<h6>Title 02</h6>
|
32
|
+
<p>
|
33
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
34
|
+
industry's standard dummy text ever since the 1500s.
|
35
|
+
</p>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
</a>
|
40
|
+
</div>
|
41
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
42
|
+
<a href="">
|
43
|
+
<div class="card-flyer">
|
44
|
+
<div class="text-box">
|
45
|
+
<div class="image-box">
|
46
|
+
<img src="https://cdn.pixabay.com/photo/2018/04/06/13/46/poly-3295856_960_720.png" alt="" />
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="text-container">
|
50
|
+
<h6>Title 03</h6>
|
51
|
+
<p>
|
52
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
53
|
+
industry's standard dummy text ever since the 1500s.
|
54
|
+
</p>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</a>
|
59
|
+
</div>
|
60
|
+
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">
|
61
|
+
<a href="">
|
62
|
+
<div class="card-flyer">
|
63
|
+
<div class="text-box">
|
64
|
+
<div class="image-box">
|
65
|
+
<img src="https://cdn.pixabay.com/photo/2018/03/30/15/12/dog-3275593_960_720.jpg" alt="" />
|
66
|
+
</div>
|
67
|
+
<div class="text-container">
|
68
|
+
<h6>Title 04</h6>
|
69
|
+
<p>
|
70
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
|
71
|
+
industry's standard dummy text ever since the 1500s.
|
72
|
+
</p>
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</a>
|
77
|
+
</div>
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
</div>
|
@@ -0,0 +1,90 @@
|
|
1
|
+
// Cards 2 - Source: https://codepen.io/design007/pen/KKmbZzm
|
2
|
+
|
3
|
+
@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap');
|
4
|
+
@import url('https://use.fontawesome.com/releases/v5.13.0/css/all.css');
|
5
|
+
:root {
|
6
|
+
--font3: 'Roboto', sans-serif;
|
7
|
+
}
|
8
|
+
|
9
|
+
.h1,
|
10
|
+
h1 {
|
11
|
+
font-size: 1.5rem;
|
12
|
+
}
|
13
|
+
|
14
|
+
.container-fluid {
|
15
|
+
max-width: 1400px;
|
16
|
+
}
|
17
|
+
|
18
|
+
.card {
|
19
|
+
background: #fff;
|
20
|
+
box-shadow: 0 6px 10px rgba(0, 0, 0, 0.08), 0 0 6px rgba(0, 0, 0, 0.05);
|
21
|
+
border: 1;
|
22
|
+
border-radius: 1rem;
|
23
|
+
}
|
24
|
+
|
25
|
+
.img-hover-zoom--colorize img {
|
26
|
+
border-radius: 50%;
|
27
|
+
width: 150px;
|
28
|
+
height: auto;
|
29
|
+
margin-top: 20px;
|
30
|
+
padding: 1px;
|
31
|
+
transition: transform 0.5s;
|
32
|
+
filter: grayscale(100%);
|
33
|
+
}
|
34
|
+
|
35
|
+
.img-hover-zoom--colorize:hover img {
|
36
|
+
filter: grayscale(0);
|
37
|
+
transform: scale(1.05);
|
38
|
+
}
|
39
|
+
|
40
|
+
.card h5 {
|
41
|
+
overflow: hidden;
|
42
|
+
height: 80px;
|
43
|
+
font-weight: 300;
|
44
|
+
font-size: 1rem;
|
45
|
+
}
|
46
|
+
|
47
|
+
.card h5 a {
|
48
|
+
color: black;
|
49
|
+
text-decoration: none;
|
50
|
+
}
|
51
|
+
|
52
|
+
.role {
|
53
|
+
color: #7a7a7a;
|
54
|
+
}
|
55
|
+
|
56
|
+
.box {
|
57
|
+
display: flex;
|
58
|
+
align-items: center;
|
59
|
+
justify-content: center;
|
60
|
+
}
|
61
|
+
|
62
|
+
.fab {
|
63
|
+
font-size: 1.5rem;
|
64
|
+
color: darkgray;
|
65
|
+
transition: transform 0.5s;
|
66
|
+
}
|
67
|
+
|
68
|
+
.fab:hover {
|
69
|
+
color: black;
|
70
|
+
transform: scale(1.1);
|
71
|
+
}
|
72
|
+
|
73
|
+
.card h2 {
|
74
|
+
font-size: 1rem;
|
75
|
+
}
|
76
|
+
|
77
|
+
/* MEDIA */
|
78
|
+
|
79
|
+
@media only screen and (min-width: 1200px) {
|
80
|
+
.img-hover-zoom--colorize img {
|
81
|
+
width: 200px;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
@media only screen and (min-width: 1200px) {
|
86
|
+
.h1,
|
87
|
+
h1 {
|
88
|
+
font-size: 2rem;
|
89
|
+
}
|
90
|
+
}
|
@@ -0,0 +1,140 @@
|
|
1
|
+
<div class="container p-5">
|
2
|
+
<div class="row row-cols-1 row-cols-xs-2 row-cols-sm-2 row-cols-lg-4 g-3">
|
3
|
+
<div class="col">
|
4
|
+
<div class="card h-100 shadow-sm">
|
5
|
+
<div class="text-center">
|
6
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
7
|
+
<img
|
8
|
+
class="shadow"
|
9
|
+
src="https://source.unsplash.com/rDEOVtE7vOs/600x600"
|
10
|
+
alt="Another Image zoom-on-hover effect"
|
11
|
+
/>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="card-body">
|
16
|
+
<div class="clearfix mb-3"></div>
|
17
|
+
|
18
|
+
<div class="my-2 text-center">
|
19
|
+
<h1>Mia Wallace</h1>
|
20
|
+
</div>
|
21
|
+
<div class="mb-3">
|
22
|
+
<h2 class="text-uppercase text-center role">Senior Frontend Developer</h2>
|
23
|
+
</div>
|
24
|
+
<div class="box">
|
25
|
+
<div>
|
26
|
+
<ul class="list-inline">
|
27
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
28
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
29
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
30
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
31
|
+
</ul>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
<div class="col">
|
38
|
+
<div class="card h-100 shadow-sm">
|
39
|
+
<div class="text-center">
|
40
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
41
|
+
<img
|
42
|
+
class="shadow"
|
43
|
+
src="https://source.unsplash.com/XHVpWcr5grQ/600x600"
|
44
|
+
alt="Another Image zoom-on-hover effect"
|
45
|
+
/>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="card-body">
|
50
|
+
<div class="clearfix mb-3"></div>
|
51
|
+
|
52
|
+
<div class="my-2 text-center">
|
53
|
+
<h1>Vincent Vega</h1>
|
54
|
+
</div>
|
55
|
+
<div class="mb-3">
|
56
|
+
<h2 class="text-uppercase text-center role">SEO Specialist</h2>
|
57
|
+
</div>
|
58
|
+
<div class="box">
|
59
|
+
<div>
|
60
|
+
<ul class="list-inline">
|
61
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
62
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
63
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
64
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
65
|
+
</ul>
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
<div class="col">
|
72
|
+
<div class="card h-100 shadow-sm">
|
73
|
+
<div class="text-center">
|
74
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
75
|
+
<img
|
76
|
+
class="shadow"
|
77
|
+
src="https://source.unsplash.com/n4KewLKFOZw/600x600"
|
78
|
+
alt="Another Image zoom-on-hover effect"
|
79
|
+
/>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
|
83
|
+
<div class="card-body">
|
84
|
+
<div class="clearfix mb-3"></div>
|
85
|
+
|
86
|
+
<div class="my-2 text-center">
|
87
|
+
<h1>Mr. Wolf</h1>
|
88
|
+
</div>
|
89
|
+
<div class="mb-3">
|
90
|
+
<h2 class="text-uppercase text-center role">DIGITAL MARKETING SPECIALIST</h2>
|
91
|
+
</div>
|
92
|
+
<div class="box">
|
93
|
+
<div>
|
94
|
+
<ul class="list-inline">
|
95
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
96
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
97
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
98
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
99
|
+
</ul>
|
100
|
+
</div>
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
</div>
|
105
|
+
<div class="col">
|
106
|
+
<div class="card h-100 shadow-sm">
|
107
|
+
<div class="text-center">
|
108
|
+
<div class="img-hover-zoom img-hover-zoom--colorize">
|
109
|
+
<img
|
110
|
+
class="shadow"
|
111
|
+
src="https://source.unsplash.com/B4TjXnI0Y2c/600x600"
|
112
|
+
alt="Another Image zoom-on-hover effect"
|
113
|
+
/>
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
|
117
|
+
<div class="card-body">
|
118
|
+
<div class="clearfix mb-3"></div>
|
119
|
+
|
120
|
+
<div class="my-2 text-center">
|
121
|
+
<h1>O-Ren Ishii</h1>
|
122
|
+
</div>
|
123
|
+
<div class="mb-3">
|
124
|
+
<h2 class="text-uppercase text-center role">Web Developer</h2>
|
125
|
+
</div>
|
126
|
+
<div class="box">
|
127
|
+
<div>
|
128
|
+
<ul class="list-inline">
|
129
|
+
<li class="list-inline-item"><i class="fab fa-github"></i></li>
|
130
|
+
<li class="list-inline-item"><i class="fab fa-linkedin-in"></i></li>
|
131
|
+
<li class="list-inline-item"><i class="fab fa-instagram"></i></li>
|
132
|
+
<li class="list-inline-item"><i class="fab fa-twitter"></i></li>
|
133
|
+
</ul>
|
134
|
+
</div>
|
135
|
+
</div>
|
136
|
+
</div>
|
137
|
+
</div>
|
138
|
+
</div>
|
139
|
+
</div>
|
140
|
+
</div>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div class="m-4">
|
2
|
+
<div class="row row-cols-1 row-cols-md-3 g-3">
|
3
|
+
<div class="col">
|
4
|
+
<!-- Card with default left text alignment -->
|
5
|
+
<div class="card">
|
6
|
+
<div class="card-body card1">
|
7
|
+
<h3 class="card-title">Bootstrap @import</h3>
|
8
|
+
<p class="card-text">Use standard SAAS transpiling</p>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="col">
|
13
|
+
<!-- Card with center text alignment -->
|
14
|
+
<div class="card text-center">
|
15
|
+
<div class="card-body card2">
|
16
|
+
<h3 class="card-title">CSS</h3>
|
17
|
+
<p class="card-text">Using plain CSS files</p>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<div class="col">
|
22
|
+
<!-- Card with right text alignment -->
|
23
|
+
<div class="card text-end">
|
24
|
+
<div class="card-body card3">
|
25
|
+
<h3 class="card-title">SCSS</h3>
|
26
|
+
<p class="card-text">Using SASS/SCSS files</p>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<footer class="bg-dark text-center text-white">
|
2
|
+
<!-- Grid container -->
|
3
|
+
<div class="container p-4 pb-0">
|
4
|
+
<!-- Section: Social media -->
|
5
|
+
<section class="mb-4">
|
6
|
+
<!-- Facebook -->
|
7
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-facebook-f"></i></a>
|
8
|
+
|
9
|
+
<!-- Twitter -->
|
10
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-twitter"></i></a>
|
11
|
+
|
12
|
+
<!-- Google -->
|
13
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-google"></i></a>
|
14
|
+
|
15
|
+
<!-- Instagram -->
|
16
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-instagram"></i></a>
|
17
|
+
|
18
|
+
<!-- Linkedin -->
|
19
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-linkedin-in"></i></a>
|
20
|
+
|
21
|
+
<!-- Github -->
|
22
|
+
<a class="btn btn-outline-light btn-floating m-1" href="#!" role="button"><i class="fab fa-github"></i></a>
|
23
|
+
</section>
|
24
|
+
<!-- Section: Social media -->
|
25
|
+
</div>
|
26
|
+
<!-- Grid container -->
|
27
|
+
|
28
|
+
<!-- Copyright -->
|
29
|
+
<div class="text-center p-3" style="background-color: rgba(0, 0, 0, 0.2)">
|
30
|
+
© 2020 Copyright:
|
31
|
+
<a class="text-white" href="https://mdbootstrap.com/">MDBootstrap.com</a>
|
32
|
+
</div>
|
33
|
+
<!-- Copyright -->
|
34
|
+
</footer>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="px-4 pt-5 my-5 text-center border-bottom">
|
2
|
+
<h1 class="display-4 fw-bold">Centered screenshot</h1>
|
3
|
+
<div class="col-lg-6 mx-auto">
|
4
|
+
<p class="lead mb-4">Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.</p>
|
5
|
+
<div class="d-grid gap-2 d-sm-flex justify-content-sm-center mb-5">
|
6
|
+
<button type="button" class="btn btn-primary btn-lg px-4 me-sm-3" data-bs-toggle="modal" data-bs-target="#exampleModal">Click Me</button>
|
7
|
+
<%= link_to 'People', people_path, class: "btn btn-outline-secondary btn-lg px-4" %>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="overflow-hidden" style="max-height: 30vh;">
|
11
|
+
<div class="container px-5">
|
12
|
+
<img src="https://getbootstrap.com/docs/5.0/examples/heroes/bootstrap-themes.png" class="img-fluid border rounded-3 shadow-lg mb-4" alt="Example image" width="700" height="500" loading="lazy">
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
2
|
+
<div class="container-fluid">
|
3
|
+
<a class="navbar-brand" href="#">Navbar</a>
|
4
|
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
5
|
+
<span class="navbar-toggler-icon"></span>
|
6
|
+
</button>
|
7
|
+
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
8
|
+
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
9
|
+
<li class="nav-item">
|
10
|
+
<a class="nav-link active" aria-current="page" href="#">Home</a>
|
11
|
+
</li>
|
12
|
+
<li class="nav-item">
|
13
|
+
<a class="nav-link" href="#">Link</a>
|
14
|
+
</li>
|
15
|
+
<li class="nav-item dropdown">
|
16
|
+
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
17
|
+
Dropdown
|
18
|
+
</a>
|
19
|
+
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
|
20
|
+
<li><a class="dropdown-item" href="#">Action</a></li>
|
21
|
+
<li><a class="dropdown-item" href="#">Another action</a></li>
|
22
|
+
<li><hr class="dropdown-divider"></li>
|
23
|
+
<li><a class="dropdown-item" href="#">Something else here</a></li>
|
24
|
+
</ul>
|
25
|
+
</li>
|
26
|
+
<li class="nav-item">
|
27
|
+
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
|
28
|
+
</li>
|
29
|
+
</ul>
|
30
|
+
<form class="d-flex">
|
31
|
+
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
|
32
|
+
<button class="btn btn-outline-success" type="submit">Search</button>
|
33
|
+
</form>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</nav>
|
@@ -0,0 +1 @@
|
|
1
|
+
# frozen_string_literal: true
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Rails 7 with Bootstrap CSS and custom CSS
|
4
|
+
# https://www.youtube.com/watch?v=tYr8yn7yRKw
|
5
|
+
|
6
|
+
require 'pry'
|
7
|
+
|
8
|
+
self.local_template_path = File.join(File.dirname(__FILE__), 'rag_simple')
|
9
|
+
|
10
|
+
gac 'base rails 7 image created'
|
11
|
+
|
12
|
+
def application_html
|
13
|
+
<<-HTML
|
14
|
+
<div class="container">
|
15
|
+
<div class="row">
|
16
|
+
<%= yield %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
HTML
|
20
|
+
end
|
21
|
+
|
22
|
+
gsub_file 'app/views/layouts/application.html.erb' , %( <%= yield %>), application_html
|
23
|
+
|
24
|
+
# after_bundle do
|
25
|
+
# end
|