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
@@ -21,12 +21,7 @@ module Alchemy
21
21
  validates_uniqueness_of :host, case_sensitive: false
22
22
 
23
23
  # associations
24
- has_many :languages
25
-
26
- before_destroy if: -> { languages.any? } do
27
- errors.add(:languages, :still_present)
28
- throw(:abort)
29
- end
24
+ has_many :languages, dependent: :restrict_with_error
30
25
 
31
26
  scope :published, -> { where(public: true) }
32
27
 
@@ -26,8 +26,9 @@ module Alchemy
26
26
  #
27
27
  # @return [String]
28
28
  #
29
- def call(options = {})
30
- @variant = PictureVariant.new(picture, options.slice(*TRANSFORMATION_OPTIONS))
29
+ def call(variant_options = {})
30
+ set_variant(variant_options)
31
+
31
32
  params = {
32
33
  basename: picture.name,
33
34
  ext: variant.render_format,
@@ -41,6 +42,10 @@ module Alchemy
41
42
 
42
43
  private
43
44
 
45
+ def set_variant(options = {})
46
+ @variant = PictureVariant.new(picture, options.slice(*TRANSFORMATION_OPTIONS))
47
+ end
48
+
44
49
  def processible_image?
45
50
  variant.image.is_a?(::Dragonfly::Job)
46
51
  end
@@ -15,6 +15,10 @@ module Alchemy
15
15
 
16
16
  has_many :thumbs, class_name: "Alchemy::PictureThumb", dependent: :destroy
17
17
 
18
+ before_save do
19
+ self.image_file_name = sanitized_filename(image_file_name)
20
+ end
21
+
18
22
  # Create important thumbnails upfront
19
23
  after_create -> { PictureThumb.generate_thumbs!(self) },
20
24
  if: :has_convertible_format?
@@ -30,6 +34,10 @@ module Alchemy
30
34
  write_attribute(:file_mime_type, file.mime_type)
31
35
  }
32
36
  end
37
+
38
+ before_save do
39
+ self.file_name = sanitized_filename(file_name)
40
+ end
33
41
  end
34
42
  end
35
43
  end
@@ -38,16 +46,30 @@ module Alchemy
38
46
 
39
47
  CONVERTIBLE_FILE_FORMATS = %w[gif jpg jpeg png webp].freeze
40
48
 
49
+ # Allows to set a custom Attachment Url class
50
+ def attachment_url_class=(klass)
51
+ @_attachment_url_class = klass
52
+ end
53
+
54
+ # Returns the class used to generate attachment urls
55
+ # @return [Class] - defaults to Alchemy::StorageAdapter::Dragonfly::AttachmentUrl
41
56
  def attachment_url_class
42
- AttachmentUrl
57
+ @_attachment_url_class ||= AttachmentUrl
43
58
  end
44
59
 
45
60
  def preprocessor_class
46
61
  Preprocessor
47
62
  end
48
63
 
64
+ # Allows to set a custom Picture Url class
65
+ def picture_url_class=(klass)
66
+ @_picture_url_class = klass
67
+ end
68
+
69
+ # Returns the class used to generate picture urls
70
+ # @return [Class] - defaults to Alchemy::StorageAdapter::Dragonfly::PictureUrl
49
71
  def picture_url_class
50
- PictureUrl
72
+ @_picture_url_class ||= PictureUrl
51
73
  end
52
74
 
53
75
  def file_formats(class_name, scope:)
