plum-cms 0.1.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 (178) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +20 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +252 -0
  5. data/app/assets/builds/tailwind.css +2 -0
  6. data/app/assets/images/plum-mark.svg +7 -0
  7. data/app/assets/images/table-needs-logo.svg +83 -0
  8. data/app/assets/javascripts/plum/application.js +15 -0
  9. data/app/assets/stylesheets/application.css +10 -0
  10. data/app/assets/stylesheets/plum/control_panel.css +2 -0
  11. data/app/assets/tailwind/application.css +47 -0
  12. data/app/controllers/plum/application_controller.rb +34 -0
  13. data/app/controllers/plum/cp/assets_controller.rb +84 -0
  14. data/app/controllers/plum/cp/base_controller.rb +45 -0
  15. data/app/controllers/plum/cp/content_types_controller.rb +59 -0
  16. data/app/controllers/plum/cp/dashboard_controller.rb +10 -0
  17. data/app/controllers/plum/cp/entries_controller.rb +240 -0
  18. data/app/controllers/plum/cp/form_definitions_controller.rb +105 -0
  19. data/app/controllers/plum/cp/form_submissions_controller.rb +26 -0
  20. data/app/controllers/plum/cp/globals_controller.rb +84 -0
  21. data/app/controllers/plum/cp/nav_items_controller.rb +68 -0
  22. data/app/controllers/plum/cp/nav_menus_controller.rb +56 -0
  23. data/app/controllers/plum/cp/site_settings_controller.rb +87 -0
  24. data/app/controllers/plum/cp/taxonomies_controller.rb +56 -0
  25. data/app/controllers/plum/cp/terms_controller.rb +55 -0
  26. data/app/controllers/plum/cp/theme_previews_controller.rb +27 -0
  27. data/app/controllers/plum/cp/themes_controller.rb +98 -0
  28. data/app/controllers/plum/form_submissions_controller.rb +44 -0
  29. data/app/controllers/plum/pages_controller.rb +161 -0
  30. data/app/controllers/plum/sessions_controller.rb +25 -0
  31. data/app/controllers/plum/theme_assets_controller.rb +14 -0
  32. data/app/helpers/application_helper.rb +2 -0
  33. data/app/helpers/markdown_helper.rb +21 -0
  34. data/app/helpers/plum/cp/assets_helper.rb +21 -0
  35. data/app/helpers/plum/cp/theme_settings_helper.rb +26 -0
  36. data/app/javascript/application.js +18 -0
  37. data/app/javascript/controllers/application.js +9 -0
  38. data/app/javascript/controllers/index.js +4 -0
  39. data/app/javascript/controllers/plum/blocks_editor_controller.js +275 -0
  40. data/app/javascript/controllers/plum/blueprint_controller.js +120 -0
  41. data/app/javascript/controllers/plum/form_fields_controller.js +84 -0
  42. data/app/javascript/controllers/plum/image_picker_controller.js +143 -0
  43. data/app/javascript/controllers/plum/theme_settings_controller.js +17 -0
  44. data/app/models/plum/application_record.rb +5 -0
  45. data/app/models/plum/asset.rb +69 -0
  46. data/app/models/plum/content_type.rb +35 -0
  47. data/app/models/plum/entry.rb +67 -0
  48. data/app/models/plum/entry_term.rb +8 -0
  49. data/app/models/plum/form_definition.rb +68 -0
  50. data/app/models/plum/form_submission.rb +76 -0
  51. data/app/models/plum/global.rb +24 -0
  52. data/app/models/plum/nav_item.rb +58 -0
  53. data/app/models/plum/nav_menu.rb +24 -0
  54. data/app/models/plum/site.rb +112 -0
  55. data/app/models/plum/site_scoped.rb +17 -0
  56. data/app/models/plum/site_setting.rb +35 -0
  57. data/app/models/plum/taxonomy.rb +24 -0
  58. data/app/models/plum/term.rb +23 -0
  59. data/app/models/plum/user.rb +16 -0
  60. data/app/services/plum/base_blocks.rb +161 -0
  61. data/app/services/plum/block_editor_config.rb +65 -0
  62. data/app/services/plum/block_library.rb +31 -0
  63. data/app/services/plum/builder_renderer.rb +63 -0
  64. data/app/services/plum/field_expander.rb +78 -0
  65. data/app/services/plum/form_renderer.rb +110 -0
  66. data/app/services/plum/liquid_context.rb +335 -0
  67. data/app/services/plum/liquid_filters.rb +58 -0
  68. data/app/services/plum/liquid_renderer.rb +49 -0
  69. data/app/services/plum/theme.rb +160 -0
  70. data/app/services/plum/theme_asset_path.rb +31 -0
  71. data/app/services/plum/theme_package_installer.rb +287 -0
  72. data/app/services/plum/theme_registry.rb +63 -0
  73. data/app/services/plum/theme_resolver.rb +55 -0
  74. data/app/services/plum/theme_settings_params.rb +54 -0
  75. data/app/themes/bagel-boy/assets/screenshot.svg +92 -0
  76. data/app/themes/bagel-boy/assets/theme.css +184 -0
  77. data/app/themes/bagel-boy/blocks/hours.liquid +4 -0
  78. data/app/themes/bagel-boy/blocks/menu_item.liquid +7 -0
  79. data/app/themes/bagel-boy/layouts/base.liquid +64 -0
  80. data/app/themes/bagel-boy/templates/collections/posts.liquid +32 -0
  81. data/app/themes/bagel-boy/templates/entries/_default.liquid +13 -0
  82. data/app/themes/bagel-boy/templates/entries/landing.liquid +4 -0
  83. data/app/themes/bagel-boy/templates/entries/pages.liquid +18 -0
  84. data/app/themes/bagel-boy/templates/entries/posts.liquid +8 -0
  85. data/app/themes/bagel-boy/templates/index.liquid +10 -0
  86. data/app/themes/bagel-boy/templates/search.liquid +28 -0
  87. data/app/themes/bagel-boy/theme.yml +47 -0
  88. data/app/themes/bagel-shop/assets/screenshot.svg +28 -0
  89. data/app/themes/bagel-shop/assets/theme.css +7 -0
  90. data/app/themes/bagel-shop/layouts/base.liquid +507 -0
  91. data/app/themes/bagel-shop/templates/entries/_default.liquid +15 -0
  92. data/app/themes/bagel-shop/templates/entries/pages.liquid +12 -0
  93. data/app/themes/bagel-shop/templates/entries/posts.liquid +19 -0
  94. data/app/themes/bagel-shop/templates/index.liquid +55 -0
  95. data/app/themes/bagel-shop/theme.yml +30 -0
  96. data/app/themes/default/assets/screenshot.svg +24 -0
  97. data/app/themes/default/assets/theme.css +89 -0
  98. data/app/themes/default/layouts/base.liquid +117 -0
  99. data/app/themes/default/templates/collections/_default.liquid +16 -0
  100. data/app/themes/default/templates/collections/posts.liquid +27 -0
  101. data/app/themes/default/templates/entries/_default.liquid +26 -0
  102. data/app/themes/default/templates/entries/landing.liquid +5 -0
  103. data/app/themes/default/templates/entries/pages.liquid +17 -0
  104. data/app/themes/default/templates/entries/posts.liquid +20 -0
  105. data/app/themes/default/templates/index.liquid +22 -0
  106. data/app/themes/default/templates/search.liquid +28 -0
  107. data/app/themes/default/templates/taxonomies/_default.liquid +25 -0
  108. data/app/themes/default/templates/taxonomies/_default_index.liquid +14 -0
  109. data/app/themes/default/theme.yml +23 -0
  110. data/app/views/layouts/plum/cp.html.erb +138 -0
  111. data/app/views/layouts/plum/session.html.erb +43 -0
  112. data/app/views/plum/cp/assets/_form.html.erb +44 -0
  113. data/app/views/plum/cp/assets/edit.html.erb +14 -0
  114. data/app/views/plum/cp/assets/index.html.erb +52 -0
  115. data/app/views/plum/cp/assets/new.html.erb +9 -0
  116. data/app/views/plum/cp/content_types/_form.html.erb +113 -0
  117. data/app/views/plum/cp/content_types/edit.html.erb +8 -0
  118. data/app/views/plum/cp/content_types/index.html.erb +48 -0
  119. data/app/views/plum/cp/content_types/new.html.erb +5 -0
  120. data/app/views/plum/cp/content_types/show.html.erb +59 -0
  121. data/app/views/plum/cp/dashboard/show.html.erb +50 -0
  122. data/app/views/plum/cp/entries/_form.html.erb +196 -0
  123. data/app/views/plum/cp/entries/edit.html.erb +9 -0
  124. data/app/views/plum/cp/entries/index.html.erb +51 -0
  125. data/app/views/plum/cp/entries/new.html.erb +5 -0
  126. data/app/views/plum/cp/form_definitions/_form.html.erb +90 -0
  127. data/app/views/plum/cp/form_definitions/edit.html.erb +11 -0
  128. data/app/views/plum/cp/form_definitions/index.html.erb +43 -0
  129. data/app/views/plum/cp/form_definitions/new.html.erb +5 -0
  130. data/app/views/plum/cp/form_definitions/show.html.erb +70 -0
  131. data/app/views/plum/cp/form_submissions/show.html.erb +20 -0
  132. data/app/views/plum/cp/globals/_form.html.erb +44 -0
  133. data/app/views/plum/cp/globals/edit.html.erb +11 -0
  134. data/app/views/plum/cp/globals/index.html.erb +41 -0
  135. data/app/views/plum/cp/globals/new.html.erb +5 -0
  136. data/app/views/plum/cp/globals/show.html.erb +14 -0
  137. data/app/views/plum/cp/nav_items/_form.html.erb +56 -0
  138. data/app/views/plum/cp/nav_items/edit.html.erb +11 -0
  139. data/app/views/plum/cp/nav_items/new.html.erb +6 -0
  140. data/app/views/plum/cp/nav_menus/_form.html.erb +33 -0
  141. data/app/views/plum/cp/nav_menus/_nav_item.html.erb +24 -0
  142. data/app/views/plum/cp/nav_menus/edit.html.erb +11 -0
  143. data/app/views/plum/cp/nav_menus/index.html.erb +41 -0
  144. data/app/views/plum/cp/nav_menus/new.html.erb +5 -0
  145. data/app/views/plum/cp/nav_menus/show.html.erb +24 -0
  146. data/app/views/plum/cp/shared/_icon.html.erb +39 -0
  147. data/app/views/plum/cp/shared/_image_picker.html.erb +38 -0
  148. data/app/views/plum/cp/site_settings/edit.html.erb +145 -0
  149. data/app/views/plum/cp/site_settings/show.html.erb +62 -0
  150. data/app/views/plum/cp/taxonomies/_form.html.erb +38 -0
  151. data/app/views/plum/cp/taxonomies/edit.html.erb +2 -0
  152. data/app/views/plum/cp/taxonomies/index.html.erb +38 -0
  153. data/app/views/plum/cp/taxonomies/new.html.erb +2 -0
  154. data/app/views/plum/cp/taxonomies/show.html.erb +46 -0
  155. data/app/views/plum/cp/terms/_form.html.erb +30 -0
  156. data/app/views/plum/cp/terms/edit.html.erb +2 -0
  157. data/app/views/plum/cp/terms/new.html.erb +2 -0
  158. data/app/views/plum/cp/themes/index.html.erb +160 -0
  159. data/app/views/plum/form_mailer/submission_notification.html.erb +13 -0
  160. data/app/views/plum/form_mailer/submission_notification.text.erb +7 -0
  161. data/app/views/plum/sessions/new.html.erb +20 -0
  162. data/compat/plum-cms.rb +1 -0
  163. data/config/locales/en.yml +31 -0
  164. data/config/plum_importmap.rb +4 -0
  165. data/config/plum_routes.rb +34 -0
  166. data/db/engine_migrate/20260101000001_create_plum_tables.rb +154 -0
  167. data/lib/generators/plum/install/install_generator.rb +54 -0
  168. data/lib/generators/plum/install/templates/plum_initializer.rb +37 -0
  169. data/lib/plum/configuration.rb +88 -0
  170. data/lib/plum/content_source.rb +45 -0
  171. data/lib/plum/content_source_context.rb +30 -0
  172. data/lib/plum/content_source_registry.rb +120 -0
  173. data/lib/plum/engine.rb +30 -0
  174. data/lib/plum/liquid_tags/form_tag.rb +17 -0
  175. data/lib/plum/version.rb +7 -0
  176. data/lib/plum.rb +11 -0
  177. data/vendor/javascript/lexxy.js +11859 -0
  178. metadata +405 -0
