express_ui 0.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +38 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/config/express_ui_manifest.js +2 -0
  6. data/app/assets/javascripts/express_ui/application.js +1 -0
  7. data/app/assets/javascripts/express_ui/copy_code.js +63 -0
  8. data/app/assets/javascripts/express_ui/search.js +103 -0
  9. data/app/assets/javascripts/express_ui/styleguide.js +90 -0
  10. data/app/assets/stylesheets/express_ui/atoms/_animations.sass +35 -0
  11. data/app/assets/stylesheets/express_ui/atoms/_buttons.sass +119 -0
  12. data/app/assets/stylesheets/express_ui/atoms/_headings.sass +51 -0
  13. data/app/assets/stylesheets/express_ui/atoms/_icons.sass +3 -0
  14. data/app/assets/stylesheets/express_ui/atoms/_images.sass +37 -0
  15. data/app/assets/stylesheets/express_ui/atoms/_media_queries.sass +27 -0
  16. data/app/assets/stylesheets/express_ui/atoms/_mixins.sass +33 -0
  17. data/app/assets/stylesheets/express_ui/atoms/_reset.sass +11 -0
  18. data/app/assets/stylesheets/express_ui/atoms/_typography.sass +167 -0
  19. data/app/assets/stylesheets/express_ui/atoms/_variables.sass +52 -0
  20. data/app/assets/stylesheets/express_ui/molecules/_button_group.sass +54 -0
  21. data/app/assets/stylesheets/express_ui/molecules/_container.sass +29 -0
  22. data/app/assets/stylesheets/express_ui/molecules/_flash_messages.sass +56 -0
  23. data/app/assets/stylesheets/express_ui/molecules/_form_groups.sass +96 -0
  24. data/app/assets/stylesheets/express_ui/molecules/_forms.sass +159 -0
  25. data/app/assets/stylesheets/express_ui/molecules/_lists.sass +56 -0
  26. data/app/assets/stylesheets/express_ui/molecules/_nav.sass +85 -0
  27. data/app/assets/stylesheets/express_ui/molecules/_tables.sass +77 -0
  28. data/app/assets/stylesheets/express_ui/molecules/_tabs.sass +23 -0
  29. data/app/assets/stylesheets/express_ui/organisms/_header.sass +29 -0
  30. data/app/assets/stylesheets/express_ui/organisms/_sidebar.sass +113 -0
  31. data/app/assets/stylesheets/express_ui/style.sass +31 -0
  32. data/app/assets/stylesheets/express_ui/styleguide.sass +200 -0
  33. data/app/assets/stylesheets/express_ui/templates/_content_sidebar.sass +31 -0
  34. data/app/assets/stylesheets/express_ui/templates/_full_width.sass +5 -0
  35. data/app/assets/stylesheets/express_ui/templates/_half_width.sass +8 -0
  36. data/app/assets/stylesheets/express_ui/templates/_master_detail.sass +50 -0
  37. data/app/components/code_demo.rb +31 -0
  38. data/app/controllers/express_ui/about_controller.rb +10 -0
  39. data/app/controllers/express_ui/application_controller.rb +5 -0
  40. data/app/controllers/express_ui/styleguide_controller.rb +10 -0
  41. data/app/controllers/express_ui/templates_controller.rb +26 -0
  42. data/app/controllers/express_ui/uicomponents_controller.rb +26 -0
  43. data/app/helpers/express_ui/application_helper.rb +28 -0
  44. data/app/jobs/express_ui/application_job.rb +4 -0
  45. data/app/mailers/express_ui/application_mailer.rb +6 -0
  46. data/app/models/express_ui/application_record.rb +5 -0
  47. data/app/views/express_ui/atoms/_animations.html.erb +33 -0
  48. data/app/views/express_ui/atoms/_buttons.html.erb +129 -0
  49. data/app/views/express_ui/atoms/_headings.html.erb +3 -0
  50. data/app/views/express_ui/atoms/_icons.html.erb +13 -0
  51. data/app/views/express_ui/atoms/_mixins.html.erb +6 -0
  52. data/app/views/express_ui/atoms/_typography.html.erb +201 -0
  53. data/app/views/express_ui/atoms/_variables.html.erb +50 -0
  54. data/app/views/express_ui/molecules/_button_group.html.erb +90 -0
  55. data/app/views/express_ui/molecules/_container.html.erb +32 -0
  56. data/app/views/express_ui/molecules/_flash_messages.html.erb +49 -0
  57. data/app/views/express_ui/molecules/_form_group_horizontal.html.erb +14 -0
  58. data/app/views/express_ui/molecules/_form_group_inline.html.erb +1 -0
  59. data/app/views/express_ui/molecules/_form_group_single_line.html.erb +9 -0
  60. data/app/views/express_ui/molecules/_form_groups.html.erb +69 -0
  61. data/app/views/express_ui/molecules/_forms.html.erb +209 -0
  62. data/app/views/express_ui/molecules/_forms_checkbox.html.erb +20 -0
  63. data/app/views/express_ui/molecules/_forms_radio.html.erb +12 -0
  64. data/app/views/express_ui/molecules/_forms_select.html.erb +11 -0
  65. data/app/views/express_ui/molecules/_nav.html.erb +11 -0
  66. data/app/views/express_ui/molecules/_nav_mega_menu.html.erb +74 -0
  67. data/app/views/express_ui/molecules/_table.html.erb +93 -0
  68. data/app/views/express_ui/molecules/_table_with_filtering.html.erb +55 -0
  69. data/app/views/express_ui/organisms/_header.html.erb +24 -0
  70. data/app/views/express_ui/shared/_header.html.erb +10 -0
  71. data/app/views/express_ui/shared/_search_box.html.erb +6 -0
  72. data/app/views/express_ui/shared/_sidebar_left.html.erb +4 -0
  73. data/app/views/express_ui/shared/_sidebar_right.html.erb +5 -0
  74. data/app/views/express_ui/styleguide/about.html.erb +22 -0
  75. data/app/views/express_ui/styleguide/index.html.erb +79 -0
  76. data/app/views/express_ui/templates/_header.html.erb +15 -0
  77. data/app/views/express_ui/templates/_templates.html.erb +57 -0
  78. data/app/views/express_ui/templates/content_and_sidebar.html.erb +32 -0
  79. data/app/views/express_ui/templates/content_and_sidebar_fixed.html.erb +34 -0
  80. data/app/views/express_ui/templates/full_width.html.erb +25 -0
  81. data/app/views/express_ui/templates/half_width.html.erb +25 -0
  82. data/app/views/express_ui/templates/master_detail.html.erb +41 -0
  83. data/app/views/express_ui/templates/master_detail_fixed.html.erb +36 -0
  84. data/app/views/express_ui/uicomponents/_buttons.html.et +10 -0
  85. data/app/views/express_ui/uicomponents/_flash_message.html.et +19 -0
  86. data/app/views/express_ui/uicomponents/_forms.html.et +118 -0
  87. data/app/views/express_ui/uicomponents/_heading.html.et +24 -0
  88. data/app/views/express_ui/uicomponents/_icons.html.et +35 -0
  89. data/app/views/express_ui/uicomponents/_layout.html.et +47 -0
  90. data/app/views/express_ui/uicomponents/_lists.html.et +9 -0
  91. data/app/views/express_ui/uicomponents/_login.html.erb +15 -0
  92. data/app/views/express_ui/uicomponents/_nav.html.et +18 -0
  93. data/app/views/express_ui/uicomponents/_pages.html.et +22 -0
  94. data/app/views/express_ui/uicomponents/_panel.html.et +33 -0
  95. data/app/views/express_ui/uicomponents/_popup.html.et +19 -0
  96. data/app/views/express_ui/uicomponents/_register.html.erb +14 -0
  97. data/app/views/express_ui/uicomponents/_sidebar.html.et +8 -0
  98. data/app/views/express_ui/uicomponents/_table.html.et +29 -0
  99. data/app/views/express_ui/uicomponents/_widget_box.html.et +14 -0
  100. data/app/views/express_ui/uicomponents/index.html.erb +55 -0
  101. data/app/views/layouts/express_ui/styleguide.html.erb +20 -0
  102. data/config/routes.rb +12 -0
  103. data/lib/express_ui.rb +5 -0
  104. data/lib/express_ui/engine.rb +12 -0
  105. data/lib/express_ui/version.rb +3 -0
  106. data/lib/tasks/express_ui_tasks.rake +4 -0
  107. metadata +251 -0