@@ -0,0 +1,28 @@
1
+ module Alchemy
2
+ module RelatableResource
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ scope :deletable, -> do
7
+ where(
8
+ "#{table_name}.id NOT IN (SELECT related_object_id FROM alchemy_ingredients WHERE related_object_id IS NOT NULL AND related_object_type = ?)",
9
+ name
10
+ )
11
+ end
12
+
13
+ has_many :related_ingredients,
14
+ class_name: "Alchemy::Ingredient",
15
+ foreign_key: "related_object_id",
16
+ as: :related_object
17
+
18
+ has_many :elements, through: :related_ingredients
19
+ has_many :pages, through: :elements
20
+ end
21
+
22
+ # Returns true if object is not assigned to any ingredient.
23
+ #
24
+ def deletable?
25
+ related_ingredients.none?
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,162 @@
1
+ :root {
2
+ /* Dark Colors */
3
+ --a-lightest-grey: hsl(200deg, 5%, 90%);
4
+ --a-lighter-grey: hsl(200deg, 5%, 70%);
5
+ --a-light-grey: hsl(200deg, 5%, 35%);
6
+ --a-grey: hsl(200deg, 5%, 22.5%);
7
+ --a-dark-grey: hsl(200deg, 5%, 17.5%);
8
+ --a-darker-grey: hsl(200deg, 5%, 15%);
9
+ --a-darkest-grey: hsl(200deg, 5%, 12.5%);
10
+
11
+ /* Light Colors */
12
+ --color-blue_very_light: hsl(203deg, 32%, 97%);
13
+ --color-blue_light: hsl(203deg, 32%, 85%);
14
+ --color-blue_medium: hsl(212deg, 52%, 36%);
15
+ --color-blue_dark: hsl(212deg, 52%, 26%);
16
+
17
+ --color-green_very_light: hsl(88deg, 47%, 88%);
18
+ --color-green_light: hsl(127deg, 25%, 69%);
19
+ --color-green_medium: hsl(127deg, 25%, 48%);
20
+ --color-green_dark: hsl(128deg, 32%, 26%);
21
+
22
+ --color-yellow_light: hsl(60deg, 81%, 92%);
23
+ --color-yellow_medium: hsl(56deg, 68%, 85%);
24
+ --color-yellow_dark: hsl(56deg, 53%, 29%);
25
+
26
+ --color-orange_medium: hsl(42deg, 100%, 74%);
27
+ --color-orange_dark: hsl(28deg, 77%, 68%);
28
+ --color-orange_very_dark: hsl(28deg, 77%, 48%);
29
+
30
+ --color-red_very_light: hsl(0deg, 47%, 88%);
31
+ --color-red_light: hsl(0deg, 25%, 69%);
32
+ --color-red_medium: hsl(0deg, 51%, 42%);
33
+ --color-red_dark: hsl(0deg, 51%, 25%);
34
+
35
+ --color-grey_very_light: hsl(0deg, 0%, 97%);
36
+ --color-grey_light: hsl(0deg, 0%, 94%);
37
+ --color-grey_medium: hsl(0deg, 0%, 78%);
38
+ --color-grey_dark: hsl(0deg, 0%, 40%);
39
+ --color-grey_very_dark: hsl(0deg, 0%, 20%);
40
+
41
+ --color-white: hsl(0deg, 0%, 100%);
42
+
43
+ /* Sizes */
44
+ --spacing-0: 2px;
45
+ --spacing-1: 4px;
46
+ --spacing-2: 8px;
47
+ --spacing-3: 12px;
48
+ --spacing-4: 16px;
49
+ --spacing-5: 20px;
50
+ --spacing-6: 24px;
51
+ --spacing-7: 28px;
52
+ --spacing-8: 32px;
53
+
54
+ /* Font Families */
55
+ --font-mono:
56
+ Menlo, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal,
57
+ monospace;
58
+ --font-sans:
59
+ "Open Sans", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana,
60
+ Tahoma, sans-serif;
61
+
62
+ /* Font Size - at the moment only in Pixel, because the base font size is 12px */
63
+ --font-size_small: 10px; /* 0.875rem */
64
+ --font-size_medium: 12px; /* 1rem */
65
+ --font-size_large: 16px; /* 1.25 rem */
66
+
67
+ --font-weight_normal: 500;
68
+ --font-weight_bold: 700;
69
+
70
+ --font-default: var(--font-size_medium) var(--font-sans);
71
+
72
+ /* Borders */
73
+ --border-radius_medium: 3px;
74
+ --border-width_small: 1px;
75
+ --border-style: solid;
76
+ --border-default: var(--border-width_small) var(--border-style)
77
+ var(--border-color);
78
+
79
+ /* Transitions */
80
+ --transition-duration: 250ms;
81
+ --transition-easing: linear;
82
+
83
+ /* Button */
84
+ --button-border-radius: var(--border-radius_medium);
85
+ --button-border-style: var(--border-style);
86
+ --button-border-width: var(--border-width_small);
87
+ --button-border: var(--button-border-width) var(--button-border-style)
88
+ var(--button-border-color);
89
+ --button-font-size: var(--font-size_medium);
90
+ --button-font-weight: var(--font-weight_bold);
91
+ --button-height: 30px;
92
+ --button-line-height: var(--form-field-line-height);
93
+ --button-margin: var(--form-field-margin);
94
+ --button-padding: var(--spacing-1) var(--spacing-5);
95
+ --button-small-padding: 0.4em 0.8em;
96
+
97
+ /* Date Picker */
98
+ --datepicker-font-size: var(--font-size_medium);
99
+
100
+ /* Dialog */
101
+ --dialog-header-height: 36px;
102
+ --dialog-header-font-size: var(--font-size_medium);
103
+ --dialog-header-padding: 0 var(--spacing-2);
104
+ --dialog-transition-duration: 150ms;
105
+
106
+ /* Elements */
107
+ --elements-window-width: 0px;
108
+ --elements-window-min-width: 400px;
109
+
110
+ /* Form */
111
+ --form-left-column-width: 35%;
112
+ --form-right-column-width: 65%;
113
+
114
+ /* Form Field */
115
+ --form-field-margin: var(--spacing-1) 0;
116
+ --form-field-height: 31px;
117
+ --form-field-addon-width: 30px;
118
+ --form-field-border-width: var(--border-width_small);
119
+ --form-field-border-style: var(--border-style);
120
+ --form-field-padding: var(--spacing-1) var(--spacing-2);
121
+ --form-field-font-size: var(--font-size_medium);
122
+ --form-field-line-height: 1.25;
123
+
124
+ /* Header */
125
+ --header-height: 29px;
126
+ --header-border-bottom: var(--border-default);
127
+
128
+ /* Icon Button */
129
+ --icon-button-height: 30px;
130
+ --icon-button-width: 30px;
131
+ --icon-button-medium-height: 26px;
132
+ --icon-button-medium-width: 26px;
133
+ --icon-button-small-height: 15px;
134
+ --icon-button-small-width: 15px;
135
+
136
+ /* Icons */
137
+ --icon-size-xs: 0.75rem;
138
+ --icon-size-sm: 0.875rem;
139
+ --icon-size-1x: 1rem;
140
+ --icon-size-md: 1.3rem;
141
+ --icon-size-xl: 1.5rem;
142
+ --icon-size-xxl: 1.6rem;
143
+
144
+ /* Navigation */
145
+ --main-menu-width: 150px;
146
+ --top-menu-height: 75px;
147
+ --main-menu-entry-max-width: 110px;
148
+
149
+ /* Pagination */
150
+ --pagination-height: 52px;
151
+
152
+ /* Select */
153
+ --select-medium-width: 90px;
154
+ --select-large-width: 120px;
155
+
156
+ /* Sidebar */
157
+ --sidebar-width: 232px;
158
+
159
+ /* Toolbar */
160
+ --toolbar-height: 46px;
161
+ --toolbar-padding: var(--spacing-2) var(--spacing-1);
162
+ }
@@ -21,6 +21,7 @@
21
21
  $border-radius: var(--button-border-radius),
