mvpkit 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +30 -0
  3. data/Gemfile.lock +329 -0
  4. data/LICENSE.txt +20 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +134 -0
  7. data/Rakefile +52 -0
  8. data/VERSION +1 -0
  9. data/app/assets/javascripts/mvp/application.js +1 -0
  10. data/app/assets/stylesheets/mvp/application.scss +0 -0
  11. data/app/controllers/concerns/mvp/analytics_concern.rb +78 -0
  12. data/app/controllers/concerns/mvp/seo_concern.rb +25 -0
  13. data/app/controllers/concerns/mvp/session_concern.rb +44 -0
  14. data/app/controllers/mvp/analytics_controller.rb +12 -0
  15. data/app/controllers/mvp/seo_controller.rb +11 -0
  16. data/app/controllers/mvp/styleguide_controller.rb +23 -0
  17. data/app/helpers/minimum_viable_product/body_helper.rb +14 -0
  18. data/app/helpers/minimum_viable_product/bootstrap_helper.rb +38 -0
  19. data/app/helpers/minimum_viable_product/styleguide_helper.rb +4 -0
  20. data/app/models/concerns/mvp/slugification.rb +24 -0
  21. data/app/views/layouts/minimum_viable_product/_instrumentation.html.erb +100 -0
  22. data/app/views/layouts/minimum_viable_product/_meta.html.erb +37 -0
  23. data/app/views/layouts/minimum_viable_product/application.html.erb +19 -0
  24. data/app/views/minimum_viable_product/styleguide/_example.html.erb +6 -0
  25. data/app/views/minimum_viable_product/styleguide/bootstrap/_buttons.html.erb +191 -0
  26. data/app/views/minimum_viable_product/styleguide/bootstrap/_forms.html.erb +192 -0
  27. data/app/views/minimum_viable_product/styleguide/bootstrap/_header.html.erb +48 -0
  28. data/app/views/minimum_viable_product/styleguide/bootstrap/_panels.html.erb +16 -0
  29. data/app/views/minimum_viable_product/styleguide/bootstrap/_tables.html.erb +34 -0
  30. data/app/views/minimum_viable_product/styleguide/bootstrap/_typography.html.erb +51 -0
  31. data/app/views/minimum_viable_product/styleguide/bootstrap.html.erb +43 -0
  32. data/app/views/minimum_viable_product/styleguide/elements/_grouping.html.erb +1 -0
  33. data/app/views/minimum_viable_product/styleguide/elements/partials/_row_groups_of.html.erb +7 -0
  34. data/app/views/minimum_viable_product/styleguide/index.html.erb +17 -0
  35. data/app/views/minimum_viable_product/styleguide/layouts/basic.html.erb +4 -0
  36. data/app/views/minimum_viable_product/styleguide/layouts/carousel.html.erb +120 -0
  37. data/app/views/minimum_viable_product/styleguide/layouts/cover.html.erb +34 -0
  38. data/assets/js/application.js +31 -0
  39. data/assets/js/init/controllers.js +26 -0
  40. data/assets/js/init/forms.js +12 -0
  41. data/bin/mvp +78 -0
  42. data/bin/rails +12 -0
  43. data/config/initializers/assets.rb +2 -0
  44. data/config/initializers/canonical_host.rb +3 -0
  45. data/config/initializers/cloudinary.rb +7 -0
  46. data/config/initializers/geocoder.rb +9 -0
  47. data/config/initializers/iteration.rb +33 -0
  48. data/config/initializers/project.rb +1 -0
  49. data/config/initializers/rollbar.rb +59 -0
  50. data/config/initializers/routing.rb +7 -0
  51. data/config/initializers/spoof_ip.rb +33 -0
  52. data/config/initializers/ssl.rb +14 -0
  53. data/config/routes.rb +6 -0
  54. data/lib/mvp/engine.rb +22 -0
  55. data/lib/mvp/ext/nil.rb +5 -0
  56. data/lib/mvp/ext/string.rb +7 -0
  57. data/lib/mvpkit.rb +6 -0
  58. data/lib/tasks/sitemap.rake +42 -0
  59. data/mvpkit.gemspec +245 -0
  60. data/package.json +43 -0
  61. data/project/.gitignore +45 -0
  62. data/project/Gemfile +33 -0
  63. data/project/Gemfile.lock +437 -0
  64. data/project/Procfile +2 -0
  65. data/project/README.md +117 -0
  66. data/project/Rakefile +14 -0
  67. data/project/app/controllers/application_controller.rb +12 -0
  68. data/project/app/controllers/conversions_controller.rb +24 -0
  69. data/project/app/controllers/examples_controller.rb +2 -0
  70. data/project/app/controllers/home_controller.rb +7 -0
  71. data/project/app/decorators/.keep +0 -0
  72. data/project/app/helpers/application_helper.rb +24 -0
  73. data/project/app/mailers/.keep +0 -0
  74. data/project/app/models/conversion.rb +4 -0
  75. data/project/app/views/examples/index.html.erb +1 -0
  76. data/project/app/views/examples/mustache/template.mustache +1 -0
  77. data/project/app/views/examples/mustache.html.erb +18 -0
  78. data/project/app/views/home/conversion.html.erb +12 -0
  79. data/project/app/views/home/index.html.erb +28 -0
  80. data/project/app/views/layouts/_header.html.erb +16 -0
  81. data/project/app/views/layouts/_includes.html.erb +7 -0
  82. data/project/app/views/layouts/application.html.erb +17 -0
  83. data/project/app/views/layouts/modal.html.erb +14 -0
  84. data/project/assets/images/.keep +0 -0
  85. data/project/assets/images/favicon.ico +0 -0
  86. data/project/assets/javascripts/controllers/home.coffee +15 -0
  87. data/project/assets/javascripts/pack.js +9 -0
  88. data/project/assets/stylesheets/config/variables.scss +876 -0
  89. data/project/assets/stylesheets/layout/basic.scss +6 -0
  90. data/project/assets/stylesheets/layout/carousel.scss +127 -0
  91. data/project/assets/stylesheets/layout/cover.scss +129 -0
  92. data/project/assets/stylesheets/lib/spacing.scss +55 -0
  93. data/project/assets/stylesheets/skin/style.scss +16 -0
  94. data/project/assets/stylesheets/style.scss +8 -0
  95. data/project/bin/bundle +3 -0
  96. data/project/bin/rails +9 -0
  97. data/project/bin/rake +9 -0
  98. data/project/bin/setup +32 -0
  99. data/project/bin/spring +15 -0
  100. data/project/config/application.rb +32 -0
  101. data/project/config/boot.rb +3 -0
  102. data/project/config/database.yml +19 -0
  103. data/project/config/environment.rb +5 -0
  104. data/project/config/environments/development.rb +67 -0
  105. data/project/config/environments/production.rb +93 -0
  106. data/project/config/environments/test.rb +42 -0
  107. data/project/config/initializers/assets.rb +11 -0
  108. data/project/config/initializers/backtrace_silencers.rb +7 -0
  109. data/project/config/initializers/cookies_serializer.rb +3 -0
  110. data/project/config/initializers/filter_parameter_logging.rb +4 -0
  111. data/project/config/initializers/inflections.rb +16 -0
  112. data/project/config/initializers/mime_types.rb +4 -0
  113. data/project/config/initializers/mustache.rb +7 -0
  114. data/project/config/initializers/rails_admin.rb +43 -0
  115. data/project/config/initializers/session_store.rb +3 -0
  116. data/project/config/initializers/simple_form.rb +177 -0
  117. data/project/config/initializers/wrap_parameters.rb +14 -0
  118. data/project/config/locales/en.yml +23 -0
  119. data/project/config/locales/simple_form.en.yml +31 -0
  120. data/project/config/routes.rb +13 -0
  121. data/project/config/secrets.yml +8 -0
  122. data/project/config/sitemap.rb +28 -0
  123. data/project/config.ru +4 -0
  124. data/project/db/migrate/20160728235100_create_conversions.rb +9 -0
  125. data/project/db/schema.rb +25 -0
  126. data/project/db/seeds.rb +7 -0
  127. data/project/lib/assets/.keep +0 -0
  128. data/project/lib/tasks/heroku.rake +70 -0
  129. data/project/log/.keep +0 -0
  130. data/project/log/development.log +48216 -0
  131. data/project/log/production.log +0 -0
  132. data/project/package.json +44 -0
  133. data/project/public/404.html +67 -0
  134. data/project/public/422.html +67 -0
  135. data/project/public/500.html +66 -0
  136. data/project/public/assets/javascripts/448c34a56d699c29117adc64c43affeb.woff2 +0 -0
  137. data/project/public/assets/javascripts/89889688147bd7575d6327160d64e760.svg +288 -0
  138. data/project/public/assets/javascripts/e18bbf611f2a2e43afc071aa2f4e1512.ttf +0 -0
  139. data/project/public/assets/javascripts/f4769f9bdb7466be65088239c12046d1.eot +0 -0
  140. data/project/public/assets/javascripts/fa2772327f55d8198301fdb8bcfc8158.woff +0 -0
  141. data/project/public/assets/javascripts/pack.js +31367 -0
  142. data/project/public/assets/javascripts/pack.js.map +1 -0
  143. data/project/public/assets/pack.js +17220 -0
  144. data/project/public/assets/style.css +7477 -0
  145. data/project/vendor/assets/javascripts/.keep +0 -0
  146. data/project/vendor/assets/stylesheets/.keep +0 -0
  147. data/project/webpack.config.js +67 -0
  148. data/test/helper.rb +34 -0
  149. data/test/test_minimum_viable_product.rb +7 -0
  150. metadata +473 -0
