glassy_loader 1.2.0 → 1.2.1

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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +2 -2
  4. data/app/helpers/glassy_loader_helper.rb +2 -2
  5. data/lib/glassy_loader/version.rb +1 -1
  6. data/test/mini_project/.ruby-version +1 -0
  7. data/test/mini_project/Gemfile +19 -0
  8. data/test/mini_project/Gemfile.lock +338 -0
  9. data/test/mini_project/README.md +94 -0
  10. data/test/mini_project/Rakefile +6 -0
  11. data/test/mini_project/app/assets/images/.keep +0 -0
  12. data/test/mini_project/app/assets/images/screencapture-localhost-3000-2026-06-03-12_25_32.png +0 -0
  13. data/test/mini_project/app/assets/javascripts/application.js +1 -0
  14. data/test/mini_project/app/assets/stylesheets/application.css +11 -0
  15. data/test/mini_project/app/controllers/application_controller.rb +4 -0
  16. data/test/mini_project/app/controllers/concerns/.keep +0 -0
  17. data/test/mini_project/app/controllers/dashboard_controller.rb +7 -0
  18. data/test/mini_project/app/helpers/application_helper.rb +2 -0
  19. data/test/mini_project/app/helpers/dashboard_helper.rb +2 -0
  20. data/test/mini_project/app/models/application_record.rb +3 -0
  21. data/test/mini_project/app/models/concerns/.keep +0 -0
  22. data/test/mini_project/app/views/dashboard/index.html.erb +66 -0
  23. data/test/mini_project/app/views/dashboard/showcase.html.erb +13 -0
  24. data/test/mini_project/app/views/layouts/application.html.erb +29 -0
  25. data/test/mini_project/app/views/pwa/manifest.json.erb +22 -0
  26. data/test/mini_project/app/views/pwa/service-worker.js +26 -0
  27. data/test/mini_project/bin/ci +6 -0
  28. data/test/mini_project/bin/dev +2 -0
  29. data/test/mini_project/bin/rails +4 -0
  30. data/test/mini_project/bin/rake +4 -0
  31. data/test/mini_project/bin/setup +35 -0
  32. data/test/mini_project/config/application.rb +42 -0
  33. data/test/mini_project/config/boot.rb +3 -0
  34. data/test/mini_project/config/ci.rb +15 -0
  35. data/test/mini_project/config/credentials.yml.enc +1 -0
  36. data/test/mini_project/config/database.yml +31 -0
  37. data/test/mini_project/config/environment.rb +5 -0
  38. data/test/mini_project/config/environments/development.rb +57 -0
  39. data/test/mini_project/config/environments/production.rb +67 -0
  40. data/test/mini_project/config/environments/test.rb +42 -0
  41. data/test/mini_project/config/initializers/assets.rb +7 -0
  42. data/test/mini_project/config/initializers/content_security_policy.rb +29 -0
  43. data/test/mini_project/config/initializers/filter_parameter_logging.rb +8 -0
  44. data/test/mini_project/config/initializers/glassy_loader.rb +4 -0
  45. data/test/mini_project/config/initializers/inflections.rb +16 -0
  46. data/test/mini_project/config/locales/en.yml +31 -0
  47. data/test/mini_project/config/master.key +1 -0
  48. data/test/mini_project/config/puma.rb +39 -0
  49. data/test/mini_project/config/routes.rb +16 -0
  50. data/test/mini_project/config.ru +6 -0
  51. data/test/mini_project/db/seeds.rb +9 -0
  52. data/test/mini_project/lib/tasks/.keep +0 -0
  53. data/test/mini_project/log/.keep +0 -0
  54. data/test/mini_project/log/development.log +31 -0
  55. data/test/mini_project/public/400.html +135 -0
  56. data/test/mini_project/public/404.html +135 -0
  57. data/test/mini_project/public/406-unsupported-browser.html +135 -0
  58. data/test/mini_project/public/422.html +135 -0
  59. data/test/mini_project/public/500.html +135 -0
  60. data/test/mini_project/public/icon.png +0 -0
  61. data/test/mini_project/public/icon.svg +3 -0
  62. data/test/mini_project/public/robots.txt +1 -0
  63. data/test/mini_project/script/.keep +0 -0
  64. data/test/mini_project/storage/.keep +0 -0
  65. data/test/mini_project/storage/development.sqlite3 +0 -0
  66. data/test/mini_project/tmp/.keep +0 -0
  67. data/test/mini_project/tmp/pids/.keep +0 -0
  68. data/test/mini_project/tmp/restart.txt +0 -0
  69. data/test/mini_project/tmp/storage/.keep +0 -0
  70. data/test/mini_project/vendor/.keep +0 -0
  71. metadata +66 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11b64a3ac54fffda9abe80e4f0fbd0a047c6f4231609ae10ad36d06a0e1b69a0
