alchemy_cms 8.0.0.a → 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 (182) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/app/assets/builds/alchemy/admin/page-select.css +1 -1
  4. data/app/assets/builds/alchemy/admin.css +1 -1
  5. data/app/assets/builds/alchemy/dark-theme.css +1 -0
  6. data/app/assets/builds/alchemy/light-theme.css +1 -0
  7. data/app/assets/builds/alchemy/theme.css +1 -0
  8. data/app/assets/builds/alchemy/welcome.css +1 -1
  9. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -1
  10. data/app/assets/builds/tinymce/skins/content/alchemy-dark/content.min.css +1 -0
  11. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -1
  12. data/app/assets/builds/tinymce/skins/ui/alchemy-dark/content.min.css +1 -0
  13. data/app/assets/builds/tinymce/skins/ui/alchemy-dark/skin.min.css +1 -0
  14. data/app/assets/images/alchemy/element_icons/default.svg +1 -0
  15. data/app/assets/images/alchemy/icons-sprite.svg +1 -1
  16. data/app/components/alchemy/admin/element_select.rb +39 -0
  17. data/app/components/alchemy/ingredients/datetime_view.rb +4 -2
  18. data/app/controllers/alchemy/admin/attachments_controller.rb +2 -0
  19. data/app/controllers/alchemy/admin/elements_controller.rb +2 -0
  20. data/app/controllers/alchemy/admin/pages_controller.rb +2 -0
  21. data/app/controllers/alchemy/admin/pictures_controller.rb +19 -33
  22. data/app/controllers/alchemy/pages_controller.rb +19 -2
  23. data/app/controllers/concerns/alchemy/admin/resource_filter.rb +1 -0
  24. data/app/helpers/alchemy/admin/attachments_helper.rb +5 -5
  25. data/app/helpers/alchemy/pages_helper.rb +1 -1
  26. data/app/javascript/alchemy_admin/components/auto_submit.js +20 -0
  27. data/app/javascript/alchemy_admin/components/datepicker.js +8 -5
  28. data/app/javascript/alchemy_admin/components/element_editor/delete_element_button.js +3 -2
  29. data/app/javascript/alchemy_admin/components/element_editor.js +25 -15
  30. data/app/javascript/alchemy_admin/components/element_select.js +43 -0
  31. data/app/javascript/alchemy_admin/components/index.js +5 -0
  32. data/app/javascript/alchemy_admin/components/link_buttons.js +6 -2
  33. data/app/javascript/alchemy_admin/components/remote_select.js +5 -1
  34. data/app/javascript/alchemy_admin/components/tinymce.js +93 -16
  35. data/app/javascript/alchemy_admin/dialog.js +1 -1
  36. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  37. data/app/javascript/alchemy_admin/image_loader.js +4 -2
  38. data/app/javascript/alchemy_admin/picture_editors.js +7 -4
  39. data/app/javascript/alchemy_admin/picture_selector.js +4 -4
  40. data/app/jobs/alchemy/delete_picture_job.rb +12 -0
  41. data/app/models/alchemy/attachment.rb +2 -9
  42. data/app/models/alchemy/element.rb +1 -0
  43. data/app/models/alchemy/element_definition.rb +30 -0
  44. data/app/models/alchemy/ingredient.rb +1 -1
  45. data/app/models/alchemy/language.rb +2 -7
  46. data/app/models/alchemy/page/page_naming.rb +4 -11
  47. data/app/models/alchemy/page/page_natures.rb +16 -11
  48. data/app/models/alchemy/page.rb +1 -6
  49. data/app/models/alchemy/page_definition.rb +1 -1
  50. data/app/models/alchemy/picture.rb +6 -17
  51. data/app/models/alchemy/site/layout.rb +1 -0
  52. data/app/models/alchemy/site.rb +1 -6
  53. data/app/models/alchemy/storage_adapter/dragonfly/picture_url.rb +7 -2
  54. data/app/models/alchemy/storage_adapter/dragonfly.rb +24 -2
  55. data/app/models/concerns/alchemy/relatable_resource.rb +28 -0
  56. data/app/stylesheets/alchemy/_custom-properties.scss +162 -0
  57. data/app/stylesheets/alchemy/_mixins.scss +12 -24
  58. data/app/stylesheets/alchemy/_themes.scss +540 -0
  59. data/app/stylesheets/alchemy/admin/archive.scss +28 -8
  60. data/app/stylesheets/alchemy/admin/attachments.scss +10 -33
  61. data/app/stylesheets/alchemy/admin/base.scss +4 -1
  62. data/app/stylesheets/alchemy/admin/buttons.scss +7 -32
  63. data/app/stylesheets/alchemy/admin/dialogs.scss +17 -7
  64. data/app/stylesheets/alchemy/admin/element-select.scss +11 -0
  65. data/app/stylesheets/alchemy/admin/elements.scss +94 -33
  66. data/app/stylesheets/alchemy/admin/filters.scss +8 -9
  67. data/app/stylesheets/alchemy/admin/flatpickr.scss +12 -27
  68. data/app/stylesheets/alchemy/admin/form_fields.scss +0 -15
  69. data/app/stylesheets/alchemy/admin/forms.scss +3 -8
  70. data/app/stylesheets/alchemy/admin/frame.scss +5 -7
  71. data/app/stylesheets/alchemy/admin/icons.scss +0 -9
  72. data/app/stylesheets/alchemy/admin/image_library.scss +13 -55
  73. data/app/stylesheets/alchemy/admin/navigation.scss +1 -11
  74. data/app/stylesheets/alchemy/admin/node-select.scss +1 -10
  75. data/app/stylesheets/alchemy/admin/notices.scss +5 -4
  76. data/app/stylesheets/alchemy/admin/page-select.scss +16 -0
  77. data/app/stylesheets/alchemy/admin/pagination.scss +1 -8
  78. data/app/stylesheets/alchemy/admin/preview_window.scss +12 -1
  79. data/app/stylesheets/alchemy/admin/resource_info.scss +106 -3
  80. data/app/stylesheets/alchemy/admin/search.scss +1 -1
  81. data/app/stylesheets/alchemy/admin/selects.scss +58 -31
  82. data/app/stylesheets/alchemy/admin/shoelace.scss +32 -62
  83. data/app/stylesheets/alchemy/admin/sitemap.scss +1 -1
  84. data/app/stylesheets/alchemy/admin/tables.scss +3 -3
  85. data/app/stylesheets/alchemy/admin/tags.scss +18 -35
  86. data/app/stylesheets/alchemy/admin/toolbar.scss +0 -6
  87. data/app/stylesheets/alchemy/admin/typography.scss +2 -5
  88. data/app/stylesheets/alchemy/admin.scss +1 -1
  89. data/app/stylesheets/alchemy/dark-theme.scss +5 -0
  90. data/app/stylesheets/alchemy/light-theme.scss +6 -0
  91. data/app/stylesheets/alchemy/theme.scss +13 -0
  92. data/app/stylesheets/tinymce/skins/content/alchemy/content.scss +8 -8
  93. data/app/stylesheets/tinymce/skins/content/alchemy-dark/content.scss +70 -0
  94. data/app/stylesheets/tinymce/skins/ui/alchemy/skin.scss +28 -43
  95. data/app/stylesheets/tinymce/skins/ui/alchemy-dark/content.scss +1 -0
  96. data/app/stylesheets/tinymce/skins/ui/alchemy-dark/skin.scss +3784 -0
  97. data/app/views/alchemy/admin/attachments/_files_list.html.erb +20 -10
  98. data/app/views/alchemy/admin/attachments/assign.js.erb +4 -3
  99. data/app/views/alchemy/admin/attachments/show.html.erb +55 -43
  100. data/app/views/alchemy/admin/crop.html.erb +1 -1
  101. data/app/views/alchemy/admin/elements/_form.html.erb +9 -9
  102. data/app/views/alchemy/admin/elements/_header.html.erb +4 -1
  103. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +1 -1
  104. data/app/views/alchemy/admin/pages/info.html.erb +1 -1
  105. data/app/views/alchemy/admin/partials/_search_form.html.erb +1 -0
  106. data/app/views/alchemy/admin/pictures/_archive.html.erb +12 -22
  107. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -6
  108. data/app/views/alchemy/admin/pictures/_form.html.erb +1 -1
  109. data/app/views/alchemy/admin/pictures/_infos.html.erb +21 -52
  110. data/app/views/alchemy/admin/pictures/_library_sidebar.html.erb +7 -0
  111. data/app/views/alchemy/admin/pictures/_picture.html.erb +14 -20
  112. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +20 -16
  113. data/app/views/alchemy/admin/pictures/_sorting_select.html.erb +13 -0
  114. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  115. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +1 -6
  116. data/app/views/alchemy/admin/pictures/index.html.erb +3 -12
  117. data/app/views/alchemy/admin/pictures/show.html.erb +10 -5
  118. data/app/views/alchemy/admin/resources/_filter_bar.html.erb +5 -15
  119. data/app/views/alchemy/admin/resources/_resource_usage_info.html.erb +36 -0
  120. data/app/views/alchemy/admin/styleguide/index.html.erb +118 -66
  121. data/app/views/alchemy/base/error_notice.html.erb +1 -1
  122. data/app/views/alchemy/ingredients/_page_editor.html.erb +0 -1
  123. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +0 -1
  124. data/app/views/alchemy/ingredients/_select_editor.html.erb +1 -2
  125. data/app/views/layouts/alchemy/admin.html.erb +22 -17
  126. data/config/locales/alchemy.en.yml +26 -8
  127. data/db/migrate/20250905140323_add_created_at_index_to_pictures_and_attachments.rb +14 -0
  128. data/lib/alchemy/configurations/format_matchers.rb +1 -1
  129. data/lib/alchemy/configurations/main.rb +7 -0
  130. data/lib/alchemy/configurations/page_cache.rb +19 -0
  131. data/lib/alchemy/engine.rb +16 -7
  132. data/lib/alchemy/install/tasks.rb +0 -12
  133. data/lib/alchemy/name_conversions.rb +6 -0
  134. data/lib/alchemy/tasks/tidy.rb +18 -0
  135. data/lib/alchemy/test_support/factories/picture_factory.rb +1 -0
  136. data/lib/alchemy/test_support/relatable_resource_examples.rb +58 -0
  137. data/lib/alchemy/tinymce.rb +0 -1
  138. data/lib/alchemy/version.rb +1 -1
  139. data/lib/alchemy.rb +2 -11
  140. data/lib/generators/alchemy/install/install_generator.rb +21 -10
  141. data/lib/generators/alchemy/install/templates/alchemy.rb.tt +10 -6
  142. data/lib/tasks/alchemy/tidy.rake +6 -0
  143. data/lib/tasks/alchemy/usage.rake +2 -0
  144. data/vendor/assets/stylesheets/tinymce/skins/content/dark/content.min.css +1 -0
  145. data/vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css +1 -0
  146. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide/skin.min.css +1 -0
  147. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/content.min.css +1 -0
  148. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/skin.min.css +1 -0
  149. data/vendor/javascript/clipboard.min.js +1 -1
  150. data/vendor/javascript/cropperjs.min.js +1 -1
  151. data/vendor/javascript/handlebars.min.js +3 -3
  152. data/vendor/javascript/jquery.min.js +1 -1
  153. data/vendor/javascript/select2.min.js +3 -3
  154. data/vendor/javascript/shoelace.min.js +92 -76
  155. data/vendor/javascript/sortable.min.js +2 -2
  156. data/vendor/javascript/tinymce.min.js +1 -1
  157. data/vendor/javascript/ungap-custom-elements.min.js +2 -2
  158. metadata +46 -32
  159. data/CHANGELOG.md +0 -2100
  160. data/CODE_OF_CONDUCT.md +0 -13
  161. data/CONTRIBUTING.md +0 -73
  162. data/Gemfile +0 -78
  163. data/Rakefile +0 -102
  164. data/SECURITY.md +0 -13
  165. data/alchemy_cms.gemspec +0 -97
  166. data/app/assets/builds/alchemy/custom-properties.css +0 -1
  167. data/app/helpers/alchemy/admin/elements_helper.rb +0 -25
  168. data/app/stylesheets/alchemy/custom-properties.css +0 -244
  169. data/bin/importmap +0 -4
  170. data/bin/rails +0 -9
  171. data/bin/rspec +0 -3
  172. data/bin/setup +0 -30
  173. data/bin/start +0 -17
  174. data/bun.lockb +0 -0
  175. data/bundles/remixicon.mjs +0 -153
  176. data/bundles/shoelace.js +0 -12
  177. data/bundles/tinymce.js +0 -22
  178. data/eslint.config.js +0 -18
  179. data/lib/alchemy/upgrader/.keep +0 -0
  180. data/lib/alchemy/upgrader/tasks/.keep +0 -0
  181. data/rollup.config.mjs +0 -108
  182. data/vitest.config.js +0 -21
