pages_core 3.14.0 → 3.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/app/assets/builds/fonts/6569749d.ttf +0 -0
  4. data/app/assets/builds/fonts/7b7db107.woff2 +0 -0
  5. data/app/assets/builds/fonts/921961e9.woff2 +0 -0
  6. data/app/assets/builds/fonts/ee32bc60.ttf +0 -0
  7. data/app/assets/builds/pages_core/admin-dist.js +19 -8
  8. data/app/assets/builds/pages_core/admin-dist.js.map +4 -4
  9. data/app/assets/builds/pages_core/admin.css +699 -394
  10. data/app/assets/builds/pages_core/mailer.css +99 -0
  11. data/app/assets/fonts/Inter-Black.woff2 +0 -0
  12. data/app/assets/fonts/Inter-BlackItalic.woff2 +0 -0
  13. data/app/assets/fonts/Inter-Bold.woff2 +0 -0
  14. data/app/assets/fonts/Inter-BoldItalic.woff2 +0 -0
  15. data/app/assets/fonts/Inter-ExtraBold.woff2 +0 -0
  16. data/app/assets/fonts/Inter-ExtraBoldItalic.woff2 +0 -0
  17. data/app/assets/fonts/Inter-ExtraLight.woff2 +0 -0
  18. data/app/assets/fonts/Inter-ExtraLightItalic.woff2 +0 -0
  19. data/app/assets/fonts/Inter-Italic.woff2 +0 -0
  20. data/app/assets/fonts/Inter-Light.woff2 +0 -0
  21. data/app/assets/fonts/Inter-LightItalic.woff2 +0 -0
  22. data/app/assets/fonts/Inter-Medium.woff2 +0 -0
  23. data/app/assets/fonts/Inter-MediumItalic.woff2 +0 -0
  24. data/app/assets/fonts/Inter-Regular.woff2 +0 -0
  25. data/app/assets/fonts/Inter-SemiBold.woff2 +0 -0
  26. data/app/assets/fonts/Inter-SemiBoldItalic.woff2 +0 -0
  27. data/app/assets/fonts/Inter-Thin.woff2 +0 -0
  28. data/app/assets/fonts/Inter-ThinItalic.woff2 +0 -0
  29. data/app/assets/fonts/InterDisplay-Black.woff2 +0 -0
  30. data/app/assets/fonts/InterDisplay-BlackItalic.woff2 +0 -0
  31. data/app/assets/fonts/InterDisplay-Bold.woff2 +0 -0
  32. data/app/assets/fonts/InterDisplay-BoldItalic.woff2 +0 -0
  33. data/app/assets/fonts/InterDisplay-ExtraBold.woff2 +0 -0
  34. data/app/assets/fonts/InterDisplay-ExtraBoldItalic.woff2 +0 -0
  35. data/app/assets/fonts/InterDisplay-ExtraLight.woff2 +0 -0
  36. data/app/assets/fonts/InterDisplay-ExtraLightItalic.woff2 +0 -0
  37. data/app/assets/fonts/InterDisplay-Italic.woff2 +0 -0
  38. data/app/assets/fonts/InterDisplay-Light.woff2 +0 -0
  39. data/app/assets/fonts/InterDisplay-LightItalic.woff2 +0 -0
  40. data/app/assets/fonts/InterDisplay-Medium.woff2 +0 -0
  41. data/app/assets/fonts/InterDisplay-MediumItalic.woff2 +0 -0
  42. data/app/assets/fonts/InterDisplay-Regular.woff2 +0 -0
  43. data/app/assets/fonts/InterDisplay-SemiBold.woff2 +0 -0
  44. data/app/assets/fonts/InterDisplay-SemiBoldItalic.woff2 +0 -0
  45. data/app/assets/fonts/InterDisplay-Thin.woff2 +0 -0
  46. data/app/assets/fonts/InterDisplay-ThinItalic.woff2 +0 -0
  47. data/app/assets/fonts/InterVariable-Italic.woff2 +0 -0
  48. data/app/assets/fonts/InterVariable.woff2 +0 -0
  49. data/app/assets/stylesheets/pages_core/admin/components/archive.css +1 -1
  50. data/app/assets/stylesheets/pages_core/admin/components/attachments.css +22 -34
  51. data/app/assets/stylesheets/pages_core/admin/components/base.css +1 -68
  52. data/app/assets/stylesheets/pages_core/admin/components/forms.css +109 -48
  53. data/app/assets/stylesheets/pages_core/admin/components/header.css +56 -58
  54. data/app/assets/stylesheets/pages_core/admin/components/image_editor.css +35 -24
  55. data/app/assets/stylesheets/pages_core/admin/components/image_grid.css +28 -27
  56. data/app/assets/stylesheets/pages_core/admin/components/image_uploader.css +5 -5
  57. data/app/assets/stylesheets/pages_core/admin/components/layout.css +7 -1
  58. data/app/assets/stylesheets/pages_core/admin/components/list_table.css +24 -15
  59. data/app/assets/stylesheets/pages_core/admin/components/page_tree.css +63 -104
  60. data/app/assets/stylesheets/pages_core/admin/components/pagination.css +12 -13
  61. data/app/assets/stylesheets/pages_core/admin/components/search.css +1 -16
  62. data/app/assets/stylesheets/pages_core/admin/components/sidebar.css +5 -11
  63. data/app/assets/stylesheets/pages_core/admin/components/tag_editor.css +22 -36
  64. data/app/assets/stylesheets/pages_core/admin/components/toast.css +1 -2
  65. data/app/assets/stylesheets/pages_core/admin/components/toolbar.css +10 -10
  66. data/app/assets/stylesheets/pages_core/admin/components/totp.css +1 -1
  67. data/app/assets/stylesheets/pages_core/admin/controllers/pages.css +37 -51
  68. data/app/assets/stylesheets/pages_core/admin/global/fonts.css +271 -0
  69. data/app/assets/stylesheets/pages_core/admin/global/typography.css +109 -0
  70. data/app/assets/stylesheets/pages_core/admin/vars.css +1 -3
  71. data/app/assets/stylesheets/pages_core/{admin.postcss.css → admin.css} +1 -0
  72. data/app/assets/stylesheets/pages_core/mailer.css +90 -0
  73. data/app/controllers/admin/account_recoveries_controller.rb +2 -2
  74. data/app/controllers/admin/pages_controller.rb +22 -42
  75. data/app/controllers/concerns/pages_core/error_reporting.rb +1 -1
  76. data/app/controllers/concerns/pages_core/page_parameters.rb +29 -0
  77. data/app/controllers/concerns/pages_core/policies_helper.rb +1 -1
  78. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +20 -20
  79. data/app/controllers/pages_core/admin_controller.rb +0 -2
  80. data/app/controllers/pages_core/frontend/pages_controller.rb +2 -6
  81. data/app/formatters/pages_core/html_formatter.rb +2 -4
  82. data/app/helpers/admin/menu_helper.rb +5 -4
  83. data/app/helpers/admin/pages_helper.rb +1 -21
  84. data/app/helpers/pages_core/admin/admin_helper.rb +2 -3
  85. data/app/helpers/pages_core/admin/content_tabs_helper.rb +1 -2
  86. data/app/helpers/pages_core/admin/labelled_field_helper.rb +1 -1
  87. data/app/helpers/pages_core/attachments_helper.rb +1 -1
  88. data/app/helpers/pages_core/frontend_helper.rb +1 -1
  89. data/app/helpers/pages_core/images_helper.rb +10 -8
  90. data/app/helpers/pages_core/labelled_form_builder.rb +2 -7
  91. data/app/helpers/pages_core/page_path_helper.rb +1 -1
  92. data/app/javascript/components/Attachments/Attachment.tsx +20 -18
  93. data/app/javascript/components/Attachments/AttachmentEditor.tsx +11 -9
  94. data/app/javascript/components/{Attachments.jsx → Attachments/List.tsx} +58 -63
  95. data/app/javascript/components/Attachments/useAttachments.ts +15 -0
  96. data/app/javascript/components/Attachments.tsx +14 -0
  97. data/app/javascript/components/DateRangeSelect.tsx +105 -0
  98. data/app/javascript/components/DateTimeSelect.tsx +136 -0
  99. data/app/javascript/components/EditableImage.tsx +11 -9
  100. data/app/javascript/components/FileUploadButton.tsx +7 -7
  101. data/app/javascript/components/ImageCropper/FocalPoint.tsx +9 -12
  102. data/app/javascript/components/ImageCropper/Image.tsx +10 -8
  103. data/app/javascript/components/ImageCropper/Toolbar.tsx +11 -12
  104. data/app/javascript/components/ImageCropper/useCrop.ts +24 -53
  105. data/app/javascript/components/ImageCropper.tsx +10 -15
  106. data/app/javascript/components/ImageEditor/Form.tsx +12 -8
  107. data/app/javascript/components/ImageEditor.tsx +12 -7
  108. data/app/javascript/components/ImageGrid/DragElement.tsx +9 -12
  109. data/app/javascript/components/{ImageGrid.jsx → ImageGrid/Grid.tsx} +62 -71
  110. data/app/javascript/components/ImageGrid/GridImage.tsx +22 -23
  111. data/app/javascript/components/ImageGrid/Placeholder.tsx +2 -2
  112. data/app/javascript/components/ImageGrid/useImageGrid.ts +26 -0
  113. data/app/javascript/components/ImageGrid.tsx +15 -0
  114. data/app/javascript/components/ImageUploader.tsx +35 -22
  115. data/app/javascript/components/LabelledField.tsx +34 -0
  116. data/app/javascript/components/Modal.tsx +2 -2
  117. data/app/javascript/components/PageForm/Block.tsx +81 -0
  118. data/app/javascript/components/PageForm/Content.tsx +54 -0
  119. data/app/javascript/components/PageForm/Dates.tsx +66 -0
  120. data/app/javascript/components/PageForm/Files.tsx +28 -0
  121. data/app/javascript/components/PageForm/Form.tsx +41 -0
  122. data/app/javascript/components/PageForm/Images.tsx +28 -0
  123. data/app/javascript/components/PageForm/LocaleLinks.tsx +36 -0
  124. data/app/javascript/components/PageForm/Metadata.tsx +67 -0
  125. data/app/javascript/components/PageForm/Options.tsx +180 -0
  126. data/app/javascript/components/PageForm/PageDescription.tsx +48 -0
  127. data/app/javascript/components/PageForm/PathSegment.tsx +65 -0
  128. data/app/javascript/components/PageForm/TabPanel.tsx +21 -0
  129. data/app/javascript/components/PageForm/Tabs.tsx +33 -0
  130. data/app/javascript/components/PageForm/UnconfiguredContent.tsx +42 -0
  131. data/app/javascript/components/PageForm/pageParams.ts +95 -0
  132. data/app/javascript/components/PageForm/preview.ts +23 -0
  133. data/app/javascript/components/PageForm/usePage.ts +169 -0
  134. data/app/javascript/components/PageForm/useTabs.ts +46 -0
  135. data/app/javascript/components/PageForm.tsx +169 -0
  136. data/app/javascript/components/PageImages.tsx +7 -9
  137. data/app/javascript/components/PageTree/Draggable.tsx +40 -39
  138. data/app/javascript/components/PageTree/Node.tsx +62 -56
  139. data/app/javascript/components/PageTree/PageName.tsx +28 -0
  140. data/app/javascript/components/PageTree.tsx +65 -53
  141. data/app/javascript/components/{RichTextArea.jsx → RichTextArea.tsx} +98 -79
  142. data/app/javascript/components/RichTextToolbarButton.tsx +4 -6
  143. data/app/javascript/components/TagEditor/AddTagForm.tsx +19 -12
  144. data/app/javascript/components/TagEditor/Editor.tsx +32 -0
  145. data/app/javascript/components/TagEditor/Tag.tsx +6 -4
  146. data/app/javascript/components/TagEditor/useTags.ts +58 -0
  147. data/app/javascript/components/TagEditor.tsx +8 -58
  148. data/app/javascript/components/Toast.tsx +3 -3
  149. data/app/javascript/components/drag/draggedOrder.ts +22 -14
  150. data/app/javascript/components/drag/useDragCollection.ts +35 -30
  151. data/app/javascript/components/drag/useDragUploader.ts +32 -21
  152. data/app/javascript/components/drag/useDraggable.ts +7 -6
  153. data/app/javascript/components/drag.ts +0 -1
  154. data/app/javascript/components.ts +1 -3
  155. data/app/javascript/features/RichText.tsx +2 -3
  156. data/app/javascript/features/contentTabs.ts +79 -0
  157. data/app/javascript/index.ts +5 -12
  158. data/app/javascript/lib/Tree.ts +31 -45
  159. data/app/javascript/lib/request.ts +11 -11
  160. data/app/javascript/stores/useToastStore.ts +1 -1
  161. data/app/javascript/types/Attachments.ts +29 -0
  162. data/app/javascript/types/Crop.ts +36 -0
  163. data/app/javascript/types/Drag.ts +34 -0
  164. data/app/javascript/types/Images.ts +47 -0
  165. data/app/javascript/types/PageEditor.ts +26 -0
  166. data/app/javascript/types/Pages.ts +75 -0
  167. data/app/javascript/types/Tags.ts +9 -0
  168. data/app/javascript/types/Template.ts +24 -0
  169. data/app/javascript/types/Trees.ts +19 -0
  170. data/app/javascript/types.ts +2 -25
  171. data/app/mailers/admin_mailer.rb +5 -9
  172. data/app/models/attachment.rb +1 -1
  173. data/app/models/autopublisher.rb +1 -1
  174. data/app/models/concerns/pages_core/authenticable_user.rb +63 -0
  175. data/app/models/concerns/pages_core/emailable.rb +16 -0
  176. data/app/models/concerns/pages_core/page_model/dated_page.rb +3 -3
  177. data/app/models/concerns/pages_core/page_model/templateable.rb +2 -16
  178. data/app/models/concerns/pages_core/taggable.rb +2 -19
  179. data/app/models/invite.rb +2 -6
  180. data/app/models/otp_secret.rb +4 -4
  181. data/app/models/page.rb +0 -3
  182. data/app/models/user.rb +2 -46
  183. data/app/policies/page_policy.rb +6 -2
  184. data/app/resources/admin/page_resource.rb +95 -0
  185. data/app/resources/admin/page_tree_resource.rb +27 -0
  186. data/app/resources/admin/template_configuration_resource.rb +50 -0
  187. data/app/views/admin/news/_sidebar.html.erb +2 -4
  188. data/app/views/admin/news/index.html.erb +0 -1
  189. data/app/views/admin/pages/_form.html.erb +10 -30
  190. data/app/views/admin/pages/_search_bar.html.erb +1 -1
  191. data/app/views/admin/pages/edit.html.erb +1 -57
  192. data/app/views/admin/pages/index.html.erb +1 -1
  193. data/app/views/admin/pages/new.html.erb +1 -44
  194. data/app/views/admin/sessions/new.html.erb +9 -11
  195. data/app/views/admin/users/_access_control.html.erb +5 -1
  196. data/app/views/admin/users/_list.html.erb +12 -7
  197. data/app/views/admin_mailer/account_recovery.html.erb +20 -0
  198. data/app/views/admin_mailer/invite.html.erb +11 -0
  199. data/app/views/layouts/admin/_header.html.erb +2 -4
  200. data/app/views/layouts/admin/_page_header.html.erb +1 -2
  201. data/app/views/layouts/admin.html.erb +1 -1
  202. data/app/views/layouts/pages_core/mailer.html.erb +11 -0
  203. data/config/locales/en.yml +0 -4
  204. data/config/routes.rb +3 -7
  205. data/db/migrate/20240126160700_add_2fa_fields.rb +5 -1
  206. data/db/migrate/20240131140700_change_email_to_citext.rb +18 -0
  207. data/db/migrate/20240201160700_remove_persistent_data.rb +7 -0
  208. data/db/migrate/20240508145300_remove_categories.rb +21 -0
  209. data/lib/pages_core/configuration/base.rb +2 -2
  210. data/lib/pages_core/engine.rb +1 -0
  211. data/lib/pages_core/templates/configuration.rb +1 -1
  212. data/lib/pages_core/templates/configuration_proxy.rb +2 -2
  213. data/lib/pages_core/templates/template_configuration.rb +11 -1
  214. data/lib/pages_core/templates.rb +6 -4
  215. data/lib/pages_core/version.rb +1 -1
  216. data/lib/pages_core.rb +1 -0
  217. data/lib/rails/generators/pages_core/frontend/templates/javascript/lib/gridOverlay.ts +6 -7
  218. data/lib/rails/generators/pages_core/frontend/templates/javascript/lib/responsiveEmbeds.ts +17 -12
  219. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +0 -2
  220. data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +3 -4
  221. metadata +119 -36
  222. data/app/assets/builds/fonts/2a3059ad.ttf +0 -0
  223. data/app/assets/builds/fonts/47262711.woff2 +0 -0
  224. data/app/assets/builds/fonts/500ddeb0.woff2 +0 -0
  225. data/app/assets/builds/fonts/81221036.ttf +0 -0
  226. data/app/assets/stylesheets/pages_core/admin/components/login.css +0 -27
  227. data/app/controllers/admin/categories_controller.rb +0 -56
  228. data/app/controllers/concerns/pages_core/admin/persistent_params.rb +0 -75
  229. data/app/helpers/pages_core/admin/page_blocks_helper.rb +0 -66
  230. data/app/helpers/pages_core/admin/page_json_helper.rb +0 -23
  231. data/app/javascript/components/DateRangeSelect.jsx +0 -225
  232. data/app/javascript/components/PageDates.jsx +0 -73
  233. data/app/javascript/components/PageFiles.jsx +0 -25
  234. data/app/javascript/components/PageTree/types.ts +0 -15
  235. data/app/javascript/components/drag/types.ts +0 -28
  236. data/app/javascript/controllers/EditPageController.ts +0 -22
  237. data/app/javascript/controllers/MainController.ts +0 -74
  238. data/app/javascript/controllers/PageOptionsController.js +0 -67
  239. data/app/models/category.rb +0 -22
  240. data/app/models/concerns/pages_core/has_otp.rb +0 -27
  241. data/app/models/page_category.rb +0 -6
  242. data/app/views/admin/pages/_edit_content.html.erb +0 -19
  243. data/app/views/admin/pages/_edit_files.html.erb +0 -4
  244. data/app/views/admin/pages/_edit_images.html.erb +0 -4
  245. data/app/views/admin/pages/_edit_metadata.html.erb +0 -35
  246. data/app/views/admin/pages/_edit_options.html.erb +0 -91
  247. data/app/views/admin_mailer/account_recovery.text.erb +0 -10
  248. data/app/views/admin_mailer/invite.text.erb +0 -7
  249. data/lib/rails/generators/pages_core/rspec/templates/mailer_macros.rb +0 -11
