shipyard-framework 0.2.2

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.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +52 -0
  8. data/Rakefile +6 -0
  9. data/app/views/shipyard/_alerts.slim +3 -0
  10. data/assets/icons/arrows/arrow-down.svg +3 -0
  11. data/assets/icons/gear.svg +3 -0
  12. data/assets/icons/plus.svg +3 -0
  13. data/assets/icons/x.svg +4 -0
  14. data/assets/javascripts/shipyard/alert.es6 +19 -0
  15. data/assets/javascripts/shipyard/core.es6 +3 -0
  16. data/assets/javascripts/shipyard/icon.es6 +50 -0
  17. data/assets/javascripts/shipyard.es6 +6 -0
  18. data/assets/stylesheets/_shipyard.sass +3 -0
  19. data/assets/stylesheets/shipyard/_components.sass +5 -0
  20. data/assets/stylesheets/shipyard/_core.sass +12 -0
  21. data/assets/stylesheets/shipyard/_utilities.sass +5 -0
  22. data/assets/stylesheets/shipyard/components/_alerts.sass +64 -0
  23. data/assets/stylesheets/shipyard/components/_boxes.sass +37 -0
  24. data/assets/stylesheets/shipyard/components/_buttons.sass +107 -0
  25. data/assets/stylesheets/shipyard/components/_empty.sass +15 -0
  26. data/assets/stylesheets/shipyard/components/_forms.sass +128 -0
  27. data/assets/stylesheets/shipyard/components/_icons.sass +54 -0
  28. data/assets/stylesheets/shipyard/components/_modals.sass +29 -0
  29. data/assets/stylesheets/shipyard/functions/_color.sass +9 -0
  30. data/assets/stylesheets/shipyard/mixins/_box-model.sass +6 -0
  31. data/assets/stylesheets/shipyard/mixins/_components.sass +82 -0
  32. data/assets/stylesheets/shipyard/mixins/_positioning.sass +12 -0
  33. data/assets/stylesheets/shipyard/mixins/_prefixed.sass +19 -0
  34. data/assets/stylesheets/shipyard/mixins/_responsive.sass +112 -0
  35. data/assets/stylesheets/shipyard/mixins/_selectors.sass +11 -0
  36. data/assets/stylesheets/shipyard/utilities/_animations.sass +11 -0
  37. data/assets/stylesheets/shipyard/utilities/_grid.sass +75 -0
  38. data/assets/stylesheets/shipyard/utilities/_positioning.sass +17 -0
  39. data/assets/stylesheets/shipyard/utilities/_reset.sass +11 -0
  40. data/assets/stylesheets/shipyard/utilities/_type.sass +161 -0
  41. data/assets/stylesheets/shipyard/variables/_color_utilities.sass +68 -0
  42. data/assets/stylesheets/shipyard/variables/_colors.scss +11 -0
  43. data/assets/stylesheets/shipyard/variables/_grid.scss +2 -0
  44. data/assets/stylesheets/shipyard/variables/_misc.scss +11 -0
  45. data/assets/stylesheets/shipyard/variables/_typography.scss +29 -0
  46. data/lib/shipyard/icons.rb +89 -0
  47. data/lib/shipyard/rails/alert_helper.rb +45 -0
  48. data/lib/shipyard/rails/button_helper.rb +37 -0
  49. data/lib/shipyard/rails/engine.rb +11 -0
  50. data/lib/shipyard/rails/icon_helper.rb +50 -0
  51. data/lib/shipyard/rails/layout_helpers.rb +34 -0
  52. data/lib/shipyard/rails/railtie.rb +24 -0
  53. data/lib/shipyard/version.rb +3 -0
  54. data/lib/shipyard.rb +65 -0
  55. data/shipyard.gemspec +27 -0
  56. metadata +181 -0
