shipyard-framework 0.5.3 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +36 -0
  4. data/README.md +6 -15
  5. data/Rakefile +13 -3
  6. data/app/helpers/shipyard/alert_helper.rb +14 -11
  7. data/app/helpers/shipyard/icon_helper.rb +9 -3
  8. data/assets/javascripts/shipyard/alerts.es6 +13 -0
  9. data/assets/javascripts/shipyard/core.es6 +34 -1
  10. data/assets/javascripts/shipyard/hamburger.es6 +10 -0
  11. data/assets/javascripts/shipyard/scroll.es6 +12 -0
  12. data/assets/javascripts/shipyard.es6 +7 -4
  13. data/assets/stylesheets/shipyard/_components.sass +1 -0
  14. data/assets/stylesheets/shipyard/_core.sass +0 -1
  15. data/assets/stylesheets/shipyard/_utilities.sass +2 -0
  16. data/assets/stylesheets/shipyard/components/_alerts.sass +4 -0
  17. data/assets/stylesheets/shipyard/components/_boxes.sass +3 -3
  18. data/assets/stylesheets/shipyard/components/_buttons.sass +17 -21
  19. data/assets/stylesheets/shipyard/components/_code.sass +1 -0
  20. data/assets/stylesheets/shipyard/components/_hamburger.sass +2 -1
  21. data/assets/stylesheets/shipyard/components/_header.sass +60 -0
  22. data/assets/stylesheets/shipyard/components/_tables.sass +20 -0
  23. data/assets/stylesheets/shipyard/core/_typography.sass +1 -0
  24. data/assets/stylesheets/shipyard/mixins/_box-model.sass +3 -0
  25. data/assets/stylesheets/shipyard/{core → utilities}/_grid.sass +13 -4
  26. data/assets/stylesheets/shipyard/utilities/_margin.sass +7 -0
  27. data/assets/stylesheets/shipyard/utilities/_typography.sass +0 -8
  28. data/assets/stylesheets/shipyard/variables/_components.scss +12 -0
  29. data/assets/stylesheets/shipyard/variables/_misc.sass +1 -0
  30. data/ci/build.rb +5 -0
  31. data/ci/deploy +31 -0
  32. data/ci/jekyll +16 -0
  33. data/ci/percy +5 -6
  34. data/ci/setup +3 -0
  35. data/lib/shipyard-framework/icons.rb +18 -28
  36. data/lib/shipyard-framework/jekyll/hooks.rb +11 -0
  37. data/lib/shipyard-framework/jekyll/shipyard_css_classes.rb +16 -0
  38. data/lib/shipyard-framework/jekyll/shipyard_variables.rb +7 -0
  39. data/lib/shipyard-framework/jekyll/{alert_tag.rb → tags/alert_tag.rb} +2 -2
  40. data/lib/shipyard-framework/jekyll/{box_tag.rb → tags/box_tag.rb} +1 -1
  41. data/lib/shipyard-framework/jekyll/{button_tag.rb → tags/button_tag.rb} +1 -1
  42. data/lib/shipyard-framework/jekyll/tags/icon_tag.rb +20 -0
  43. data/lib/shipyard-framework/jekyll/{note_tag.rb → tags/note_tag.rb} +1 -1
  44. data/lib/shipyard-framework/jekyll/{shipyard_version_tag.rb → tags/shipyard_version_tag.rb} +0 -0
  45. data/lib/shipyard-framework/rails/railtie.rb +8 -4
  46. data/lib/shipyard-framework/version.rb +1 -1
  47. data/lib/shipyard-framework.rb +32 -7
  48. data/shipyard.gemspec +9 -8
  49. data/spec/helpers/alert_helper_spec.rb +10 -2
  50. data/spec/helpers/icon_helper_spec.rb +6 -6
  51. data/styleguide/Gemfile +2 -1
  52. data/styleguide/Gemfile.lock +38 -10
  53. data/styleguide/_assets/css/application.sass +9 -0
  54. data/styleguide/_assets/css/layout.sass +6 -0
  55. data/styleguide/{_sass → _assets/css}/views.sass +10 -6
  56. data/styleguide/_assets/js/application.es6 +2 -0
  57. data/styleguide/_assets/js/views/utilities/colors.es6 +21 -0
  58. data/styleguide/_config.yml +7 -0
  59. data/styleguide/_includes/page-heading.html +4 -0
  60. data/styleguide/_layouts/application.html +26 -9
  61. data/styleguide/_plugins/icon_item.rb +19 -0
  62. data/styleguide/components/alerts.md +12 -2
  63. data/styleguide/components/boxes.md +2 -2
  64. data/styleguide/components/{buttons.html → buttons.md} +11 -10
  65. data/styleguide/components/code.html +1 -1
  66. data/styleguide/components/empty-states.html +2 -2
  67. data/styleguide/components/forms.html +1 -1
  68. data/styleguide/components/icons.md +158 -0
  69. data/styleguide/components/{index.html → index.md} +5 -5
  70. data/styleguide/components/modals.html +2 -5
  71. data/styleguide/components/notes.md +2 -2
  72. data/styleguide/components/tables.md +29 -0
  73. data/styleguide/components/{tooltips.html → tooltips.md} +4 -7
  74. data/styleguide/index.md +27 -0
  75. data/styleguide/utilities/colors.md +25 -0
  76. data/styleguide/utilities/grid.md +152 -0
  77. data/styleguide/utilities/{index.html → index.md} +8 -5
  78. data/styleguide/utilities/{responsive.html → responsive.md} +6 -5
  79. data/styleguide/utilities/typography.html +1 -1
  80. metadata +113 -28
  81. data/assets/javascripts/shipyard/alert.es6 +0 -19
  82. data/assets/javascripts/shipyard/icon.es6 +0 -50
  83. data/ci/rspec +0 -1
  84. data/styleguide/_sass/layout.sass +0 -35
  85. data/styleguide/assets/css/application.sass +0 -10
  86. data/styleguide/components/grid.html +0 -44
  87. data/styleguide/index.html +0 -6
  88. data/styleguide/utilities/colors.html +0 -41
