alchemy_cms 7.2.7 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +97 -14
  3. data/Gemfile +4 -3
  4. data/Rakefile +1 -0
  5. data/alchemy_cms.gemspec +7 -7
  6. data/app/assets/builds/alchemy/admin/print.css +1 -0
  7. data/app/assets/builds/alchemy/admin/print.css.map +1 -0
  8. data/app/assets/builds/alchemy/admin.css +1 -0
  9. data/app/assets/builds/alchemy/admin.css.map +1 -0
  10. data/app/assets/builds/alchemy/welcome.css +1 -0
  11. data/app/assets/builds/alchemy/welcome.css.map +1 -0
  12. data/app/assets/builds/tinymce/skins/content/alchemy/content.css +1 -0
  13. data/app/assets/builds/tinymce/skins/content/alchemy/content.css.map +1 -0
  14. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -0
  15. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map +1 -0
  16. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.css +1 -0
  17. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.css.map +1 -0
  18. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -0
  19. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css.map +1 -0
  20. data/app/assets/config/alchemy_manifest.js +1 -5
  21. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +4 -0
  22. data/app/assets/stylesheets/alchemy/{_custom-properties.scss → _custom-properties.css} +28 -25
  23. data/app/assets/stylesheets/alchemy/_deprecated_variables.scss +41 -0
  24. data/app/assets/stylesheets/alchemy/_deprecation.scss +17 -0
  25. data/app/assets/stylesheets/alchemy/_extends.scss +1 -1
  26. data/app/assets/stylesheets/alchemy/_mixins.scss +20 -23
  27. data/app/assets/stylesheets/alchemy/_variables.scss +98 -94
  28. data/app/assets/stylesheets/alchemy/{archive.scss → admin/archive.scss} +23 -23
  29. data/app/assets/stylesheets/alchemy/{attachment-select.scss → admin/attachment-select.scss} +2 -2
  30. data/app/assets/stylesheets/alchemy/{attachments.scss → admin/attachments.scss} +4 -4
  31. data/app/assets/stylesheets/alchemy/{base.scss → admin/base.scss} +9 -9
  32. data/app/assets/stylesheets/alchemy/{buttons.scss → admin/buttons.scss} +3 -3
  33. data/app/assets/stylesheets/alchemy/{clipboard.scss → admin/clipboard.scss} +9 -6
  34. data/app/assets/stylesheets/alchemy/{dashboard.scss → admin/dashboard.scss} +8 -8
  35. data/app/assets/stylesheets/alchemy/{dialogs.scss → admin/dialogs.scss} +20 -20
  36. data/app/assets/stylesheets/alchemy/{elements.scss → admin/elements.scss} +128 -88
  37. data/app/assets/stylesheets/alchemy/{errors.scss → admin/errors.scss} +22 -6
  38. data/app/assets/stylesheets/alchemy/{flash.scss → admin/flash.scss} +3 -3
  39. data/app/assets/stylesheets/alchemy/{flatpickr.scss → admin/flatpickr.scss} +55 -35
  40. data/app/assets/stylesheets/alchemy/{form_fields.scss → admin/form_fields.scss} +8 -6
  41. data/app/assets/stylesheets/alchemy/{forms.scss → admin/forms.scss} +20 -16
  42. data/app/assets/stylesheets/alchemy/{frame.scss → admin/frame.scss} +9 -9
  43. data/app/assets/stylesheets/alchemy/{image_library.scss → admin/image_library.scss} +34 -33
  44. data/app/assets/stylesheets/alchemy/admin/labels.scss +3 -0
  45. data/app/assets/stylesheets/alchemy/{list_filter.scss → admin/list_filter.scss} +4 -4
  46. data/app/assets/stylesheets/alchemy/{lists.scss → admin/lists.scss} +9 -7
  47. data/app/assets/stylesheets/alchemy/{navigation.scss → admin/navigation.scss} +17 -17
  48. data/app/assets/stylesheets/alchemy/{node-select.scss → admin/node-select.scss} +5 -5
  49. data/app/assets/stylesheets/alchemy/{nodes.scss → admin/nodes.scss} +11 -11
  50. data/app/assets/stylesheets/alchemy/{notices.scss → admin/notices.scss} +11 -7
  51. data/app/assets/stylesheets/alchemy/{page-select.scss → admin/page-select.scss} +10 -10
  52. data/app/assets/stylesheets/alchemy/{pagination.scss → admin/pagination.scss} +10 -10
  53. data/app/assets/stylesheets/alchemy/{print.scss → admin/print.scss} +2 -6
  54. data/app/assets/stylesheets/alchemy/{resource_info.scss → admin/resource_info.scss} +6 -7
  55. data/app/assets/stylesheets/alchemy/{search.scss → admin/search.scss} +6 -6
  56. data/app/assets/stylesheets/alchemy/{selects.scss → admin/selects.scss} +46 -39
  57. data/app/assets/stylesheets/alchemy/{shoelace.scss → admin/shoelace.scss} +10 -10
  58. data/app/assets/stylesheets/alchemy/{sitemap.scss → admin/sitemap.scss} +18 -19
  59. data/app/assets/stylesheets/alchemy/{tables.scss → admin/tables.scss} +26 -22
  60. data/app/assets/stylesheets/alchemy/admin/tags.scss +158 -0
  61. data/app/assets/stylesheets/alchemy/{toolbar.scss → admin/toolbar.scss} +10 -10
  62. data/app/assets/stylesheets/alchemy/{typography.scss → admin/typography.scss} +3 -3
  63. data/app/assets/stylesheets/alchemy/{upload.scss → admin/upload.scss} +1 -1
  64. data/app/assets/stylesheets/alchemy/admin.scss +40 -45
  65. data/app/assets/stylesheets/alchemy/welcome.scss +57 -0
  66. data/app/assets/stylesheets/tinymce/skins/content/alchemy/{content.min.scss → content.scss} +5 -4
  67. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/{skin.min.scss → skin.scss} +40 -40
  68. data/app/components/alchemy/admin/resource/action.rb +46 -0
  69. data/app/components/alchemy/admin/resource/cell.rb +34 -0
  70. data/app/components/alchemy/admin/resource/header.rb +46 -0
  71. data/app/components/alchemy/admin/resource/table.rb +153 -0
  72. data/app/components/alchemy/ingredients/datetime_view.rb +2 -2
  73. data/app/controllers/alchemy/admin/base_controller.rb +2 -1
  74. data/app/controllers/alchemy/admin/elements_controller.rb +7 -3
  75. data/app/controllers/alchemy/admin/legacy_page_urls_controller.rb +1 -1
  76. data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
  77. data/app/controllers/alchemy/admin/pictures_controller.rb +2 -2
  78. data/app/controllers/alchemy/admin/resources_controller.rb +2 -2
  79. data/app/controllers/alchemy/base_controller.rb +2 -0
  80. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +2 -11
  81. data/app/decorators/alchemy/ingredient_editor.rb +17 -0
  82. data/app/helpers/alchemy/admin/pages_helper.rb +6 -10
  83. data/app/helpers/alchemy/base_helper.rb +2 -2
  84. data/app/helpers/alchemy/elements_block_helper.rb +13 -1
  85. data/app/helpers/alchemy/pages_helper.rb +2 -2
  86. data/app/javascript/alchemy_admin/components/element_editor.js +23 -31
  87. data/app/javascript/alchemy_admin/components/preview_window.js +2 -3
  88. data/app/javascript/alchemy_admin/picture_selector.js +38 -10
  89. data/app/models/alchemy/attachment.rb +0 -8
  90. data/app/models/alchemy/element/dom_id.rb +1 -0
  91. data/app/models/alchemy/element/element_ingredients.rb +0 -73
  92. data/app/models/alchemy/element/presenters.rb +4 -1
  93. data/app/models/alchemy/element.rb +6 -0
  94. data/app/models/alchemy/elements_repository.rb +2 -2
  95. data/app/models/alchemy/ingredient_validator.rb +10 -0
  96. data/app/models/alchemy/page/page_scopes.rb +1 -1
  97. data/app/models/alchemy/picture.rb +0 -10
  98. data/app/views/alchemy/admin/attachments/_files_list.html.erb +74 -16
  99. data/app/views/alchemy/admin/clipboard/index.html.erb +38 -33
  100. data/app/views/alchemy/admin/dashboard/_dashboard.html.erb +3 -0
  101. data/app/views/alchemy/admin/dashboard/_left_column.html.erb +4 -0
  102. data/app/views/alchemy/admin/dashboard/_right_column.html.erb +9 -0
  103. data/app/views/alchemy/admin/dashboard/_top.html.erb +12 -0
  104. data/app/views/alchemy/admin/dashboard/index.html.erb +1 -25
  105. data/app/views/alchemy/admin/elements/_element.html.erb +1 -2
  106. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  107. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +10 -3
  108. data/app/views/alchemy/admin/ingredients/update.turbo_stream.erb +7 -0
  109. data/app/views/alchemy/admin/languages/_table.html.erb +16 -42
  110. data/app/views/alchemy/admin/nodes/_form.html.erb +1 -1
  111. data/app/views/alchemy/admin/pages/_table.html.erb +92 -27
  112. data/app/views/alchemy/admin/pages/edit.html.erb +6 -8
  113. data/app/views/alchemy/admin/pages/index.html.erb +0 -4
  114. data/app/views/alchemy/admin/pictures/_form.html.erb +14 -12
  115. data/app/views/alchemy/admin/pictures/index.html.erb +1 -11
  116. data/app/views/alchemy/admin/pictures/update.turbo_stream.erb +6 -0
  117. data/app/views/alchemy/admin/resources/_resource_table.html.erb +3 -0
  118. data/app/views/alchemy/admin/resources/_table.html.erb +2 -0
  119. data/app/views/alchemy/admin/resources/index.html.erb +1 -1
  120. data/app/views/alchemy/admin/sites/index.html.erb +1 -1
  121. data/app/views/alchemy/admin/styleguide/index.html.erb +0 -4
  122. data/app/views/alchemy/admin/tags/index.html.erb +15 -14
  123. data/app/views/alchemy/base/403.html.erb +6 -0
  124. data/app/views/alchemy/base/500.html.erb +14 -12
  125. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +13 -11
  126. data/app/views/alchemy/ingredients/_headline_editor.html.erb +29 -22
  127. data/app/views/alchemy/ingredients/_link_editor.html.erb +17 -11
  128. data/app/views/alchemy/ingredients/_page_editor.html.erb +1 -0
  129. data/app/views/alchemy/ingredients/_picture_editor.html.erb +3 -4
  130. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +5 -1
  131. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  132. data/app/views/alchemy/ingredients/_text_editor.html.erb +20 -14
  133. data/app/views/alchemy/ingredients/shared/_picture_css_class.html.erb +6 -0
  134. data/app/views/layouts/alchemy/admin.html.erb +4 -2
  135. data/bin/setup +2 -0
  136. data/bin/start +1 -1
  137. data/bun.lockb +0 -0
  138. data/config/alchemy/config.yml +9 -0
  139. data/config/locales/alchemy.en.yml +8 -29
  140. data/config/routes.rb +22 -22
  141. data/lib/alchemy/config.rb +3 -3
  142. data/lib/alchemy/install/tasks.rb +5 -2
  143. data/lib/alchemy/resources_helper.rb +3 -1
  144. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  145. data/lib/alchemy/test_support/shared_uploader_examples.rb +0 -1
  146. data/lib/alchemy/upgrader/seven_point_three.rb +52 -0
  147. data/lib/alchemy/version.rb +1 -1
  148. data/lib/alchemy_cms.rb +1 -1
  149. data/lib/generators/alchemy/install/files/article.css +25 -0
  150. data/lib/generators/alchemy/install/files/custom.css +4 -0
  151. data/lib/generators/alchemy/install/install_generator.rb +6 -6
  152. data/lib/tasks/alchemy/upgrade.rake +29 -1
  153. data/vendor/assets/stylesheets/alchemy_admin/select2.css +1 -0
  154. data/vendor/assets/stylesheets/jquery.Jcrop.min.css +2 -0
  155. data/vendor/javascript/shoelace.min.js +62 -63
  156. data/vendor/javascript/tinymce.min.js +1 -1
  157. metadata +132 -105
  158. data/app/assets/images/alchemy/lupe.cur +0 -0
  159. data/app/assets/stylesheets/alchemy/labels.scss +0 -3
  160. data/app/assets/stylesheets/alchemy/tags.scss +0 -155
  161. data/app/assets/stylesheets/alchemy/welcome.sass +0 -49
  162. data/app/views/alchemy/admin/attachments/_attachment.html.erb +0 -81
  163. data/app/views/alchemy/admin/languages/_language.html.erb +0 -50
  164. data/app/views/alchemy/admin/pages/_table_row.html.erb +0 -111
  165. data/app/views/alchemy/admin/pages/list/_table.html.erb +0 -31
  166. data/app/views/alchemy/admin/pictures/update.js.erb +0 -6
  167. data/app/views/alchemy/admin/tags/_tag.html.erb +0 -32
  168. data/app/views/alchemy/base/update.js.erb +0 -5
  169. data/lib/generators/alchemy/install/files/all.css +0 -11
  170. data/lib/generators/alchemy/install/files/article.scss +0 -30
  171. data/package.json +0 -52
  172. data/vendor/assets/stylesheets/alchemy_admin/select2.scss +0 -741
  173. data/vendor/assets/stylesheets/jquery.Jcrop.min.scss +0 -2
  174. /data/app/assets/stylesheets/alchemy/{fonts.scss → _fonts.scss} +0 -0
  175. /data/app/assets/stylesheets/alchemy/{hints.scss → admin/hints.scss} +0 -0
  176. /data/app/assets/stylesheets/alchemy/{icons.scss → admin/icons.scss} +0 -0
  177. /data/app/assets/stylesheets/alchemy/{images.scss → admin/images.scss} +0 -0
  178. /data/app/assets/stylesheets/alchemy/{preview_window.scss → admin/preview_window.scss} +0 -0
  179. /data/app/assets/stylesheets/alchemy/{spinner.scss → admin/spinner.scss} +0 -0
  180. /data/app/views/alchemy/admin/dashboard/{_locked_pages.html.erb → widgets/_locked_pages.html.erb} +0 -0
  181. /data/app/views/alchemy/admin/dashboard/{_recent_pages.html.erb → widgets/_recent_pages.html.erb} +0 -0
  182. /data/app/views/alchemy/admin/dashboard/{_sites.html.erb → widgets/_sites.html.erb} +0 -0
  183. /data/app/views/alchemy/admin/dashboard/{_users.html.erb → widgets/_users.html.erb} +0 -0