@@ -0,0 +1,11 @@
1
+ $colors: (
2
+ gray: (base: #788594, light: #bac5d2, lighter: #dfe6eb, lightest: #f2f5f7, dark: #313a44, darkest: #1e252c),
3
+ green: (base: #3acc7c, light: #97ffc6, lightest: #b5ffd6, dark: #2c995d, darkest: #1d663e),
4
+ blue: (base: #1ca1e3, light: #5eb9e6, lightest: #9ed8f5, dark: #0075b0, darkest: #004d73),
5
+ teal: (base: #20a5a8, light: #6ab7b9, lightest: #b2dbdc, dark: #0e6e70, darkest: #00494b),
6
+ red: (base: #e06158, light: #f7a09e, lightest: #ffc6cb, dark: #b13b39, darkest: #892120),
7
+ yellow: (base: #ffca49, light: #ffd87e, lightest: #ffe7b1, dark: #99782d, darker: #66501e, darkest: #33280f),
8
+ orange: (base: #ff9f49, light: #ffba7d, lightest: #ffd6b1, dark: #cc7f3a, darkest: #995f2c),
9
+ purple: (base: #bf84ff, light: lighten(#bf84ff, 10%), lighter: lighten(#bf84ff, 15%), lightest: lighten(#bf84ff, 20%), dark: darken(#bf84ff, 10%), darker: darken(#bf84ff, 15%), darkest: darken(#bf84ff, 20%)),
10
+ coral: (base: #f9657a, light: lighten(#f9657a, 10%), lighter: lighten(#f9657a, 15%), lightest: lighten(#f9657a, 20%), dark: darken(#f9657a, 10%), darker: darken(#f9657a, 15%), darkest: darken(#f9657a, 20%))
11
+ );
@@ -0,0 +1,2 @@
1
+ $breakpoints: (x1: 770px, x2: 920px, x3: 1200px, x4: 1600px);
2
+ $margins: (x0: 10px, x1: 20px, x2: 30px, x3: 30px, x4: 40px);
@@ -0,0 +1,11 @@
1
+ $bg-color: $gray-lightest;
2
+
3
+ $border-radius: 5px;
4
+
5
+ $border-color: darken($bg-color, 12%);
6
+ $border-color-dark: darken($border-color, 10%);
7
+ $border-color-darker: darken($border-color, 14%);
8
+ $border-color-darkest: darken($border-color, 18%);
9
+ $border-color-light: darken($bg-color, 6%);
10
+ $border-color-lighter: darken($bg-color, 4%);
11
+ $border-color-lightest: darken($bg-color, 2%);
@@ -0,0 +1,29 @@
1
+ // Font
2
+ $font-family: 'museo-sans-rounded', 'Museo Sans Rounded', Arial, sans-serif;
3
+
4
+ // Font: Weights
5
+ $normal: 300;
6
+ $italic: 400;
7
+ $medium: 500;
8
+ $medium-italic: 600;
9
+ $bold: 700;
10
+ $bold-italic: 800;
11
+
12
+ $font-sizes: (xxs: 12px, xs: 13px, sm: 14px, md: 16px, lg: 18px, xl: 20px, xxl: 22px, xxxl: 24px);
13
+ $font-size: map-get($font-sizes, md);
14
+ $font-size-xxxl: map-get($font-sizes, xxxl);
15
+ $font-size-xxl: map-get($font-sizes, xxl);
16
+ $font-size-xl: map-get($font-sizes, xl);
17
+ $font-size-lg: map-get($font-sizes, lg);
18
+ $font-size-sm: map-get($font-sizes, sm);
19
+ $font-size-xs: map-get($font-sizes, xs);
20
+ $font-size-xxs: map-get($font-sizes, xxs);
21
+ $font: $normal 16px / 1.6 $font-family;
22
+ $text-color: $gray-dark;
23
+ $text-color-disabled: lighten($gray, 15%);
24
+ $text-color-lightest: lighten($gray, 10%);
25
+ $text-color-lighter: lighten($gray, 5%);
26
+ $text-color-light: $gray;
27
+ $text-color-darkest: $gray-dark;
28
+ $text-color-darker: lighten($gray-dark, 4%);
29
+ $text-color-dark: lighten($gray-dark, 7%);
@@ -0,0 +1,89 @@
1
+ module Shipyard
2
+ class Icons
3
+ include ActionView::Helpers::SanitizeHelper
4
+ include Singleton
5
+ attr_reader :icons
6
+ delegate :each, :find, to: :icons
7
+ delegate :execute_if_updated, :execute, :updated?, to: :updater
8
+
9
+ def initialize
10
+ @path = "#{::Rails.root}/app/assets/icons/"
11
+ @public = "#{::Rails.root}/public/assets"
12
+ reload
13
+ end
14
+
15
+ def reload
16
+ @icons = load_svgs.freeze
17
+ save_external_svg_defs
18
+ end
19
+
20
+ def find_by(hash)
21
+ icon = @icons.detect { |i| i[hash.keys.first] == hash.values.first }
22
+ raise_error(hash.values.first) unless icon
23
+ icon
24
+ end
25
+
26
+ private
27
+
28
+ def load_svgs
29
+ files.sort.map do |file|
30
+ html = File.read(file)
31
+ {
32
+ file: file,
33
+ path: file.gsub(@path, ''),
34
+ id: File.basename(file).gsub(/.svg/, ''),
35
+ symbol: File.basename(file).gsub(/.svg/, '').underscore.to_sym,
36
+ view_box: html[/viewBox="(.*?)"/, 1],
37
+ outer_html: html.gsub(/\n|\s+\s+/, ''),
38
+ inner_html: sanitize_svg(html).gsub(/\n|\s+\s+/, ''),
39
+ is_outlined: html.include?('non-scaling-stroke')
40
+ }
41
+ end
42
+ end
43
+
44
+ def save_external_svg_defs
45
+ html = []
46
+ @icons.each do |icon|
47
+ html << svg_group(icon)
48
+ end
49
+ Dir.mkdir(@public) unless File.exists?(@public) || Dir.exists?(@public)
50
+ File.write("#{@public}/icons.svg", svg_template(html.join))
51
+ end
52
+
53
+ def sanitize_svg(html)
54
+ sanitize(html,
55
+ tags: %w(g circle rect path line polyline),
56
+ attributes: %w(x x1 x2 y y1 y2 d cx cy r vector-effect points class))
57
+ end
58
+
59
+ def svg_group(icon)
60
+ %(<g id="#{icon[:id]}">#{icon[:inner_html]}</g>)
61
+ end
62
+
63
+ def svg_template(html)
64
+ %(
65
+ <?xml version="1.0" standalone="no"?>
66
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
67
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
68
+ <defs>#{html}</defs>
69
+ </svg>
70
+ ).gsub(/\n|\s+\s+/, '')
71
+ end
72
+
73
+ def files
74
+ files = Dir[Pathname(Shipyard.icons_path).join('**/*.svg')]
75
+ files.concat Dir[Pathname(@path).join('**/*.svg')]
76
+ end
77
+
78
+ def raise_error(name)
79
+ return unless ::Rails.env.development? || ::Rails.env.test?
80
+ raise "Missing icon #{name}"
81
+ end
82
+
83
+ def updater
84
+ @updater ||= ActiveSupport::FileUpdateChecker.new([], @path => [:svg]) do
85
+ reload
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,45 @@
1
+ module Shipyard
2
+ module Rails
3
+ module AlertHelper
4
+ def flash_alert(*args, &block)
5
+ alert_txt = capture(&block) if block_given?
6
+ options = {}
7
+ options[:role] ||= 'alert'
8
+ options[:data] ||= {}
9
+ options[:data][:shipyard] = 'alert'
10
+ options['v-show'] = 'visible'
11
+ class_list = ['alert']
12
+
13
+ args.each do |arg|
14
+ if arg.is_a? Symbol
15
+ class_list << "alert-#{alert_type(arg)}"
16
+ elsif arg.is_a? Hash
17
+ options = options.merge(arg) if arg.is_a?(Hash)
18
+ else
19
+ alert_txt = arg
20
+ end
21
+ end
22
+
23
+ options[:class] = "#{class_list.join(' ')} #{options[:class]}"
24
+
25
+ content_tag :div, options do
26
+ concat content_tag(:p, raw(alert_txt), class: 'alert-txt')
27
+ concat content_tag(:button,
28
+ icon('x', class: 'alert-close-icon icon-outline-inverse center'),
29
+ class: 'alert-close v-center',
30
+ '@click': 'close')
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def alert_type(type)
37
+ case type.to_sym
38
+ when :notice then :success
39
+ when :alert then :error
40
+ else type.to_s.tr('_', '-')
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,37 @@
1
+ module Shipyard
2
+ module Rails
3
+ module ButtonHelper
4
+ def btn(name, *args, &block)
5
+ if block_given?
6
+ args << name
7
+ name = capture(&block)
8
+ end
9
+
10
+ # Save any options that were passed in.
11
+ options = {}
12
+ args.each do |arg|
13
+ options = options.merge(arg) if arg.is_a?(Hash)
14
+ end
15
+
16
+ # Output the appropriate button.
17
+ if options.key?(:href)
18
+ link_to name, options[:href], btn_options(args, options)
19
+ else
20
+ content_tag :button, name, btn_options(args, options)
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def btn_options(args, options)
27
+ options[:class] ||= ''
28
+ options[:class] += ' btn'
29
+ args.each do |arg|
30
+ options[:class] += " btn-#{arg.to_s.tr('_', '-')}" if arg.is_a?(Symbol)
31
+ end
32
+ options[:class].strip!
33
+ options.except(:href)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,11 @@
1
+ module Shipyard
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ initializer 'shipyard.assets.precompile', group: :all do |app|
5
+ %w(stylesheets javascripts).each do |sub|
6
+ app.config.assets.paths << root.join('assets', sub).to_s
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ module Shipyard
2
+ module Rails
3
+ module IconHelper
4
+ include ActionView::Context
5
+ include ActionView::Helpers::TagHelper
6
+
7
+ def icon(name, options={})
8
+ if name.is_a? Symbol
9
+ svg = Icons.instance.find_by(symbol: name)
10
+ svg_use_tag svg, options
11
+ else
12
+ svg = Icons.instance.find_by(id: name)
13
+ svg_tag svg, options
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def svg_options(svg, options)
20
+ options[:class] = svg_classes(svg, options)
21
+ options[:viewBox] ||= svg[:view_box]
22
+ options[:preserveAspectRatio] ||= 'xMinYMin meet'
23
+ options.delete(:prefix)
24
+ options
25
+ end
26
+
27
+ def svg_classes(svg, options)
28
+ css_classes = []
29
+ css_classes << 'icon'
30
+ css_classes << "icon-#{svg[:id]}"
31
+ css_classes << 'icon-outline' if svg[:is_outlined] == true
32
+ css_classes << "#{options[:prefix]}-icon-#{svg[:id]}" if options[:prefix]
33
+ css_classes << options[:class]
34
+ css_classes.join(' ').strip
35
+ end
36
+
37
+ def svg_use_tag(svg, options)
38
+ content_tag :svg, svg_options(svg, options) do
39
+ content_tag :use, nil, 'xlink:href' => "/assets/icons.svg##{svg[:id]}"
40
+ end
41
+ end
42
+
43
+ def svg_tag(svg, options)
44
+ html = svg[:inner_html]
45
+ html = html.gsub(/class="([\s\w-]+)"/, "class=\"#{options[:prefix]}-\\1 \\1\"") if options[:prefix]
46
+ content_tag :svg, raw(html), svg_options(svg, options)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,34 @@
1
+ module Shipyard
2
+ module Rails
3
+ module LayoutHelpers
4
+ def layout_classes(layout_name)
5
+ "#{layout_name}-layout #{current_page} #{'legacy-content' unless content_for? :new_layout}"
6
+ end
7
+
8
+ def current_page
9
+ "#{controller.controller_name.dasherize}-#{controller.action_name}"
10
+ end
11
+
12
+ def current_route
13
+ "#{controller.controller_name}##{controller.action_name}"
14
+ end
15
+
16
+ def current_route_is?(routes)
17
+ routes.tr(' ', '').split(',').include? current_route
18
+ end
19
+
20
+ def content(options={}, &block)
21
+ type, options = options, {} if options.is_a? Symbol
22
+ options[:class] ||= ''
23
+ options[:class] += type ? " content-#{type.to_s.dasherize}" : ' content'
24
+ options[:class] += " #{current_page}-content"
25
+ options[:data] ||= {}
26
+ options[:data][:content] = current_page
27
+ content_tag :div, options do
28
+ concat render(partial: 'shipyard/alerts')
29
+ concat capture(&block)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ require 'shipyard/rails/layout_helpers'
2
+ require 'shipyard/rails/icon_helper'
3
+ require 'shipyard/rails/button_helper'
4
+ require 'shipyard/rails/alert_helper'
5
+
6
+ module Shipyard
7
+ module Rails
8
+ class Railtie < ::Rails::Railtie
9
+ initializer 'shipyard.view_helpers' do
10
+ ActionView::Base.send :include, LayoutHelpers
11
+ ActionView::Base.send :include, IconHelper
12
+ ActionView::Base.send :include, ButtonHelper
13
+ ActionView::Base.send :include, AlertHelper
14
+ end
15
+
16
+ initializer 'shipyard.reload_cached_icons' do
17
+ if ::Rails.env.development?
18
+ ::Rails.application.reloaders << Shipyard::Icons.instance
19
+ ::Rails.application.config.to_prepare { Shipyard::Icons.instance.execute_if_updated }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,3 @@
1
+ module Shipyard
2
+ VERSION = '0.2.2'
3
+ end
data/lib/shipyard.rb ADDED
@@ -0,0 +1,65 @@
1
+ require 'shipyard/version'
2
+
3
+ module Shipyard
4
+ class << self
5
+ def load!
6
+ if rails?
7
+ register_rails_engine
8
+ elsif sprockets?
9
+ register_sprockets
10
+ end
11
+
12
+ configure_sass
13
+ end
14
+
15
+ # Paths
16
+ def gem_path
17
+ @gem_path ||= File.expand_path '..', File.dirname(__FILE__)
18
+ end
19
+
20
+ def stylesheets_path
21
+ File.join assets_path, 'stylesheets'
22
+ end
23
+
24
+ def javascripts_path
25
+ File.join assets_path, 'javascripts'
26
+ end
27
+
28
+ def icons_path
29
+ File.join assets_path, 'icons'
30
+ end
31
+
32
+ def assets_path
33
+ @assets_path ||= File.join gem_path, 'assets'
34
+ end
35
+
36
+ private
37
+
38
+ def sprockets?
39
+ defined?(::Sprockets)
40
+ end
41
+
42
+ def rails?
43
+ defined?(::Rails)
44
+ end
45
+
46
+ def configure_sass
47
+ require 'sass'
48
+
49
+ ::Sass.load_paths << stylesheets_path
50
+ end
51
+
52
+ def register_rails_engine
53
+ require 'shipyard/icons'
54
+ require 'shipyard/rails/engine'
55
+ require 'shipyard/rails/railtie'
56
+ end
57
+
58
+ def register_sprockets
59
+ Sprockets.append_path(stylesheets_path)
60
+ Sprockets.append_path(javascripts_path)
61
+ end
62
+ end
63
+ end
64
+
65
+ Shipyard.load!
data/shipyard.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'shipyard/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'shipyard-framework'
7
+ spec.version = Shipyard::VERSION
8
+ spec.authors = ['Shipyard']
9
+ spec.email = ['ryanwilke@gmail.com']
10
+ spec.summary = 'A lightweight CSS framework for developing mobile-first projects in Ruby on Rails.'
11
+ spec.homepage = 'https://github.com/shipyard-framework'
12
+ spec.license = 'MIT'
13
+
14
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
15
+ f.match(%r{^(test|spec|features)/})
16
+ end
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'sassc-rails', '~> 1.3', '>= 1.3.0'
22
+ spec.add_runtime_dependency 'slim-rails', '~> 3.1', '>= 3.1.0'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.13'
25
+ spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'rspec', '~> 3.0'
27
+ end
metadata ADDED
@@ -0,0 +1,181 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shipyard-framework
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Shipyard
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-07-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sassc-rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: slim-rails
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.1.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.1.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.13'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.13'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '10.0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '10.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '3.0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.0'
95
+ description:
96
+ email:
97
+ - ryanwilke@gmail.com
98
+ executables: []
99
+ extensions: []
100
+ extra_rdoc_files: []
101
+ files:
102
+ - ".gitignore"
103
+ - ".rspec"
104
+ - CODE_OF_CONDUCT.md
105
+ - Gemfile
106
+ - LICENSE.txt
107
+ - README.md
108
+ - Rakefile
109
+ - app/views/shipyard/_alerts.slim
110
+ - assets/icons/arrows/arrow-down.svg
111
+ - assets/icons/gear.svg
112
+ - assets/icons/plus.svg
113
+ - assets/icons/x.svg
114
+ - assets/javascripts/shipyard.es6
115
+ - assets/javascripts/shipyard/alert.es6
116
+ - assets/javascripts/shipyard/core.es6
117
+ - assets/javascripts/shipyard/icon.es6
118
+ - assets/stylesheets/_shipyard.sass
119
+ - assets/stylesheets/shipyard/_components.sass
120
+ - assets/stylesheets/shipyard/_core.sass
121
+ - assets/stylesheets/shipyard/_utilities.sass
122
+ - assets/stylesheets/shipyard/components/_alerts.sass
123
+ - assets/stylesheets/shipyard/components/_boxes.sass
124
+ - assets/stylesheets/shipyard/components/_buttons.sass
125
+ - assets/stylesheets/shipyard/components/_empty.sass
126
+ - assets/stylesheets/shipyard/components/_forms.sass
127
+ - assets/stylesheets/shipyard/components/_icons.sass
128
+ - assets/stylesheets/shipyard/components/_modals.sass
129
+ - assets/stylesheets/shipyard/functions/_color.sass
130
+ - assets/stylesheets/shipyard/mixins/_box-model.sass
131
+ - assets/stylesheets/shipyard/mixins/_components.sass
132
+ - assets/stylesheets/shipyard/mixins/_positioning.sass
133
+ - assets/stylesheets/shipyard/mixins/_prefixed.sass
134
+ - assets/stylesheets/shipyard/mixins/_responsive.sass
135
+ - assets/stylesheets/shipyard/mixins/_selectors.sass
136
+ - assets/stylesheets/shipyard/utilities/_animations.sass
137
+ - assets/stylesheets/shipyard/utilities/_grid.sass
138
+ - assets/stylesheets/shipyard/utilities/_positioning.sass
139
+ - assets/stylesheets/shipyard/utilities/_reset.sass
140
+ - assets/stylesheets/shipyard/utilities/_type.sass
141
+ - assets/stylesheets/shipyard/variables/_color_utilities.sass
142
+ - assets/stylesheets/shipyard/variables/_colors.scss
143
+ - assets/stylesheets/shipyard/variables/_grid.scss
144
+ - assets/stylesheets/shipyard/variables/_misc.scss
145
+ - assets/stylesheets/shipyard/variables/_typography.scss
146
+ - lib/shipyard.rb
147
+ - lib/shipyard/icons.rb
148
+ - lib/shipyard/rails/alert_helper.rb
149
+ - lib/shipyard/rails/button_helper.rb
150
+ - lib/shipyard/rails/engine.rb
151
+ - lib/shipyard/rails/icon_helper.rb
152
+ - lib/shipyard/rails/layout_helpers.rb
153
+ - lib/shipyard/rails/railtie.rb
154
+ - lib/shipyard/version.rb
155
+ - shipyard.gemspec
156
+ homepage: https://github.com/shipyard-framework
157
+ licenses:
158
+ - MIT
159
+ metadata: {}
160
+ post_install_message:
161
+ rdoc_options: []
162
+ require_paths:
163
+ - lib
164
+ required_ruby_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ requirements: []
175
+ rubyforge_project:
176
+ rubygems_version: 2.5.1
177
+ signing_key:
178
+ specification_version: 4
179
+ summary: A lightweight CSS framework for developing mobile-first projects in Ruby
180
+ on Rails.
181
+ test_files: []