data/ci/deploy ADDED
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+ set -e # halt script on error
3
+
4
+ echo -e "\n\n************** Git Clone GH-Pages Branch **************"
5
+ if [[ $CI_NAME = "codeship" ]]
6
+ then
7
+ git clone git@github.com:codeship/shipyard.git --branch gh-pages --single-branch styleguide/_site
8
+ else
9
+ git clone https://github.com/codeship/shipyard.git --branch gh-pages --single-branch styleguide/_site
10
+ fi
11
+
12
+ echo -e "\n\n************** Jekyll Build **************"
13
+ cd styleguide
14
+ JEKYLL_ENV=production bundle exec jekyll build --verbose
15
+
16
+ echo -e "\n\n************** Commit & Push to GitHub Pages **************"
17
+ cd _site
18
+ git config user.email "${GITHUB_DEPLOY_USER_EMAIL}"
19
+ git config user.name "${GITHUB_DEPLOY_USER_NAME}"
20
+ git status
21
+ git add --all
22
+ git status
23
+
24
+ if [[ $CI_NAME = "codeship" ]]
25
+ then
26
+ git commit --allow-empty -m "Deploy to GitHub Pages: ${CI_COMMIT_ID} --skip-ci"
27
+ git push origin gh-pages
28
+ else
29
+ git commit --allow-empty -m "Dry Run Deploy: --skip-ci"
30
+ git push --dry-run origin gh-pages
31
+ fi
data/ci/jekyll ADDED
@@ -0,0 +1,16 @@
1
+ #!/bin/bash
2
+ set -e # halt script on error
3
+
4
+ echo -e "************** Changed to Styleguide Directory **************"
5
+ cd ./styleguide
6
+ pwd
7
+
8
+ echo -e "\n\n************** Jekyll Build **************"
9
+ JEKYLL_ENV=test bundle exec jekyll build --baseurl=''
10
+
11
+ echo -e "\n\n************** Change Back to the Root Directory **************"
12
+ cd ../
13
+ pwd
14
+
15
+ echo -e "\n\n************** HTML Proofer **************"
16
+ bundle exec htmlproofer ./styleguide/_site --disable-external --allow-hash-href --assume-extension --log-level :debug
data/ci/percy CHANGED
@@ -1,17 +1,16 @@
1
+ #!/bin/bash
2
+ set -e # halt script on error
3
+
1
4
  echo -e "************** Changed to Styleguide Directory **************"
