better_page 2.0.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.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +62 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.md +357 -0
  5. data/Rakefile +3 -0
  6. data/docs/00-README.md +17 -0
  7. data/docs/01-getting-started.md +137 -0
  8. data/docs/02-component-registry.md +192 -0
  9. data/docs/03-base-pages.md +238 -0
  10. data/docs/04-schema-validation.md +180 -0
  11. data/docs/05-turbo-support.md +220 -0
  12. data/docs/06-compliance-analyzer.md +147 -0
  13. data/docs/07-configuration.md +157 -0
  14. data/guide/00-README.md +32 -0
  15. data/guide/01-quick-start.md +148 -0
  16. data/guide/02-building-index-page.md +258 -0
  17. data/guide/03-building-show-page.md +266 -0
  18. data/guide/04-building-form-page.md +309 -0
  19. data/guide/05-custom-pages.md +325 -0
  20. data/guide/06-best-practices.md +311 -0
  21. data/lib/better_page/base_page.rb +161 -0
  22. data/lib/better_page/compliance/analyzer.rb +409 -0
  23. data/lib/better_page/component_registry.rb +393 -0
  24. data/lib/better_page/config.rb +165 -0
  25. data/lib/better_page/configuration.rb +153 -0
  26. data/lib/better_page/custom_base_page.rb +85 -0
  27. data/lib/better_page/default_components.rb +200 -0
  28. data/lib/better_page/form_base_page.rb +170 -0
  29. data/lib/better_page/index_base_page.rb +69 -0
  30. data/lib/better_page/railtie.rb +34 -0
  31. data/lib/better_page/show_base_page.rb +120 -0
  32. data/lib/better_page/validation_error.rb +7 -0
  33. data/lib/better_page/version.rb +3 -0
  34. data/lib/better_page.rb +80 -0
  35. data/lib/generators/better_page/component_generator.rb +131 -0
  36. data/lib/generators/better_page/install_generator.rb +160 -0
  37. data/lib/generators/better_page/page_generator.rb +101 -0
  38. data/lib/generators/better_page/sync_generator.rb +109 -0
  39. data/lib/generators/better_page/templates/application_page.rb.tt +12 -0
  40. data/lib/generators/better_page/templates/better_page_initializer.rb.tt +53 -0
  41. data/lib/generators/better_page/templates/custom_base_page.rb.tt +83 -0
  42. data/lib/generators/better_page/templates/custom_page.rb.tt +31 -0
  43. data/lib/generators/better_page/templates/edit_page.rb.tt +46 -0
  44. data/lib/generators/better_page/templates/form_base_page.rb.tt +126 -0
  45. data/lib/generators/better_page/templates/index_base_page.rb.tt +65 -0
  46. data/lib/generators/better_page/templates/index_page.rb.tt +56 -0
  47. data/lib/generators/better_page/templates/javascript/controllers/app_nav_controller.js +57 -0
  48. data/lib/generators/better_page/templates/javascript/controllers/drawer_controller.js +99 -0
  49. data/lib/generators/better_page/templates/javascript/controllers/dropdown_controller.js +60 -0
  50. data/lib/generators/better_page/templates/javascript/controllers/index.js +36 -0
  51. data/lib/generators/better_page/templates/javascript/controllers/modal_controller.js +70 -0
  52. data/lib/generators/better_page/templates/javascript/controllers/sidebar_controller.js +152 -0
  53. data/lib/generators/better_page/templates/javascript/controllers/table_controller.js +60 -0
  54. data/lib/generators/better_page/templates/javascript/controllers/tabs_controller.js +89 -0
  55. data/lib/generators/better_page/templates/new_page.rb.tt +46 -0
  56. data/lib/generators/better_page/templates/show_base_page.rb.tt +117 -0
  57. data/lib/generators/better_page/templates/show_page.rb.tt +45 -0
  58. data/lib/generators/better_page/templates/view_components/application_view_component.rb.tt +7 -0
  59. data/lib/generators/better_page/templates/view_components/custom_view_component.html.erb.tt +21 -0
  60. data/lib/generators/better_page/templates/view_components/custom_view_component.rb.tt +21 -0
  61. data/lib/generators/better_page/templates/view_components/form_view_component.html.erb.tt +25 -0
  62. data/lib/generators/better_page/templates/view_components/form_view_component.rb.tt +23 -0
  63. data/lib/generators/better_page/templates/view_components/index_view_component.html.erb.tt +33 -0
  64. data/lib/generators/better_page/templates/view_components/index_view_component.rb.tt +29 -0
  65. data/lib/generators/better_page/templates/view_components/show_view_component.html.erb.tt +29 -0
  66. data/lib/generators/better_page/templates/view_components/show_view_component.rb.tt +25 -0
  67. data/lib/generators/better_page/templates/view_components/ui/alerts_component.html.erb.tt +47 -0
  68. data/lib/generators/better_page/templates/view_components/ui/alerts_component.rb.tt +47 -0
  69. data/lib/generators/better_page/templates/view_components/ui/content_section_component.html.erb.tt +42 -0
  70. data/lib/generators/better_page/templates/view_components/ui/content_section_component.rb.tt +34 -0
  71. data/lib/generators/better_page/templates/view_components/ui/drawer_component.html.erb.tt +73 -0
  72. data/lib/generators/better_page/templates/view_components/ui/drawer_component.rb.tt +78 -0
  73. data/lib/generators/better_page/templates/view_components/ui/errors_component.html.erb.tt +23 -0
  74. data/lib/generators/better_page/templates/view_components/ui/errors_component.rb.tt +18 -0
  75. data/lib/generators/better_page/templates/view_components/ui/field_component.html.erb.tt +65 -0
  76. data/lib/generators/better_page/templates/view_components/ui/field_component.rb.tt +91 -0
  77. data/lib/generators/better_page/templates/view_components/ui/footer_component.html.erb.tt +33 -0
  78. data/lib/generators/better_page/templates/view_components/ui/footer_component.rb.tt +32 -0
  79. data/lib/generators/better_page/templates/view_components/ui/header_component.html.erb.tt +55 -0
  80. data/lib/generators/better_page/templates/view_components/ui/header_component.rb.tt +39 -0
  81. data/lib/generators/better_page/templates/view_components/ui/modal_component.html.erb.tt +70 -0
  82. data/lib/generators/better_page/templates/view_components/ui/modal_component.rb.tt +54 -0
  83. data/lib/generators/better_page/templates/view_components/ui/overview_component.html.erb.tt +22 -0
  84. data/lib/generators/better_page/templates/view_components/ui/overview_component.rb.tt +71 -0
  85. data/lib/generators/better_page/templates/view_components/ui/pagination_component.html.erb.tt +63 -0
  86. data/lib/generators/better_page/templates/view_components/ui/pagination_component.rb.tt +69 -0
  87. data/lib/generators/better_page/templates/view_components/ui/panel_component.html.erb.tt +31 -0
  88. data/lib/generators/better_page/templates/view_components/ui/panel_component.rb.tt +23 -0
  89. data/lib/generators/better_page/templates/view_components/ui/statistics_component.html.erb.tt +33 -0
  90. data/lib/generators/better_page/templates/view_components/ui/statistics_component.rb.tt +51 -0
  91. data/lib/generators/better_page/templates/view_components/ui/table_component.html.erb.tt +112 -0
  92. data/lib/generators/better_page/templates/view_components/ui/table_component.rb.tt +88 -0
  93. data/lib/generators/better_page/templates/view_components/ui/tabs_component.html.erb.tt +52 -0
  94. data/lib/generators/better_page/templates/view_components/ui/tabs_component.rb.tt +76 -0
  95. data/lib/generators/better_page/templates/view_components/ui/widget_component.html.erb.tt +72 -0
  96. data/lib/generators/better_page/templates/view_components/ui/widget_component.rb.tt +34 -0
  97. data/lib/tasks/better_page.rake +70 -0
  98. data/lib/tasks/better_page_tasks.rake +4 -0
  99. metadata +188 -0
