style-guide 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/.env +1 -0
  2. data/.travis.yml +1 -0
  3. data/Guardfile +2 -0
  4. data/Procfile +1 -0
  5. data/app/assets/stylesheets/style_guide/example.css +39 -11
  6. data/app/assets/stylesheets/style_guide/header.css +8 -2
  7. data/app/assets/stylesheets/style_guide/layout.css +34 -9
  8. data/app/assets/stylesheets/style_guide/navbar.css +2 -1
  9. data/app/assets/stylesheets/style_guide/sidebar.css +6 -1
  10. data/app/views/style_guide/buttons/_disabled_anchor.erb +2 -0
  11. data/app/views/style_guide/buttons/_disabled_element.erb +2 -0
  12. data/app/views/style_guide/buttons/_sizes.erb +4 -0
  13. data/app/views/style_guide/buttons/_types.erb +8 -0
  14. data/app/views/style_guide/{bootstrap_base/_form_controls:_checkbox_and_radio.erb → forms/_controls:_checkbox_and_radio.erb} +0 -0
  15. data/app/views/style_guide/{bootstrap_base/_form_controls:_input.erb → forms/_controls:_input.erb} +0 -0
  16. data/app/views/style_guide/{bootstrap_base/_form_controls:_select.erb → forms/_controls:_select.erb} +0 -0
  17. data/app/views/style_guide/{bootstrap_base/_form_controls:_textarea.erb → forms/_controls:_textarea.erb} +0 -0
  18. data/app/views/style_guide/{bootstrap_base/_forms:_default_styles.erb → forms/_default_styles.erb} +0 -0
  19. data/app/views/style_guide/{bootstrap_base/_forms:_horizontal.erb → forms/_horizontal.erb} +0 -0
  20. data/app/views/style_guide/{bootstrap_base/_forms:_inline.erb → forms/_inline.erb} +0 -0
  21. data/app/views/style_guide/{bootstrap_base/_forms:_search.erb → forms/_search.erb} +0 -0
  22. data/app/views/style_guide/images/_dropdown_icons.erb +9 -0
  23. data/app/views/style_guide/images/_form_fields.erb +10 -0
  24. data/app/views/style_guide/images/_icon_buttons.erb +4 -0
  25. data/app/views/style_guide/images/_navigation.erb +8 -0
  26. data/app/views/style_guide/images/_placeholders.erb +3 -0
  27. data/app/views/style_guide/images/_small_button.erb +1 -0
  28. data/app/views/style_guide/style/_example.erb +12 -5
  29. data/app/views/style_guide/style/_sidebar.erb +7 -5
  30. data/app/views/style_guide/style/show.html.erb +1 -3
  31. data/app/views/style_guide/tables/_bordered.erb +34 -0
  32. data/app/views/style_guide/tables/_condensed.erb +29 -0
  33. data/app/views/style_guide/tables/_default_style.erb +24 -0
  34. data/app/views/style_guide/tables/_hover.erb +29 -0
  35. data/app/views/style_guide/tables/_row_classes.erb +36 -0
  36. data/app/views/style_guide/tables/_striped.erb +30 -0
  37. data/app/views/style_guide/typography/_abbreviation.erb +4 -0
  38. data/app/views/style_guide/typography/_address.erb +10 -0
  39. data/app/views/style_guide/typography/_blockquote.erb +14 -0
  40. data/app/views/style_guide/typography/_body_copy.erb +12 -0
  41. data/app/views/style_guide/{bootstrap_base/_code:_blocks.erb → typography/_code.erb} +3 -0
  42. data/app/views/style_guide/typography/_description_list.erb +17 -0
  43. data/app/views/style_guide/typography/_emphasis.erb +5 -0
  44. data/app/views/style_guide/typography/_emphasis_classes.erb +5 -0
  45. data/app/views/style_guide/typography/_headings.erb +6 -0
  46. data/app/views/style_guide/typography/_ordered_list.erb +4 -0
  47. data/app/views/style_guide/typography/_unordered_list.erb +15 -0
  48. data/config/locales/en.yml +88 -36
  49. data/lib/style_guide/config.rb +18 -2
  50. data/lib/style_guide/partial.rb +40 -3
  51. data/lib/style_guide/section.rb +1 -1
  52. data/lib/style_guide/version.rb +1 -1
  53. data/spec/dummy/app/assets/stylesheets/swatches.css +0 -1
  54. data/spec/dummy/config/application.rb +1 -1
  55. data/spec/dummy/config/environments/development.rb +2 -0
  56. data/spec/lib/style_guide/config_spec.rb +18 -3
  57. data/spec/lib/style_guide/partial_spec.rb +49 -1
  58. data/style-guide.gemspec +5 -7
  59. metadata +58 -56
  60. data/Gemfile.lock +0 -159
  61. data/app/views/style_guide/bootstrap_base/_button:_disabled_anchor.erb +0 -2
  62. data/app/views/style_guide/bootstrap_base/_button:_disabled_element.erb +0 -2
  63. data/app/views/style_guide/bootstrap_base/_button_sizes.erb +0 -16
  64. data/app/views/style_guide/bootstrap_base/_button_types.erb +0 -51
  65. data/app/views/style_guide/bootstrap_base/_code:_inline.erb +0 -1
  66. data/app/views/style_guide/bootstrap_base/_images.erb +0 -136
  67. data/app/views/style_guide/bootstrap_base/_tables.erb +0 -409
  68. data/app/views/style_guide/bootstrap_base/_typography.erb +0 -331