22
22
  $border: var(--button-border),
23
23
  $box-shadow: var(--button-box-shadow),
24
+ $height: var(--button-height),
24
25
  $padding: var(--button-padding),
25
26
  $margin: var(--button-margin),
26
27
  $color: var(--button-text-color),
@@ -34,7 +35,7 @@
34
35
  font-family: var(--font-sans);
35
36
  font-size: var(--button-font-size);
36
37
  font-weight: var(--button-font-weight);
37
- height: var(--button-height);
38
+ height: $height;
38
39
  padding: $padding;
39
40
  cursor: pointer;
40
41
  border-radius: $border-radius;
@@ -66,14 +67,9 @@
66
67
  }
67
68
 
68
69
  &.disabled,
69
- &[disabled],
70
- &.disabled:active,
71
- &[disabled]:active,
72
- &.disabled:focus,
73
- &[disabled]:focus,
74
- &.disabled:hover,
75
- &[disabled]:hover {
76
- background-color: hsla(0deg, 0%, 100%, 0.5);
70
+ &[disabled] {
71
+ background-color: var(--button-disabled-bg-color);
72
+ border-color: var(--button-border-color);
77
73
  cursor: not-allowed;
78
74
  box-shadow: none;
79
75
  outline: none;
@@ -95,28 +91,20 @@
95
91
  float: left;
96
92
  text-align: right;
97
93
  font-size: var(--font-size_medium);
98
- }
99
-
100
- @mixin form-value-display {
101
- float: right;
102
- width: var(--form-right-column-width);
103
- margin: var(--form-field-margin);
104
- padding: var(--spacing-1) var(--spacing-2);
105
- line-height: 21px;
106
- min-height: var(--form-field-height);
107
- background: white;
108
- border-radius: var(--border-radius_medium);
94
+ color: var(--form-field-label-color);
109
95
  }
110
96
 
111
97
  @mixin form-hint(
112
- $background-color: var(--color-yellow_light),
113
- $border-color: var(--color-grey_light)
98
+ $background-color: var(--hint-background-color),
99
+ $border-color: var(--hint-border-color),
100
+ $color: var(--hint-text-color)
114
101
  ) {
115
102
  font-size: var(--font-size_small);
116
103
  line-height: 1.5em;
117
104
  padding: var(--spacing-1);
118
105
  background-color: $background-color;
119
106
  border: 1px solid $border-color;
107
+ color: $color;
120
108
  display: block;
121
109
  clear: both;
122
110
  border-radius: var(--border-radius_medium);
@@ -159,7 +147,7 @@
159
147
  vertical-align: middle;
160
148
  padding: $padding;
161
149
  margin: $margin;
162
- background-color: var(--color-grey_light);
150
+ background-color: var(--tag-background-color);
163
151
  overflow: hidden;
164
152
  position: relative;
165
153
  border-radius: var(--border-radius_medium);
@@ -175,7 +163,7 @@
175
163
  align-self: start;
176
164
  flex-shrink: 0;
177
165
  content: "";
178
- background-image: 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="M10.9042 2.10025L20.8037 3.51446L22.2179 13.414L13.0255 22.6063C12.635 22.9969 12.0019 22.9969 11.6113 22.6063L1.71184 12.7069C1.32131 12.3163 1.32131 11.6832 1.71184 11.2926L10.9042 2.10025ZM11.6113 4.22157L3.83316 11.9997L12.3184 20.485L20.0966 12.7069L19.036 5.28223L11.6113 4.22157ZM13.7327 10.5855C12.9516 9.80448 12.9516 8.53815 13.7327 7.7571C14.5137 6.97606 15.78 6.97606 16.5611 7.7571C17.3421 8.53815 17.3421 9.80448 16.5611 10.5855C15.78 11.3666 14.5137 11.3666 13.7327 10.5855Z"></path></svg>');
166
+ background-image: var(--tag-background-image);
179
167
  width: 12px;
180
168
  height: 12px;
181
169
  margin-top: var(--spacing-0);