@@ -0,0 +1,31 @@
1
+ .ae-template-content-sidebar
2
+ @include sidebar(15%)
3
+ display: flex
4
+ flex-flow: row nowrap
5
+ align-items: stretch
6
+ max-width: 100%
7
+
8
+ .ae-sidebar-left
9
+ height: auto
10
+ overflow: visible
11
+
12
+ .ae-content
13
+ padding: $container-padding*2 $container-padding*4
14
+ width: $container
15
+
16
+ .ae-template-content-sidebar-fixed
17
+ @include sidebar-fixed(15%)
18
+ display: flex
19
+ flex-flow: row nowrap
20
+ align-items: stretch
21
+ max-width: 100%
22
+ height: 100%
23
+
24
+ .ae-sidebar-left
25
+ position: fixed
26
+ height: 100%
27
+
28
+ .ae-content
29
+ position: absolute
30
+ padding: $container-padding*2 $container-padding*4
31
+ right: $container-padding*4
@@ -0,0 +1,5 @@
1
+ .ae-template-full-width
2
+ .ae-content
3
+ @include laptop-max
4
+ padding-left: $container-padding*4
5
+ padding-right: $container-padding*4
@@ -0,0 +1,8 @@
1
+ .ae-template-half-width
2
+ .ae-content
3
+ @include laptop-max
4
+ padding-left: $container-padding*4
5
+ padding-right: $container-padding*4
6
+ .ae-container
7
+ @include tablet
8
+ width: 50%
@@ -0,0 +1,50 @@
1
+ @mixin sidebar-right($width)
2
+ .ae-content
3
+ right: $width
4
+
5
+ .ae-sidebar-right
6
+ width: $width
7
+
8
+ .ae-template-master-detail
9
+ @include sidebar(15%)
10
+ @include sidebar-right(30%)
11
+ display: flex
12
+ flex-flow: row nowrap
13
+ align-items: stretch
14
+ max-width: 100%
15
+
16
+ .ae-sidebar-left
17
+ height: auto
18
+ overflow: visible
19
+
20
+ .ae-sidebar-right
21
+ @include container-table-cell
22
+ height: 100%
23
+ right: 0
24
+ position: absolute
25
+
26
+ .ae-content
27
+ padding: $container-padding $container-padding*4
28
+ width: $container
29
+
30
+ .ae-template-master-detail-fixed
31
+ @include sidebar-right(30%)
32
+ @include sidebar-fixed(15%)
33
+ display: flex
34
+ flex-flow: row nowrap
35
+ align-items: stretch
36
+ max-width: 100%
37
+ height: 100%
38
+
39
+ .ae-sidebar-left
40
+ position: fixed
41
+ height: 100%
42
+
43
+ .ae-sidebar-right
44
+ position: fixed
45
+ height: 100%
46
+ right: 0
47
+
48
+ .ae-content
49
+ position: absolute
50
+ padding: $container-padding $container-padding*4
@@ -0,0 +1,31 @@
1
+ class CodeDemo < ExpressTemplates::Components::Container
2
+
3
+ before_build -> {
4
+ set_attribute(:class, 'ae-demo-container')
5
+ }
6
+
7
+ contains -> (&block) {
8
+ ul(class: 'ae-tabs') {
9
+ li(class: 'ae-tab active-tab', 'data-tab' => 'input'){
10
+ "Input"
11
+ }
12
+ li(class: 'ae-tab', 'data-tab' => 'output'){
13
+ "Output"
14
+ }
15
+ }
16
+
17
+ div(id: 'input', class: 'ae-tab-content active-tab'){
18
+ highlight_code_block {
19
+ block.call
20
+ }
21
+ }
22
+
23
+ div(id: 'output', class: 'ae-tab-content'){
24
+ div(class: 'demo-container'){
25
+ eval block.call.html_safe
26
+ }
27
+ }
28
+ }
29
+ end
30
+
31
+
@@ -0,0 +1,10 @@
1
+ require_dependency "express_ui/application_controller"
2
+
3
+ module ExpressUi
4
+ class AboutController < ApplicationController
5
+ layout "express_ui/styleguide"
6
+
7
+ def index
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ module ExpressUi
2
+ class ApplicationController < ActionController::Base
3
+ protect_from_forgery with: :exception
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ require_dependency "express_ui/application_controller"
2
+
3
+ module ExpressUi
4
+ class StyleguideController < ApplicationController
5
+ layout "express_ui/styleguide"
6
+
7
+ def index
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,26 @@
1
+ require_dependency "express_ui/application_controller"
2
+
3
+ module ExpressUi
4
+ class TemplatesController < ApplicationController
5
+ layout "express_ui/styleguide"
6
+
7
+ def master_detail_scroll
8
+ end
9
+
10
+ def master_detail_fixed
11
+ end
12
+
13
+ def content_and_sidebar
14
+ end
15
+
16
+ def content_and_sidebar_fixed
17
+ end
18
+
19
+ def half_width
20
+ end
21
+
22
+ def full_width
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ require_dependency "express_ui/application_controller"
2
+
3
+ module ExpressUi
4
+ class UicomponentsController < ApplicationController
5
+ layout "express_ui/styleguide"
6
+
7
+ def index
8
+ end
9
+
10
+ def master_detail_scroll
11
+ end
12
+
13
+ def master_detail_fixed
14
+ end
15
+
16
+ def content_and_sidebar
17
+ end
18
+
19
+ def half_width
20
+ end
21
+
22
+ def full_width
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ module ExpressUi
2
+ module ApplicationHelper
3
+
4
+ def nav_link_to(text, path)
5
+ class_name = current_page?(path) ? 'ae-nav-item active' : 'ae-nav-item'
6
+
7
+ content_tag :li, class: class_name do
8
+ link_to text, path
9
+ end
10
+ end
11
+
12
+ def highlight_code_block(&block)
13
+ code_block = capture(&block)
14
+
15
+ code_block_in_code_element = code_block_in_code_element(code_block)
16
+
17
+ content_tag :pre do
18
+ code_block_in_code_element
19
+ end
20
+ end
21
+
22
+ def code_block_in_code_element(code_block)
23
+ content_tag :code, class: "ae-code-block prettyprint" do
24
+ code_block.strip_heredoc.html_safe
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,4 @@
1
+ module ExpressUi
2
+ class ApplicationJob < ActiveJob::Base
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module ExpressUi
2
+ class ApplicationMailer < ActionMailer::Base
3
+ default from: 'from@example.com'
4
+ layout 'mailer'
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ module ExpressUi
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
@@ -0,0 +1,33 @@
1
+ <section>
2
+ <p>Hover states using CSS animations</p>
3
+
4
+ <button class="ae-btn ae-fade-in">Fade In</button>
5
+ <button class="ae-btn ae-fade-out">Fade Out</button>
6
+ <button class="ae-btn ae-ease-in-out">Ease In Out (Button Hover)</button>
7
+
8
+ <table>
9
+ <thead>
10
+ <th>Animation</th>
11
+ <th>Class</th>
12
+ <th>Usage</th>
13
+ </thead>
14
+ <tbody>
15
+ <tr>
16
+ <td>Fade In</td>
17
+ <td><code>.ae-fade-in</code></td>
18
+ <td>Show element</td>
19
+ </tr>
20
+ <tr>
21
+ <td>Fade Out</td>
22
+ <td><code>.ae-fade-out</code></td>
23
+ <td>Hide element</td>
24
+ </tr>
25
+ <tr>
26
+ <td>Ease In Out</td>
27
+ <td><code>.ae-ease-in-out</code></td>
28
+ <td>Easing in and out <br /><small>Automatically applied to buttons and image links</small></td>
29
+ </tr>
30
+
31
+ </tbody>
32
+ </table>
33
+ </section>
@@ -0,0 +1,129 @@
1
+ <section>
2
+ <p>Required. Buttons require the <code>ae-btn</code> class and <code>type="button"</code> attribute.</p>
3
+
4
+ <h4>Button Sizes</h4>
5
+ <table>
6
+ <thead>
7
+ <th>Size</th>
8
+ <th>Demo</th>
9
+ <th>Usage</th>
10
+ </thead>
11
+ <tbody>
12
+ <tr>
13
+ <td>Small</td>
14
+ <td><button type="button" class="ae-btn ae-btn-sm">Small</button></td>
15
+ <td><code>.ae-btn-sm</code></td>
16
+ </tr>
17
+ <tr>
18
+ <td>Medium</td>
19
+ <td><button type="button" class="ae-btn ae-btn-md">Medium</button></td>
20
+ <td><code>.ae-btn-md</code></td>
21
+ </tr>
22
+ <tr>
23
+ <td>Large</td>
24
+ <td><button type="button" class="ae-btn ae-btn-lg">Large</button></td>
25
+ <td><code>.ae-btn-lg</code></td>
26
+
27
+ </tr>
28
+ </tbody>
29
+ </table>
30
+
31
+ <h4>Button States</h4>
32
+ <table>
33
+ <thead>
34
+ <th>State</th>
35
+ <th>Demo</th>
36
+ </thead>
37
+ <tbody>
38
+ <tr>
39
+ <td>Default</td>
40
+ <td><button type="button" class="ae-btn">Default</button></td>
41
+ </tr>
42
+ <tr>
43
+ <td>Hover</td>
44
+ <td><button type="button" class="ae-btn ae-btn-hover">Hover</button></td>
45
+ </tr>
46
+ <tr>
47
+ <td>Active</td>
48
+ <td><button type="button" class="ae-btn ae-btn-active">Active</button></td>
49
+ </tr>
50
+ <tr>
51
+ <td>Focus</td>
52
+ <td><button type="button" class="ae-btn ae-btn-focus">Focus</button></td>
53
+ </tr>
54
+ </tbody>
55
+ </table>
56
+
57
+ <h4>Button Styles</h4>
58
+ <table>
59
+ <thead>
60
+ <th>Name</th>
61
+ <th>Demo</th>
62
+ <th>Usage</th>
63
+ <th>Notes</th>
64
+ </thead>
65
+ <tbody>
66
+ <tr>
67
+ <td>Default</td>
68
+ <td><button type="button" class="ae-btn">Default</button></td>
69
+ <td><code>.ae-btn-default</code></td>
70
+ <td>Actions</td>
71
+ </tr>
72
+ <tr>
73
+ <td>Primary</td>
74
+ <td><button type="button" class="ae-btn ae-btn-primary">Primary</button></td>
75
+ <td><code>.ae-btn-primary</code></td>
76
+ <td>Primary actions</td>
77
+ </tr>
78
+ <tr>
79
+ <td>Secondary</td>
80
+ <td><button type="button" class="ae-btn ae-btn-secondary">Secondary</button></td>
81
+ <td><code>.ae-btn-secondary</code></td>
82
+ <td>Secondary actions</td>
83
+ </tr>
84
+
85
+ <tr>
86
+ <td>Border</td>
87
+ <td><button type="button" class="ae-btn ae-btn-primary ae-btn-border">Primary Bordered</button><button type="button" class="ae-btn ae-btn-secondary ae-btn-border">Secondary Bordered</button>
88
+ </td>
89
+ <td><code>.ae-btn-border</code></td>
90
+ <td>Adds border to actions</td>
91
+ </tr>
92
+ <tr>
93
+ <td>Disabled</td>
94
+ <td><button type="button" class="ae-btn ae-btn-disabled" disabled="disabled">Disabled</button></td>
95
+ <td><code>.ae-btn-disabled</code></td>
96
+ <td>Requires <code>disabled="disabled"</code> attribute</td>
97
+ </tr>
98
+ <tr>
99
+ <td>Success</td>
100
+ <td><button type="button" class="ae-btn ae-btn-success">Submit</button></td>
101
+ <td><code>.ae-btn-success</code></td>
102
+ <td>Submit, confirm</td>
103
+ </tr>
104
+ <tr>
105
+ <td>Danger</td>
106
+ <td><button type="button" class="ae-btn ae-btn-danger">Delete</button></td>
107
+ <td><code>.ae-btn-danger</code></td>
108
+ <td>Delete, cancel, remove</td>
109
+ </tr>
110
+
111
+ </tbody>
112
+ </table>
113
+
114
+
115
+ <p>Buttons can have a badge count. </p>
116
+
117
+ <button type="button" class="ae-btn ae-btn-default">Notification <span class="ae-badge ae-badge-success">10</span></button>
118
+
119
+ <p>You can also apply button styles for <code>&lt;input&gt;</code> and <code>&lt;a href="#"&gt;&lt;/a&gt;</code>.</p>
120
+
121
+
122
+ <input type="submit" class="ae-btn ae-btn-default ae-btn-md" value="I'm a button"></button>
123
+ <a href="#" class="ae-btn ae-btn-default ae-btn-md" title="Take me to this link">I'm a link</a>
124
+
125
+
126
+ <p>To use two or more buttons in a group, see <a href="#ae-button-groups">Button Groups</a>.</p>
127
+
128
+ </section>
129
+
@@ -0,0 +1,3 @@
1
+ <section>
2
+ <p>See this section's heading for a sample of styled headings. Headings can be styled by adding an <code>.ae-heading-bottom-border</code> class. This adds a bottom border separator and uppercase text transform.</p>
3
+ </section>
@@ -0,0 +1,13 @@
1
+ <section>
2
+ <p>ExpressUI uses the Font Awesome icon library via the <code>font-awesome-sass</code> gem.</p>
3
+ <p>Font Awesome classes are used with the <code>&lt;i&gt;&lt;/i&gt;</code> element. The <code>.fa</code> class is required. Optionally, icon size can be controlled using font size multiplier classes <code>fa-2x</code>, <code>fa-3x</code>, or <code>fa-4x</code>.</p>
4
+
5
+ <%= highlight_code_block do %>
6
+ <%= "<i class=\"fa fa-chevron-right\"></i>" %>
7
+ <%= "<i class=\"fa fa-chevron-right fa-2x\"></i>" %>
8
+ <%= "<i class=\"fa fa-chevron-right fa-3x\"></i>" %>
9
+ <%= "<i class=\"fa fa-chevron-right fa-4x\"></i>" %>
10
+ <% end %>
11
+
12
+ <p>For complete usage instructions, see the official Font Awesome documentation at <a href="http://fontawesome.io/icons/" title="Go to Font Awesome">http://fontawesome.io/icons</a>.</p>
13
+ </section>