alchemy_cms 7.4.10 → 8.0.0.b

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.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

Files changed (425) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -5
  3. data/app/assets/builds/alchemy/admin/page-select.css +1 -1
  4. data/app/assets/builds/alchemy/admin/print.css +1 -1
  5. data/app/assets/builds/alchemy/admin.css +2 -2
  6. data/app/assets/builds/alchemy/dark-theme.css +1 -0
  7. data/app/assets/builds/alchemy/light-theme.css +1 -0
  8. data/app/assets/builds/alchemy/theme.css +1 -0
  9. data/app/assets/builds/alchemy/welcome.css +1 -1
  10. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -1
  11. data/app/assets/builds/tinymce/skins/content/alchemy-dark/content.min.css +1 -0
  12. data/app/assets/builds/tinymce/skins/ui/alchemy/content.min.css +1 -0
  13. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -1
  14. data/app/assets/builds/tinymce/skins/ui/alchemy-dark/content.min.css +1 -0
  15. data/app/assets/builds/tinymce/skins/ui/alchemy-dark/skin.min.css +1 -0
  16. data/app/assets/config/alchemy_manifest.js +0 -2
  17. data/app/assets/images/alchemy/element_icons/default.svg +1 -0
  18. data/app/assets/images/alchemy/icons-sprite.svg +1 -0
  19. data/app/components/alchemy/admin/element_select.rb +39 -0
  20. data/app/components/alchemy/admin/resource/applied_filter.rb +29 -0
  21. data/app/components/alchemy/admin/resource/checkbox_filter.rb +36 -0
  22. data/app/components/alchemy/admin/resource/datepicker_filter.rb +42 -0
  23. data/app/components/alchemy/admin/resource/select_filter.rb +43 -0
  24. data/app/components/alchemy/admin/toolbar_button.rb +5 -2
  25. data/app/components/alchemy/ingredients/number_view.rb +18 -0
  26. data/app/controllers/alchemy/admin/attachments_controller.rb +10 -15
  27. data/app/controllers/alchemy/admin/clipboard_controller.rb +2 -6
  28. data/app/controllers/alchemy/admin/elements_controller.rb +3 -1
  29. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  30. data/app/controllers/alchemy/admin/pages_controller.rb +15 -15
  31. data/app/controllers/alchemy/admin/pictures_controller.rb +27 -37
  32. data/app/controllers/alchemy/admin/resources_controller.rb +16 -106
  33. data/app/controllers/alchemy/attachments_controller.rb +43 -14
  34. data/app/controllers/alchemy/messages_controller.rb +1 -1
  35. data/app/controllers/alchemy/pages_controller.rb +26 -4
  36. data/app/controllers/concerns/alchemy/admin/resource_filter.rb +93 -0
  37. data/app/decorators/alchemy/element_editor.rb +5 -48
  38. data/app/decorators/alchemy/ingredient_editor.rb +3 -53
  39. data/app/helpers/alchemy/admin/attachments_helper.rb +5 -5
  40. data/app/helpers/alchemy/admin/base_helper.rb +14 -84
  41. data/app/helpers/alchemy/admin/pages_helper.rb +1 -1
  42. data/app/helpers/alchemy/base_helper.rb +0 -30
  43. data/app/helpers/alchemy/elements_block_helper.rb +0 -14
  44. data/app/helpers/alchemy/pages_helper.rb +1 -1
  45. data/{lib → app/helpers}/alchemy/resources_helper.rb +5 -45
  46. data/app/javascript/alchemy_admin/components/action.js +2 -0
  47. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +3 -3
  48. data/app/javascript/alchemy_admin/components/auto_submit.js +20 -0
  49. data/app/javascript/alchemy_admin/components/datepicker.js +18 -7
  50. data/app/javascript/alchemy_admin/components/element_editor/delete_element_button.js +8 -7
  51. data/app/javascript/alchemy_admin/components/element_editor.js +25 -15
  52. data/app/javascript/alchemy_admin/components/element_select.js +43 -0
  53. data/app/javascript/alchemy_admin/components/index.js +3 -0
  54. data/app/javascript/alchemy_admin/components/link_buttons.js +6 -2
  55. data/app/javascript/alchemy_admin/components/remote_select.js +9 -2
  56. data/app/javascript/alchemy_admin/components/tags_autocomplete.js +5 -1
  57. data/app/javascript/alchemy_admin/components/tinymce.js +93 -14
  58. data/app/javascript/alchemy_admin/components/update_check.js +42 -0
  59. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +15 -8
  60. data/app/javascript/alchemy_admin/components/uploader/progress.js +12 -6
  61. data/app/javascript/alchemy_admin/components/uploader.js +4 -2
  62. data/app/javascript/alchemy_admin/confirm_dialog.js +27 -57
  63. data/app/javascript/alchemy_admin/dialog.js +1 -1
  64. data/app/javascript/alchemy_admin/dirty.js +3 -2
  65. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  66. data/app/javascript/alchemy_admin/i18n.js +15 -16
  67. data/app/javascript/alchemy_admin/image_loader.js +4 -2
  68. data/app/javascript/alchemy_admin/initializer.js +1 -49
  69. data/app/javascript/alchemy_admin/picture_editors.js +7 -4
  70. data/app/javascript/alchemy_admin/picture_selector.js +4 -4
  71. data/app/javascript/alchemy_admin/utils/ajax.js +51 -44
  72. data/app/javascript/alchemy_admin.js +3 -8
  73. data/app/jobs/alchemy/delete_picture_job.rb +12 -0
  74. data/app/models/alchemy/admin/filters/base.rb +38 -0
  75. data/app/models/alchemy/admin/filters/checkbox.rb +24 -0
  76. data/app/models/alchemy/admin/filters/datepicker.rb +53 -0
  77. data/app/models/alchemy/admin/filters/select.rb +70 -0
  78. data/app/models/alchemy/admin/resource_name.rb +27 -0
  79. data/app/models/alchemy/attachment.rb +49 -44
  80. data/app/models/alchemy/base_record.rb +2 -0
  81. data/app/models/alchemy/element/definitions.rb +1 -1
  82. data/app/models/alchemy/element/element_ingredients.rb +6 -6
  83. data/app/models/alchemy/element/presenters.rb +3 -12
  84. data/app/models/alchemy/element.rb +10 -27
  85. data/app/models/alchemy/element_definition.rb +190 -0
  86. data/app/models/alchemy/ingredient.rb +10 -43
  87. data/app/models/alchemy/ingredient_definition.rb +134 -0
  88. data/app/models/alchemy/ingredient_validator.rb +7 -3
  89. data/app/models/alchemy/ingredients/number.rb +19 -0
  90. data/app/models/alchemy/language.rb +2 -21
  91. data/app/models/alchemy/message.rb +3 -7
  92. data/app/models/alchemy/node.rb +1 -1
  93. data/app/models/alchemy/page/{page_layouts.rb → definitions.rb} +12 -19
  94. data/app/models/alchemy/page/fixed_attributes.rb +1 -1
  95. data/app/models/alchemy/page/page_elements.rb +13 -14
  96. data/app/models/alchemy/page/page_naming.rb +3 -11
  97. data/app/models/alchemy/page/page_natures.rb +20 -15
  98. data/app/models/alchemy/page/page_scopes.rb +1 -1
  99. data/app/models/alchemy/page.rb +12 -39
  100. data/app/models/alchemy/page_definition.rb +115 -0
  101. data/app/models/alchemy/picture.rb +71 -99
  102. data/app/models/alchemy/picture_variant.rb +115 -5
  103. data/{lib → app/models}/alchemy/resource.rb +4 -18
  104. data/{lib → app/models}/alchemy/searchable_resource.rb +15 -0
  105. data/app/models/alchemy/site/layout.rb +5 -5
  106. data/app/models/alchemy/site.rb +1 -21
  107. data/app/models/alchemy/storage_adapter/active_storage/attachment_url.rb +41 -0
  108. data/app/models/alchemy/storage_adapter/active_storage/picture_url.rb +55 -0
  109. data/app/models/alchemy/storage_adapter/active_storage/preprocessor.rb +40 -0
  110. data/app/models/alchemy/storage_adapter/active_storage.rb +173 -0
  111. data/app/models/alchemy/{attachment/url.rb → storage_adapter/dragonfly/attachment_url.rb} +12 -12
  112. data/app/models/alchemy/storage_adapter/dragonfly/picture_url.rb +75 -0
  113. data/app/models/alchemy/{picture → storage_adapter/dragonfly}/preprocessor.rb +4 -4
  114. data/app/models/alchemy/storage_adapter/dragonfly.rb +205 -0
  115. data/app/models/alchemy/storage_adapter.rb +74 -0
  116. data/app/models/concerns/alchemy/picture_thumbnails.rb +19 -6
  117. data/app/models/concerns/alchemy/relatable_resource.rb +28 -0
  118. data/app/serializers/alchemy/element_serializer.rb +0 -1
  119. data/app/services/alchemy/dragonfly_to_image_processing.rb +100 -0
  120. data/app/stylesheets/alchemy/_custom-properties.scss +162 -0
  121. data/app/stylesheets/alchemy/_defaults.scss +3 -0
  122. data/app/stylesheets/alchemy/_extends.scss +69 -0
  123. data/app/{assets/stylesheets → stylesheets}/alchemy/_mixins.scss +40 -68
  124. data/app/stylesheets/alchemy/_themes.scss +540 -0
  125. data/app/stylesheets/alchemy/_variables.scss +5 -0
  126. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/archive.scss +45 -42
  127. data/app/stylesheets/alchemy/admin/attachments.scss +17 -0
  128. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/base.scss +20 -15
  129. data/app/stylesheets/alchemy/admin/buttons.scss +135 -0
  130. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/clipboard.scss +2 -2
  131. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/dashboard.scss +13 -16
  132. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/dialogs.scss +33 -16
  133. data/app/stylesheets/alchemy/admin/element-select.scss +11 -0
  134. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/elements.scss +239 -133
  135. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/errors.scss +5 -5
  136. data/app/stylesheets/alchemy/admin/filters.scss +57 -0
  137. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/flatpickr.scss +54 -76
  138. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/form_fields.scss +10 -11
  139. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/forms.scss +28 -21
  140. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/frame.scss +20 -18
  141. data/app/stylesheets/alchemy/admin/hints.scss +5 -0
  142. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/icons.scss +1 -1
  143. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/image_library.scss +21 -61
  144. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/images.scss +1 -1
  145. data/app/stylesheets/alchemy/admin/labels.scss +5 -0
  146. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/lists.scss +3 -3
  147. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/navigation.scss +55 -59
  148. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/node-select.scss +1 -10
  149. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/nodes.scss +21 -18
  150. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/notices.scss +20 -19
  151. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/page-select.scss +18 -2
  152. data/app/stylesheets/alchemy/admin/pagination.scss +137 -0
  153. data/app/stylesheets/alchemy/admin/preview_window.scss +46 -0
  154. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/print.scss +1 -1
  155. data/app/stylesheets/alchemy/admin/resource_info.scss +148 -0
  156. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/search.scss +10 -7
  157. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/selects.scss +85 -46
  158. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/shoelace.scss +37 -68
  159. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/sitemap.scss +39 -34
  160. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/tables.scss +9 -7
  161. data/app/stylesheets/alchemy/admin/tags.scss +143 -0
  162. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/toolbar.scss +6 -6
  163. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/typography.scss +3 -6
  164. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/upload.scss +7 -5
  165. data/app/stylesheets/alchemy/admin.scss +44 -0
  166. data/app/stylesheets/alchemy/dark-theme.scss +5 -0
  167. data/app/stylesheets/alchemy/light-theme.scss +6 -0
  168. data/app/stylesheets/alchemy/theme.scss +13 -0
  169. data/app/stylesheets/alchemy/welcome.scss +75 -0
  170. data/app/stylesheets/tinymce/skins/content/alchemy/content.scss +69 -0
  171. data/app/{assets/stylesheets/tinymce/skins/content/alchemy → stylesheets/tinymce/skins/content/alchemy-dark}/content.scss +12 -12
  172. data/app/stylesheets/tinymce/skins/ui/alchemy/content.scss +1 -0
  173. data/app/{assets/stylesheets → stylesheets}/tinymce/skins/ui/alchemy/skin.scss +158 -176
  174. data/app/stylesheets/tinymce/skins/ui/alchemy-dark/content.scss +1 -0
  175. data/app/stylesheets/tinymce/skins/ui/alchemy-dark/skin.scss +3784 -0
  176. data/app/views/alchemy/admin/attachments/_files_list.html.erb +22 -12
  177. data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +1 -1
  178. data/app/views/alchemy/admin/attachments/assign.js.erb +4 -3
  179. data/app/views/alchemy/admin/attachments/show.html.erb +55 -43
  180. data/app/views/alchemy/admin/{elements/_clipboard_button.html.erb → clipboard/_button.html.erb} +3 -5
  181. data/app/views/alchemy/admin/clipboard/_update_nested_element_button.turbo_stream.erb +11 -0
  182. data/app/views/alchemy/admin/clipboard/clear.turbo_stream.erb +4 -0
  183. data/app/views/alchemy/admin/clipboard/index.html.erb +15 -13
  184. data/app/views/alchemy/admin/clipboard/insert.turbo_stream.erb +18 -0
  185. data/app/views/alchemy/admin/clipboard/remove.turbo_stream.erb +9 -0
  186. data/app/views/alchemy/admin/crop.html.erb +1 -1
  187. data/app/views/alchemy/admin/dashboard/info.html.erb +17 -31
  188. data/app/views/alchemy/admin/elements/_element.html.erb +4 -8
  189. data/app/views/alchemy/admin/elements/_form.html.erb +9 -9
  190. data/app/views/alchemy/admin/elements/_header.html.erb +5 -1
  191. data/app/views/alchemy/admin/elements/_toolbar.html.erb +4 -6
  192. data/app/views/alchemy/admin/elements/create.turbo_stream.erb +2 -1
  193. data/app/views/alchemy/admin/elements/index.html.erb +2 -2
  194. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +3 -16
  195. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +0 -9
  196. data/app/views/alchemy/admin/languages/_form.html.erb +1 -1
  197. data/app/views/alchemy/admin/languages/_table.html.erb +1 -1
  198. data/app/views/alchemy/admin/languages/index.html.erb +5 -2
  199. data/app/views/alchemy/admin/layoutpages/index.html.erb +1 -12
  200. data/app/views/alchemy/admin/pages/_form.html.erb +2 -2
  201. data/app/views/alchemy/admin/pages/_page.html.erb +2 -3
  202. data/app/views/alchemy/admin/pages/_toolbar.html.erb +1 -15
  203. data/app/views/alchemy/admin/pages/index.html.erb +1 -1
  204. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +9 -12
  205. data/app/views/alchemy/admin/partials/_search_form.html.erb +4 -9
  206. data/app/views/alchemy/admin/pictures/_archive.html.erb +16 -29
  207. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +3 -7
  208. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -1
  209. data/app/views/alchemy/admin/pictures/_form.html.erb +1 -1
  210. data/app/views/alchemy/admin/pictures/_infos.html.erb +21 -52
  211. data/app/views/alchemy/admin/pictures/_library_sidebar.html.erb +7 -0
  212. data/app/views/alchemy/admin/pictures/_picture.html.erb +14 -20
  213. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +20 -16
  214. data/app/views/alchemy/admin/pictures/_sorting_select.html.erb +13 -0
  215. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  216. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +1 -6
  217. data/app/views/alchemy/admin/pictures/index.html.erb +5 -19
  218. data/app/views/alchemy/admin/pictures/show.html.erb +10 -5
  219. data/app/views/alchemy/admin/resources/_applied_filters.html.erb +8 -0
  220. data/app/views/alchemy/admin/resources/_filter_bar.html.erb +5 -25
  221. data/app/views/alchemy/admin/resources/_pagination.html.erb +6 -0
  222. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +4 -2
  223. data/app/views/alchemy/admin/resources/_resource_table.html.erb +1 -1
  224. data/app/views/alchemy/admin/resources/_resource_usage_info.html.erb +36 -0
  225. data/app/views/alchemy/admin/resources/_table_header.html.erb +1 -15
  226. data/app/views/alchemy/admin/sites/index.html.erb +5 -1
  227. data/app/views/alchemy/admin/styleguide/index.html.erb +118 -58
  228. data/app/views/alchemy/admin/tags/index.html.erb +1 -1
  229. data/app/views/alchemy/admin/tinymce/_setup.html.erb +7 -7
  230. data/app/{javascript/alchemy_admin/locales/en.js → views/alchemy/admin/translations/_en.js} +5 -2
  231. data/app/views/alchemy/admin/uploader/_button.html.erb +1 -1
  232. data/app/views/alchemy/admin/uploader/_setup.html.erb +4 -4
  233. data/app/views/alchemy/base/error_notice.html.erb +1 -1
  234. data/app/views/alchemy/ingredients/_number_editor.html.erb +24 -0
  235. data/app/views/alchemy/no_index.html.erb +31 -0
  236. data/app/views/alchemy/welcome.html.erb +12 -10
  237. data/app/views/kaminari/alchemy/_first_page.html.erb +5 -3
  238. data/app/views/kaminari/alchemy/_last_page.html.erb +5 -3
  239. data/app/views/kaminari/alchemy/_next_page.html.erb +5 -3
  240. data/app/views/kaminari/alchemy/_paginator.html.erb +18 -13
  241. data/app/views/kaminari/alchemy/_prev_page.html.erb +5 -3
  242. data/app/views/layouts/alchemy/admin.html.erb +25 -24
  243. data/config/alchemy/config.yml +3 -2
  244. data/config/initializers/dragonfly.rb +0 -1
  245. data/config/initializers/mime_types.rb +1 -0
  246. data/config/locales/alchemy.en.yml +57 -21
  247. data/config/routes.rb +0 -2
  248. data/db/migrate/20250905140323_add_created_at_index_to_pictures_and_attachments.rb +14 -0
  249. data/lib/alchemy/admin/preview_url.rb +4 -5
  250. data/lib/alchemy/cache_digests/template_tracker.rb +6 -9
  251. data/lib/alchemy/config_missing.rb +14 -0
  252. data/lib/alchemy/configuration/base_option.rb +24 -0
  253. data/lib/alchemy/configuration/boolean_option.rb +16 -0
  254. data/lib/alchemy/configuration/class_option.rb +15 -0
  255. data/lib/alchemy/configuration/class_set_option.rb +46 -0
  256. data/lib/alchemy/configuration/integer_list_option.rb +13 -0
  257. data/lib/alchemy/configuration/integer_option.rb +12 -0
  258. data/lib/alchemy/configuration/list_option.rb +22 -0
  259. data/lib/alchemy/configuration/regexp_option.rb +11 -0
  260. data/lib/alchemy/configuration/string_list_option.rb +13 -0
  261. data/lib/alchemy/configuration/string_option.rb +11 -0
  262. data/lib/alchemy/configuration.rb +115 -0
  263. data/lib/alchemy/configuration_methods.rb +3 -1
  264. data/lib/alchemy/configurations/default_language.rb +12 -0
  265. data/lib/alchemy/configurations/default_site.rb +10 -0
  266. data/lib/alchemy/configurations/format_matchers.rb +11 -0
  267. data/lib/alchemy/configurations/mailer.rb +16 -0
  268. data/lib/alchemy/configurations/main.rb +223 -0
  269. data/lib/alchemy/configurations/page_cache.rb +19 -0
  270. data/lib/alchemy/configurations/preview.rb +32 -0
  271. data/lib/alchemy/configurations/sitemap.rb +10 -0
  272. data/lib/alchemy/configurations/uploader.rb +34 -0
  273. data/lib/alchemy/engine.rb +81 -24
  274. data/lib/alchemy/hints.rb +3 -7
  275. data/lib/alchemy/install/tasks.rb +0 -12
  276. data/lib/alchemy/on_page_layout.rb +2 -2
  277. data/lib/alchemy/propshaft/tinymce_asset.rb +15 -0
  278. data/lib/alchemy/seeder.rb +2 -2
  279. data/lib/alchemy/tasks/tidy.rb +18 -0
  280. data/lib/alchemy/tasks/usage.rb +4 -4
  281. data/lib/alchemy/test_support/config_stubbing.rb +1 -7
  282. data/lib/alchemy/test_support/factories/attachment_factory.rb +13 -2
  283. data/lib/alchemy/test_support/factories/language_factory.rb +1 -1
  284. data/lib/alchemy/test_support/factories/page_factory.rb +2 -3
  285. data/lib/alchemy/test_support/factories/picture_factory.rb +31 -2
  286. data/lib/alchemy/test_support/factories/site_factory.rb +2 -2
  287. data/lib/alchemy/test_support/having_crop_action_examples.rb +2 -2
  288. data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +80 -26
  289. data/lib/alchemy/test_support/relatable_resource_examples.rb +58 -0
  290. data/lib/alchemy/test_support/shared_ingredient_examples.rb +5 -5
  291. data/lib/alchemy/tinymce.rb +0 -1
  292. data/lib/alchemy/upgrader/eight_zero.rb +14 -0
  293. data/lib/alchemy/upgrader.rb +33 -20
  294. data/lib/alchemy/version.rb +1 -1
  295. data/lib/alchemy.rb +185 -172
  296. data/lib/alchemy_cms.rb +1 -7
  297. data/lib/generators/alchemy/ingredient/ingredient_generator.rb +0 -3
  298. data/lib/generators/alchemy/install/files/_article.html.erb +6 -4
  299. data/lib/generators/alchemy/install/files/alchemy.en.yml +22 -3
  300. data/lib/generators/alchemy/install/files/application.html.erb +5 -0
  301. data/lib/generators/alchemy/install/install_generator.rb +25 -23
  302. data/lib/generators/alchemy/install/templates/alchemy.rb.tt +200 -0
  303. data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +0 -1
  304. data/lib/generators/alchemy/install/templates/elements.yml.tt +3 -1
  305. data/lib/generators/alchemy/install/templates/menus.yml.tt +1 -1
  306. data/lib/generators/alchemy/install/templates/page_layouts.yml.tt +2 -2
  307. data/lib/generators/alchemy/page_layouts/page_layouts_generator.rb +2 -2
  308. data/lib/tasks/alchemy/assets.rake +14 -0
  309. data/lib/tasks/alchemy/tidy.rake +6 -0
  310. data/lib/tasks/alchemy/upgrade.rake +12 -47
  311. data/vendor/assets/stylesheets/tinymce/skins/content/dark/content.min.css +1 -0
  312. data/vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css +1 -0
  313. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide/skin.min.css +1 -0
  314. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/content.min.css +1 -0
  315. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/skin.min.css +1 -0
  316. data/vendor/javascript/clipboard.min.js +1 -1
  317. data/vendor/javascript/cropperjs.min.js +1 -1
  318. data/vendor/javascript/handlebars.min.js +3 -3
  319. data/vendor/javascript/jquery.min.js +1 -1
  320. data/vendor/javascript/select2.min.js +3 -3
  321. data/vendor/javascript/shoelace.min.js +92 -76
  322. data/vendor/javascript/sortable.min.js +2 -2
  323. data/vendor/javascript/tinymce.min.js +1 -1
  324. data/vendor/javascript/ungap-custom-elements.min.js +2 -2
  325. metadata +223 -208
  326. data/CHANGELOG.md +0 -2041
  327. data/CODE_OF_CONDUCT.md +0 -13
  328. data/CONTRIBUTING.md +0 -73
  329. data/Gemfile +0 -71
  330. data/Rakefile +0 -102
  331. data/SECURITY.md +0 -13
  332. data/alchemy_cms.gemspec +0 -88
  333. data/app/assets/builds/alchemy/admin/page-select.css.map +0 -1
  334. data/app/assets/builds/alchemy/admin/print.css.map +0 -1
  335. data/app/assets/builds/alchemy/admin.css.map +0 -1
  336. data/app/assets/builds/alchemy/custom-properties.css +0 -1
  337. data/app/assets/builds/alchemy/custom-properties.css.map +0 -1
  338. data/app/assets/builds/alchemy/welcome.css.map +0 -1
  339. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map +0 -1
  340. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css.map +0 -1
  341. data/app/assets/javascripts/alchemy/admin.js +0 -10
  342. data/app/assets/stylesheets/alchemy/_defaults.scss +0 -3
  343. data/app/assets/stylesheets/alchemy/_deprecated_variables.scss +0 -45
  344. data/app/assets/stylesheets/alchemy/_deprecation.scss +0 -17
  345. data/app/assets/stylesheets/alchemy/_extends.scss +0 -62
  346. data/app/assets/stylesheets/alchemy/_variables.scss +0 -201
  347. data/app/assets/stylesheets/alchemy/admin/attachments.scss +0 -40
  348. data/app/assets/stylesheets/alchemy/admin/buttons.scss +0 -123
  349. data/app/assets/stylesheets/alchemy/admin/hints.scss +0 -5
  350. data/app/assets/stylesheets/alchemy/admin/labels.scss +0 -3
  351. data/app/assets/stylesheets/alchemy/admin/pagination.scss +0 -92
  352. data/app/assets/stylesheets/alchemy/admin/preview_window.scss +0 -33
  353. data/app/assets/stylesheets/alchemy/admin/resource_info.scss +0 -42
  354. data/app/assets/stylesheets/alchemy/admin/tags.scss +0 -158
  355. data/app/assets/stylesheets/alchemy/admin.scss +0 -42
  356. data/app/assets/stylesheets/alchemy/custom-properties.css +0 -98
  357. data/app/assets/stylesheets/alchemy/welcome.scss +0 -57
  358. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.css +0 -711
  359. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.css +0 -705
  360. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.min.css +0 -7
  361. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.min.css +0 -7
  362. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.css +0 -29
  363. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.min.css +0 -7
  364. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.css +0 -677
  365. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.min.css +0 -7
  366. data/app/controllers/alchemy/elements_controller.rb +0 -32
  367. data/app/helpers/alchemy/admin/elements_helper.rb +0 -25
  368. data/app/models/alchemy/element/dom_id.rb +0 -31
  369. data/app/models/alchemy/picture/calculations.rb +0 -49
  370. data/app/models/alchemy/picture/transformations.rb +0 -115
  371. data/app/models/alchemy/picture/url.rb +0 -54
  372. data/app/views/alchemy/admin/attachments/destroy.js.erb +0 -1
  373. data/app/views/alchemy/admin/clipboard/clear.js.erb +0 -3
  374. data/app/views/alchemy/admin/clipboard/insert.js.erb +0 -29
  375. data/app/views/alchemy/admin/clipboard/remove.js.erb +0 -10
  376. data/app/views/alchemy/admin/resources/_filter.html.erb +0 -12
  377. data/app/views/alchemy/admin/resources/_resource.html.erb +0 -34
  378. data/app/views/alchemy/admin/resources/_table.html.erb +0 -29
  379. data/app/views/alchemy/elements/show.html.erb +0 -1
  380. data/app/views/alchemy/elements/show.js.erb +0 -1
  381. data/app/views/alchemy/ingredients/_audio_view.html.erb +0 -1
  382. data/app/views/alchemy/ingredients/_boolean_view.html.erb +0 -1
  383. data/app/views/alchemy/ingredients/_datetime_view.html.erb +0 -3
  384. data/app/views/alchemy/ingredients/_file_view.html.erb +0 -4
  385. data/app/views/alchemy/ingredients/_headline_view.html.erb +0 -4
  386. data/app/views/alchemy/ingredients/_html_view.html.erb +0 -1
  387. data/app/views/alchemy/ingredients/_link_view.html.erb +0 -4
  388. data/app/views/alchemy/ingredients/_node_view.html.erb +0 -1
  389. data/app/views/alchemy/ingredients/_page_view.html.erb +0 -1
  390. data/app/views/alchemy/ingredients/_picture_view.html.erb +0 -4
  391. data/app/views/alchemy/ingredients/_richtext_view.html.erb +0 -3
  392. data/app/views/alchemy/ingredients/_select_view.html.erb +0 -1
  393. data/app/views/alchemy/ingredients/_text_view.html.erb +0 -4
  394. data/app/views/alchemy/ingredients/_video_view.html.erb +0 -3
  395. data/babel.config.js +0 -12
  396. data/bin/importmap +0 -4
  397. data/bin/rails +0 -9
  398. data/bin/rspec +0 -3
  399. data/bin/setup +0 -30
  400. data/bin/start +0 -17
  401. data/bun.lockb +0 -0
  402. data/bundles/shoelace.js +0 -12
  403. data/bundles/tinymce.js +0 -22
  404. data/config/initializers/assets.rb +0 -4
  405. data/eslint.config.js +0 -17
  406. data/lib/alchemy/config.rb +0 -114
  407. data/lib/alchemy/element_definition.rb +0 -73
  408. data/lib/alchemy/page_layout.rb +0 -73
  409. data/lib/alchemy/resource_filter.rb +0 -40
  410. data/lib/alchemy/upgrader/seven_point_four.rb +0 -26
  411. data/lib/alchemy/upgrader/seven_point_three.rb +0 -52
  412. data/lib/alchemy/upgrader/tasks/.keep +0 -0
  413. data/lib/generators/alchemy/ingredient/templates/view.html.erb +0 -1
  414. data/lib/generators/alchemy/install/files/alchemy_admin.js +0 -1
  415. data/lib/generators/alchemy/install/files/all.js +0 -11
  416. data/lib/generators/alchemy/install/files/article.css +0 -25
  417. data/rollup.config.mjs +0 -108
  418. data/vendor/assets/images/remixicon.symbol.svg +0 -11
  419. /data/app/{assets/stylesheets → stylesheets}/alchemy/_fonts.scss +0 -0
  420. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/attachment-select.scss +0 -0
  421. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/flash.scss +0 -0
  422. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/list_filter.scss +0 -0
  423. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/spinner.scss +0 -0
  424. /data/app/{assets/stylesheets → stylesheets}/tinymce/skins/skintool.json +0 -0
  425. /data/app/{assets/stylesheets → stylesheets}/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff +0 -0