@@ -0,0 +1,24 @@
1
+ <table class="table">
2
+ <thead>
3
+ <tr>
4
+ <th>#</th>
5
+ <th>First Name</th>
6
+ <th>Last Name</th>
7
+ <th>Username</th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <tr>
12
+ <td>1</td>
13
+ <td>Mark</td>
14
+ <td>Otto</td>
15
+ <td>@mdo</td>
16
+ </tr>
17
+ <tr>
18
+ <td>2</td>
19
+ <td>Jacob</td>
20
+ <td>Thornton</td>
21
+ <td>@fat</td>
22
+ </tr>
23
+ </tbody>
24
+ </table>
@@ -0,0 +1,29 @@
1
+ <table class="table table-hover">
2
+ <thead>
3
+ <tr>
4
+ <th>#</th>
5
+ <th>First Name</th>
6
+ <th>Last Name</th>
7
+ <th>Username</th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <tr>
12
+ <td>1</td>
13
+ <td>Mark</td>
14
+ <td>Otto</td>
15
+ <td>@mdo</td>
16
+ </tr>
17
+ <tr>
18
+ <td>2</td>
19
+ <td>Jacob</td>
20
+ <td>Thornton</td>
21
+ <td>@fat</td>
22
+ </tr>
23
+ <tr>
24
+ <td>3</td>
25
+ <td colspan="2">Larry the Bird</td>
26
+ <td>@twitter</td>
27
+ </tr>
28
+ </tbody>
29
+ </table>
@@ -0,0 +1,36 @@
1
+ <table class="table">
2
+ <thead>
3
+ <tr>
4
+ <th>#</th>
5
+ <th>Product</th>
6
+ <th>Payment Taken</th>
7
+ <th>Status</th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <tr class="success">
12
+ <td>1</td>
13
+ <td>TB - Monthly</td>
14
+ <td>01/04/2012</td>
15
+ <td>Approved</td>
16
+ </tr>
17
+ <tr class="error">
18
+ <td>2</td>
19
+ <td>TB - Monthly</td>
20
+ <td>02/04/2012</td>
21
+ <td>Declined</td>
22
+ </tr>
23
+ <tr class="warning">
24
+ <td>3</td>
25
+ <td>TB - Monthly</td>
26
+ <td>03/04/2012</td>
27
+ <td>Pending</td>
28
+ </tr>
29
+ <tr class="info">
30
+ <td>4</td>
31
+ <td>TB - Monthly</td>
32
+ <td>04/04/2012</td>
33
+ <td>Call in to confirm</td>
34
+ </tr>
35
+ </tbody>
36
+ </table>
@@ -0,0 +1,30 @@
1
+ <table class="table table-striped">
2
+ <thead>
3
+ <tr>
4
+ <th>#</th>
5
+ <th>First Name</th>
6
+ <th>Last Name</th>
7
+ <th>Username</th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <tr>
12
+ <td>1</td>
13
+ <td>Mark</td>
14
+ <td>Otto</td>
15
+ <td>@mdo</td>
16
+ </tr>
17
+ <tr>
18
+ <td>2</td>
19
+ <td>Jacob</td>
20
+ <td>Thornton</td>
21
+ <td>@fat</td>
22
+ </tr>
23
+ <tr>
24
+ <td>3</td>
25
+ <td>Larry</td>
26
+ <td>the Bird</td>
27
+ <td>@twitter</td>
28
+ </tr>
29
+ </tbody>
30
+ </table>
@@ -0,0 +1,4 @@
1
+ <p>An abbreviation of "attribute" is <abbr title="attribute">attr</abbr>.
2
+
3
+ <p><abbr title="HyperText Markup Language" class="initialism">HTML</abbr>
4
+ is the best thing since sliced bread.
@@ -0,0 +1,10 @@
1
+ <address>
2
+ <strong>Twitter, Inc.</strong><br>
3
+ 795 Folsom Ave, Suite 600<br>
4
+ San Francisco, CA 94107<br>
5
+ <abbr title="Phone">P:</abbr> (123) 456-7890
6
+ </address>
7
+ <address>
8
+ <strong>Full Name</strong><br>
9
+ <a href="mailto:#">first.last@gmail.com</a>
10
+ </address>
@@ -0,0 +1,14 @@
1
+ <blockquote>
2
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
3
+ <p>Integer posuere erat a ante.</p>
4
+ </blockquote>
5
+
6
+ <blockquote>
7
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
8
+ <small>Someone in <cite title="Source Title">Title</cite></small>
9
+ </blockquote>
10
+
11
+ <blockquote class="pull-right">
12
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
13
+ <small>Someone in <cite title="Title">Title</cite></small>
14
+ </blockquote>
@@ -0,0 +1,12 @@
1
+ <p class="lead">
2
+ Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
3
+ </p>
4
+ <p>
5
+ Maecenas sed diam eget risus varius blandit sit amet
6
+ non magna. Donec id elit non mi porta gravida at eget
7
+ metus.
8
+ </p>
9
+ <p>
10
+ Duis mollis, est non commodo luctus, nisi erat
11
+ porttitor ligula, eget lacinia odio sem nec elit.
12
+ </p>
@@ -1,4 +1,7 @@
1
+ <p>Wrap inline snippets of code with <code>&lt;code&gt;</code>.
2
+
1
3
  <pre>