@@ -18,11 +18,19 @@
18
18
  box-sizing: border-box;
19
19
  -ms-touch-action: manipulation;
20
20
  touch-action: manipulation;
21
- background: $white;
22
- -webkit-box-shadow: 1px 0 0 $medium-gray, -1px 0 0 $medium-gray,
23
- 0 1px 0 $medium-gray, 0 -1px 0 $medium-gray, 0 3px 13px rgba(0, 0, 0, 0.08);
24
- box-shadow: 1px 0 0 $medium-gray, -1px 0 0 $medium-gray, 0 1px 0 $medium-gray,
25
- 0 -1px 0 $medium-gray, 0 3px 13px rgba(0, 0, 0, 0.08);
21
+ background: var(--color-white);
22
+ -webkit-box-shadow:
23
+ 1px 0 0 var(--color-grey_light),
24
+ -1px 0 0 var(--color-grey_light),
25
+ 0 1px 0 var(--color-grey_light),
26
+ 0 -1px 0 var(--color-grey_light),
27
+ 0 3px 13px rgba(0, 0, 0, 0.08);
28
+ box-shadow:
29
+ 1px 0 0 var(--color-grey_light),
30
+ -1px 0 0 var(--color-grey_light),
31
+ 0 1px 0 var(--color-grey_light),
32
+ 0 -1px 0 var(--color-grey_light),
33
+ 0 3px 13px rgba(0, 0, 0, 0.08);
26
34
  }