@@ -5,14 +5,12 @@
5
5
  * For commercial licenses see https://www.tiny.cloud/
6
6
  */
7
7
 
8
- @import "alchemy/variables";
9
-
10
8
  .tox {
11
9
  box-shadow: none;
12
10
  box-sizing: content-box;
13
11
  color: #000;
14
12
  cursor: auto;
15
- font-family: $default-font-family;
13
+ font-family: var(--font-default);
16
14
  font-size: 13px;
17
15
  font-style: normal;
18
16
  font-weight: 400;
@@ -69,13 +67,13 @@
69
67
  }
70
68
 
71
69
  .tox-tinymce {
72
- border: $default-border;
73
- border-radius: $default-border-radius;
70
+ border: var(--border-default);
71
+ border-radius: var(--border-radius_medium);
74
72
  box-shadow: none;
75
73
  box-sizing: border-box;
76
74
  display: flex;
77
75
  flex-direction: column;
78
- font-family: $default-font-family;
76
+ font-family: var(--font-default);
79
77
  overflow: hidden;
80
78
  position: relative;
81
79
  visibility: inherit !important;
@@ -88,13 +86,13 @@
88
86
 
89
87
  .tox-tinymce-inline .tox-editor-header {
90
88
  background-color: transparent;
91
- border: $default-border;
92
- border-radius: $default-border-radius;
89
+ border: var(--border-default);
90
+ border-radius: var(--border-radius_medium);
93
91
  box-shadow: none;
94
92
  }
95
93
 
96
94
  .tox-tinymce-aux {
97
- font-family: $default-font-family;
95
+ font-family: var(--font-default);
98
96
  z-index: 1300;
99
97
  }
100
98
 
@@ -119,8 +117,8 @@ button::-moz-focus-inner {
119
117
 
120
118
  .tox .accessibility-issue__description {
121
119
  align-items: stretch;
122
- border: $default-border;
123
- border-radius: $default-border-radius;
120
+ border: var(--border-default);
121
+ border-radius: var(--border-radius_medium);
124
122
  display: flex;
125
123
  justify-content: space-between;
126
124
  }
@@ -338,28 +336,28 @@ button::-moz-focus-inner {
338
336
  }
339
337
 
340
338
  .tox .tox-button {
341
- background-color: $button-bg-color;
339
+ background-color: var(--button-bg-color);
342
340
  background-image: none;
343
341
  background-position: 0 0;
344
342
  background-repeat: repeat;
345
- border-color: $button-border-color;
346
- border-radius: $button-border-radius;
343
+ border-color: var(--button-border-color);
344
+ border-radius: var(--button-border-radius);
347
345
  border-style: solid;
348
- border-width: $button-border-width;
349
- box-shadow: $button-box-shadow;
346
+ border-width: var(--button-border-width);
347
+ box-shadow: var(--button-box-shadow);
350
348
  box-sizing: border-box;
351
- color: $button-text-color;
349
+ color: var(--button-text-color);
352
350
  cursor: pointer;
353
351
  display: inline-block;
354
- font-family: $default-font-family;
355
- font-size: $base-font-size;
352
+ font-family: var(--font-default);
353
+ font-size: var(--button-font-size);
356
354
  font-style: normal;
357
- font-weight: $button-font-weight;
355
+ font-weight: var(--button-font-weight);
358
356
  letter-spacing: normal;
359
- line-height: 24px;
360
- margin: 0;
357
+ height: var(--button-height);
358
+ margin: var(--button-margin);
361
359
  outline: 0;
362
- padding: $button-padding;
360
+ padding: var(--button-padding);
363
361
  text-align: center;
364
362
  text-decoration: none;
365
363
  text-transform: none;
@@ -367,89 +365,70 @@ button::-moz-focus-inner {
367
365
  }
368
366
 
369
367
  .tox .tox-button[disabled] {
370
- background-color: #2d5a8d;
371
- background-image: none;
372
- border-color: #2d5a8d;
368
+ background-color: var(--button-disabled-bg-color);
369
+ border-color: var(--button-border-color);
373
370
  box-shadow: none;
374
- color: rgba(255, 255, 255, 0.5);
371
+ color: var(--button-disabled-color);
375
372
  cursor: not-allowed;
376
373
  }
377
374
 
378
375
  .tox .tox-button:focus:not(:disabled) {
379
- background-color: #274e7a;
380
- background-image: none;
381
- border-color: #274e7a;
382
- box-shadow: none;
383
- color: #fff;
384
- }
385
-
386
- .tox .tox-button:hover:not(:disabled) {
387
- background-color: $button-hover-bg-color;
388
- background-image: none;
389
- border-color: $button-hover-border-color;
390
- box-shadow: none;
391
- color: $button-text-color;
376
+ background-color: var(--button-bg-color);
377
+ border-color: var(--button-focus-border-color);
378
+ box-shadow: var(--button-focus-box-shadow);
392
379
  }
393
380
 
381
+ .tox .tox-button:hover:not(:disabled):not(:focus),
394
382
  .tox .tox-button:active:not(:disabled) {
395
- background-color: $button-hover-bg-color;
383
+ background-color: var(--button-hover-bg-color);
396
384
  background-image: none;
397
- border-color: $button-hover-border-color;
385
+ border-color: var(--button-hover-border-color);
398
386
  box-shadow: none;
399
- color: $button-text-color;
387
+ color: var(--button-text-color);
400
388
  }
401
389
 
402
390
  .tox .tox-button--secondary {
403
- background-color: $secondary-button-bg-color;
391
+ background-color: var(--button-secondary-bg-color);
404
392
  background-image: none;
405
393
  background-position: 0 0;
406
394
  background-repeat: repeat;
407
- border-color: $secondary-button-border-color;
408
- border-radius: $default-border-radius;
395
+ border-color: var(--button-secondary-border-color);
396
+ border-radius: var(--border-radius_medium);
409
397
  border-style: solid;
410
- border-width: $button-border-width;
398
+ border-width: var(--button-border-width);
411
399
  box-shadow: none;
412
- color: $secondary-button-text-color;
413
- font-size: $default-font-size;
400
+ color: var(--button-secondary-text-color);
401
+ font-size: var(--button-font-size);
414
402
  font-style: normal;
415
- font-weight: $button-font-weight;
403
+ font-weight: var(--button-font-weight);
416
404
  letter-spacing: normal;
417
405
  outline: 0;
418
- padding: $button-padding;
406
+ padding: var(--button-padding);
419
407
  text-decoration: none;
420
408
  text-transform: none;
421
409
  }
422
410
 
423
411
  .tox .tox-button--secondary[disabled] {
424
- background-color: #f0f0f0;
425
- background-image: none;
426
- border-color: #f0f0f0;
412
+ background-color: var(--button-disabled-bg-color);
413
+ border-color: var(--button-secondary-border-color);
414
+ cursor: not-allowed;
427
415
  box-shadow: none;
428
- color: rgba(0, 0, 0, 0.5);
416
+ color: var(--button-disabled-color);
429
417
  }
430
418
 
431
419
  .tox .tox-button--secondary:focus:not(:disabled) {
432
- background-color: #e3e3e3;
433
- background-image: none;
434
- border-color: #e3e3e3;
435
- box-shadow: none;
436
- color: #000;
437
- }
438
-
439
- .tox .tox-button--secondary:hover:not(:disabled) {
440
- background-color: #e3e3e3;
441
- background-image: none;
442
- border-color: #e3e3e3;
443
- box-shadow: none;
444
- color: #000;
420
+ background-color: var(--button-secondary-bg-color);
421
+ border-color: var(--button-focus-border-color);
422
+ box-shadow: var(--button-focus-box-shadow);
445
423
  }
446
424
 
425
+ .tox .tox-button--secondary:hover:not(:disabled):not(:focus),
447
426
  .tox .tox-button--secondary:active:not(:disabled) {
448
- background-color: #d6d6d6;
427
+ background-color: var(--button-hover-bg-color);
449
428
  background-image: none;
450
- border-color: #d6d6d6;
429
+ border-color: var(--button-hover-border-color);
451
430
  box-shadow: none;
452
- color: #000;
431
+ color: var(--button-secondary-text-color);
453
432
  }
454
433
 
455
434
  .tox .tox-button--icon,
@@ -471,7 +450,7 @@ button::-moz-focus-inner {
471
450
  box-sizing: border-box;
472
451
  cursor: pointer;
473
452
  display: inline-block;
474
- font-family: $default-font-family;
453
+ font-family: var(--font-default);
475
454
  font-size: 13px;
476
455
  font-weight: 400;
477
456
  line-height: 1.3;
@@ -481,7 +460,7 @@ button::-moz-focus-inner {
481
460
  }
482
461
 
483
462
  .tox .tox-button-link--sm {
484
- font-size: $base-font-size;
463
+ font-size: var(--font-size_medium);
485
464
  }
486
465
 
487
466
  .tox .tox-button--naked {
@@ -529,7 +508,7 @@ button::-moz-focus-inner {
529
508
 
530
509
  .tox .tox-checkbox {
531
510
  align-items: center;
532
- border-radius: $default-border-radius;
511
+ border-radius: var(--border-radius_medium);
533
512
  cursor: pointer;
534
513
  display: flex;
535
514
  height: 36px;
@@ -546,7 +525,7 @@ button::-moz-focus-inner {
546
525
 
547
526
  .tox .tox-checkbox__icons {
548
527
  align-items: center;
549
- border-radius: $default-border-radius;
528
+ border-radius: var(--border-radius_medium);
550
529
  box-shadow: 0 0 0 2px transparent;
551
530
  box-sizing: content-box;
552
531
  display: flex;
@@ -633,7 +612,7 @@ button::-moz-focus-inner {
633
612
  }
634
613
 
635
614
  .tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
636
- border-radius: $default-border-radius;
615
+ border-radius: var(--border-radius_medium);
637
616
  box-shadow: inset 0 0 0 1px #2d5a8d;
638
617
  padding: calc(3.25px - 1px);
639
618
  }
@@ -723,23 +702,23 @@ button::-moz-focus-inner {
723
702
  }
724
703
 
725
704
  .tox .tox-collection--toolbar .tox-collection__item {
726
- border-radius: $default-border-radius;
705
+ border-radius: var(--border-radius_medium);
727
706
  padding: 3.25px;
728
707
  }
729
708
 
730
709
  .tox .tox-collection--grid .tox-collection__item {
731
- border-radius: $default-border-radius;
710
+ border-radius: var(--border-radius_medium);
732
711
  padding: 3.25px;
733
712
  }
734
713
 
735
714
  .tox .tox-collection--list .tox-collection__item--enabled {
736
715
  background-color: rgba(175, 175, 175, 0.25);
737
- color: var(--color-text);
716
+ color: var(--text-color);
738
717
  }
739
718
 
740
719
  .tox .tox-collection--toolbar .tox-collection__item--enabled {
741
720
  background-color: rgba(175, 175, 175, 0.5);
742
- color: var(--color-text);
721
+ color: var(--text-color);
743
722
  }
744
723
 
745
724
  .tox .tox-collection--toolbar .tox-collection__item--active {
@@ -748,44 +727,44 @@ button::-moz-focus-inner {
748
727
 
749
728
  .tox .tox-collection--grid .tox-collection__item--enabled {
750
729
  background-color: rgba(175, 175, 175, 0.5);
751
- color: var(--color-text);
730
+ color: var(--text-color);
752
731
  }
753
732
 
754
733
  .tox
755
734
  .tox-collection--grid
756
735
  .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
757
736
  background-color: rgba(175, 175, 175, 0.25);
758
- color: var(--color-text);
737
+ color: var(--text-color);
759
738
  outline: none;
760
739
  }
761
740
 
762
741
  .tox
763
742
  .tox-collection--list
764
743
  .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
765
- background-color: $select-hover-bg-color;
766
- color: $select-hover-text-color;
744
+ background-color: var(--select-hover-bg-color);
745
+ color: var(--select-hover-text-color);
767
746
 
768
747
  .tox-collection__item-caret svg {
769
- fill: $select-hover-text-color;
748
+ fill: var(--select-hover-text-color);
770
749
  }
771
750
  .tox-collection__item-accessory {
772
- color: $select-hover-text-color;
751
+ color: var(--select-hover-text-color);
773
752
  }
774
753
  }
775
754
 
776
755
  .tox
777
756
  .tox-collection--toolbar
778
757
  .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
779
- color: var(--color-text);
758
+ color: var(--text-color);
780
759
  }
781
760
 
782
761
  .tox .tox-collection__item-checkmark,
783
762
  .tox .tox-collection__item-icon {
784
763
  align-items: center;
785
764
  display: flex;
786
- height: $icon-button-medium-height;
765
+ height: var(--icon-button-medium-height);
787
766
  justify-content: center;
788
- width: $icon-button-medium-width;
767
+ width: var(--icon-button-medium-width);
789
768
  font-size: 14px;
790
769
  }
791
770
 
@@ -804,7 +783,7 @@ button::-moz-focus-inner {
804
783
  display: inline-block;
805
784
  flex: 1;
806
785
  -ms-flex-preferred-size: auto;
807
- font-size: $base-font-size;
786
+ font-size: var(--font-size_medium);
808
787
  font-style: normal;
809
788
  font-weight: 400;
810
789
  line-height: 24px;
@@ -820,7 +799,7 @@ button::-moz-focus-inner {
820
799
  .tox .tox-collection__item-accessory {
821
800
  color: rgba(0, 0, 0, 0.7);
822
801
  display: inline-block;
823
- font-size: $base-font-size;
802
+ font-size: var(--font-size_medium);
824
803
  height: 24px;
825
804
  line-height: 24px;
826
805
  text-transform: none;
@@ -870,8 +849,8 @@ button::-moz-focus-inner {
870
849
 
871
850
  .tox .tox-collection--horizontal {
872
851
  background-color: #fff;
873
- border: $default-border;
874
- border-radius: $default-border-radius;
852
+ border: var(--border-default);
853
+ border-radius: var(--border-radius_medium);
875
854
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
876
855
  display: flex;
877
856
  flex: 0 0 auto;
@@ -978,7 +957,7 @@ button::-moz-focus-inner {
978
957
  .tox:not([dir="rtl"])
979
958
  .tox-collection--horizontal
980
959
  .tox-collection__group:not(:last-of-type) {
981
- border-right: $default-border;
960
+ border-right: var(--border-default);
982
961
  }
983
962
 
984
963
  .tox:not([dir="rtl"])
@@ -1007,7 +986,7 @@ button::-moz-focus-inner {
1007
986
  .tox[dir="rtl"]
1008
987
  .tox-collection--horizontal
1009
988
  .tox-collection__group:not(:last-of-type) {
1010
- border-left: $default-border;
989
+ border-left: var(--border-default);
1011
990
  }
1012
991
 
1013
992
  .tox[dir="rtl"]
@@ -1258,8 +1237,8 @@ button::-moz-focus-inner {
1258
1237
 
1259
1238
  .tox .tox-comment {
1260
1239
  background: #fff;
1261
- border: $default-border;
1262
- border-radius: $default-border-radius;
1240
+ border: var(--border-default);
1241
+ border-radius: var(--border-radius_medium);
1263
1242
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1);
1264
1243
  padding: 6.5px 6.5px 13px 6.5px;
1265
1244
  position: relative;
@@ -1279,7 +1258,7 @@ button::-moz-focus-inner {
1279
1258
 
1280
1259
  .tox .tox-comment__body {
1281
1260
  color: #000;
1282
- font-size: $base-font-size;
1261
+ font-size: var(--font-size_medium);
1283
1262
  font-style: normal;
1284
1263
  font-weight: 400;
1285
1264
  line-height: 1.3;
@@ -1300,7 +1279,7 @@ button::-moz-focus-inner {
1300
1279
 
1301
1280
  .tox .tox-comment__expander p {
1302
1281
  color: rgba(0, 0, 0, 0.7);
1303
- font-size: $base-font-size;
1282
+ font-size: var(--font-size_medium);
1304
1283
  font-style: normal;
1305
1284
  }
1306
1285
 
@@ -1387,7 +1366,7 @@ button::-moz-focus-inner {
1387
1366
  .tox .tox-comment__overlaytext {
1388
1367
  bottom: 0;
1389
1368
  flex-direction: column;
1390
- font-size: $base-font-size;
1369
+ font-size: var(--font-size_medium);
1391
1370
  left: 0;
1392
1371
  padding: 1em;
1393
1372
  position: absolute;
@@ -1497,8 +1476,7 @@ button::-moz-focus-inner {
1497
1476
  }
1498
1477
 
1499
1478
  .tox .tox-dialog-wrap__backdrop {
1500
- background-color: $dialog-overlay-color;
1501
- opacity: $dialog-overlay-opacity;
1479
+ background-color: var(--dialog-overlay-color);
1502
1480
  bottom: 0;
1503
1481
  left: 0;
1504
1482
  position: absolute;
@@ -1508,16 +1486,16 @@ button::-moz-focus-inner {
1508
1486
  }
1509
1487
 
1510
1488
  .tox .tox-dialog-wrap__backdrop--opaque {
1511
- background-color: $dialog-overlay-color;
1489
+ background-color: var(--dialog-overlay-color);
1512
1490
  }
1513
1491
 
1514
1492
  .tox .tox-dialog {
1515
- background-color: $dialog-background-color;
1493
+ background-color: var(--dialog-background-color);
1516
1494
  border-color: transparent;
1517
- border-radius: $default-border-radius;
1495
+ border-radius: var(--border-radius_medium);
1518
1496
  border-style: solid;
1519
1497
  border-width: 0;
1520
- box-shadow: $dialog-box-shadow;
1498
+ box-shadow: var(--dialog-box-shadow);
1521
1499
  display: flex;
1522
1500
  flex-direction: column;
1523
1501
  max-height: 100%;
@@ -1541,23 +1519,30 @@ button::-moz-focus-inner {
1541
1519
  }
1542
1520
 
1543
1521
  .tox .tox-dialog__header {
1544
- height: $dialog-header-height;
1522
+ height: var(--dialog-header-height);
1545
1523
  align-items: center;
1546
- background-color: $dialog-header-color;
1524
+ background-color: var(--dialog-header-color);
1547
1525
  border-bottom: none;
1548
- color: $dialog-header-text-color;
1526
+ color: var(--dialog-header-text-color);
1549
1527
  display: flex;
1550
- font-size: $dialog-header-font-size;
1528
+ font-size: var(--dialog-header-font-size);
1551
1529
  justify-content: space-between;
1552
- padding: $dialog-header-padding;
1530
+ padding: var(--dialog-header-padding);
1553
1531
  position: relative;
1554
1532
  }
1555
1533
 
1556
1534
  .tox .tox-dialog__header .tox-button {
1557
1535
  z-index: 1;
1558
1536
  color: var(--color-white);
1537
+ height: var(--spacing-6);
1559
1538
  background-image: none; // If used in Solidus we need to override the background image
1560
- border: none; // If used in Solidus we need to override the border
1539
+ border-color: transparent; // If used in Solidus we need to override the border
1540
+
1541
+ &:active:not(:disabled),
1542
+ &:hover:not(:disabled) {
1543
+ background-color: var(--color-blue_medium);
1544
+ color: var(--color-white);
1545
+ }
1561
1546
  }
1562
1547
 
1563
1548
  .tox .tox-dialog__draghandle {
@@ -1578,7 +1563,7 @@ button::-moz-focus-inner {
1578
1563
  }
1579
1564
 
1580
1565
  .tox .tox-dialog__title {
1581
- font-family: $default-font-family;
1566
+ font-family: var(--font-default);
1582
1567
  font-size: 1em;
1583
1568
  font-style: normal;
1584
1569
  font-weight: bold;
@@ -1617,7 +1602,7 @@ button::-moz-focus-inner {
1617
1602
  border-bottom: 2px solid transparent;
1618
1603
  color: var(--sl-color-neutral-600);
1619
1604
  display: inline-block;
1620
- font-size: $base-font-size;
1605
+ font-size: var(--font-size_medium);
1621
1606
  line-height: 1.3;
1622
1607
  padding: var(--spacing-4) 15px;
1623
1608
  text-decoration: none;
@@ -1761,7 +1746,7 @@ button::-moz-focus-inner {
1761
1746
 
1762
1747
  .tox .tox-dialog__footer {
1763
1748
  align-items: center;
1764
- background-color: $dialog-background-color;
1749
+ background-color: var(--dialog-background-color);
1765
1750
  border-top: none;
1766
1751
  display: flex;
1767
1752
  justify-content: space-between;
@@ -1797,7 +1782,7 @@ button::-moz-focus-inner {
1797
1782
  }
1798
1783
 
1799
1784
  .tox .tox-dialog__table tbody tr {
1800
- border-bottom: $default-border;
1785
+ border-bottom: var(--border-default);
1801
1786
  }
1802
1787
 
1803
1788
  .tox .tox-dialog__table tbody tr:last-child {
@@ -2080,7 +2065,7 @@ body.tox-dialog__disable-scroll {
2080
2065
 
2081
2066
  .tox .tox-color-input span {
2082
2067
  border-color: rgba(0, 0, 0, 0.2);
2083
- border-radius: $default-border-radius;
2068
+ border-radius: var(--border-radius_medium);
2084
2069
  border-style: solid;
2085
2070
  border-width: 1px;
2086
2071
  box-shadow: none;
@@ -2098,11 +2083,8 @@ body.tox-dialog__disable-scroll {
2098
2083
  }
2099
2084
 
2100
2085
  .tox .tox-color-input span::before {
2101
- background-image: linear-gradient(
2102
- 45deg,
2103
- rgba(0, 0, 0, 0.25) 25%,
2104
- transparent 25%
2105
- ),
2086
+ background-image:
2087
+ linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%),
2106
2088
  linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%),
2107
2089
  linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%),
2108
2090
  linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%);
@@ -2113,7 +2095,7 @@ body.tox-dialog__disable-scroll {
2113
2095
  -5px -1px;
2114
2096
  background-size: 8px 8px;
2115
2097
  border: 1px solid #fff;
2116
- border-radius: $default-border-radius;
2098
+ border-radius: var(--border-radius_medium);
2117
2099
  box-sizing: border-box;
2118
2100
  content: "";
2119
2101
  height: 24px;
@@ -2148,7 +2130,7 @@ body.tox-dialog__disable-scroll {
2148
2130
  .tox .tox-toolbar-label {
2149
2131
  color: rgba(0, 0, 0, 0.7);
2150
2132
  display: block;
2151
- font-size: $base-font-size;
2133
+ font-size: var(--font-size_medium);
2152
2134
  font-style: normal;
2153
2135
  font-weight: 400;
2154
2136
  line-height: 1.3;
@@ -2271,22 +2253,22 @@ body.tox-dialog__disable-scroll {
2271
2253
  -webkit-appearance: none;
2272
2254
  -moz-appearance: none;
2273
2255
  appearance: none;
2274
- background-color: $form-field-background-color;
2256
+ background-color: var(--form-field-background-color);
2275
2257
  background-image: none; // If nested in Solidus we need to override the background image
2276
- border-color: $form-field-border-color;
2277
- border-radius: $default-border-radius;
2278
- border-style: $form-field-border-style;
2279
- border-width: $form-field-border-width;
2258
+ border-color: var(--form-field-border-color);
2259
+ border-radius: var(--border-radius_medium);
2260
+ border-style: var(--form-field-border-style);
2261
+ border-width: var(--form-field-border-width);
2280
2262
  box-shadow: none;
2281
2263
  box-sizing: border-box;
2282
- color: $form-field-text-color;
2283
- font-family: $default-font-family;
2284
- font-size: $form-field-font-size;
2285
- line-height: $form-field-line-height;
2264
+ color: var(--form-field-text-color);
2265
+ font-family: var(--font-default);
2266
+ font-size: var(--form-field-font-size);
2267
+ line-height: var(--form-field-line-height);
2286
2268
  margin: 0;
2287
- min-height: $form-field-height;
2269
+ min-height: var(--form-field-height);
2288
2270
  outline: 0;
2289
- padding: $form-field-padding;
2271
+ padding: var(--form-field-padding);
2290
2272
  resize: none;
2291
2273
  width: 100%;
2292
2274
 
@@ -2308,7 +2290,7 @@ body.tox-dialog__disable-scroll {
2308
2290
  .tox .tox-textfield:focus {
2309
2291
  border-color: transparent;
2310
2292
  box-shadow: none;
2311
- outline: 1px solid $focus-color !important; // Need to force the outline if used in Solidus
2293
+ outline: 1px solid var(--focus-color) !important; // Need to force the outline if used in Solidus
2312
2294
  }
2313
2295
 
2314
2296
  .tox .tox-toolbar-textfield {
@@ -2395,13 +2377,13 @@ body.tox-dialog__disable-scroll {
2395
2377
  appearance: none;
2396
2378
  background-color: #fff;
2397
2379
  border-color: rgba(175, 175, 175, 0.5);
2398
- border-radius: $default-border-radius;
2380
+ border-radius: var(--border-radius_medium);
2399
2381
  border-style: solid;
2400
2382
  border-width: 1px;
2401
2383
  box-shadow: none;
2402
2384
  box-sizing: border-box;
2403
2385
  color: #000;
2404
- font-family: $default-font-family;
2386
+ font-family: var(--font-default);
2405
2387
  font-size: 13px;
2406
2388
  line-height: 24px;
2407
2389
  margin: 0;
@@ -2638,7 +2620,7 @@ body.tox-dialog__disable-scroll {
2638
2620
  .tox .tox-insert-table-picker__label {
2639
2621
  color: rgba(0, 0, 0, 0.7);
2640
2622
  display: block;
2641
- font-size: $base-font-size;
2623
+ font-size: var(--font-size_medium);
2642
2624
  padding: 3.25px;
2643
2625
  text-align: center;
2644
2626
  width: 100%;
@@ -2654,8 +2636,8 @@ body.tox-dialog__disable-scroll {
2654
2636
 
2655
2637
  .tox .tox-menu {
2656
2638
  background-color: #fff;
2657
- border: $default-border;
2658
- border-radius: $default-border-radius;
2639
+ border: var(--border-default);
2640
+ border-radius: var(--border-radius_medium);
2659
2641
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1);
2660
2642
  display: inline-block;
2661
2643
  overflow: hidden;
@@ -2701,19 +2683,19 @@ body.tox-dialog__disable-scroll {
2701
2683
  .tox.tox-tinymce:not(.tox-tinymce-inline)
2702
2684
  .tox-editor-header:not(:first-child)
2703
2685
  .tox-menubar {
2704
- border-top: $default-border;
2686
+ border-top: var(--border-default);
2705
2687
  }
2706
2688
 
2707
2689
  .tox .tox-mbtn {
2708
2690
  align-items: center;
2709
2691
  background: 0 0;
2710
2692
  border: 0;
2711
- border-radius: $default-border-radius;
2693
+ border-radius: var(--border-radius_medium);
2712
2694
  box-shadow: none;
2713
- color: var(--color-icon);
2695
+ color: var(--icon-color);
2714
2696
  display: flex;
2715
2697
  flex: 0 0 auto;
2716
- font-size: $base-font-size;
2698
+ font-size: var(--font-size_medium);
2717
2699
  font-style: normal;
2718
2700
  font-weight: 400;
2719
2701
  height: 34px;
@@ -2774,14 +2756,14 @@ body.tox-dialog__disable-scroll {
2774
2756
  }
2775
2757
 
2776
2758
  .tox .tox-notification {
2777
- border-radius: $default-border-radius;
2759
+ border-radius: var(--border-radius_medium);
2778
2760
  border-style: solid;
2779
2761
  border-width: 1px;
2780
2762
  box-shadow: none;
2781
2763
  box-sizing: border-box;
2782
2764
  display: -ms-grid;
2783
2765
  display: grid;
2784
- font-size: $base-font-size;
2766
+ font-size: var(--font-size_medium);
2785
2767
  font-weight: 400;
2786
2768
  -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
2787
2769
  grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
@@ -2794,7 +2776,7 @@ body.tox-dialog__disable-scroll {
2794
2776
  }
2795
2777
 
2796
2778
  .tox .tox-notification p {
2797
- font-size: $base-font-size;
2779
+ font-size: var(--font-size_medium);
2798
2780
  font-weight: 400;
2799
2781
  }
2800
2782
 
@@ -2986,8 +2968,8 @@ body.tox-dialog__disable-scroll {
2986
2968
 
2987
2969
  .tox .tox-pop__dialog {
2988
2970
  background-color: #fff;
2989
- border: $default-border;
2990
- border-radius: $default-border-radius;
2971
+ border: var(--border-default);
2972
+ border-radius: var(--border-radius_medium);
2991
2973
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
2992
2974
  min-width: 0;
2993
2975
  overflow: hidden;
@@ -3181,8 +3163,8 @@ body.tox-dialog__disable-scroll {
3181
3163
 
3182
3164
  .tox .tox-slider__rail {
3183
3165
  background-color: transparent;
3184
- border: $default-border;
3185
- border-radius: $default-border-radius;
3166
+ border: var(--border-default);
3167
+ border-radius: var(--border-radius_medium);
3186
3168
  height: 10px;
3187
3169
  min-width: 120px;
3188
3170
  width: 100%;
@@ -3191,7 +3173,7 @@ body.tox-dialog__disable-scroll {
3191
3173
  .tox .tox-slider__handle {
3192
3174
  background-color: #2d5a8d;
3193
3175
  border: 2px solid #214166;
3194
- border-radius: $default-border-radius;
3176
+ border-radius: var(--border-radius_medium);
3195
3177
  box-shadow: none;
3196
3178
  height: 24px;
3197
3179
  left: 50%;
@@ -3248,8 +3230,8 @@ body.tox-dialog__disable-scroll {
3248
3230
  .tox .tox-statusbar {
3249
3231
  align-items: center;
3250
3232
  background-color: var(--color-grey_very_light);
3251
- border-top: $default-border;
3252
- color: var(--color-text_muted);
3233
+ border-top: var(--border-default);
3234
+ color: var(--text-color-muted);
3253
3235
  display: flex;
3254
3236
  flex: 0 0 auto;
3255
3237
  font-size: var(--font-size_small);
@@ -3289,7 +3271,7 @@ body.tox-dialog__disable-scroll {
3289
3271
  .tox .tox-statusbar a,
3290
3272
  .tox .tox-statusbar__path-item,
3291
3273
  .tox .tox-statusbar__wordcount {
3292
- color: var(--color-text);
3274
+ color: var(--text-color);
3293
3275
  text-decoration: none;
3294
3276
  }
3295
3277
 
@@ -3318,7 +3300,7 @@ body.tox-dialog__disable-scroll {
3318
3300
 
3319
3301
  .tox .tox-statusbar__resize-handle svg {
3320
3302
  display: block;
3321
- fill: var(--color-icon);
3303
+ fill: var(--icon-color);
3322
3304
  }
3323
3305
 
3324
3306
  .tox .tox-statusbar__resize-handle:focus svg {
@@ -3363,27 +3345,27 @@ body.tox-dialog__disable-scroll {
3363
3345
  align-items: center;
3364
3346
  background: 0 0;
3365
3347
  border: 0;
3366
- border-radius: $default-border-radius;
3348
+ border-radius: var(--border-radius_medium);
3367
3349
  box-shadow: none;
3368
- color: var(--color-icon);
3350
+ color: var(--icon-color);
3369
3351
  display: flex;
3370
3352
  flex: 0 0 auto;
3371
- font-size: $base-font-size;
3353
+ font-size: var(--font-size_medium);
3372
3354
  font-style: normal;
3373
3355
  font-weight: 400;
3374
- height: $icon-button-medium-height;
3356
+ height: var(--icon-button-medium-height);
3375
3357
  justify-content: center;
3376
3358
  margin: var(--spacing-1) 1px;
3377
3359
  outline: 0;
3378
3360
  overflow: hidden;
3379
3361
  padding: 0;
3380
3362
  text-transform: none;
3381
- width: $icon-button-medium-width;
3363
+ width: var(--icon-button-medium-width);
3382
3364
  }
3383
3365
 
3384
3366
  .tox .tox-tbtn svg {
3385
3367
  display: block;
3386
- fill: var(--color-icon);
3368
+ fill: var(--icon-color);
3387
3369
  }
3388
3370
 
3389
3371
  .tox .tox-tbtn.tox-tbtn-more {
@@ -3532,7 +3514,7 @@ body.tox-dialog__disable-scroll {
3532
3514
 
3533
3515
  .tox .tox-split-button {
3534
3516
  border: 0;
3535
- border-radius: $default-border-radius;
3517
+ border-radius: var(--border-radius_medium);
3536
3518
  box-sizing: border-box;
3537
3519
  display: flex;
3538
3520
  margin: 2px 0 3px 0;
@@ -3621,7 +3603,7 @@ body.tox-dialog__disable-scroll {
3621
3603
 
3622
3604
  .tox .tox-menubar + .tox-toolbar,
3623
3605
  .tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {
3624
- border-top: $default-border;
3606
+ border-top: var(--border-default);
3625
3607
  margin-top: -1px;
3626
3608
  }
3627
3609
 
@@ -3645,13 +3627,13 @@ body.tox-dialog__disable-scroll {
3645
3627
  .tox-tinymce:not(.tox-tinymce-inline)
3646
3628
  .tox-editor-header:not(:first-child)
3647
3629
  .tox-toolbar:first-child {
3648
- border-top: $default-border;
3630
+ border-top: var(--border-default);
3649
3631
  }
3650
3632
 
3651
3633
  .tox.tox-tinymce-aux .tox-toolbar__overflow {
3652
3634
  background-color: #fff;
3653
- border: $default-border;
3654
- border-radius: $default-border-radius;
3635
+ border: var(--border-default);
3636
+ border-radius: var(--border-radius_medium);
3655
3637
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
3656
3638
  }
3657
3639
 
@@ -3673,11 +3655,11 @@ body.tox-dialog__disable-scroll {
3673
3655
  }
3674
3656
 
3675
3657
  .tox:not([dir="rtl"]) .tox-toolbar__group:not(:last-of-type) {
3676
- border-right: $default-border;
3658
+ border-right: var(--border-default);
3677
3659
  }
3678
3660
 
3679
3661
  .tox[dir="rtl"] .tox-toolbar__group:not(:last-of-type) {
3680
- border-left: $default-border;
3662
+ border-left: var(--border-default);
3681
3663
  }
3682
3664
 
3683
3665
  .tox .tox-tooltip {
@@ -3688,10 +3670,10 @@ body.tox-dialog__disable-scroll {
3688
3670
 
3689
3671
  .tox .tox-tooltip__body {
3690
3672
  background-color: #000;
3691
- border-radius: $default-border-radius;
3673
+ border-radius: var(--border-radius_medium);
3692
3674
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
3693
3675
  color: rgba(255, 255, 255, 0.75);
3694
- font-size: $base-font-size;
3676
+ font-size: var(--font-size_medium);
3695
3677
  font-style: normal;
3696
3678
  font-weight: 400;
3697
3679
  padding: 3.25px 6.5px;
@@ -3743,8 +3725,8 @@ body.tox-dialog__disable-scroll {
3743
3725
  }
3744
3726
 
3745
3727
  .tox .tox-well {
3746
- border: $default-border;
3747
- border-radius: $default-border-radius;
3728
+ border: var(--border-default);
3729
+ border-radius: var(--border-radius_medium);
3748
3730
  padding: 6.5px;
3749
3731
  width: 100%;
3750
3732
  }
@@ -3762,8 +3744,8 @@ body.tox-dialog__disable-scroll {
3762
3744
  }
3763
3745
 
3764
3746
  .tox .tox-custom-editor {
3765
- border: $default-border;
3766
- border-radius: $default-border-radius;
3747
+ border: var(--border-default);
3748
+ border-radius: var(--border-radius_medium);
3767
3749
  display: flex;
3768
3750
  flex: 1;
3769
3751
  position: relative;