@@ -1,11 +1,6 @@
1
1
  @use "base";
2
2
  @use "navigation";
3
3
 
4
- :root {
5
- --header-height: 29px;
6
- --header-border-bottom: var(--border-default);
7
- }
8
-
9
4
  alchemy-overlay {
10
5
  visibility: hidden;
11
6
  position: fixed;
@@ -50,7 +45,10 @@ div#overlay_text_box {
50
45
  bottom: 0;
51
46
  left: 0;
52
47
  width: 100%;
53
- margin-bottom: 0;
48
+
49
+ .main_navi_entry {
50
+ margin-bottom: 0;
51
+ }
54
52
 
55
53
  &:not(:hover) {
56
54
  background-color: var(--main-menu-bg-color);
@@ -71,7 +69,7 @@ div#overlay_text_box {
71
69
  .page_status_and_name {
72
70
  align-items: center;
73
71
  padding: var(--spacing-1) var(--spacing-2);
74
- background-color: var(--color-grey_light);
72
+ background-color: var(--toolbar-bg-color);
75
73
  text-shadow: var(--text-shadow-light);
76
74
  @extend .disable-user-select;
77
75
  @extend .locked_page;
@@ -1,12 +1,3 @@
1
- :root {
2
- --icon-size-xs: 0.75rem;
3
- --icon-size-sm: 0.875rem;
4
- --icon-size-1x: 1rem;
5
- --icon-size-md: 1.3rem;
6
- --icon-size-xl: 1.5rem;
7
- --icon-size-xxl: 1.6rem;
8
- }
9
-
10
1
  alchemy-icon {
11
2
  display: inline-flex;
12
3
  align-items: center;
@@ -2,7 +2,7 @@
2
2
 
3
3
  .alchemy-image-overlay {
4
4
  &.open {
5
- background-color: rgba(0, 0, 0, 0.6);
5
+ background-color: var(--dialog-overlay-color);
6
6
  }
7
7
  }
8
8
 
@@ -95,8 +95,8 @@
95
95
  .picture-overlay-handle {
96
96
  position: absolute;
97
97
  top: 0;
98
- background-color: var(--color-grey_light);
99
- box-shadow: -2px 0 4px -2px var(--text-color);
98
+ background-color: var(--dialog-background-color);
99
+ box-shadow: var(--image-overlay-box-shadow);
100
100
  transition: right var(--image-overlay-transition-duration)
101
101
  var(--image-overlay-transition-easing);
102
102
  }
@@ -108,8 +108,7 @@
108
108
  padding: var(--spacing-2) var(--spacing-4) var(--spacing-2) var(--spacing-1);
109
109
  overflow: auto;
110
110
 
111
- form .control-label,
112
- .resource_info .value label {
111
+ form .control-label {
113
112
  text-align: left;
114
113
  }
115
114
 
@@ -119,8 +118,7 @@
119
118
 
120
119
  form .input .select2-container,
121
120
  form .input input[type="text"],
122
- form .input textarea,
123
- .resource_info .value p {
121
+ form .input textarea {
124
122
  width: 100%;
125
123
  }
126
124
  }
@@ -130,6 +128,7 @@
130
128
  height: 100%;
131
129
  right: var(--image-overlay-form-width);
132
130
  cursor: pointer;
131
+ transition-property: right, background-color;
133
132
 
134
133
  .icon {
135
134
  position: absolute;
@@ -143,7 +142,7 @@
143
142
  }
144
143
 
145
144
  &:hover {
146
- background-color: hsl(0deg, 0%, 89%);
145
+ background-color: var(--image-overlay-hover-bg-color);
147
146
  }
148
147
  }
149
148
 
@@ -176,53 +175,16 @@
176
175
  height: auto;
177
176
  max-width: 100%;
178
177
  max-height: 100%;
179
- box-shadow: 0 0 var(--spacing-2) var(--text-color);
178
+ border: 1px solid var(--border-color);
179
+ box-shadow: var(--dialog-box-shadow);
180
180
  background: var(--thumbnail-background);
181
181
  vertical-align: middle;
182
182
  cursor: default;
183
183
  }
184
184
  }
185
185
 
186
- .picture-file-infos,
187
- .picture-usage-info {
188
- padding: var(--spacing-2) 0;
189
-
190
- .message {
191
- margin: var(--spacing-2) 0;
192
- }
193
- }
194
-
195
- #pictures_page_list {
196
- h3 {
197
- display: flex;
198
- align-items: center;
199
- gap: var(--spacing-1);
200
- padding: var(--spacing-1) var(--spacing-2) 0;
201
- margin: 0;
202
- }
203
-
204
- ul {
205
- padding-left: 0;
206
- list-style-type: none;
207
- }
208
-
209
- .list {
210
- margin: var(--spacing-2) 0;
211
-
212
- li {
213
- display: flex;
214
- align-items: center;
215
- gap: var(--spacing-1);
216
- padding: var(--spacing-2);
217
- border-radius: var(--border-radius_medium);
218
- white-space: normal;
219
- margin-bottom: 1em;
220
- }
221
- }
222
-
223
- p {
224
- margin: 0;
225
- }
186
+ .picture-form {
187
+ margin-bottom: var(--spacing-3);
226
188
  }
227
189
 
228
190
  .picture-overlay-navigation {
@@ -244,20 +206,16 @@
244
206
  align-items: center;
245
207
  text-decoration: none;
246
208
  transition: background-color var(--image-overlay-transition-duration) linear;
209
+ color: var(--color-white);
247
210
 
248
- .icon {
211
+ alchemy-icon svg {
249
212
  width: 32px;
250
213
  height: 32px;
251
- fill: var(--color-white);
252
214
  filter: drop-shadow(0 0 1px var(--color-grey_very_dark));
253
215
  }
254
216
 
255
217
  &:hover {
256
218
  background-color: rgba(0, 0, 0, 0.3);
257
-
258
- .icon {
259
- transition: fill var(--image-overlay-transition-duration) linear;
260
- }
261
219
  }
262
220
  }
263
221
 
@@ -2,11 +2,6 @@
2
2
  @use "../mixins";
3
3
  @use "../variables" as vars;
4
4
 
5
- :root {
6
- --top-menu-height: 75px;
7
- --main-menu-entry-max-width: 110px;
8
- }
9
-
10
5
  #top_menu {
11
6
  position: fixed;
12
7
  top: 0;
@@ -191,10 +186,6 @@
191
186
  }
192
187
  }
193
188
 
194
- :root {
195
- --main-menu-width: 150px;
196
- }
197
-
198
189
  .collapsed-menu {
199
190
  --main-menu-width: 48px;
200
191
  }
@@ -258,7 +249,6 @@
258
249
  display: flex;
259
250
  align-items: center;
260
251
  flex-wrap: nowrap;
261
- color: #444;
262
252
  border-right: var(--border-default);
263
253
  border-bottom: var(--border-default);
264
254
 
@@ -276,7 +266,7 @@
276
266
 
277
267
  > a {
278
268
  display: flex;
279
- align-items: end;
269
+ align-items: center;
280
270
  cursor: pointer;
281
271
  padding: var(--spacing-1) var(--spacing-2);
282
272
 
@@ -34,19 +34,10 @@
34
34
  .node-select--node-url {
35
35
  margin-left: auto;
36
36
  padding: var(--spacing-1) var(--spacing-2);
37
- color: var(--color-grey_dark);
37
+ color: var(--text-color);
38
38
  font-size: var(--font-size_small);
39
39
 
40
40
  .select2-highlighted & {
41
41
  color: var(--color-white);
42
42
  }
43
43
  }
44
-
45
- // The container of the rendered node is slightly larger than other a line of
46
- // text, as it would be for the Alchemy::Ingredients::Page. Reducing the padding here from 0.6em
47
- // to 0.4em centers the content nicely.
48
- .ingredient-editor.node {
49
- .select2-container.alchemy_selectbox .select2-choice {
50
- padding: 0.4em 0.75em;
51
- }
52
- }
@@ -27,9 +27,9 @@ alchemy-message {
27
27
  }
28
28
 
29
29
  &[type="hint"] {
30
- background-color: var(--hint-background-notice-color);
31
- border-color: var(--hint-background-notice-color);
32
- color: var(--hint-text-notice-color);
30
+ background-color: var(--hint-background-color);
31
+ border-color: var(--hint-background-color);
32
+ color: var(--hint-text-color);
33
33
  }
34
34
 
35
35
  &[type="info"] {
@@ -74,8 +74,9 @@ alchemy-message {
74
74
  margin-top: 0;
75
75
  }
76
76
 
77
- a {
77
+ a[href] {
78
78
  text-decoration: underline;
79
+ color: var(--hint-text-link-color);
79
80
 
80
81
  &:hover {
81
82
  color: inherit;
@@ -79,3 +79,19 @@
79
79
  padding: var(--size-2) 0 var(--size-2) var(--size-3);
80
80
  font-size: var(--small-font-size);
81
81
  }
82
+
83
+ @media (prefers-color-scheme: dark) {
84
+ .page-select--page {
85
+ --grey: var(--a-dark-grey, hsl(200deg, 5%, 17.5%));
86
+ --color: var(--select-text-color, hsl(200deg, 5%, 70%));
87
+ --highlight-color: var(--select-hover-text-color, hsl(0deg, 0%, 100%));
88
+ }
89
+
90
+ .page-select--page-urlname {
91
+ color: var(--a-lighter-grey, hsl(200deg, 5%, 70%));
92
+ }
93
+
94
+ .page-select--language-code {
95
+ --highlight-bg-color: var(--bg-color);
96
+ }
97
+ }
@@ -1,12 +1,5 @@
1
1
  @use "../variables" as vars;
2
2
 
3
- :root {
4
- --pagination-height: 52px;
5
- --pagination-disabled-text-color: #c0c0c0;
6
- --pagination-active-bg-color: var(--color-blue_dark);
7
- --pagination-active-text-color: var(--color-white);
8
- }
9
-
10
3
  .pagination-wrapper {
11
4
  display: flex;
12
5
  position: fixed;
@@ -18,7 +11,7 @@
18
11
  height: var(--pagination-height);
19
12
  padding-left: var(--main-menu-width);
20
13
  text-align: left;
21
- border-top: var(--border-default);
14
+ border-top: 1px solid var(--pagination-border-color, --border-color);
22
15
  z-index: 10;
23
16
  }
24
17
 
@@ -20,7 +20,12 @@
20
20
  max-width: calc(100vw - var(--main-menu-width));
21
21
  height: calc(100vh - var(--top-menu-height));
22
22
  border: 0 none;
23
- background: #fff;
23
+
24
+ // This seems weird, but the correct way to create iframes that handle light/dark themes.
25
+ // https://fvsch.com/transparent-iframes
26
+ background-color: white;
27
+ color-scheme: light;
28
+
24
29
  border-right: var(--border-default);
25
30
  transition-duration: var(--transition-duration);
26
31
  transition-timing-function: var(--transition-duration);
@@ -33,3 +38,9 @@
33
38
  );
34
39
  }
35
40
  }
41
+
42
+ @media (prefers-color-scheme: dark) {
43
+ #alchemy_preview_window {
44
+ color-scheme: dark;
45
+ }
46
+ }
@@ -1,6 +1,38 @@
1
1
  @use "base";
2
2
  @use "../mixins";
3
3
 
4
+ .resource-details {
5
+ display: flex;
6
+ gap: var(--spacing-5);
7
+ --form-left-column-width: 30%;
8
+ --form-right-column-width: 70%;
9
+
10
+ > .resource-preview {
11
+ flex-grow: 0;
12
+ width: 50%;
13
+
14
+ &:empty {
15
+ display: none;
16
+ }
17
+ }
18
+
19
+ aside {
20
+ flex-grow: 1;
21
+ }
22
+
23
+ .resource_info {
24
+ margin-bottom: var(--spacing-4);
25
+ }
26
+ }
27
+
28
+ .resource-preview {
29
+ iframe {
30
+ width: 100%;
31
+ background-color: white;
32
+ min-height: 565px;
33
+ }
34
+ }
35
+
4
36
  .resource_info {
5
37
  .value {
6
38
  position: relative;
@@ -11,7 +43,14 @@
11
43
  }
12
44
 
13
45
  > p {
14
- @include mixins.form-value-display;
46
+ float: right;
47
+ width: var(--form-right-column-width);
48
+ margin: var(--form-field-margin);
49
+ padding: var(--spacing-1) var(--spacing-2);
50
+ line-height: 21px;
51
+ min-height: var(--form-field-height);
52
+ background: var(--form-field-background-color);
53
+ border-radius: var(--border-radius_medium);
15
54
  @include mixins.truncate(var(--form-right-column-width));
16
55
  }
17
56
 
@@ -31,15 +70,79 @@
31
70
  right: 0;
32
71
  top: var(--spacing-1);
33
72
  height: var(--form-field-height);
34
- background-color: var(--color-grey_light);
73
+ background-color: var(--form-field-addon-background-color);
35
74
  padding: 0 var(--spacing-2);
36
75
  transition: background-color 0.3s;
37
76
  @extend .right-rounded-border;
38
77
 
39
78
  &:hover {
40
79
  cursor: pointer;
41
- background-color: hsl(0deg, 0%, 84%);
80
+ background-color: var(--icon-button-hover-bg-color);
42
81
  text-decoration: none;
43
82
  }
44
83
  }
84
+
85
+ &.file-infos .value {
86
+ label {
87
+ text-align: left;
88
+ width: 30%;
89
+ }
90
+
91
+ p {
92
+ max-width: 70%;
93
+ width: 70%;
94
+ }
95
+ }
96
+ }
97
+
98
+ .file-infos,
99
+ .resource-usage-info {
100
+ margin-top: var(--spacing-4);
101
+
102
+ alchemy-message {
103
+ margin: var(--spacing-5) 0;
104
+ }
105
+
106
+ h3 {
107
+ font-size: 1rem;
108
+ }
109
+ }
110
+
111
+ .resource_page_list {
112
+ padding-left: 0;
113
+ list-style-type: none;
114
+
115
+ h3 {
116
+ display: flex;
117
+ align-items: center;
118
+ gap: var(--spacing-1);
119
+ padding: var(--spacing-1) var(--spacing-2) 0;
120
+ margin: 0;
121
+ }
122
+
123
+ .list {
124
+ margin: var(--spacing-2) 0;
125
+
126
+ li {
127
+ display: flex;
128
+ align-items: center;
129
+ gap: var(--spacing-1);
130
+ padding: var(--spacing-2);
131
+ border-radius: var(--border-radius_medium);
132
+ white-space: normal;
133
+ margin-bottom: 1em;
134
+ }
135
+ }
136
+
137
+ p {
138
+ margin: 0;
139
+ }
140
+
141
+ a {
142
+ color: var(--text-color);
143
+
144
+ &:hover {
145
+ color: var(--text-link-color);
146
+ }
147
+ }
45
148
  }