27
35
  .flatpickr-calendar.open,
28
36
  .flatpickr-calendar.inline {
@@ -62,8 +70,12 @@
62
70
  .flatpickr-days
63
71
  .dayContainer:nth-child(n + 2)
64
72
  .flatpickr-day.inRange:nth-child(7n + 1) {
65
- -webkit-box-shadow: -2px 0 0 $medium-gray, 5px 0 0 $medium-gray;
66
- box-shadow: -2px 0 0 $medium-gray, 5px 0 0 $medium-gray;
73
+ -webkit-box-shadow:
74
+ -2px 0 0 var(--color-grey_light),
75
+ 5px 0 0 var(--color-grey_light);
76
+ box-shadow:
77
+ -2px 0 0 var(--color-grey_light),
78
+ 5px 0 0 var(--color-grey_light);
67
79
  }
68
80
  .flatpickr-calendar .hasWeeks .dayContainer,
69
81
  .flatpickr-calendar .hasTime .dayContainer {
@@ -76,7 +88,7 @@
76
88
  }
77
89
  .flatpickr-calendar.hasTime .flatpickr-time {
78
90
  height: 40px;
79
- border-top: 1px solid $medium-gray;
91
+ border-top: 1px solid var(--color-grey_light);
80
92
  }
81
93
  .flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
82
94
  height: auto;
@@ -117,20 +129,20 @@
117
129
  bottom: 100%;
118
130
  }
