style_capsule 1.2.0

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.
@@ -0,0 +1,113 @@
1
+ module StyleCapsule
2
+ VERSION: String
3
+
4
+ module CssProcessor
5
+ def self.scope_selectors: (String css_string, String capsule_id) -> String
6
+ def self.scope_with_nesting: (String css_string, String capsule_id) -> String
7
+ def self.strip_comments: (String css) -> String
8
+ end
9
+
10
+ class CssFileWriter
11
+ def self.configure: (?output_dir: String | Pathname, ?filename_pattern: Proc, ?enabled: bool) -> void
12
+ def self.write_css: (css_content: String, component_class: Class, capsule_id: String) -> String?
13
+ def self.file_exists?: (component_class: Class, capsule_id: String) -> bool
14
+ def self.file_path_for: (component_class: Class, capsule_id: String) -> String?
15
+ def self.ensure_output_directory: () -> void
16
+ def self.clear_files: () -> void
17
+ def self.enabled?: () -> bool
18
+ end
19
+
20
+ class StylesheetRegistry < ActiveSupport::CurrentAttributes
21
+ DEFAULT_NAMESPACE: Symbol
22
+
23
+ def self.normalize_namespace: (Symbol | String | nil namespace) -> Symbol
24
+ def self.register: (String file_path, ?namespace: Symbol | String | nil, **Hash[untyped, untyped] options) -> void
25
+ def self.register_inline: (String css_content, ?namespace: Symbol | String | nil, ?capsule_id: String | nil, ?cache_key: String | nil, ?cache_strategy: Symbol, ?cache_ttl: Integer | ActiveSupport::Duration | nil, ?cache_proc: Proc | nil, ?component_class: Class | nil, ?stylesheet_link_options: Hash[untyped, untyped] | nil) -> void
26
+ def self.cached_inline: (String cache_key, cache_strategy: Symbol, ?cache_ttl: Integer | ActiveSupport::Duration | nil, ?cache_proc: Proc | nil, ?css_content: String | nil, ?capsule_id: String | nil, ?namespace: Symbol | nil) -> String | nil
27
+ def self.cache_inline_css: (String cache_key, String css_content, cache_strategy: Symbol, ?cache_ttl: Integer | ActiveSupport::Duration | nil, ?cache_proc: Proc | nil, ?capsule_id: String | nil, ?namespace: Symbol | nil) -> void
28
+ def self.clear_inline_cache: (?String cache_key) -> void
29
+ def self.cleanup_expired_cache: () -> Integer
30
+ def self.manifest_files: () -> Hash[Symbol, Set[Hash[Symbol, untyped]]]
31
+ def self.request_inline_stylesheets: () -> Hash[Symbol, Array[Hash[Symbol, untyped]]]
32
+ def self.stylesheets_for: (?namespace: Symbol | String | nil) -> Array[Hash[Symbol, untyped]]
33
+ def self.clear: (?namespace: Symbol | String | nil) -> void
34
+ def self.clear_manifest: (?namespace: Symbol | String | nil) -> void
35
+ def self.render_head_stylesheets: (?ActionView::Base | nil view_context, ?namespace: Symbol | String | nil) -> String
36
+ def self.any?: (?namespace: Symbol | String | nil) -> bool
37
+ end
38
+
39
+ module Component
40
+ module ClassMethods
41
+ def css_cache: () -> Hash[String, String]
42
+ def clear_css_cache: () -> void
43
+ def capsule_id: () -> String | nil
44
+ def capsule_id: (String capsule_id) -> String
45
+ def stylesheet_registry: (?namespace: Symbol | String | nil, ?cache_strategy: Symbol, ?cache_ttl: Integer | ActiveSupport::Duration | nil, ?cache_proc: Proc | nil) -> void
46
+ def head_rendering!: () -> void # deprecated
47
+ def head_rendering?: () -> bool
48
+ def stylesheet_namespace: () -> Symbol | String | nil
49
+ def custom_capsule_id: () -> String | nil
50
+ def inline_cache_strategy: () -> Symbol | nil
51
+ def inline_cache_strategy: (Symbol strategy, ?ttl: Integer | nil, ?cache_proc: Proc | nil) -> Symbol
52
+ def inline_cache_ttl: () -> Integer | ActiveSupport::Duration | nil
53
+ def inline_cache_proc: () -> Proc | nil
54
+ def stylesheet_link_options: () -> Hash[untyped, untyped] | nil
55
+ def stylesheet_link_options: (Hash[untyped, untyped] options) -> Hash[untyped, untyped]
56
+ def css_scoping_strategy: () -> Symbol
57
+ def css_scoping_strategy: (Symbol strategy) -> Symbol
58
+ end
59
+
60
+ def component_capsule: () -> String
61
+ def head_rendering?: () -> bool
62
+ end
63
+
64
+ module ViewComponent
65
+ module ClassMethods
66
+ def css_cache: () -> Hash[String, String]
67
+ def clear_css_cache: () -> void
68
+ def capsule_id: () -> String | nil
69
+ def capsule_id: (String capsule_id) -> String
70
+ def stylesheet_registry: (?namespace: Symbol | String | nil, ?cache_strategy: Symbol, ?cache_ttl: Integer | ActiveSupport::Duration | nil, ?cache_proc: Proc | nil) -> void
71
+ def head_rendering!: () -> void # deprecated
72
+ def head_rendering?: () -> bool
73
+ def stylesheet_namespace: () -> Symbol | String | nil
74
+ def custom_capsule_id: () -> String | nil
75
+ def inline_cache_strategy: () -> Symbol | nil
76
+ def inline_cache_strategy: (Symbol strategy, ?ttl: Integer | nil, ?cache_proc: Proc | nil) -> Symbol
77
+ def inline_cache_ttl: () -> Integer | ActiveSupport::Duration | nil
78
+ def inline_cache_proc: () -> Proc | nil
79
+ def stylesheet_link_options: () -> Hash[untyped, untyped] | nil
80
+ def stylesheet_link_options: (Hash[untyped, untyped] options) -> Hash[untyped, untyped]
81
+ def css_scoping_strategy: () -> Symbol
82
+ def css_scoping_strategy: (Symbol strategy) -> Symbol
83
+ end
84
+
85
+ def component_capsule: () -> String
86
+ def head_rendering?: () -> bool
87
+ end
88
+
89
+ module ViewComponentHelper
90
+ def register_stylesheet: (String file_path, ?namespace: Symbol | String | nil, **Hash[untyped, untyped] options) -> void
91
+ def stylesheet_registry_tags: (?namespace: Symbol | String | nil) -> String
92
+ def stylesheet_registrymap_tags: (?namespace: Symbol | String | nil) -> String # deprecated
93
+ end
94
+
95
+ module Helper
96
+ def generate_capsule_id: (String css_content) -> String
97
+ def scope_css: (String css_content, String capsule_id) -> String
98
+ def style_capsule: (?String css_content, ?capsule_id: String | nil) { () -> String } -> String
99
+ def register_stylesheet: (String file_path, ?namespace: Symbol | String | nil, **Hash[untyped, untyped] options) -> void
100
+ def stylesheet_registry_tags: (?namespace: Symbol | String | nil) -> String
101
+ def stylesheet_registrymap_tags: (?namespace: Symbol | String | nil) -> String # deprecated
102
+ end
103
+
104
+ module PhlexHelper
105
+ def register_stylesheet: (String file_path, ?namespace: Symbol | String | nil, **Hash[untyped, untyped] options) -> void
106
+ def stylesheet_registry_tags: (?namespace: Symbol | String | nil) -> void
107
+ def stylesheet_registrymap_tags: (?namespace: Symbol | String | nil) -> void # deprecated
108
+ end
109
+
110
+ class Railtie < Rails::Railtie
111
+ end
112
+ end
113
+
metadata ADDED
@@ -0,0 +1,306 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: style_capsule
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrei Makarov
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: activesupport
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '6.0'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '9.0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '6.0'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '9.0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: railties
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '6.0'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '9.0'
42
+ type: :development
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '6.0'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '9.0'
52
+ - !ruby/object:Gem::Dependency
53
+ name: rspec
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - "~>"
57
+ - !ruby/object:Gem::Version
58
+ version: '3'
59
+ type: :development
60
+ prerelease: false
61
+ version_requirements: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - "~>"
64
+ - !ruby/object:Gem::Version
65
+ version: '3'
66
+ - !ruby/object:Gem::Dependency
67
+ name: webmock
68
+ requirement: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '3'
73
+ type: :development
74
+ prerelease: false
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '3'
80
+ - !ruby/object:Gem::Dependency
81
+ name: rake
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '13'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '13'
94
+ - !ruby/object:Gem::Dependency
95
+ name: simplecov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '0.22'
101
+ type: :development
102
+ prerelease: false
103
+ version_requirements: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '0.22'
108
+ - !ruby/object:Gem::Dependency
109
+ name: rspec_junit_formatter
110
+ requirement: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '0.6'
115
+ type: :development
116
+ prerelease: false
117
+ version_requirements: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '0.6'
122
+ - !ruby/object:Gem::Dependency
123
+ name: simplecov-cobertura
124
+ requirement: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '3'
129
+ type: :development
130
+ prerelease: false
131
+ version_requirements: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '3'
136
+ - !ruby/object:Gem::Dependency
137
+ name: standard
138
+ requirement: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '1'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '1'
150
+ - !ruby/object:Gem::Dependency
151
+ name: standard-rails
152
+ requirement: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '1'
157
+ type: :development
158
+ prerelease: false
159
+ version_requirements: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '1'
164
+ - !ruby/object:Gem::Dependency
165
+ name: standard-performance
166
+ requirement: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - "~>"
169
+ - !ruby/object:Gem::Version
170
+ version: '1'
171
+ type: :development
172
+ prerelease: false
173
+ version_requirements: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - "~>"
176
+ - !ruby/object:Gem::Version
177
+ version: '1'
178
+ - !ruby/object:Gem::Dependency
179
+ name: appraisal
180
+ requirement: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '2'
185
+ type: :development
186
+ prerelease: false
187
+ version_requirements: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - "~>"
190
+ - !ruby/object:Gem::Version
191
+ version: '2'
192
+ - !ruby/object:Gem::Dependency
193
+ name: memory_profiler
194
+ requirement: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - "~>"
197
+ - !ruby/object:Gem::Version
198
+ version: '1'
199
+ type: :development
200
+ prerelease: false
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - "~>"
204
+ - !ruby/object:Gem::Version
205
+ version: '1'
206
+ - !ruby/object:Gem::Dependency
207
+ name: rbs
208
+ requirement: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - "~>"
211
+ - !ruby/object:Gem::Version
212
+ version: '3'
213
+ type: :development
214
+ prerelease: false
215
+ version_requirements: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: '3'
220
+ - !ruby/object:Gem::Dependency
221
+ name: phlex-rails
222
+ requirement: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - "~>"
225
+ - !ruby/object:Gem::Version
226
+ version: '2.0'
227
+ type: :development
228
+ prerelease: false
229
+ version_requirements: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - "~>"
232
+ - !ruby/object:Gem::Version
233
+ version: '2.0'
234
+ - !ruby/object:Gem::Dependency
235
+ name: view_component
236
+ requirement: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - "~>"
239
+ - !ruby/object:Gem::Version
240
+ version: '4.0'
241
+ type: :development
242
+ prerelease: false
243
+ version_requirements: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - "~>"
246
+ - !ruby/object:Gem::Version
247
+ version: '4.0'
248
+ description: Provides component-scoped CSS encapsulation using [data-capsule] attributes
249
+ for Phlex components, ViewComponent components, and ERB templates. Styles are automatically
250
+ scoped to prevent leakage between components. Inspired by component-based CSS approaches
251
+ like Angular's view encapsulation and CSS modules. Works with Rails and can be used
252
+ standalone in other Ruby frameworks (Sinatra, Hanami, etc.) or plain Ruby scripts.
253
+ email:
254
+ - contact@kiskolabs.com
255
+ executables: []
256
+ extensions: []
257
+ extra_rdoc_files: []
258
+ files:
259
+ - CHANGELOG.md
260
+ - LICENSE.md
261
+ - README.md
262
+ - SECURITY.md
263
+ - lib/style_capsule.rb
264
+ - lib/style_capsule/class_registry.rb
265
+ - lib/style_capsule/component.rb
266
+ - lib/style_capsule/component_builder.rb
267
+ - lib/style_capsule/component_styles_support.rb
268
+ - lib/style_capsule/css_file_writer.rb
269
+ - lib/style_capsule/css_processor.rb
270
+ - lib/style_capsule/helper.rb
271
+ - lib/style_capsule/phlex_helper.rb
272
+ - lib/style_capsule/railtie.rb
273
+ - lib/style_capsule/standalone_helper.rb
274
+ - lib/style_capsule/stylesheet_registry.rb
275
+ - lib/style_capsule/version.rb
276
+ - lib/style_capsule/view_component.rb
277
+ - lib/style_capsule/view_component_helper.rb
278
+ - lib/tasks/style_capsule.rake
279
+ - sig/style_capsule.rbs
280
+ homepage: https://github.com/amkisko/style_capsule.rb
281
+ licenses:
282
+ - MIT
283
+ metadata:
284
+ homepage_uri: https://github.com/amkisko/style_capsule.rb
285
+ changelog_uri: https://github.com/amkisko/style_capsule.rb/blob/main/CHANGELOG.md
286
+ bug_tracker_uri: https://github.com/amkisko/style_capsule.rb/issues
287
+ documentation_uri: https://github.com/amkisko/style_capsule.rb#readme
288
+ rubygems_mfa_required: 'true'
289
+ rdoc_options: []
290
+ require_paths:
291
+ - lib
292
+ required_ruby_version: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - ">="
295
+ - !ruby/object:Gem::Version
296
+ version: '3.0'
297
+ required_rubygems_version: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - ">="
300
+ - !ruby/object:Gem::Version
301
+ version: '0'
302
+ requirements: []
303
+ rubygems_version: 3.6.9
304
+ specification_version: 4
305
+ summary: Attribute-based CSS scoping for Phlex, ViewComponent, and ERB templates.
306
+ test_files: []