4
+ # Wrap larger blocks of code with pre
2
5
  def find(*files)
3
6
  pathname.ascend do |path|
4
7
  file_name = files.detect { |fn| path.join(fn).file? }
@@ -0,0 +1,17 @@
1
+ <dl>
2
+ <dt>Description lists</dt>
3
+ <dd>A description list is perfect for defining terms.</dd>
4
+ <dt>Euismod</dt>
5
+ <dd>Vestibulum id ligula porta odio sem nec elit.</dd>
6
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
7
+ <dt>Malesuada porta</dt>
8
+ <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
9
+ </dl>
10
+
11
+ <dl class="dl-horizontal">
12
+ <dt>Horizontal lists</dt>
13
+ <dd>They do such a great job at saving vertical space!</dd>
14
+ <dt>Euismod</dt>
15
+ <dd>Vestibulum id ligula porta odio sem nec elit.</dd>
16
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
17
+ </dl>
@@ -0,0 +1,5 @@
1
+ <p>The following snippet of text is <em>italicized text</em>.
2
+
3
+ <p>The following snippet of text is <strong>bold text</strong>.
4
+
5
+ <p><small>This line of text is fine print.</small>
@@ -0,0 +1,5 @@
1
+ <p class="muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
2
+ <p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
3
+ <p class="text-error">Donec ullamcorper nulla non metus auctor fringilla.</p>
4
+ <p class="text-info">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.</p>
5
+ <p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
@@ -0,0 +1,6 @@
1
+ <h1>h1. Heading 1</h1>
2
+ <h2>h2. Heading 2</h2>
3
+ <h3>h3. Heading 3</h3>
4
+ <h4>h4. Heading 4</h4>
5
+ <h5>h5. Heading 5</h5>
6
+ <h6>h6. Heading 6</h6>
@@ -0,0 +1,4 @@
1
+ <ol>
2
+ <li>Aenean sit amet erat nunc</li>
3
+ <li>Eget porttitor lorem</li>
4
+ </ol>
@@ -0,0 +1,15 @@
1
+ <ul>
2
+ <li>Lorem ipsum dolor sit amet</li>
3
+ <li>Nulla volutpat aliquam velit
4
+ <ul>
5
+ <li>Phasellus iaculis neque</li>
6
+ <li>Ac tristique libero volutpat at</li>
7
+ </ul>
8
+ </li>
9
+ <li>Eget porttitor lorem</li>
10
+ </ul>
11
+
12
+ <ul class="unstyled">
13
+ <li>Lorem ipsum dolor sit amet</li>
14
+ <li>Eget porttitor lorem</li>
15
+ </ul>
@@ -1,34 +1,45 @@
1
1
  en:
2
2
  style_guide:
3
- bootstrap_base:
4
- button_disabled_anchor: >
3
+ buttons:
4
+ disabled_anchor: >
5
5
  Make <code>&lt;a&gt;</code> buttons look unclickable by adding
6
6
  the <code>.disabled</code> class
7
- button_disabled_element: >
7
+ disabled_element: >
8
8
  Make <code>&lt;button&gt;</code> buttons look unclickable by adding
9
9
  the <code>.disabled</code> class
10
- button_sizes: >
10
+ sizes: >
11
11
  Fancy larger or smaller buttons?
12
12
  Add <code>.btn-large</code>, <code>.btn-small</code>, or
13
13
  <code>.btn-mini</code> for additional sizes.
14
- button_types: >
15
- Need different buttons for different occasions? Add a class!
16
- code_inline: >
17
- Use <code>&lt;code&gt;</code> for inline snippets of code.
18
- code_blocks: >
19
- Use <code>&lt;pre&gt;</code> for multiple lines of code.
20
- Be sure to escape any angle brackets in the code for proper rendering.
21
- forms_default_styles: >
14
+ types: >
15
+ Need different buttons for different occasions? Add some class!
16
+
17
+ forms:
18
+ # controls
19
+ controls_checkbox_and_radio: >
20
+ Checkboxes are for selecting one or several options in a list while
21
+ radios are for selecting one option from many.
22
+ Add the <code>.inline</code> class to a series of checkboxes or radios
23
+ for controls to appear on the same line.
24
+ controls_input: >
25
+ Most common form control, text-based input fields.
26
+ Includes support for all HTML5 types:
27
+ text, password, datetime, datetime-local, date, month, time, week,
28
+ number, email, url, search, tel, and color.
29
+ Requires the use of a specified <code>type</code> at all times.
30
+ controls_select: >
31
+ Use the default option or specify a <code>multiple="multiple"</code>
32
+ to show multiple options at once.
33
+ controls_textarea: >
34
+ Form control which supports multiple lines of text.
35
+ Change <code>rows</code> attribute as necessary.
36
+
37
+ # layouts
38
+ default_styles: >
22
39
  Individual form controls receive styling, but without any required base
23
40
  class on the <code>&lt;form&gt;</code> or large changes in markup.
24
41
  Results in stacked, left-aligned labels on top of form controls.
25
- forms_search: >
26
- Add <code>.form-search</code> to the form and <code>.search-query</code>
27
- to the <code>&lt;input&gt;</code> for an extra-rounded text input.
28
- forms_inline: >
29
- Add <code>.form-inline</code> for left-aligned labels and inline-block
30
- controls for a compact layout.
31
- forms_horizontal: >
42
+ horizontal: >
32
43
  Right align labels and float them to the left to make them appear on
33
44
  the same line as controls.
34
45
  Requires the most markup changes from a default form:
@@ -38,20 +49,61 @@ en:
38
49
  <li>Add <code>.control-label</code> to the label</li>
39
50
  <li>Wrap any associated controls in <code>.controls</code> for proper alignment</li>
40
51
  </ul>
