optics_view_components 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +21 -1
- data/README.md +10 -1
- data/demo/Gemfile +1 -0
- data/demo/Gemfile.lock +24 -1
- data/demo/app/views/layouts/preview.html.erb +14 -0
- data/demo/config/application.rb +4 -8
- data/demo/config/routes.rb +2 -3
- data/lib/optics/view_components/version.rb +1 -1
- data/previews/optics/button_preview.rb +32 -0
- data/previews/optics/icon_preview.rb +31 -0
- metadata +5 -4
- data/app/components/optics/button/preview.rb +0 -34
- data/app/components/optics/icon/preview.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7e868dbff72f35b8979429a0a6ab9cb6690f1ed46ff5d4ca3d658aaec5fcd68
|
4
|
+
data.tar.gz: 5200729a15f3672e8afb161e7437909f8ec55b8d6c4e189ba9d44349e5e58111
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21c5922dabf1c062f5b184d8650ac9b0616df298770d519a87abbd577ba237ff039d0fa1759df5172cc8a39e21018a2013ac6f65a97fb7eeceeaa64edf779f20
|
7
|
+
data.tar.gz: '06913b6c9d7d9718ec86f6d9f81f648fa0a9ed2bc19e1a73eef0c614c0995f958c105bcf29a8074358ee221c153e2af12fda0d991a7dadc66bcbb98f81e52299'
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
optics_view_components (0.1.
|
4
|
+
optics_view_components (0.1.3)
|
5
5
|
view_component (> 2.0, < 4.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -90,17 +90,33 @@ GEM
|
|
90
90
|
coderay (1.1.3)
|
91
91
|
concurrent-ruby (1.2.2)
|
92
92
|
crass (1.0.6)
|
93
|
+
css_parser (1.14.0)
|
94
|
+
addressable
|
93
95
|
date (3.3.3)
|
94
96
|
diff-lcs (1.5.0)
|
95
97
|
erubi (1.12.0)
|
96
98
|
globalid (1.1.0)
|
97
99
|
activesupport (>= 5.0)
|
100
|
+
htmlbeautifier (1.4.2)
|
101
|
+
htmlentities (4.3.4)
|
98
102
|
i18n (1.13.0)
|
99
103
|
concurrent-ruby (~> 1.0)
|
100
104
|
json (2.6.3)
|
101
105
|
loofah (2.21.3)
|
102
106
|
crass (~> 1.0.2)
|
103
107
|
nokogiri (>= 1.12.0)
|
108
|
+
lookbook (2.0.3)
|
109
|
+
activemodel
|
110
|
+
css_parser
|
111
|
+
htmlbeautifier (~> 1.3)
|
112
|
+
htmlentities (~> 4.3.4)
|
113
|
+
marcel (~> 1.0)
|
114
|
+
railties (>= 5.0)
|
115
|
+
redcarpet (~> 3.5)
|
116
|
+
rouge (>= 3.26, < 5.0)
|
117
|
+
view_component (>= 2.0)
|
118
|
+
yard (~> 0.9.25)
|
119
|
+
zeitwerk (~> 2.5)
|
104
120
|
mail (2.8.1)
|
105
121
|
mini_mime (>= 0.1.1)
|
106
122
|
net-imap
|
@@ -163,8 +179,10 @@ GEM
|
|
163
179
|
zeitwerk (~> 2.5)
|
164
180
|
rainbow (3.1.1)
|
165
181
|
rake (13.0.6)
|
182
|
+
redcarpet (3.6.0)
|
166
183
|
regexp_parser (2.8.0)
|
167
184
|
rexml (3.2.5)
|
185
|
+
rouge (4.1.1)
|
168
186
|
rspec (3.12.0)
|
169
187
|
rspec-core (~> 3.12.0)
|
170
188
|
rspec-expectations (~> 3.12.0)
|
@@ -220,6 +238,7 @@ GEM
|
|
220
238
|
websocket-extensions (0.1.5)
|
221
239
|
xpath (3.2.0)
|
222
240
|
nokogiri (~> 1.8)
|
241
|
+
yard (0.9.34)
|
223
242
|
zeitwerk (2.6.8)
|
224
243
|
|
225
244
|
PLATFORMS
|
@@ -228,6 +247,7 @@ PLATFORMS
|
|
228
247
|
DEPENDENCIES
|
229
248
|
bootsnap
|
230
249
|
capybara
|
250
|
+
lookbook
|
231
251
|
optics_view_components!
|
232
252
|
pry
|
233
253
|
rails (~> 7.0)
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
17
17
|
Add to `config/application.rb`:
|
18
18
|
|
19
19
|
```
|
20
|
-
require '
|
20
|
+
require 'view_component'
|
21
21
|
require 'optics/view_components/engine'
|
22
22
|
```
|
23
23
|
|
@@ -26,6 +26,15 @@ Use in a view:
|
|
26
26
|
<%= render(Optics::Button::Component.new(label: 'Hello')) %>
|
27
27
|
```
|
28
28
|
|
29
|
+
### Add previews to your application's [Lookbook](https://github.com/ViewComponent/lookbook)
|
30
|
+
|
31
|
+
Add to `config/application.rb`:
|
32
|
+
|
33
|
+
```
|
34
|
+
config.lookbook.component_paths << Optics::ViewComponents::Engine.root.join('app/components/optics')
|
35
|
+
config.view_component.preview_paths << Optics::ViewComponents::Engine.root.join('previews')
|
36
|
+
```
|
37
|
+
|
29
38
|
## Development
|
30
39
|
|
31
40
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/demo/Gemfile
CHANGED
data/demo/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
optics_view_components (0.1.
|
4
|
+
optics_view_components (0.1.3)
|
5
5
|
view_component (> 2.0, < 4.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -72,12 +72,16 @@ GEM
|
|
72
72
|
i18n (>= 1.6, < 2)
|
73
73
|
minitest (>= 5.1)
|
74
74
|
tzinfo (~> 2.0)
|
75
|
+
addressable (2.8.4)
|
76
|
+
public_suffix (>= 2.0.2, < 6.0)
|
75
77
|
bindex (0.8.1)
|
76
78
|
bootsnap (1.16.0)
|
77
79
|
msgpack (~> 1.2)
|
78
80
|
builder (3.2.4)
|
79
81
|
concurrent-ruby (1.2.2)
|
80
82
|
crass (1.0.6)
|
83
|
+
css_parser (1.14.0)
|
84
|
+
addressable
|
81
85
|
cssbundling-rails (1.1.2)
|
82
86
|
railties (>= 6.0.0)
|
83
87
|
date (3.3.3)
|
@@ -87,6 +91,8 @@ GEM
|
|
87
91
|
erubi (1.12.0)
|
88
92
|
globalid (1.1.0)
|
89
93
|
activesupport (>= 5.0)
|
94
|
+
htmlbeautifier (1.4.2)
|
95
|
+
htmlentities (4.3.4)
|
90
96
|
i18n (1.13.0)
|
91
97
|
concurrent-ruby (~> 1.0)
|
92
98
|
io-console (0.6.0)
|
@@ -95,6 +101,18 @@ GEM
|
|
95
101
|
loofah (2.21.3)
|
96
102
|
crass (~> 1.0.2)
|
97
103
|
nokogiri (>= 1.12.0)
|
104
|
+
lookbook (2.0.3)
|
105
|
+
activemodel
|
106
|
+
css_parser
|
107
|
+
htmlbeautifier (~> 1.3)
|
108
|
+
htmlentities (~> 4.3.4)
|
109
|
+
marcel (~> 1.0)
|
110
|
+
railties (>= 5.0)
|
111
|
+
redcarpet (~> 3.5)
|
112
|
+
rouge (>= 3.26, < 5.0)
|
113
|
+
view_component (>= 2.0)
|
114
|
+
yard (~> 0.9.25)
|
115
|
+
zeitwerk (~> 2.5)
|
98
116
|
mail (2.8.1)
|
99
117
|
mini_mime (>= 0.1.1)
|
100
118
|
net-imap
|
@@ -117,6 +135,7 @@ GEM
|
|
117
135
|
nio4r (2.5.9)
|
118
136
|
nokogiri (1.15.1-x86_64-linux)
|
119
137
|
racc (~> 1.4)
|
138
|
+
public_suffix (5.0.1)
|
120
139
|
puma (6.2.2)
|
121
140
|
nio4r (~> 2.0)
|
122
141
|
racc (1.6.2)
|
@@ -150,8 +169,10 @@ GEM
|
|
150
169
|
thor (~> 1.0)
|
151
170
|
zeitwerk (~> 2.5)
|
152
171
|
rake (13.0.6)
|
172
|
+
redcarpet (3.6.0)
|
153
173
|
reline (0.3.3)
|
154
174
|
io-console (~> 0.5)
|
175
|
+
rouge (4.1.1)
|
155
176
|
sprockets (4.2.0)
|
156
177
|
concurrent-ruby (~> 1.0)
|
157
178
|
rack (>= 2.2.4, < 4)
|
@@ -175,6 +196,7 @@ GEM
|
|
175
196
|
websocket-driver (0.7.5)
|
176
197
|
websocket-extensions (>= 0.1.0)
|
177
198
|
websocket-extensions (0.1.5)
|
199
|
+
yard (0.9.34)
|
178
200
|
zeitwerk (2.6.8)
|
179
201
|
|
180
202
|
PLATFORMS
|
@@ -184,6 +206,7 @@ DEPENDENCIES
|
|
184
206
|
bootsnap
|
185
207
|
cssbundling-rails (~> 1.1)
|
186
208
|
debug
|
209
|
+
lookbook
|
187
210
|
optics_view_components!
|
188
211
|
puma (~> 6.0)
|
189
212
|
rails (~> 7.0.4, >= 7.0.4.3)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Component Preview</title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<%= csrf_meta_tags %>
|
7
|
+
<%= csp_meta_tag %>
|
8
|
+
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
|
9
|
+
</head>
|
10
|
+
|
11
|
+
<body style="padding: var(--op-space-medium);">
|
12
|
+
<%= yield %>
|
13
|
+
</body>
|
14
|
+
</html>
|
data/demo/config/application.rb
CHANGED
@@ -22,15 +22,11 @@ Bundler.require(*Rails.groups)
|
|
22
22
|
|
23
23
|
module Demo
|
24
24
|
class Application < Rails::Application
|
25
|
-
# Initialize configuration defaults for originally generated Rails version.
|
26
25
|
config.load_defaults 7.0
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
#
|
33
|
-
# config.time_zone = "Central Time (US & Canada)"
|
34
|
-
# config.eager_load_paths << Rails.root.join("extras")
|
27
|
+
config.view_component.default_preview_layout = 'preview'
|
28
|
+
config.view_component.preview_paths << Rails.root.join('..', 'previews')
|
29
|
+
config.lookbook.project_name = "Optics ViewComponents v#{Optics::ViewComponents::VERSION}"
|
30
|
+
config.lookbook.component_paths = [Optics::ViewComponents::Engine.root.join('app', 'components')]
|
35
31
|
end
|
36
32
|
end
|
data/demo/config/routes.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Rails.application.routes.draw do
|
4
|
-
|
5
|
-
|
6
|
-
# Defines the root path route ("/")
|
4
|
+
get '/', to: redirect('/lookbook/')
|
5
|
+
mount Lookbook::Engine, at: '/lookbook'
|
7
6
|
root 'home#index'
|
8
7
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Optics
|
4
|
+
class ButtonPreview < ViewComponent::Preview
|
5
|
+
# @param border toggle
|
6
|
+
# @param icon toggle
|
7
|
+
# @param id text
|
8
|
+
# @param label text
|
9
|
+
# @param size select {{ Optics::Button::Component::SIZES }}
|
10
|
+
# @param variant select {{ Optics::Button::Component::STYLES }}
|
11
|
+
# @param url text
|
12
|
+
def default( # rubocop:disable Metrics/ParameterLists
|
13
|
+
border: true,
|
14
|
+
icon: false,
|
15
|
+
id: nil,
|
16
|
+
label: 'Default',
|
17
|
+
size: 'normal',
|
18
|
+
variant: 'default',
|
19
|
+
url: nil
|
20
|
+
)
|
21
|
+
render(Optics::Button::Component.new(
|
22
|
+
border:,
|
23
|
+
icon:,
|
24
|
+
id:,
|
25
|
+
label:,
|
26
|
+
size:,
|
27
|
+
variant:,
|
28
|
+
url:
|
29
|
+
))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Optics
|
4
|
+
class IconPreview < ViewComponent::Preview
|
5
|
+
# @param emphasis select {{ Optics::Icon::Component::EMPHASES }}
|
6
|
+
# @param filled toggle
|
7
|
+
# @param name
|
8
|
+
# @param size select {{ Optics::Icon::Component::SIZES }}
|
9
|
+
# @param title
|
10
|
+
# @param weight select {{ Optics::Icon::Component::WEIGHTS }}
|
11
|
+
def default( # rubocop:disable Metrics/ParameterLists
|
12
|
+
emphasis: 'normal',
|
13
|
+
filled: false,
|
14
|
+
name: 'settings',
|
15
|
+
size: 'normal',
|
16
|
+
title: nil,
|
17
|
+
weight: 'normal'
|
18
|
+
)
|
19
|
+
render(
|
20
|
+
Optics::Icon::Component.new(
|
21
|
+
emphasis:,
|
22
|
+
filled:,
|
23
|
+
name:,
|
24
|
+
size:,
|
25
|
+
title:,
|
26
|
+
weight:
|
27
|
+
)
|
28
|
+
)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: optics_view_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reed Law
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: view_component
|
@@ -118,9 +118,7 @@ files:
|
|
118
118
|
- app/components/optics/application_view_component.rb
|
119
119
|
- app/components/optics/application_view_component_preview.rb
|
120
120
|
- app/components/optics/button/component.rb
|
121
|
-
- app/components/optics/button/preview.rb
|
122
121
|
- app/components/optics/icon/component.rb
|
123
|
-
- app/components/optics/icon/preview.rb
|
124
122
|
- demo/.ruby-version
|
125
123
|
- demo/Gemfile
|
126
124
|
- demo/Gemfile.lock
|
@@ -140,6 +138,7 @@ files:
|
|
140
138
|
- demo/app/javascript/controllers/index.js
|
141
139
|
- demo/app/views/home/index.html.erb
|
142
140
|
- demo/app/views/layouts/application.html.erb
|
141
|
+
- demo/app/views/layouts/preview.html.erb
|
143
142
|
- demo/bin/bundle
|
144
143
|
- demo/bin/dev
|
145
144
|
- demo/bin/importmap
|
@@ -178,6 +177,8 @@ files:
|
|
178
177
|
- lib/optics/view_components.rb
|
179
178
|
- lib/optics/view_components/engine.rb
|
180
179
|
- lib/optics/view_components/version.rb
|
180
|
+
- previews/optics/button_preview.rb
|
181
|
+
- previews/optics/icon_preview.rb
|
181
182
|
- sig/optics_view_components.rbs
|
182
183
|
homepage: https://github.com/RoleModel/optics_view_components
|
183
184
|
licenses:
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Optics
|
4
|
-
module Button
|
5
|
-
class Preview < ApplicationViewComponentPreview
|
6
|
-
# @param border toggle
|
7
|
-
# @param icon toggle
|
8
|
-
# @param id text
|
9
|
-
# @param label text
|
10
|
-
# @param size select {{ ::Button::Component::SIZES }}
|
11
|
-
# @param variant select {{ ::Button::Component::STYLES }}
|
12
|
-
# @param url text
|
13
|
-
def default( # rubocop:disable Metrics/ParameterLists
|
14
|
-
border: true,
|
15
|
-
icon: false,
|
16
|
-
id: nil,
|
17
|
-
label: 'Default',
|
18
|
-
size: 'normal',
|
19
|
-
variant: 'default',
|
20
|
-
url: nil
|
21
|
-
)
|
22
|
-
render(Button::Component.new(
|
23
|
-
border:,
|
24
|
-
icon:,
|
25
|
-
id:,
|
26
|
-
label:,
|
27
|
-
size:,
|
28
|
-
variant:,
|
29
|
-
url:
|
30
|
-
))
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Optics
|
4
|
-
module Icon
|
5
|
-
class Preview < ViewComponent::Preview
|
6
|
-
# @param emphasis select {{ ::Icon::Component::EMPHASES }}
|
7
|
-
# @param filled toggle
|
8
|
-
# @param name
|
9
|
-
# @param size select {{ ::Icon::Component::SIZES }}
|
10
|
-
# @param title
|
11
|
-
# @param weight select {{ ::Icon::Component::WEIGHTS }}
|
12
|
-
def default( # rubocop:disable Metrics/ParameterLists
|
13
|
-
emphasis: 'normal',
|
14
|
-
filled: false,
|
15
|
-
name: 'settings',
|
16
|
-
size: 'normal',
|
17
|
-
title: nil,
|
18
|
-
weight: 'normal'
|
19
|
-
)
|
20
|
-
render(
|
21
|
-
Icon::Component.new(
|
22
|
-
emphasis:,
|
23
|
-
filled:,
|
24
|
-
name:,
|
25
|
-
size:,
|
26
|
-
title:,
|
27
|
-
weight:
|
28
|
-
)
|
29
|
-
)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|