lookbook 1.2.1 → 1.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +47 -14
  4. data/app/assets/lookbook/css/themes/blue.css +4 -2
  5. data/app/assets/lookbook/css/themes/green.css +66 -0
  6. data/app/assets/lookbook/css/themes/indigo.css +4 -2
  7. data/app/assets/lookbook/css/themes/rose.css +66 -0
  8. data/app/assets/lookbook/css/themes/zinc.css +4 -2
  9. data/app/components/lookbook/base_component.rb +2 -2
  10. data/app/components/lookbook/code/component.css +2 -2
  11. data/app/components/lookbook/code/component.html.erb +3 -2
  12. data/app/components/lookbook/code/component.rb +13 -2
  13. data/app/components/lookbook/code/highlight_github.css +406 -0
  14. data/app/components/lookbook/header/component.html.erb +1 -1
  15. data/app/components/lookbook/inspector_panel/component.rb +4 -6
  16. data/app/components/lookbook/nav/component.rb +8 -15
  17. data/app/components/lookbook/nav/directory/component.html.erb +28 -0
  18. data/app/components/lookbook/nav/directory/component.rb +4 -0
  19. data/app/components/lookbook/nav/{item → entity}/component.html.erb +8 -8
  20. data/app/components/lookbook/nav/entity/component.rb +49 -0
  21. data/app/components/lookbook/nav/item/component.css +15 -0
  22. data/app/components/lookbook/nav/item/component.js +4 -0
  23. data/app/components/lookbook/nav/item/component.rb +13 -56
  24. data/app/components/lookbook/params/editor/component.html.erb +2 -2
  25. data/app/components/lookbook/params/editor/component.rb +3 -10
  26. data/app/components/lookbook/params/field/component.css +3 -3
  27. data/app/components/lookbook/params/field/component.html.erb +8 -8
  28. data/app/components/lookbook/params/field/component.rb +21 -72
  29. data/app/components/lookbook/split_layout/component.html.erb +1 -1
  30. data/app/components/lookbook/tabs/component.html.erb +1 -1
  31. data/app/components/lookbook/tabs/component.js +4 -0
  32. data/app/components/lookbook/tag_component.rb +1 -1
  33. data/app/components/lookbook/viewport/component.css +1 -1
  34. data/app/components/lookbook/viewport/component.html.erb +1 -1
  35. data/app/components/lookbook/viewport/component.rb +1 -1
  36. data/app/controllers/concerns/lookbook/targetable_concern.rb +131 -0
  37. data/app/controllers/concerns/lookbook/with_preview_controller_concern.rb +13 -0
  38. data/app/controllers/lookbook/application_controller.rb +21 -9
  39. data/app/controllers/lookbook/inspector_controller.rb +45 -0
  40. data/app/controllers/lookbook/page_controller.rb +13 -9
  41. data/app/controllers/lookbook/pages_controller.rb +9 -15
  42. data/app/controllers/lookbook/previews_controller.rb +4 -210
  43. data/app/helpers/lookbook/application_helper.rb +2 -2
  44. data/app/helpers/lookbook/output_helper.rb +5 -5
  45. data/app/helpers/lookbook/page_helper.rb +7 -4
  46. data/app/views/layouts/lookbook/application.html.erb +40 -38
  47. data/app/views/layouts/lookbook/page.html.erb +2 -2
  48. data/app/views/layouts/lookbook/shell.html.erb +3 -2
  49. data/app/views/layouts/lookbook/skeleton.html.erb +7 -7
  50. data/app/views/lookbook/index.html.erb +13 -2
  51. data/app/views/lookbook/{previews → inspector}/inputs/_color.html.erb +0 -0
  52. data/app/views/lookbook/{previews → inspector}/inputs/_range.html.erb +0 -0
  53. data/app/views/lookbook/{previews → inspector}/inputs/_select.html.erb +0 -0
  54. data/app/views/lookbook/{previews → inspector}/inputs/_text.html.erb +0 -0
  55. data/app/views/lookbook/{previews → inspector}/inputs/_textarea.html.erb +0 -0
  56. data/app/views/lookbook/{previews → inspector}/inputs/_toggle.html.erb +5 -5
  57. data/app/views/lookbook/{previews → inspector}/panels/_content.html.erb +0 -0
  58. data/app/views/lookbook/{previews → inspector}/panels/_notes.html.erb +2 -2
  59. data/app/views/lookbook/{previews → inspector}/panels/_output.html.erb +0 -0
  60. data/app/views/lookbook/inspector/panels/_params.html.erb +15 -0
  61. data/app/views/lookbook/{previews → inspector}/panels/_preview.html.erb +0 -0
  62. data/app/views/lookbook/{previews → inspector}/panels/_source.html.erb +0 -0
  63. data/app/views/lookbook/{previews → inspector}/show.html.erb +5 -2
  64. data/config/app.yml +11 -1
  65. data/config/inputs.yml +12 -12
  66. data/config/languages.yml +41 -0
  67. data/config/panels.yml +6 -6
  68. data/config/routes.rb +5 -5
  69. data/config/tags.yml +8 -1
  70. data/lib/lookbook/engine.rb +103 -130
  71. data/lib/lookbook/entities/collections/component_collection.rb +4 -0
  72. data/lib/lookbook/entities/collections/concerns/hierarchical_collection.rb +23 -0
  73. data/lib/lookbook/entities/collections/entity_collection.rb +61 -0
  74. data/lib/lookbook/entities/collections/page_collection.rb +30 -0
  75. data/lib/lookbook/entities/collections/preview_collection.rb +41 -0
  76. data/lib/lookbook/entities/collections/preview_example_collection.rb +4 -0
  77. data/lib/lookbook/entities/component.rb +31 -0
  78. data/lib/lookbook/entities/concerns/annotatable.rb +58 -0
  79. data/lib/lookbook/entities/concerns/inspectable.rb +44 -0
  80. data/lib/lookbook/entities/concerns/locatable.rb +73 -0
  81. data/lib/lookbook/entities/concerns/navigable.rb +43 -0
  82. data/lib/lookbook/entities/entity.rb +53 -0
  83. data/lib/lookbook/entities/page.rb +80 -0
  84. data/lib/lookbook/entities/page_section.rb +43 -0
  85. data/lib/lookbook/entities/preview.rb +87 -0
  86. data/lib/lookbook/entities/preview_example.rb +100 -0
  87. data/lib/lookbook/entities/preview_group.rb +48 -0
  88. data/lib/lookbook/file_watcher.rb +47 -0
  89. data/lib/lookbook/lang.rb +12 -35
  90. data/lib/lookbook/param.rb +99 -0
  91. data/lib/lookbook/{preview_controller.rb → preview_actions.rb} +14 -3
  92. data/lib/lookbook/preview_parser.rb +53 -0
  93. data/lib/lookbook/process.rb +21 -0
  94. data/lib/lookbook/rendered_example.rb +37 -0
  95. data/lib/lookbook/services/code/code_beautifier.rb +21 -0
  96. data/lib/lookbook/services/code/code_highlighter.rb +69 -0
  97. data/lib/lookbook/services/code/code_indenter.rb +14 -0
  98. data/lib/lookbook/services/data/parsers/data_parser.rb +22 -0
  99. data/lib/lookbook/services/data/parsers/json_parser.rb +7 -0
  100. data/lib/lookbook/services/data/parsers/yaml_parser.rb +7 -0
  101. data/lib/lookbook/services/data/resolvers/data_resolver.rb +70 -0
  102. data/lib/lookbook/services/data/resolvers/eval_resolver.rb +10 -0
  103. data/lib/lookbook/services/data/resolvers/file_resolver.rb +28 -0
  104. data/lib/lookbook/services/data/resolvers/method_resolver.rb +10 -0
  105. data/lib/lookbook/services/data/resolvers/yaml_resolver.rb +18 -0
  106. data/lib/lookbook/services/entities/entity_tree_builder.rb +45 -0
  107. data/lib/lookbook/services/markdown_renderer.rb +29 -0
  108. data/lib/lookbook/services/position_prefix_parser.rb +16 -0
  109. data/lib/lookbook/services/string_value_caster.rb +60 -0
  110. data/lib/lookbook/services/tags/tag_options_parser.rb +62 -0
  111. data/lib/lookbook/services/templates/action_view_annotations_handler.rb +21 -0
  112. data/lib/lookbook/services/templates/action_view_annotations_stripper.rb +15 -0
  113. data/lib/lookbook/services/templates/frontmatter_extractor.rb +28 -0
  114. data/lib/lookbook/services/templates/styles_extractor.rb +38 -0
  115. data/lib/lookbook/services/{search_param_builder.rb → urls/search_param_builder.rb} +1 -1
  116. data/lib/lookbook/services/{search_param_parser.rb → urls/search_param_parser.rb} +1 -1
  117. data/lib/lookbook/stores/config_store.rb +12 -9
  118. data/lib/lookbook/stores/input_store.rb +7 -3
  119. data/lib/lookbook/stores/panel_store.rb +2 -2
  120. data/lib/lookbook/stores/tag_store.rb +3 -5
  121. data/lib/lookbook/support/null_object.rb +10 -0
  122. data/lib/lookbook/support/service.rb +2 -2
  123. data/lib/lookbook/support/store.rb +2 -35
  124. data/lib/lookbook/support/tree_node.rb +87 -0
  125. data/lib/lookbook/support/utils/path_utils.rb +32 -5
  126. data/lib/lookbook/support/utils/utils.rb +24 -0
  127. data/lib/lookbook/tags/component_tag.rb +13 -0
  128. data/lib/lookbook/tags/custom_tag.rb +61 -0
  129. data/lib/lookbook/tags/display_tag.rb +15 -0
  130. data/lib/lookbook/tags/hidden_tag.rb +13 -0
  131. data/lib/lookbook/tags/id_tag.rb +7 -0
  132. data/lib/lookbook/tags/label_tag.rb +4 -0
  133. data/lib/lookbook/tags/logical_path_tag.rb +7 -0
  134. data/lib/lookbook/tags/param_tag.rb +63 -0
  135. data/lib/lookbook/tags/position_tag.rb +16 -0
  136. data/lib/lookbook/tags/source_tag.rb +7 -0
  137. data/lib/lookbook/tags/tag_provider.rb +18 -0
  138. data/lib/lookbook/tags/yard_tag.rb +90 -0
  139. data/lib/lookbook/theme.rb +8 -0
  140. data/lib/lookbook/version.rb +1 -1
  141. data/lib/lookbook/websocket.rb +60 -0
  142. data/lib/lookbook.rb +13 -8
  143. data/public/lookbook-assets/css/lookbook.css +487 -411
  144. data/public/lookbook-assets/css/lookbook.css.map +1 -1
  145. data/public/lookbook-assets/css/themes/blue.css +3 -1
  146. data/public/lookbook-assets/css/themes/blue.css.map +1 -1
  147. data/public/lookbook-assets/css/themes/green.css +68 -0
  148. data/public/lookbook-assets/css/themes/green.css.map +1 -0
  149. data/public/lookbook-assets/css/themes/indigo.css +3 -1
  150. data/public/lookbook-assets/css/themes/indigo.css.map +1 -1
  151. data/public/lookbook-assets/css/themes/rose.css +68 -0
  152. data/public/lookbook-assets/css/themes/rose.css.map +1 -0
  153. data/public/lookbook-assets/css/themes/zinc.css +3 -1
  154. data/public/lookbook-assets/css/themes/zinc.css.map +1 -1
  155. data/public/lookbook-assets/js/embed.js +10 -1
  156. data/public/lookbook-assets/js/embed.js.map +1 -1
  157. data/public/lookbook-assets/js/lookbook.js +358 -629
  158. data/public/lookbook-assets/js/lookbook.js.map +1 -1
  159. metadata +96 -44
  160. data/app/components/lookbook/code/highlight_github_light.css +0 -217
  161. data/app/views/lookbook/previews/panels/_params.html.erb +0 -15
  162. data/lib/lookbook/code_formatter.rb +0 -68
  163. data/lib/lookbook/collection.rb +0 -161
  164. data/lib/lookbook/component.rb +0 -34
  165. data/lib/lookbook/entity.rb +0 -47
  166. data/lib/lookbook/markdown.rb +0 -22
  167. data/lib/lookbook/page.rb +0 -195
  168. data/lib/lookbook/page_collection.rb +0 -19
  169. data/lib/lookbook/page_section.rb +0 -29
  170. data/lib/lookbook/params.rb +0 -157
  171. data/lib/lookbook/parser.rb +0 -42
  172. data/lib/lookbook/preview.rb +0 -174
  173. data/lib/lookbook/preview_collection.rb +0 -23
  174. data/lib/lookbook/preview_example.rb +0 -93
  175. data/lib/lookbook/preview_group.rb +0 -62
  176. data/lib/lookbook/source_inspector.rb +0 -95
  177. data/lib/lookbook/support/utils/attribute_utils.rb +0 -9
  178. data/lib/lookbook/tag.rb +0 -122
  179. data/lib/lookbook/tag_options.rb +0 -111
  180. data/lib/lookbook/tags.rb +0 -17
  181. data/lib/lookbook/template_parser.rb +0 -72
  182. data/lib/lookbook/utils.rb +0 -105
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 746247239c9d22b8537a0327dfa40e3d4a2b687a9d48e0a4b61819cba7766bec
4
- data.tar.gz: c288e6e752520bb2b4b90b5e1f682cd68c99961939496b5d698abf2604962efc
3
+ metadata.gz: bda485cc3ea6b7d85317d466952627d1f72dd724aba79140cfdc604512a5f4bc
4
+ data.tar.gz: 6be6a4c31c8f31851083d6f822dd9751ffda7fae471a1ed1fce80246526c3bb2
5
5
  SHA512:
6
- metadata.gz: 6b0aae039cf5d29f2d9f93aca8f2fd62996ecbce1ad9cc9ab8c8b19e82343f71a3dc6694406182e5ebd41b0a6ad97c160a7c156e51463cda51f522b186a25a1d
7
- data.tar.gz: cf44c51bfa10e5eabc5dc6c88931d3e1676e5b72599e00304c83aca343d6a080ef31afa0044e39383d1c4b4ccc179260832afb5951d5427858767b09ff749a4a
6
+ metadata.gz: f1b4af27b5664136e08f65cbcfede40f9a4963d909eab70848376f6e236197ff51b4dd09c95dea2ff95ee5617f8d9ebd3906638efc99b3c09ce0d91b55c31097
7
+ data.tar.gz: 71d7191d3de4543b5068a279462182bb87908a5182667b158aa8a78ced51443696537b8a915f94d9405268d36fd49502ba37d1893737820200fb97827030e413
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021 allmarkedup
3
+ Copyright (c) 2021 Mark Perkins
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,30 +1,42 @@
1
- # Lookbook
2
-
3
- <div>
4
- <a href="https://rubygems.org/gems/lookbook"><img src="https://img.shields.io/gem/v/lookbook" alt="Gem version"></a>
5
- <a href="https://github.com/allmarkedup/lookbook/actions/workflows/ci.yml"><img src="https://github.com/allmarkedup/lookbook/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI status"></a>
6
- </div>
7
1
  <br>