41
- form_controls_input: >
42
- Most common form control, text-based input fields.
43
- Includes support for all HTML5 types:
44
- text, password, datetime, datetime-local, date, month, time, week,
45
- number, email, url, search, tel, and color.
46
- Requires the use of a specified <code>type</code> at all times.
47
- form_controls_textarea: >
48
- Form control which supports multiple lines of text.
49
- Change <code>rows</code> attribute as necessary.
50
- form_controls_checkbox_and_radio: >
51
- Checkboxes are for selecting one or several options in a list while
52
- radios are for selecting one option from many.
53
- Add the <code>.inline</code> class to a series of checkboxes or radios
54
- for controls to appear on the same line.
55
- form_controls_select: >
56
- Use the default option or specify a <code>multiple="multiple"</code>
57
- to show multiple options at once.
52
+ inline: >
53
+ Add <code>.form-inline</code> for left-aligned labels and inline-block
54
+ controls for a compact layout.
55
+ search: >
56
+ Add <code>.form-search</code> to the form and <code>.search-query</code>
57
+ to the <code>&lt;input&gt;</code> for an extra-rounded text input.
58
+
59
+ images:
60
+ dropdown_icons: Dropdown in a button group.
61
+ form_fields: Icons in a form field.
62
+ icon_buttons: Button group in a button toolbar.
63
+ small_button: Small button with an icon.
64
+ placeholders: Default shapes for placeholder images.
65
+ navigation: Icons inside of navigation lists.
66
+
67
+ tables:
68
+ default_style: >
69
+ For basic styling&mdash;light padding and only horizontal
70
+ dividers&mdash;add the base class <code>.table</code> to
71
+ any <code>&lt;table&gt;</code>.
72
+ striped: >
73
+ <code>.table-striped</code>
74
+ adds zebra-striping to any table row within the
75
+ <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector
76
+ (not available in IE7-IE8).
77
+ bordered: >
78
+ <code>.table-bordered</code>
79
+ adds borders and rounded corners to the table.
80
+ hover: >
81
+ <code>.table-hover</code>
82
+ enables a hover state on table rows within a <code>&lt;tbody&gt;</code>.
83
+ condensed: >
84
+ <code>.table-condensed</code>
85
+ makes tables more compact by cutting cell padding in half.
86
+ row_classes: >
87
+ Use contextual classes to color table rows.
88
+
89
+ typography:
90
+ body_copy: >
91
+ Bootstrap's global default <code>font-size</code> is
92
+ <strong>14px</strong>, with a <code>line-height</code> of
93
+ <strong>20px</strong>. This is applied to the <code>&lt;body&gt;</code>
94
+ and all paragraphs. In addition, <code>&lt;p&gt;</code> (paragraphs)
95
+ receive a bottom margin of half their line-height (10px by default).
96
+ Make a paragraph stand out by adding <code>.lead</code>.
97
+
98
+ headings: >
99
+ All HTML headings, <code>&lt;h1&gt;</code> through
100
+ <code>&lt;h6&gt;</code> are available.
101
+
102
+ code_inline: >
103
+ Use <code>&lt;code&gt;</code> for inline snippets of code.
104
+ code_blocks: >
105
+ Use <code>&lt;pre&gt;</code> for multiple lines of code.
106
+ Be sure to escape any angle brackets in the code for proper rendering.
107
+ images_placeholders: >
108
+ Add classes to an <code>&lt;img&gt;</code> element to easily
109
+ style images in any project.
@@ -1,9 +1,25 @@
1
1
  module StyleGuide
2
2
  class Config
3
- attr_accessor :partial_paths
3
+ attr_reader :partial_paths
4
+
5
+ def self.style_guide_views_path
6
+ StyleGuide::Engine.root.join("app", "views", "style_guide")
7
+ end
8
+
9
+ def self.style_guide_views_directories
10
+ style_guide_views_path.children.select(&:directory?).reject { |d| d.basename.to_s == "style" }
11
+ end
4
12
 
5
13
  def initialize(options = {})
6
- @partial_paths = options[:partial_paths] || [StyleGuide::Engine.root.join("app/views/style_guide/bootstrap_base")]
14
+ @partial_paths = options[:partial_paths] || self.class.style_guide_views_directories
15
+ end
16
+
17
+ def partial_paths=(paths)
18
+ if paths.is_a?(Array)
19
+ @partial_paths = paths
20
+ else
21
+ @partial_paths = [paths]
22
+ end
7
23
  end
8
24
  end
9
25
  end
@@ -1,9 +1,12 @@
1
+ require "nokogiri"
2
+
1
3
  module StyleGuide
2
4
  class Partial
3
- attr_reader :path
5
+ attr_reader :path, :section
4
6
 
5
- def initialize(path)
7
+ def initialize(path, section)
6
8
  @path = path
9
+ @section = section
7
10
  end
8
11
 
9
12
  def id
@@ -15,7 +18,41 @@ module StyleGuide
15
18
  end
16
19
 
17
20
  def content
18
- @content || File.read(path)
21
+ @content ||= File.read(path)
22
+ end
23
+
24
+ def description
25
+ @description ||= begin
26
+ I18n.translate!(id, :scope => [:style_guide, section.id.to_sym])
27
+ rescue I18n::MissingTranslationData
28
+ nil
29
+ end
30
+ end
31
+
32
+ def classes
33
+ @classes ||= begin
34
+ parsed.css("[class]").reduce({}) do |output, tag|
35
+ output.tap do |tags|
36
+ tag["class"].split.each do |class_name|
37
+ tags[".#{class_name}"] = true
38
+ end
39
+ end
40
+ end.keys
41
+ end
42
+ end
43
+
44
+ def ids
45
+ @ids ||= parsed.css("[id]").map { |tag| %(##{tag["id"]}) }
46
+ end
47
+
48
+ def identifiers
49
+ ids + classes
50
+ end
51
+
52
+ private
53
+
54
+ def parsed
55
+ @parsed ||= Nokogiri::HTML.parse(content)
19
56
  end
20
57
  end
21
58
  end