119
131
  .flatpickr-calendar.arrowTop:before {
120
- border-bottom-color: $medium-gray;
132
+ border-bottom-color: var(--color-grey_light);
121
133
  }
122
134
  .flatpickr-calendar.arrowTop:after {
123
- border-bottom-color: $white;
135
+ border-bottom-color: var(--color-white);
124
136
  }
125
137
  .flatpickr-calendar.arrowBottom:before,
126
138
  .flatpickr-calendar.arrowBottom:after {
127
139
  top: 100%;
128
140
  }
129
141
  .flatpickr-calendar.arrowBottom:before {
130
- border-top-color: $medium-gray;
142
+ border-top-color: var(--color-grey_light);
131
143
  }
132
144
  .flatpickr-calendar.arrowBottom:after {
133
- border-top-color: $white;
145
+ border-top-color: var(--color-white);
134
146
  }
135
147
  .flatpickr-calendar:focus {
136
148
  outline: 0;
@@ -205,11 +217,11 @@
205
217
  /*rtl:end:ignore*/
206
218
  .flatpickr-months .flatpickr-prev-month:hover,
207
219
  .flatpickr-months .flatpickr-next-month:hover {
208
- color: $dark-gray;
220
+ color: var(--color-grey_dark);
209
221
  }
210
222
  .flatpickr-months .flatpickr-prev-month:hover svg,
211
223
  .flatpickr-months .flatpickr-next-month:hover svg {
212
- fill: $dark-orange;
224
+ fill: var(--color-orange_dark);
213
225
  }
214
226
  .flatpickr-months .flatpickr-prev-month svg,
215
227
  .flatpickr-months .flatpickr-next-month svg {
@@ -245,7 +257,7 @@
245
257
  position: absolute;
246
258
  right: 0;
247
259
  width: 14px;
248
- padding: 0 4px 0 2px;
260
+ padding: 0 var(--spacing-1) 0 var(--spacing-0);
249
261
  height: 50%;
250
262
  line-height: 50%;
251
263
  opacity: 0;
@@ -488,8 +500,8 @@ span.flatpickr-weekday {
488
500
  opacity: 1;
489
501
  }
490
502
  .dayContainer + .dayContainer {
491
- -webkit-box-shadow: -1px 0 0 $medium-gray;
492
- box-shadow: -1px 0 0 $medium-gray;
503
+ -webkit-box-shadow: -1px 0 0 var(--color-grey_light);
504
+ box-shadow: -1px 0 0 var(--color-grey_light);
493
505
  }
494
506
  .flatpickr-day {
495
507
  background: none;
@@ -530,17 +542,17 @@ span.flatpickr-weekday {
530
542
  .flatpickr-day.nextMonthDay:focus {
531
543
  cursor: pointer;
532
544
  outline: 0;
533
- background: $medium-gray;
534
- border-color: $medium-gray;
545
+ background: var(--color-grey_light);
546
+ border-color: var(--color-grey_light);
535
547
  }
536
548
  .flatpickr-day.today {
537
- border-color: $dark-gray;
549
+ border-color: var(--color-grey_dark);
538
550
  }
539
551
  .flatpickr-day.today:hover,
540
552
  .flatpickr-day.today:focus {
541
- border-color: $dark-gray;
542
- background: $dark-gray;
543
- color: $white;
553
+ border-color: var(--color-grey_dark);
554
+ background: var(--color-grey_dark);
555
+ color: var(--color-white);
544
556
  }
545
557
  .flatpickr-day.selected,
546
558
  .flatpickr-day.startRange,
@@ -560,11 +572,11 @@ span.flatpickr-weekday {
560
572
  .flatpickr-day.selected.nextMonthDay,
561
573
  .flatpickr-day.startRange.nextMonthDay,
562
574
  .flatpickr-day.endRange.nextMonthDay {
563
- background: $blue;
575
+ background: var(--color-blue_medium);
564
576
  -webkit-box-shadow: none;
565
577
  box-shadow: none;
566
- color: $white;
567
- border-color: $blue;
578
+ color: var(--color-white);
579
+ border-color: var(--color-blue_medium);
568
580
  }
569
581
  .flatpickr-day.selected.startRange,
570
582
  .flatpickr-day.startRange.startRange,
@@ -579,8 +591,8 @@ span.flatpickr-weekday {
579
591
  .flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n + 1)),
580
592
  .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n + 1)),
581
593
  .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n + 1)) {
582
- -webkit-box-shadow: -10px 0 0 $blue;
583
- box-shadow: -10px 0 0 $blue;
594
+ -webkit-box-shadow: -10px 0 0 var(--color-blue_medium);
595
+ box-shadow: -10px 0 0 var(--color-blue_medium);
584
596
  }