@@ -59,7 +59,7 @@
59
59
  width: 0;
60
60
  height: 100%;
61
61
  border: none;
62
- background-color: hsla(0deg, 0%, 100%, 0.75);
62
+ background-color: var(--search-field-background-color);
63
63
  transition:
64
64
  width var(--transition-duration) ease-in-out,
65
65
  background-color var(--transition-duration) linear;
@@ -3,20 +3,15 @@
3
3
  @use "../extends";
4
4
  @use "../mixins";
5
5
 
6
- :root {
7
- --select-medium-width: 90px;
8
- --select-large-width: 120px;
9
- }
10
-
11
6
  select {
12
7
  @include mixins.button-defaults(
13
- $background-color: var(--form-field-background-color),
14
- $hover-color: var(--form-field-background-color),
15
- $hover-border-color: var(--button-hover-border-color),
8
+ $background-color: var(--select-background-color),
9
+ $hover-color: var(--select-background-color),
10
+ $hover-border-color: var(--select-hover-border-color),
16
11
  $padding: var(--spacing-1) 26px var(--spacing-1) var(--spacing-2),
17
- $border: 1px solid var(--button-border-color),
12
+ $border: 1px solid var(--select-border-color),
18
13
  $box-shadow: none,
19
- $color: var(--form-field-text-color),
14
+ $color: var(--select-text-color),
20
15
  $margin: 0
21
16
  );
22
17
 
@@ -26,10 +21,7 @@ select {
26
21
  width: auto;
27
22
  font-weight: normal;
28
23
  vertical-align: middle;
29
- background-image: var(
30
- --select-background-image,
31
- url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='hsla(224deg, 23%, 26%, 0.75)' viewBox='0 0 24 24'%3E%3Cpath d='M11.9997 13.1714L16.9495 8.22168L18.3637 9.63589L11.9997 15.9999L5.63574 9.63589L7.04996 8.22168L11.9997 13.1714Z'%3E%3C/path%3E%3C/svg%3E")
32
- );
24
+ background-image: var(--select-background-image);
33
25
  background-position: right 0.75em center;
34
26
  background-repeat: no-repeat;
35
27
  background-size: 1em;
@@ -49,18 +41,21 @@ select {
49
41
  }
50
42
 
51
43
  .select2-container {
44
+ border-radius: var(--border-radius_medium);
45
+
52
46
  &.alchemy_selectbox {
53
47
  .select2-choice {
54
48
  width: 100%;
55
- height: var(--form-field-height);
49
+
56
50
  @include mixins.button-defaults(
57
- $background-color: var(--form-field-background-color),
58
- $hover-color: var(--form-field-background-color),
59
- $hover-border-color: var(--button-hover-border-color),
51
+ $background-color: var(--select-background-color),
52
+ $height: var(--form-field-height),
53
+ $hover-color: var(--select-background-color),
54
+ $hover-border-color: var(--select-hover-border-color),
60
55
  $padding: var(--form-field-padding),
61
- $border: 1px solid var(--button-border-color),
56
+ $border: 1px solid var(--select-border-color),
62
57
  $box-shadow: none,
63
- $color: var(--form-field-text-color),
58
+ $color: var(--select-text-color),
64
59
  $margin: 0
65
60
  );
66
61
 
@@ -95,8 +90,7 @@ select {
95
90
  content: "";
96
91
  width: 1rem;
97
92
  height: 1rem;
98
- background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="hsla(224deg, 23%, 26%, 0.75)"><path d="M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z"></path></svg>')
99
- no-repeat;
93
+ background: var(--select-background-image) no-repeat;
100
94
  }
101
95
  }
102
96
  }
@@ -130,16 +124,17 @@ select {
130
124
  .select2-choice,
131
125
  .select2-choice:hover {
132
126
  background-image: none;
133
- background-color: var(--color-grey_very_light);
127
+ background-color: var(--select-disabled-background-color);
134
128
  box-shadow: none;
135
- border-color: var(border-inset-color);
129
+ border-color: var(--select-disabled-border-color);
136
130
  cursor: not-allowed;
131
+ color: var(--select-disabled-text-color);
137
132
 
138
133
  .select2-arrow {
139
- border-color: var(border-inset-color);
134
+ border-color: var(--select-disabled-border-color);
140
135
 
141
136
  b {
142
- color: var(border-inset-color);
137
+ color: var(--text-color-muted);
143
138
  }
144
139
  }
145
140
  }
@@ -160,8 +155,7 @@ select {
160
155
  display: inline-flex;
161
156
  width: 12px;
162
157
  height: 12px;
163
- background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="hsla(224deg, 23%, 26%, 0.75)"><path d="M11.9997 10.5865L16.9495 5.63672L18.3637 7.05093L13.4139 12.0007L18.3637 16.9504L16.9495 18.3646L11.9997 13.4149L7.04996 18.3646L5.63574 16.9504L10.5855 12.0007L5.63574 7.05093L7.04996 5.63672L11.9997 10.5865Z"></path></svg>')
164
- no-repeat;
158
+ background: var(--select-close-icon) no-repeat;
165
159
  }
166
160
 
167
161
  &:hover {
@@ -194,6 +188,7 @@ select {
194
188
  border: 0 none;
195
189
  box-shadow: none;
196
190
  color: var(--text-color);
191
+ background-color: var(--tag-background-color);
197
192
  }
198
193
 
199
194
  .select2-search-field {
@@ -203,18 +198,43 @@ select {
203
198
  color: var(--form-field-text-color);
204
199
  padding: 3px 6px;
205
200
  margin: 0;
201
+
202
+ &.select2-active {
203
+ background: var(--form-field-background-color) !important;
204
+ }
206
205
  }
207
206
  }
208
207
  }
209
208
  }
209
+
210
+ .select2-default {
211
+ color: var(--text-color-muted) !important;
212
+ }
210
213
  }
211
214
 
212
215
  .select2-drop {
216
+ background: var(--select-dropdown-background-color);
217
+ box-shadow: var(--select-dropdown-box-shadow);
218
+ color: var(--select-dropdown-text-color, var(--text-color));
219
+ margin-top: 1px;
220
+
221
+ &.select2-drop-above {
222
+ margin-top: -1px;
223
+
224
+ &.select2-drop-active {
225
+ border-top-color: var(--select-dropdown-border-color);
226
+ }
227
+ }
228
+
213
229
  .select2-search {
214
230
  margin: var(--spacing-1) 0;
215
231
 
216
232
  .select2-input {
217
233
  width: inherit;
234
+
235
+ &.select2-active {
236
+ background: var(--form-field-background-color) !important;
237
+ }
218
238
  }
219
239
  }
220
240
 
@@ -239,8 +259,8 @@ select {
239
259
  padding: var(--spacing-1) 0;
240
260
 
241
261
  &.select2-highlighted {
242
- background: var(--select-hover-bg-color);
243
- color: var(--select-hover-text-color);
262
+ background: var(--select-hover-bg-color, var(--color-blue_dark));
263
+ color: var(--select-hover-text-color, var(--color-white));
244
264
  }
245
265
 
246
266
  &.select2-result-with-children {
@@ -252,10 +272,15 @@ select {
252
272
  .select2-searching {
253
273
  padding: var(--spacing-2);
254
274
  margin: 0;
275
+ background: var(--select-dropdown-background-color);
255
276
  }
256
277
 
257
278
  .select2-result-label {
258
279
  padding: var(--spacing-1) var(--spacing-2);
280
+
281
+ em {
282
+ text-decoration: underline;
283
+ }
259
284
  }
260
285
 
261
286
  ul.select2-result-sub > li .select2-result-label {
@@ -265,13 +290,15 @@ select {
265
290
 
266
291
  &.select2-drop-active {
267
292
  border-radius: var(--border-radius_medium);
268
- border: var(--border-default);
293
+ border: 1px solid var(--select-dropdown-border-color);
269
294
  }
270
295
 
271
296
  .select2-more-results,
272
297
  .select2-ajax-error {
273
298
  padding: var(--spacing-2);
274
299
  margin-bottom: 0;
300
+ background: var(--notice-error-background-color);
301
+ color: var(--notice-error-text-color);
275
302
  }
276
303
  }
277
304