4
- data.tar.gz: 0e2fdc86d23dace9beb09ee02a44a84fb4070067a59f41a0516b136cab7d09f1
3
+ metadata.gz: 4c6fa9523380f7782413c7b62359cd5d7958f0fda2d50d1b9e9fb04037f9a0f8
4
+ data.tar.gz: d7a49a081d06af53cd0d0e0267f00d59739eb145dff0532d38a78583f0cb0a02
5
5
  SHA512:
6
- metadata.gz: c6034f62ca424e96314ee79ebf93c8193fda0447c5473c37c5fd28de734888ca0c50cff05f8691d05970b745958668fa903134141bcbef453788e7506b505fe0
7
- data.tar.gz: 96e8c865533349801e356f7e8035989e8b4eb799a2c7a8c2e6efb7a9da2802e5aaf2bb39324273648139204305f6d4463a717266c466712b9740258cae4e8fdc
6
+ metadata.gz: 34976ea25e3fde8b309098988c1489f607d8c7209de257f0fc937733b00a535655fc5c6ead8a5d6a1c37b418c178be03e79c38d32c4d84ff89aeddac5792b89e
7
+ data.tar.gz: a8a928bd41f8484543aab26cbcc80706a0360f816522e16fe2359f732ab6835ea117cae43717e3a79e5ded1ae6df0ad9997edc57a2087dbc6d420d977958938e
data/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.1] - 2026-06-03
9
+
10
+ ### Fixed
11
+ - **Syntax Error:** Fixed invalid symbol literals in `glassy_loader_helper.rb` (unquoted hyphens).
12
+ - **Documentation:** Fixed broken examples in `README.md`.
13
+ - **Test Coverage:** Added RSpec tests for all new UI helpers.
14
+
8
15
  ## [1.2.0] - 2026-06-03
9
16
 
10
17
  ### Added
data/README.md CHANGED
@@ -57,7 +57,7 @@ Set your project-wide defaults in `config/initializers/glassy_loader.rb`:
57
57
  ```ruby
58
58
  GlassyLoader.configure do |config|
59
59
  config.theme = :apple # Options: :glassy, :apple, :cyberpunk, :midnight_gold, :liquid_mesh...
60
- config.animation = :spin-1 # Options: :spin-1..30, :dots-1..30, :pulse-1..22, :folding_cube...
60
+ config.animation = :"spin-1" # Options: :"spin-1"..30, :"dots-1"..30, :"pulse-1"..22, :"folding-cube"...
61
61
  config.duration = nil # Default auto-hide time in seconds
62
62
  end
63
63
  ```
@@ -78,7 +78,7 @@ For high-end landing pages or dashboards.
78
78
 