585
597
  .flatpickr-day.selected.startRange.endRange,
586
598
  .flatpickr-day.startRange.startRange.endRange,
@@ -589,8 +601,12 @@ span.flatpickr-weekday {
589
601
  }
590
602
  .flatpickr-day.inRange {
591
603
  border-radius: 0;
592
- -webkit-box-shadow: -5px 0 0 $medium-gray, 5px 0 0 $medium-gray;
593
- box-shadow: -5px 0 0 $medium-gray, 5px 0 0 $medium-gray;
604
+ -webkit-box-shadow:
605
+ -5px 0 0 var(--color-grey_light),
606
+ 5px 0 0 var(--color-grey_light);
607
+ box-shadow:
608
+ -5px 0 0 var(--color-grey_light),
609
+ 5px 0 0 var(--color-grey_light);
594
610
  }
595
611
  .flatpickr-day.flatpickr-disabled,
596
612
  .flatpickr-day.flatpickr-disabled:hover,
@@ -611,8 +627,12 @@ span.flatpickr-weekday {
611
627
  }
612
628
  .flatpickr-day.week.selected {
613
629
  border-radius: 0;
614
- -webkit-box-shadow: -5px 0 0 $blue, 5px 0 0 $blue;
615
- box-shadow: -5px 0 0 $blue, 5px 0 0 $blue;
630
+ -webkit-box-shadow:
631
+ -5px 0 0 var(--color-blue_medium),
632
+ 5px 0 0 var(--color-blue_medium);
633
+ box-shadow:
634
+ -5px 0 0 var(--color-blue_medium),
635
+ 5px 0 0 var(--color-blue_medium);
616
636
  }
