optics_view_components 0.1.5 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54fb6a68b7cdd5b3ccd449bca62f7011af24f36fc541a92d7da7d8254b26047b
4
- data.tar.gz: aa821b1b78cabd2f2f2f78aa9aecefa4b40590fe76be411cafb6ec9b5675fb8c
3
+ metadata.gz: 5194f25da267f185510137dd9cb5cda150d6da2ea4bea6dcdbe2353360b460ba
4
+ data.tar.gz: c856c408ca950243a0b00bf080c93c8a1d182f7a1bcb87df35084522c82c78d4
5
5
  SHA512:
6
- metadata.gz: 172d34c022dcd91ac936ada62fb622c3836c14d22528f98a89e8eaf25cdf5539e496523e9dcc95303abf6f8c54c4ceba3b5bd0f2a3bb30eccf1380da80c7ba10
7
- data.tar.gz: 34faf6863d961a9c7d12ad5a3ce12a49d35718a9b30abb7a912929181988777e72bf945fa97769756b614a756a555653914da72f9cd31967543b2f58d939c587
6
+ metadata.gz: 87d76b46feb1fed4772bd7e6ca8efd36e1c3bb38cae8fb94325f676dfef1e38bb8b6ec9a897010d72dd7d154dd6638ce961e2a6245c45be0a170a8c036276fb9
7
+ data.tar.gz: fafd24dd4f8738e53b012a0a82ce10b4a2c6e35c7ccbaa872316055641260d2c62c09cfbc8ce8e87c63578ea37566c23544fd4d06d57cf54c561e866958fa148
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Optics
4
+ module Sidebar
5
+ class Component < ApplicationViewComponent
6
+ VARIANTS = %w[drawer compact rail]
7
+
8
+ renders_one :brand, 'Brand'
9
+ renders_many :sidebar_contents, 'SidebarContent'
10
+
11
+ accepts :responsive, default: false
12
+ accepts :variant, default: 'drawer'
13
+
14
+ def call
15
+ content_tag(
16
+ :nav,
17
+ class: classes
18
+ ) do
19
+ capture do
20
+ concat brand
21
+ sidebar_contents.each do |content|
22
+ concat content
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ def classes
29
+ class_names(
30
+ 'sidebar',
31
+ variant_class,
32
+ @attributes[:class],
33
+ 'sidebar--responsive': responsive
34
+ ).join(' ')
35
+ end
36
+
37
+ def variant_class
38
+ "sidebar--#{variant}"
39
+ end
40
+
41
+ class Brand < ApplicationViewComponent
42
+ accepts :url
43
+ accepts :image_source
44
+
45
+ def call
46
+ link_to(url, class: 'sidebar__brand') do
47
+ image_tag(image_source)
48
+ end
49
+ end
50
+ end
51
+
52
+ class SidebarContent < ApplicationViewComponent
53
+ renders_many :buttons, Optics::Button::Component
54
+
55
+ accepts :position, default: 'center'
56
+
57
+ def call
58
+ concat(
59
+ content_tag(
60
+ :div,
61
+ class: classes
62
+ ) do
63
+ buttons.each do |button|
64
+ concat button
65
+ end
66
+ end
67
+ )
68
+ end
69
+
70
+ def classes
71
+ class_names(
72
+ 'sidebar__content',
73
+ position_class,
74
+ ).join(' ')
75
+ end
76
+
77
+ def position_class
78
+ "sidebar__content--#{position}"
79
+ end
80
+ end
81
+
82
+ class LinksComponent < ApplicationViewComponent
83
+ accepts :image_source
84
+ accepts :url
85
+
86
+ def call
87
+ link_to(url, class: 'sidebar__brand') do
88
+ image_tag(image_source)
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Optics
4
4
  module ViewComponents
5
- VERSION = '0.1.5'
5
+ VERSION = '0.1.7'
6
6
  end
7
7
  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.5
4
+ version: 0.1.7
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-06-19 00:00:00.000000000 Z
11
+ date: 2023-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: view_component
@@ -119,6 +119,7 @@ files:
119
119
  - app/components/optics/application_view_component_preview.rb
120
120
  - app/components/optics/button/component.rb
121
121
  - app/components/optics/icon/component.rb
122
+ - app/components/optics/sidebar/component.rb
122
123
  - demo/.ruby-version
123
124
  - demo/Gemfile
124
125
  - demo/Gemfile.lock