2
5
  cd ./styleguide
3
6
  pwd
4
7
 
5
- echo -e "\n\n************** Bundle Install **************"
6
- gem install bundler --pre
7
- bundle install
8
-
9
8
  echo -e "\n\n************** Jekyll Build **************"
10
- bundle exec jekyll build --baseurl=''
9
+ JEKYLL_ENV=test bundle exec jekyll build --baseurl=''
11
10
 
12
11
  echo -e "\n\n************** Changed to Root Directory **************"
13
12
  cd ../
14
13
  pwd
15
14
 
16
15
  echo -e "\n\n************** Percy Snapshot **************"
17
- bundle exec percy snapshot --widths "375,1280" styleguide/_site/
16
+ bundle exec percy snapshot --widths "375,768,1280" styleguide/_site/
data/ci/setup CHANGED
@@ -1,3 +1,6 @@
1
+ #!/bin/bash
2
+
1
3
  rvm use $(cat .ruby-version)
2
4
  gem install bundler --pre
3
5
  bundle install
6
+ cd styleguide && gem install bundler --pre && bundle install && cd ..
@@ -1,41 +1,41 @@
1
+ require 'action_view'
2
+
1
3
  module Shipyard
2
4
  class Icons
3
5
  include ActionView::Helpers::SanitizeHelper
4
- include Singleton
5
6
  attr_reader :icons
6
7
  delegate :each, :find, to: :icons
7
8
  delegate :execute_if_updated, :execute, :updated?, to: :updater
8
9
 
9
- def initialize
10
- @path = "#{::Rails.root}/app/assets/icons/"
11
- @public = "#{::Rails.root}/public/assets"
12
- @fingerprint = ::Rails.application.config.try(:icons_version)
10
+ def initialize(icon_directory, output_directory, base_path = '')
11
+ @path = icon_directory
12
+ @public = output_directory
13
+ @base_path = base_path
13
14
  reload
14
15
  end
15
16
 
16
17
  def reload
17
18
  @icons = load_svgs.freeze
18
- save_external_svg_defs
19
- end
20
-
21
- def find_by(hash)
22
- icon = @icons.detect { |i| i[hash.keys.first] == hash.values.first }
23
- raise_error(hash.values.first) unless icon
24
- icon
19
+ @icons
25
20
  end
26
21
 
27
22
  def base_path
28
- if @fingerprint && !::Rails.env.development?
29
- "/assets/icons-#{@fingerprint}.svg"
30
- else
31
- '/assets/icons.svg'
32
- end
23
+ "#{@base_path}/assets/icons.svg"
33
24
  end
34
25
 
35
26
  def asset_path(svg_id)
36
27
  "#{base_path}##{svg_id}"
37
28
  end
38
29
 
30
+ def write
31
+ html = []
32
+ @icons.each do |icon|
33
+ html << svg_symbol(icon)
34
+ end
35
+ FileUtils.mkdir_p(@public) unless File.exists?(@public) || Dir.exists?(@public)
36
+ File.write("#{@public}/icons.svg", svg_template(html.join))
37
+ end
38
+
39
39
  private
40
40
 
41
41
  def load_svgs
@@ -54,16 +54,6 @@ module Shipyard
54
54
  end
55
55
  end
56
56
 
57
- def save_external_svg_defs
58
- html = []
59
- @icons.each do |icon|
60
- html << svg_symbol(icon)
61
- end
62
- Dir.mkdir(@public) unless File.exists?(@public) || Dir.exists?(@public)
63
- File.write("#{@public}/icons.svg", svg_template(html.join))
64
- File.write("#{@public}/icons-#{@fingerprint}.svg", svg_template(html.join)) if @fingerprint
65
- end
66
-
67
57
  def sanitize_svg(html)