@@ -1,25 +1,35 @@
1
1
  main form {
2
- margin: 16px 32px;
2
+ margin: 1.5rem 2rem;
3
3
  }
4
4
 
5
5
  form {
6
- & .field {
7
- margin: 16px 0;
6
+ .field {
7
+ margin: 1.5rem 0;
8
8
  padding: 0;
9
+ @mixin child-margins;
10
+
11
+ .date-select {
12
+ display: flex;
13
+ gap: 4px;
14
+ flex-wrap: wrap;
15
+ .time {
16
+ width: 5rem;
17
+ min-width: 2rem;
18
+ }
19
+ }
9
20
 
10
- & input[type="text"],
11
- & input[type="password"],
12
- & input[type="email"],
13
- & textarea {
21
+ input[type="text"],
22
+ input[type="password"],
23
+ input[type="email"],
24
+ textarea {
14
25
  transition: border-color 150ms ease-out;
15
26
  }
16
27
 
17
- & label {
28
+ label {
18
29
  display: block;
19
30
  padding: 0;
20
31
  margin: 0 0 4px 0;
21
- font-weight: bold;
22
- font-size: 13px;
32
+ font-weight: var(--bold-weight);
23
33
  color: var(--text-color);
24
34
  transition: color 150ms ease-out;
25
35
 
@@ -34,43 +44,44 @@ form {
34
44
  }
35
45
  }
36
46
 
37
- & .description {
47
+ .description {
48
+ display: block;
38
49
  color: var(--text-light-color);
39
50
  margin: 0 0 6px 0;
40
51
  }
41
52
  }
42
53
 
43
- & .field-with-warning {
44
- & input[type="text"],
45
- & input[type="password"],
46
- & input[type="email"],
47
- & textarea {
54
+ .field-with-warning {
55
+ input[type="text"],
56
+ input[type="password"],
57
+ input[type="email"],
58
+ textarea {
48
59
  border-color: var(--red-light);
49
60
  }
50
61
 
51
- & label {
62
+ label {
52
63
  color: var(--red);
53
64
  }
54
65
  }
55
66
 
56
- & .field-with-errors {
67
+ .field-with-errors {
57
68
  background: var(--red-invert);
58
69
  border-top: 1px solid var(--red-light);
59
70
  border-bottom: 1px solid var(--red-light);
60
71
  margin: 0 -32px -1px -32px;
61
72
  padding: 12px 32px 16px 32px;
62
73
 
63
- & label {
74
+ label {
64
75
  color: var(--red);
65
76
  }
66
77
  }
67
78
 
68
- & .row {
79
+ .row {
69
80
  display: flex;
70
81
  flex-wrap: wrap;
71
82
  margin-right: -16px;
72
83
 
73
- & .field {
84
+ .field {
74
85
  margin-right: 16px;
75
86
 
76
87
  &.text-field {
@@ -79,24 +90,20 @@ form {
79
90
  }
80
91
  }
81
92
 
82
- & input[type="text"],
83
- & input[type="password"] {
93
+ input[type="text"],
94
+ input[type="password"] {
84
95
  width: 100%;
85
96
  max-width: none;
86
97
  }
87
98
  }
88
99
 
89
- & .date-range-select {
90
- & .date {
100
+ .date-range-select {
101
+ .date {
91
102
  line-height: 34px;
92
103
  display: inline-block;
93
104
  white-space: nowrap;
94
105
 
95
- & .date-select {
96
- display: inline-block;
97
- }
98
-
99
- & input[type="text"] {
106
+ input[type="text"] {
100
107
  display: inline;
101
108
  width: auto;
102
109
  min-width: auto;
@@ -105,21 +112,21 @@ form {
105
112
  }
106
113
  }
107
114
 
108
- & .to {
115
+ .to {
109
116
  margin: 0px 8px;
110
117
  }
111
118
  }
112
119
 
113
- & .page-dates {
120
+ .page-dates {
114
121
  margin-bottom: 40px;
115
122
 
116
- & .toggles {
117
- & label {
123
+ .toggles {
124
+ label {
118
125
  font-weight: normal;
119
126
  display: inline-block;
120
127
  margin-right: 12px;
121
128
 
122
- & input {
129
+ input {
123
130
  margin-right: 6px;
124
131
  }
125
132
 
@@ -129,7 +136,7 @@ form {
129
136
  }
130
137
  }
131
138
 
132
- & .remove-dates {
139
+ .remove-dates {
133
140
  margin-top: 12px;
134
141
  }
135
142
  }
@@ -151,10 +158,11 @@ textarea {
151
158
  min-width: 200px;
152
159
  border: 1px solid var(--border-color);
153
160
  box-shadow: inset 0px 5px 5px rgba(0, 0, 0, 0.03);
154
- padding: 8px 10px;
155
- line-height: 1.4;
156
- font-family: Helvetica, Arial, sans-serif;
157
- font-size: 13px;
161
+ padding: 0.5rem 0.75rem;
162
+
163
+ &.tight {
164
+ padding: 0.25rem 0.5rem;
165
+ }
158
166
 
159
167
  &:disabled {
160
168
  border-color: var(--border-color-light);
@@ -166,13 +174,6 @@ textarea {
166
174
  }
167
175
  }
168
176
 
169
- main .login-form input[type="text"],
170
- main .login-form input[type="password"],
171
- input[type="text"].large,
172
- input[type="password"].large {
173
- font-size: 1.4em;
174
- }
175
-
176
177
  fieldset {
177
178
  padding: 0px;
178
179
  margin: 0px;
@@ -180,12 +181,18 @@ fieldset {
180
181
  border-bottom: 1px solid var(--border-color);
181
182
  }
182
183
 
184
+ .buttons {
185
+ display: flex;
186
+ flex-wrap: wrap;
187
+ gap: 4px;
188
+ }
189
+
183
190
  button,
184
191
  select {
185
192
  appearance: none;
186
193
  cursor: inherit;
187
194
  font-family: var(--font-os-sans);
188
- font-size: 13px;
195
+ font-size: 0.875rem;
189
196
  color: var(--text-color);
190
197
  line-height: 1.5;
191
198
  border: 1px solid var(--button-border-color);
@@ -194,6 +201,10 @@ select {
194
201
  background: var(--button-color);
195
202
  box-shadow: inset 0px 0.75em 0.75em rgba(255, 255, 255, 0.25);
196
203
 
204
+ .icon {
205
+ margin-right: 8px;
206
+ }
207
+
197
208
  &:hover {
198
209
  background-color: var(--button-color-hover);
199
210
  }
@@ -206,6 +217,27 @@ select {
206
217
  background-color: var(--button-color);
207
218
  }
208
219
  }
220
+
221
+ &.primary {
222
+ background: var(--text-color);
223
+ border-color: var(--text-color);
224
+ color: var(--text-invert-color);
225
+ box-shadow: inset 0px 0.75em 0.75em rgba(255, 255, 255, 0.2);
226
+ &:hover {
227
+ box-shadow: inset 0px 0.75em 0.75em rgba(255, 255, 255, 0.1);
228
+ }
229
+ }
230
+
231
+ &.transparent {
232
+ border: none;
233
+ background: transparent;
234
+ cursor: pointer;
235
+ padding: 0.25rem 0.25rem;
236
+ &:hover,
237
+ &:focus {
238
+ text-decoration: underline;
239
+ }
240
+ }
209
241
  }
210
242
 
211
243
  select {
@@ -222,3 +254,32 @@ form.button-to {
222
254
  margin: 0;
223
255
  padding: 0;
224
256
  }
257
+
258
+ .buttons {
259
+ display: flex;
260
+ flex-wrap: wrap;
261
+ gap: 0.25rem;
262
+ margin-top: 2rem;
263
+ @mixin child-margins;
264
+ }
265
+
266
+ .inline-form {
267
+ display: flex;
268
+ input {
269
+ flex: 1 1 auto;
270
+ border-right: none;
271
+ &:focus {
272
+ z-index: 20;
273
+ }
274
+ }
275
+ button {
276
+ border-radius: 0px;
277
+ white-space: nowrap;
278
+ border-right: none;
279
+ &:last-child {
280
+ border-top-right-radius: 5px;
281
+ border-bottom-right-radius: 5px;
282
+ border-right: 1px solid var(--button-border-color);
283
+ }
284
+ }
285
+ }
@@ -1,10 +1,13 @@
1
1
  header {
2
2
  background: var(--background-invert-color);
3
- height: 86px;
3
+ padding: 1.25rem 1rem 0rem 1rem;
4
4
  color: var(--text-invert-color);
5
+ display: flex;
6
+ flex-wrap: wrap;
7
+ gap: 1rem;
5
8
 
6
- & a,
7
- & a:visited {
9
+ a,
10
+ a:visited {
8
11
  background: none;
9
12
  border: 0;
10
13
  padding: 0;
@@ -12,44 +15,38 @@ header {
12
15
  color: var(--text-invert-color);
13
16
  }
14
17
 
15
- & .logo {
16
- position: absolute;
17
- z-index: 2;
18
- top: 11px;
19
- left: 16px;
20
- width: 21px;
21
- height: 27px;
18
+ .logo {
19
+ background: url("pages/admin/icon.svg");
20
+ background-repeat: no-repeat;
21
+ min-height: 27px;
22
+ padding-left: 38px;
22
23
  }
23
24
 
24
- & .site-name {
25
+ .site-name {
25
26
  color: var(--text-invert-color);
26
- position: absolute;
27
- top: 15px;
28
- left: 52px;
27
+ flex-grow: 1;
29
28
 
30
- & h1 {
29
+ h1 {
31
30
  margin: 0;
32
31
  padding: 0;
33
- font-family: Arial, Helvetica, sans-serif;
34
32
  display: inline;
35
- font-size: 20px;
33
+ font-size: 1.4rem;
34
+ letter-spacing: -0.04rem;
36
35
  font-weight: normal;
37
36
 
38
- & a {
39
- font-weight: bold;
37
+ a {
38
+ font-weight: 800;
40
39
  text-decoration: none;
41
40
  padding-right: 6px;
42
41
  }
43
42
  }
44
43
  }
45
44
 
46
- & .user {
47
- font-size: 13px;
48
- position: absolute;
49
- top: 20px;
50
- right: 16px;
45
+ .user {
46
+ display: flex;
47
+ align-items: center;
51
48
 
52
- & a {
49
+ a {
53
50
  border-left: 1px solid var(--text-light-color);
54
51
  padding-left: 10px;
55
52
  margin-left: 6px;
@@ -62,35 +59,32 @@ header {
62
59
  }
63
60
  }
64
61
 
65
- & .tabs {
66
- position: absolute;
67
- top: 54px;
68
- height: 29px;
69
- left: 16px;
70
- right: 8px;
62
+ .tabs {
63
+ display: flex;
64
+ overflow: scroll;
65
+ width: 100%;
66
+ gap: 8px;
71
67
 
72
- & ul {
73
- padding: 0;
74
- margin: 0 8px 0 0;
68
+ ul {
69
+ padding: 0px;
70
+ margin: 0px;
75
71
  list-style-type: none;
76
- display: block;
77
- float: left;
72
+ display: flex;
73
+ gap: 4px;
78
74
 
79
75
  &.account {
80
- float: right;
76
+ flex-grow: 1;
77
+ justify-content: flex-end;
81
78
  }
82
79
  }
83
80
 
84
- & li {
85
- display: inline;
81
+ li {
86
82
  margin: 0;
87
83
  padding: 0;
88
- font-weight: normal;
89
- font-size: 13px;
90
84
  }
91
85
 
92
- & a,
93
- & a:visited {
86
+ a,
87
+ a:visited {
94
88
  background: #333;
95
89
  color: var(--text-invert-color);
96
90
  display: block;
@@ -98,13 +92,13 @@ header {
98
92
  padding: 0 15px;
99
93
  line-height: 32px;
100
94
  height: 32px;
101
- margin: 0 2px 0 0;
95
+ margin: 0px;
102
96
  text-decoration: none;
103
97
  }
104
98
 
105
- & a:hover,
106
- & a.current,
107
- & a.current:visited {
99
+ a:hover,
100
+ a.current,
101
+ a.current:visited {
108
102
  background: linear-gradient(to bottom, #cfcfcf 0%, #fefefe 100%);
109
103
  color: var(--text-color);
110
104
  }
@@ -116,22 +110,22 @@ header {
116
110
  margin: 24px 0px -12px -18px;
117
111
  padding: 0;
118
112
 
119
- & li {
113
+ li {
120
114
  color: hsla(0, 0%, 0%, 0.25);
121
115
  display: inline;
122
116
  background: transparent;
123
117
  padding: 6px 17px;
124
- font-weight: bold;
125
118
  }
126
119
 
127
- & li.current {
120
+ li.current {
128
121
  background: var(--background-color);
129
122
  padding: 5px 16px;
130
123
  border: 1px solid #cae6f1;
131
124
  border-bottom: 1px solid var(--background-color);
125
+ font-weight: var(--bold-weight);
132
126
 
133
- & a,
134
- & a:visited {
127
+ a,
128
+ a:visited {
135
129
  text-decoration: none;
136
130
  color: #444;
137
131
  }
@@ -146,15 +140,19 @@ header {
146
140
  border-bottom: 1px solid #d4eaf4;
147
141
  color: var(--text-color);
148
142
 
149
- & em {
143
+ h3 {
144
+ font-weight: var(--bold-weight);
145
+ }
146
+
147
+ em {
150
148
  font-style: normal;
151
149
  color: #4a5357;
152
150
  }
153
151
 
154
- & .links {
152
+ .links {
155
153
  float: right;
156
154
 
157
- & a {
155
+ a {
158
156
  border-left: 1px solid #779cb3;
159
157
  padding-left: 8px;
160
158
  margin-left: 8px;
@@ -166,14 +164,14 @@ header {
166
164
  }
167
165
 
168
166
  &.current {
169
- font-weight: bold;
167
+ font-weight: var(--bold-weight);
170
168
  text-decoration: none;
171
169
  color: var(--text-color);
172
170
  }
173
171
  }
174
172
  }
175
173
 
176
- & .separator {
174
+ .separator {
177
175
  color: #779cb3;
178
176
  margin: 0 4px;
179
177
  }
@@ -182,6 +180,6 @@ header {
182
180
  main .page-description h3 {
183
181
  margin: 0;
184
182
  padding: 0;
185
- font-size: 13px;
183
+ font-size: 0.875rem;
186
184
  text-shadow: #e9f6ff 1px 1px 1px;
187
185
  }
@@ -1,30 +1,33 @@
1
1
  .editable-image {
2
2
  cursor: pointer;
3
3
  display: block;
4
- transition: transform 200ms, box-shadow 200ms, border-color 200ms ease-out;
4
+ transition:
5
+ transform 200ms,
6
+ box-shadow 200ms,
7
+ border-color 200ms ease-out;
5
8
  box-shadow: 0px 2px 5px rgba(0, 0, 0, 0);
6
9
  border: 1px solid #fff;
7
10
  position: relative;
8
11
  -webkit-perspective: 1000;
9
12
 
10
- & .alt-warning {
13
+ .alt-warning {
11
14
  position: absolute;
12
15
  bottom: 5px;
13
16
  right: 6px;
14
- font-size: 14px;
17
+ font-size: 1rem;
15
18
  color: var(--background-warning-color);
16
19
  text-shadow: 0px 0px 5px rgba(0, 0, 0, 1);
17
20
  z-index: 100;
18
21
  }
19
22
 
20
- & img {
23
+ img {
21
24
  display: block;
22
25
  }
23
26
 
24
27
  &:hover {
25
28
  border-color: rgba(20, 20, 20, 0.5);
26
29
  transform: scale(1.01) translate(0px, -1px);
27
- box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2);
30
+ box-shadow: 0px 5px 20px rgba(0, 0, 0, 0.2);
28
31
  }
29
32
  }
30
33
 
@@ -39,19 +42,19 @@
39
42
  flex-direction: column;
40
43
  }
41
44
 
42
- & .toolbars {
43
- & .aspect-ratios {
45
+ .toolbars {
46
+ .aspect-ratios {
44
47
  border-top: 0px;
45
48
  }
46
49
  }
47
50
 
48
- & .visual {
51
+ .visual {
49
52
  flex: 1 1 auto;
50
53
  display: flex;
51
54
  flex-direction: column;
52
55
  }
53
56
 
54
- & .image-container {
57
+ .image-container {
55
58
  flex: 1 1 auto;
56
59
  width: 100%;
57
60
  height: 100%;
@@ -61,7 +64,11 @@
61
64
  linear-gradient(45deg, transparent 75%, #fff 75%),
62
65
  linear-gradient(135deg, transparent 75%, #fff 75%);
63
66
  background-size: 12px 12px;
64
- background-position: 0 0, 6px 0, 6px -6px, 0px 6px;
67
+ background-position:
68
+ 0 0,
69
+ 6px 0,
70
+ 6px -6px,
71
+ 0px 6px;
65
72
  display: flex;
66
73
  flex-direction: column;
67
74
  justify-content: center;
@@ -69,7 +76,7 @@
69
76
  border: 1px solid var(--border-color);
70
77
  border-top: 0px;
71
78
 
72
- & .image-wrapper {
79
+ .image-wrapper {
73
80
  position: absolute;
74
81
  flex-grow: 0;
75
82
 
@@ -77,18 +84,18 @@
77
84
  position: relative;
78
85
  }
79
86
 
80
- & img {
87
+ img {
81
88
  display: block;
82
89
  width: 100%;
83
90
  height: auto;
84
91
  }
85
92
 
86
- & .ReactCrop {
93
+ .ReactCrop {
87
94
  width: 100%;
88
95
  background-color: transparent;
89
96
  }
90
97
 
91
- & .ReactCrop__crop-selection {
98
+ .ReactCrop__crop-selection {
92
99
  &:before,
93
100
  &:after {
94
101
  content: "";
@@ -115,7 +122,7 @@
115
122
  }
116
123
  }
117
124
 
118
- & .ReactCrop--active .ReactCrop__crop-selection {
125
+ .ReactCrop--active .ReactCrop__crop-selection {
119
126
  &:before,
120
127
  &:after {
121
128
  opacity: 0.75;
@@ -123,17 +130,17 @@
123
130
  }
124
131
  }
125
132
 
126
- & .loading {
133
+ .loading {
127
134
  color: var(--text-light-color);
128
135
  }
129
136
  }
130
137
 
131
- & form {
138
+ form {
132
139
  width: 300px;
133
140
  display: block;
134
141
  margin-left: 20px;
135
142
 
136
- & textarea {
143
+ textarea {
137
144
  max-width: 100%;
138
145
 
139
146
  &.caption {
@@ -141,8 +148,8 @@
141
148
  }
142
149
  }
143
150
 
144
- & .embed-code {
145
- & input {
151
+ .embed-code {
152
+ input {
146
153
  width: 50%;
147
154
  margin-right: 8px;
148
155
  }
@@ -153,20 +160,20 @@
153
160
  margin-left: 0px;
154
161
  padding-bottom: 20px;
155
162
 
156
- & textarea.caption {
163
+ textarea.caption {
157
164
  height: inherit;
158
165
  }
159
166
  }
160
167
  }
161
168
 
162
- & .focal-editor {
169
+ .focal-editor {
163
170
  position: absolute;
164
171
  width: 100%;
165
172
  height: 100%;
166
173
  touch-action: none;
167
174
  overflow: hidden;
168
175
 
169
- & .focal-point {
176
+ .focal-point {
170
177
  &:after {
171
178
  content: "";
172
179
  display: block;
@@ -190,7 +197,11 @@
190
197
  touch-action: none;
191
198
  user-select: none;
192
199
  cursor: pointer;
193
- transition: border-radius 200ms, margin 200ms, width 200ms, height 200ms,
200
+ transition:
201
+ border-radius 200ms,
202
+ margin 200ms,
203
+ width 200ms,
204
+ height 200ms,
194
205
  border-color 200ms ease-out;
195
206
 
196
207
  &:hover {