metadata ADDED
@@ -0,0 +1,405 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: plum-cms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ben Simmons
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-07-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bcrypt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: importmap-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: liquid
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: propshaft
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '8.0'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '9.0'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '8.0'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '9.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: redcarpet
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.6'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.6'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rubyzip
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '2.4'
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '4.0'
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '2.4'
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '4.0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: stimulus-rails
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '1.3'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '1.3'
137
+ - !ruby/object:Gem::Dependency
138
+ name: tailwindcss-rails
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '4.0'
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '4.0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: turbo-rails
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '2.0'
158
+ type: :runtime
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '2.0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: lexxy
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '0.1'
172
+ type: :runtime
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '0.1'
179
+ - !ruby/object:Gem::Dependency
180
+ name: image_processing
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '1.2'
186
+ type: :runtime
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '1.2'
193
+ description: Plum is a Rails-native CMS engine with Hotwire control panel, Liquid
194
+ themes, and site-scoped content.
195
+ email:
196
+ - bdsimmons1@gmail.com
197
+ executables: []
198
+ extensions: []
199
+ extra_rdoc_files: []
200
+ files:
201
+ - CHANGELOG.md
202
+ - LICENSE.txt
203
+ - README.md
204
+ - app/assets/builds/tailwind.css
205
+ - app/assets/images/plum-mark.svg
206
+ - app/assets/images/table-needs-logo.svg
207
+ - app/assets/javascripts/plum/application.js
208
+ - app/assets/stylesheets/application.css
209
+ - app/assets/stylesheets/plum/control_panel.css
210
+ - app/assets/tailwind/application.css
211
+ - app/controllers/plum/application_controller.rb
212
+ - app/controllers/plum/cp/assets_controller.rb
213
+ - app/controllers/plum/cp/base_controller.rb
214
+ - app/controllers/plum/cp/content_types_controller.rb
215
+ - app/controllers/plum/cp/dashboard_controller.rb
216
+ - app/controllers/plum/cp/entries_controller.rb
217
+ - app/controllers/plum/cp/form_definitions_controller.rb
218
+ - app/controllers/plum/cp/form_submissions_controller.rb
219
+ - app/controllers/plum/cp/globals_controller.rb
220
+ - app/controllers/plum/cp/nav_items_controller.rb
221
+ - app/controllers/plum/cp/nav_menus_controller.rb
222
+ - app/controllers/plum/cp/site_settings_controller.rb
223
+ - app/controllers/plum/cp/taxonomies_controller.rb
224
+ - app/controllers/plum/cp/terms_controller.rb
225
+ - app/controllers/plum/cp/theme_previews_controller.rb
226
+ - app/controllers/plum/cp/themes_controller.rb
227
+ - app/controllers/plum/form_submissions_controller.rb
228
+ - app/controllers/plum/pages_controller.rb
229
+ - app/controllers/plum/sessions_controller.rb
230
+ - app/controllers/plum/theme_assets_controller.rb
231
+ - app/helpers/application_helper.rb
232
+ - app/helpers/markdown_helper.rb
233
+ - app/helpers/plum/cp/assets_helper.rb
234
+ - app/helpers/plum/cp/theme_settings_helper.rb
235
+ - app/javascript/application.js
236
+ - app/javascript/controllers/application.js
237
+ - app/javascript/controllers/index.js
238
+ - app/javascript/controllers/plum/blocks_editor_controller.js
239
+ - app/javascript/controllers/plum/blueprint_controller.js
240
+ - app/javascript/controllers/plum/form_fields_controller.js
241
+ - app/javascript/controllers/plum/image_picker_controller.js
242
+ - app/javascript/controllers/plum/theme_settings_controller.js
243
+ - app/models/plum/application_record.rb
244
+ - app/models/plum/asset.rb
245
+ - app/models/plum/content_type.rb
246
+ - app/models/plum/entry.rb
247
+ - app/models/plum/entry_term.rb
248
+ - app/models/plum/form_definition.rb
249
+ - app/models/plum/form_submission.rb
250
+ - app/models/plum/global.rb
251
+ - app/models/plum/nav_item.rb
252
+ - app/models/plum/nav_menu.rb
253
+ - app/models/plum/site.rb
254
+ - app/models/plum/site_scoped.rb
255
+ - app/models/plum/site_setting.rb
256
+ - app/models/plum/taxonomy.rb
257
+ - app/models/plum/term.rb
258
+ - app/models/plum/user.rb
259
+ - app/services/plum/base_blocks.rb
260
+ - app/services/plum/block_editor_config.rb
261
+ - app/services/plum/block_library.rb
262
+ - app/services/plum/builder_renderer.rb
263
+ - app/services/plum/field_expander.rb
264
+ - app/services/plum/form_renderer.rb
265
+ - app/services/plum/liquid_context.rb
266
+ - app/services/plum/liquid_filters.rb
267
+ - app/services/plum/liquid_renderer.rb
268
+ - app/services/plum/theme.rb
269
+ - app/services/plum/theme_asset_path.rb
270
+ - app/services/plum/theme_package_installer.rb
271
+ - app/services/plum/theme_registry.rb
272
+ - app/services/plum/theme_resolver.rb
273
+ - app/services/plum/theme_settings_params.rb
274
+ - app/themes/bagel-boy/assets/screenshot.svg
275
+ - app/themes/bagel-boy/assets/theme.css
276
+ - app/themes/bagel-boy/blocks/hours.liquid
277
+ - app/themes/bagel-boy/blocks/menu_item.liquid
278
+ - app/themes/bagel-boy/layouts/base.liquid
279
+ - app/themes/bagel-boy/templates/collections/posts.liquid
280
+ - app/themes/bagel-boy/templates/entries/_default.liquid
281
+ - app/themes/bagel-boy/templates/entries/landing.liquid
282
+ - app/themes/bagel-boy/templates/entries/pages.liquid
283
+ - app/themes/bagel-boy/templates/entries/posts.liquid
284
+ - app/themes/bagel-boy/templates/index.liquid
285
+ - app/themes/bagel-boy/templates/search.liquid
286
+ - app/themes/bagel-boy/theme.yml
287
+ - app/themes/bagel-shop/assets/screenshot.svg
288
+ - app/themes/bagel-shop/assets/theme.css
289
+ - app/themes/bagel-shop/layouts/base.liquid
290
+ - app/themes/bagel-shop/templates/entries/_default.liquid
291
+ - app/themes/bagel-shop/templates/entries/pages.liquid
292
+ - app/themes/bagel-shop/templates/entries/posts.liquid
293
+ - app/themes/bagel-shop/templates/index.liquid
294
+ - app/themes/bagel-shop/theme.yml
295
+ - app/themes/default/assets/screenshot.svg
296
+ - app/themes/default/assets/theme.css
297
+ - app/themes/default/layouts/base.liquid
298
+ - app/themes/default/templates/collections/_default.liquid
299
+ - app/themes/default/templates/collections/posts.liquid
300
+ - app/themes/default/templates/entries/_default.liquid
301
+ - app/themes/default/templates/entries/landing.liquid
302
+ - app/themes/default/templates/entries/pages.liquid
303
+ - app/themes/default/templates/entries/posts.liquid
304
+ - app/themes/default/templates/index.liquid
305
+ - app/themes/default/templates/search.liquid
306
+ - app/themes/default/templates/taxonomies/_default.liquid
307
+ - app/themes/default/templates/taxonomies/_default_index.liquid
308
+ - app/themes/default/theme.yml
309
+ - app/views/layouts/plum/cp.html.erb
310
+ - app/views/layouts/plum/session.html.erb
311
+ - app/views/plum/cp/assets/_form.html.erb
312
+ - app/views/plum/cp/assets/edit.html.erb
313
+ - app/views/plum/cp/assets/index.html.erb
314
+ - app/views/plum/cp/assets/new.html.erb
315
+ - app/views/plum/cp/content_types/_form.html.erb
316
+ - app/views/plum/cp/content_types/edit.html.erb
317
+ - app/views/plum/cp/content_types/index.html.erb
318
+ - app/views/plum/cp/content_types/new.html.erb
319
+ - app/views/plum/cp/content_types/show.html.erb
320
+ - app/views/plum/cp/dashboard/show.html.erb
321
+ - app/views/plum/cp/entries/_form.html.erb
322
+ - app/views/plum/cp/entries/edit.html.erb
323
+ - app/views/plum/cp/entries/index.html.erb
324
+ - app/views/plum/cp/entries/new.html.erb
325
+ - app/views/plum/cp/form_definitions/_form.html.erb
326
+ - app/views/plum/cp/form_definitions/edit.html.erb
327
+ - app/views/plum/cp/form_definitions/index.html.erb
328
+ - app/views/plum/cp/form_definitions/new.html.erb
329
+ - app/views/plum/cp/form_definitions/show.html.erb
330
+ - app/views/plum/cp/form_submissions/show.html.erb
331
+ - app/views/plum/cp/globals/_form.html.erb
332
+ - app/views/plum/cp/globals/edit.html.erb
333
+ - app/views/plum/cp/globals/index.html.erb
334
+ - app/views/plum/cp/globals/new.html.erb
335
+ - app/views/plum/cp/globals/show.html.erb
336
+ - app/views/plum/cp/nav_items/_form.html.erb
337
+ - app/views/plum/cp/nav_items/edit.html.erb
338
+ - app/views/plum/cp/nav_items/new.html.erb
339
+ - app/views/plum/cp/nav_menus/_form.html.erb
340
+ - app/views/plum/cp/nav_menus/_nav_item.html.erb
341
+ - app/views/plum/cp/nav_menus/edit.html.erb
342
+ - app/views/plum/cp/nav_menus/index.html.erb
343
+ - app/views/plum/cp/nav_menus/new.html.erb
344
+ - app/views/plum/cp/nav_menus/show.html.erb
345
+ - app/views/plum/cp/shared/_icon.html.erb
346
+ - app/views/plum/cp/shared/_image_picker.html.erb
347
+ - app/views/plum/cp/site_settings/edit.html.erb
348
+ - app/views/plum/cp/site_settings/show.html.erb
349
+ - app/views/plum/cp/taxonomies/_form.html.erb
350
+ - app/views/plum/cp/taxonomies/edit.html.erb
351
+ - app/views/plum/cp/taxonomies/index.html.erb
352
+ - app/views/plum/cp/taxonomies/new.html.erb
353
+ - app/views/plum/cp/taxonomies/show.html.erb
354
+ - app/views/plum/cp/terms/_form.html.erb
355
+ - app/views/plum/cp/terms/edit.html.erb
356
+ - app/views/plum/cp/terms/new.html.erb
357
+ - app/views/plum/cp/themes/index.html.erb
358
+ - app/views/plum/form_mailer/submission_notification.html.erb
359
+ - app/views/plum/form_mailer/submission_notification.text.erb
360
+ - app/views/plum/sessions/new.html.erb
361
+ - compat/plum-cms.rb
362
+ - config/locales/en.yml
363
+ - config/plum_importmap.rb
364
+ - config/plum_routes.rb
365
+ - db/engine_migrate/20260101000001_create_plum_tables.rb
366
+ - lib/generators/plum/install/install_generator.rb
367
+ - lib/generators/plum/install/templates/plum_initializer.rb
368
+ - lib/plum.rb
369
+ - lib/plum/configuration.rb
370
+ - lib/plum/content_source.rb
371
+ - lib/plum/content_source_context.rb
372
+ - lib/plum/content_source_registry.rb
373
+ - lib/plum/engine.rb
374
+ - lib/plum/liquid_tags/form_tag.rb
375
+ - lib/plum/version.rb
376
+ - vendor/javascript/lexxy.js
377
+ homepage: https://plumcms.org
378
+ licenses:
379
+ - MIT
380
+ metadata:
381
+ allowed_push_host: https://rubygems.org
382
+ rubygems_mfa_required: 'true'
383
+ source_code_uri: https://github.com/tableneeds/plum
384
+ bug_tracker_uri: https://github.com/tableneeds/plum/issues
385
+ post_install_message:
386
+ rdoc_options: []
387
+ require_paths:
388
+ - lib
389
+ - compat
390
+ required_ruby_version: !ruby/object:Gem::Requirement
391
+ requirements:
392
+ - - ">="
393
+ - !ruby/object:Gem::Version
394
+ version: '3.3'
395
+ required_rubygems_version: !ruby/object:Gem::Requirement
396
+ requirements:
397
+ - - ">="
398
+ - !ruby/object:Gem::Version
399
+ version: '0'
400
+ requirements: []
401
+ rubygems_version: 3.5.9
402
+ signing_key:
403
+ specification_version: 4
404
+ summary: A Rails-native CMS engine.
405
+ test_files: []