617
637
  .flatpickr-day.hidden {
618
638
  visibility: hidden;
@@ -625,8 +645,8 @@ span.flatpickr-weekday {
625
645
  }
626
646
  .flatpickr-weekwrapper .flatpickr-weeks {
627
647
  padding: 0 12px;
628
- -webkit-box-shadow: 1px 0 0 $medium-gray;
629
- box-shadow: 1px 0 0 $medium-gray;
648
+ -webkit-box-shadow: 1px 0 0 var(--color-grey_light);
649
+ box-shadow: 1px 0 0 var(--color-grey_light);
630
650
  }
631
651
  .flatpickr-weekwrapper .flatpickr-weekday {
632
652
  float: none;
@@ -758,7 +778,7 @@ span.flatpickr-weekday {
758
778
  .flatpickr-time .flatpickr-am-pm:hover,
759
779
  .flatpickr-time input:focus,
760
780
  .flatpickr-time .flatpickr-am-pm:focus {
761
- background: $light-gray;
781
+ background: var(--color-grey_very_light);
762
782
  }
763
783
  .flatpickr-input[readonly] {
764
784
  cursor: pointer;
@@ -18,10 +18,12 @@ input[type="checkbox"] {
18
18
  transition: $transition-duration;
19
19
 
20
20
  &:focus {
21
- @include default-focus-style($box-shadow: (
22
- inset 0 0 0 1px $focus-color,
23
- 0 0 0 1px $focus-color
24
- ));
21
+ @include default-focus-style(
22
+ $box-shadow: (
23
+ inset 0 0 0 1px $focus-color,
24
+ 0 0 0 1px $focus-color
25
+ )
26
+ );
25
27
  }
26
28
  }
27
29
 
@@ -32,7 +34,7 @@ input[type="search"] {
32
34
  input[type="search"]::-webkit-search-decoration,
33
35
  input[type="search"]::-webkit-search-cancel-button,
34
36
  input[type="search"]::-webkit-search-results-button,
35
- input[type="search"]::-webkit-search-results-decoration {
37
+ input[type="search"]::-webkit-search-results-decoration {
36
38
  -webkit-appearance: none;
37
39
  }
38
40
 
@@ -68,7 +70,7 @@ fieldset {
68
70
  }
69
71
 
70
72
  .page-publication-date-fields {
71
- padding-bottom: $default-padding;
73
+ padding-bottom: var(--spacing-1);
72
74
  @include clearfix;
73
75
 
74
76
  &.hidden {
@@ -1,7 +1,7 @@
1
1
  form {
2
2
  #main_content > &.alchemy {
3
3
  max-width: 600px;
4
- padding: 2 * $default-padding;
4
+ padding: var(--spacing-2);
5
5
  margin: 2em auto;
6
6
  }
7
7
 
@@ -26,7 +26,7 @@ form {
26
26
  }
27
27
 
28
28
  .input {
29
- padding: $default-padding 0;
29
+ padding: var(--spacing-1) 0;
30
30
  @include clearfix;
31
31
 
32
32
  input[type="url"],
@@ -61,7 +61,7 @@ form {
61
61
 
62
62
  select,
63
63
  .select2-container {
64
- margin: 4px 0;
64
+ margin: var(--spacing-1) 0;
65
65
  }
66
66
 
67
67
  &.boolean {
@@ -71,18 +71,18 @@ form {
71
71
  width: 100%;
72
72
  text-align: left;
73
73
  padding: 0;
74
- margin: $default-margin 0;
74
+ margin: var(--spacing-1) 0;
75
75
  float: none;
76
- margin-left: 4px;
76
+ margin-left: var(--spacing-1);
77
77
  }
78
78
  }
79
79
 
80
80
  label.checkbox {
81
81
  display: block;
82
- margin: $default-margin 0;
82
+ margin: var(--spacing-1) 0;
83
83
 
84
84
  input {
85
- margin-right: $default-margin;
85
+ margin-right: var(--spacing-1);
86
86
  margin-left: 1px;
87
87
  }
88
88
  }
@@ -109,7 +109,7 @@ form {
109
109
  .select2-choices {
110
110
  border-color: $error_border_color;
111
111
  color: $error_text_color;
112
- margin-bottom: 4px;
112
+ margin-bottom: var(--spacing-1);
113
113
 
114
114
  input[type="text"] {
115
115
  box-shadow: none;
@@ -121,6 +121,10 @@ form {
121
121
  }
122
122
  }
123
123
 
124
+ input:invalid:focus {
125
+ @extend %field-with-error;
126
+ }
127
+
124
128
  small.error {
125
129
  color: $error_text_color;
126
130
  display: block;
@@ -134,7 +138,7 @@ form {
134
138
  .input-addon {
135
139
  width: $form-field-addon-width;
136
140
  position: absolute;
137
- bottom: 2 * $default-padding;
141
+ bottom: var(--spacing-2);
138
142
  --select-background-image: none;
139
143
 
140
144
  select {
@@ -177,11 +181,11 @@ form {
177
181
  .inline-input {
178
182
  align-items: center;
179
183
  display: flex;
180
- margin: 0 -1 * $default-margin;
184
+ margin: 0 calc(-1 * var(--spacing-1));
181
185
 
182
186
  .left-column,
183
187
  .right-column {
184
- padding: 0 $default-padding;
188
+ padding: 0 var(--spacing-1);
185
189
  }
186
190
 
187
191
  .left-column {
@@ -205,7 +209,7 @@ form {
205
209
 
206
210
  .control_group {
207
211
  width: $form-right-width;
208
- padding-top: $default-margin;
212
+ padding-top: var(--spacing-1);
209
213
  float: right;
210
214
  }
211
215
 
@@ -218,18 +222,18 @@ form {
218
222
  margin-left: $form-left-width;
219
223
 
220
224
  a[href] {
221
- color: $very-dark-gray;
225
+ color: var(--color-grey_very_dark);
222
226
  text-decoration: underline;
223
227
  }
224
228
  }
225
229
 
226
230
  .submit {
227
- padding: $default-padding 0;
231
+ padding: var(--spacing-1) 0;
228
232
  text-align: right;
229
233
  }
230
234
 
231
235
  .input-column {
232
- padding: 0 $default-padding;
236
+ padding: 0 var(--spacing-1);
233
237
 
234
238
  input[type] {
235
239
  float: none;
@@ -254,5 +258,5 @@ form {
254
258
 
255
259
  .input-column > label {
256
260
  display: block;
257
- margin-top: $default-margin + 1;
261
+ margin-top: calc(var(--spacing-1) + 1);
258
262
  }
@@ -62,8 +62,8 @@ div#overlay_text_box {
62
62
 
63
63
  .page_status_and_name {
64
64
  align-items: center;
65
- padding: $default-padding 2 * $default-padding;
66
- background-color: $medium-gray;
65
+ padding: var(--spacing-1) var(--spacing-2);
66
+ background-color: var(--color-grey_light);
67
67
  text-shadow: $text-shadow-light;
68
68
  @extend .disable-user-select;
69
69
  @extend .locked_page;
@@ -72,7 +72,7 @@ div#overlay_text_box {
72
72
  }
73
73
 
74
74
  .page_name {
75
- margin-right: $default-margin;
75
+ margin-right: var(--spacing-1);
76
76
  white-space: nowrap;
77
77
  overflow: hidden;
78
78
  text-overflow: ellipsis;
@@ -81,15 +81,15 @@ div#overlay_text_box {
81
81
 
82
82
  #main_content {
83
83
  padding-top: 84px;
84
- padding-right: 8px;
85
- padding-bottom: 8px;
86
- padding-left: $collapsed-main-menu-width + 8px;
84
+ padding-right: var(--spacing-2);
85
+ padding-bottom: var(--spacing-2);
86
+ padding-left: calc(#{$collapsed-main-menu-width} + var(--spacing-2));
87
87
  z-index: 0;
88
88
  width: 100%;
89
89
  height: 100%;
90
90
 
91
91
  @media screen and (min-width: $large-screen-break-point) {
92
- padding-left: $main-menu-width + 8px;
92
+ padding-left: calc(#{$main-menu-width} + var(--spacing-2));
93
93
  }
94
94
  }
95
95
 
@@ -97,7 +97,7 @@ div#overlay_text_box {
97
97
  display: flex;
98
98
  align-items: center;
99
99
  height: $header-height;
100
- padding-left: 2 * $default-padding;
100
+ padding-left: var(--spacing-2);
101
101
  margin-left: auto;
102
102
  border-bottom: $default-border;
103
103
  background-color: $header-background;
@@ -110,6 +110,6 @@ div#overlay_text_box {
110
110
  }
111
111
 
112
112
  .current-user-name {
113
- padding-right: 2 * $default-padding;
113
+ padding-right: var(--spacing-2);
114
114
  }
115
115
  }
@@ -24,11 +24,11 @@ $image-overlay-transition-easing: ease-in;
24
24
  }
25
25
 
26
26
  .zoomed-picture-background {
27
- padding-right: 2 * $default-padding;
27
+ padding-right: var(--spacing-2);
28
28
  }
29
29
 
30
30
  .alchemy-image-overlay-close {
31
- right: $picture-overlay-handle-width + 2 * $default-padding;
31
+ right: $picture-overlay-handle-width + var(--spacing-2);
32
32
  }
33
33
 
34
34
  .next-picture {
@@ -50,7 +50,7 @@ $image-overlay-transition-easing: ease-in;
50
50
  height: 100%;
51
51
 
52
52
  > .message {
53
- margin: 2 * $default-margin;
53
+ margin: var(--spacing-2);
54
54
  max-width: 400px;
55
55
  }
56
56
  }
@@ -62,21 +62,22 @@ $image-overlay-transition-easing: ease-in;
62
62
  align-items: center;
63
63
  width: 32px;
64
64
  height: 32px;
65
- top: 2 * $default-padding;
66
- right: 2 * $default-padding + $picture-overlay-handle-width +
67
- $image-overlay-form-width;
65
+ top: var(--spacing-2);
66
+ right: calc(
67
+ var(--spacing-2) + #{$picture-overlay-handle-width} + #{$image-overlay-form-width}
68
+ );
68
69
  cursor: pointer;
69
70
  transition: right $image-overlay-transition-duration
70
71
  $image-overlay-transition-easing;
71
72
 
72
73
  .icon {
73
74
  font-size: 2em;
74
- color: $medium-gray;
75
- text-shadow: 0 0 $default-padding $text-color;
75
+ color: var(--color-grey_light);
76
+ text-shadow: 0 0 4px var(--color-text);
76
77
  transition: color $image-overlay-transition-duration linear;
77
78
 
78
79
  &:hover {
79
- color: $white;
80
+ color: var(--color-white);
80
81
  }
81
82
  }
82
83
  }
@@ -85,8 +86,8 @@ $image-overlay-transition-easing: ease-in;
85
86
  .picture-overlay-handle {
86
87
  position: absolute;
87
88
  top: 0;
88
- background-color: $medium-gray;
89
- box-shadow: -2px 0 $default-padding -2px $text-color;
89
+ background-color: var(--color-grey_light);
90
+ box-shadow: -2px 0 4px -2px var(--color-text);
90
91
  transition: right $image-overlay-transition-duration
91
92
  $image-overlay-transition-easing;
92
93
  }
@@ -95,8 +96,7 @@ $image-overlay-transition-easing: ease-in;
95
96
  right: 0;
96
97
  width: $image-overlay-form-width;
97
98
  height: 100%;
98
- padding: 2 * $default-padding 4 * $default-padding 2 * $default-padding
99
- $default-padding;
99
+ padding: var(--spacing-2) var(--spacing-4) var(--spacing-2) var(--spacing-1);
100
100
  overflow: auto;
101
101
 
102
102
  form .control-label,
@@ -128,24 +128,25 @@ $image-overlay-transition-easing: ease-in;
128
128
  left: 50%;
129
129
  transform: translate(-50%, -50%);
130
130
  font-size: 1.2em;
131
- color: $text-color;
131
+ color: var(--color-icon);
132
132
  transition: transform $image-overlay-transition-duration
133
133
  $image-overlay-transition-easing;
134
134
  }
135
135
 
136
136
  &:hover {
137
- background-color: darken($medium-gray, 5%);
137
+ background-color: hsl(0deg, 0%, 89%);
138
138
  }
139
139
  }
140
140
 
141
141
  .zoomed-picture-background {
142
142
  width: 100%;
143
143
  height: 100%;
144
- padding-top: 2 * $default-padding;
145
- padding-right: $image-overlay-form-width + 2 * $default-padding +
146
- $picture-overlay-handle-width;
147
- padding-bottom: 2 * $default-padding;
148
- padding-left: 2 * $default-padding;
144
+ padding-top: var(--spacing-2);
145
+ padding-right: calc(
146
+ #{$image-overlay-form-width} + var(--spacing-2) + #{$picture-overlay-handle-width}
147
+ );
148
+ padding-bottom: var(--spacing-2);
149
+ padding-left: var(--spacing-2);
149
150
  margin: 0 auto;
150
151
  text-align: center;
151
152
  cursor: pointer;
@@ -165,7 +166,7 @@ $image-overlay-transition-easing: ease-in;
165
166
  height: auto;
166
167
  max-width: 100%;
167
168
  max-height: 100%;
168
- box-shadow: 0 0 2 * $default-margin $text-color;
169
+ box-shadow: 0 0 var(--spacing-2) var(--color-text);
169
170
  background: $thumbnail-background;
170
171
  vertical-align: middle;
171
172
  cursor: default;
@@ -174,10 +175,10 @@ $image-overlay-transition-easing: ease-in;
174
175
 
175
176
  .picture-file-infos,
176
177
  .picture-usage-info {
177
- padding: 2 * $default-padding 0;
178
+ padding: var(--spacing-2) 0;
178
179
 
179
180
  .message {
180
- margin: 2 * $default-padding 0;
181
+ margin: var(--spacing-2) 0;
181
182
  }
182
183
  }
183
184
 
@@ -185,8 +186,8 @@ $image-overlay-transition-easing: ease-in;
185
186
  h3 {
186
187
  display: flex;
187
188
  align-items: center;
188
- gap: $default-padding;
189
- padding: 4px 8px 0;
189
+ gap: var(--spacing-1);
190
+ padding: var(--spacing-1) var(--spacing-2) 0;
190
191
  margin: 0;
191
192
  }
192
193
 
@@ -196,14 +197,14 @@ $image-overlay-transition-easing: ease-in;
196
197
  }
197
198
 
198
199
  .list {
199
- margin: 2 * $default-margin 0;
200
+ margin: var(--spacing-2) 0;
200
201
 
201
202
  li {
202
203
  display: flex;
203
204
  align-items: center;
204
- gap: $default-padding;
205
- padding: 2 * $default-padding;
206
- border-radius: $default-border-radius;
205
+ gap: var(--spacing-1);
206
+ padding: var(--spacing-2);
207
+ border-radius: var(--border-radius_medium);
207
208
  white-space: normal;
208
209
  margin-bottom: 1em;
209
210
  }
@@ -237,8 +238,8 @@ $image-overlay-transition-easing: ease-in;
237
238
  .icon {
238
239
  width: 32px;
239
240
  height: 32px;
240
- fill: $white;
241
- filter: drop-shadow(0 0 1px $very-dark-gray);
241
+ fill: var(--color-white);
242
+ filter: drop-shadow(0 0 1px var(--color-grey_very_dark));
242
243
  }
243
244
 
244
245
  &:hover {
@@ -252,8 +253,8 @@ $image-overlay-transition-easing: ease-in;
252
253
 
253
254
  .icon {
254
255
  --icon-size: 4em;
255
- fill: $medium-gray;
256
- filter: drop-shadow(0 0 $default-padding $text-color);
256
+ fill: var(--color-grey_light);
257
+ filter: drop-shadow(0 0 4px var(--color-icon));
257
258
  transition: all $image-overlay-transition-duration linear;
258
259
  vertical-align: middle;
259
260
  }
@@ -0,0 +1,3 @@
1
+ .label {
2
+ @include label-base($margin: 0, $padding: 0 var(--spacing-2));
3
+ }
@@ -4,15 +4,15 @@ alchemy-list-filter {
4
4
 
5
5
  > alchemy-icon {
6
6
  position: absolute;
7
- left: 8px;
7
+ left: var(--spacing-2);
8
8
  top: 50%;
9
9
  transform: translateY(-50%);
10
10
  }
11
11
 
12
12
  .js_filter_field {
13
13
  width: 100%;
14
- padding-left: 28px;
15
- padding-right: 24px;
14
+ padding-left: var(--spacing-7);
15
+ padding-right: var(--spacing-6);
16
16
  margin: 0;
17
17
 
18
18
  form .input & {
@@ -25,7 +25,7 @@ alchemy-list-filter {
25
25
  display: flex;
26
26
  visibility: hidden;
27
27
  position: absolute;
28
- right: 4px;
28
+ right: var(--spacing-1);
29
29
  top: 50%;
30
30
  transform: translateY(-50%);
31
31
  width: 16px;
@@ -1,5 +1,6 @@
1
- ul, ol {
2
- padding-left: 16px;
1
+ ul,
2
+ ol {
3
+ padding-left: var(--spacing-4);
3
4
  margin-top: 1em;
4
5
  margin-bottom: 1em;
5
6
 
@@ -22,11 +23,11 @@ ul.list {
22
23
  overflow: hidden;
23
24
  background-color: transparent;
24
25
  font-weight: bold;
25
- padding: $default-padding 2*$default-padding;
26
- margin-bottom: 2*$default-margin;
26
+ padding: var(--spacing-1) var(--spacing-2);
27
+ margin-bottom: var(--spacing-2);
27
28
 
28
29
  .list-secondary {
29
- color: $text-color;
30
+ color: var(--color-text);
30
31
  }
31
32
  }
32
33
 
@@ -52,10 +53,11 @@ ul.list {
52
53
  max-width: 65%;
53
54
  }
54
55
 
55
- .list-secondary, .right {
56
+ .list-secondary,
57
+ .right {
56
58
  float: right;
57
59
  text-align: left;
58
60
  width: 30%;
59
- color: $dark-gray;
61
+ color: var(--color-grey_dark);
60
62
  }
61
63
  }