68
58
  sanitize(html,
69
59
  tags: %w(g circle rect path line polyline polygon ellipse),
@@ -71,7 +61,7 @@ module Shipyard
71
61
  end
72
62
 
73
63
  def svg_symbol(icon)
74
- %(<g id="#{icon[:id]}">#{icon[:inner_html]}</g>)
64
+ %(<g id="#{icon[:id]}" viewBox="#{icon[:view_box]}">#{icon[:inner_html]}</g>)
75
65
  end
76
66
 
77
67
  def svg_template(html)
@@ -0,0 +1,11 @@
1
+ Jekyll::Hooks.register :site, :pre_render do |post|
2
+ $icons = Shipyard::Icons.new(
3
+ '_assets/icons/',
4
+ '_site/assets/',
5
+ post.config['baseurl']
6
+ )
7
+ end
8
+
9
+ Jekyll::Hooks.register :site, :post_write do |post|
10
+ $icons.write
11
+ end
@@ -0,0 +1,16 @@
1
+ module Shipyard
2
+ module Jekyll
3
+ class ShipyardCssClasses < Liquid::Tag
4
+ def initialize(tag_name, params, options)
5
+ super
6
+ end
7
+
8
+ def render(context)
9
+ cssClasses = []
10
+ cssClasses << "env-#{context['site']['env']}"
11
+ cssClasses << context['page']['path'].tr('/','-').gsub(/[\.][a-z]*/, '')
12
+ cssClasses.join ' '
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ module Jekyll
2
+ class ShipyardVariables < Generator
3
+ def generate(site)
4
+ site.config['env'] = ENV['JEKYLL_ENV'] || 'development'
5
+ end
6
+ end
7
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../../../app/helpers/shipyard/alert_helper'
1
+ require_relative '../../../../app/helpers/shipyard/alert_helper'
2
2
 
3
3
  module Shipyard
4
4
  module Jekyll
@@ -7,7 +7,7 @@ module Shipyard
7
7
 
8
8
  def initialize(tag_name, type, options)
9
9
  super
10
- @type = type.tr(':','').to_sym unless type.blank?
10
+ @type = type.strip.tr(':','').to_sym unless type.blank?
11
11
  end
12
12
 
13
13
  def render(context)
@@ -1,4 +1,4 @@
1
- require_relative '../../../app/helpers/shipyard/box_helper'
1
+ require_relative '../../../../app/helpers/shipyard/box_helper'
2
2
 
3
3
  module Shipyard
4
4
  module Jekyll
@@ -1,4 +1,4 @@
1
- require_relative '../../../app/helpers/shipyard/button_helper'
1
+ require_relative '../../../../app/helpers/shipyard/button_helper'
2
2
 
3
3
  module Shipyard
4
4
  module Jekyll
@@ -0,0 +1,20 @@
1
+ require_relative '../../../../app/helpers/shipyard/icon_helper'
2
+
3
+ module Shipyard
4
+ module Jekyll
5
+ class Icon < Liquid::Tag
6
+ include Shipyard::IconHelper
7
+
8
+ def initialize(tag_name, params, options)
9
+ super
10
+ @args = params.strip.split(',')
11
+ @name = eval(@args[0])
12
+ @options = @args[1] ? eval("{#{@args[1]}}") : {}
13
+ end
14
+
15
+ def render(context)
16
+ icon @name, @options
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../../../app/helpers/shipyard/note_helper'
1
+ require_relative '../../../../app/helpers/shipyard/note_helper'
2
2
 
3
3
  module Shipyard
4
4
  module Jekyll
@@ -2,10 +2,14 @@ module Shipyard
2
2
  module Rails
3
3
  class Railtie < ::Rails::Railtie
4
4
  initializer 'shipyard.reload_cached_icons' do
5
- if ::Rails.env.development?
6
- ::Rails.application.reloaders << Shipyard::Icons.instance
7
- ::Rails.application.config.to_prepare { Shipyard::Icons.instance.execute_if_updated }
8
- end
5
+ # TODO: Use rake task or hook into asset pipeline instead?
6
+ # rake shipyard:icons["#{::Rails.root}/app/assets/icons/", "#{::Rails.root}/public/assets"]
7
+ $icons = Shipyard::Icons.new(
8
+ "#{::Rails.root}/app/assets/icons/",
9
+ "#{::Rails.root}/public/assets"
10
+ )
11
+ $icons.write
12
+ ::Rails.application.reloaders << $icons
9
13
  end
10
14
  end
11
15
  end
@@ -1,3 +1,3 @@
1
1
  module Shipyard
2
- VERSION = '0.5.3'
2
+ VERSION = '0.5.5'
3
3
  end
@@ -8,7 +8,12 @@ module Shipyard
8
8
  register_rails_engine
9
9
  elsif sprockets?
10
10
  register_sprockets
11
- elsif jekyll?
11
+ end
12
+ register_icons
13
+ load_icons if rspec?
14
+
15
+ if jekyll?
16
+ register_jekyll_hooks
12
17
  register_jekyll_tags
13
18
  end
14
19
 
@@ -43,6 +48,10 @@ module Shipyard
43
48
  defined?(::Sprockets)
44
49
  end
45
50
 
51
+ def rspec?
52
+ defined?(::RSpec)
53
+ end
54
+
46
55
  def rails?
47
56
  defined?(::Rails)
48
57
  end
@@ -56,8 +65,11 @@ module Shipyard
56
65
  ::Sass.load_paths << stylesheets_path
57
66
  end
58
67
 
59
- def register_rails_engine
68
+ def register_icons
60
69
  require 'shipyard-framework/icons'
70
+ end
71
+
72
+ def register_rails_engine
61
73
  require 'shipyard-framework/rails/engine'
62
74
  require 'shipyard-framework/rails/railtie'
63
75
  end
@@ -67,17 +79,26 @@ module Shipyard
67
79
  Sprockets.append_path(javascripts_path)
68
80
  end
69
81
 
82
+ def register_jekyll_hooks
83
+ require 'shipyard-framework/jekyll/hooks'
84
+ end
85
+
70
86
  def register_jekyll_tags
71
- require 'shipyard-framework/jekyll/button_tag'
72
- require 'shipyard-framework/jekyll/box_tag'
73
- require 'shipyard-framework/jekyll/note_tag'
74
- require 'shipyard-framework/jekyll/alert_tag'
75
- require 'shipyard-framework/jekyll/shipyard_version_tag'
87
+ require 'shipyard-framework/jekyll/shipyard_variables'
88
+ require 'shipyard-framework/jekyll/tags/button_tag'
89
+ require 'shipyard-framework/jekyll/tags/icon_tag'
90
+ require 'shipyard-framework/jekyll/tags/box_tag'
91
+ require 'shipyard-framework/jekyll/tags/note_tag'
92
+ require 'shipyard-framework/jekyll/tags/alert_tag'
93
+ require 'shipyard-framework/jekyll/tags/shipyard_version_tag'
94
+ require 'shipyard-framework/jekyll/shipyard_css_classes'
76
95
  Liquid::Template.register_tag('btn', Shipyard::Jekyll::Button)
96
+ Liquid::Template.register_tag('icon', Shipyard::Jekyll::Icon)
77
97
  Liquid::Template.register_tag('box', Shipyard::Jekyll::Box)
78
98
  Liquid::Template.register_tag('note', Shipyard::Jekyll::Note)
79
99
  Liquid::Template.register_tag('alert', Shipyard::Jekyll::Alert)
80
100
  Liquid::Template.register_tag('shipyard_version', Shipyard::Jekyll::ShipyardVersion)
101
+ Liquid::Template.register_tag('shipyard_css_classes', Shipyard::Jekyll::ShipyardCssClasses)
81
102
  end
82
103
 
83
104
  def register_helpers
@@ -85,6 +106,10 @@ module Shipyard
85
106
  require_relative "../#{file}"
86
107
  end
87
108
  end
109
+
110
+ def load_icons
111
+ $icons = Shipyard::Icons.new 'assets/icons/', 'tmp/assets/'
112
+ end
88
113
  end
89
114
  end
90
115
 
data/shipyard.gemspec CHANGED
@@ -5,22 +5,23 @@ require 'shipyard-framework/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'shipyard-framework'
7
7
  spec.version = Shipyard::VERSION
8
- spec.authors = ['Shipyard']
9
- spec.email = ['ryanwilke@gmail.com']
8
+ spec.authors = ['Codeship']
9
+ spec.email = ['design@codeship.com']
10
10
  spec.summary = 'A lightweight CSS framework for developing mobile-first projects in Ruby on Rails.'
11
- spec.homepage = 'https://github.com/shipyard-framework'
11
+ spec.homepage = 'https://github.com/codeship/shipyard'
12
12
  spec.license = 'MIT'
13
13
 
14
14
  # Rails Dependencies
15
- # spec.add_runtime_dependency 'sassc-rails', '~> 1.3', '>= 1.3.0'
16
- # spec.add_runtime_dependency 'slim-rails', '~> 3.1', '>= 3.1.0'
17
- # spec.add_runtime_dependency 'sassc', '~> 1.11.4'
18
15
  spec.add_runtime_dependency 'actionview', '~> 5.0'
16
+ spec.add_runtime_dependency 'sprockets-es6', '~> 0.9.2'
19
17
 
20
18
  spec.add_development_dependency 'bundler', '~> 1.15'
21
- spec.add_development_dependency 'sass', '~> 3.5', '>= 3.5.1'
19
+ spec.add_development_dependency 'sass', '~> 3.5', '>= 3.5.2'
22
20
  spec.add_development_dependency 'rspec', '~> 3.6'
23
- spec.add_development_dependency 'percy-cli', '~> 1.2.9'
21
+ spec.add_development_dependency 'percy-cli', '~> 1.2', '>= 1.2.9'
22
+ spec.add_development_dependency 'html-proofer', '~> 3.7', '>= 3.7.4'
23
+ spec.add_development_dependency 'jekyll', '~> 3.6'
24
+ spec.add_development_dependency 'jekyll-assets', '~> 2.3'
24
25
 
25
26
  spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
27
  spec.files = `git ls-files`.split("\n")
@@ -5,15 +5,23 @@ RSpec.describe Shipyard::AlertHelper, type: :helper do
5
5
 
6
6
  it 'should return a default alert' do
7
7
  expect(flash_alert { 'test' }).to match(
8
- %r{<div role="alert" data-shipyard="alert" v-show="visible" class="alert"><p class="alert-txt">test</p></div>}
8
+ %r{<div role="alert" class="alert"><p class="alert-txt">test</p></div>}
9
+ )
10
+ end
11
+
12
+ xit 'should return a dismissible alert' do
13
+ expect(flash_alert(:dismissible) { 'test' }).to match(
14
+ %r{<div role="alert" data-shipyard="alert" class="alert"><p class="alert-txt">test</p></div>}
9
15
  )
10
16
  end
11
17
 
12
18
  it 'should return all alert types' do
13
19
  %w(info success warning error).each do |type|
14
20
  expect(flash_alert(type.to_sym) { type }).to match(
15
- %r{<div role="alert" data-shipyard="alert" v-show="visible" class="alert alert-#{type}"><p class="alert-txt">#{type}</p></div>}
21
+ %r{<div role="alert" class="alert alert-#{type}"><p class="alert-txt">#{type}</p></div>}
16
22
  )
17
23
  end
18
24
  end
25
+
26
+ # TODO: Mock the $icons variable for the helper.
19
27
  end
@@ -3,19 +3,19 @@ require 'spec_helper'
3
3
  RSpec.describe Shipyard::IconHelper, type: :helper do
4
4
  include Shipyard::IconHelper
5
5
 
6
- xit 'should return an svg gear icon with the svg use tag.' do
6
+ it 'should return an svg gear icon with the svg use tag.' do
7
7
  expect(icon(:gear)).to match(/<svg class="icon icon-gear icon-outline"(.+?)><use(.+?)>/)
8
8
  end
9
9
 
10
- xit 'should return an svg fear icon without the svg use tag.' do
11
- expect(icon('gear')).to match(/<svg class="icon icon-gear icon-outline"(.+?)>/)
10
+ it 'should return an svg gear icon without the svg use tag.' do
11
+ expect(icon('gear')).to match(/<svg class="icon icon-gear icon-outline"(.+?)><path(.+?)>/)
12
12
  end
13
13
 
14
- xit 'should return an svg logo icon with a prefixed class name' do
14
+ it 'should return an svg gear icon with a prefixed class name' do
15
15
  expect(icon(:gear, prefix: 'header')).to match(/<svg class="icon icon-gear icon-outline header-icon header-icon-gear" (.+?)><use(.+?)>/)
16
16
  end
17
17
 
18
- xit 'should return an svg logo icon with a custom CSS class' do
19
- expect(icon(:logo, class: 'shipyard-icon')).to match(/<svg class="icon icon-gear icon-outline shipyard-icon" (.+?)><use(.+?)>/)
18
+ it 'should return an svg gear icon with a custom CSS class' do
19
+ expect(icon(:gear, class: 'shipyard-icon')).to match(/<svg class="icon icon-gear icon-outline shipyard-icon" (.+?)><use(.+?)>/)
20
20
  end
21
21
  end
data/styleguide/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :jekyll_plugins do
4
- gem 'jekyll'
4
+ gem 'jekyll', '~> 3.6.0'
5
+ gem 'jekyll-assets', '~> 2.3.2'
5
6
  gem 'shipyard-framework', path: '../'
6
7
  end
@@ -3,6 +3,7 @@ PATH
3
3
  specs:
4
4
  shipyard-framework (0.5.3)
5
5
  actionview (~> 5.0)
6
+ sprockets-es6 (~> 0.9.2)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
@@ -18,36 +19,54 @@ GEM
18
19
  i18n (~> 0.7)
19
20
  minitest (~> 5.1)
20
21
  tzinfo (~> 1.1)
21
- addressable (2.5.1)
22
- public_suffix (~> 2.0, >= 2.0.2)
22
+ addressable (2.5.2)
23
+ public_suffix (>= 2.0.2, < 4.0)
24
+ babel-source (5.8.35)
25
+ babel-transpiler (0.7.0)
26
+ babel-source (>= 4.0, < 6)
27
+ execjs (~> 2.0)
23
28
  builder (3.2.3)
24
29
  colorator (1.1.0)
25
30
  concurrent-ruby (1.0.5)
31
+ crass (1.0.2)
26
32
  erubi (1.6.1)
33
+ execjs (2.7.0)
34
+ extras (0.3.0)
35
+ forwardable-extended (~> 2.5)
36
+ fastimage (2.1.0)
27
37
  ffi (1.9.18)
28
38
  forwardable-extended (2.6.0)
29
39
  i18n (0.8.6)
30
- jekyll (3.5.1)
40
+ jekyll (3.6.0)
31
41
  addressable (~> 2.4)
32
42
  colorator (~> 1.0)
33
43
  jekyll-sass-converter (~> 1.0)
34
44
  jekyll-watch (~> 1.1)
35
- kramdown (~> 1.3)
45
+ kramdown (~> 1.14)
36
46
  liquid (~> 4.0)
37
47
  mercenary (~> 0.3.3)
38
48
  pathutil (~> 0.9)
39
- rouge (~> 1.7)
49
+ rouge (>= 1.7, < 3)
40
50
  safe_yaml (~> 1.0)
51
+ jekyll-assets (2.3.2)
52
+ concurrent-ruby (~> 1.0)
53
+ extras (~> 0.2)
54
+ fastimage (~> 2.0, >= 1.8)
55
+ jekyll (~> 3.1, >= 3.0)
56
+ pathutil (>= 0.8)
57
+ rack (~> 1.6)
58
+ sprockets (~> 3.3, < 3.8)
41
59
  jekyll-sass-converter (1.5.0)
42
60
  sass (~> 3.4)
43
61
  jekyll-watch (1.5.0)
44
62
  listen (~> 3.0, < 3.1)
45
- kramdown (1.14.0)
63
+ kramdown (1.15.0)
46
64
  liquid (4.0.0)
47
65
  listen (3.0.8)
48
66
  rb-fsevent (~> 0.9, >= 0.9.4)
49
67
  rb-inotify (~> 0.9, >= 0.9.7)
50
- loofah (2.0.3)
68
+ loofah (2.1.1)
69
+ crass (~> 1.0.2)
51
70
  nokogiri (>= 1.5.9)
52
71
  mercenary (0.3.6)
53
72
  mini_portile2 (2.3.0)
@@ -56,7 +75,8 @@ GEM
56
75
  mini_portile2 (~> 2.3.0)
57
76
  pathutil (0.14.0)
58
77
  forwardable-extended (~> 2.6)
59
- public_suffix (2.0.5)
78
+ public_suffix (3.0.0)
79
+ rack (1.6.8)
60
80
  rails-dom-testing (2.0.3)
61
81
  activesupport (>= 4.2.0)
62
82
  nokogiri (>= 1.6)
@@ -65,13 +85,20 @@ GEM
65
85
  rb-fsevent (0.10.2)
66
86
  rb-inotify (0.9.10)
67
87
  ffi (>= 0.5.0, < 2)
68
- rouge (1.11.1)
88
+ rouge (2.2.1)
69
89
  safe_yaml (1.0.4)
70
90
  sass (3.5.1)
71
91
  sass-listen (~> 4.0.0)
72
92
  sass-listen (4.0.0)
73
93
  rb-fsevent (~> 0.9, >= 0.9.4)
74
94
  rb-inotify (~> 0.9, >= 0.9.7)
95
+ sprockets (3.7.1)
96
+ concurrent-ruby (~> 1.0)
97
+ rack (> 1, < 3)
98
+ sprockets-es6 (0.9.2)
99
+ babel-source (>= 5.8.11)
100
+ babel-transpiler
101
+ sprockets (>= 3.0.0)
75
102
  thread_safe (0.3.6)
76
103
  tzinfo (1.2.3)
77
104
  thread_safe (~> 0.1)
@@ -80,7 +107,8 @@ PLATFORMS
80
107
  ruby
81
108
 
82
109
  DEPENDENCIES
83
- jekyll
110
+ jekyll (~> 3.6.0)
111
+ jekyll-assets (~> 2.3.2)
84
112
  shipyard-framework!
85
113
 
86
114
  BUNDLED WITH
@@ -0,0 +1,9 @@
1
+ $font-family: "museo-sans-rounded", "Museo Sans Rounded", Arial, sans-serif
2
+ $font-monospace: 'Roboto Mono', monospace
3
+ @import shipyard
4
+ @import shipyard/components/header
5
+ @import url('https://use.typekit.net/wel6tpj.css')
6
+ @import url('https://fonts.googleapis.com/css?family=Roboto+Mono')
7
+
8
+ @import layout
9
+ @import views
@@ -0,0 +1,6 @@
1
+ body
2
+ line-height: 1.6
3
+ +respond-to(padding-top, (x0: 70px, x1: 90px, x2: 100px))
4
+
5
+ footer
6
+ padding: 30px 0
@@ -1,11 +1,14 @@
1
- // Global Styles
2
- p, h1, h2, h3
3
- code
4
- margin: 0 5px
1
+ // Code Styles
2
+ code
3
+ li &, p &, h1 &, h2 &, h3 &
4
+ margin: 0 3px
5
5
  @extend .code-inline
6
+ div.highlighter-rouge &
7
+ @extend .code-block
8
+ margin: 15px 0
6
9
 
7
10
  hr
8
- margin: 50px 0
11
+ +respond-to(margin, (x0: 30px 0, x1: 40px 0, x2: 50px 0))
9
12
 
10
13
  // Utilities: Colors
11
14
  +component('shade')
@@ -21,7 +24,7 @@ hr
21
24
  &:not(:last-child)
22
25
  border-right: 10px solid transparent
23
26
  &-box
24
- height: 168px
27
+ height: 165px
25
28
  padding: 5px
26
29
  white-space: nowrap
27
30
  &:hover
@@ -41,6 +44,7 @@ hr
41
44
  +when('light:hover')
42
45
  color: $gray-darker
43
46
  &-text
47
+ line-height: 40px
44
48
  transition: 300ms color ease
45
49
  +when('box:hover')
46
50
  color: rgba(#fff,.7)
@@ -0,0 +1,2 @@
1
+ //= require shipyard
2
+ //= require views/utilities/colors
@@ -0,0 +1,21 @@
1
+ class ShadeList extends Shipyard {
2
+ constructor (el) {
3
+ super(el)
4
+
5
+ this.el.forEach((list) => {
6
+ list.querySelectorAll('[shade-color]').forEach((shade) => {
7
+ shade.innerHTML = this.rgbToHex(this.css(shade, 'background-color'))
8
+ })
9
+ })
10
+ }
11
+
12
+ rgbToHex (rgb) {
13
+ if (rgb.match(/rgba/)) return '#';
14
+ let hex = rgb.substr(4, rgb.indexOf(')') - 4).split(',').map(
15
+ (color) => String('0' + parseInt(color).toString(16)).slice(-2)
16
+ ).join('');
17
+ return `#${hex}`;
18
+ }
19
+ }
20
+
21
+ new ShadeList('[shade-list]')