panda-cms 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +73 -0
  3. data/Rakefile +7 -0
  4. data/app/assets/builds/panda.cms.css +2808 -0
  5. data/app/assets/config/panda_cms_manifest.js +4 -0
  6. data/app/assets/stylesheets/panda/cms/application.tailwind.css +162 -0
  7. data/app/assets/stylesheets/panda/cms/editor.css +120 -0
  8. data/app/builders/panda/cms/form_builder.rb +234 -0
  9. data/app/components/panda/cms/admin/button_component.rb +70 -0
  10. data/app/components/panda/cms/admin/container_component.html.erb +13 -0
  11. data/app/components/panda/cms/admin/container_component.rb +13 -0
  12. data/app/components/panda/cms/admin/flash_message_component.html.erb +31 -0
  13. data/app/components/panda/cms/admin/flash_message_component.rb +47 -0
  14. data/app/components/panda/cms/admin/heading_component.rb +45 -0
  15. data/app/components/panda/cms/admin/panel_component.html.erb +7 -0
  16. data/app/components/panda/cms/admin/panel_component.rb +13 -0
  17. data/app/components/panda/cms/admin/slideover_component.html.erb +9 -0
  18. data/app/components/panda/cms/admin/slideover_component.rb +15 -0
  19. data/app/components/panda/cms/admin/statistics_component.html.erb +4 -0
  20. data/app/components/panda/cms/admin/statistics_component.rb +17 -0
  21. data/app/components/panda/cms/admin/tab_bar_component.html.erb +35 -0
  22. data/app/components/panda/cms/admin/tab_bar_component.rb +15 -0
  23. data/app/components/panda/cms/admin/table_component.html.erb +29 -0
  24. data/app/components/panda/cms/admin/table_component.rb +46 -0
  25. data/app/components/panda/cms/admin/tag_component.rb +35 -0
  26. data/app/components/panda/cms/admin/user_activity_component.html.erb +5 -0
  27. data/app/components/panda/cms/admin/user_activity_component.rb +33 -0
  28. data/app/components/panda/cms/admin/user_display_component.html.erb +17 -0
  29. data/app/components/panda/cms/admin/user_display_component.rb +21 -0
  30. data/app/components/panda/cms/code_component.rb +64 -0
  31. data/app/components/panda/cms/grid_component.html.erb +6 -0
  32. data/app/components/panda/cms/grid_component.rb +15 -0
  33. data/app/components/panda/cms/menu_component.html.erb +6 -0
  34. data/app/components/panda/cms/menu_component.rb +58 -0
  35. data/app/components/panda/cms/page_menu_component.html.erb +21 -0
  36. data/app/components/panda/cms/page_menu_component.rb +38 -0
  37. data/app/components/panda/cms/rich_text_component.html.erb +6 -0
  38. data/app/components/panda/cms/rich_text_component.rb +84 -0
  39. data/app/components/panda/cms/text_component.rb +72 -0
  40. data/app/constraints/panda/cms/admin_constraint.rb +18 -0
  41. data/app/controllers/panda/cms/admin/block_contents_controller.rb +52 -0
  42. data/app/controllers/panda/cms/admin/dashboard_controller.rb +20 -0
  43. data/app/controllers/panda/cms/admin/files_controller.rb +21 -0
  44. data/app/controllers/panda/cms/admin/forms_controller.rb +53 -0
  45. data/app/controllers/panda/cms/admin/menus_controller.rb +30 -0
  46. data/app/controllers/panda/cms/admin/pages_controller.rb +91 -0
  47. data/app/controllers/panda/cms/admin/posts_controller.rb +146 -0
  48. data/app/controllers/panda/cms/admin/sessions_controller.rb +94 -0
  49. data/app/controllers/panda/cms/admin/settings/bulk_editor_controller.rb +37 -0
  50. data/app/controllers/panda/cms/admin/settings_controller.rb +20 -0
  51. data/app/controllers/panda/cms/application_controller.rb +57 -0
  52. data/app/controllers/panda/cms/errors_controller.rb +33 -0
  53. data/app/controllers/panda/cms/form_submissions_controller.rb +23 -0
  54. data/app/controllers/panda/cms/pages_controller.rb +72 -0
  55. data/app/controllers/panda/cms/posts_controller.rb +13 -0
  56. data/app/helpers/panda/cms/admin/files_helper.rb +6 -0
  57. data/app/helpers/panda/cms/admin/pages_helper.rb +6 -0
  58. data/app/helpers/panda/cms/admin/posts_helper.rb +48 -0
  59. data/app/helpers/panda/cms/application_helper.rb +120 -0
  60. data/app/helpers/panda/cms/pages_helper.rb +6 -0
  61. data/app/helpers/panda/cms/theme_helper.rb +18 -0
  62. data/app/javascript/panda/cms/@editorjs--editorjs.js +2577 -0
  63. data/app/javascript/panda/cms/@hotwired--stimulus.js +4 -0
  64. data/app/javascript/panda/cms/@hotwired--turbo.js +160 -0
  65. data/app/javascript/panda/cms/@rails--actioncable--src.js +4 -0
  66. data/app/javascript/panda/cms/application_panda_cms.js +39 -0
  67. data/app/javascript/panda/cms/controllers/dashboard_controller.js +7 -0
  68. data/app/javascript/panda/cms/controllers/editor_form_controller.js +77 -0
  69. data/app/javascript/panda/cms/controllers/editor_iframe_controller.js +320 -0
  70. data/app/javascript/panda/cms/controllers/index.js +48 -0
  71. data/app/javascript/panda/cms/controllers/slug_controller.js +87 -0
  72. data/app/javascript/panda/cms/editor/css_extractor.js +80 -0
  73. data/app/javascript/panda/cms/editor/editor_js_config.js +177 -0
  74. data/app/javascript/panda/cms/editor/editor_js_initializer.js +285 -0
  75. data/app/javascript/panda/cms/editor/plain_text_editor.js +110 -0
  76. data/app/javascript/panda/cms/editor/resource_loader.js +115 -0
  77. data/app/javascript/panda/cms/tailwindcss-stimulus-components.js +4 -0
  78. data/app/jobs/panda/cms/application_job.rb +6 -0
  79. data/app/jobs/panda/cms/record_visit_job.rb +31 -0
  80. data/app/mailers/panda/cms/application_mailer.rb +8 -0
  81. data/app/mailers/panda/cms/form_mailer.rb +21 -0
  82. data/app/models/action_text/rich_text_version.rb +6 -0
  83. data/app/models/panda/cms/application_record.rb +7 -0
  84. data/app/models/panda/cms/block.rb +34 -0
  85. data/app/models/panda/cms/block_content.rb +18 -0
  86. data/app/models/panda/cms/block_content_version.rb +8 -0
  87. data/app/models/panda/cms/breadcrumb.rb +12 -0
  88. data/app/models/panda/cms/current.rb +17 -0
  89. data/app/models/panda/cms/form.rb +9 -0
  90. data/app/models/panda/cms/form_submission.rb +7 -0
  91. data/app/models/panda/cms/menu.rb +52 -0
  92. data/app/models/panda/cms/menu_item.rb +58 -0
  93. data/app/models/panda/cms/page.rb +96 -0
  94. data/app/models/panda/cms/page_version.rb +8 -0
  95. data/app/models/panda/cms/post.rb +60 -0
  96. data/app/models/panda/cms/post_version.rb +8 -0
  97. data/app/models/panda/cms/redirect.rb +11 -0
  98. data/app/models/panda/cms/template.rb +124 -0
  99. data/app/models/panda/cms/template_version.rb +8 -0
  100. data/app/models/panda/cms/user.rb +31 -0
  101. data/app/models/panda/cms/version.rb +8 -0
  102. data/app/models/panda/cms/visit.rb +9 -0
  103. data/app/services/panda/cms/html_to_editor_js_converter.rb +200 -0
  104. data/app/views/active_storage/blobs/blobs/_blob.html.erb +14 -0
  105. data/app/views/layouts/action_text/contents/_content.html.erb +3 -0
  106. data/app/views/layouts/panda/cms/application.html.erb +41 -0
  107. data/app/views/layouts/panda/cms/public.html.erb +3 -0
  108. data/app/views/panda/cms/admin/dashboard/show.html.erb +12 -0
  109. data/app/views/panda/cms/admin/files/index.html.erb +124 -0
  110. data/app/views/panda/cms/admin/files/show.html.erb +2 -0
  111. data/app/views/panda/cms/admin/forms/edit.html.erb +0 -0
  112. data/app/views/panda/cms/admin/forms/index.html.erb +13 -0
  113. data/app/views/panda/cms/admin/forms/new.html.erb +15 -0
  114. data/app/views/panda/cms/admin/forms/show.html.erb +35 -0
  115. data/app/views/panda/cms/admin/menus/index.html.erb +8 -0
  116. data/app/views/panda/cms/admin/pages/edit.html.erb +36 -0
  117. data/app/views/panda/cms/admin/pages/index.html.erb +22 -0
  118. data/app/views/panda/cms/admin/pages/new.html.erb +15 -0
  119. data/app/views/panda/cms/admin/pages/show.html.erb +1 -0
  120. data/app/views/panda/cms/admin/posts/_form.html.erb +29 -0
  121. data/app/views/panda/cms/admin/posts/edit.html.erb +6 -0
  122. data/app/views/panda/cms/admin/posts/index.html.erb +18 -0
  123. data/app/views/panda/cms/admin/posts/new.html.erb +6 -0
  124. data/app/views/panda/cms/admin/sessions/new.html.erb +17 -0
  125. data/app/views/panda/cms/admin/settings/bulk_editor/new.html.erb +68 -0
  126. data/app/views/panda/cms/admin/settings/index.html.erb +21 -0
  127. data/app/views/panda/cms/admin/settings/insta.html +4 -0
  128. data/app/views/panda/cms/admin/shared/_breadcrumbs.html.erb +28 -0
  129. data/app/views/panda/cms/admin/shared/_flash.html.erb +5 -0
  130. data/app/views/panda/cms/admin/shared/_sidebar.html.erb +41 -0
  131. data/app/views/panda/cms/form_mailer/notification_email.html.erb +11 -0
  132. data/app/views/panda/cms/shared/_editor.html.erb +0 -0
  133. data/app/views/panda/cms/shared/_favicons.html.erb +9 -0
  134. data/app/views/panda/cms/shared/_footer.html.erb +2 -0
  135. data/app/views/panda/cms/shared/_header.html.erb +15 -0
  136. data/app/views/panda/cms/shared/_importmap.html.erb +33 -0
  137. data/config/importmap.rb +13 -0
  138. data/config/initializers/inflections.rb +3 -0
  139. data/config/initializers/panda/cms/form_errors.rb +38 -0
  140. data/config/initializers/panda/cms/healthcheck_log_silencer.rb +11 -0
  141. data/config/initializers/panda/cms/paper_trail.rb +7 -0
  142. data/config/initializers/panda/cms.rb +10 -0
  143. data/config/initializers/zeitwork.rb +3 -0
  144. data/config/locales/en.yml +49 -0
  145. data/config/puma/test.rb +9 -0
  146. data/config/routes.rb +48 -0
  147. data/config/tailwind.config.js +37 -0
  148. data/db/migrate/20240205223709_create_panda_cms_pages.rb +9 -0
  149. data/db/migrate/20240219213327_create_panda_cms_page_versions.rb +14 -0
  150. data/db/migrate/20240303002805_create_panda_cms_templates.rb +11 -0
  151. data/db/migrate/20240303003434_create_panda_cms_template_versions.rb +14 -0
  152. data/db/migrate/20240303022441_create_panda_cms_blocks.rb +13 -0
  153. data/db/migrate/20240303024256_create_panda_cms_block_contents.rb +10 -0
  154. data/db/migrate/20240303024746_create_panda_cms_block_content_versions.rb +14 -0
  155. data/db/migrate/20240303233238_add_panda_cms_menu_table.rb +10 -0
  156. data/db/migrate/20240303234724_add_panda_cms_menu_item_table.rb +12 -0
  157. data/db/migrate/20240304134343_add_parent_id_to_panda_cms_pages.rb +5 -0
  158. data/db/migrate/20240305000000_convert_html_content_to_editor_js.rb +82 -0
  159. data/db/migrate/20240315125411_add_status_to_panda_cms_pages.rb +9 -0
  160. data/db/migrate/20240315125421_add_nested_sets_to_panda_cms_pages.rb +16 -0
  161. data/db/migrate/20240316212822_add_kind_to_panda_cms_menus.rb +6 -0
  162. data/db/migrate/20240316221425_add_start_page_to_panda_cms_menus.rb +5 -0
  163. data/db/migrate/20240316230706_add_nested_to_panda_cms_menu_items.rb +24 -0
  164. data/db/migrate/20240317010532_create_panda_cms_users.rb +12 -0
  165. data/db/migrate/20240317161534_add_max_uses_to_panda_cms_template.rb +7 -0
  166. data/db/migrate/20240317163053_reset_counter_cache_on_panda_cms_template.rb +5 -0
  167. data/db/migrate/20240317214827_create_panda_cms_redirects.rb +14 -0
  168. data/db/migrate/20240317230622_create_panda_cms_visits.rb +13 -0
  169. data/db/migrate/20240324205703_create_active_storage_tables.active_storage.rb +58 -0
  170. data/db/migrate/20240408084718_default_panda_cms_users_admin_to_false.rb +5 -0
  171. data/db/migrate/20240701225422_add_service_name_to_active_storage_blobs.active_storage.rb +22 -0
  172. data/db/migrate/20240701225423_create_active_storage_variant_records.active_storage.rb +28 -0
  173. data/db/migrate/20240701225424_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb +8 -0
  174. data/db/migrate/20240804235210_create_panda_cms_forms.rb +11 -0
  175. data/db/migrate/20240805013612_create_panda_cms_form_submissions.rb +9 -0
  176. data/db/migrate/20240805121123_create_panda_cms_posts.rb +27 -0
  177. data/db/migrate/20240805123104_create_panda_cms_post_versions.rb +14 -0
  178. data/db/migrate/20240806112735_fix_panda_cms_visits_column_names.rb +13 -0
  179. data/db/migrate/20240806204412_add_completion_path_to_panda_cms_forms.rb +5 -0
  180. data/db/migrate/20240820081917_change_form_submissions_to_submission_count.rb +5 -0
  181. data/db/migrate/20240904200605_create_action_text_tables.action_text.rb +24 -0
  182. data/db/migrate/20240923234535_add_depth_to_panda_cms_menus.rb +11 -0
  183. data/db/migrate/20241031205109_add_cached_content_to_panda_cms_block_contents.rb +5 -0
  184. data/db/migrate/20241119214548_convert_post_content_to_editor_js.rb +35 -0
  185. data/db/migrate/20241119214549_remove_action_text_from_posts.rb +9 -0
  186. data/db/migrate/20241120000419_remove_post_tag_references.rb +19 -0
  187. data/db/migrate/20241120110943_add_editor_js_to_posts.rb +27 -0
  188. data/db/migrate/20241120113859_add_cached_content_to_panda_cms_posts.rb +5 -0
  189. data/db/migrate/20241123234140_remove_post_tag_id_from_posts.rb +5 -0
  190. data/db/migrate/migrate +1 -0
  191. data/db/seeds.rb +5 -0
  192. data/lib/generators/panda/cms/install_generator.rb +29 -0
  193. data/lib/panda/cms/bulk_editor.rb +171 -0
  194. data/lib/panda/cms/demo_site_generator.rb +67 -0
  195. data/lib/panda/cms/editor_js/blocks/alert.rb +34 -0
  196. data/lib/panda/cms/editor_js/blocks/base.rb +33 -0
  197. data/lib/panda/cms/editor_js/blocks/header.rb +15 -0
  198. data/lib/panda/cms/editor_js/blocks/image.rb +36 -0
  199. data/lib/panda/cms/editor_js/blocks/list.rb +32 -0
  200. data/lib/panda/cms/editor_js/blocks/paragraph.rb +15 -0
  201. data/lib/panda/cms/editor_js/blocks/quote.rb +41 -0
  202. data/lib/panda/cms/editor_js/blocks/table.rb +50 -0
  203. data/lib/panda/cms/editor_js/renderer.rb +124 -0
  204. data/lib/panda/cms/editor_js.rb +16 -0
  205. data/lib/panda/cms/editor_js_content.rb +21 -0
  206. data/lib/panda/cms/engine.rb +257 -0
  207. data/lib/panda/cms/exceptions_app.rb +26 -0
  208. data/lib/panda/cms/railtie.rb +11 -0
  209. data/lib/panda/cms/slug.rb +24 -0
  210. data/lib/panda/cms.rb +0 -0
  211. data/lib/panda-cms/version.rb +5 -0
  212. data/lib/panda-cms.rb +81 -0
  213. data/lib/tasks/panda_cms.rake +54 -0
  214. data/lib/templates/erb/scaffold/_form.html.erb.tt +43 -0
  215. data/lib/templates/erb/scaffold/edit.html.erb.tt +8 -0
  216. data/lib/templates/erb/scaffold/index.html.erb.tt +14 -0
  217. data/lib/templates/erb/scaffold/new.html.erb.tt +7 -0
  218. data/lib/templates/erb/scaffold/partial.html.erb.tt +22 -0
  219. data/lib/templates/erb/scaffold/show.html.erb.tt +15 -0
  220. data/public/panda-cms-assets/favicons/android-chrome-192x192.png +0 -0
  221. data/public/panda-cms-assets/favicons/android-chrome-512x512.png +0 -0
  222. data/public/panda-cms-assets/favicons/apple-touch-icon.png +0 -0
  223. data/public/panda-cms-assets/favicons/browserconfig.xml +9 -0
  224. data/public/panda-cms-assets/favicons/favicon-16x16.png +0 -0
  225. data/public/panda-cms-assets/favicons/favicon-32x32.png +0 -0
  226. data/public/panda-cms-assets/favicons/favicon.ico +0 -0
  227. data/public/panda-cms-assets/favicons/mstile-150x150.png +0 -0
  228. data/public/panda-cms-assets/favicons/safari-pinned-tab.svg +61 -0
  229. data/public/panda-cms-assets/favicons/site.webmanifest +14 -0
  230. data/public/panda-cms-assets/panda-logo-screenprint.png +0 -0
  231. data/public/panda-cms-assets/panda-nav.png +0 -0
  232. data/public/panda-cms-assets/rich_text_editor.css +568 -0
  233. metadata +654 -0