metadata ADDED
@@ -0,0 +1,188 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: better_page
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - alessiobussolari
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2025-12-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '7.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '7.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dry-schema
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.13'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: view_component
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: BetterPage provides base classes for creating presentation-layer page
56
+ objects that separate UI configuration from business logic. Includes generators
57
+ and compliance analysis tools.
58
+ email:
59
+ - alessio.bussolari@pandev.it
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - CHANGELOG.md
65
+ - MIT-LICENSE
66
+ - README.md
67
+ - Rakefile
68
+ - docs/00-README.md
69
+ - docs/01-getting-started.md
70
+ - docs/02-component-registry.md
71
+ - docs/03-base-pages.md
72
+ - docs/04-schema-validation.md
73
+ - docs/05-turbo-support.md
74
+ - docs/06-compliance-analyzer.md
75
+ - docs/07-configuration.md
76
+ - guide/00-README.md
77
+ - guide/01-quick-start.md
78
+ - guide/02-building-index-page.md
79
+ - guide/03-building-show-page.md
80
+ - guide/04-building-form-page.md
81
+ - guide/05-custom-pages.md
82
+ - guide/06-best-practices.md
83
+ - lib/better_page.rb
84
+ - lib/better_page/base_page.rb
85
+ - lib/better_page/compliance/analyzer.rb
86
+ - lib/better_page/component_registry.rb
87
+ - lib/better_page/config.rb
88
+ - lib/better_page/configuration.rb
89
+ - lib/better_page/custom_base_page.rb
90
+ - lib/better_page/default_components.rb
91
+ - lib/better_page/form_base_page.rb
92
+ - lib/better_page/index_base_page.rb
93
+ - lib/better_page/railtie.rb
94
+ - lib/better_page/show_base_page.rb
95
+ - lib/better_page/validation_error.rb
96
+ - lib/better_page/version.rb
97
+ - lib/generators/better_page/component_generator.rb
98
+ - lib/generators/better_page/install_generator.rb
99
+ - lib/generators/better_page/page_generator.rb
100
+ - lib/generators/better_page/sync_generator.rb
101
+ - lib/generators/better_page/templates/application_page.rb.tt
102
+ - lib/generators/better_page/templates/better_page_initializer.rb.tt
103
+ - lib/generators/better_page/templates/custom_base_page.rb.tt
104
+ - lib/generators/better_page/templates/custom_page.rb.tt
105
+ - lib/generators/better_page/templates/edit_page.rb.tt
106
+ - lib/generators/better_page/templates/form_base_page.rb.tt
107
+ - lib/generators/better_page/templates/index_base_page.rb.tt
108
+ - lib/generators/better_page/templates/index_page.rb.tt
109
+ - lib/generators/better_page/templates/javascript/controllers/app_nav_controller.js
110
+ - lib/generators/better_page/templates/javascript/controllers/drawer_controller.js
111
+ - lib/generators/better_page/templates/javascript/controllers/dropdown_controller.js
112
+ - lib/generators/better_page/templates/javascript/controllers/index.js
113
+ - lib/generators/better_page/templates/javascript/controllers/modal_controller.js
114
+ - lib/generators/better_page/templates/javascript/controllers/sidebar_controller.js
115
+ - lib/generators/better_page/templates/javascript/controllers/table_controller.js
116
+ - lib/generators/better_page/templates/javascript/controllers/tabs_controller.js
117
+ - lib/generators/better_page/templates/new_page.rb.tt
118
+ - lib/generators/better_page/templates/show_base_page.rb.tt
119
+ - lib/generators/better_page/templates/show_page.rb.tt
120
+ - lib/generators/better_page/templates/view_components/application_view_component.rb.tt
121
+ - lib/generators/better_page/templates/view_components/custom_view_component.html.erb.tt
122
+ - lib/generators/better_page/templates/view_components/custom_view_component.rb.tt
123
+ - lib/generators/better_page/templates/view_components/form_view_component.html.erb.tt
124
+ - lib/generators/better_page/templates/view_components/form_view_component.rb.tt
125
+ - lib/generators/better_page/templates/view_components/index_view_component.html.erb.tt
126
+ - lib/generators/better_page/templates/view_components/index_view_component.rb.tt
127
+ - lib/generators/better_page/templates/view_components/show_view_component.html.erb.tt
128
+ - lib/generators/better_page/templates/view_components/show_view_component.rb.tt
129
+ - lib/generators/better_page/templates/view_components/ui/alerts_component.html.erb.tt
130
+ - lib/generators/better_page/templates/view_components/ui/alerts_component.rb.tt
131
+ - lib/generators/better_page/templates/view_components/ui/content_section_component.html.erb.tt
132
+ - lib/generators/better_page/templates/view_components/ui/content_section_component.rb.tt
133
+ - lib/generators/better_page/templates/view_components/ui/drawer_component.html.erb.tt
134
+ - lib/generators/better_page/templates/view_components/ui/drawer_component.rb.tt
135
+ - lib/generators/better_page/templates/view_components/ui/errors_component.html.erb.tt
136
+ - lib/generators/better_page/templates/view_components/ui/errors_component.rb.tt
137
+ - lib/generators/better_page/templates/view_components/ui/field_component.html.erb.tt
138
+ - lib/generators/better_page/templates/view_components/ui/field_component.rb.tt
139
+ - lib/generators/better_page/templates/view_components/ui/footer_component.html.erb.tt
140
+ - lib/generators/better_page/templates/view_components/ui/footer_component.rb.tt
141
+ - lib/generators/better_page/templates/view_components/ui/header_component.html.erb.tt
142
+ - lib/generators/better_page/templates/view_components/ui/header_component.rb.tt
143
+ - lib/generators/better_page/templates/view_components/ui/modal_component.html.erb.tt
144
+ - lib/generators/better_page/templates/view_components/ui/modal_component.rb.tt
145
+ - lib/generators/better_page/templates/view_components/ui/overview_component.html.erb.tt
146
+ - lib/generators/better_page/templates/view_components/ui/overview_component.rb.tt
147
+ - lib/generators/better_page/templates/view_components/ui/pagination_component.html.erb.tt
148
+ - lib/generators/better_page/templates/view_components/ui/pagination_component.rb.tt
149
+ - lib/generators/better_page/templates/view_components/ui/panel_component.html.erb.tt
150
+ - lib/generators/better_page/templates/view_components/ui/panel_component.rb.tt
151
+ - lib/generators/better_page/templates/view_components/ui/statistics_component.html.erb.tt
152
+ - lib/generators/better_page/templates/view_components/ui/statistics_component.rb.tt
153
+ - lib/generators/better_page/templates/view_components/ui/table_component.html.erb.tt
154
+ - lib/generators/better_page/templates/view_components/ui/table_component.rb.tt
155
+ - lib/generators/better_page/templates/view_components/ui/tabs_component.html.erb.tt
156
+ - lib/generators/better_page/templates/view_components/ui/tabs_component.rb.tt
157
+ - lib/generators/better_page/templates/view_components/ui/widget_component.html.erb.tt
158
+ - lib/generators/better_page/templates/view_components/ui/widget_component.rb.tt
159
+ - lib/tasks/better_page.rake
160
+ - lib/tasks/better_page_tasks.rake
161
+ homepage: https://github.com/alessiobussolari/better_page
162
+ licenses:
163
+ - MIT
164
+ metadata:
165
+ allowed_push_host: https://rubygems.org
166
+ homepage_uri: https://github.com/alessiobussolari/better_page
167
+ source_code_uri: https://github.com/alessiobussolari/better_page
168
+ changelog_uri: https://github.com/alessiobussolari/better_page/blob/main/CHANGELOG.md
169
+ post_install_message:
170
+ rdoc_options: []
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ requirements: []
184
+ rubygems_version: 3.5.22
185
+ signing_key:
186
+ specification_version: 4
187
+ summary: A structured page object pattern for Rails applications
188
+ test_files: []