express_ui 0.1.0.rc1
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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +38 -0
- data/Rakefile +37 -0
- data/app/assets/config/express_ui_manifest.js +2 -0
- data/app/assets/javascripts/express_ui/application.js +1 -0
- data/app/assets/javascripts/express_ui/copy_code.js +63 -0
- data/app/assets/javascripts/express_ui/search.js +103 -0
- data/app/assets/javascripts/express_ui/styleguide.js +90 -0
- data/app/assets/stylesheets/express_ui/atoms/_animations.sass +35 -0
- data/app/assets/stylesheets/express_ui/atoms/_buttons.sass +119 -0
- data/app/assets/stylesheets/express_ui/atoms/_headings.sass +51 -0
- data/app/assets/stylesheets/express_ui/atoms/_icons.sass +3 -0
- data/app/assets/stylesheets/express_ui/atoms/_images.sass +37 -0
- data/app/assets/stylesheets/express_ui/atoms/_media_queries.sass +27 -0
- data/app/assets/stylesheets/express_ui/atoms/_mixins.sass +33 -0
- data/app/assets/stylesheets/express_ui/atoms/_reset.sass +11 -0
- data/app/assets/stylesheets/express_ui/atoms/_typography.sass +167 -0
- data/app/assets/stylesheets/express_ui/atoms/_variables.sass +52 -0
- data/app/assets/stylesheets/express_ui/molecules/_button_group.sass +54 -0
- data/app/assets/stylesheets/express_ui/molecules/_container.sass +29 -0
- data/app/assets/stylesheets/express_ui/molecules/_flash_messages.sass +56 -0
- data/app/assets/stylesheets/express_ui/molecules/_form_groups.sass +96 -0
- data/app/assets/stylesheets/express_ui/molecules/_forms.sass +159 -0
- data/app/assets/stylesheets/express_ui/molecules/_lists.sass +56 -0
- data/app/assets/stylesheets/express_ui/molecules/_nav.sass +85 -0
- data/app/assets/stylesheets/express_ui/molecules/_tables.sass +77 -0
- data/app/assets/stylesheets/express_ui/molecules/_tabs.sass +23 -0
- data/app/assets/stylesheets/express_ui/organisms/_header.sass +29 -0
- data/app/assets/stylesheets/express_ui/organisms/_sidebar.sass +113 -0
- data/app/assets/stylesheets/express_ui/style.sass +31 -0
- data/app/assets/stylesheets/express_ui/styleguide.sass +200 -0
- data/app/assets/stylesheets/express_ui/templates/_content_sidebar.sass +31 -0
- data/app/assets/stylesheets/express_ui/templates/_full_width.sass +5 -0
- data/app/assets/stylesheets/express_ui/templates/_half_width.sass +8 -0
- data/app/assets/stylesheets/express_ui/templates/_master_detail.sass +50 -0
- data/app/components/code_demo.rb +31 -0
- data/app/controllers/express_ui/about_controller.rb +10 -0
- data/app/controllers/express_ui/application_controller.rb +5 -0
- data/app/controllers/express_ui/styleguide_controller.rb +10 -0
- data/app/controllers/express_ui/templates_controller.rb +26 -0
- data/app/controllers/express_ui/uicomponents_controller.rb +26 -0
- data/app/helpers/express_ui/application_helper.rb +28 -0
- data/app/jobs/express_ui/application_job.rb +4 -0
- data/app/mailers/express_ui/application_mailer.rb +6 -0
- data/app/models/express_ui/application_record.rb +5 -0
- data/app/views/express_ui/atoms/_animations.html.erb +33 -0
- data/app/views/express_ui/atoms/_buttons.html.erb +129 -0
- data/app/views/express_ui/atoms/_headings.html.erb +3 -0
- data/app/views/express_ui/atoms/_icons.html.erb +13 -0
- data/app/views/express_ui/atoms/_mixins.html.erb +6 -0
- data/app/views/express_ui/atoms/_typography.html.erb +201 -0
- data/app/views/express_ui/atoms/_variables.html.erb +50 -0
- data/app/views/express_ui/molecules/_button_group.html.erb +90 -0
- data/app/views/express_ui/molecules/_container.html.erb +32 -0
- data/app/views/express_ui/molecules/_flash_messages.html.erb +49 -0
- data/app/views/express_ui/molecules/_form_group_horizontal.html.erb +14 -0
- data/app/views/express_ui/molecules/_form_group_inline.html.erb +1 -0
- data/app/views/express_ui/molecules/_form_group_single_line.html.erb +9 -0
- data/app/views/express_ui/molecules/_form_groups.html.erb +69 -0
- data/app/views/express_ui/molecules/_forms.html.erb +209 -0
- data/app/views/express_ui/molecules/_forms_checkbox.html.erb +20 -0
- data/app/views/express_ui/molecules/_forms_radio.html.erb +12 -0
- data/app/views/express_ui/molecules/_forms_select.html.erb +11 -0
- data/app/views/express_ui/molecules/_nav.html.erb +11 -0
- data/app/views/express_ui/molecules/_nav_mega_menu.html.erb +74 -0
- data/app/views/express_ui/molecules/_table.html.erb +93 -0
- data/app/views/express_ui/molecules/_table_with_filtering.html.erb +55 -0
- data/app/views/express_ui/organisms/_header.html.erb +24 -0
- data/app/views/express_ui/shared/_header.html.erb +10 -0
- data/app/views/express_ui/shared/_search_box.html.erb +6 -0
- data/app/views/express_ui/shared/_sidebar_left.html.erb +4 -0
- data/app/views/express_ui/shared/_sidebar_right.html.erb +5 -0
- data/app/views/express_ui/styleguide/about.html.erb +22 -0
- data/app/views/express_ui/styleguide/index.html.erb +79 -0
- data/app/views/express_ui/templates/_header.html.erb +15 -0
- data/app/views/express_ui/templates/_templates.html.erb +57 -0
- data/app/views/express_ui/templates/content_and_sidebar.html.erb +32 -0
- data/app/views/express_ui/templates/content_and_sidebar_fixed.html.erb +34 -0
- data/app/views/express_ui/templates/full_width.html.erb +25 -0
- data/app/views/express_ui/templates/half_width.html.erb +25 -0
- data/app/views/express_ui/templates/master_detail.html.erb +41 -0
- data/app/views/express_ui/templates/master_detail_fixed.html.erb +36 -0
- data/app/views/express_ui/uicomponents/_buttons.html.et +10 -0
- data/app/views/express_ui/uicomponents/_flash_message.html.et +19 -0
- data/app/views/express_ui/uicomponents/_forms.html.et +118 -0
- data/app/views/express_ui/uicomponents/_heading.html.et +24 -0
- data/app/views/express_ui/uicomponents/_icons.html.et +35 -0
- data/app/views/express_ui/uicomponents/_layout.html.et +47 -0
- data/app/views/express_ui/uicomponents/_lists.html.et +9 -0
- data/app/views/express_ui/uicomponents/_login.html.erb +15 -0
- data/app/views/express_ui/uicomponents/_nav.html.et +18 -0
- data/app/views/express_ui/uicomponents/_pages.html.et +22 -0
- data/app/views/express_ui/uicomponents/_panel.html.et +33 -0
- data/app/views/express_ui/uicomponents/_popup.html.et +19 -0
- data/app/views/express_ui/uicomponents/_register.html.erb +14 -0
- data/app/views/express_ui/uicomponents/_sidebar.html.et +8 -0
- data/app/views/express_ui/uicomponents/_table.html.et +29 -0
- data/app/views/express_ui/uicomponents/_widget_box.html.et +14 -0
- data/app/views/express_ui/uicomponents/index.html.erb +55 -0
- data/app/views/layouts/express_ui/styleguide.html.erb +20 -0
- data/config/routes.rb +12 -0
- data/lib/express_ui.rb +5 -0
- data/lib/express_ui/engine.rb +12 -0
- data/lib/express_ui/version.rb +3 -0
- data/lib/tasks/express_ui_tasks.rake +4 -0
- metadata +251 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<%= render "express_ui/shared/header" %>
|
|
2
|
+
<div class="ae-template-master-detail-fixed">
|
|
3
|
+
|
|
4
|
+
<div class="ae-sidebar ae-sidebar-left">
|
|
5
|
+
<nav><a href="#">{Sidebar Menu}</a></nav>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<div class="ae-sidebar ae-sidebar-right">
|
|
9
|
+
<p>{Detail}</p>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<div class="ae-content content">
|
|
13
|
+
<%= render "express_ui/shared/search_box" %>
|
|
14
|
+
|
|
15
|
+
<h1>This is a fixed master-detail layout</h1>
|
|
16
|
+
|
|
17
|
+
<%= highlight_code_block do %>
|
|
18
|
+
<%= "<header></header>" %>
|
|
19
|
+
<%= "<div class=\"ae-template-master-detail-fixed\">" %>
|
|
20
|
+
<%= "<div class=\"ae-sidebar ae-sidebar-left\">" %>
|
|
21
|
+
<%= "<nav>" %>
|
|
22
|
+
<%= "{Sidebar Menu}" %>
|
|
23
|
+
<%= "</nav>" %>
|
|
24
|
+
<%= "</div>" %>
|
|
25
|
+
<%= "<div class=\"ae-sidebar ae-sidebar-right\">" %>
|
|
26
|
+
<%= "{Detail View}" %>
|
|
27
|
+
<%= "</div>" %>
|
|
28
|
+
<%= "<div class=\"ae-content\">" %>
|
|
29
|
+
<%= "{Content}" %>
|
|
30
|
+
<%= "</div>" %>
|
|
31
|
+
<%= "</div>" %>
|
|
32
|
+
<%= "<footer></footer>" %>
|
|
33
|
+
<% end %>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
h3 { "input()" }
|
|
2
|
+
section {
|
|
3
|
+
code_demo {
|
|
4
|
+
%Q{
|
|
5
|
+
input(
|
|
6
|
+
class: 'ae-text-field ae-input-sm',
|
|
7
|
+
type: "text",
|
|
8
|
+
name: "text",
|
|
9
|
+
value: "Enter a word",
|
|
10
|
+
placeholder: "Enter some text"
|
|
11
|
+
)
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
h3 { "smart_form()" }
|
|
17
|
+
section {
|
|
18
|
+
code_demo {
|
|
19
|
+
%Q{
|
|
20
|
+
smart_form(){
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
h3 { 'express_form()'}
|
|
27
|
+
section {
|
|
28
|
+
code_demo {
|
|
29
|
+
%Q{
|
|
30
|
+
express_form() {
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
h3 { "Search" }
|
|
38
|
+
section {
|
|
39
|
+
|
|
40
|
+
para {
|
|
41
|
+
"A search form always contains a search field and reset search field button. Search button is optional. Search on \"enter\" key is always enabled."
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
table {
|
|
45
|
+
thead {
|
|
46
|
+
th { "Properties" }
|
|
47
|
+
th { "Notes" }
|
|
48
|
+
}
|
|
49
|
+
tbody {
|
|
50
|
+
tr {
|
|
51
|
+
td { code { "maxLength" } }
|
|
52
|
+
td { "auto or string" }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
tr {
|
|
56
|
+
td { code { "grouping" } }
|
|
57
|
+
td { "inline, horizontal, or single_line" }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
tr {
|
|
61
|
+
td { code { "button"} }
|
|
62
|
+
td { "true or false" }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
code_demo {
|
|
68
|
+
%Q{
|
|
69
|
+
search_form(
|
|
70
|
+
name: "",
|
|
71
|
+
maxlength: "",
|
|
72
|
+
class: "",
|
|
73
|
+
placeholder: "Enter a keyword and hit enter",
|
|
74
|
+
value: "",
|
|
75
|
+
grouping: "single_line",
|
|
76
|
+
button: true,
|
|
77
|
+
button_text: "Search"){
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
h3 { "Express Billing" }
|
|
84
|
+
section {
|
|
85
|
+
para { "Credit card form, coupon code" }
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
h3 { 'code_editor()'}
|
|
89
|
+
section {
|
|
90
|
+
code_demo {
|
|
91
|
+
%Q{
|
|
92
|
+
express_form() {
|
|
93
|
+
code_editor()
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
h3 { 'country_select()'}
|
|
101
|
+
section {
|
|
102
|
+
code_demo {
|
|
103
|
+
%Q{
|
|
104
|
+
express_form() {
|
|
105
|
+
country_select :country_code, label: "Country", class: form_field_class(:country)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
h3 { "media_form()" }
|
|
112
|
+
section {
|
|
113
|
+
code_demo {
|
|
114
|
+
%Q{
|
|
115
|
+
media_form()
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
section {
|
|
2
|
+
para {
|
|
3
|
+
text_node "Heading blocks ("
|
|
4
|
+
code { "<h1>" }
|
|
5
|
+
text_node "to"
|
|
6
|
+
code { "<h6>" }
|
|
7
|
+
text_node ") can have optional icon and extra text."
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
para {
|
|
11
|
+
text_node "To use icons inside headers, see the"
|
|
12
|
+
code { "fa_icon" }
|
|
13
|
+
text_node "component guide."
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
code_demo {
|
|
17
|
+
%Q{
|
|
18
|
+
heading(){
|
|
19
|
+
text_node "Heading"
|
|
20
|
+
fa_icon "class"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
h3 { 'icon()' }
|
|
2
|
+
|
|
3
|
+
section {
|
|
4
|
+
para {
|
|
5
|
+
text_node "Font Awesome (FA) has over 600 icons for commercial use. To use FA icons in ExpressUI, use the"
|
|
6
|
+
code { "icon" }
|
|
7
|
+
text_node "component. Simply look for the FA class and append it as a value. No need to prepend the"
|
|
8
|
+
code { ".fa-" }
|
|
9
|
+
text_node "icon class as instructed in the FA document because ExpressUI already automatically prepends it. To know which classes to use, see the"
|
|
10
|
+
a(href: 'http://fontawesome.io/icons/') { "Font Awesome documentation" }
|
|
11
|
+
text_node "."
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
code_demo {
|
|
15
|
+
%Q{
|
|
16
|
+
icon 'close'
|
|
17
|
+
icon 'check'
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
h3 { 'icon_link()' }
|
|
23
|
+
section {
|
|
24
|
+
code_demo {
|
|
25
|
+
%Q{
|
|
26
|
+
icon_link(
|
|
27
|
+
'cancel',
|
|
28
|
+
text: 'View Site',
|
|
29
|
+
href: '/',
|
|
30
|
+
target: '_blank'
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
h3 { "header()" }
|
|
2
|
+
section {
|
|
3
|
+
para { "The header consists of a logo and main nav on the left. A secondary nav on the right is optional." }
|
|
4
|
+
|
|
5
|
+
code_demo {
|
|
6
|
+
"header() {
|
|
7
|
+
'Header contents here'
|
|
8
|
+
}"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
h3 { "sidebar_region()" }
|
|
13
|
+
section {
|
|
14
|
+
div(class: 'demo-container') {
|
|
15
|
+
render 'express_ui/uicomponents/sidebar'
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
h3 { "main_region()" }
|
|
20
|
+
section {
|
|
21
|
+
code_demo {
|
|
22
|
+
"main_region() {
|
|
23
|
+
p 'This block of text goes right into the contents.'
|
|
24
|
+
}"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
h3 { "page_header()" }
|
|
29
|
+
section {
|
|
30
|
+
code_demo {
|
|
31
|
+
"content_for(:page_header) {
|
|
32
|
+
h1 'Welcome to Express UI'
|
|
33
|
+
p 'This block of text goes right into the page header.'
|
|
34
|
+
}"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
h3 { "footer()" }
|
|
39
|
+
section {
|
|
40
|
+
para { "(Nav, logo, social media inks)" }
|
|
41
|
+
|
|
42
|
+
code_demo {
|
|
43
|
+
"footer() {
|
|
44
|
+
'Footer contents here'
|
|
45
|
+
}"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
<form class="ae-form-horizontal ae-u-text-left">
|
|
3
|
+
<div class="ae-form-field">
|
|
4
|
+
<label for="email">Email</label>
|
|
5
|
+
<input class="ae-text-field ae-input-md" type="email" name="email" value="user@email.com" id="email" placeholder="user@email.com" />
|
|
6
|
+
<p class="ae-hint">Your email adress</p>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="ae-form-field">
|
|
9
|
+
<label for="password">Password</label>
|
|
10
|
+
<input class="ae-text-field ae-input-md" type="password" name="password" value="Enter password" id="password" placeholder="Enter password" />
|
|
11
|
+
</div>
|
|
12
|
+
<div class="ae-actions">
|
|
13
|
+
<button class="ae-btn ae-btn-primary ae-btn-md" type="submit">Login</button>
|
|
14
|
+
</div>
|
|
15
|
+
</form>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
section {
|
|
2
|
+
table {
|
|
3
|
+
thead {
|
|
4
|
+
th { 'Page Name' }
|
|
5
|
+
th { 'Demo' }
|
|
6
|
+
}
|
|
7
|
+
tbody {
|
|
8
|
+
tr {
|
|
9
|
+
td { 'Register' }
|
|
10
|
+
td { a(href: "#", title: "View Sample") { 'View Sample' } }
|
|
11
|
+
}
|
|
12
|
+
tr {
|
|
13
|
+
td { 'Login' }
|
|
14
|
+
td { a(href: "#", title: "View Sample") { 'View Sample' } }
|
|
15
|
+
}
|
|
16
|
+
tr {
|
|
17
|
+
td { 'Static' }
|
|
18
|
+
td { a(href: "#", title: "View Sample") { 'View Sample' } }
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
section {
|
|
2
|
+
para {
|
|
3
|
+
"A panel is a way of boxing up groups of related contents to separate it from the rest of the document. Panels usually have a header, content body, and footer. Normal content blocks don't need to be in panels if all they are are texts or images. Panels have styling options. "
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
para {
|
|
7
|
+
'This outlines the basic structure of a panel'
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
highlight_code_block {
|
|
11
|
+
%Q{
|
|
12
|
+
<div class=\"panel\">
|
|
13
|
+
<div class=\"panel-heading\">
|
|
14
|
+
<h2>Heading</h2>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class=\"panel-body\">
|
|
18
|
+
{Content}
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div class=\"panel-footer\"></div>
|
|
22
|
+
</div>
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
code_demo {
|
|
28
|
+
%Q{
|
|
29
|
+
pane(){
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<form class="ae-form-horizontal ae-u-text-left">
|
|
2
|
+
<div class="ae-form-field">
|
|
3
|
+
<label for="email">Email</label>
|
|
4
|
+
<input class="ae-text-field ae-input-md" type="email" name="email" value="user@email.com" id="email" placeholder="user@email.com" />
|
|
5
|
+
<p class="ae-hint">Your email adress</p>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="ae-form-field">
|
|
8
|
+
<label for="password">New Password</label>
|
|
9
|
+
<input class="ae-text-field ae-input-md" type="password" name="password" value="Enter password" id="password" placeholder="Enter password" />
|
|
10
|
+
</div>
|
|
11
|
+
<div class="ae-actions">
|
|
12
|
+
<button class="ae-btn ae-btn-primary ae-btn-md" type="submit">Create an Account</button>
|
|
13
|
+
</div>
|
|
14
|
+
</form>
|