2
+ <img src=".github/assets/lookbook_logo.svg" width="180">
8
3
 
9
4
  A tool to help browse, develop, test & document [ViewComponents](https://viewcomponent.org/) in Ruby on Rails apps.
10
5
 
6
+ [![Gem version](https://img.shields.io/gem/v/lookbook)](https://rubygems.org/gems/lookbook)
7
+ [![CI status](https://github.com/ViewComponent/lookbook/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/ViewComponent/lookbook/actions/workflows/ci.yml)
8
+ <br>
9
+
11
10
  ## Documentation
12
11
 
13
- **Lookbook (v1.x)** documentation: **[https://lookbook.build](https://lookbook.build)**
12
+ **Lookbook guide and API docs**: [lookbook.build](https://lookbook.build)
14
13
 
15
- > _Looking for v0.9.x docs? [Head over here](https://github.com/allmarkedup/lookbook/tree/0.9.x)._
14
+ > _Looking for pre-v1.0 documentation? [Head over here](https://github.com/ViewComponent/lookbook/tree/0.9.x)._
16
15
 
17
16
 
18
17
  ## Demo
19
18
 
20
- **Online Demo:** [https://lookbook-demo-app.herokuapp.com/lookbook](https://lookbook-demo-app.herokuapp.com/lookbook)
19
+ **Online Demo**: [lookbook-demo-app.herokuapp.com/lookbook](https://lookbook-demo-app.herokuapp.com/lookbook)
20
+
21
+ ✨ **Demo repo**: [github.com/ViewComponent/lookbook-demo](https://github.com/ViewComponent/lookbook-demo)
21
22
 
22
23
  [![Lookbook UI](.github/assets/lookbook_screenshot_v1.0_beta.png)](https://lookbook-demo-app.herokuapp.com/lookbook/)
23
24
 
24
25
 
25
26
  ## Development
26
27
 
27
- Lookbook's UI is itself built using ViewComponents. To preview these components in a Lookbook instance you can run the included `workbench` app:
28
+ Lookbook is implemented as an isolated [Rails Engine](https://guides.rubyonrails.org/engines.html) and uses [ViewComponent](https://viewcomponent.org), [Tailwind](https://tailwindcss.com/) and [Alpine](https://alpinejs.dev/) for it's UI.
29
+
30
+ This repository contains:
31
+
32
+ * The Lookbook source code ([`/app`](https://github.com/ViewComponent/lookbook/tree/main/app), [`/lib`](https://github.com/ViewComponent/lookbook/tree/main/lib), [`/config`](https://github.com/ViewComponent/lookbook/tree/main/config), etc)
33
+ * A '[workbench](#workbench)' app used for Lookbook component development ([`/workbench`](https://github.com/ViewComponent/lookbook/tree/main/workbench)).
34
+ * The Lookbook [documentation site](#docs-site) source code and content ([`/docs`](https://github.com/ViewComponent/lookbook/tree/main/docs)).
35
+ * A [test suite](#testing) with a 'runable' dummy app ([`/spec`](https://github.com/ViewComponent/lookbook/tree/main/spec)).
36
+
37
+ ### Workbench
38
+
39
+ To preview the Lookbook components within a Lookbook instance you can run the included `workbench` app:
28
40
 
29
41
  1. Clone this repo
30
42
  2. Install dependencies: `bundle install & npm install`
@@ -33,21 +45,42 @@ Lookbook's UI is itself built using ViewComponents. To preview these components
33
45
 
34
46
  The `workbench` app will be started in development mode and any changes to Lookbook's views or assets will immediately be reflected in the UI.
35
47
 
36
- ### Docs site
48
+ ### Documentation site
37
49
 
38
50
  The [Lookbook docs site](https://lookbook.build) is built using [Bridgetown](https://www.bridgetownrb.com/) and the source files can be found in the `./docs` directory.
39
51
 
40
- To see a local version of the site run `bin/docs` from the root of this repo and then visit http://localhost:4000 in your browser.
52
+ To preview changes locally you can run a development version of the docs site:
53
+
54
+ 1. Clone this repo
55
+ 2. Install dependencies: `bundle install`
56
+ 3. Start the app: `bin/docs`
57
+ 4. Visit http://localhost:4000
41
58
 
42
59
  ### Testing
43
60
 
44
- Lookbook uses RSpec for testing.
61
+ Lookbook uses [RSpec](https://relishapp.com/rspec) for testing.
45
62
 
46
63
  Tests can be run using the `rake spec` or `bundle exec rspec` commands.
47
64
 
48
65
  The dummy app that the tests are being run against can be viewed by running the `bin/dummy` command and then browsing to http://localhost:9292/lookbook
49
66
 
50
67
 
68
+ ## Contributing
69
+
70
+ Lookbook is an un-funded open source project and contributions of all types and sizes are most welcome!
71
+
72
+ Please take the time to read over the [Contributing](./CONTRIBUTING.md) guide before making your first contribution and if anything isn't clear then [start a discussion](https://github.com/ViewComponent/lookbook/discussions) and we will do our best to help you out.
73
+
74
+ ## Contributors
75
+
76
+ Lookbook was created by [Mark Perkins](https://github.com/allmarkedup) and continues to grow
77
+ &amp; improve thanks to the ideas, suggestions and hard work of all of [these excellent humans](https://github.com/ViewComponent/lookbook/graphs/contributors):
78
+ <br>
79
+ <br>
80
+ <a href="https://github.com/ViewComponent/lookbook/graphs/contributors">
81
+ <img src="https://contrib.rocks/image?repo=ViewComponent/lookbook&columns=14" width="800" />
82
+ </a>
83
+
51
84
  ## License
52
85
 
53
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
86
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -22,6 +22,7 @@
22
22
  --lookbook-base-900: theme("colors.zinc.900");
23
23
  --lookbook-text: var(--lookbook-base-800);
24
24
  --lookbook-divider: var(--lookbook-base-300);
25
+ --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
25
26
  --lookbook-icon-button-stroke: var(--lookbook-base-400);
26
27
  --lookbook-icon-button-stroke-hover: var(--lookbook-accent-600);
27
28
  --lookbook-tooltip-bg: var(--lookbook-accent-500);
@@ -50,15 +51,16 @@
50
51
  --lookbook-tabs-text-disabled: var(--lookbook-base-300);
51
52
  --lookbook-tabs-border-active: var(--lookbook-accent-400);
52
53
  --lookbook-viewport-handle: var(--lookbook-white);
54
+ --lookbook-viewport-handle-hover: var(--lookbook-draggable-hint);
53
55
  --lookbook-viewport-handle-icon-stroke: var(--lookbook-base-300);
54
56
  --lookbook-viewport-handle-icon-stroke-hover: var(--lookbook-base-700);
55
57
  --lookbook-sidebar-bg: var(--lookbook-base-50);
56
58
  --lookbook-page-bg: var(--lookbook-white);
57
59
  --lookbook-drawer-bg: var(--lookbook-base-50);
60
+ --lookbook-params-editor-bg: var(--lookbook-white);
58
61
  --lookbook-header-bg: var(--lookbook-accent-600);
59
62
  --lookbook-header-text: var(--lookbook-white);
60
63
  --lookbook-header-border: var(--lookbook-accent-700);
61
64
  --lookbook-blank-slate-title: var(--lookbook-accent-600);
62
65
  --lookbook-branding-text: var(--lookbook-header-text);
63
- --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
64
- }
66
+ }
@@ -0,0 +1,66 @@
1
+ :root {
2
+ --lookbook-white: theme("colors.white");
3
+ --lookbook-accent-50: theme("colors.green.50");
4
+ --lookbook-accent-100: theme("colors.green.100");
5
+ --lookbook-accent-200: theme("colors.green.200");
6
+ --lookbook-accent-300: theme("colors.green.300");
7
+ --lookbook-accent-400: theme("colors.green.400");
8
+ --lookbook-accent-500: theme("colors.green.500");
9
+ --lookbook-accent-600: theme("colors.green.600");
10
+ --lookbook-accent-700: theme("colors.green.700");
11
+ --lookbook-accent-800: theme("colors.green.800");
12
+ --lookbook-accent-900: theme("colors.green.900");
13
+ --lookbook-base-50: theme("colors.zinc.50");
14
+ --lookbook-base-100: theme("colors.zinc.100");
15
+ --lookbook-base-200: theme("colors.zinc.200");
16
+ --lookbook-base-300: theme("colors.zinc.300");
17
+ --lookbook-base-400: theme("colors.zinc.400");
18
+ --lookbook-base-500: theme("colors.zinc.500");
19
+ --lookbook-base-600: theme("colors.zinc.600");
20
+ --lookbook-base-700: theme("colors.zinc.700");
21
+ --lookbook-base-800: theme("colors.zinc.800");
22
+ --lookbook-base-900: theme("colors.zinc.900");
23
+ --lookbook-text: var(--lookbook-base-800);
24
+ --lookbook-divider: var(--lookbook-base-300);
25
+ --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
26
+ --lookbook-icon-button-stroke: var(--lookbook-base-400);
27
+ --lookbook-icon-button-stroke-hover: var(--lookbook-accent-600);
28
+ --lookbook-tooltip-bg: var(--lookbook-accent-500);
29
+ --lookbook-tooltip-text: var(--lookbook-white);
30
+ --lookbook-scrollbar: var(--lookbook-base-200);
31
+ --lookbook-scrollbar-hover: var(--lookbook-base-300);
32
+ --lookbook-toolbar-bg: var(--lookbook-white);
33
+ --lookbook-toolbar-divider: var(--lookbook-divider);
34
+ --lookbook-nav-text: var(--lookbook-text);
35
+ --lookbook-nav-toggle: var(--lookbook-base-500);
36
+ --lookbook-nav-icon-stroke: var(--lookbook-accent-500);
37
+ --lookbook-nav-item-hover: var(--lookbook-base-100);
38
+ --lookbook-nav-item-active: var(--lookbook-accent-50);
39
+ --lookbook-input-bg: var(--lookbook-white);
40
+ --lookbook-input-border: var(--lookbook-base-300);
41
+ --lookbook-input-border-focus: var(--lookbook-accent-200);
42
+ --lookbook-input-text: var(--lookbook-base-600);
43
+ --lookbook-input-text-placeholder: var(--lookbook-base-400);
44
+ --lookbook-input-toggle: var(--lookbook-base-300);
45
+ --lookbook-input-toggle-active: var(--lookbook-accent-500);
46
+ --lookbook-prose-bg: var(--lookbook-white);
47
+ --lookbook-prose-text: var(--lookbook-base-600);
48
+ --lookbook-prose-link: var(--lookbook-accent-900);
49
+ --lookbook-tabs-text: var(--lookbook-base-500);
50
+ --lookbook-tabs-text-hover: var(--lookbook-base-700);
51
+ --lookbook-tabs-text-disabled: var(--lookbook-base-300);
52
+ --lookbook-tabs-border-active: var(--lookbook-accent-400);
53
+ --lookbook-viewport-handle: var(--lookbook-white);
54
+ --lookbook-viewport-handle-hover: var(--lookbook-draggable-hint);
55
+ --lookbook-viewport-handle-icon-stroke: var(--lookbook-base-300);
56
+ --lookbook-viewport-handle-icon-stroke-hover: var(--lookbook-base-700);
57
+ --lookbook-sidebar-bg: var(--lookbook-base-50);
58
+ --lookbook-page-bg: var(--lookbook-white);
59
+ --lookbook-drawer-bg: var(--lookbook-base-50);
60
+ --lookbook-params-editor-bg: var(--lookbook-white);
61
+ --lookbook-header-bg: var(--lookbook-accent-600);
62
+ --lookbook-header-text: var(--lookbook-white);
63
+ --lookbook-header-border: var(--lookbook-accent-700);
64
+ --lookbook-blank-slate-title: var(--lookbook-accent-600);
65
+ --lookbook-branding-text: var(--lookbook-header-text);
66
+ }
@@ -22,6 +22,7 @@
22
22
  --lookbook-base-900: theme("colors.zinc.900");
23
23
  --lookbook-text: var(--lookbook-base-800);
24
24
  --lookbook-divider: var(--lookbook-base-300);
25
+ --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
25
26
  --lookbook-icon-button-stroke: var(--lookbook-base-400);
26
27
  --lookbook-icon-button-stroke-hover: var(--lookbook-accent-600);
27
28
  --lookbook-tooltip-bg: var(--lookbook-accent-500);
@@ -50,15 +51,16 @@
50
51
  --lookbook-tabs-text-disabled: var(--lookbook-base-300);
51
52
  --lookbook-tabs-border-active: var(--lookbook-accent-400);
52
53
  --lookbook-viewport-handle: var(--lookbook-white);
54
+ --lookbook-viewport-handle-hover: var(--lookbook-draggable-hint);
53
55
  --lookbook-viewport-handle-icon-stroke: var(--lookbook-base-300);
54
56
  --lookbook-viewport-handle-icon-stroke-hover: var(--lookbook-base-700);
55
57
  --lookbook-sidebar-bg: var(--lookbook-base-50);
56
58
  --lookbook-page-bg: var(--lookbook-white);
57
59
  --lookbook-drawer-bg: var(--lookbook-base-50);
60
+ --lookbook-params-editor-bg: var(--lookbook-white);
58
61
  --lookbook-header-bg: var(--lookbook-accent-600);
59
62
  --lookbook-header-text: var(--lookbook-white);
60
63
  --lookbook-header-border: var(--lookbook-accent-700);
61
64
  --lookbook-blank-slate-title: var(--lookbook-accent-600);
62
65
  --lookbook-branding-text: var(--lookbook-header-text);
63
- --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
64
- }
66
+ }
@@ -0,0 +1,66 @@
1
+ :root {
2
+ --lookbook-white: theme("colors.white");
3
+ --lookbook-accent-50: theme("colors.rose.50");
4
+ --lookbook-accent-100: theme("colors.rose.100");
5
+ --lookbook-accent-200: theme("colors.rose.200");
6
+ --lookbook-accent-300: theme("colors.rose.300");
7
+ --lookbook-accent-400: theme("colors.rose.400");
8
+ --lookbook-accent-500: theme("colors.rose.500");
9
+ --lookbook-accent-600: theme("colors.rose.600");
10
+ --lookbook-accent-700: theme("colors.rose.700");
11
+ --lookbook-accent-800: theme("colors.rose.800");
12
+ --lookbook-accent-900: theme("colors.rose.900");
13
+ --lookbook-base-50: theme("colors.zinc.50");
14
+ --lookbook-base-100: theme("colors.zinc.100");
15
+ --lookbook-base-200: theme("colors.zinc.200");
16
+ --lookbook-base-300: theme("colors.zinc.300");
17
+ --lookbook-base-400: theme("colors.zinc.400");
18
+ --lookbook-base-500: theme("colors.zinc.500");
19
+ --lookbook-base-600: theme("colors.zinc.600");
20
+ --lookbook-base-700: theme("colors.zinc.700");
21
+ --lookbook-base-800: theme("colors.zinc.800");
22
+ --lookbook-base-900: theme("colors.zinc.900");
23
+ --lookbook-text: var(--lookbook-base-800);
24
+ --lookbook-divider: var(--lookbook-base-300);
25
+ --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
26
+ --lookbook-icon-button-stroke: var(--lookbook-base-400);
27
+ --lookbook-icon-button-stroke-hover: var(--lookbook-accent-600);
28
+ --lookbook-tooltip-bg: var(--lookbook-accent-500);
29
+ --lookbook-tooltip-text: var(--lookbook-white);
30
+ --lookbook-scrollbar: var(--lookbook-base-200);
31
+ --lookbook-scrollbar-hover: var(--lookbook-base-300);
32
+ --lookbook-toolbar-bg: var(--lookbook-white);
33
+ --lookbook-toolbar-divider: var(--lookbook-divider);
34
+ --lookbook-nav-text: var(--lookbook-text);
35
+ --lookbook-nav-toggle: var(--lookbook-base-500);
36
+ --lookbook-nav-icon-stroke: var(--lookbook-accent-500);
37
+ --lookbook-nav-item-hover: var(--lookbook-base-100);
38
+ --lookbook-nav-item-active: var(--lookbook-accent-50);
39
+ --lookbook-input-bg: var(--lookbook-white);
40
+ --lookbook-input-border: var(--lookbook-base-300);
41
+ --lookbook-input-border-focus: var(--lookbook-accent-200);
42
+ --lookbook-input-text: var(--lookbook-base-600);
43
+ --lookbook-input-text-placeholder: var(--lookbook-base-400);
44
+ --lookbook-input-toggle: var(--lookbook-base-300);
45
+ --lookbook-input-toggle-active: var(--lookbook-accent-500);
46
+ --lookbook-prose-bg: var(--lookbook-white);
47
+ --lookbook-prose-text: var(--lookbook-base-600);
48
+ --lookbook-prose-link: var(--lookbook-accent-900);
49
+ --lookbook-tabs-text: var(--lookbook-base-500);
50
+ --lookbook-tabs-text-hover: var(--lookbook-base-700);
51
+ --lookbook-tabs-text-disabled: var(--lookbook-base-300);
52
+ --lookbook-tabs-border-active: var(--lookbook-accent-400);
53
+ --lookbook-viewport-handle: var(--lookbook-white);
54
+ --lookbook-viewport-handle-hover: var(--lookbook-draggable-hint);
55
+ --lookbook-viewport-handle-icon-stroke: var(--lookbook-base-300);
56
+ --lookbook-viewport-handle-icon-stroke-hover: var(--lookbook-base-700);
57
+ --lookbook-sidebar-bg: var(--lookbook-base-50);
58
+ --lookbook-page-bg: var(--lookbook-white);
59
+ --lookbook-drawer-bg: var(--lookbook-base-50);
60
+ --lookbook-params-editor-bg: var(--lookbook-white);
61
+ --lookbook-header-bg: var(--lookbook-accent-600);
62
+ --lookbook-header-text: var(--lookbook-white);
63
+ --lookbook-header-border: var(--lookbook-accent-700);
64
+ --lookbook-blank-slate-title: var(--lookbook-accent-600);
65
+ --lookbook-branding-text: var(--lookbook-header-text);
66
+ }
@@ -22,6 +22,7 @@
22
22
  --lookbook-base-900: theme("colors.zinc.900");
23
23
  --lookbook-text: var(--lookbook-base-800);
24
24
  --lookbook-divider: var(--lookbook-base-300);
25
+ --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
25
26
  --lookbook-icon-button-stroke: var(--lookbook-base-400);
26
27
  --lookbook-icon-button-stroke-hover: var(--lookbook-accent-600);
27
28
  --lookbook-tooltip-bg: var(--lookbook-accent-500);
@@ -50,15 +51,16 @@
50
51
  --lookbook-tabs-text-disabled: var(--lookbook-base-300);
51
52
  --lookbook-tabs-border-active: var(--lookbook-accent-400);
52
53
  --lookbook-viewport-handle: var(--lookbook-white);
54
+ --lookbook-viewport-handle-hover: var(--lookbook-draggable-hint);
53
55
  --lookbook-viewport-handle-icon-stroke: var(--lookbook-base-300);
54
56
  --lookbook-viewport-handle-icon-stroke-hover: var(--lookbook-base-700);
55
57
  --lookbook-sidebar-bg: var(--lookbook-base-50);
56
58
  --lookbook-page-bg: var(--lookbook-white);
57
59
  --lookbook-drawer-bg: var(--lookbook-base-50);
60
+ --lookbook-params-editor-bg: var(--lookbook-white);
58
61
  --lookbook-header-bg: var(--lookbook-accent-600);
59
62
  --lookbook-header-text: var(--lookbook-white);
60
63
  --lookbook-header-border: var(--lookbook-accent-700);
61
64
  --lookbook-blank-slate-title: var(--lookbook-accent-600);
62
65
  --lookbook-branding-text: var(--lookbook-header-text);
63
- --lookbook-draggable-hint: rgb(224 231 255 / 0.2);
64
- }
66
+ }
@@ -32,9 +32,9 @@ module Lookbook
32
32
 
33
33
  def alpine_encode(data)
34
34
  if data.is_a? String
35
- "\'#{json_escape data}\'"
35
+ "'#{json_escape data}'"
36
36
  else
37
- json_escape data.to_json.tr("\"", "\'")
37
+ json_escape data.to_json.tr("\"", "'")
38
38
  end
39
39
  end
40
40
 
@@ -1,4 +1,4 @@
1
- @import "./highlight_github_light.css";
1
+ @import "./highlight_github.css";
2
2
 
3
3
  @layer components {
4
4
  [data-component="code"] {
@@ -25,7 +25,7 @@
25
25
 
26
26
  & .line-numbers {
27
27
  width: min-content;
28
- @apply bg-white border-r border-dashed border-lookbook-divider z-10 h-full p-3 select-none text-gray-400 text-right;
28
+ @apply border-r border-dashed z-10 h-full p-3 select-none text-right;
29
29
  }
30
30
 
31
31
  & .line-number {
@@ -3,8 +3,9 @@
3
3
  {
4
4
  "numbered": numbered?,
5
5
  "focussed": focussed?,
6
- "h-full": full_height?
6
+ "h-full": full_height?,
7
+ "dark": is_dark?
7
8
  }
8
9
  ] do %>
9
- <%= Lookbook::CodeFormatter.highlight(source, **@highlight_opts) %>
10
+ <%= Lookbook::CodeHighlighter.call(source, **@highlight_opts) %>
10
11
  <% end %>
@@ -9,7 +9,8 @@ module Lookbook
9
9
  highlight_lines: [],
10
10
  start_line: 1,
11
11
  wrap: false,
12
- theme: :github_light,
12
+ theme: nil,
13
+ dark: false,
13
14
  full_height: false,
14
15
  **html_attrs
15
16
  )
@@ -23,6 +24,7 @@ module Lookbook
23
24
  @highlight_lines = highlight_lines
24
25
  @wrap = wrap
25
26
  @theme = theme
27
+ @dark = dark
26
28
  @full_height = full_height
27
29
  super(**html_attrs)
28
30
  end
@@ -44,7 +46,16 @@ module Lookbook
44
46
  end
45
47
 
46
48
  def full_height?
47
- @full_height == true
49
+ @full_height
50
+ end
51
+
52
+ def is_dark?
53
+ @dark
54
+ end
55
+
56
+ def before_render
57
+ @theme ||= Lookbook.config.highlighter_options.fetch(:theme, :github).to_sym
58
+ @dark ||= !!Lookbook.config.highlighter_options.fetch(:dark, false)
48
59
  end
49
60
 
50
61
  protected