79
79
  ```erb
80
80
  <!-- 3D Folding Cube with Animated Mesh Background -->
81
- <%= glassy_loader_tag animation: :folding_cube, theme: :liquid_mesh, message: "INITIALIZING..." %>
81
+ <%= glassy_loader_tag animation: :"folding-cube", theme: :liquid_mesh, message: "INITIALIZING..." %>
82
82
 
83
83
  <!-- SVG Infinity Ribbon with Deep Gold Theme -->
84
84
  <%= glassy_loader_tag animation: :infinity, theme: :midnight_gold %>
@@ -81,7 +81,7 @@ module GlassyLoaderHelper
81
81
  end
82
82
  end
83
83
 
84
- def glassy_button_loader_tag(text, id: nil, class_name: nil, theme: nil, animation: :spin-1)
84
+ def glassy_button_loader_tag(text, id: nil, class_name: nil, theme: nil, animation: :"spin-1")
85
85
  theme ||= GlassyLoader.configuration.theme
86
86
  content_tag :button, id: id, class: ["glassy-button-loader", "glassy-theme-#{theme}", class_name].compact.join(" ") do
87
87
  safe_join([
@@ -93,7 +93,7 @@ module GlassyLoaderHelper
93
93
  end
94
94
  end
95
95
 
96
- def glassy_toast_tag(message, id: "glassy-toast", theme: nil, animation: :dots-1)
96
+ def glassy_toast_tag(message, id: "glassy-toast", theme: nil, animation: :"dots-1")
97
97
  theme ||= GlassyLoader.configuration.theme
98
98
  content_tag :div, id: id, class: ["glassy-toast", "glassy-theme-#{theme}"].compact.join(" "), style: "display: none;" do
99
99
  safe_join([
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GlassyLoader
4
- VERSION = "1.2.0"
4
+ VERSION = "1.2.1"
5
5
  end
@@ -0,0 +1 @@
1
+ ruby-3.4.9
@@ -0,0 +1,19 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
4
+ gem "rails", "~> 8.1.3"
5
+ # The modern asset pipeline for Rails [https://github.com/rails/propshaft]
6
+ gem "propshaft"
7
+ # Use sqlite3 as the database for Active Record
8
+ gem "sqlite3", ">= 2.1"
9
+ # Use the Puma web server [https://github.com/puma/puma]
10
+ gem "puma", ">= 5.0"
11
+
12
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
13
+ gem "tzinfo-data", platforms: %i[ windows jruby ]
14
+
15
+ group :development, :test do
16
+ # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
17
+ gem "debug", platforms: %i[ mri windows ], require: "debug/prelude"
18
+ end
19
+ gem 'glassy_loader', path: '../../'
@@ -0,0 +1,338 @@
1
+ PATH
2
+ remote: ../..
3
+ specs:
4
+ glassy_loader (1.2.1)
5
+ railties (>= 6.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ action_text-trix (2.1.19)
11
+ railties
12
+ actioncable (8.1.3)
13
+ actionpack (= 8.1.3)
14
+ activesupport (= 8.1.3)
15
+ nio4r (~> 2.0)
16
+ websocket-driver (>= 0.6.1)
17
+ zeitwerk (~> 2.6)
18
+ actionmailbox (8.1.3)
19
+ actionpack (= 8.1.3)
20
+ activejob (= 8.1.3)
21
+ activerecord (= 8.1.3)
22
+ activestorage (= 8.1.3)
23
+ activesupport (= 8.1.3)
24
+ mail (>= 2.8.0)
25
+ actionmailer (8.1.3)
26
+ actionpack (= 8.1.3)
27
+ actionview (= 8.1.3)
28
+ activejob (= 8.1.3)
29
+ activesupport (= 8.1.3)
30
+ mail (>= 2.8.0)
31
+ rails-dom-testing (~> 2.2)
32
+ actionpack (8.1.3)
33
+ actionview (= 8.1.3)
34
+ activesupport (= 8.1.3)
35
+ nokogiri (>= 1.8.5)
36
+ rack (>= 2.2.4)
37
+ rack-session (>= 1.0.1)
38
+ rack-test (>= 0.6.3)
39
+ rails-dom-testing (~> 2.2)
40
+ rails-html-sanitizer (~> 1.6)
41
+ useragent (~> 0.16)
42
+ actiontext (8.1.3)
43
+ action_text-trix (~> 2.1.15)
44
+ actionpack (= 8.1.3)
45
+ activerecord (= 8.1.3)
46
+ activestorage (= 8.1.3)
47
+ activesupport (= 8.1.3)
48
+ globalid (>= 0.6.0)
49
+ nokogiri (>= 1.8.5)
50
+ actionview (8.1.3)
51
+ activesupport (= 8.1.3)
52
+ builder (~> 3.1)
53
+ erubi (~> 1.11)
54
+ rails-dom-testing (~> 2.2)
55
+ rails-html-sanitizer (~> 1.6)
56
+ activejob (8.1.3)
57
+ activesupport (= 8.1.3)
58
+ globalid (>= 0.3.6)
59
+ activemodel (8.1.3)
60
+ activesupport (= 8.1.3)
61
+ activerecord (8.1.3)
62
+ activemodel (= 8.1.3)
63
+ activesupport (= 8.1.3)
64
+ timeout (>= 0.4.0)
65
+ activestorage (8.1.3)
66
+ actionpack (= 8.1.3)
67
+ activejob (= 8.1.3)
68
+ activerecord (= 8.1.3)
69
+ activesupport (= 8.1.3)
70
+ marcel (~> 1.0)
71
+ activesupport (8.1.3)
72
+ base64
73
+ bigdecimal
74
+ concurrent-ruby (~> 1.0, >= 1.3.1)
75
+ connection_pool (>= 2.2.5)
76
+ drb
77
+ i18n (>= 1.6, < 2)
78
+ json
79
+ logger (>= 1.4.2)
80
+ minitest (>= 5.1)
81
+ securerandom (>= 0.3)
82
+ tzinfo (~> 2.0, >= 2.0.5)
83
+ uri (>= 0.13.1)
84
+ base64 (0.3.0)
85
+ bigdecimal (4.1.2)
86
+ builder (3.3.0)
87
+ concurrent-ruby (1.3.6)
88
+ connection_pool (3.0.2)
89
+ crass (1.0.6)
90
+ date (3.5.1)
91
+ debug (1.11.1)
92
+ irb (~> 1.10)
93
+ reline (>= 0.3.8)
94
+ drb (2.2.3)
95
+ erb (6.0.4)
96
+ erubi (1.13.1)
97
+ globalid (1.3.0)
98
+ activesupport (>= 6.1)
99
+ i18n (1.14.8)
100
+ concurrent-ruby (~> 1.0)
101
+ io-console (0.8.2)
102
+ irb (1.18.0)
103
+ pp (>= 0.6.0)
104
+ prism (>= 1.3.0)
105
+ rdoc (>= 4.0.0)
106
+ reline (>= 0.4.2)
107
+ json (2.19.7)
108
+ logger (1.7.0)
109
+ loofah (2.25.1)
110
+ crass (~> 1.0.2)
111
+ nokogiri (>= 1.12.0)
112
+ mail (2.9.0)
113
+ logger
114
+ mini_mime (>= 0.1.1)
115
+ net-imap
116
+ net-pop
117
+ net-smtp
118
+ marcel (1.2.1)
119
+ mini_mime (1.1.5)
120
+ minitest (6.0.6)
121
+ drb (~> 2.0)
122
+ prism (~> 1.5)
123
+ net-imap (0.6.4)
124
+ date
125
+ net-protocol
126
+ net-pop (0.1.2)
127
+ net-protocol
128
+ net-protocol (0.2.2)
129
+ timeout
130
+ net-smtp (0.5.1)
131
+ net-protocol
132
+ nio4r (2.7.5)
133
+ nokogiri (1.19.3-aarch64-linux-gnu)
134
+ racc (~> 1.4)
135
+ nokogiri (1.19.3-aarch64-linux-musl)
136
+ racc (~> 1.4)
137
+ nokogiri (1.19.3-arm-linux-gnu)
138
+ racc (~> 1.4)
139
+ nokogiri (1.19.3-arm-linux-musl)
140
+ racc (~> 1.4)
141
+ nokogiri (1.19.3-arm64-darwin)
142
+ racc (~> 1.4)
143
+ nokogiri (1.19.3-x86_64-darwin)
144
+ racc (~> 1.4)
145
+ nokogiri (1.19.3-x86_64-linux-gnu)
146
+ racc (~> 1.4)
147
+ nokogiri (1.19.3-x86_64-linux-musl)
148
+ racc (~> 1.4)
149
+ pp (0.6.3)
150
+ prettyprint
151
+ prettyprint (0.2.0)
152
+ prism (1.9.0)
153
+ propshaft (1.3.2)
154
+ actionpack (>= 7.0.0)
155
+ activesupport (>= 7.0.0)
156
+ rack
157
+ psych (5.4.0)
158
+ date
159
+ stringio
160
+ puma (8.0.2)
161
+ nio4r (~> 2.0)
162
+ racc (1.8.1)
163
+ rack (3.2.6)
164
+ rack-session (2.1.2)
165
+ base64 (>= 0.1.0)
166
+ rack (>= 3.0.0)
167
+ rack-test (2.2.0)
168
+ rack (>= 1.3)
169
+ rackup (2.3.1)
170
+ rack (>= 3)
171
+ rails (8.1.3)
172
+ actioncable (= 8.1.3)
173
+ actionmailbox (= 8.1.3)
174
+ actionmailer (= 8.1.3)
175
+ actionpack (= 8.1.3)
176
+ actiontext (= 8.1.3)
177
+ actionview (= 8.1.3)
178
+ activejob (= 8.1.3)
179
+ activemodel (= 8.1.3)
180
+ activerecord (= 8.1.3)
181
+ activestorage (= 8.1.3)
182
+ activesupport (= 8.1.3)
183
+ bundler (>= 1.15.0)
184
+ railties (= 8.1.3)
185
+ rails-dom-testing (2.3.0)
186
+ activesupport (>= 5.0.0)
187
+ minitest
188
+ nokogiri (>= 1.6)
189
+ rails-html-sanitizer (1.7.0)
190
+ loofah (~> 2.25)
191
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
192
+ railties (8.1.3)
193
+ actionpack (= 8.1.3)
194
+ activesupport (= 8.1.3)
195
+ irb (~> 1.13)
196
+ rackup (>= 1.0.0)
197
+ rake (>= 12.2)
198
+ thor (~> 1.0, >= 1.2.2)
199
+ tsort (>= 0.2)
200
+ zeitwerk (~> 2.6)
201
+ rake (13.4.2)
202
+ rdoc (7.2.0)
203
+ erb
204
+ psych (>= 4.0.0)
205
+ tsort
206
+ reline (0.6.3)
207
+ io-console (~> 0.5)
208
+ securerandom (0.4.1)
209
+ sqlite3 (2.9.4-aarch64-linux-gnu)
210
+ sqlite3 (2.9.4-aarch64-linux-musl)
211
+ sqlite3 (2.9.4-arm-linux-gnu)
212
+ sqlite3 (2.9.4-arm-linux-musl)
213
+ sqlite3 (2.9.4-arm64-darwin)
214
+ sqlite3 (2.9.4-x86_64-darwin)
215
+ sqlite3 (2.9.4-x86_64-linux-gnu)
216
+ sqlite3 (2.9.4-x86_64-linux-musl)
217
+ stringio (3.2.0)
218
+ thor (1.5.0)
219
+ timeout (0.6.1)
220
+ tsort (0.2.0)
221
+ tzinfo (2.0.6)
222
+ concurrent-ruby (~> 1.0)
223
+ uri (1.1.1)
224
+ useragent (0.16.11)
225
+ websocket-driver (0.8.0)
226
+ base64
227
+ websocket-extensions (>= 0.1.0)
228
+ websocket-extensions (0.1.5)
229
+ zeitwerk (2.8.2)
230
+
231
+ PLATFORMS
232
+ aarch64-linux-gnu
233
+ aarch64-linux-musl
234
+ arm-linux-gnu
235
+ arm-linux-musl
236
+ arm64-darwin
237
+ x86_64-darwin
238
+ x86_64-linux-gnu
239
+ x86_64-linux-musl
240
+
241
+ DEPENDENCIES
242
+ debug
243
+ glassy_loader!
244
+ propshaft
245
+ puma (>= 5.0)
246
+ rails (~> 8.1.3)
247
+ sqlite3 (>= 2.1)
248
+ tzinfo-data
249
+
250
+ CHECKSUMS
251
+ action_text-trix (2.1.19) sha256=7012f59421009cf284aa651294896414d653a61a2417c9b8714c8476d2f74009
252
+ actioncable (8.1.3) sha256=e5bc7f75e44e6a22de29c4f43176927c3a9ce4824464b74ed18d8226e75a80f0
253
+ actionmailbox (8.1.3) sha256=df7da474eaa0e70df4ed5a6fef66eb3b3b0f2dbf7f14518deee8d77f1b4aae59
254
+ actionmailer (8.1.3) sha256=831f724891bb70d0aaa4d76581a6321124b6a752cb655c9346aae5479318448d
255
+ actionpack (8.1.3) sha256=af998cae4d47c5d581a2cc363b5c77eb718b7c4b45748d81b1887b25621c29a3
256
+ actiontext (8.1.3) sha256=d291019c00e1ea9e6463011fa214f6081a56d7b9a1d224e7d3f6384c1dafc7d2
257
+ actionview (8.1.3) sha256=1347c88c7f3edb38100c5ce0e9fb5e62d7755f3edc1b61cce2eb0b2c6ea2fd5d
258
+ activejob (8.1.3) sha256=a149b1766aa8204c3c3da7309e4becd40fcd5529c348cffbf6c9b16b565fe8d3
259
+ activemodel (8.1.3) sha256=90c05cbe4cef3649b8f79f13016191ea94c4525ce4a5c0fb7ef909c4b91c8219
260
+ activerecord (8.1.3) sha256=8003be7b2466ba0a2a670e603eeb0a61dd66058fccecfc49901e775260ac70ab
261
+ activestorage (8.1.3) sha256=0564ce9309143951a67615e1bb4e090ee54b8befed417133cae614479b46384d
262
+ activesupport (8.1.3) sha256=21a5e0dfbd4c3ddd9e1317ec6a4d782fa226e7867dc70b0743acda81a1dca20e
263
+ base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
264
+ bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
265
+ builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
266
+ concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
267
+ connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
268
+ crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d
269
+ date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
270
+ debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6
271
+ drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
272
+ erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9
273
+ erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
274
+ glassy_loader (1.2.1)
275
+ globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
276
+ i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
277
+ io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
278
+ irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
279
+ json (2.19.7) sha256=fe432c8639f6efff69f9d73b518a3705d9581ab93156f981ea72806e1e5bcc3e
280
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
281
+ loofah (2.25.1) sha256=d436c73dbd0c1147b16c4a41db097942d217303e1f7728704b37e4df9f6d2e04
282
+ mail (2.9.0) sha256=6fa6673ecd71c60c2d996260f9ee3dd387d4673b8169b502134659ece6d34941
283
+ marcel (1.2.1) sha256=1678e9360e32f9eafa917c80029e2f6d10b2715c66a4b87b6d0da9b9cd1f859f
284
+ mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
285
+ minitest (6.0.6) sha256=153ea36d1d987a62942382b61075745042a2b3123b1cd48f4c3675af9cc7d6f1
286
+ net-imap (0.6.4) sha256=9a5598c67a3022c284d98430ef1d4948e7dbdb62596f61081ea8ca933270a02b
287
+ net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
288
+ net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
289
+ net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
290
+ nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
291
+ nokogiri (1.19.3-aarch64-linux-gnu) sha256=46b89e5d7b9e844c2ee360794240c6ea2a4e6fa0c5892a4ed487db621224b639
292
+ nokogiri (1.19.3-aarch64-linux-musl) sha256=8392dfdcd21be7a94dbbe9ccc138dea01b97b24cb2dc02a114ca98bfb1d9a0b7
293
+ nokogiri (1.19.3-arm-linux-gnu) sha256=3919d5ffc334ad778a4a9eb88fda7dcb8b1fb58c8a52ac640c6dcd2f038e774f
294
+ nokogiri (1.19.3-arm-linux-musl) sha256=9ce1cb6346bb9c67b1550eb537aa183ead91e4b6eadb2f36ade02d8dd2a79fb6
295
+ nokogiri (1.19.3-arm64-darwin) sha256=71b9bd424b1b7abc18b05052a1a3cfd3627abdca62be280854cc411791357e42
296
+ nokogiri (1.19.3-x86_64-darwin) sha256=77f3fba57d46c53ab31e62fc6c28f705109d1bf6264356c76f132b2be5728d4d
297
+ nokogiri (1.19.3-x86_64-linux-gnu) sha256=2f5078620fe12e83669b5b17311b32532a8153d02eee7ad06948b926d6080976
298
+ nokogiri (1.19.3-x86_64-linux-musl) sha256=248c906d2166eca5efb56d52fdee5f9a1f51d69a72e2b64fdac647b4ce39ea3f
299
+ pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
300
+ prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
301
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
302
+ propshaft (1.3.2) sha256=1d56a3e56a92c21bfc29caf07406b5386b00d4c47ddf357cf989a5a234b1389e
303
+ psych (5.4.0) sha256=14f72d69a611af663d7d70e4a7b67d9eb1f3ae9f8d916b478961d5a0075ba5b7
304
+ puma (8.0.2) sha256=c8ed871dfbbe66448ea9ffd46692342d9804d4071522b52b5331b7b6e7b686fb
305
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
306
+ rack (3.2.6) sha256=5ed78e1f73b2e25679bec7d45ee2d4483cc4146eb1be0264fc4d94cb5ef212c2
307
+ rack-session (2.1.2) sha256=595434f8c0c3473ae7d7ac56ecda6cc6dfd9d37c0b2b5255330aa1576967ffe8
308
+ rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
309
+ rackup (2.3.1) sha256=6c79c26753778e90983761d677a48937ee3192b3ffef6bc963c0950f94688868
310
+ rails (8.1.3) sha256=6d017ba5348c98fc909753a8169b21d44de14d2a0b92d140d1a966834c3c9cd3
311
+ rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d
312
+ rails-html-sanitizer (1.7.0) sha256=28b145cceaf9cc214a9874feaa183c3acba036c9592b19886e0e45efc62b1e89
313
+ railties (8.1.3) sha256=913eb0e0cb520aac687ffd74916bd726d48fa21f47833c6292576ef6a286de22
314
+ rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
315
+ rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192
316
+ reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
317
+ securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
318
+ sqlite3 (2.9.4-aarch64-linux-gnu) sha256=ecabed721e6eaad54601d2685f09029d90025efc8d931040dc89cb3f8a2080ec
319
+ sqlite3 (2.9.4-aarch64-linux-musl) sha256=ffb4255947fb54c8c3eeca97460c9702b40de91ce390455ef7367ca6a3929a31
320
+ sqlite3 (2.9.4-arm-linux-gnu) sha256=9ee2008b9fbec984c3c165b0d7eedd2bd2a415100b761bfa3a4c6fbec9208bf6
321
+ sqlite3 (2.9.4-arm-linux-musl) sha256=8dc1fe4da6977992cd62decf4a93ccf6cc2e124a5e6a340160d52092f70e837a
322
+ sqlite3 (2.9.4-arm64-darwin) sha256=1d5aad413a815d236e96d43f05a1acc600b6cd086800770342a3f9c2877499ff
323
+ sqlite3 (2.9.4-x86_64-darwin) sha256=f280c476e360b73e86165a5e59b72801385b4a6c3a47f8af5ecefb9d90bec17f
324
+ sqlite3 (2.9.4-x86_64-linux-gnu) sha256=537a3eda71b1df1336d0055cbebe55a7317c34870c192c7b6b9d8d0be6871847
325
+ sqlite3 (2.9.4-x86_64-linux-musl) sha256=3fc5e865b4be9a85d998203ef8d0c0fdcb92f20acf34a254346ff8a19088efec
326
+ stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
327
+ thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
328
+ timeout (0.6.1) sha256=78f57368a7e7bbadec56971f78a3f5ecbcfb59b7fcbb0a3ed6ddc08a5094accb
329
+ tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
330
+ tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
331
+ uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
332
+ useragent (0.16.11) sha256=700e6413ad4bb954bb63547fa098dddf7b0ebe75b40cc6f93b8d54255b173844
333
+ websocket-driver (0.8.0) sha256=ed0dba4b943c22f17f9a734817e808bc84cdce6a7e22045f5315aa57676d4962
334
+ websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
335
+ zeitwerk (2.8.2) sha256=7212a61311083c604184b1ea2574b9aa05cd14f855a0841c06985cabe9181d12
336
+
337
+ BUNDLED WITH
338
+ 4.0.11
@@ -0,0 +1,94 @@
1
+ # GlassyLoader Mini Project
2
+
3
+ This project demonstrates the integration and usage of the `glassy_loader` gem, a premium loading UI suite for Ruby on Rails applications.
4
+
5
+ ## 📸 Showcase
6
+
7
+ ![Dashboard Screenshot](app/assets/images/screencapture-localhost-3000-2026-06-03-12_25_32.png)
8
+
9
+ ## 🚀 Gem Usage: GlassyLoader
10
+
11
+ The `glassy_loader` gem provides a variety of customizable loading indicators, including full-screen loaders, button loaders, toast notifications, and skeleton layouts.
12
+
13
+ ### 1. Installation
14
+
15
+ The gem is included in the `Gemfile`:
16
+
17
+ ```ruby
18
+ gem 'glassy_loader', '~> 1.2'
19
+
20
+ ```
21
+
22
+ ```ruby
23
+ bundle install
24
+
25
+ ```
26
+
27
+ ### 2. Configuration
28
+
29
+ Global configuration is handled in `config/initializers/glassy_loader.rb`:
30
+
31
+ ```ruby
32
+ GlassyLoader.configure do |config|
33
+ config.theme = :apple
34
+ config.animation = :"spin-1"
35
+ end
36
+ ```
37
+
38
+ ### 3. Asset Integration
39
+
40
+ Assets are included in the application layout (`app/views/layouts/application.html.erb`):
41
+
42
+ ```erb
43
+ <%= stylesheet_link_tag "glassy_loader/main" %>
44
+ <%= javascript_include_tag "glassy_loader/loader" %>
45
+ ```
46
+
47
+ And required in the asset pipeline:
48
+ - `app/assets/stylesheets/application.css`: `/*= require glassy_loader/main */`
49
+ - `app/assets/javascripts/application.js`: `//= require glassy_loader/loader`
50
+
51
+ ### 4. View Helpers
52
+
53
+ The gem provides several intuitive helpers:
54
+
55
+ - **Main Loader Tag**: Used for full-screen or container-based loaders.
56
+ ```erb
57
+ <%= glassy_loader_tag id: "main-loader", message: "PREPARING ASSETS...", theme: :liquid_mesh, animation: :folding_cube %>
58
+ ```
59
+ - **Button Loader Tag**: Enhances standard buttons with loading states.
60
+ ```erb
61
+ <%= glassy_button_loader_tag "Load Data", id: "btn-load", theme: :apple %>
62
+ ```
63
+ - **Toast Tag**: Displays sleek notification overlays.
64
+ ```erb
65
+ <%= glassy_toast_tag "Processing...", id: "my-toast", theme: :midnight_gold %>
66
+ ```
67
+ - **Skeleton Layouts**: Provides placeholders for content loading.
68
+ ```erb
69
+ <%= glassy_skeleton_layout type: :feed, items: 2 %>
70
+ ```
71
+
72
+ ### 5. JavaScript API
73
+
74
+ Control loaders programmatically using the `GlassyLoader` JS object:
75
+
76
+ ```javascript
77
+ // Show a loader
78
+ GlassyLoader.show('main-loader');
79
+
80
+ // Update to success state
81
+ GlassyLoader.success('main-loader', 'COMPLETED!');
82
+
83
+ // Toggle button loading state
84
+ GlassyLoader.toggleButton('btn-load', true);
85
+
86
+ // Show a toast
87
+ GlassyLoader.showToast('my-toast', { duration: 3 });
88
+ ```
89
+
90
+ ## 🛠 Project Structure
91
+
92
+ - `app/controllers/dashboard_controller.rb`: Handles the main demo pages.
93
+ - `app/views/dashboard/index.html.erb`: The main interactive demo dashboard.
94
+ - `app/views/dashboard/showcase.html.erb`: A gallery of available animations.
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative "config/application"
5
+
6
+ Rails.application.load_tasks
File without changes
@@ -0,0 +1 @@
1
+ //= require glassy_loader/loader
@@ -0,0 +1,11 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css.
3
+ *
4
+ * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
5
+ * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
6
+ * cascading order, meaning styles declared later in the document or manifest will override earlier ones,
7
+ * depending on specificity.
8
+ *
9
+ * Consider organizing styles into separate files for maintainability.
10
+ */
11
+ /*= require glassy_loader/main */
@@ -0,0 +1,4 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has.
3
+ allow_browser versions: :modern
4
+ end
File without changes
@@ -0,0 +1,7 @@
1
+ class DashboardController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def showcase
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module DashboardHelper
2
+ end
@@ -0,0 +1,3 @@
1
+ class ApplicationRecord < ActiveRecord::Base
2
+ primary_abstract_class
3
+ end
File without changes
@@ -0,0 +1,66 @@
1
+ <div style="padding: 40px; font-family: sans-serif; max-width: 800px; margin: 0 auto; background: #f0f2f5; min-height: 100vh;">
2
+ <h1 style="color: #1a73e8;">💎 GlassyLoader Showcase</h1>
3
+ <p>Welcome to the premium loading UI suite demo.</p>
4
+
5
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-top: 40px;">
6
+
7
+ <!-- Button Loaders -->
8
+ <div style="background: white; padding: 20px; border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.05);">
9
+ <h3>Button Loaders</h3>
10
+ <%= glassy_button_loader_tag "Load Data", id: "btn-load", theme: :apple %>
11
+ <button onclick="toggleBtn()" style="margin-top: 10px; display: block;">Toggle Loading</button>
12
+ </div>
13
+
14
+ <!-- Toast Loaders -->
15
+ <div style="background: white; padding: 20px; border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.05);">
16
+ <h3>Toast Notifications</h3>
17
+ <%= glassy_toast_tag "Processing...", id: "my-toast", theme: :midnight_gold %>
18
+ <button onclick="showToast()">Show Toast</button>
19
+ </div>
20
+
21
+ <!-- Skeleton Layouts -->
22
+ <div style="background: white; padding: 20px; border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); grid-column: span 2;">
23
+ <h3>Skeleton Layouts</h3>
24
+ <div id="skeleton-container">
25
+ <%= glassy_skeleton_layout type: :feed, items: 2 %>
26
+ </div>
27
+ <button onclick="refreshSkeletons()" style="margin-top: 10px;">Refresh Feed</button>
28
+ </div>
29
+
30
+ </div>
31
+
32
+ <div style="margin-top: 40px;">
33
+ <button onclick="showFullLoader()" style="padding: 15px 30px; font-size: 1.2rem; background: #1a73e8; color: white; border: none; border-radius: 8px; cursor: pointer;">
34
+ Launch Full Screen Loader
35
+ </button>
36
+ </div>
37
+
38
+ <%= glassy_loader_tag id: "main-loader", message: "PREPARING ASSETS...", theme: :liquid_mesh, animation: :folding_cube, delay: 0.2, min_duration: 1.0 %>
39
+
40
+ <script>
41
+ function toggleBtn() {
42
+ const btn = document.getElementById('btn-load');
43
+ const isLoading = btn.getAttribute('data-loading') === 'true';
44
+ GlassyLoader.toggleButton('btn-load', !isLoading);
45
+ }
46
+
47
+ function showToast() {
48
+ GlassyLoader.showToast('my-toast', { duration: 3 });
49
+ }
50
+
51
+ function showFullLoader() {
52
+ GlassyLoader.show('main-loader');
53
+ setTimeout(() => {
54
+ GlassyLoader.success('main-loader', 'COMPLETED!');
55
+ }, 2500);
56
+ }
57
+
58
+ function refreshSkeletons() {
59
+ const container = document.getElementById('skeleton-container');
60
+ container.style.opacity = '0.5';
61
+ setTimeout(() => {
62
+ container.style.opacity = '1';
63
+ }, 500);
64
+ }
65
+ </script>
66
+ </div>
@@ -0,0 +1,13 @@
1
+ <div style="padding: 20px;">
2
+ <h1>Animation Gallery</h1>
3
+ <div style="display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;">
4
+ <% [:spin, :dots, :pulse].each do |type| %>
5
+ <% (1..5).each do |i| %>
6
+ <div style="border: 1px solid #ccc; padding: 10px; height: 150px; position: relative;">
7
+ <p><%= type %>-<%= i %></p>
8
+ <%= glassy_loader_tag animation: "#{type}-#{i}", full_screen: false, container: true, message: nil %>
9
+ </div>
10
+ <% end %>
11
+ <% end %>
12
+ </div>
13
+ </div>