shipyard-framework 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +21 -0
- data/README.md +52 -0
- data/Rakefile +6 -0
- data/app/views/shipyard/_alerts.slim +3 -0
- data/assets/icons/arrows/arrow-down.svg +3 -0
- data/assets/icons/gear.svg +3 -0
- data/assets/icons/plus.svg +3 -0
- data/assets/icons/x.svg +4 -0
- data/assets/javascripts/shipyard/alert.es6 +19 -0
- data/assets/javascripts/shipyard/core.es6 +3 -0
- data/assets/javascripts/shipyard/icon.es6 +50 -0
- data/assets/javascripts/shipyard.es6 +6 -0
- data/assets/stylesheets/_shipyard.sass +3 -0
- data/assets/stylesheets/shipyard/_components.sass +5 -0
- data/assets/stylesheets/shipyard/_core.sass +12 -0
- data/assets/stylesheets/shipyard/_utilities.sass +5 -0
- data/assets/stylesheets/shipyard/components/_alerts.sass +64 -0
- data/assets/stylesheets/shipyard/components/_boxes.sass +37 -0
- data/assets/stylesheets/shipyard/components/_buttons.sass +107 -0
- data/assets/stylesheets/shipyard/components/_empty.sass +15 -0
- data/assets/stylesheets/shipyard/components/_forms.sass +128 -0
- data/assets/stylesheets/shipyard/components/_icons.sass +54 -0
- data/assets/stylesheets/shipyard/components/_modals.sass +29 -0
- data/assets/stylesheets/shipyard/functions/_color.sass +9 -0
- data/assets/stylesheets/shipyard/mixins/_box-model.sass +6 -0
- data/assets/stylesheets/shipyard/mixins/_components.sass +82 -0
- data/assets/stylesheets/shipyard/mixins/_positioning.sass +12 -0
- data/assets/stylesheets/shipyard/mixins/_prefixed.sass +19 -0
- data/assets/stylesheets/shipyard/mixins/_responsive.sass +112 -0
- data/assets/stylesheets/shipyard/mixins/_selectors.sass +11 -0
- data/assets/stylesheets/shipyard/utilities/_animations.sass +11 -0
- data/assets/stylesheets/shipyard/utilities/_grid.sass +75 -0
- data/assets/stylesheets/shipyard/utilities/_positioning.sass +17 -0
- data/assets/stylesheets/shipyard/utilities/_reset.sass +11 -0
- data/assets/stylesheets/shipyard/utilities/_type.sass +161 -0
- data/assets/stylesheets/shipyard/variables/_color_utilities.sass +68 -0
- data/assets/stylesheets/shipyard/variables/_colors.scss +11 -0
- data/assets/stylesheets/shipyard/variables/_grid.scss +2 -0
- data/assets/stylesheets/shipyard/variables/_misc.scss +11 -0
- data/assets/stylesheets/shipyard/variables/_typography.scss +29 -0
- data/lib/shipyard/icons.rb +89 -0
- data/lib/shipyard/rails/alert_helper.rb +45 -0
- data/lib/shipyard/rails/button_helper.rb +37 -0
- data/lib/shipyard/rails/engine.rb +11 -0
- data/lib/shipyard/rails/icon_helper.rb +50 -0
- data/lib/shipyard/rails/layout_helpers.rb +34 -0
- data/lib/shipyard/rails/railtie.rb +24 -0
- data/lib/shipyard/version.rb +3 -0
- data/lib/shipyard.rb +65 -0
- data/shipyard.gemspec +27 -0
- 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,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
|
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: []
|