lookbook 1.2.1 → 1.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +47 -14
- data/app/assets/lookbook/css/themes/blue.css +4 -2
- data/app/assets/lookbook/css/themes/green.css +66 -0
- data/app/assets/lookbook/css/themes/indigo.css +4 -2
- data/app/assets/lookbook/css/themes/rose.css +66 -0
- data/app/assets/lookbook/css/themes/zinc.css +4 -2
- data/app/components/lookbook/base_component.rb +2 -2
- data/app/components/lookbook/code/component.css +2 -2
- data/app/components/lookbook/code/component.html.erb +3 -2
- data/app/components/lookbook/code/component.rb +13 -2
- data/app/components/lookbook/code/highlight_github.css +406 -0
- data/app/components/lookbook/header/component.html.erb +1 -1
- data/app/components/lookbook/inspector_panel/component.rb +4 -6
- data/app/components/lookbook/nav/component.rb +8 -15
- data/app/components/lookbook/nav/directory/component.html.erb +28 -0
- data/app/components/lookbook/nav/directory/component.rb +4 -0
- data/app/components/lookbook/nav/{item → entity}/component.html.erb +8 -8
- data/app/components/lookbook/nav/entity/component.rb +49 -0
- data/app/components/lookbook/nav/item/component.css +15 -0
- data/app/components/lookbook/nav/item/component.js +4 -0
- data/app/components/lookbook/nav/item/component.rb +13 -56
- data/app/components/lookbook/params/editor/component.html.erb +2 -2
- data/app/components/lookbook/params/editor/component.rb +3 -10
- data/app/components/lookbook/params/field/component.css +3 -3
- data/app/components/lookbook/params/field/component.html.erb +8 -8
- data/app/components/lookbook/params/field/component.rb +21 -72
- data/app/components/lookbook/split_layout/component.html.erb +1 -1
- data/app/components/lookbook/tabs/component.html.erb +1 -1
- data/app/components/lookbook/tabs/component.js +4 -0
- data/app/components/lookbook/tag_component.rb +1 -1
- data/app/components/lookbook/viewport/component.css +1 -1
- data/app/components/lookbook/viewport/component.html.erb +1 -1
- data/app/components/lookbook/viewport/component.rb +1 -1
- data/app/controllers/concerns/lookbook/targetable_concern.rb +131 -0
- data/app/controllers/concerns/lookbook/with_preview_controller_concern.rb +13 -0
- data/app/controllers/lookbook/application_controller.rb +21 -9
- data/app/controllers/lookbook/inspector_controller.rb +45 -0
- data/app/controllers/lookbook/page_controller.rb +13 -9
- data/app/controllers/lookbook/pages_controller.rb +9 -15
- data/app/controllers/lookbook/previews_controller.rb +4 -210
- data/app/helpers/lookbook/application_helper.rb +2 -2
- data/app/helpers/lookbook/output_helper.rb +5 -5
- data/app/helpers/lookbook/page_helper.rb +7 -4
- data/app/views/layouts/lookbook/application.html.erb +40 -38
- data/app/views/layouts/lookbook/page.html.erb +2 -2
- data/app/views/layouts/lookbook/shell.html.erb +3 -2
- data/app/views/layouts/lookbook/skeleton.html.erb +7 -7
- data/app/views/lookbook/index.html.erb +13 -2
- data/app/views/lookbook/{previews → inspector}/inputs/_color.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_range.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_select.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_text.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_textarea.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_toggle.html.erb +5 -5
- data/app/views/lookbook/{previews → inspector}/panels/_content.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/panels/_notes.html.erb +2 -2
- data/app/views/lookbook/{previews → inspector}/panels/_output.html.erb +0 -0
- data/app/views/lookbook/inspector/panels/_params.html.erb +15 -0
- data/app/views/lookbook/{previews → inspector}/panels/_preview.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/panels/_source.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/show.html.erb +5 -2
- data/config/app.yml +11 -1
- data/config/inputs.yml +12 -12
- data/config/languages.yml +41 -0
- data/config/panels.yml +6 -6
- data/config/routes.rb +5 -5
- data/config/tags.yml +8 -1
- data/lib/lookbook/engine.rb +103 -130
- data/lib/lookbook/entities/collections/component_collection.rb +4 -0
- data/lib/lookbook/entities/collections/concerns/hierarchical_collection.rb +23 -0
- data/lib/lookbook/entities/collections/entity_collection.rb +61 -0
- data/lib/lookbook/entities/collections/page_collection.rb +30 -0
- data/lib/lookbook/entities/collections/preview_collection.rb +41 -0
- data/lib/lookbook/entities/collections/preview_example_collection.rb +4 -0
- data/lib/lookbook/entities/component.rb +31 -0
- data/lib/lookbook/entities/concerns/annotatable.rb +58 -0
- data/lib/lookbook/entities/concerns/inspectable.rb +44 -0
- data/lib/lookbook/entities/concerns/locatable.rb +73 -0
- data/lib/lookbook/entities/concerns/navigable.rb +43 -0
- data/lib/lookbook/entities/entity.rb +53 -0
- data/lib/lookbook/entities/page.rb +80 -0
- data/lib/lookbook/entities/page_section.rb +43 -0
- data/lib/lookbook/entities/preview.rb +87 -0
- data/lib/lookbook/entities/preview_example.rb +100 -0
- data/lib/lookbook/entities/preview_group.rb +48 -0
- data/lib/lookbook/file_watcher.rb +47 -0
- data/lib/lookbook/lang.rb +12 -35
- data/lib/lookbook/param.rb +99 -0
- data/lib/lookbook/{preview_controller.rb → preview_actions.rb} +14 -3
- data/lib/lookbook/preview_parser.rb +53 -0
- data/lib/lookbook/process.rb +21 -0
- data/lib/lookbook/rendered_example.rb +37 -0
- data/lib/lookbook/services/code/code_beautifier.rb +21 -0
- data/lib/lookbook/services/code/code_highlighter.rb +69 -0
- data/lib/lookbook/services/code/code_indenter.rb +14 -0
- data/lib/lookbook/services/data/parsers/data_parser.rb +22 -0
- data/lib/lookbook/services/data/parsers/json_parser.rb +7 -0
- data/lib/lookbook/services/data/parsers/yaml_parser.rb +7 -0
- data/lib/lookbook/services/data/resolvers/data_resolver.rb +70 -0
- data/lib/lookbook/services/data/resolvers/eval_resolver.rb +10 -0
- data/lib/lookbook/services/data/resolvers/file_resolver.rb +28 -0
- data/lib/lookbook/services/data/resolvers/method_resolver.rb +10 -0
- data/lib/lookbook/services/data/resolvers/yaml_resolver.rb +18 -0
- data/lib/lookbook/services/entities/entity_tree_builder.rb +45 -0
- data/lib/lookbook/services/markdown_renderer.rb +29 -0
- data/lib/lookbook/services/position_prefix_parser.rb +16 -0
- data/lib/lookbook/services/string_value_caster.rb +60 -0
- data/lib/lookbook/services/tags/tag_options_parser.rb +62 -0
- data/lib/lookbook/services/templates/action_view_annotations_handler.rb +21 -0
- data/lib/lookbook/services/templates/action_view_annotations_stripper.rb +15 -0
- data/lib/lookbook/services/templates/frontmatter_extractor.rb +28 -0
- data/lib/lookbook/services/templates/styles_extractor.rb +38 -0
- data/lib/lookbook/services/{search_param_builder.rb → urls/search_param_builder.rb} +1 -1
- data/lib/lookbook/services/{search_param_parser.rb → urls/search_param_parser.rb} +1 -1
- data/lib/lookbook/stores/config_store.rb +12 -9
- data/lib/lookbook/stores/input_store.rb +7 -3
- data/lib/lookbook/stores/panel_store.rb +2 -2
- data/lib/lookbook/stores/tag_store.rb +3 -5
- data/lib/lookbook/support/null_object.rb +10 -0
- data/lib/lookbook/support/service.rb +2 -2
- data/lib/lookbook/support/store.rb +2 -35
- data/lib/lookbook/support/tree_node.rb +87 -0
- data/lib/lookbook/support/utils/path_utils.rb +32 -5
- data/lib/lookbook/support/utils/utils.rb +24 -0
- data/lib/lookbook/tags/component_tag.rb +13 -0
- data/lib/lookbook/tags/custom_tag.rb +61 -0
- data/lib/lookbook/tags/display_tag.rb +15 -0
- data/lib/lookbook/tags/hidden_tag.rb +13 -0
- data/lib/lookbook/tags/id_tag.rb +7 -0
- data/lib/lookbook/tags/label_tag.rb +4 -0
- data/lib/lookbook/tags/logical_path_tag.rb +7 -0
- data/lib/lookbook/tags/param_tag.rb +63 -0
- data/lib/lookbook/tags/position_tag.rb +16 -0
- data/lib/lookbook/tags/source_tag.rb +7 -0
- data/lib/lookbook/tags/tag_provider.rb +18 -0
- data/lib/lookbook/tags/yard_tag.rb +90 -0
- data/lib/lookbook/theme.rb +8 -0
- data/lib/lookbook/version.rb +1 -1
- data/lib/lookbook/websocket.rb +60 -0
- data/lib/lookbook.rb +13 -8
- data/public/lookbook-assets/css/lookbook.css +487 -411
- data/public/lookbook-assets/css/lookbook.css.map +1 -1
- data/public/lookbook-assets/css/themes/blue.css +3 -1
- data/public/lookbook-assets/css/themes/blue.css.map +1 -1
- data/public/lookbook-assets/css/themes/green.css +68 -0
- data/public/lookbook-assets/css/themes/green.css.map +1 -0
- data/public/lookbook-assets/css/themes/indigo.css +3 -1
- data/public/lookbook-assets/css/themes/indigo.css.map +1 -1
- data/public/lookbook-assets/css/themes/rose.css +68 -0
- data/public/lookbook-assets/css/themes/rose.css.map +1 -0
- data/public/lookbook-assets/css/themes/zinc.css +3 -1
- data/public/lookbook-assets/css/themes/zinc.css.map +1 -1
- data/public/lookbook-assets/js/embed.js +10 -1
- data/public/lookbook-assets/js/embed.js.map +1 -1
- data/public/lookbook-assets/js/lookbook.js +358 -629
- data/public/lookbook-assets/js/lookbook.js.map +1 -1
- metadata +96 -44
- data/app/components/lookbook/code/highlight_github_light.css +0 -217
- data/app/views/lookbook/previews/panels/_params.html.erb +0 -15
- data/lib/lookbook/code_formatter.rb +0 -68
- data/lib/lookbook/collection.rb +0 -161
- data/lib/lookbook/component.rb +0 -34
- data/lib/lookbook/entity.rb +0 -47
- data/lib/lookbook/markdown.rb +0 -22
- data/lib/lookbook/page.rb +0 -195
- data/lib/lookbook/page_collection.rb +0 -19
- data/lib/lookbook/page_section.rb +0 -29
- data/lib/lookbook/params.rb +0 -157
- data/lib/lookbook/parser.rb +0 -42
- data/lib/lookbook/preview.rb +0 -174
- data/lib/lookbook/preview_collection.rb +0 -23
- data/lib/lookbook/preview_example.rb +0 -93
- data/lib/lookbook/preview_group.rb +0 -62
- data/lib/lookbook/source_inspector.rb +0 -95
- data/lib/lookbook/support/utils/attribute_utils.rb +0 -9
- data/lib/lookbook/tag.rb +0 -122
- data/lib/lookbook/tag_options.rb +0 -111
- data/lib/lookbook/tags.rb +0 -17
- data/lib/lookbook/template_parser.rb +0 -72
- data/lib/lookbook/utils.rb +0 -105
@@ -9,9 +9,9 @@ module Lookbook
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def index
|
12
|
-
landing = Lookbook.pages.find(&:landing) || Lookbook.pages.first
|
12
|
+
landing = Lookbook.pages.find(&:landing?) || Lookbook.pages.first
|
13
13
|
if landing.present?
|
14
|
-
redirect_to lookbook_page_path
|
14
|
+
redirect_to lookbook_page_path(landing.path)
|
15
15
|
else
|
16
16
|
show_404
|
17
17
|
end
|
@@ -20,21 +20,15 @@ module Lookbook
|
|
20
20
|
def show
|
21
21
|
@page = @pages.find_by_path(params[:path])
|
22
22
|
if @page
|
23
|
-
@next_page = @pages.
|
24
|
-
@previous_page = @pages.
|
25
|
-
|
23
|
+
@next_page = @pages.next(@page)
|
24
|
+
@previous_page = @pages.previous(@page)
|
25
|
+
begin
|
26
|
+
@page_content = page_controller.render_page(@page)
|
27
|
+
@title = @page.title
|
28
|
+
rescue => exception
|
26
29
|
render_in_layout "lookbook/error",
|
27
30
|
layout: "lookbook/page",
|
28
|
-
error: @page.
|
29
|
-
else
|
30
|
-
begin
|
31
|
-
@page_content = page_controller.render_page(@page)
|
32
|
-
@title = @page.title
|
33
|
-
rescue => exception
|
34
|
-
render_in_layout "lookbook/error",
|
35
|
-
layout: "lookbook/page",
|
36
|
-
error: Lookbook::Error.new(exception, file_path: @page.full_path, source_code: @page.content)
|
37
|
-
end
|
31
|
+
error: Lookbook::Error.new(exception, file_path: @page.file_path, source_code: @page.content)
|
38
32
|
end
|
39
33
|
else
|
40
34
|
show_404
|
@@ -1,19 +1,16 @@
|
|
1
1
|
module Lookbook
|
2
2
|
class PreviewsController < ApplicationController
|
3
|
-
|
3
|
+
include TargetableConcern
|
4
|
+
include WithPreviewControllerConcern
|
4
5
|
|
6
|
+
layout "lookbook/inspector"
|
5
7
|
helper Lookbook::PreviewHelper
|
6
8
|
|
7
9
|
def self.controller_path
|
8
10
|
"lookbook/previews"
|
9
11
|
end
|
10
12
|
|
11
|
-
|
12
|
-
before_action :set_title
|
13
|
-
before_action :set_display_options
|
14
|
-
before_action :set_params
|
15
|
-
|
16
|
-
def preview
|
13
|
+
def show
|
17
14
|
if @target
|
18
15
|
begin
|
19
16
|
opts = {layout: @preview.layout}
|
@@ -31,208 +28,5 @@ module Lookbook
|
|
31
28
|
show_404 layout: "lookbook/standalone"
|
32
29
|
end
|
33
30
|
end
|
34
|
-
|
35
|
-
def show
|
36
|
-
if @target
|
37
|
-
begin
|
38
|
-
@main_panels = main_panels
|
39
|
-
@drawer_panels = drawer_panels
|
40
|
-
rescue => exception
|
41
|
-
render_in_layout "lookbook/error", layout: "lookbook/inspector", error: prettify_error(exception)
|
42
|
-
end
|
43
|
-
else
|
44
|
-
show_404
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def show_legacy
|
49
|
-
Lookbook.logger.warn("Legacy URL path detected. These paths are deprecated and will be removed in a future version")
|
50
|
-
redirect_to lookbook_inspect_path params[:path]
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def lookup_entities
|
56
|
-
@target = Lookbook.previews.find_example(params[:path])
|
57
|
-
if @target.present?
|
58
|
-
@preview = @target.preview
|
59
|
-
if params[:path] == @preview&.lookup_path
|
60
|
-
redirect_to lookbook_inspect_path "#{params[:path]}/#{@preview.default_example.name}"
|
61
|
-
end
|
62
|
-
else
|
63
|
-
@preview = Lookbook.previews.find(params[:path])
|
64
|
-
if @preview.present?
|
65
|
-
first_example = @preview.examples.first
|
66
|
-
redirect_to lookbook_inspect_path(first_example.lookup_path) if first_example
|
67
|
-
else
|
68
|
-
@preview = Lookbook.previews.find(path_segments.slice(0, path_segments.size - 1).join("/"))
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def show_404(layout: nil)
|
74
|
-
locals = if @preview
|
75
|
-
{
|
76
|
-
message: "Example not found",
|
77
|
-
description: "The '#{@preview.label}' preview does not have an example named '#{path_segments.last}'."
|
78
|
-
}
|
79
|
-
else
|
80
|
-
{
|
81
|
-
message: "Not found",
|
82
|
-
description: "Looked for '#{params[:path]}'.<br>The preview may have been renamed or deleted."
|
83
|
-
}
|
84
|
-
end
|
85
|
-
render_in_layout "lookbook/404", layout: layout, **locals
|
86
|
-
end
|
87
|
-
|
88
|
-
def target_examples
|
89
|
-
@target.type == :group ? @target.examples : [@target]
|
90
|
-
end
|
91
|
-
|
92
|
-
def set_title
|
93
|
-
@title = @target.present? ? [@target&.label, @preview&.label].compact.join(" :: ") : "Not found"
|
94
|
-
end
|
95
|
-
|
96
|
-
def set_display_options
|
97
|
-
@dynamic_display_options = []
|
98
|
-
@static_display_options = []
|
99
|
-
|
100
|
-
if @target.present?
|
101
|
-
opts = @target.display_options
|
102
|
-
@dynamic_display_options = opts.select { _2.is_a?(Array) || _2.is_a?(Hash) }
|
103
|
-
@static_display_options = opts.except(*@dynamic_display_options.keys)
|
104
|
-
|
105
|
-
if params[:_display]
|
106
|
-
display_params = SearchParamParser.call(params[:_display])
|
107
|
-
display_params.each do |name, value|
|
108
|
-
if @dynamic_display_options.key?(name)
|
109
|
-
cookies["lookbook-display-#{name}"] = value
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
@dynamic_display_options.each do |name, opts|
|
115
|
-
choices = opts.is_a?(Hash) ? opts[:choices].to_a : opts
|
116
|
-
@static_display_options[name] ||= cookies.fetch("lookbook-display-#{name}", choices.first)
|
117
|
-
end
|
118
|
-
|
119
|
-
unless params[:_display]
|
120
|
-
display_params = @dynamic_display_options.map do |name, opts|
|
121
|
-
[name, @static_display_options[name]]
|
122
|
-
end.to_h
|
123
|
-
request.query_parameters[:_display] = SearchParamBuilder.call(display_params)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def set_params
|
129
|
-
if @target
|
130
|
-
# cast known params to type
|
131
|
-
@target.params.each do |param|
|
132
|
-
if preview_controller.params.key?(param[:name])
|
133
|
-
preview_controller.params[param[:name]] = Lookbook::Params.cast(preview_controller.params[param[:name]], param[:value_type])
|
134
|
-
end
|
135
|
-
end
|
136
|
-
# set display and data params
|
137
|
-
preview_controller.params.merge!({
|
138
|
-
lookbook: {
|
139
|
-
display: @static_display_options,
|
140
|
-
data: Lookbook.data
|
141
|
-
}
|
142
|
-
})
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
def preview_params
|
147
|
-
preview_controller.params.permit!
|
148
|
-
preview_controller.params.to_h.select do |key, value|
|
149
|
-
!!@target.params.find { |param| param[:name] == key }
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def inspector_data
|
154
|
-
return @inspector_data if @inspector_data.present?
|
155
|
-
|
156
|
-
context_data = {
|
157
|
-
preview_params: preview_params,
|
158
|
-
path: params[:path]
|
159
|
-
}
|
160
|
-
|
161
|
-
preview = @preview
|
162
|
-
examples = target_examples.map do |example|
|
163
|
-
render_args = @preview.render_args(example.name, params: preview_controller.params)
|
164
|
-
has_template = render_args[:template] != "view_components/preview"
|
165
|
-
output = preview_controller.process(:render_example_to_string, @preview, example.name)
|
166
|
-
source = has_template ? example.template_source(render_args[:template]) : example.method_source
|
167
|
-
source_lang = has_template ? example.template_lang(render_args[:template]) : example.lang
|
168
|
-
|
169
|
-
example.define_singleton_method(:output, proc { output })
|
170
|
-
example.define_singleton_method(:source, proc { source })
|
171
|
-
example.define_singleton_method(:source_lang, proc { source_lang })
|
172
|
-
example
|
173
|
-
end
|
174
|
-
|
175
|
-
target = @target.type == :group ? @target : examples.find { |e| e.lookup_path == @target.lookup_path }
|
176
|
-
|
177
|
-
preview.define_singleton_method(:params, proc {
|
178
|
-
target.params
|
179
|
-
})
|
180
|
-
|
181
|
-
@inspector_data ||= Lookbook::Store.new({
|
182
|
-
context: context_data,
|
183
|
-
preview: preview,
|
184
|
-
examples: examples,
|
185
|
-
example: examples.first,
|
186
|
-
target: target,
|
187
|
-
data: Lookbook.data,
|
188
|
-
app: Lookbook
|
189
|
-
})
|
190
|
-
end
|
191
|
-
|
192
|
-
def main_panels
|
193
|
-
Engine.panels.in_group(:main).map do |config|
|
194
|
-
PanelStore.resolve_config(config, inspector_data)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
def drawer_panels
|
199
|
-
Engine.panels.in_group(:drawer).map do |config|
|
200
|
-
PanelStore.resolve_config(config, inspector_data)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
def preview_controller
|
205
|
-
return @preview_controller if @preview_controller
|
206
|
-
controller = Lookbook::Engine.preview_controller.new
|
207
|
-
controller.request = request
|
208
|
-
controller.response = response
|
209
|
-
@preview_controller ||= controller
|
210
|
-
end
|
211
|
-
|
212
|
-
def prettify_error(exception)
|
213
|
-
error_params = if exception.is_a?(ViewComponent::PreviewTemplateError)
|
214
|
-
{
|
215
|
-
file_path: @preview&.full_path,
|
216
|
-
line_number: 0,
|
217
|
-
source_code: @target&.source
|
218
|
-
}
|
219
|
-
elsif exception.is_a?(ActionView::Template::Error) & exception.message.include?("implements a reserved method")
|
220
|
-
message_parts = exception.message.split("\n").first.split
|
221
|
-
component_class = message_parts.first.constantize
|
222
|
-
naughty_method = message_parts.last.delete("#").delete("`").delete(".")
|
223
|
-
method = component_class.instance_method(naughty_method.to_sym)
|
224
|
-
if method
|
225
|
-
{
|
226
|
-
file_path: method.source_location.first,
|
227
|
-
line_number: method.source_location[1]
|
228
|
-
}
|
229
|
-
end
|
230
|
-
end
|
231
|
-
Lookbook::Error.new(exception, **(error_params || {}))
|
232
|
-
end
|
233
|
-
|
234
|
-
def path_segments
|
235
|
-
params[:path].split("/")
|
236
|
-
end
|
237
31
|
end
|
238
32
|
end
|
@@ -18,7 +18,7 @@ module Lookbook
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def landing_path
|
21
|
-
landing = Lookbook.pages.find(&:landing) || Lookbook.pages.first
|
21
|
+
landing = Lookbook.pages.find(&:landing?) || Lookbook.pages.first
|
22
22
|
if landing.present?
|
23
23
|
lookbook_page_path landing.lookup_path
|
24
24
|
else
|
@@ -27,7 +27,7 @@ module Lookbook
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def generate_id(*args)
|
30
|
-
args.map { |args| args.delete_prefix("/").tr("&?=/_
|
30
|
+
args.map { |args| args.delete_prefix("/").tr("&?=/_-", "-") }.join("-")
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module Lookbook
|
2
2
|
module OutputHelper
|
3
3
|
def markdown(text = nil, &block)
|
4
|
-
|
4
|
+
MarkdownRenderer.call(block ? capture(&block) : text, Lookbook.config.markdown_options)
|
5
5
|
end
|
6
6
|
|
7
|
-
def highlight(
|
8
|
-
|
7
|
+
def highlight(*args, **opts)
|
8
|
+
CodeHighlighter.call(*args, **opts)
|
9
9
|
end
|
10
10
|
|
11
|
-
def beautify(
|
12
|
-
|
11
|
+
def beautify(*args, **opts)
|
12
|
+
CodeBeautifier.call(*args, **opts)
|
13
13
|
end
|
14
14
|
|
15
15
|
def pretty_json(obj)
|
@@ -3,7 +3,7 @@ module Lookbook
|
|
3
3
|
include Utils
|
4
4
|
|
5
5
|
def page_path(id)
|
6
|
-
page = id.is_a?(Page) ? id : Lookbook.pages.
|
6
|
+
page = id.is_a?(Page) ? id : Lookbook.pages.find_by_id(id)
|
7
7
|
if page.present?
|
8
8
|
lookbook_page_path page.lookup_path
|
9
9
|
else
|
@@ -16,10 +16,13 @@ module Lookbook
|
|
16
16
|
|
17
17
|
@embed_counter ||= 0
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
preview = if args.first.is_a?(Symbol)
|
20
|
+
Lookbook.previews.find_by_path(args.first)
|
21
|
+
else
|
22
|
+
Lookbook.previews.find_by_preview_class(args.first)
|
23
|
+
end
|
22
24
|
|
25
|
+
example = args[1] ? preview&.example(args[1]) : preview&.default_example
|
23
26
|
embed_id = "#{url_for}/embed/#{example.lookup_path}".delete_prefix("/").tr("/", "-")
|
24
27
|
|
25
28
|
lookbook_render :embed,
|
@@ -1,5 +1,6 @@
|
|
1
1
|
<% content_for :shell do %>
|
2
2
|
<% if @previews.any? || @pages.any? %>
|
3
|
+
|
3
4
|
<%= lookbook_render :split_layout,
|
4
5
|
alpine_data: "$store.layout.main",
|
5
6
|
":class": "$store.layout.mobile && '!block'" do |layout| %>
|
@@ -12,50 +13,50 @@
|
|
12
13
|
}",
|
13
14
|
"@click.outside": "closeMobileSidebar",
|
14
15
|
cloak: true do %>
|
16
|
+
<% cache do %>
|
17
|
+
<%= lookbook_render :split_layout,
|
18
|
+
alpine_data: "$store.layout.#{@pages.any? && @previews.any? ? "sidebar" : "singleSectionSidebar"}",
|
19
|
+
style: "height: calc(100vh - 2.5rem);" do |layout| %>
|
15
20
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
<%= lookbook_render :button_group, size: :xs do |group| %>
|
33
|
-
<% group.button icon: :minus_square,
|
34
|
-
tooltip: "Collapse all",
|
35
|
-
"@click": "closeAll" %>
|
21
|
+
<% if @previews.any? %>
|
22
|
+
<% layout.pane class: "overflow-hidden" do %>
|
23
|
+
<%= lookbook_render :nav,
|
24
|
+
id: "previews-nav",
|
25
|
+
tree: @previews.to_tree,
|
26
|
+
alpine_data: "$store.nav.previews" do |nav| %>
|
27
|
+
<%= nav.toolbar do |toolbar| %>
|
28
|
+
<% toolbar.section padded: true do %>
|
29
|
+
<h4 class="pt-1">Previews</h4>
|
30
|
+
<% end %>
|
31
|
+
<% toolbar.section align: :right, padded: false do %>
|
32
|
+
<%= lookbook_render :button_group, size: :xs do |group| %>
|
33
|
+
<% group.button icon: :minus_square,
|
34
|
+
tooltip: "Collapse all",
|
35
|
+
"@click": "closeAll" %>
|
36
|
+
<% end %>
|
36
37
|
<% end %>
|
37
38
|
<% end %>
|
39
|
+
<% nav.filter store: "$store.nav.previews.filter", placeholder: "Filter previews by name…" %>
|
38
40
|
<% end %>
|
39
|
-
<% nav.filter store: "$store.nav.previews.filter", placeholder: "Filter previews by name…" %>
|
40
41
|
<% end %>
|
41
42
|
<% end %>
|
42
|
-
<% end %>
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
44
|
+
<% if @pages.any? %>
|
45
|
+
<% layout.pane class: "overflow-hidden" do %>
|
46
|
+
<%= lookbook_render :nav,
|
47
|
+
id: "pages-nav",
|
48
|
+
tree: @pages.to_tree,
|
49
|
+
alpine_data: "$store.nav.pages" do |nav| %>
|
50
|
+
<%= nav.toolbar do |toolbar| %>
|
51
|
+
<% toolbar.section padded: true do %>
|
52
|
+
<h4 class="pt-1">Pages</h4>
|
53
|
+
<% end %>
|
54
|
+
<% toolbar.section align: :right, padded: false do %>
|
55
|
+
<%= lookbook_render :button_group, size: :xs do |group| %>
|
56
|
+
<% group.button icon: :minus_square,
|
57
|
+
tooltip: "Collapse all",
|
58
|
+
"@click": "closeAll" %>
|
59
|
+
<% end %>
|
59
60
|
<% end %>
|
60
61
|
<% end %>
|
61
62
|
<% end %>
|
@@ -69,6 +70,7 @@
|
|
69
70
|
<%= content_for?(:main) ? yield(:main) : yield %>
|
70
71
|
<% end %>
|
71
72
|
<% end %>
|
73
|
+
|
72
74
|
<% else %>
|
73
75
|
<div id="app-main" class="w-screen h-full overflow-hidden">
|
74
76
|
<%= content_for?(:main) ? yield(:main) : yield %>
|
@@ -77,4 +79,4 @@
|
|
77
79
|
<div class="absolute opacity-0 bg-black inset-0 top-[39px] z-[-1] transition-opacity" :class="($store.layout.mobile && !sidebarHidden) && '!opacity-30 !z-40'" data-cloak></div>
|
78
80
|
<% end %>
|
79
81
|
|
80
|
-
<%= render template: "layouts/lookbook/shell" %>
|
82
|
+
<%= render template: "layouts/lookbook/shell" %>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
size: :lg,
|
17
17
|
icon: :chevron_left,
|
18
18
|
tooltip: "Previous page",
|
19
|
-
href: lookbook_page_path(@previous_page.
|
19
|
+
href: lookbook_page_path(@previous_page.path),
|
20
20
|
class: "pr-0.5 bg-transparent" %>
|
21
21
|
<% else %>
|
22
22
|
<%= lookbook_render :button,
|
@@ -31,7 +31,7 @@
|
|
31
31
|
size: :lg,
|
32
32
|
icon: :chevron_right,
|
33
33
|
tooltip: "Next page",
|
34
|
-
href: lookbook_page_path(@next_page.
|
34
|
+
href: lookbook_page_path(@next_page.path),
|
35
35
|
class: "pl-0.5 bg-transparent" %>
|
36
36
|
<% else %>
|
37
37
|
<%= lookbook_render :button,
|
@@ -2,6 +2,7 @@
|
|
2
2
|
<div
|
3
3
|
id="app"
|
4
4
|
x-data="app"
|
5
|
+
x-cloak
|
5
6
|
@popstate.window="handleNavigation"
|
6
7
|
@click.document="hijax"
|
7
8
|
@navigation:start="closeMobileSidebar"
|
@@ -13,8 +14,8 @@
|
|
13
14
|
</style>
|
14
15
|
<% end %>
|
15
16
|
|
16
|
-
<%= lookbook_render :header, id: "app-header", debug_menu: config.debug_menu do |header| %>
|
17
|
-
<% header.branding { config.project_name } %>
|
17
|
+
<%= lookbook_render :header, id: "app-header", debug_menu: @config.debug_menu do |header| %>
|
18
|
+
<% header.branding { @config.project_name } %>
|
18
19
|
<% end %>
|
19
20
|
|
20
21
|
<%= content_for?(:shell) ? yield(:shell) : yield %>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
7
7
|
|
8
8
|
<link href="<%= asset_path("/css/lookbook.css") %>" rel="stylesheet">
|
9
|
-
<link href="<%= asset_path("/css/themes/#{config.ui_theme}.css") %>" rel="stylesheet">
|
9
|
+
<link href="<%= asset_path("/css/themes/#{@config.ui_theme}.css") %>" rel="stylesheet">
|
10
10
|
|
11
11
|
<%- if @theme_overrides.present? %>
|
12
12
|
<style media="all">
|
@@ -14,7 +14,7 @@
|
|
14
14
|
</style>
|
15
15
|
<% end %>
|
16
16
|
|
17
|
-
<% if config.ui_favicon == true %>
|
17
|
+
<% if @config.ui_favicon == true %>
|
18
18
|
<link
|
19
19
|
rel="icon"
|
20
20
|
href="data:image/svg+xml,%3Csvg width='96' height='84' viewBox='0 0 96 84' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath d='M96 0v84H0V0h96Z'/%3E%3C/clipPath%3E%3CclipPath id='b'%3E%3Cpath d='M71.897 0a1.5 1.5 0 0 1 1.31.769l22.605 40.5a1.5 1.5 0 0 1 0 1.462l-22.605 40.5a1.5 1.5 0 0 1-1.31.769H49.481a1 1 0 0 1-.873-1.487L70.812 42.73a1.5 1.5 0 0 0 0-1.462L48.608 1.487A1 1 0 0 1 49.481 0ZM24.655.564l22.72 40.705a1.5 1.5 0 0 1 0 1.462l-22.72 40.705a1 1 0 0 1-1.746 0L.19 42.73a1.5 1.5 0 0 1 0-1.462L22.91.564a1 1 0 0 1 1.746 0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg clip-path='url(%23a)'%3E%3Cg clip-path='url(%23b)'%3E%3Cpath fill='<%= url_encode theme.favicon_dark_mode %>' d='M0 0h96v84H0V0z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"
|
@@ -26,10 +26,10 @@
|
|
26
26
|
<% end %>
|
27
27
|
|
28
28
|
<script>
|
29
|
-
window.LOG_LEVEL = <%=
|
30
|
-
window.APP_NAME = "<%=
|
31
|
-
<% if
|
32
|
-
window.SOCKET_PATH = "<%=
|
29
|
+
window.LOG_LEVEL = <%= @config.log_level %>;
|
30
|
+
window.APP_NAME = "<%= @engine.app_name %>";
|
31
|
+
<% if @engine.websocket.mounted? %>
|
32
|
+
window.SOCKET_PATH = "<%= @engine.websocket.full_mount_path %>";
|
33
33
|
<% end %>
|
34
34
|
</script>
|
35
35
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
<script src="<%= asset_path("/js/embed.js") %>" defer></script>
|
39
39
|
<% end %>
|
40
40
|
|
41
|
-
<title><%= [@title, config.project_name || "Lookbook"].compact.join(" :: ") %></title>
|
41
|
+
<title><%= [@title, @config.project_name || "Lookbook"].compact.join(" :: ") %></title>
|
42
42
|
</head>
|
43
43
|
<body>
|
44
44
|
<%= yield :body %>
|
@@ -1,8 +1,19 @@
|
|
1
1
|
<div id="landing" class="flex flex-col items-center justify-center h-full w-full">
|
2
2
|
<div class="text-center" id="landing-<%= @previews.any? ? "with" : "no" %>-content">
|
3
|
-
|
4
|
-
|
3
|
+
<% if @config.project_name.downcase == "lookbook" %>
|
4
|
+
<div class="flex justify-center pb-4">
|
5
|
+
<svg class="flex-none mx-auto w-[140px]" viewBox="0 0 275 36">
|
6
|
+
<g fill-rule="nonzero" fill="none">
|
7
|
+
<path d="M4.536 35c-1.408 0-2.504-.392-3.288-1.176-.784-.784-1.176-1.88-1.176-3.288V5.576c0-1.44.384-2.544 1.152-3.312.768-.768 1.856-1.152 3.264-1.152 1.44 0 2.536.384 3.288 1.152.752.768 1.128 1.872 1.128 3.312v22.08h11.712c1.216 0 2.152.312 2.808.936.656.624.984 1.528.984 2.712 0 1.184-.328 2.096-.984 2.736-.656.64-1.592.96-2.808.96H4.536ZM42.066.632c3.425 0 6.425.72 9 2.16 2.577 1.44 4.585 3.464 6.025 6.072 1.44 2.608 2.16 5.672 2.16 9.192 0 2.624-.408 5.008-1.224 7.152-.816 2.144-1.984 3.992-3.504 5.544-1.52 1.552-3.336 2.736-5.448 3.552-2.112.816-4.448 1.224-7.008 1.224-3.424 0-6.432-.728-9.024-2.184-2.592-1.456-4.6-3.496-6.024-6.12-1.424-2.624-2.136-5.68-2.136-9.168 0-2.624.408-5.008 1.224-7.152.816-2.144 1.984-3.984 3.504-5.52 1.52-1.536 3.336-2.712 5.448-3.528C37.17 1.04 39.507.632 42.067.632Zm0 7.392c-1.663 0-3.095.392-4.295 1.176-1.2.784-2.12 1.92-2.76 3.408-.64 1.488-.96 3.304-.96 5.448 0 3.168.704 5.64 2.112 7.416 1.408 1.776 3.376 2.664 5.904 2.664 1.696 0 3.136-.4 4.32-1.2 1.07-.723 1.917-1.733 2.543-3.031-.39-1.314-.934-2.855-2.087-5.286-.07-.147-.07-.233 0-.38l2.187-5.84a8.262 8.262 0 0 0-1.06-1.735c-1.407-1.76-3.375-2.64-5.903-2.64ZM80.27.632c3.424 0 6.424.72 9 2.16 2.576 1.44 4.584 3.464 6.024 6.072 1.44 2.608 2.16 5.672 2.16 9.192 0 2.624-.408 5.008-1.224 7.152-.816 2.144-1.984 3.992-3.504 5.544-1.52 1.552-3.336 2.736-5.448 3.552-2.112.816-4.448 1.224-7.008 1.224-3.424 0-6.432-.728-9.024-2.184-2.592-1.456-4.6-3.496-6.024-6.12-1.424-2.624-2.136-5.68-2.136-9.168 0-2.624.408-5.008 1.224-7.152.816-2.144 1.984-3.984 3.504-5.52 1.52-1.536 3.336-2.712 5.448-3.528C75.373 1.04 77.71.632 80.27.632Zm0 7.392c-1.664 0-3.096.392-4.296 1.176-1.2.784-2.12 1.92-2.76 3.408-.64 1.488-.96 3.304-.96 5.448 0 3.168.704 5.64 2.112 7.416 1.408 1.776 3.376 2.664 5.904 2.664 1.696 0 3.136-.4 4.32-1.2.999-.675 1.804-1.6 2.416-2.775-.395-1.37-.933-2.95-2.162-5.542-.07-.147-.07-.233 0-.38l2.276-6.08a8.166 8.166 0 0 0-.946-1.495c-1.408-1.76-3.376-2.64-5.904-2.64Zm26.299 27.408c-1.408 0-2.496-.392-3.264-1.176-.768-.784-1.152-1.88-1.152-3.288V5.192c0-1.472.384-2.584 1.152-3.336.768-.752 1.856-1.128 3.264-1.128 1.44 0 2.536.376 3.288 1.128.752.752 1.128 1.864 1.128 3.336v10.464h.096l11.664-12.864a7.705 7.705 0 0 1 1.944-1.512c.688-.368 1.464-.552 2.328-.552 1.344 0 2.312.344 2.904 1.032.592.688.864 1.488.816 2.4-.048.912-.424 1.752-1.128 2.52l-11.616 12.336v-3.6l12.192 13.776c.832.928 1.248 1.88 1.248 2.856s-.328 1.784-.984 2.424c-.656.64-1.624.96-2.904.96-1.088 0-1.96-.216-2.616-.648-.656-.432-1.368-1.08-2.136-1.944L111.08 19.736h-.096v11.232c0 1.408-.368 2.504-1.104 3.288-.736.784-1.84 1.176-3.312 1.176Z" fill="#919191"/>
|
8
|
+
<path d="M140.403 35c-1.504 0-2.648-.392-3.432-1.176-.784-.784-1.176-1.912-1.176-3.384V5.72c0-1.472.392-2.6 1.176-3.384.784-.784 1.928-1.176 3.432-1.176h11.712c2.432 0 4.504.36 6.216 1.08 1.712.72 3.016 1.736 3.912 3.048.896 1.312 1.344 2.848 1.344 4.608 0 1.984-.568 3.68-1.704 5.088-1.136 1.408-2.68 2.368-4.632 2.88v-.768c2.304.416 4.088 1.344 5.352 2.784 1.264 1.44 1.896 3.28 1.896 5.52 0 2.976-1.064 5.32-3.192 7.032-2.128 1.712-5.032 2.568-8.712 2.568h-12.192Zm3.84-6.48h7.152c1.632 0 2.824-.312 3.576-.936.752-.624 1.128-1.56 1.128-2.808 0-1.248-.376-2.176-1.128-2.784-.752-.608-1.944-.912-3.576-.912h-7.152v7.44Zm0-13.92h6.288c1.6 0 2.776-.288 3.528-.864.752-.576 1.128-1.456 1.128-2.64 0-1.184-.376-2.056-1.128-2.616-.752-.56-1.928-.84-3.528-.84h-6.288v6.96Zm41.034 20.928c-3.424 0-6.432-.728-9.024-2.184-2.592-1.456-4.6-3.496-6.024-6.12-1.424-2.624-2.136-5.68-2.136-9.168 0-2.624.408-5.008 1.224-7.152.816-2.144 1.984-3.984 3.504-5.52 1.52-1.536 3.336-2.712 5.448-3.528 2.112-.816 4.448-1.224 7.008-1.224 3.424 0 6.424.72 9 2.16 2.576 1.44 4.584 3.464 6.024 6.072 1.44 2.608 2.16 5.672 2.16 9.192 0 2.624-.408 5.008-1.224 7.152-.816 2.144-1.984 3.992-3.504 5.544-1.52 1.552-3.336 2.736-5.448 3.552-2.112.816-4.448 1.224-7.008 1.224Zm0-7.392c1.696 0 3.136-.4 4.32-1.2 1.184-.8 2.096-1.952 2.736-3.456.64-1.504.96-3.312.96-5.424 0-3.168-.704-5.632-2.112-7.392-1.408-1.76-3.376-2.64-5.904-2.64-1.664 0-3.096.392-4.296 1.176-1.2.784-2.12 1.92-2.76 3.408-.64 1.488-.96 3.304-.96 5.448 0 3.168.704 5.64 2.112 7.416 1.408 1.776 3.376 2.664 5.904 2.664Zm38.203 7.392c-3.424 0-6.432-.728-9.024-2.184-2.592-1.456-4.6-3.496-6.024-6.12-1.424-2.624-2.136-5.68-2.136-9.168 0-2.624.408-5.008 1.224-7.152.816-2.144 1.984-3.984 3.504-5.52 1.52-1.536 3.336-2.712 5.448-3.528 2.112-.816 4.448-1.224 7.008-1.224 3.424 0 6.424.72 9 2.16 2.576 1.44 4.584 3.464 6.024 6.072 1.44 2.608 2.16 5.672 2.16 9.192 0 2.624-.408 5.008-1.224 7.152-.816 2.144-1.984 3.992-3.504 5.544-1.52 1.552-3.336 2.736-5.448 3.552-2.112.816-4.448 1.224-7.008 1.224Zm0-7.392c1.696 0 3.136-.4 4.32-1.2 1.184-.8 2.096-1.952 2.736-3.456.64-1.504.96-3.312.96-5.424 0-3.168-.704-5.632-2.112-7.392-1.408-1.76-3.376-2.64-5.904-2.64-1.664 0-3.096.392-4.296 1.176-1.2.784-2.12 1.92-2.76 3.408-.64 1.488-.96 3.304-.96 5.448 0 3.168.704 5.64 2.112 7.416 1.408 1.776 3.376 2.664 5.904 2.664Zm26.299 7.296c-1.408 0-2.496-.392-3.264-1.176-.768-.784-1.152-1.88-1.152-3.288V5.192c0-1.472.384-2.584 1.152-3.336.768-.752 1.856-1.128 3.264-1.128 1.44 0 2.536.376 3.288 1.128.752.752 1.128 1.864 1.128 3.336v10.464h.096l11.664-12.864a7.705 7.705 0 0 1 1.944-1.512c.688-.368 1.464-.552 2.328-.552 1.344 0 2.312.344 2.904 1.032.592.688.864 1.488.816 2.4-.048.912-.424 1.752-1.128 2.52l-11.616 12.336v-3.6l12.192 13.776c.832.928 1.248 1.88 1.248 2.856s-.328 1.784-.984 2.424c-.656.64-1.624.96-2.904.96-1.088 0-1.96-.216-2.616-.648-.656-.432-1.368-1.08-2.136-1.944L254.29 19.736h-.096v11.232c0 1.408-.368 2.504-1.104 3.288-.736.784-1.84 1.176-3.312 1.176Z" fill="#ABABAB"/>
|
9
|
+
</g>
|
10
|
+
</svg>
|
11
|
+
</div>
|
12
|
+
<% elsif @config.project_name != false %>
|
13
|
+
<h5 class="text-base text-lookbook-blank-slate-title truncate uppercase font-black tracking-wide mb-2">
|
14
|
+
<%= @config.project_name %>
|
5
15
|
</h5>
|
16
|
+
<% end %>
|
6
17
|
<div class="opacity-60">
|
7
18
|
<% if @previews.any? %>
|
8
19
|
<p>Select a preview from the nav to get started.</p>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -3,18 +3,18 @@ button_classes = [
|
|
3
3
|
"relative inline-flex flex-shrink-0 h-6 w-11 border-2 border-transparent rounded-full
|
4
4
|
cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none focus:ring-2
|
5
5
|
focus:ring-offset-2 focus:ring-input-border-focus",
|
6
|
-
value == true ? "bg-lookbook-input-toggle-active" : "bg-lookbook-input-toggle"
|
6
|
+
value == "true" ? "bg-lookbook-input-toggle-active" : "bg-lookbook-input-toggle"
|
7
7
|
]
|
8
8
|
span_classes = [
|
9
9
|
"pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow ring-0 transition ease-in-out duration-200",
|
10
|
-
value == true ? "translate-x-5" : "translate-x-0"
|
10
|
+
value == "true" ? "translate-x-5" : "translate-x-0"
|
11
11
|
]
|
12
12
|
%>
|
13
13
|
|
14
|
-
<%=
|
14
|
+
<%= tag.button **input_options,
|
15
15
|
class: class_names(button_classes),
|
16
16
|
role: "switch",
|
17
17
|
type: "button",
|
18
|
-
"@click.stop": "value =
|
18
|
+
"@click.stop": "value = value == 'true' ? 'false' : 'true'", escape: false do %>
|
19
19
|
<%= tag.span "aria-hidden": true, class: class_names(span_classes) %>
|
20
|
-
<% end %>
|
20
|
+
<% end %>
|
File without changes
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<% if items.many? %>
|
3
3
|
<div class="divide-y divide-dashed divide-lookbook-divider bg-lookbook-prose-bg h-full w-full">
|
4
4
|
<% items.each do |item| %>
|
5
|
-
<div class="
|
5
|
+
<div class="p-4 relative">
|
6
6
|
<h6 class="italic font-mono mb-4 opacity-40">
|
7
7
|
# <%= item.label %>
|
8
8
|
</h6>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<% end %>
|
12
12
|
</div>
|
13
13
|
<% else %>
|
14
|
-
<div class="
|
14
|
+
<div class="p-4 w-full h-full bg-lookbook-prose-bg">
|
15
15
|
<%= lookbook_render :prose do %>
|
16
16
|
<%== items.any? ? items.first.notes : "<em class='opacity-50'>No notes provided.</em>" %>
|
17
17
|
<% end %>
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<% if @params.none? %>
|
2
|
+
<div class="p-4 w-full h-full bg-lookbook-prose-bg" id="params-editor-blank-slate">
|
3
|
+
<%= lookbook_render :prose do %>
|
4
|
+
<em class='opacity-50'>No params configured.</em>
|
5
|
+
<% end %>
|
6
|
+
</div>
|
7
|
+
<% else %>
|
8
|
+
<div class="p-4 w-full h-full overflow-x-hidden" id="params-editor-<%= @target.id %>">
|
9
|
+
<%= lookbook_render "params/editor" do |editor| %>
|
10
|
+
<% @params.each do |param| %>
|
11
|
+
<% editor.field param: param %>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
14
|
+
</div>
|
15
|
+
<% end %>
|
File without changes
|
File without changes
|