@@ -0,0 +1,61 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+ <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="200.000000pt" height="200.000000pt" viewBox="0 0 200.000000 200.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+ <metadata>
8
+ Created by potrace 1.14, written by Peter Selinger 2001-2017
9
+ </metadata>
10
+ <g transform="translate(0.000000,200.000000) scale(0.100000,-0.100000)"
11
+ fill="#000000" stroke="none">
12
+ <path d="M565 1803 c-42 -22 -65 -43 -83 -78 -42 -82 -32 -165 29 -226 36 -36
13
+ 39 -43 33 -75 l-6 -34 -28 42 c-49 77 -190 192 -210 172 -5 -5 -17 -38 -26
14
+ -74 -26 -102 -3 -238 55 -319 l19 -26 -61 3 c-67 4 -137 -12 -137 -31 0 -24
15
+ 56 -102 100 -139 46 -40 115 -68 166 -68 32 0 32 -1 23 -32 -21 -74 -7 -156
16
+ 37 -215 29 -39 33 -89 7 -78 -59 25 -73 27 -105 21 -24 -4 -47 -19 -67 -42
17
+ -26 -29 -31 -43 -31 -87 0 -63 25 -120 76 -176 84 -93 183 -120 272 -73 44 23
18
+ 78 26 156 16 35 -5 46 -11 46 -25 0 -19 44 -59 65 -59 7 0 23 8 36 19 18 14
19
+ 46 19 110 23 65 3 95 10 123 26 50 30 164 31 227 2 118 -53 240 5 305 144 15
20
+ 33 24 70 24 103 0 44 -5 58 -31 87 -45 51 -85 56 -171 21 -29 -12 -22 38 12
21
+ 87 67 96 53 232 -35 353 -13 19 -8 30 72 150 75 113 90 143 114 230 33 117 36
22
+ 145 13 145 -23 0 -185 -155 -208 -199 l-20 -36 -11 50 c-11 50 -11 50 22 81
23
+ 125 119 48 334 -120 334 -55 0 -79 -10 -122 -51 l-31 -29 -59 22 c-83 30 -208
24
+ 29 -288 -2 l-59 -22 -31 30 c-18 17 -45 36 -60 41 -41 16 -107 13 -142 -6z
25
+ m557 -83 c74 -23 159 -80 206 -139 42 -52 92 -158 92 -194 0 -33 -41 -161 -70
26
+ -217 -39 -77 -217 -136 -385 -127 -188 10 -313 97 -375 263 -19 53 -19 54 0
27
+ 116 73 236 308 367 532 298z m-437 -49 c3 -5 -4 -12 -14 -16 -11 -3 -32 -20
28
+ -46 -36 l-25 -31 0 36 c0 23 6 39 18 45 22 13 59 14 67 2z m698 -3 c16 -13 35
29
+ -68 22 -68 -16 0 -95 62 -90 71 9 13 48 11 68 -3z m66 -442 c-50 -81 -93 -145
30
+ -96 -142 -5 4 22 49 154 259 14 22 26 37 29 34 3 -2 -37 -70 -87 -151z m-171
31
+ -273 c-74 -117 -67 -107 -72 -102 -7 7 114 199 124 199 5 0 -18 -44 -52 -97z
32
+ m-378 -72 c63 -15 156 -13 218 3 29 7 52 9 52 4 0 -21 -21 -46 -44 -52 -13 -3
33
+ -38 -22 -56 -43 -30 -34 -32 -40 -27 -91 6 -54 5 -56 -53 -143 -33 -48 -69
34
+ -90 -80 -94 -11 -3 -25 -15 -30 -26 -11 -19 -11 -19 -53 2 -54 27 -144 94
35
+ -156 117 -8 16 -1 17 82 17 75 0 99 4 127 21 48 28 80 78 80 127 0 53 -56 111
36
+ -117 121 -40 7 -41 9 -31 32 7 15 17 23 27 20 9 -3 36 -10 61 -15z m174 -288
37
+ c-64 -99 -87 -133 -91 -129 -6 5 91 156 101 156 4 0 0 -12 -10 -27z m235 -45
38
+ c-32 -44 -90 -87 -148 -109 -30 -11 -58 -18 -62 -17 -5 2 13 37 39 78 l48 75
39
+ 71 0 71 0 -19 -27z m-864 -22 c67 -28 119 -138 83 -174 -34 -34 -124 11 -159
40
+ 79 -29 58 -16 96 39 108 1 1 18 -5 37 -13z m1199 -28 c13 -36 -24 -112 -66
41
+ -138 -46 -28 -82 -26 -107 6 l-21 27 27 49 c51 93 142 124 167 56z m-649 -93
42
+ c14 -13 25 -34 25 -47 0 -19 -3 -18 -18 12 -11 24 -28 39 -52 47 -34 11 -34
43
+ 12 -7 12 17 1 38 -9 52 -24z"/>
44
+ <path d="M765 1496 c-71 -31 -115 -122 -95 -198 23 -83 91 -119 158 -84 57 30
45
+ 122 119 122 168 0 37 -34 90 -71 110 -40 21 -72 22 -114 4z m121 -98 c19 -23
46
+ 19 -23 -2 -5 -11 9 -29 17 -39 17 -27 0 -55 -30 -55 -59 0 -31 8 -44 35 -59
47
+ 11 -6 15 -12 9 -12 -26 0 -57 37 -57 68 0 65 70 96 109 50z m-31 -26 c0 -18
48
+ -20 -15 -23 4 -3 10 1 15 10 12 7 -3 13 -10 13 -16z"/>
49
+ <path d="M1119 1487 c-94 -63 -83 -180 24 -258 75 -54 149 -32 182 56 31 80
50
+ -5 172 -79 206 -54 25 -86 24 -127 -4z m84 -79 c9 -7 20 -27 23 -45 5 -26 1
51
+ -37 -19 -57 -15 -14 -34 -26 -44 -26 -11 1 -6 6 14 15 36 15 48 42 34 78 -14
52
+ 35 -53 45 -89 22 l-27 -18 19 21 c21 24 63 29 89 10z m-23 -38 c0 -11 -4 -20
53
+ -10 -20 -5 0 -10 9 -10 20 0 11 5 20 10 20 6 0 10 -9 10 -20z"/>
54
+ <path d="M948 1249 c-14 -6 -29 -16 -32 -24 -6 -18 40 -75 61 -75 13 0 13 -3
55
+ 3 -15 -17 -21 -48 -19 -62 5 -17 26 -30 26 -26 -1 2 -12 15 -31 30 -42 23 -17
56
+ 31 -19 53 -9 19 9 32 9 47 1 28 -15 65 -3 84 27 13 19 14 28 5 37 -8 8 -15 6
57
+ -27 -11 -17 -24 -46 -29 -62 -9 -8 10 -4 16 19 26 57 25 61 72 7 90 -37 13
58
+ -64 13 -100 0z m42 -23 c0 -2 -9 -6 -20 -9 -11 -3 -20 -1 -20 4 0 5 9 9 20 9
59
+ 11 0 20 -2 20 -4z"/>
60
+ </g>
61
+ </svg>
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "",
3
+ "short_name": "",
4
+ "icons": [
5
+ {
6
+ "src": "/panda-cms-assets/favicons/android-chrome-192x192.png",
7
+ "sizes": "192x192",
8
+ "type": "image/png"
9
+ }
10
+ ],
11
+ "theme_color": "#ffffff",
12
+ "background_color": "#ffffff",
13
+ "display": "standalone"
14
+ }
@@ -0,0 +1,568 @@
1
+ trix-editor {
2
+ border: 1px solid #bbb;
3
+ border-radius: 3px;
4
+ margin: 0;
5
+ padding: 0.4em 0.6em;
6
+ min-height: 5em;
7
+ outline: none;
8
+ }
9
+
10
+ trix-toolbar * {
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ trix-toolbar .trix-button-row {
15
+ display: flex;
16
+ flex-wrap: nowrap;
17
+ justify-content: space-between;
18
+ overflow-x: auto;
19
+ }
20
+
21
+ trix-toolbar .trix-button-group {
22
+ display: flex;
23
+ margin-bottom: 10px;
24
+ border: 1px solid #bbb;
25
+ border-top-color: #ccc;
26
+ border-bottom-color: #888;
27
+ border-radius: 3px;
28
+ }
29
+
30
+ trix-toolbar .trix-button-group:not(:first-child) {
31
+ margin-left: 1.5vw;
32
+ }
33
+
34
+ @media (max-width: 768px) {
35
+ trix-toolbar .trix-button-group:not(:first-child) {
36
+ margin-left: 0;
37
+ }
38
+ }
39
+
40
+ trix-toolbar .trix-button-group-spacer {
41
+ flex-grow: 1;
42
+ }
43
+
44
+ @media (max-width: 768px) {
45
+ trix-toolbar .trix-button-group-spacer {
46
+ display: none;
47
+ }
48
+ }
49
+
50
+ trix-toolbar .trix-button {
51
+ position: relative;
52
+ float: left;
53
+ color: rgba(0, 0, 0, 0.6);
54
+ font-size: 0.75em;
55
+ font-weight: 600;
56
+ white-space: nowrap;
57
+ padding: 0 0.5em;
58
+ margin: 0;
59
+ outline: none;
60
+ border: none;
61
+ border-bottom: 1px solid #ddd;
62
+ border-radius: 0;
63
+ background: transparent;
64
+ }
65
+
66
+ trix-toolbar .trix-button:not(:first-child) {
67
+ border-left: 1px solid #ccc;
68
+ }
69
+
70
+ trix-toolbar .trix-button.trix-active {
71
+ background: #cbeefa;
72
+ color: black;
73
+ }
74
+
75
+ trix-toolbar .trix-button:not(:disabled) {
76
+ cursor: pointer;
77
+ }
78
+
79
+ trix-toolbar .trix-button:disabled {
80
+ color: rgba(0, 0, 0, 0.125);
81
+ }
82
+
83
+ @media (max-width: 768px) {
84
+ trix-toolbar .trix-button {
85
+ letter-spacing: -0.01em;
86
+ padding: 0 0.3em;
87
+ }
88
+ }
89
+
90
+ trix-toolbar .trix-button--icon {
91
+ font-size: inherit;
92
+ width: 2.6em;
93
+ height: 1.6em;
94
+ max-width: calc(0.8em + 4vw);
95
+ text-indent: -9999px;
96
+ }
97
+
98
+ @media (max-width: 768px) {
99
+ trix-toolbar .trix-button--icon {
100
+ height: 2em;
101
+ max-width: calc(0.8em + 3.5vw);
102
+ }
103
+ }
104
+
105
+ trix-toolbar .trix-button--icon::before {
106
+ display: inline-block;
107
+ position: absolute;
108
+ top: 0;
109
+ right: 0;
110
+ bottom: 0;
111
+ left: 0;
112
+ opacity: 0.6;
113
+ content: "";
114
+ background-position: center;
115
+ background-repeat: no-repeat;
116
+ background-size: contain;
117
+ }
118
+
119
+ @media (max-width: 768px) {
120
+ trix-toolbar .trix-button--icon::before {
121
+ right: 6%;
122
+ left: 6%;
123
+ }
124
+ }
125
+
126
+ trix-toolbar .trix-button--icon.trix-active::before {
127
+ opacity: 1;
128
+ }
129
+
130
+ trix-toolbar .trix-button--icon:disabled::before {
131
+ opacity: 0.125;
132
+ }
133
+
134
+ trix-toolbar .trix-button--icon-attach::before {
135
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.5%2018V7.5c0-2.25%203-2.25%203%200V18c0%204.125-6%204.125-6%200V7.5c0-6.375%209-6.375%209%200V18%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-miterlimit%3D%2210%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");
136
+ top: 8%;
137
+ bottom: 4%;
138
+ }
139
+
140
+ trix-toolbar .trix-button--icon-bold::before {
141
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6.522%2019.242a.5.5%200%200%201-.5-.5V5.35a.5.5%200%200%201%20.5-.5h5.783c1.347%200%202.46.345%203.24.982.783.64%201.216%201.562%201.216%202.683%200%201.13-.587%202.129-1.476%202.71a.35.35%200%200%200%20.049.613c1.259.56%202.101%201.742%202.101%203.22%200%201.282-.483%202.334-1.363%203.063-.876.726-2.132%201.12-3.66%201.12h-5.89ZM9.27%207.347v3.362h1.97c.766%200%201.347-.17%201.733-.464.38-.291.587-.716.587-1.27%200-.53-.183-.928-.513-1.198-.334-.273-.838-.43-1.505-.43H9.27Zm0%205.606v3.791h2.389c.832%200%201.448-.177%201.853-.497.399-.315.614-.786.614-1.423%200-.62-.22-1.077-.63-1.385-.418-.313-1.053-.486-1.905-.486H9.27Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
142
+ }
143
+
144
+ trix-toolbar .trix-button--icon-italic::before {
145
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M9%205h6.5v2h-2.23l-2.31%2010H13v2H6v-2h2.461l2.306-10H9V5Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
146
+ }
147
+
148
+ trix-toolbar .trix-button--icon-link::before {
149
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M18.948%205.258a4.337%204.337%200%200%200-6.108%200L11.217%206.87a.993.993%200%200%200%200%201.41c.392.39%201.027.39%201.418%200l1.623-1.613a2.323%202.323%200%200%201%203.271%200%202.29%202.29%200%200%201%200%203.251l-2.393%202.38a3.021%203.021%200%200%201-4.255%200l-.05-.049a1.007%201.007%200%200%200-1.418%200%20.993.993%200%200%200%200%201.41l.05.049a5.036%205.036%200%200%200%207.091%200l2.394-2.38a4.275%204.275%200%200%200%200-6.072Zm-13.683%2013.6a4.337%204.337%200%200%200%206.108%200l1.262-1.255a.993.993%200%200%200%200-1.41%201.007%201.007%200%200%200-1.418%200L9.954%2017.45a2.323%202.323%200%200%201-3.27%200%202.29%202.29%200%200%201%200-3.251l2.344-2.331a2.579%202.579%200%200%201%203.631%200c.392.39%201.027.39%201.419%200a.993.993%200%200%200%200-1.41%204.593%204.593%200%200%200-6.468%200l-2.345%202.33a4.275%204.275%200%200%200%200%206.072Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
150
+ }
151
+
152
+ trix-toolbar .trix-button--icon-strike::before {
153
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6%2014.986c.088%202.647%202.246%204.258%205.635%204.258%203.496%200%205.713-1.728%205.713-4.463%200-.275-.02-.536-.062-.781h-3.461c.398.293.573.654.573%201.123%200%201.035-1.074%201.787-2.646%201.787-1.563%200-2.773-.762-2.91-1.924H6ZM6.432%2010h3.763c-.632-.314-.914-.715-.914-1.273%200-1.045.977-1.739%202.432-1.739%201.475%200%202.52.723%202.617%201.914h2.764c-.05-2.548-2.11-4.238-5.39-4.238-3.145%200-5.392%201.719-5.392%204.316%200%20.363.04.703.12%201.02ZM4%2011a1%201%200%201%200%200%202h15a1%201%200%201%200%200-2H4Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
154
+ }
155
+
156
+ trix-toolbar .trix-button--icon-quote::before {
157
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M4.581%208.471c.44-.5%201.056-.834%201.758-.995C8.074%207.17%209.201%207.822%2010%208.752c1.354%201.578%201.33%203.555.394%205.277-.941%201.731-2.788%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.121-.49.16-.764.294-.286.567-.566.791-.835.222-.266.413-.54.524-.815.113-.28.156-.597.026-.908-.128-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.674-2.7c0-.905.283-1.59.72-2.088Zm9.419%200c.44-.5%201.055-.834%201.758-.995%201.734-.306%202.862.346%203.66%201.276%201.355%201.578%201.33%203.555.395%205.277-.941%201.731-2.789%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.122-.49.16-.764.294-.286.567-.566.791-.835.222-.266.412-.54.523-.815.114-.28.157-.597.026-.908-.127-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.672-2.701c0-.905.283-1.59.72-2.088Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
158
+ }
159
+
160
+ trix-toolbar .trix-button--icon-heading-1::before {
161
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21.5%207.5v-3h-12v3H14v13h3v-13h4.5ZM9%2013.5h3.5v-3h-10v3H6v7h3v-7Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
162
+ }
163
+
164
+ trix-toolbar .trix-button--icon-code::before {
165
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3.293%2011.293a1%201%200%200%200%200%201.414l4%204a1%201%200%201%200%201.414-1.414L5.414%2012l3.293-3.293a1%201%200%200%200-1.414-1.414l-4%204Zm13.414%205.414%204-4a1%201%200%200%200%200-1.414l-4-4a1%201%200%201%200-1.414%201.414L18.586%2012l-3.293%203.293a1%201%200%200%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
166
+ }
167
+
168
+ trix-toolbar .trix-button--icon-bullet-list::before {
169
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%207.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203ZM8%206a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-2.5-5a1.5%201.5%200%201%201-3%200%201.5%201.5%200%200%201%203%200ZM5%2019.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
170
+ }
171
+
172
+ trix-toolbar .trix-button--icon-number-list::before {
173
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%204h2v4H4V5H3V4Zm5%202a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-3.5-7H6v1l-1.5%202H6v1H3v-1l1.667-2H3v-1h2.5ZM3%2017v-1h3v4H3v-1h2v-.5H4v-1h1V17H3Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
174
+ }
175
+
176
+ trix-toolbar .trix-button--icon-undo::before {
177
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%2014a1%201%200%200%200%201%201h6a1%201%200%201%200%200-2H6.257c2.247-2.764%205.151-3.668%207.579-3.264%202.589.432%204.739%202.356%205.174%205.405a1%201%200%200%200%201.98-.283c-.564-3.95-3.415-6.526-6.825-7.095C11.084%207.25%207.63%208.377%205%2011.39V8a1%201%200%200%200-2%200v6Zm2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
178
+ }
179
+
180
+ trix-toolbar .trix-button--icon-redo::before {
181
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2014a1%201%200%200%201-1%201h-6a1%201%200%201%201%200-2h3.743c-2.247-2.764-5.151-3.668-7.579-3.264-2.589.432-4.739%202.356-5.174%205.405a1%201%200%200%201-1.98-.283c.564-3.95%203.415-6.526%206.826-7.095%203.08-.513%206.534.614%209.164%203.626V8a1%201%200%201%201%202%200v6Zm-2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
182
+ }
183
+
184
+ trix-toolbar .trix-button--icon-decrease-nesting-level::before {
185
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-3.707-5.707a1%201%200%200%200%200%201.414l2%202a1%201%200%201%200%201.414-1.414L4.414%2012l1.293-1.293a1%201%200%200%200-1.414-1.414l-2%202Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
186
+ }
187
+
188
+ trix-toolbar .trix-button--icon-increase-nesting-level::before {
189
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-2.293-2.293%202-2a1%201%200%200%200%200-1.414l-2-2a1%201%200%201%200-1.414%201.414L3.586%2012l-1.293%201.293a1%201%200%201%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
190
+ }
191
+
192
+ trix-toolbar .trix-dialogs {
193
+ position: relative;
194
+ }
195
+
196
+ trix-toolbar .trix-dialog {
197
+ position: absolute;
198
+ top: 0;
199
+ left: 0;
200
+ right: 0;
201
+ font-size: 0.75em;
202
+ padding: 15px 10px;
203
+ background: #fff;
204
+ box-shadow: 0 0.3em 1em #ccc;
205
+ border-top: 2px solid #888;
206
+ border-radius: 5px;
207
+ z-index: 5;
208
+ }
209
+
210
+ trix-toolbar .trix-input--dialog {
211
+ font-size: inherit;
212
+ font-weight: normal;
213
+ padding: 0.5em 0.8em;
214
+ margin: 0 10px 0 0;
215
+ border-radius: 3px;
216
+ border: 1px solid #bbb;
217
+ background-color: #fff;
218
+ box-shadow: none;
219
+ outline: none;
220
+ -webkit-appearance: none;
221
+ -moz-appearance: none;
222
+ }
223
+
224
+ trix-toolbar .trix-input--dialog.validate:invalid {
225
+ box-shadow: #F00 0px 0px 1.5px 1px;
226
+ }
227
+
228
+ trix-toolbar .trix-button--dialog {
229
+ font-size: inherit;
230
+ padding: 0.5em;
231
+ border-bottom: none;
232
+ }
233
+
234
+ trix-toolbar .trix-dialog--link {
235
+ max-width: 600px;
236
+ }
237
+
238
+ trix-toolbar .trix-dialog__link-fields {
239
+ display: flex;
240
+ align-items: baseline;
241
+ }
242
+
243
+ trix-toolbar .trix-dialog__link-fields .trix-input {
244
+ flex: 1;
245
+ }
246
+
247
+ trix-toolbar .trix-dialog__link-fields .trix-button-group {
248
+ flex: 0 0 content;
249
+ margin: 0;
250
+ }
251
+
252
+ trix-editor [data-trix-mutable]:not(.attachment__caption-editor) {
253
+ -webkit-user-select: none;
254
+ -moz-user-select: none;
255
+ -ms-user-select: none;
256
+ user-select: none;
257
+ }
258
+
259
+ trix-editor [data-trix-mutable]::-moz-selection,
260
+ trix-editor [data-trix-cursor-target]::-moz-selection,
261
+ trix-editor [data-trix-mutable] ::-moz-selection {
262
+ background: none;
263
+ }
264
+
265
+ trix-editor [data-trix-mutable]::selection,
266
+ trix-editor [data-trix-cursor-target]::selection,
267
+ trix-editor [data-trix-mutable] ::selection {
268
+ background: none;
269
+ }
270
+
271
+ trix-editor .attachment__caption-editor:focus[data-trix-mutable]::-moz-selection {
272
+ background: highlight;
273
+ }
274
+
275
+ trix-editor .attachment__caption-editor:focus[data-trix-mutable]::selection {
276
+ background: highlight;
277
+ }
278
+
279
+ trix-editor [data-trix-mutable].attachment.attachment--file {
280
+ box-shadow: 0 0 0 2px highlight;
281
+ border-color: transparent;
282
+ }
283
+
284
+ trix-editor [data-trix-mutable].attachment img {
285
+ box-shadow: 0 0 0 2px highlight;
286
+ }
287
+
288
+ trix-editor .attachment {
289
+ position: relative;
290
+ }
291
+
292
+ trix-editor .attachment:hover {
293
+ cursor: default;
294
+ }
295
+
296
+ trix-editor .attachment--preview .attachment__caption:hover {
297
+ cursor: text;
298
+ }
299
+
300
+ trix-editor .attachment__progress {
301
+ position: absolute;
302
+ z-index: 1;
303
+ height: 20px;
304
+ top: calc(50% - 10px);
305
+ left: 5%;
306
+ width: 90%;
307
+ opacity: 0.9;
308
+ transition: opacity 200ms ease-in;
309
+ }
310
+
311
+ trix-editor .attachment__progress[value="100"] {
312
+ opacity: 0;
313
+ }
314
+
315
+ trix-editor .attachment__caption-editor {
316
+ display: inline-block;
317
+ width: 100%;
318
+ margin: 0;
319
+ padding: 0;
320
+ font-size: inherit;
321
+ font-family: inherit;
322
+ line-height: inherit;
323
+ color: inherit;
324
+ text-align: center;
325
+ vertical-align: top;
326
+ border: none;
327
+ outline: none;
328
+ -webkit-appearance: none;
329
+ -moz-appearance: none;
330
+ }
331
+
332
+ trix-editor .attachment__toolbar {
333
+ position: absolute;
334
+ z-index: 1;
335
+ top: -0.9em;
336
+ left: 0;
337
+ width: 100%;
338
+ text-align: center;
339
+ }
340
+
341
+ trix-editor .trix-button-group {
342
+ display: inline-flex;
343
+ }
344
+
345
+ trix-editor .trix-button {
346
+ position: relative;
347
+ float: left;
348
+ color: #666;
349
+ white-space: nowrap;
350
+ font-size: 80%;
351
+ padding: 0 0.8em;
352
+ margin: 0;
353
+ outline: none;
354
+ border: none;
355
+ border-radius: 0;
356
+ background: transparent;
357
+ }
358
+
359
+ trix-editor .trix-button:not(:first-child) {
360
+ border-left: 1px solid #ccc;
361
+ }
362
+
363
+ trix-editor .trix-button.trix-active {
364
+ background: #cbeefa;
365
+ }
366
+
367
+ trix-editor .trix-button:not(:disabled) {
368
+ cursor: pointer;
369
+ }
370
+
371
+ trix-editor .trix-button--remove {
372
+ text-indent: -9999px;
373
+ display: inline-block;
374
+ padding: 0;
375
+ outline: none;
376
+ width: 1.8em;
377
+ height: 1.8em;
378
+ line-height: 1.8em;
379
+ border-radius: 50%;
380
+ background-color: #fff;
381
+ border: 2px solid highlight;
382
+ box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.25);
383
+ }
384
+
385
+ trix-editor .trix-button--remove::before {
386
+ display: inline-block;
387
+ position: absolute;
388
+ top: 0;
389
+ right: 0;
390
+ bottom: 0;
391
+ left: 0;
392
+ opacity: 0.7;
393
+ content: "";
394
+ background-image: url("data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19%206.41%2017.59%205%2012%2010.59%206.41%205%205%206.41%2010.59%2012%205%2017.59%206.41%2019%2012%2013.41%2017.59%2019%2019%2017.59%2013.41%2012z%22%2F%3E%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3C%2Fsvg%3E");
395
+ background-position: center;
396
+ background-repeat: no-repeat;
397
+ background-size: 90%;
398
+ }
399
+
400
+ trix-editor .trix-button--remove:hover {
401
+ border-color: #333;
402
+ }
403
+
404
+ trix-editor .trix-button--remove:hover::before {
405
+ opacity: 1;
406
+ }
407
+
408
+ trix-editor .attachment__metadata-container {
409
+ position: relative;
410
+ }
411
+
412
+ trix-editor .attachment__metadata {
413
+ position: absolute;
414
+ left: 50%;
415
+ top: 2em;
416
+ transform: translate(-50%, 0);
417
+ max-width: 90%;
418
+ padding: 0.1em 0.6em;
419
+ font-size: 0.8em;
420
+ color: #fff;
421
+ background-color: rgba(0, 0, 0, 0.7);
422
+ border-radius: 3px;
423
+ }
424
+
425
+ trix-editor .attachment__metadata .attachment__name {
426
+ display: inline-block;
427
+ max-width: 100%;
428
+ vertical-align: bottom;
429
+ overflow: hidden;
430
+ text-overflow: ellipsis;
431
+ white-space: nowrap;
432
+ }
433
+
434
+ trix-editor .attachment__metadata .attachment__size {
435
+ margin-left: 0.2em;
436
+ white-space: nowrap;
437
+ }
438
+
439
+ trix-editor {
440
+ margin-top: -0.5em !important;
441
+ border-style: dashed !important;
442
+ }
443
+
444
+ /* content styles */
445
+ .panda-cms-content {
446
+ line-height: 1.5;
447
+ overflow-wrap: break-word;
448
+ word-break: break-word;
449
+ }
450
+
451
+ .panda-cms-content * {
452
+ box-sizing: border-box;
453
+ margin: 0;
454
+ padding: 0;
455
+ }
456
+
457
+ .panda-cms-content h1 {
458
+ font-size: 1.2em;
459
+ line-height: 1.2;
460
+ }
461
+
462
+ .panda-cms-content h2 {
463
+ font-size: 1em;
464
+ font-weight: 300;
465
+ color: red !important;
466
+ }
467
+
468
+ .panda-cms-content blockquote {
469
+ border: 0 solid #ccc;
470
+ border-left-width: 0.3em;
471
+ margin-left: 0.3em;
472
+ padding-left: 0.6em;
473
+ }
474
+
475
+ .panda-cms-content [dir=rtl] blockquote,
476
+ .panda-cms-content blockquote[dir=rtl] {
477
+ border-width: 0;
478
+ border-right-width: 0.3em;
479
+ margin-right: 0.3em;
480
+ padding-right: 0.6em;
481
+ }
482
+
483
+ .panda-cms-content li {
484
+ margin-left: 1em;
485
+ }
486
+
487
+ .panda-cms-content [dir=rtl] li {
488
+ margin-right: 1em;
489
+ }
490
+
491
+ .panda-cms-content pre {
492
+ display: inline-block;
493
+ width: 100%;
494
+ vertical-align: top;
495
+ font-family: monospace;
496
+ font-size: 0.9em;
497
+ padding: 0.5em;
498
+ white-space: pre;
499
+ background-color: #eee;
500
+ overflow-x: auto;
501
+ }
502
+
503
+ .panda-cms-content img {
504
+ max-width: 100%;
505
+ height: auto;
506
+ }
507
+
508
+ .panda-cms-content .attachment {
509
+ display: inline-block;
510
+ position: relative;
511
+ max-width: 100%;
512
+ }
513
+
514
+ .panda-cms-content .attachment a {
515
+ color: inherit;
516
+ text-decoration: none;
517
+ }
518
+
519
+ .panda-cms-content .attachment a:hover,
520
+ .panda-cms-content .attachment a:visited:hover {
521
+ color: inherit;
522
+ }
523
+
524
+ .panda-cms-content .attachment__caption {
525
+ text-align: center;
526
+ }
527
+
528
+ .panda-cms-content .attachment__caption .attachment__name+.attachment__size::before {
529
+ content: ' \2022 ';
530
+ }
531
+
532
+ .panda-cms-content .attachment--preview {
533
+ width: 100%;
534
+ text-align: center;
535
+ }
536
+
537
+ .panda-cms-content .attachment--preview .attachment__caption {
538
+ color: #666;
539
+ font-size: 0.9em;
540
+ line-height: 1.2;
541
+ }
542
+
543
+ .panda-cms-content .attachment--file {
544
+ color: #333;
545
+ line-height: 1;
546
+ margin: 0 2px 2px 2px;
547
+ padding: 0.4em 1em;
548
+ border: 1px solid #bbb;
549
+ border-radius: 5px;
550
+ }
551
+
552
+ .panda-cms-content .attachment-gallery {
553
+ display: flex;
554
+ flex-wrap: wrap;
555
+ position: relative;
556
+ }
557
+
558
+ .panda-cms-content .attachment-gallery .attachment {
559
+ flex: 1 0 33%;
560
+ padding: 0 0.5em;
561
+ max-width: 33%;
562
+ }
563
+
564
+ .panda-cms-content .attachment-gallery.attachment-gallery--2 .attachment,
565
+ .panda-cms-content .attachment-gallery.attachment-gallery--4 .attachment {
566
+ flex-basis: 50%;
567
+ max-width: 50%;
568
+ }