docks_theme_api 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.babelrc +4 -0
- data/.editorconfig +8 -0
- data/.eslintrc +115 -0
- data/.gitignore +24 -0
- data/.rubocop.yml +20 -0
- data/.travis.yml +16 -0
- data/Gemfile +4 -0
- data/README.md +5 -0
- data/Rakefile +3 -0
- data/assets/images/icons.svg +63 -0
- data/assets/scripts/coffeescript/pattern_library_helpers.coffee +8 -0
- data/assets/scripts/javascript/pattern_library_helpers.js +11 -0
- data/assets/scripts/pattern_library.js +10380 -0
- data/assets/scripts/pattern_library_demo.js +0 -0
- data/assets/styles/less/pattern-library-helpers.less +103 -0
- data/assets/styles/pattern-library-demo.css +1882 -0
- data/assets/styles/pattern-library.css +1882 -0
- data/assets/styles/sass/pattern-library-helpers.sass +90 -0
- data/assets/styles/scss/pattern-library-helpers.scss +99 -0
- data/assets/styles/stylus/pattern-library-helpers.styl +90 -0
- data/assets/templates/erb/demo.erb +26 -0
- data/assets/templates/erb/layouts/demo.erb +17 -0
- data/assets/templates/erb/layouts/pattern.erb +76 -0
- data/assets/templates/erb/partials/sidebar.erb +124 -0
- data/assets/templates/erb/partials/symbols/class.erb +1 -0
- data/assets/templates/erb/partials/symbols/demo.erb +40 -0
- data/assets/templates/erb/partials/symbols/factory.erb +70 -0
- data/assets/templates/erb/partials/symbols/function.erb +103 -0
- data/assets/templates/erb/partials/symbols/mixin.erb +62 -0
- data/assets/templates/erb/partials/symbols/variable.erb +59 -0
- data/assets/templates/erb/pattern.erb +102 -0
- data/assets/templates/haml/demo.haml +14 -0
- data/assets/templates/haml/layouts/demo.haml +6 -0
- data/assets/templates/haml/layouts/pattern.haml +38 -0
- data/assets/templates/haml/partials/sidebar.haml +68 -0
- data/assets/templates/haml/partials/symbols/class.haml +1 -0
- data/assets/templates/haml/partials/symbols/demo.haml +23 -0
- data/assets/templates/haml/partials/symbols/factory.haml +38 -0
- data/assets/templates/haml/partials/symbols/function.haml +54 -0
- data/assets/templates/haml/partials/symbols/mixin.haml +31 -0
- data/assets/templates/haml/partials/symbols/variable.haml +22 -0
- data/assets/templates/haml/pattern.haml +54 -0
- data/assets/templates/slim/demo.slim +24 -0
- data/assets/templates/slim/layouts/demo.slim +5 -0
- data/assets/templates/slim/layouts/pattern.slim +48 -0
- data/assets/templates/slim/partials/sidebar.slim +112 -0
- data/assets/templates/slim/partials/symbols/class.slim +1 -0
- data/assets/templates/slim/partials/symbols/demo.slim +30 -0
- data/assets/templates/slim/partials/symbols/factory.slim +57 -0
- data/assets/templates/slim/partials/symbols/function.slim +81 -0
- data/assets/templates/slim/partials/symbols/mixin.slim +45 -0
- data/assets/templates/slim/partials/symbols/variable.slim +35 -0
- data/assets/templates/slim/pattern.slim +63 -0
- data/docks_config.rb +32 -0
- data/docks_theme_api.gemspec +37 -0
- data/gulpfile.js +88 -0
- data/karma.conf.js +6 -0
- data/lib/docks_theme_api/components/base_component.rb +99 -0
- data/lib/docks_theme_api/components/code_block_component.rb +10 -0
- data/lib/docks_theme_api/components/popover_component.rb +15 -0
- data/lib/docks_theme_api/components/table_component.rb +34 -0
- data/lib/docks_theme_api/components/tablist_component.rb +11 -0
- data/lib/docks_theme_api/components.rb +21 -0
- data/lib/docks_theme_api/helpers/ui_helper.rb +69 -0
- data/lib/docks_theme_api/theme.rb +21 -0
- data/lib/docks_theme_api.rb +1 -0
- data/package.json +60 -0
- data/source/behaviors/filterable/filterable.coffee +353 -0
- data/source/behaviors/filterable/filterable.js +0 -0
- data/source/behaviors/filterable/filterable.scss +34 -0
- data/source/behaviors/filterable/package.json +3 -0
- data/source/behaviors/index.js +0 -0
- data/source/components/avatar/avatar.erb +20 -0
- data/source/components/avatar/avatar.js +142 -0
- data/source/components/avatar/avatar.scss +200 -0
- data/source/components/avatar/avatar_container.erb +13 -0
- data/source/components/avatar/package.json +3 -0
- data/source/components/avatar/spec/avatar_spec.js +81 -0
- data/source/components/badge/badge.scss +158 -0
- data/source/components/button/button.scss +213 -0
- data/source/components/card/card.scss +32 -0
- data/source/components/code_block/code-block.scss +353 -0
- data/source/components/code_block/code_block.erb +95 -0
- data/source/components/code_block/code_block.js +444 -0
- data/source/components/code_block/package.json +3 -0
- data/source/components/code_block/spec/code_block_spec.js +10 -0
- data/source/components/demo/demo.js +244 -0
- data/source/components/demo/demo.scss +90 -0
- data/source/components/demo/package.json +3 -0
- data/source/components/exploded/exploded.erb +25 -0
- data/source/components/exploded/exploded.js +694 -0
- data/source/components/exploded/exploded.scss +166 -0
- data/source/components/exploded/package.json +3 -0
- data/source/components/field/field.js +24 -0
- data/source/components/field/field.scss +101 -0
- data/source/components/field/package.json +3 -0
- data/source/components/header/header.scss +33 -0
- data/source/components/iframe/iframe.erb +12 -0
- data/source/components/iframe/iframe.js +381 -0
- data/source/components/iframe/package.json +3 -0
- data/source/components/index.js +37 -0
- data/source/components/inline_group/inline-group.scss +14 -0
- data/source/components/internal_link/internal_link.js +49 -0
- data/source/components/internal_link/package.json +3 -0
- data/source/components/list/list.scss +230 -0
- data/source/components/modal/modal.coffee +84 -0
- data/source/components/modal/modal.erb +19 -0
- data/source/components/modal/modal.js +0 -0
- data/source/components/modal/modal.scss +57 -0
- data/source/components/modal/package.json +3 -0
- data/source/components/notice/notice.scss +48 -0
- data/source/components/popover/package.json +3 -0
- data/source/components/popover/popover.coffee +562 -0
- data/source/components/popover/popover.erb +21 -0
- data/source/components/popover/popover.js +0 -0
- data/source/components/popover/popover.scss +139 -0
- data/source/components/range/range.scss +78 -0
- data/source/components/resizable/package.json +3 -0
- data/source/components/resizable/resizable.erb +30 -0
- data/source/components/resizable/resizable.js +250 -0
- data/source/components/resizable/resizable.scss +245 -0
- data/source/components/resizable/size_buttons.js +249 -0
- data/source/components/scroll_container/package.json +3 -0
- data/source/components/scroll_container/scroll-container.scss +4 -0
- data/source/components/scroll_container/scroll_container.js +24 -0
- data/source/components/section/section.scss +99 -0
- data/source/components/select/package.json +3 -0
- data/source/components/select/select.erb +21 -0
- data/source/components/select/select.js +35 -0
- data/source/components/select/select.scss +163 -0
- data/source/components/table/package.json +3 -0
- data/source/components/table/table.erb +16 -0
- data/source/components/table/table.js +351 -0
- data/source/components/table/table.scss +236 -0
- data/source/components/tablist/package.json +3 -0
- data/source/components/tablist/tablist.erb +13 -0
- data/source/components/tablist/tablist.js +246 -0
- data/source/components/tablist/tablist.scss +191 -0
- data/source/components/tablist/tablist_panel.erb +14 -0
- data/source/components/tablist/tablist_tab.erb +20 -0
- data/source/components/toggle/package.json +3 -0
- data/source/components/toggle/toggle.erb +11 -0
- data/source/components/toggle/toggle.js +211 -0
- data/source/components/toggle/toggle_container.erb +30 -0
- data/source/components/vertical_spacer/vertical-spacer.scss +3 -0
- data/source/components/vertical_stack/vertical-stack.scss +19 -0
- data/source/components/xray/package.json +3 -0
- data/source/components/xray/xray.erb +50 -0
- data/source/components/xray/xray.js +123 -0
- data/source/components/xray/xray.scss +79 -0
- data/source/foundation/app/app.js +15 -0
- data/source/foundation/app/package.json +3 -0
- data/source/pattern-library-demo.scss +13 -0
- data/source/pattern-library.scss +13 -0
- data/source/pattern_library.js +8 -0
- data/source/pattern_library_demo.js +8 -0
- data/source/structures/index.js +11 -0
- data/source/structures/sidebar/package.json +3 -0
- data/source/structures/sidebar/sidebar.js +69 -0
- data/source/structures/sidebar/sidebar.scss +79 -0
- data/source/utilities/builder/builder.js +138 -0
- data/source/utilities/builder/package.json +3 -0
- data/source/utilities/client/client.js +7 -0
- data/source/utilities/client/package.json +3 -0
- data/source/utilities/colors/colors.scss +112 -0
- data/source/utilities/defaults/defaults.scss +38 -0
- data/source/utilities/dom_cache/dom_cache.js +24 -0
- data/source/utilities/dom_cache/package.json +3 -0
- data/source/utilities/events/events.js +25 -0
- data/source/utilities/events/package.json +3 -0
- data/source/utilities/font_sizes/font-sizes.scss +85 -0
- data/source/utilities/foundation/a11y.scss +10 -0
- data/source/utilities/foundation/base.scss +29 -0
- data/source/utilities/foundation/icon.scss +114 -0
- data/source/utilities/foundation/layout.scss +67 -0
- data/source/utilities/foundation/page.scss +39 -0
- data/source/utilities/foundation/type.scss +208 -0
- data/source/utilities/functions/functions.scss +127 -0
- data/source/utilities/keycodes/keycodes.js +23 -0
- data/source/utilities/keycodes/package.json +3 -0
- data/source/utilities/markup/markup.js +90 -0
- data/source/utilities/markup/package.json +3 -0
- data/source/utilities/media/media.scss +172 -0
- data/source/utilities/mixins/mixins.scss +89 -0
- data/source/utilities/naming_convention/naming_convention.js +3 -0
- data/source/utilities/naming_convention/package.json +3 -0
- data/source/utilities/numbers/numbers.js +14 -0
- data/source/utilities/numbers/package.json +3 -0
- data/source/utilities/painting/package.json +3 -0
- data/source/utilities/painting/painting.js +7 -0
- data/source/utilities/pattern/package.json +3 -0
- data/source/utilities/pattern/pattern.js +50 -0
- data/source/utilities/query_string/package.json +3 -0
- data/source/utilities/query_string/query_string.js +24 -0
- data/source/utilities/template/package.json +3 -0
- data/source/utilities/template/template.js +10 -0
- data/source/utilities/text_range/package.json +3 -0
- data/source/utilities/text_range/text_range.js +30 -0
- data/source/utilities/ui_events/package.json +3 -0
- data/source/utilities/ui_events/ui_events.js +85 -0
- data/source/utilities/variables/variables.scss +18 -0
- data/source/utilities/z_indexes/z-indexes.scss +88 -0
- data/source/vendor/array_includes.js +28 -0
- data/source/vendor/highlight.js +1142 -0
- data/source/vendor/index.js +1 -0
- data/source/vendor/matrix.js +399 -0
- data/source/vendor/query_string.js +66 -0
- data/spec/assets/.eslintrc +9 -0
- data/spec/assets/spec_fixture.js +33 -0
- data/spec/assets/spec_helper.js +19 -0
- data/spec/lib/components/base_component_spec.rb +156 -0
- data/spec/lib/components_spec.rb +30 -0
- data/spec/lib/helpers/ui_helper_spec.rb +62 -0
- data/spec/lib/theme_spec.rb +25 -0
- data/spec/spec_helper.rb +15 -0
- data/tasks/gulp/.eslintrc +6 -0
- data/tasks/gulp/browser_sync.js +8 -0
- data/tasks/gulp/code_quality/scripts.js +10 -0
- data/tasks/gulp/config/index.js +116 -0
- data/tasks/gulp/minify/scripts.js +13 -0
- data/tasks/gulp/minify/styles.js +13 -0
- data/tasks/gulp/pattern_library/index.js +5 -0
- data/tasks/gulp/pattern_library/scripts.js +10 -0
- data/tasks/gulp/pattern_library/styles.js +10 -0
- data/tasks/gulp/scripts.js +8 -0
- data/tasks/gulp/spec/scripts.js +11 -0
- data/tasks/gulp/styles.js +17 -0
- data/tasks/gulp/utilities/babel/relative_require.js +22 -0
- data/tasks/gulp/utilities/babel/spec_helper.js +20 -0
- data/tasks/gulp/utilities/browserify_bundler.js +22 -0
- data/tasks/gulp/utilities/handle_errors.js +13 -0
- data/tasks/gulp/watch.js +9 -0
- data/tasks/rake/rspec.rake +7 -0
- data/tasks/rake/rubocop.rake +8 -0
- data/tasks/rake/templates.rake +50 -0
- metadata +470 -0
@@ -0,0 +1,103 @@
|
|
1
|
+
<div class="section" id="<%= function.symbol_id %>" data-private="<%= function.private? %>">
|
2
|
+
<header>
|
3
|
+
<div class="inline-group">
|
4
|
+
<div class="inline-group__item">
|
5
|
+
<h3 class="type type--heading type--heading-3">
|
6
|
+
<span class="type--code"><%= function.name %></span>
|
7
|
+
</h3>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<% if function.private? || function.deprecated %>
|
11
|
+
<div class="inline-group__item">
|
12
|
+
<div class="badge__container">
|
13
|
+
<% if function.private? %>
|
14
|
+
<span class="badge badge--standalone badge--secret">private</span>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% if function.deprecated %>
|
18
|
+
<span class="badge badge--standalone badge--warning">deprecated</span>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
</header>
|
25
|
+
|
26
|
+
<div class="type-container"><%= function.description %></div>
|
27
|
+
|
28
|
+
<%= docks_code_block(code: function.signature, language: function.source.language_code, full_width?: true) %>
|
29
|
+
|
30
|
+
<% unless (aliases = function.fetch(:aliases, [])).empty? %>
|
31
|
+
<h4 class="type type--heading type--heading-4">Aliases</h4>
|
32
|
+
|
33
|
+
<% aliases.each do |an_alias| %>
|
34
|
+
<code class="type--code"><%= an_alias %></code>
|
35
|
+
<% end %>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
<% unless (requires = function.fetch(:requires, [])).empty? %>
|
39
|
+
<h4 class="type type--heading type--heading-4">Requires</h4>
|
40
|
+
|
41
|
+
<% requires.each do |a_require| %>
|
42
|
+
<a href="<%= docks_path(a_require) %>"><code class="type--code"><%= a_require %></code></a>
|
43
|
+
<% end %>
|
44
|
+
<% end %>
|
45
|
+
|
46
|
+
<% unless (params = function.fetch(:params, [])).empty? %>
|
47
|
+
<h4 class="type type--heading type--heading-4">Parameters</h4>
|
48
|
+
|
49
|
+
<% params.each do |param| %>
|
50
|
+
<h5 class="type type--heading type--heading-5">
|
51
|
+
<span class="type--code"><%= param.name %></span>
|
52
|
+
<span class="badge"><%= param.types.first.name %><%= "[]" if param.types.first.array %></span>
|
53
|
+
|
54
|
+
<% if param.multiple %>
|
55
|
+
<span class="badge">Multiple</span>
|
56
|
+
<% end %>
|
57
|
+
</h5>
|
58
|
+
|
59
|
+
<div class="type-container type-container--small"><%= param.description %></div>
|
60
|
+
|
61
|
+
<% unless (properties = param.properties || []).empty? %>
|
62
|
+
<% docks_table do %>
|
63
|
+
<thead class="table__header">
|
64
|
+
<tr class="table__row">
|
65
|
+
<th class="table__cell">Name</th>
|
66
|
+
<th class="table__cell">Description</th>
|
67
|
+
<th class="table__cell">Types</th>
|
68
|
+
<th class="table__cell table__cell--centered">Default</th>
|
69
|
+
</tr>
|
70
|
+
</thead>
|
71
|
+
|
72
|
+
<tbody class="table__body">
|
73
|
+
<% properties.each do |property| %>
|
74
|
+
<tr class="table__row">
|
75
|
+
<td class="table__cell"><code class="type--code"><%= property.name %></code></td>
|
76
|
+
<td class="table__cell">
|
77
|
+
<div class="type-container type-container--small"><%= property.description %></div>
|
78
|
+
</td>
|
79
|
+
<td class="table__cell"><%= (type = property.types && property.types.first) ? "<span class='type--code'>#{type}</span>" : "Anything" %></td>
|
80
|
+
<td class="table__cell table__cell--centered"><%= (default = property.default) ? "<span class='type--code'>#{default}</span>" : "—" %></td>
|
81
|
+
</tr>
|
82
|
+
<% end %>
|
83
|
+
</tbody>
|
84
|
+
<% end %>
|
85
|
+
<% end %>
|
86
|
+
<% end %>
|
87
|
+
<% end %>
|
88
|
+
|
89
|
+
<h4 class="type type--heading type--heading-4">Returns</h4>
|
90
|
+
<% if return_types = function.returns && function.returns.types %>
|
91
|
+
<a href="<%= docks_path(return_types.first.name, language: function.source.language_code) %>"><code class="type--code"><%= return_types.first %></code></a>
|
92
|
+
<% else %>
|
93
|
+
<p class="type type--paragraph">Nothing</p>
|
94
|
+
<% end %>
|
95
|
+
|
96
|
+
<% unless (examples = function.fetch(:examples, [])).empty? %>
|
97
|
+
<h4 class="type type--heading type--heading-4"><%= "Example".pluralize(examples.length) %></h4>
|
98
|
+
|
99
|
+
<% examples.each do |example| %>
|
100
|
+
<%= docks_code_block code: example.code, language: example.language, condensed?: true %>
|
101
|
+
<% end %>
|
102
|
+
<% end %>
|
103
|
+
</div>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<div class="section" id="<%= mixin.symbol_id %>" data-private="<%= mixin.private? %>">
|
2
|
+
<header>
|
3
|
+
<div class="inline-group">
|
4
|
+
<div class="inline-group__item">
|
5
|
+
<h3 class="type type--heading type--heading-3">
|
6
|
+
<span class="type--code"><%= mixin.name %></span>
|
7
|
+
</h3>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<% if mixin.private? || mixin.deprecated %>
|
11
|
+
<div class="inline-group__item">
|
12
|
+
<div class="badge__container">
|
13
|
+
<% if mixin.private? %>
|
14
|
+
<span class="badge badge--standalone badge--secret">private</span>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% if mixin.deprecated %>
|
18
|
+
<span class="badge badge--standalone badge--warning">deprecated</span>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
</header>
|
25
|
+
|
26
|
+
<div class="type-container"><%= mixin.description %></div>
|
27
|
+
|
28
|
+
<%= docks_code_block code: mixin.signature, language: mixin.source.language_code, id: "mixin--#{mixin.name}", full_width?: true %>
|
29
|
+
|
30
|
+
<% unless (aliases = mixin.fetch(:aliases, [])).empty? %>
|
31
|
+
<h4 class="type type--heading type--heading-4">Aliases</h4>
|
32
|
+
|
33
|
+
<% aliases.each do |an_alias| %>
|
34
|
+
<code class="type--code"><%= an_alias %></code>
|
35
|
+
<% end %>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
<% unless (params = mixin.fetch(:params, [])).empty? %>
|
39
|
+
<h4 class="type type--heading type--heading-4">Parameters</h4>
|
40
|
+
|
41
|
+
<% params.each do |param| %>
|
42
|
+
<h5 class="type type--heading type--heading-5">
|
43
|
+
<span class="type--code"><%= param.name %></span>
|
44
|
+
<span class="badge"><%= param.types.first.name %><%= "[]" if param.types.first.array %></span>
|
45
|
+
|
46
|
+
<% if param.multiple %>
|
47
|
+
<span class="badge">Multiple</span>
|
48
|
+
<% end %>
|
49
|
+
</h5>
|
50
|
+
|
51
|
+
<div class="type-container type-container--small"><%= param.description %></div>
|
52
|
+
<% end %>
|
53
|
+
<% end %>
|
54
|
+
|
55
|
+
<% unless (examples = mixin.fetch(:examples, [])).empty? %>
|
56
|
+
<h4 class="type type--heading type--heading-4"><%= "Example".pluralize(examples.length) %></h4>
|
57
|
+
|
58
|
+
<% examples.each do |example| %>
|
59
|
+
<%= docks_code_block code: example.code, language: example.language, condensed?: true %>
|
60
|
+
<% end %>
|
61
|
+
<% end %>
|
62
|
+
</div>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<div class="section" id="<%= variable.symbol_id %>" data-private="<%= variable.private? %>">
|
2
|
+
<header>
|
3
|
+
<div class="inline-group">
|
4
|
+
<div class="inline-group__item">
|
5
|
+
<h3 class="type type--heading type--heading-3">
|
6
|
+
<span class="type--code"><%= variable.name %></span>
|
7
|
+
</h3>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<% if variable.private? || variable.deprecated %>
|
11
|
+
<div class="inline-group__item">
|
12
|
+
<div class="badge__container">
|
13
|
+
<% if variable.private? %>
|
14
|
+
<span class="badge badge--standalone badge--secret">private</span>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% if variable.deprecated %>
|
18
|
+
<span class="badge badge--standalone badge--warning">deprecated</span>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
</header>
|
25
|
+
|
26
|
+
<div class="type-container"><%= variable.description %></div>
|
27
|
+
|
28
|
+
<% if type = variable.type %>
|
29
|
+
<h4 class="type type--heading type--heading-4">Type</h4>
|
30
|
+
|
31
|
+
<a href="<%= docks_path(type, language: variable.source.language_code) %>"><code class="type--code"><%= type %></code></a>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<% unless (used_by = variable.fetch(:used_by, [])).empty? %>
|
35
|
+
<h4 class="type type--heading type--heading-4">Used By</h4>
|
36
|
+
|
37
|
+
<% used_by.each do |user| %>
|
38
|
+
<a href="<%= docks_path(user, language: variable.source.language_code) %>"><code class="type--code"><%= user %></code></a>
|
39
|
+
<% end %>
|
40
|
+
<% end %>
|
41
|
+
|
42
|
+
<% { "properties" => "variable", "methods" => "function" }.each do |prop, partial| %>
|
43
|
+
<% unless (props = variable.send(prop.to_sym)).empty? %>
|
44
|
+
<h4 class="type type--heading type--heading-4"><%= prop.capitalize %></h4>
|
45
|
+
|
46
|
+
<% props.each do |a_prop| %>
|
47
|
+
<% locals = {} %>
|
48
|
+
<% locals[partial.to_sym] = a_prop %>
|
49
|
+
|
50
|
+
<%= render partial: "symbols/#{partial}", locals: locals %>
|
51
|
+
<% end %>
|
52
|
+
<% end %>
|
53
|
+
<% end %>
|
54
|
+
|
55
|
+
<% if value = variable.value %>
|
56
|
+
<h4 class="type type--heading type--heading-4">Value</h4>
|
57
|
+
<code class="type--code"><%= value %></code>
|
58
|
+
<% end %>
|
59
|
+
</div>
|
@@ -0,0 +1,102 @@
|
|
1
|
+
<% render_everything %>
|
2
|
+
|
3
|
+
<div class="content">
|
4
|
+
<% if deprecation = @pattern.deprecated %>
|
5
|
+
<div class="notice">
|
6
|
+
<h3 class="type type--heading type--heading-3">Deprecated as of <strong><%= deprecation.version %></strong></h3>
|
7
|
+
<div class="type-container"><%= deprecation.description %></div>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<pre><%#= @pattern.to_yaml %></pre>
|
12
|
+
<pre><%#= @pattern_library.to_yaml %></pre>
|
13
|
+
|
14
|
+
<% if description = @pattern.description %>
|
15
|
+
<div class="type-container">
|
16
|
+
<%= description %>
|
17
|
+
</div>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<% if @pattern.has_structure? && @pattern.has_behavior? %>
|
22
|
+
<% docks_tablist(size: :large, manage_url?: true) do |tablist| %>
|
23
|
+
<%= tablist.tab(text: "Structure", active?: true, id: "page__content__tab--markup", panel_id: "page__content--markup", icon: :code) %>
|
24
|
+
<%= tablist.tab(text: "Behavior", id: "page__content__tab--behavior", panel_id: "page__content--behavior", icon: :script) %>
|
25
|
+
<% end %>
|
26
|
+
<% end %>
|
27
|
+
|
28
|
+
<div class="tablist__panel-container">
|
29
|
+
<% docks_component("tablist:panel", active?: @pattern.has_structure?, id: "page__content--markup", tab_id: "page__content__tab--markup") do %>
|
30
|
+
<div id="symbols--structure" data-filter-items=".section">
|
31
|
+
<% @pattern.demos.each do |demo| %>
|
32
|
+
<%= render partial: "symbols/demo", locals: { demo: demo } %>
|
33
|
+
<% end %>
|
34
|
+
|
35
|
+
<% unless (variables = @pattern.variables(exclude: :script)).empty? %>
|
36
|
+
<div class="content content--extra-vertical-spacing">
|
37
|
+
<h2 class="type type--heading type--heading-2 type--heading-bordered">Variables</h2>
|
38
|
+
|
39
|
+
<% variables.each do |variable| %>
|
40
|
+
<%= render partial: "symbols/variable", locals: { variable: variable } %>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
<% unless (functions = @pattern.functions(exclude: :script)).empty? %>
|
46
|
+
<div class="content content--extra-vertical-spacing">
|
47
|
+
<h2 class="type type--heading type--heading-2 type--heading-bordered">Functions</h2>
|
48
|
+
|
49
|
+
<% functions.each_with_index do |func, index| %>
|
50
|
+
<%= render partial: "symbols/function", locals: { function: func } %>
|
51
|
+
<% end %>
|
52
|
+
</div>
|
53
|
+
<% end %>
|
54
|
+
|
55
|
+
<% unless (mixins = @pattern.mixins(exclude: :script)).empty? %>
|
56
|
+
<div class="content content--extra-vertical-spacing">
|
57
|
+
<h2 class="type type--heading type--heading-2 type--heading-bordered">Mixins</h2>
|
58
|
+
|
59
|
+
<% mixins.each do |mixin| %>
|
60
|
+
<%= render partial: "symbols/mixin", locals: { mixin: mixin } %>
|
61
|
+
<% end %>
|
62
|
+
</div>
|
63
|
+
<% end %>
|
64
|
+
</div>
|
65
|
+
<% end %>
|
66
|
+
|
67
|
+
<% docks_component("tablist:panel", active?: !@pattern.has_structure?, id: "page__content--behavior", tab_id: "page__content__tab--behavior") do %>
|
68
|
+
<div id="symbols--behavior" data-filter-items=".section">
|
69
|
+
<% unless (factories = @pattern.factories(include: :script)).empty? %>
|
70
|
+
<% factories.each do |factory| %>
|
71
|
+
<%= render partial: "symbols/factory", locals: { factory: factory } %>
|
72
|
+
<% end %>
|
73
|
+
<% end %>
|
74
|
+
|
75
|
+
<% unless (classes = @pattern.classes(include: :script)).empty? %>
|
76
|
+
<% classes.each do |klass| %>
|
77
|
+
<%= render partial: "symbols/class", locals: { klass: klass } %>
|
78
|
+
<% end %>
|
79
|
+
<% end %>
|
80
|
+
|
81
|
+
<% unless (variables = @pattern.variables(include: :script)).empty? %>
|
82
|
+
<div class="content content--extra-vertical-spacing">
|
83
|
+
<h2 class="type type--heading type--heading-2 type--heading-bordered">Variables</h2>
|
84
|
+
|
85
|
+
<% variables.each do |variable| %>
|
86
|
+
<%= render partial: "symbols/variable", locals: { variable: variable } %>
|
87
|
+
<% end %>
|
88
|
+
</div>
|
89
|
+
<% end %>
|
90
|
+
|
91
|
+
<% unless (functions = @pattern.functions(include: :script)).empty? %>
|
92
|
+
<div class="content content--extra-vertical-spacing">
|
93
|
+
<h2 class="type type--heading type--heading-2 type--heading-bordered">Functions</h2>
|
94
|
+
|
95
|
+
<% functions.each do |func| %>
|
96
|
+
<%= render partial: "symbols/function", locals: { function: func } %>
|
97
|
+
<% end %>
|
98
|
+
</div>
|
99
|
+
<% end %>
|
100
|
+
</div>
|
101
|
+
<% end %>
|
102
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
.iframe{"data-iframe-id" => id}
|
2
|
+
.demo{"data-iframe-id" => id}
|
3
|
+
- if demo.kind_of?(Docks::Containers::Demo)
|
4
|
+
- demo_variations = [demo.component] + demo.joint_variations
|
5
|
+
- demo_variations.each do |variation|
|
6
|
+
- name = variation.name
|
7
|
+
%section.demo__section{"data-name" => name, id: "demo__section--#{name}"}
|
8
|
+
- unless demo_variations.length == 1
|
9
|
+
%header.demo__header
|
10
|
+
%h2.badge.badge--code= name
|
11
|
+
.content= variation.markup
|
12
|
+
- else
|
13
|
+
%section.demo__section
|
14
|
+
.content= demo
|
@@ -0,0 +1,38 @@
|
|
1
|
+
%body
|
2
|
+
- render_everything
|
3
|
+
= stylesheet_link_tag "pattern-library"
|
4
|
+
= docks_icons
|
5
|
+
.page
|
6
|
+
.page__sidebar
|
7
|
+
= render "sidebar"
|
8
|
+
.page__content
|
9
|
+
.vertical-stack
|
10
|
+
.vertical-stack__item.vertical-stack__item--fixed
|
11
|
+
.page-header
|
12
|
+
.grid.grid--vertically-centered
|
13
|
+
.grid__item.grid__item--no-flex
|
14
|
+
%button.sidebar__toggler
|
15
|
+
%span.helper--visually-hidden Toggle Sidebar
|
16
|
+
.icon.icon--action.icon--hamburger
|
17
|
+
.icon--hamburger__slice
|
18
|
+
.grid__item
|
19
|
+
%h1.type.type--heading.type--heading-1= @pattern.title
|
20
|
+
- if has_github?
|
21
|
+
.popover__container
|
22
|
+
%button.docks-button.docks-button--dark
|
23
|
+
Github
|
24
|
+
%i.icon.icon--disclosure
|
25
|
+
- docks_popover do
|
26
|
+
.list
|
27
|
+
%a.list__item{href: "#{github_root_url}/issues/new?body=#{url_encode(github_issue_message)}", target: "_blank"} File an issue
|
28
|
+
.list__group
|
29
|
+
%h4.type.type--heading.type--heading-4 View source
|
30
|
+
- relative_pattern_files.each do |file|
|
31
|
+
%a.list__item.type--code{href: "#{github_url(file)}", target: "_blank"}= File.basename(file)
|
32
|
+
.vertical-stack__item
|
33
|
+
%main.scroll-container= yield
|
34
|
+
= docks_details_sheet
|
35
|
+
= docks_xray
|
36
|
+
:javascript
|
37
|
+
window.pattern = #{CGI.unescapeHTML(@pattern.to_json)};
|
38
|
+
= javascript_include_tag "pattern_library"
|
@@ -0,0 +1,68 @@
|
|
1
|
+
%body
|
2
|
+
%nav.sidebar
|
3
|
+
.vertical-stack
|
4
|
+
.vertical-stack__item.vertical-stack__item--fixed
|
5
|
+
%header.page-header
|
6
|
+
.grid.grid--vertically-centered
|
7
|
+
.grid__item
|
8
|
+
%label.label.helper--visually-hidden{for: "search"} Search
|
9
|
+
.field.field--text
|
10
|
+
.field__icon
|
11
|
+
= docks_icon(:search, size: :medium)
|
12
|
+
%input#search.field__input{"data-filter-attribute" => "contents", "data-filters" => "#list--patterns, #list--this-pattern", placeholder: "Search", type: "search"}/
|
13
|
+
.grid__item.grid__item--no-flex
|
14
|
+
.popover__container
|
15
|
+
= docks_icon :eye, size: :large, color: :gray_darker
|
16
|
+
- docks_popover do |popover|
|
17
|
+
- popover.pane do
|
18
|
+
.field.field--switch
|
19
|
+
%input#private-toggle.field__switch{"data-checked-value" => "true|false", "data-filter-attribute" => "data-private", "data-filters" => "#list--this-pattern, #symbols--structure, #symbols--behavior", type: "checkbox"}/
|
20
|
+
%label.label{for: "private-toggle"} Show private symbols
|
21
|
+
.vertical-stack__item
|
22
|
+
- unless @pattern.symbols.empty?
|
23
|
+
#list--this-pattern.list{"data-filter-items" => ".list__item"}
|
24
|
+
- symbol_contents = { "structure" => @pattern.has_structure?, "behavior" => @pattern.has_behavior? }
|
25
|
+
- has_both = symbol_contents["structure"] && symbol_contents["behavior"]
|
26
|
+
%h3.type.type--heading.type--heading-3 This Pattern
|
27
|
+
- %w(structure behavior).each do |group|
|
28
|
+
- if symbol_contents[group]
|
29
|
+
- if group == "structure" && !(demos = @pattern.demos).empty?
|
30
|
+
.list__group
|
31
|
+
%h4.type.type--heading.type--heading-4 Components
|
32
|
+
- demos.each do |demo|
|
33
|
+
%a.list__item.type--code{"data-private" => "#{demo.component.private?}", href: "##{demo.component.symbol_id}"}= demo.name
|
34
|
+
- if group == "behavior" && !(factories = @pattern.factories).empty?
|
35
|
+
.list__group
|
36
|
+
%h4.type.type--heading.type--heading-4 Factories
|
37
|
+
- factories.each do |factory|
|
38
|
+
%a.list__item.type--code{"data-private" => "#{factory.private?}", href: "##{factory.symbol_id}"}= factory.name
|
39
|
+
- factory.static_properties.each do |prop|
|
40
|
+
%a.list__item.list__item--indented.type--code{"data-private" => "#{prop.private?}", href: "##{prop.symbol_id}"}
|
41
|
+
\.#{prop.name}
|
42
|
+
- factory.static_methods.each do |meth|
|
43
|
+
%a.list__item.list__item--indented.type--code{"data-private" => "#{meth.private?}", href: "##{meth.symbol_id}"}
|
44
|
+
\.#{meth.name}()
|
45
|
+
- factory.instance_properties.each do |prop|
|
46
|
+
%a.list__item.list__item--indented.type--code{"data-private" => "#{prop.private?}", href: "##{prop.symbol_id}"}
|
47
|
+
\##{prop.name}
|
48
|
+
- factory.instance_methods.each do |meth|
|
49
|
+
%a.list__item.list__item--indented.type--code{"data-private" => "#{meth.private?}", href: "##{meth.symbol_id}"}
|
50
|
+
\##{meth.name}()
|
51
|
+
- %w(variable function mixin).each do |type|
|
52
|
+
- symbol_options = {}
|
53
|
+
- symbol_options[group == "behavior" ? :include : :exclude] = Docks::Types::Languages::SCRIPT
|
54
|
+
- symbols = @pattern.send(type.pluralize.to_sym, symbol_options)
|
55
|
+
- unless symbols.empty?
|
56
|
+
.list__group
|
57
|
+
%h4.type.type--heading.type--heading-4= type.pluralize.capitalize
|
58
|
+
- symbols.each do |symbol|
|
59
|
+
%a.list__item.type--code{"data-private" => "#{symbol.private?}", href: "##{symbol.symbol_id}"}= symbol.name
|
60
|
+
#list--patterns.list{"data-filter-items" => ".list__item"}
|
61
|
+
%h3.type.type--heading.type--heading-3 Library
|
62
|
+
- @pattern_library.groups do |group, patterns|
|
63
|
+
.list__group
|
64
|
+
%h4.type.type--heading.type--heading-4= group.pluralize
|
65
|
+
- patterns.sort { |one, two| one.name <=> two.name }.each do |pattern|
|
66
|
+
- active_pattern = pattern.name == @pattern.name
|
67
|
+
%a{class: "list__item#{" list__item--is-active" if active_pattern}", href: "#{active_pattern ? "javascript:" : docks.pattern_path(pattern.name)}"}
|
68
|
+
= pattern.title
|
@@ -0,0 +1 @@
|
|
1
|
+
= render(partial: "symbols/factory", locals: { factory: klass })
|
@@ -0,0 +1,23 @@
|
|
1
|
+
%body
|
2
|
+
%section.section{"data-private" => "#{demo.component.private?}", id: "#{demo.component.symbol_id}"}
|
3
|
+
%header.content
|
4
|
+
.grid
|
5
|
+
.grid__item
|
6
|
+
%h3.type.type--heading.type--heading-2
|
7
|
+
- if title = demo.component.title
|
8
|
+
= title
|
9
|
+
- else
|
10
|
+
%span.type--code= demo.component.name
|
11
|
+
.grid__item.grid__item--no-flex
|
12
|
+
.docks-button__container
|
13
|
+
.docks-button{"data-xray-trigger" => "#{demo.name}"} x-ray
|
14
|
+
- markup = render(inline: (demo.component.markup || demo.component.helper), layout: false)
|
15
|
+
- code_details = []
|
16
|
+
- code_details << { code: demo.component.helper, language: "erb", label: "Helper" } unless demo.component.helper.nil?
|
17
|
+
- code_details << { code: markup, language: "html", label: "Markup" }
|
18
|
+
- options = [demo.name].concat demo.joint_variations.map { |variant| variant.name }
|
19
|
+
= docks_code_block(code: code_details, hideable?: true, full_width?: true, hidden?: true, options: options, id: demo.name, demo: demo)
|
20
|
+
- if demo.component.description
|
21
|
+
.content
|
22
|
+
.type-container
|
23
|
+
= demo.component.description
|
@@ -0,0 +1,38 @@
|
|
1
|
+
.content.content--extra-vertical-spacing
|
2
|
+
.section{"data-private" => "#{factory.private?}", id: "#{factory.symbol_id}"}
|
3
|
+
%h2.type.type--heading.type--heading-2.type--heading-bordered
|
4
|
+
%span.type--code= factory.name
|
5
|
+
.type-container= factory.description
|
6
|
+
= docks_code_block(code: factory.signature, language: factory.source.language_code)
|
7
|
+
- unless (params = factory.fetch(:params, [])).empty?
|
8
|
+
%h4.type.type--heading.type--heading-4 Parameters
|
9
|
+
- params.each do |param|
|
10
|
+
%h5.type.type--heading.type--heading-5
|
11
|
+
%span.type--code= param.name
|
12
|
+
%span.badge= param.types.first
|
13
|
+
.type-container.type-container--small= param.description
|
14
|
+
- unless (properties = param.properties || []).empty?
|
15
|
+
- docks_table do
|
16
|
+
%thead.table__header
|
17
|
+
%tr.table__row
|
18
|
+
%th.table__cell Name
|
19
|
+
%th.table__cell Description
|
20
|
+
%th.table__cell Types
|
21
|
+
%th.table__cell.table__cell--centered Default
|
22
|
+
%tbody.table__body
|
23
|
+
- properties.each do |property|
|
24
|
+
%tr.table__row
|
25
|
+
%td.table__cell
|
26
|
+
%code.type--code= property.name
|
27
|
+
%td.table__cell
|
28
|
+
.type-container.type-container--small= property.description
|
29
|
+
%td.table__cell= (type = property.types.try(:first)) ? "<span class='type--code'>#{type}</span>".html_safe : "Anything"
|
30
|
+
%td.table__cell.table__cell--centered= (default = property.default) ? "<span class='type--code'>#{default}</span>".html_safe : "—".html_safe
|
31
|
+
- unless (examples = factory.fetch(:examples, [])).empty?
|
32
|
+
%h4.type.type--heading.type--heading-4= "Example".pluralize(examples.length)
|
33
|
+
- examples.each do |example|
|
34
|
+
= docks_code_block(code: example.code, language: example.language, condensed?: true)
|
35
|
+
- factory.properties.each do |property|
|
36
|
+
= render "docks/partials/variable", variable: property
|
37
|
+
- factory.methods.each do |method|
|
38
|
+
= render "docks/partials/function", function: method
|
@@ -0,0 +1,54 @@
|
|
1
|
+
%body
|
2
|
+
.section{"data-private" => "#{function.private?}", id: "#{function.symbol_id}"}
|
3
|
+
%header
|
4
|
+
.inline-group
|
5
|
+
.inline-group__item
|
6
|
+
%h3.type.type--heading.type--heading-3
|
7
|
+
%span.type--code= function.name
|
8
|
+
- if function.private? || function.deprecated
|
9
|
+
.inline-group__item
|
10
|
+
.badge__container
|
11
|
+
- if function.private?
|
12
|
+
%span.badge.badge--standalone.badge--secret private
|
13
|
+
- if function.deprecated
|
14
|
+
%span.badge.badge--standalone.badge--warning deprecated
|
15
|
+
.type-container= function.description
|
16
|
+
= docks_code_block code: function.signature, language: function.source.language_code, id: "function--#{function.name}", full_width?: true
|
17
|
+
- unless (aliases = function.fetch(:aliases, [])).empty?
|
18
|
+
%h4.type.type--heading.type--heading-4 Aliases
|
19
|
+
- aliases.each do |an_alias|
|
20
|
+
%code.type--code= an_alias
|
21
|
+
- unless (params = function.fetch(:params, [])).empty?
|
22
|
+
%h4.type.type--heading.type--heading-4 Parameters
|
23
|
+
- params.each do |param|
|
24
|
+
%h5.type.type--heading.type--heading-5
|
25
|
+
%span.type--code= param.name
|
26
|
+
%span.badge= param.types.first
|
27
|
+
.type-container.type-container--small= param.description
|
28
|
+
- unless (properties = param.properties || []).empty?
|
29
|
+
- docks_table do
|
30
|
+
%thead.table__header
|
31
|
+
%tr.table__row
|
32
|
+
%th.table__cell Name
|
33
|
+
%th.table__cell Description
|
34
|
+
%th.table__cell Types
|
35
|
+
%th.table__cell.table__cell--centered Default
|
36
|
+
%tbody.table__body
|
37
|
+
- properties.each do |property|
|
38
|
+
%tr.table__row
|
39
|
+
%td.table__cell
|
40
|
+
%code.type--code= property.name
|
41
|
+
%td.table__cell
|
42
|
+
.type-container.type-container--small= property.description
|
43
|
+
%td.table__cell= (type = !property.types && property.types.first) ? "<span class='type--code'>#{type}</span>" : "Anything"
|
44
|
+
%td.table__cell.table__cell--centered= (default = property.default) ? "<span class='type--code'>#{default}</span>" : "—"
|
45
|
+
%h4.type.type--heading.type--heading-4 Returns
|
46
|
+
- if return_types = function.returns && function.returns.types
|
47
|
+
%a{href: "#{docks_path(return_types.first, language: function.source.language_code)}"}
|
48
|
+
%code.type--code= return_types.first
|
49
|
+
- else
|
50
|
+
%p.type.type--paragraph Nothing
|
51
|
+
- unless (examples = function.fetch(:examples, [])).empty?
|
52
|
+
%h4.type.type--heading.type--heading-4= "Example".pluralize(examples.length)
|
53
|
+
- examples.each do |example|
|
54
|
+
= docks_code_block code: example.code, language: example.language, condensed?: true
|
@@ -0,0 +1,31 @@
|
|
1
|
+
%body
|
2
|
+
.section{"data-private" => "#{mixin.private?}", id: "#{mixin.symbol_id}"}
|
3
|
+
%header
|
4
|
+
.inline-group
|
5
|
+
.inline-group__item
|
6
|
+
%h3.type.type--heading.type--heading-3
|
7
|
+
%span.type--code= mixin.name
|
8
|
+
- if mixin.private? || mixin.deprecated
|
9
|
+
.inline-group__item
|
10
|
+
.badge__container
|
11
|
+
- if mixin.private?
|
12
|
+
%span.badge.badge--standalone.badge--secret private
|
13
|
+
- if mixin.deprecated
|
14
|
+
%span.badge.badge--standalone.badge--warning deprecated
|
15
|
+
.type-container= mixin.description
|
16
|
+
= docks_code_block code: mixin.signature, language: mixin.source.language_code, id: "mixin--#{mixin.name}", full_width?: true
|
17
|
+
- unless (aliases = mixin.fetch(:aliases, [])).empty?
|
18
|
+
%h4.type.type--heading.type--heading-4 Aliases
|
19
|
+
- aliases.each do |an_alias|
|
20
|
+
%code.type--code= an_alias
|
21
|
+
- unless (params = mixin.fetch(:params, [])).empty?
|
22
|
+
%h4.type.type--heading.type--heading-4 Parameters
|
23
|
+
- params.each do |param|
|
24
|
+
%h5.type.type--heading.type--heading-5
|
25
|
+
%span.type--code= param.name
|
26
|
+
%span.badge= param.types.first
|
27
|
+
.type-container.type-container--small= param.description
|
28
|
+
- unless (examples = mixin.fetch(:examples, [])).empty?
|
29
|
+
%h4.type.type--heading.type--heading-4= "Example".pluralize(examples.length)
|
30
|
+
- examples.each do |example|
|
31
|
+
= docks_code_block code: example.code, language: example.language, condensed?: true
|
@@ -0,0 +1,22 @@
|
|
1
|
+
%body
|
2
|
+
.section{"data-private" => "#{variable.private?}", id: "#{variable.symbol_id}"}
|
3
|
+
%header
|
4
|
+
.inline-group
|
5
|
+
.inline-group__item
|
6
|
+
%h3.type.type--heading.type--heading-3
|
7
|
+
%span.type--code= variable.name
|
8
|
+
- if variable.private? || variable.deprecated
|
9
|
+
.inline-group__item
|
10
|
+
.badge__container
|
11
|
+
- if variable.private?
|
12
|
+
%span.badge.badge--standalone.badge--secret private
|
13
|
+
- if variable.deprecated
|
14
|
+
%span.badge.badge--standalone.badge--warning deprecated
|
15
|
+
.type-container= variable.description
|
16
|
+
- if type = variable.type
|
17
|
+
%h4.type.type--heading.type--heading-4 Type
|
18
|
+
%a{href: "#{docks_path_to(type, language: variable.source.language_code)}"}
|
19
|
+
%code.type--code= type
|
20
|
+
- if value = variable.value
|
21
|
+
%h4.type.type--heading.type--heading-4 Value
|
22
|
+
%code.type--code= value
|