@@ -0,0 +1,192 @@
1
+
2
+
3
+ <div class="mb20">
4
+ <form>
5
+ <div class="form-group">
6
+ <label for="exampleInputEmail1">Email address</label>
7
+ <input class="form-control" id="exampleInputEmail1" placeholder="Email" type="email">
8
+ </div>
9
+ <div class="form-group">
10
+ <label for="exampleInputPassword1">Password</label>
11
+ <input class="form-control" id="exampleInputPassword1" placeholder="Password" type="password">
12
+ </div>
13
+ <div class="form-group">
14
+ <label for="exampleInputFile">File input</label>
15
+ <input id="exampleInputFile" type="file">
16
+ <p class="help-block">Example block-level help text here.</p>
17
+ </div>
18
+ <div class="checkbox">
19
+ <label>
20
+ <input type="checkbox">
21
+ Check me out
22
+ </label>
23
+ </div>
24
+ <button class="btn btn-default" type="submit">Submit</button>
25
+ </form>
26
+ </div>
27
+
28
+ <form class="form-inline">
29
+ <div class="form-group">
30
+ <label for="exampleInputName2">Name</label>
31
+ <input class="form-control" id="exampleInputName2" placeholder="Jane Doe" type="text">
32
+ </div>
33
+ <div class="form-group">
34
+ <label for="exampleInputEmail2">Email</label>
35
+ <input class="form-control" id="exampleInputEmail2" placeholder="jane.doe@example.com" type="email">
36
+ </div>
37
+ <button class="btn btn-default" type="submit">Send invitation</button>
38
+ </form>
39
+
40
+ <form class="form-horizontal">
41
+ <div class="form-group">
42
+ <label class="col-sm-2 control-label" for="inputEmail3">Email</label>
43
+ <div class="col-sm-10">
44
+ <input class="form-control" id="inputEmail3" placeholder="Email" type="email">
45
+ </div>
46
+ </div>
47
+ <div class="form-group">
48
+ <label class="col-sm-2 control-label" for="inputPassword3">Password</label>
49
+ <div class="col-sm-10">
50
+ <input class="form-control" id="inputPassword3" placeholder="Password" type="password">
51
+ </div>
52
+ </div>
53
+ <div class="form-group">
54
+ <div class="col-sm-offset-2 col-sm-10">
55
+ <div class="checkbox">
56
+ <label>
57
+ <input type="checkbox">
58
+ Remember me
59
+ </label>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ <div class="form-group">
64
+ <div class="col-sm-offset-2 col-sm-10">
65
+ <button class="btn btn-default" type="submit">Sign in</button>
66
+ </div>
67
+ </div>
68
+ </form>
69
+
70
+ <div class="checkbox">
71
+ <label>
72
+ <input type="checkbox" value="">
73
+ Option one is this and that&mdash;be sure to include why it's great
74
+ </label>
75
+ </div>
76
+ <div class="checkbox disabled">
77
+ <label>
78
+ <input disabled type="checkbox" value="">
79
+ Option two is disabled
80
+ </label>
81
+ </div>
82
+
83
+ <div class="radio">
84
+ <label>
85
+ <input checked id="optionsRadios1" name="optionsRadios" type="radio" value="option1">
86
+ Option one is this and that&mdash;be sure to include why it's great
87
+ </label>
88
+ </div>
89
+ <div class="radio">
90
+ <label>
91
+ <input id="optionsRadios2" name="optionsRadios" type="radio" value="option2">
92
+ Option two can be something else and selecting it will deselect option one
93
+ </label>
94
+ </div>
95
+ <div class="radio disabled">
96
+ <label>
97
+ <input disabled id="optionsRadios3" name="optionsRadios" type="radio" value="option3">
98
+ Option three is disabled
99
+ </label>
100
+ </div>
101
+
102
+ <select class="form-control">
103
+ <option>1</option>
104
+ <option>2</option>
105
+ <option>3</option>
106
+ <option>4</option>
107
+ <option>5</option>
108
+ </select>
109
+
110
+ <textarea class="form-control" rows="3"></textarea>
111
+
112
+ <form class="form-horizontal">
113
+ <div class="form-group">
114
+ <label class="col-sm-2 control-label">Email</label>
115
+ <div class="col-sm-10">
116
+ <p class="form-control-static">email@example.com</p>
117
+ </div>
118
+ </div>
119
+ <div class="form-group">
120
+ <label class="col-sm-2 control-label" for="inputPassword">Password</label>
121
+ <div class="col-sm-10">
122
+ <input class="form-control" id="inputPassword" placeholder="Password" type="password">
123
+ </div>
124
+ </div>
125
+ </form>
126
+
127
+ <input class="form-control" disabled id="disabledInput" placeholder="Disabled input here..." type="text">
128
+
129
+ <form>
130
+ <fieldset disabled>
131
+ <div class="form-group">
132
+ <label for="disabledTextInput">Disabled input</label>
133
+ <input class="form-control" id="disabledTextInput" placeholder="Disabled input" type="text">
134
+ </div>
135
+ <div class="form-group">
136
+ <label for="disabledSelect">Disabled select menu</label>
137
+ <select class="form-control" id="disabledSelect">
138
+ <option>Disabled select</option>
139
+ </select>
140
+ </div>
141
+ <div class="checkbox">
142
+ <label>
143
+ <input type="checkbox">
144
+ Can't check this
145
+ </label>
146
+ </div>
147
+ <button class="btn btn-primary" type="submit">Submit</button>
148
+ </fieldset>
149
+ </form>
150
+
151
+ <label class="sr-only" for="inputHelpBlock">Input with help text</label>
152
+ <input aria-describedby="helpBlock" class="form-control" id="inputHelpBlock" type="text">
153
+ ...
154
+ <span class="help-block" id="helpBlock">A block of help text that breaks onto a new line and may extend beyond one line.</span>
155
+
156
+ <div class="form-group has-success">
157
+ <label class="control-label" for="inputSuccess1">Input with success</label>
158
+ <input aria-describedby="helpBlock2" class="form-control" id="inputSuccess1" type="text">
159
+ <span class="help-block" id="helpBlock2">A block of help text that breaks onto a new line and may extend beyond one line.</span>
160
+ </div>
161
+ <div class="form-group has-warning">
162
+ <label class="control-label" for="inputWarning1">Input with warning</label>
163
+ <input class="form-control" id="inputWarning1" type="text">
164
+ </div>
165
+ <div class="form-group has-error">
166
+ <label class="control-label" for="inputError1">Input with error</label>
167
+ <input class="form-control" id="inputError1" type="text">
168
+ </div>
169
+ <div class="has-success">
170
+ <div class="checkbox">
171
+ <label>
172
+ <input id="checkboxSuccess" type="checkbox" value="option1">
173
+ Checkbox with success
174
+ </label>
175
+ </div>
176
+ </div>
177
+ <div class="has-warning">
178
+ <div class="checkbox">
179
+ <label>
180
+ <input id="checkboxWarning" type="checkbox" value="option1">
181
+ Checkbox with warning
182
+ </label>
183
+ </div>
184
+ </div>
185
+ <div class="has-error">
186
+ <div class="checkbox">
187
+ <label>
188
+ <input id="checkboxError" type="checkbox" value="option1">
189
+ Checkbox with error
190
+ </label>
191
+ </div>
192
+ </div>
@@ -0,0 +1,48 @@
1
+ <nav class="navbar navbar-default mt20">
2
+ <div class="container-fluid">
3
+ <!-- Brand and toggle get grouped for better mobile display -->
4
+ <div class="navbar-header">
5
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
6
+ <span class="sr-only">Toggle navigation</span>
7
+ <span class="icon-bar"></span>
8
+ <span class="icon-bar"></span>
9
+ <span class="icon-bar"></span>
10
+ </button>
11
+ <a class="navbar-brand" href="#">__PROJECT_NAME__</a>
12
+ </div>
13
+
14
+ <!-- Collect the nav links, forms, and other content for toggling -->
15
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
16
+ <ul class="nav navbar-nav">
17
+ <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
18
+ <li><a href="#">Link</a></li>
19
+ <li class="dropdown">
20
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
21
+ <ul class="dropdown-menu">
22
+ <li><a href="#">Action</a></li>
23
+ <li><a href="#">Another action</a></li>
24
+ <li><a href="#">Something else here</a></li>
25
+ <li role="separator" class="divider"></li>
26
+ <li><a href="#">Separated link</a></li>
27
+ <li role="separator" class="divider"></li>
28
+ <li><a href="#">One more separated link</a></li>
29
+ </ul>
30
+ </li>
31
+ </ul>
32
+
33
+ <ul class="nav navbar-nav navbar-right">
34
+ <li><a href="#">Link</a></li>
35
+ <li class="dropdown">
36
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
37
+ <ul class="dropdown-menu">
38
+ <li><a href="#">Action</a></li>
39
+ <li><a href="#">Another action</a></li>
40
+ <li><a href="#">Something else here</a></li>
41
+ <li role="separator" class="divider"></li>
42
+ <li><a href="#">Separated link</a></li>
43
+ </ul>
44
+ </li>
45
+ </ul>
46
+ </div><!-- /.navbar-collapse -->
47
+ </div><!-- /.container-fluid -->
48
+ </nav>
@@ -0,0 +1,16 @@
1
+ <div class="mb20">
2
+ <div class="panel panel-default">
3
+ <div class="panel-heading">Panel heading without title</div>
4
+ <div class="panel-body">
5
+ Panel content
6
+ </div>
7
+ </div>
8
+
9
+ <div class="panel panel-default">
10
+ <div class="panel-heading">
11
+ <h3 class="panel-title">Panel title</h3>
12
+ </div>
13
+ <div class="panel-body">
14
+ Panel content
15
+ </div>
16
+ </div>
@@ -0,0 +1,34 @@
1
+ <div class="mb20">
2
+
3
+ <table class="table">
4
+ <caption>Optional table caption.</caption>
5
+ <thead>
6
+ <tr>
7
+ <th>#</th>
8
+ <th>First Name</th>
9
+ <th>Last Name</th>
10
+ <th>Username</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <tr>
15
+ <th scope="row">1</th>
16
+ <td>Mark</td>
17
+ <td>Otto</td>
18
+ <td>@mdo</td>
19
+ </tr>
20
+ <tr>
21
+ <th scope="row">2</th>
22
+ <td>Jacob</td>
23
+ <td>Thornton</td>
24
+ <td>@fat</td>
25
+ </tr>
26
+ <tr>
27
+ <th scope="row">3</th>
28
+ <td>Larry</td>
29
+ <td>the Bird</td>
30
+ <td>@twitter</td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
@@ -0,0 +1,51 @@
1
+ <div class="mb20">
2
+ <h1>Blog letterpress kogi, brooklyn man braid banh mi pickled echo park next level taxidermy scenester tote bag deep v.</h1>
3
+ <h2>Blog letterpress kogi, brooklyn man braid banh mi pickled echo park next level taxidermy scenester tote bag deep v.</h2>
4
+ <h3>Blog letterpress kogi, brooklyn man braid banh mi pickled echo park next level taxidermy scenester tote bag deep v.</h3>
5
+ <h4>Blog letterpress kogi, brooklyn man braid banh mi pickled echo park next level taxidermy scenester tote bag deep v.</h4>
6
+ <h5>Blog letterpress kogi, brooklyn man braid banh mi pickled echo park next level taxidermy scenester tote bag deep v.</h5>
7
+ <h6>Blog letterpress kogi, brooklyn man braid banh mi pickled echo park next level taxidermy scenester tote bag deep v.</h6>
8
+ </div>
9
+
10
+ <div class="mb20">
11
+ <p class="lead">
12
+ Umami single-origin coffee 90's yuccie, forage meditation paleo synth kinfolk 8-bit iPhone. Blog marfa gastropub, messenger bag bespoke lumbersexual pork belly neutra cronut selvage vinyl irony kale chips. Hammock dreamcatcher skateboard 90's neutra.
13
+ Occupy banh mi try-hard typewriter post-ironic pitchfork, selfies neutra farm-to-table synth quinoa church-key.
14
+ </p>
15
+ </div>
16
+
17
+ <div class="mb20">
18
+ <h2>Skateboard gluten-free gastropub mustache, helvetica flannel sustainable kogi stumptown echo park.</h2>
19
+ </div>
20
+
21
+ <div class="mb20">
22
+ <p>
23
+ Gentrify flexitarian seitan, yr street art cronut viral health goth bicycle rights chambray godard authentic pinterest. Fashion axe neutra put a bird on it, chartreuse craft beer health goth mlkshk green juice artisan sustainable narwhal 3 wolf moon.
24
+ Bespoke vice sriracha, DIY aesthetic XOXO beard banh mi. Pop-up tacos bespoke distillery, banjo tousled
25
+ </p>
26
+ </div>
27
+
28
+ <div class="mb20">
29
+ <p class="text-muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
30
+ <p class="text-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
31
+ <p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
32
+ <p class="text-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
33
+ <p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
34
+ <p class="text-danger">Donec ullamcorper nulla non metus auctor fringilla.</p>
35
+ </div>
36
+
37
+ <div class="mb20">
38
+ <p class="p10 mb10 bg-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
39
+ <p class="p10 mb10 bg-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
40
+ <p class="p10 mb10 bg-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
41
+ <p class="p10 mb10 bg-warning">Etiam porta sem malesuada magna mollis euismod.</p>
42
+ <p class="p10 mb10 bg-danger">Donec ullamcorper nulla non metus auctor fringilla.</p>
43
+ </div>
44
+
45
+ <div class="mb20">
46
+ <div aria-label="..." class="btn-group" role="group">
47
+ <button class="btn btn-default" type="button">Left</button>
48
+ <button class="btn btn-default" type="button">Middle</button>
49
+ <button class="btn btn-default" type="button">Right</button>
50
+ </div>
51
+ </div>
@@ -0,0 +1,43 @@
1
+ <div class="container">
2
+ <%= render 'minimum_viable_product/styleguide/bootstrap/header' %>
3
+
4
+ <section>
5
+ <h1>Typography</h1>
6
+ <%= render 'minimum_viable_product/styleguide/bootstrap/typography' %>
7
+ </section>
8
+
9
+ <section>
10
+ <h1>Buttons</h1>
11
+ <%= render 'minimum_viable_product/styleguide/bootstrap/buttons' %>
12
+ </section>
13
+
14
+ <section>
15
+ <h1>Panels</h1>
16
+ <%= render 'minimum_viable_product/styleguide/bootstrap/panels' %>
17
+ </section>
18
+
19
+ <section>
20
+ <h1>Forms</h1>
21
+ <%= render 'minimum_viable_product/styleguide/bootstrap/forms' %>
22
+ </section>
23
+
24
+ <section>
25
+ <h1>Tables</h1>
26
+ <%= render 'minimum_viable_product/styleguide/bootstrap/tables' %>
27
+ </section>
28
+ </div>
29
+
30
+ <footer class='text-center'>
31
+ <small>Copyright &copy; <%= Date.today.year %></p></small>
32
+ </footer>
33
+
34
+ <style media="screen">
35
+ section {
36
+ margin-bottom: 100px;
37
+ }
38
+
39
+ section h1 {
40
+ border-bottom: 1px solid #CCC;
41
+ padding-bottom: 10px;
42
+ }
43
+ </style>
@@ -0,0 +1 @@
1
+ <%= render 'example', source: 'row_groups_of' %>
@@ -0,0 +1,7 @@
1
+ <% row_groups_of(3, [1,2,3,4,5,6,7,8,9]) do |i| %>
2
+ <div class="panel panel-default">
3
+ <div class="panel-heading">
4
+ <h2 class="text-center"><%= i %></h2>
5
+ </div>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <div class="container">
2
+ <section>
3
+ <h1>Grouping</h1>
4
+ <%= render 'minimum_viable_product/styleguide/elements/grouping' %>
5
+ </section>
6
+ </div>
7
+
8
+ <style media="screen">
9
+ section {
10
+ margin-bottom: 100px;
11
+ }
12
+
13
+ section h1 {
14
+ border-bottom: 1px solid #CCC;
15
+ padding-bottom: 10px;
16
+ }
17
+ </style>
@@ -0,0 +1,4 @@
1
+ <div class="starter-template">
2
+ <h1>Bootstrap starter template</h1>
3
+ <p class="lead">Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly barebones HTML document.</p>
4
+ </div>
@@ -0,0 +1,120 @@
1
+ <%- content_for :carousel do %>
2
+ <div id="myCarousel" class="carousel slide" data-ride="carousel">
3
+ <!-- Indicators -->
4
+ <ol class="carousel-indicators">
5
+ <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
6
+ <li data-target="#myCarousel" data-slide-to="1"></li>
7
+ <li data-target="#myCarousel" data-slide-to="2"></li>
8
+ </ol>
9
+ <div class="carousel-inner" role="listbox">
10
+ <div class="item active">
11
+ <img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
12
+ <div class="container">
13
+ <div class="carousel-caption">
14
+ <h1>Example headline.</h1>
15
+ <p>Note: If you're viewing this page via a <code>file://</code> URL, the "next" and "previous" Glyphicon buttons on the left and right might not load/display properly due to web browser security rules.</p>
16
+ <p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ <div class="item">
21
+ <img class="second-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
22
+ <div class="container">
23
+ <div class="carousel-caption">
24
+ <h1>Another example headline.</h1>
25
+ <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
26
+ <p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ <div class="item">
31
+ <img class="third-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
32
+ <div class="container">
33
+ <div class="carousel-caption">
34
+ <h1>One more for good measure.</h1>
35
+ <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
36
+ <p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
42
+ <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
43
+ <span class="sr-only">Previous</span>
44
+ </a>
45
+ <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
46
+ <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
47
+ <span class="sr-only">Next</span>
48
+ </a>
49
+ </div>
50
+ <% end %>
51
+
52
+ <div class="container">
53
+
54
+ <div class="row">
55
+ <div class="col-lg-4">
56
+ <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
57
+ <h2>Heading</h2>
58
+ <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
59
+ <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
60
+ </div><!-- /.col-lg-4 -->
61
+ <div class="col-lg-4">
62
+ <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
63
+ <h2>Heading</h2>
64
+ <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.</p>
65
+ <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
66
+ </div><!-- /.col-lg-4 -->
67
+ <div class="col-lg-4">
68
+ <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
69
+ <h2>Heading</h2>
70
+ <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
71
+ <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
72
+ </div><!-- /.col-lg-4 -->
73
+ </div><!-- /.row -->
74
+
75
+
76
+ <!-- START THE FEATURETTES -->
77
+
78
+ <hr class="featurette-divider">
79
+
80
+ <div class="row featurette">
81
+ <div class="col-md-7">
82
+ <h2 class="featurette-heading">First featurette heading. <span class="text-muted">It'll blow your mind.</span></h2>
83
+ <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
84
+ </div>
85
+ <div class="col-md-5">
86
+ <img class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
87
+ </div>
88
+ </div>
89
+
90
+ <hr class="featurette-divider">
91
+
92
+ <div class="row featurette">
93
+ <div class="col-md-7 col-md-push-5">
94
+ <h2 class="featurette-heading">Oh yeah, it's that good. <span class="text-muted">See for yourself.</span></h2>
95
+ <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
96
+ </div>
97
+ <div class="col-md-5 col-md-pull-7">
98
+ <img class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
99
+ </div>
100
+ </div>
101
+
102
+ <hr class="featurette-divider">
103
+
104
+ <div class="row featurette">
105
+ <div class="col-md-7">
106
+ <h2 class="featurette-heading">And lastly, this one. <span class="text-muted">Checkmate.</span></h2>
107
+ <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
108
+ </div>
109
+ <div class="col-md-5">
110
+ <img class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
111
+ </div>
112
+ </div>
113
+
114
+ <hr class="featurette-divider">
115
+
116
+ <footer>
117
+ <p class="pull-right"><a href="#">Back to top</a></p>
118
+ <p>&copy; 2016 Company, Inc. &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
119
+ </footer>
120
+ </div>
@@ -0,0 +1,34 @@
1
+ <div class="masthead clearfix">
2
+ <div class="inner">
3
+ <h3 class="masthead-brand">Cover</h3>
4
+ <nav>
5
+ <ul class="nav masthead-nav">
6
+ <li class="active">
7
+ <a href="#">Home</a>
8
+ </li>
9
+ <li>
10
+ <a href="#">Features</a>
11
+ </li>
12
+ <li>
13
+ <a href="#">Contact</a>
14
+ </li>
15
+ </ul>
16
+ </nav>
17
+ </div>
18
+ </div>
19
+
20
+ <div class="inner cover">
21
+ <h1 class="cover-heading">Cover your page.</h1>
22
+ <p class="lead">Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.</p>
23
+ <p class="lead">
24
+ <a href="#" class="btn btn-lg btn-default">Learn more</a>
25
+ </p>
26
+ </div>
27
+
28
+ <div class="mastfoot">
29
+ <div class="inner">
30
+ <p>Cover template for
31
+ <a href="http://getbootstrap.com">Bootstrap</a>, by
32
+ <a href="https://twitter.com/mdo">@mdo</a>.</p>
33
+ </div>
34
+ </div>
@@ -0,0 +1,31 @@
1
+ require('jquery')
2
+ require('jquery-ujs')
3
+ require('jquery.cookie')
4
+ var _ = require('lodash')
5
+ var is = require('is')
6
+
7
+ require('./init/controllers')
8
+ require('./init/forms')
9
+
10
+ window.track = function(event, attributes, fn){
11
+ console.log("Track: " + event + " " + JSON.stringify(attributes))
12
+
13
+ if (is.fn(attributes)) fn = attributes, attributes = null;
14
+ if (is.undefined(attributes)) { attributes = {} }
15
+ if ($.cookie('invisible') == "true") {
16
+ if (!is.undefined(fn)) { fn() }
17
+ return
18
+ }
19
+
20
+ var attrs = _.extend({
21
+ iteration: $('body').data('iteration')
22
+ }, attributes)
23
+
24
+ if (typeof(analytics) != 'undefined') {
25
+ analytics.track(event, attrs, fn);
26
+ }
27
+
28
+ if (typeof(amplitude) != 'undefined') {
29
+ amplitude.getInstance().logEvent(event, attrs, fn);
30
+ }
31
+ }
@@ -0,0 +1,26 @@
1
+ window.controllers = {}
2
+
3
+ let handler = function(){
4
+ var $body = $("body");
5
+ var controller = $body.data("controller").replace(/\//g, "_");
6
+ var action = $body.data("action");
7
+
8
+ var activeController = window.controllers[controller];
9
+
10
+ if (activeController !== undefined) {
11
+ if (window.env == "development") {
12
+ console.log("[Controllers] " + controller + "." + action + "()");
13
+ }
14
+
15
+ if ($.isFunction(activeController.init)) {
16
+ activeController.init();
17
+ }
18
+
19
+ if ($.isFunction(activeController[action])) {
20
+ activeController[action]();
21
+ }
22
+ }
23
+ }
24
+
25
+ // $(handler);
26
+ document.addEventListener("turbolinks:load", handler)
@@ -0,0 +1,12 @@
1
+ $(function(){
2
+ $('form.no-enter-submit').bind("keypress", function(e) {
3
+ if (e.keyCode == 13) {
4
+ e.preventDefault();
5
+ return false;
6
+ }
7
+ });
8
+
9
+ $('form.disable-on-submit').on('submit', function(e){
10
+ $(this).find(".btn").addClass('disabled')
11
+ })
12
+ })