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
@@ -0,0 +1,406 @@
|
|
1
|
+
.theme-github {
|
2
|
+
--dark-bg: #111111;
|
3
|
+
--dark-gray-1: #404040;
|
4
|
+
--dark-gray-2: #d0d0d0;
|
5
|
+
--dark-gray-3: #cccccc;
|
6
|
+
--dark-gray-4: #777777;
|
7
|
+
--dark-gray-5: #aaaaaa;
|
8
|
+
--dark-gray-6: #bbbbbb;
|
9
|
+
--dark-gray-7: #666666;
|
10
|
+
--dark-blue-1: #3677a9;
|
11
|
+
--dark-blue-2: #24909d;
|
12
|
+
--dark-blue-3: #447fcf;
|
13
|
+
--dark-blue-4: #009988;
|
14
|
+
--dark-red-1: #a61717;
|
15
|
+
--dark-red-2: #331111;
|
16
|
+
--dark-red-3: #e50808;
|
17
|
+
--dark-red-4: #520000;
|
18
|
+
--dark-red-5: #d22323;
|
19
|
+
--dark-red-6: #cd2828;
|
20
|
+
--dark-yellow-1: #e9b96e;
|
21
|
+
--dark-yellow-2: #ffa500;
|
22
|
+
--dark-orange: #d2691e;
|
23
|
+
--dark-white: #ffffff;
|
24
|
+
--dark-green-1: #589819;
|
25
|
+
--dark-green-2: #6ab825;
|
26
|
+
--dark-green-3: #44ccaa;
|
27
|
+
|
28
|
+
--light-bg: #ffffff;
|
29
|
+
--light-gray-1: #f8f8f8;
|
30
|
+
--light-gray-2: #27272a;
|
31
|
+
--light-gray-3: #cccccc;
|
32
|
+
--light-gray-4: #888888;
|
33
|
+
--light-gray-5: #999999;
|
34
|
+
--light-gray-6: #555555;
|
35
|
+
--light-gray-7: #bbbbbb;
|
36
|
+
--light-yellow-1: #999988;
|
37
|
+
--light-red-1: #a61717;
|
38
|
+
--light-red-2: #e3d2d2;
|
39
|
+
--light-red-3: #dd1144;
|
40
|
+
--light-red-4: #ffdddd;
|
41
|
+
--light-red-5: #aa0000;
|
42
|
+
--light-red-6: #990000;
|
43
|
+
--light-purple-1: #800080;
|
44
|
+
--light-purple-2: #990073;
|
45
|
+
--light-black: #000000;
|
46
|
+
--light-green-1: #ddffdd;
|
47
|
+
--light-green-2: #009926;
|
48
|
+
--light-blue-1: #445588;
|
49
|
+
--light-blue-2: #009999;
|
50
|
+
--light-blue-3: #008080;
|
51
|
+
--light-blue-4: #0086b3;
|
52
|
+
--light-blue-5: #3c5d5d;
|
53
|
+
--light-blue-6: #000080;
|
54
|
+
|
55
|
+
--hl-bg: var(--light-bg);
|
56
|
+
--hl-hll-bg: var(--light-gray-1);
|
57
|
+
--hl-border: var(--light-gray-3);
|
58
|
+
--hl-line-number: var(--light-gray-2);
|
59
|
+
--hl-comment: var(--light-yellow-1);
|
60
|
+
--hl-comment-preproc: var(--light-gray-5);
|
61
|
+
--hl-comment-special-fg: var(--light-gray-5);
|
62
|
+
--hl-comment-special-bg: transparent;
|
63
|
+
--hl-error-fg: var(--light-red-1);
|
64
|
+
--hl-error-bg: var(--light-red-2);
|
65
|
+
--hl-subtle-fg: var(--light-gray-2);
|
66
|
+
--hl-entity: var(--light-purple-1);
|
67
|
+
--hl-keyword: var(--light-black);
|
68
|
+
--hl-output: var(--light-gray-4);
|
69
|
+
--hl-operator: var(--light-black);
|
70
|
+
--hl-punctuation: var(--light-gray-6);
|
71
|
+
--hl-string: var(--light-red-3);
|
72
|
+
--hl-string-other: var(--light-red-3);
|
73
|
+
--hl-string-regex: var(--light-green-2);
|
74
|
+
--hl-string-symbol: var(--light-purple-2);
|
75
|
+
--hl-deleted-fg: var(--light-black);
|
76
|
+
--hl-deleted-bg: var(--light-red-4);
|
77
|
+
--hl-danger: var(--light-red-5);
|
78
|
+
--hl-heading: var(--light-gray-5);
|
79
|
+
--hl-inserted-fg: var(--light-black);
|
80
|
+
--hl-inserted-bg: var(--light-green-1);
|
81
|
+
--hl-prompt: var(--light-gray-6);
|
82
|
+
--hl-subheading: var(--light-purple-1);
|
83
|
+
--hl-keyword-crude: var(--light-black);
|
84
|
+
--hl-keyword-subtle: var(--light-blue-1);
|
85
|
+
--hl-number: var(--light-blue-2);
|
86
|
+
--hl-attribute: var(--light-blue-3);
|
87
|
+
--hl-builtin: var(--light-blue-4);
|
88
|
+
--hl-builtin-pseudo: var(--light-gray-5);
|
89
|
+
--hl-class: var(--light-blue-1);
|
90
|
+
--hl-variable: var(--light-blue-3);
|
91
|
+
--hl-decorator: var(--light-blue-5);
|
92
|
+
--hl-exception: var(--light-red-6);
|
93
|
+
--hl-function: var(--light-red-6);
|
94
|
+
--hl-namespace: var(--light-gray-6);
|
95
|
+
--hl-tag: var(--light-blue-6);
|
96
|
+
--hl-word: var(--light-black);
|
97
|
+
--hl-whitespace: var(--light-gray-7);
|
98
|
+
|
99
|
+
&.dark {
|
100
|
+
--hl-bg: var(--dark-bg);
|
101
|
+
--hl-hll-bg: var(--dark-gray-1);
|
102
|
+
--hl-border: var(--dark-gray-4);
|
103
|
+
--hl-line-number: var(--dark-gray-2);
|
104
|
+
--hl-comment: var(--dark-blue-1);
|
105
|
+
--hl-comment-preproc: var(--dark-orange);
|
106
|
+
--hl-comment-special-fg: var(--dark-red-3);
|
107
|
+
--hl-comment-special-bg: var(--dark-red-4);
|
108
|
+
--hl-error-fg: var(--dark-red-1);
|
109
|
+
--hl-error-bg: var(--dark-red-2);
|
110
|
+
--hl-subtle-fg: var(--dark-gray-2);
|
111
|
+
--hl-entity: var(--dark-gray-2);
|
112
|
+
--hl-keyword: var(--dark-gray-3);
|
113
|
+
--hl-output: var(--dark-gray-3);
|
114
|
+
--hl-operator: var(--dark-gray-4);
|
115
|
+
--hl-punctuation: var(--dark-yellow-1);
|
116
|
+
--hl-string: var(--dark-orange);
|
117
|
+
--hl-string-other: var(--dark-yellow-2);
|
118
|
+
--hl-string-regex: var(--dark-red-6);
|
119
|
+
--hl-string-symbol: var(--dark-orange);
|
120
|
+
--hl-deleted-fg: var(--dark-red-5);
|
121
|
+
--hl-deleted-bg: transparent;
|
122
|
+
--hl-danger: var(--dark-red-5);
|
123
|
+
--hl-heading: var(--dark-white);
|
124
|
+
--hl-inserted-fg: var(--dark-green-1);
|
125
|
+
--hl-inserted-bg: transparent;
|
126
|
+
--hl-prompt: var(--dark-gray-5);
|
127
|
+
--hl-subheading: var(--dark-white);
|
128
|
+
--hl-keyword-crude: var(--dark-green-2);
|
129
|
+
--hl-keyword-subtle: var(--dark-green-2);
|
130
|
+
--hl-number: var(--dark-red-6);
|
131
|
+
--hl-attribute: var(--dark-gray-6);
|
132
|
+
--hl-builtin: var(--dark-blue-2);
|
133
|
+
--hl-builtin-pseudo: var(--dark-blue-2);
|
134
|
+
--hl-class: var(--dark-blue-3);
|
135
|
+
--hl-variable: var(--dark-green-3);
|
136
|
+
--hl-decorator: var(--dark-yellow-2);
|
137
|
+
--hl-exception: var(--dark-gray-6);
|
138
|
+
--hl-function: var(--dark-blue-4);
|
139
|
+
--hl-namespace: var(--dark-blue-3);
|
140
|
+
--hl-tag: var(--dark-green-2);
|
141
|
+
--hl-word: var(--dark-green-2);
|
142
|
+
--hl-whitespace: var(--dark-gray-7);
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
.theme-github {
|
147
|
+
background-color: var(--hl-bg);
|
148
|
+
|
149
|
+
.line-numbers {
|
150
|
+
background-color: var(--hl-bg);
|
151
|
+
border-color: var(--hl-border);
|
152
|
+
color: var(--hl-line-number);
|
153
|
+
}
|
154
|
+
|
155
|
+
.highlight {
|
156
|
+
.hll {
|
157
|
+
background-color: var(--hl-hll-bg);
|
158
|
+
}
|
159
|
+
.c {
|
160
|
+
color: var(--hl-comment);
|
161
|
+
font-style: italic;
|
162
|
+
} /* Comment */
|
163
|
+
.err {
|
164
|
+
color: var(--hl-error-fg);
|
165
|
+
background-color: var(--hl-error-bg);
|
166
|
+
} /* Error */
|
167
|
+
.g {
|
168
|
+
color: var(--hl-subtle-fg);
|
169
|
+
} /* Generic */
|
170
|
+
.k {
|
171
|
+
color: var(--hl-keyword);
|
172
|
+
font-weight: bold;
|
173
|
+
} /* Keyword; catches prefixes and css3 */
|
174
|
+
.l {
|
175
|
+
color: var(--hl-subtle-fg);
|
176
|
+
} /* Literal */
|
177
|
+
.n,
|
178
|
+
.h {
|
179
|
+
color: var(--hl-keyword);
|
180
|
+
} /* Name */
|
181
|
+
.o {
|
182
|
+
color: var(--hl-operator);
|
183
|
+
font-weight: bold;
|
184
|
+
} /* Operator */
|
185
|
+
.x {
|
186
|
+
color: var(--hl-subtle-fg);
|
187
|
+
} /* Other */
|
188
|
+
.p {
|
189
|
+
color: var(--hl-punctuation);
|
190
|
+
} /* Punctuation */
|
191
|
+
.cm {
|
192
|
+
color: var(--hl-comment);
|
193
|
+
font-style: italic;
|
194
|
+
} /* Comment.Multiline */
|
195
|
+
.cp {
|
196
|
+
color: var(--hl-comment-preproc);
|
197
|
+
font-weight: bold;
|
198
|
+
} /* Comment.Preproc */
|
199
|
+
.c1 {
|
200
|
+
color: var(--hl-comment);
|
201
|
+
font-style: italic;
|
202
|
+
} /* Comment.Single */
|
203
|
+
.cs {
|
204
|
+
color: var(--hl-comment-special-fg);
|
205
|
+
background-color: var(--hl-comment-special-bg);
|
206
|
+
font-weight: bold;
|
207
|
+
font-style: italic;
|
208
|
+
} /* Comment.Special */
|
209
|
+
.gd {
|
210
|
+
color: var(--hl-deleted-fg);
|
211
|
+
background-color: var(--hl-deleted-bg);
|
212
|
+
} /* Generic.Deleted */
|
213
|
+
.ge {
|
214
|
+
color: var(--hl-subtle-fg);
|
215
|
+
font-style: italic;
|
216
|
+
} /* Generic.Emph */
|
217
|
+
.gr {
|
218
|
+
color: var(--hl-danger);
|
219
|
+
} /* Generic.Error */
|
220
|
+
.gh {
|
221
|
+
color: var(--hl-heading);
|
222
|
+
} /* Generic.Heading */
|
223
|
+
.gi {
|
224
|
+
color: var(--hl-inserted-fg);
|
225
|
+
background-color: var(--hl-inserted-bg);
|
226
|
+
} /* Generic.Inserted */
|
227
|
+
.go {
|
228
|
+
color: var(--hl-output);
|
229
|
+
} /* Generic.Output */
|
230
|
+
.gp {
|
231
|
+
color: var(--hl-prompt);
|
232
|
+
} /* Generic.Prompt */
|
233
|
+
.gs {
|
234
|
+
color: var(--hl-subtle-fg);
|
235
|
+
font-weight: bold;
|
236
|
+
} /* Generic.Strong */
|
237
|
+
.gu {
|
238
|
+
color: var(--hl-subheading);
|
239
|
+
font-weight: bold;
|
240
|
+
} /* Generic.Subheading */
|
241
|
+
.gt {
|
242
|
+
color: var(--hl-danger);
|
243
|
+
} /* Generic.Traceback */
|
244
|
+
.kc {
|
245
|
+
color: var(--hl-keyword-crude);
|
246
|
+
font-weight: bold;
|
247
|
+
} /* Keyword.Constant */
|
248
|
+
.kd {
|
249
|
+
color: var(--hl-keyword-crude);
|
250
|
+
font-weight: bold;
|
251
|
+
} /* Keyword.Declaration */
|
252
|
+
.kn {
|
253
|
+
color: var(--hl-keyword-crude);
|
254
|
+
font-weight: bold;
|
255
|
+
} /* Keyword.Namespace */
|
256
|
+
.kp {
|
257
|
+
color: var(--hl-keyword-crude);
|
258
|
+
font-weight: bold;
|
259
|
+
} /* Keyword.Pseudo */
|
260
|
+
.kr {
|
261
|
+
color: var(--hl-keyword-crude);
|
262
|
+
font-weight: bold;
|
263
|
+
} /* Keyword.Reserved */
|
264
|
+
.kt {
|
265
|
+
color: var(--hl-keyword-subtle);
|
266
|
+
font-weight: bold;
|
267
|
+
} /* Keyword.Type */
|
268
|
+
.ld {
|
269
|
+
color: var(--hl-subtle-fg);
|
270
|
+
} /* Literal.Date */
|
271
|
+
.m {
|
272
|
+
color: var(--hl-number);
|
273
|
+
} /* Literal.Number */
|
274
|
+
.s {
|
275
|
+
color: var(--hl-string);
|
276
|
+
} /* Literal.String */
|
277
|
+
.na {
|
278
|
+
color: var(--hl-attribute);
|
279
|
+
} /* Name.Attribute */
|
280
|
+
.nb {
|
281
|
+
color: var(--hl-builtin);
|
282
|
+
} /* Name.Builtin */
|
283
|
+
.nc {
|
284
|
+
color: var(--hl-class);
|
285
|
+
font-weight: bold;
|
286
|
+
} /* Name.Class */
|
287
|
+
.no {
|
288
|
+
color: var(--hl-variable);
|
289
|
+
} /* Name.Constant */
|
290
|
+
.nd {
|
291
|
+
color: var(--hl-decorator);
|
292
|
+
} /* Name.Decorator */
|
293
|
+
.ni {
|
294
|
+
color: var(--hl-entity);
|
295
|
+
} /* Name.Entity */
|
296
|
+
.ne {
|
297
|
+
color: var(--hl-exception);
|
298
|
+
font-weight: bold;
|
299
|
+
} /* Name.Exception */
|
300
|
+
.nf {
|
301
|
+
color: var(--hl-function);
|
302
|
+
font-weight: bold;
|
303
|
+
} /* Name.Function */
|
304
|
+
.nl {
|
305
|
+
color: var(--hl-subtle-fg);
|
306
|
+
} /* Name.Label */
|
307
|
+
.nn {
|
308
|
+
color: var(--hl-namespace);
|
309
|
+
} /* Name.Namespace */
|
310
|
+
.nx {
|
311
|
+
color: var(--hl-subtle-fg);
|
312
|
+
} /* Name.Other */
|
313
|
+
.py {
|
314
|
+
color: var(--hl-subtle-fg);
|
315
|
+
} /* Name.Property */
|
316
|
+
.nt {
|
317
|
+
color: var(--hl-tag);
|
318
|
+
} /* Name.Tag */
|
319
|
+
.nv {
|
320
|
+
color: var(--hl-variable);
|
321
|
+
} /* Name.Variable */
|
322
|
+
.ow {
|
323
|
+
color: var(--hl-word);
|
324
|
+
font-weight: bold;
|
325
|
+
} /* Operator.Word */
|
326
|
+
.w {
|
327
|
+
color: var(--hl-whitespace);
|
328
|
+
} /* Text.Whitespace */
|
329
|
+
.mf {
|
330
|
+
color: var(--hl-number);
|
331
|
+
} /* Literal.Number.Float */
|
332
|
+
.mh {
|
333
|
+
color: var(--hl-number);
|
334
|
+
} /* Literal.Number.Hex */
|
335
|
+
.mi {
|
336
|
+
color: var(--hl-number);
|
337
|
+
} /* Literal.Number.Integer */
|
338
|
+
.mo {
|
339
|
+
color: var(--hl-number);
|
340
|
+
} /* Literal.Number.Oct */
|
341
|
+
.sb {
|
342
|
+
color: var(--hl-string);
|
343
|
+
} /* Literal.String.Backtick */
|
344
|
+
.sc {
|
345
|
+
color: var(--hl-string);
|
346
|
+
} /* Literal.String.Char */
|
347
|
+
.sd {
|
348
|
+
color: var(--hl-string);
|
349
|
+
} /* Literal.String.Doc */
|
350
|
+
.s2 {
|
351
|
+
color: var(--hl-string);
|
352
|
+
} /* Literal.String.Double */
|
353
|
+
.se {
|
354
|
+
color: var(--hl-string);
|
355
|
+
} /* Literal.String.Escape */
|
356
|
+
.sh {
|
357
|
+
color: var(--hl-string);
|
358
|
+
} /* Literal.String.Heredoc */
|
359
|
+
.si {
|
360
|
+
color: var(--hl-string);
|
361
|
+
} /* Literal.String.Interpol */
|
362
|
+
.sx {
|
363
|
+
color: var(--hl-string-other);
|
364
|
+
} /* Literal.String.Other */
|
365
|
+
.sr {
|
366
|
+
color: var(--hl-string-regex);
|
367
|
+
} /* Literal.String.Regex */
|
368
|
+
.s1 {
|
369
|
+
color: var(--hl-string);
|
370
|
+
} /* Literal.String.Single */
|
371
|
+
.ss {
|
372
|
+
color: var(--hl-string-symbol);
|
373
|
+
} /* Literal.String.Symbol */
|
374
|
+
.bp {
|
375
|
+
color: var(--hl-builtin-pseudo);
|
376
|
+
} /* Name.Builtin.Pseudo */
|
377
|
+
.vc {
|
378
|
+
color: var(--hl-variable);
|
379
|
+
} /* Name.Variable.Class */
|
380
|
+
.vg {
|
381
|
+
color: var(--hl-variable);
|
382
|
+
} /* Name.Variable.Global */
|
383
|
+
.vi {
|
384
|
+
color: var(--hl-variable);
|
385
|
+
} /* Name.Variable.Instance */
|
386
|
+
.il {
|
387
|
+
color: var(--hl-number);
|
388
|
+
} /* Literal.Number.Integer.Long */
|
389
|
+
|
390
|
+
/* Make line numbers unselectable: excludes line numbers from copy-paste user ops */
|
391
|
+
.line-number {
|
392
|
+
-webkit-user-select: none;
|
393
|
+
-moz-user-select: none;
|
394
|
+
}
|
395
|
+
|
396
|
+
/* Mozilla specific */
|
397
|
+
.line-number::-moz-selection {
|
398
|
+
background-color: transparent;
|
399
|
+
}
|
400
|
+
|
401
|
+
/* Other major browsers */
|
402
|
+
.line-number::selection {
|
403
|
+
background-color: transparent;
|
404
|
+
}
|
405
|
+
}
|
406
|
+
}
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<% menu = lookbook_render :debug_menu,
|
26
26
|
version: Lookbook::VERSION,
|
27
27
|
docs_url: "https://lookbook.build/guide",
|
28
|
-
repo_url: "https://github.com/
|
28
|
+
repo_url: "https://github.com/ViewComponent/lookbook" do %>
|
29
29
|
<%= helpers.pretty_json(Lookbook.debug_data) %>
|
30
30
|
<% end %>
|
31
31
|
<% button.dropdown({}).with_content(menu) %>
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require "css_parser"
|
2
|
-
|
3
1
|
module Lookbook
|
4
2
|
class InspectorPanel::Component < Lookbook::BaseComponent
|
5
3
|
attr_reader :panel_styles, :panel_html
|
@@ -10,13 +8,13 @@ module Lookbook
|
|
10
8
|
end
|
11
9
|
|
12
10
|
def id
|
13
|
-
|
11
|
+
Utils.id("panel", @name)
|
14
12
|
end
|
15
13
|
|
16
14
|
def before_render
|
17
|
-
|
18
|
-
@panel_styles =
|
19
|
-
@panel_html =
|
15
|
+
styles, html = StylesExtractor.call(content)
|
16
|
+
@panel_styles = styles.map { |s| "##{id} #{s}" }.join("\n")
|
17
|
+
@panel_html = html.html_safe
|
20
18
|
end
|
21
19
|
end
|
22
20
|
end
|
@@ -3,25 +3,18 @@ module Lookbook
|
|
3
3
|
renders_one :filter, Lookbook::Filter::Component
|
4
4
|
renders_one :toolbar, Lookbook::Toolbar::Component
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@id = id.presence || "#{collection.id}-nav"
|
12
|
-
@collection = collection.as_tree
|
13
|
-
@item_args = {
|
14
|
-
collapse_singles: collapse_singles
|
15
|
-
}
|
6
|
+
attr_reader :id, :tree
|
7
|
+
|
8
|
+
def initialize(tree:, id: nil, **attrs)
|
9
|
+
@id = id
|
10
|
+
@tree = tree
|
16
11
|
super(**attrs, id: id)
|
17
12
|
end
|
18
13
|
|
19
14
|
def items
|
20
|
-
@
|
21
|
-
|
22
|
-
|
23
|
-
depth: 1,
|
24
|
-
**@item_args
|
15
|
+
@items ||= tree.map do |node|
|
16
|
+
item_class = (node.type == :directory) ? Nav::Directory::Component : Nav::Entity::Component
|
17
|
+
lookbook_render item_class.new node, nav_id: id
|
25
18
|
end
|
26
19
|
end
|
27
20
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<%= render_component_tag :li,
|
2
|
+
id: id,
|
3
|
+
key: "#{id}-directory",
|
4
|
+
class: "list-none",
|
5
|
+
"x-show": "!filteredOut",
|
6
|
+
data: { "entity-type": :directory },
|
7
|
+
cloak: true do %>
|
8
|
+
<%= lookbook_tag :button,
|
9
|
+
key: "#{id}-action",
|
10
|
+
class: "nav-action",
|
11
|
+
style: "padding-left: #{left_pad}px",
|
12
|
+
"x-bind": "bindings.toggle" do %>
|
13
|
+
<div class="nav-action-inner">
|
14
|
+
<%= icon nil,
|
15
|
+
size: 3,
|
16
|
+
class: "nav-toggle-icon",
|
17
|
+
"x-effect": "iconName = open ? 'chevron-down' : 'chevron-right'" if children? %>
|
18
|
+
<%= icon nav_icon, size: 3.5, class: "mr-1.5 text-lookbook-nav-icon-stroke" %>
|
19
|
+
<span class="truncate"><%= label %></span>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<% if children? %>
|
24
|
+
<ul x-ref="items" x-show="open" x-cloak>
|
25
|
+
<%= safe_join(children) %>
|
26
|
+
</ul>
|
27
|
+
<% end %>
|
28
|
+
<% end %>
|
@@ -1,23 +1,23 @@
|
|
1
1
|
<%= render_component_tag :li,
|
2
2
|
id: id,
|
3
|
+
key: "#{id}-entity-#{type}",
|
3
4
|
class: "list-none",
|
4
5
|
"x-show": "!filteredOut",
|
5
|
-
data: {
|
6
|
-
"entity-type": item.type
|
7
|
-
},
|
6
|
+
data: { "entity-type": type },
|
8
7
|
cloak: true do %>
|
9
|
-
<%= lookbook_tag href.present? ? :a : :
|
8
|
+
<%= lookbook_tag href.present? ? :a : :button,
|
10
9
|
href: href,
|
11
|
-
|
10
|
+
key: "#{id}-action",
|
11
|
+
class: "nav-action",
|
12
12
|
style: "padding-left: #{left_pad}px",
|
13
13
|
"x-bind": "bindings.#{href.present? ? "link" : "toggle"}" do %>
|
14
|
-
<div class="
|
14
|
+
<div class="nav-action-inner">
|
15
15
|
<%= icon nil,
|
16
16
|
size: 3,
|
17
|
-
class: "
|
17
|
+
class: "nav-toggle-icon",
|
18
18
|
"x-effect": "iconName = open ? 'chevron-down' : 'chevron-right'" if children? %>
|
19
19
|
<%= icon nav_icon, size: 3.5, class: "mr-1.5 text-lookbook-nav-icon-stroke" %>
|
20
|
-
<span class="truncate <% if
|
20
|
+
<span class="truncate <% if node.type == :preview %>font-bold<% end %>"><%= label %></span>
|
21
21
|
</div>
|
22
22
|
<% end %>
|
23
23
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Lookbook
|
2
|
+
class Nav::Entity::Component < Nav::Item::Component
|
3
|
+
ICONS = {
|
4
|
+
page: :file,
|
5
|
+
preview: :layers,
|
6
|
+
example: :eye,
|
7
|
+
group: :eye
|
8
|
+
}.freeze
|
9
|
+
|
10
|
+
def nav_icon
|
11
|
+
ICONS[collapsed? ? :preview : node.type] || :file
|
12
|
+
end
|
13
|
+
|
14
|
+
def href
|
15
|
+
if collapsed?
|
16
|
+
node.first.url_path
|
17
|
+
elsif type != :preview
|
18
|
+
node.url_path
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def children
|
23
|
+
collapsed? ? [] : super
|
24
|
+
end
|
25
|
+
|
26
|
+
def type
|
27
|
+
collapsed? ? :example : node.type
|
28
|
+
end
|
29
|
+
|
30
|
+
def collapsed?
|
31
|
+
node.type == :preview && node.children.one?
|
32
|
+
end
|
33
|
+
|
34
|
+
def search_terms
|
35
|
+
matchers = if collapsed?
|
36
|
+
node.first.search_terms
|
37
|
+
else
|
38
|
+
node.respond_to?(:search_terms) ? Array(node.search_terms) : []
|
39
|
+
end
|
40
|
+
matchers.flatten.map { |m| m.gsub(/\s/, "").downcase }
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def alpine_data
|
46
|
+
alpine_encode({id: node.id, matchers: search_terms})
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
@layer components {
|
2
|
+
[data-component="nav"] {
|
3
|
+
.nav-action {
|
4
|
+
@apply flex w-full items-center py-1 select-none cursor-pointer text-lookbook-nav-text hover:bg-lookbook-nav-item-hover transition;
|
5
|
+
}
|
6
|
+
|
7
|
+
.nav-action-inner {
|
8
|
+
@apply relative flex items-center w-full;
|
9
|
+
}
|
10
|
+
|
11
|
+
.nav-toggle-icon {
|
12
|
+
@apply mr-1 text-lookbook-nav-toggle absolute -left-4;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
}
|