From af399700a4fe94fc1ca35c3e3683078029ac0924 Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Wed, 29 Jan 2020 22:24:19 +0000
Subject: [PATCH] Issue #3108109 by bnjmnm, lauriii: Decouple Classy libraries
 from Claro

---
 .../Core/Theme/ConfirmClassyCopiesTest.php    | 47 ++++++++++++--
 .../Theme/ThemeNotUsingClassyLibraryTest.php  | 22 +------
 core/themes/claro/claro.info.yml              | 52 +++++++++++++---
 core/themes/claro/claro.libraries.yml         | 53 ++++++++++++++++
 .../css/classy/components/book-navigation.css | 40 ++++++++++++
 .../classy/components/container-inline.css    | 22 +++++++
 .../css/classy/components/exposed-filters.css | 46 ++++++++++++++
 .../claro/css/classy/components/field.css     | 25 ++++++++
 .../claro/css/classy/components/file.css      | 62 +++++++++++++++++++
 .../claro/css/classy/components/forum.css     | 46 ++++++++++++++
 .../claro/css/classy/components/icons.css     | 21 +++++++
 .../claro/css/classy/components/indented.css  | 16 +++++
 .../css/classy/components/inline-form.css     | 33 ++++++++++
 .../claro/css/classy/components/item-list.css | 32 ++++++++++
 .../claro/css/classy/components/link.css      | 16 +++++
 .../claro/css/classy/components/links.css     | 23 +++++++
 .../classy/components/media-embed-error.css   | 20 ++++++
 .../claro/css/classy/components/menu.css      | 34 ++++++++++
 .../claro/css/classy/components/more-link.css | 12 ++++
 .../claro/css/classy/components/node.css      |  8 +++
 .../css/classy/components/search-results.css  |  8 +++
 .../claro/css/classy/components/tablesort.css | 11 ++++
 .../claro/css/classy/components/textarea.css  | 11 ++++
 .../claro/css/classy/components/ui-dialog.css | 15 +++++
 core/themes/claro/css/layout/image-widget.css |  2 +-
 .../claro/css/layout/image-widget.pcss.css    |  2 +-
 core/themes/claro/images/classy/README.txt    | 12 ++++
 .../classy/icons/application-octet-stream.png |  3 +
 .../images/classy/icons/application-pdf.png   |  5 ++
 .../classy/icons/application-x-executable.png |  3 +
 .../images/classy/icons/audio-x-generic.png   |  3 +
 .../claro/images/classy/icons/forum-icons.png | 10 +++
 .../images/classy/icons/image-x-generic.png   |  6 ++
 .../images/classy/icons/package-x-generic.png |  4 ++
 .../claro/images/classy/icons/text-html.png   |  7 +++
 .../claro/images/classy/icons/text-plain.png  |  4 ++
 .../images/classy/icons/text-x-generic.png    |  4 ++
 .../images/classy/icons/text-x-script.png     |  5 ++
 .../images/classy/icons/video-x-generic.png   |  5 ++
 .../images/classy/icons/x-office-document.png |  5 ++
 .../classy/icons/x-office-presentation.png    |  5 ++
 .../classy/icons/x-office-spreadsheet.png     |  4 ++
 core/themes/claro/js/classy/README.txt        | 12 ++++
 .../classy/media_embed_ckeditor.theme.es6.js  | 22 +++++++
 .../js/classy/media_embed_ckeditor.theme.js   | 12 ++++
 45 files changed, 774 insertions(+), 36 deletions(-)
 create mode 100644 core/themes/claro/css/classy/components/book-navigation.css
 create mode 100644 core/themes/claro/css/classy/components/container-inline.css
 create mode 100644 core/themes/claro/css/classy/components/exposed-filters.css
 create mode 100644 core/themes/claro/css/classy/components/field.css
 create mode 100644 core/themes/claro/css/classy/components/file.css
 create mode 100644 core/themes/claro/css/classy/components/forum.css
 create mode 100644 core/themes/claro/css/classy/components/icons.css
 create mode 100644 core/themes/claro/css/classy/components/indented.css
 create mode 100644 core/themes/claro/css/classy/components/inline-form.css
 create mode 100644 core/themes/claro/css/classy/components/item-list.css
 create mode 100644 core/themes/claro/css/classy/components/link.css
 create mode 100644 core/themes/claro/css/classy/components/links.css
 create mode 100644 core/themes/claro/css/classy/components/media-embed-error.css
 create mode 100644 core/themes/claro/css/classy/components/menu.css
 create mode 100644 core/themes/claro/css/classy/components/more-link.css
 create mode 100644 core/themes/claro/css/classy/components/node.css
 create mode 100644 core/themes/claro/css/classy/components/search-results.css
 create mode 100644 core/themes/claro/css/classy/components/tablesort.css
 create mode 100644 core/themes/claro/css/classy/components/textarea.css
 create mode 100644 core/themes/claro/css/classy/components/ui-dialog.css
 create mode 100644 core/themes/claro/images/classy/README.txt
 create mode 100644 core/themes/claro/images/classy/icons/application-octet-stream.png
 create mode 100644 core/themes/claro/images/classy/icons/application-pdf.png
 create mode 100644 core/themes/claro/images/classy/icons/application-x-executable.png
 create mode 100644 core/themes/claro/images/classy/icons/audio-x-generic.png
 create mode 100644 core/themes/claro/images/classy/icons/forum-icons.png
 create mode 100644 core/themes/claro/images/classy/icons/image-x-generic.png
 create mode 100644 core/themes/claro/images/classy/icons/package-x-generic.png
 create mode 100644 core/themes/claro/images/classy/icons/text-html.png
 create mode 100644 core/themes/claro/images/classy/icons/text-plain.png
 create mode 100644 core/themes/claro/images/classy/icons/text-x-generic.png
 create mode 100644 core/themes/claro/images/classy/icons/text-x-script.png
 create mode 100644 core/themes/claro/images/classy/icons/video-x-generic.png
 create mode 100644 core/themes/claro/images/classy/icons/x-office-document.png
 create mode 100644 core/themes/claro/images/classy/icons/x-office-presentation.png
 create mode 100644 core/themes/claro/images/classy/icons/x-office-spreadsheet.png
 create mode 100644 core/themes/claro/js/classy/README.txt
 create mode 100644 core/themes/claro/js/classy/media_embed_ckeditor.theme.es6.js
 create mode 100644 core/themes/claro/js/classy/media_embed_ckeditor.theme.js

diff --git a/core/tests/Drupal/KernelTests/Core/Theme/ConfirmClassyCopiesTest.php b/core/tests/Drupal/KernelTests/Core/Theme/ConfirmClassyCopiesTest.php
index afc3906532a9..74ce8db2f5e1 100644
--- a/core/tests/Drupal/KernelTests/Core/Theme/ConfirmClassyCopiesTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Theme/ConfirmClassyCopiesTest.php
@@ -161,13 +161,52 @@ public function providerTestClassyCopies() {
           ],
         ],
       ],
-      // Will be populated when Classy libraries are copied to Claro.
       'claro' => [
         'theme-name' => 'claro',
         'file-hashes' => [
-          'css' => [],
-          'js' => [],
-          'images' => [],
+          'css' => [
+            'file.css' => 'b644547e5e8eb6aa23505b307dc69c32',
+            'book-navigation.css' => 'e8219368d360bd4a10763610ada85a1c',
+            'ui-dialog.css' => '4a3d036007ba8c8c80f4a21a369c72cc',
+            'item-list.css' => '1d519afe6007f4b01e00f22b0ba8bf33',
+            'field.css' => '8f4718bc926eea7e007ecfd6f410ee8d',
+            'tablesort.css' => 'f6ed3b44832bebffa09fc3b4b6ce27ab',
+            'forum.css' => '297a40db815570c2195515767c4b3144',
+            'inline-form.css' => 'cc5cbfd34511d9021a53ec693c110740',
+            'link.css' => '22f42d430fe458080a7739c70a2d2ea5',
+            'textarea.css' => '2bc390c137c5205bbcd7645d6c1c86de',
+            'links.css' => '21fe64349f5702cd5b89104a1d3b9cd3',
+            'exposed-filters.css' => '396a5f76dafec5f78f4e736f69a0874f',
+            'indented.css' => '48e214a106d9fede1e05aa10b4796361',
+            'search-results.css' => 'ce3ca8fcd54e72f142ba29da5a3a5c9a',
+            'node.css' => '81ea0a3fef211dbc32549ac7f39ec646',
+            'menu.css' => 'ddb533716fc3be2ad76f283c5532ee85',
+            'icons.css' => '85b21f21c0017e6a9fc83d00462904d0',
+            'media-embed-error.css' => '015171a1f01fff8e2bec4e06d9b451e7',
+            'container-inline.css' => 'ae9caee6071b319ac97bf0bb3e14b542',
+            'more-link.css' => 'b2ebfb826e035334340193b42246b180',
+          ],
+          'js' => [
+            'media_embed_ckeditor.theme.es6.js' => 'decf95c314bf22c642fb630179502e43',
+            'media_embed_ckeditor.theme.js' => '1b17d61e258c4fdaa129acecf773f04e',
+          ],
+          'images' => [
+            'x-office-spreadsheet.png' => 'fc5d4b32f259ea6d0f960b17a0886f63',
+            'application-octet-stream.png' => 'fef73511632890590b5ae0a13c99e4bf',
+            'x-office-presentation.png' => '8ba9f51c97a2b47de2c8c117aafd7dcd',
+            'x-office-document.png' => '48e0c92b5dec1a027f43a5c6fe190f39',
+            'image-x-generic.png' => '9aca2e02c3cdbb391ca721d40fa4c0c6',
+            'text-x-script.png' => 'f9dc156d35298536011ea48226b21682',
+            'text-html.png' => '9d2d3003a786ab392d42744b2d064eec',
+            'video-x-generic.png' => 'a5dc89b884a8a1b666c15bb41fd88ee9',
+            'forum-icons.png' => 'dfa091b192819cc14523ccd653e7b5ff',
+            'text-x-generic.png' => '1b769df473f54d6f78f7aba79ec25e12',
+            'application-pdf.png' => 'bb41f8b679b9d93323b30c87fde14de9',
+            'application-x-executable.png' => 'fef73511632890590b5ae0a13c99e4bf',
+            'package-x-generic.png' => 'bb8581301a2030b48ff3c67374eed88a',
+            'text-plain.png' => '1b769df473f54d6f78f7aba79ec25e12',
+            'audio-x-generic.png' => 'f7d0e6fbcde58594bd1102db95e3ea7b',
+          ],
         ],
       ],
       'seven' => [
diff --git a/core/tests/Drupal/KernelTests/Core/Theme/ThemeNotUsingClassyLibraryTest.php b/core/tests/Drupal/KernelTests/Core/Theme/ThemeNotUsingClassyLibraryTest.php
index af6d033eeca5..8ffc965d91cd 100644
--- a/core/tests/Drupal/KernelTests/Core/Theme/ThemeNotUsingClassyLibraryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Theme/ThemeNotUsingClassyLibraryTest.php
@@ -397,19 +397,7 @@ public function providerTestThemeNotUsingClassyLibraries() {
     return [
       'claro' => [
         'theme-name' => 'claro',
-        'to-skip' => [
-          'base',
-          'book-navigation',
-          'file',
-          'forum',
-          'image-widget',
-          'indented',
-          'media_library',
-          'node',
-          'search-results',
-          'media_embed_error',
-          'media_embed_ckeditor_theme',
-        ],
+        'to-skip' => [],
       ],
       'umami' => [
         'theme-name' => 'umami',
@@ -456,13 +444,7 @@ public function providerTestThemeAccountsForClassyExtensions() {
     return [
       [
         'theme-name' => 'claro',
-        'to-skip' => [
-          'core/drupal.dialog',
-          'core/drupal.progress',
-          'media/media_embed_ckeditor_theme',
-          'media_library/view',
-          'media_library/widget',
-        ],
+        'to-skip' => [],
       ],
       [
         'theme-name' => 'umami',
diff --git a/core/themes/claro/claro.info.yml b/core/themes/claro/claro.info.yml
index 6a188e00de3d..509c165bb007 100644
--- a/core/themes/claro/claro.info.yml
+++ b/core/themes/claro/claro.info.yml
@@ -70,30 +70,57 @@ libraries-override:
         css/components/action-links.css: false
         css/components/breadcrumb.css: false
         css/components/button.css: false
+        css/components/collapse-processed.css: false
+        css/components/container-inline.css: css/classy/components/container-inline.css
         css/components/details.css: false
         css/components/dropbutton.css: false
+        css/components/exposed-filters.css: css/classy/components/exposed-filters.css
+        css/components/field.css: css/classy/components/field.css
         css/components/form.css: false
-        css/components/tabs.css: false
+        css/components/icons.css: css/classy/components/icons.css
+        css/components/inline-form.css: css/classy/components/inline-form.css
+        css/components/item-list.css: css/classy/components/item-list.css
+        css/components/link.css: css/classy/components/link.css
+        css/components/links.css: css/classy/components/links.css
+        css/components/menu.css: css/classy/components/menu.css
+        css/components/more-link.css: css/classy/components/more-link.css
         css/components/pager.css: false
-        css/components/tableselect.css: css/components/tableselect.css
         css/components/tabledrag.css: false
-        css/components/collapse-processed.css: false
+        css/components/tableselect.css: css/components/tableselect.css
+        css/components/tablesort.css: css/classy/components/tablesort.css
+        css/components/tabs.css: false
+        css/components/textarea.css: css/classy/components/textarea.css
+        css/components/ui-dialog.css: css/classy/components/ui-dialog.css
+
+  classy/book-navigation: claro/classy.book-navigation
 
   classy/dropbutton:
     css:
       component:
         css/components/dropbutton.css: false
 
+  classy/file: claro/classy.file
+
+  classy/forum: claro/classy.forum
+
+  classy/image-widget: claro/image-widget
+
+  classy/indented: claro/classy.indented
+
+  classy/media_embed_ckeditor_theme: claro/classy.media_embed_ckeditor_theme
+
+  classy/media_embed_error: claro/classy.media_embed_error
+
   classy/messages:
     css:
       component:
         css/components/messages.css: false
 
-  classy/progress:
-    css:
-      component:
-        css/components/progress.css: css/components/progress.css
-  # @todo Refactor when https://www.drupal.org/node/2642122 is fixed.
+  classy/node: claro/classy.node
+
+  classy/progress: claro/progress
+
+  classy/search-results: claro/classy.search-results
 
   classy/user: false
 
@@ -128,18 +155,20 @@ libraries-override:
 libraries-extend:
   ckeditor/drupal.ckeditor:
     - claro/ckeditor-editor
-  classy/image-widget:
-    - claro/image-widget
   core/ckeditor:
     - claro/ckeditor-dialog
   core/drupal.collapse:
     - claro/details-focus
+  core/drupal.dialog:
+    - claro/claro.drupal.dialog
   core/drupal.dropbutton:
     - claro/dropbutton
   core/drupal.checkbox:
     - claro/checkbox
   core/drupal.message:
     - claro/messages
+  core/drupal.progress:
+    - claro/progress
   core/drupal.vertical-tabs:
     - claro/vertical-tabs
   core/jquery.ui:
@@ -158,6 +187,8 @@ libraries-extend:
     - claro/ajax
   views/views.module:
     - claro/views
+  media/media_embed_ckeditor_theme:
+    - claro/classy.media_embed_ckeditor_theme
   media_library/view:
     - claro/media_library.theme
   media_library/widget:
@@ -169,6 +200,7 @@ ckeditor_stylesheets:
   - css/base/elements.css
   - css/base/typography.css
   - css/theme/ckeditor-frame.css
+  - css/classy/components/media-embed-error.css
 
 regions:
   header: 'Header'
diff --git a/core/themes/claro/claro.libraries.yml b/core/themes/claro/claro.libraries.yml
index 13f0ea1efc83..6c0cc22cc4d9 100644
--- a/core/themes/claro/claro.libraries.yml
+++ b/core/themes/claro/claro.libraries.yml
@@ -258,3 +258,56 @@ media_library.theme:
   css:
     theme:
       css/theme/media-library.css: {}
+
+progress:
+  version: VERSION
+  css:
+    component:
+      css/components/progress.css: {}
+
+classy.book-navigation:
+  version: VERSION
+  css:
+    component:
+      css/classy/components/book-navigation.css: {}
+
+classy.file:
+  version: VERSION
+  css:
+    component:
+      css/classy/components/file.css: { weight: -10 }
+
+classy.forum:
+  version: VERSION
+  css:
+    component:
+      css/classy/components/forum.css: { weight: -10 }
+
+classy.indented:
+  version: VERSION
+  css:
+    component:
+      css/classy/components/indented.css: {}
+
+classy.media_embed_error:
+  version: VERSION
+  css:
+    component:
+      css/classy/components/media-embed-error.css: {}
+
+classy.media_embed_ckeditor_theme:
+  version: VERSION
+  js:
+    js/classy/media_embed_ckeditor.theme.js: {}
+
+classy.node:
+  version: VERSION
+  css:
+    component:
+      css/classy/components/node.css: { weight: -10 }
+
+classy.search-results:
+  version: VERSION
+  css:
+    component:
+      css/classy/components/search-results.css: {}
diff --git a/core/themes/claro/css/classy/components/book-navigation.css b/core/themes/claro/css/classy/components/book-navigation.css
new file mode 100644
index 000000000000..08728e27b531
--- /dev/null
+++ b/core/themes/claro/css/classy/components/book-navigation.css
@@ -0,0 +1,40 @@
+/**
+ * @file
+ * Styling for the Book module.
+ */
+
+.book-navigation .menu {
+  padding-top: 1em;
+  padding-bottom: 0;
+}
+.book-navigation .book-pager {
+  overflow: auto;
+  margin: 0;
+  padding: 0.5em 0;
+}
+.book-pager__item {
+  display: inline-block;
+  list-style-type: none;
+  vertical-align: top;
+}
+.book-pager__item--previous {
+  width: 45%;
+  text-align: left; /* LTR */
+}
+[dir="rtl"] .book-pager__item--previous {
+  float: right;
+  text-align: right;
+}
+.book-pager__item--center {
+  width: 8%;
+  text-align: center;
+}
+.book-pager__item--next {
+  float: right; /* LTR */
+  width: 45%;
+  text-align: right; /* LTR */
+}
+[dir="rtl"] .book-pager__item--next {
+  float: left;
+  text-align: left;
+}
diff --git a/core/themes/claro/css/classy/components/container-inline.css b/core/themes/claro/css/classy/components/container-inline.css
new file mode 100644
index 000000000000..64b78f683bf1
--- /dev/null
+++ b/core/themes/claro/css/classy/components/container-inline.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Inline items.
+ */
+
+.container-inline label:after,
+.container-inline .label:after {
+  content: ":";
+}
+.form-type-radios .container-inline label:after,
+.form-type-checkboxes .container-inline label:after {
+  content: "";
+}
+.form-type-radios .container-inline .form-type-radio,
+.form-type-checkboxes .container-inline .form-type-checkbox {
+  margin: 0 1em;
+}
+.container-inline .form-actions,
+.container-inline.form-actions {
+  margin-top: 0;
+  margin-bottom: 0;
+}
diff --git a/core/themes/claro/css/classy/components/exposed-filters.css b/core/themes/claro/css/classy/components/exposed-filters.css
new file mode 100644
index 000000000000..b686902ef111
--- /dev/null
+++ b/core/themes/claro/css/classy/components/exposed-filters.css
@@ -0,0 +1,46 @@
+/**
+ * @file
+ * Visual styles for exposed filters.
+ */
+
+.exposed-filters .filters {
+  float: left; /* LTR */
+  margin-right: 1em; /* LTR */
+}
+[dir="rtl"] .exposed-filters .filters {
+  float: right;
+  margin-right: 0;
+  margin-left: 1em;
+}
+.exposed-filters .form-item {
+  margin: 0 0 0.1em 0;
+  padding: 0;
+}
+.exposed-filters .form-item label {
+  float: left; /* LTR */
+  width: 10em;
+  font-weight: normal;
+}
+[dir="rtl"] .exposed-filters .form-item label {
+  float: right;
+}
+.exposed-filters .form-select {
+  width: 14em;
+}
+/* Current filters */
+.exposed-filters .current-filters {
+  margin-bottom: 1em;
+}
+.exposed-filters .current-filters .placeholder {
+  font-weight: bold;
+  font-style: normal;
+}
+.exposed-filters .additional-filters {
+  float: left; /* LTR */
+  margin-right: 1em; /* LTR */
+}
+[dir="rtl"] .exposed-filters .additional-filters {
+  float: right;
+  margin-right: 0;
+  margin-left: 1em;
+}
diff --git a/core/themes/claro/css/classy/components/field.css b/core/themes/claro/css/classy/components/field.css
new file mode 100644
index 000000000000..ff7e9ab1fc76
--- /dev/null
+++ b/core/themes/claro/css/classy/components/field.css
@@ -0,0 +1,25 @@
+/**
+ * @file
+ * Visual styles for fields.
+ */
+
+.field__label {
+  font-weight: bold;
+}
+.field--label-inline .field__label,
+.field--label-inline .field__items {
+  float: left; /* LTR */
+}
+.field--label-inline .field__label,
+.field--label-inline > .field__item,
+.field--label-inline .field__items {
+  padding-right: 0.5em;
+}
+[dir="rtl"] .field--label-inline .field__label,
+[dir="rtl"] .field--label-inline .field__items {
+  padding-right: 0;
+  padding-left: 0.5em;
+}
+.field--label-inline .field__label::after {
+  content: ":";
+}
diff --git a/core/themes/claro/css/classy/components/file.css b/core/themes/claro/css/classy/components/file.css
new file mode 100644
index 000000000000..8637242a546a
--- /dev/null
+++ b/core/themes/claro/css/classy/components/file.css
@@ -0,0 +1,62 @@
+/**
+ * @file
+ * Default style for file module.
+ */
+
+/* File icons. */
+
+.file {
+  display: inline-block;
+  min-height: 16px;
+  padding-left: 20px; /* LTR */
+  background-repeat: no-repeat;
+  background-position: left center; /* LTR */
+}
+[dir="rtl"] .file {
+  padding-right: 20px;
+  padding-left: inherit;
+  background-position: right center;
+}
+.file--general,
+.file--application-octet-stream {
+  background-image: url(../../../images/classy/icons/application-octet-stream.png);
+}
+.file--package-x-generic {
+  background-image: url(../../../images/classy/icons/package-x-generic.png);
+}
+.file--x-office-spreadsheet {
+  background-image: url(../../../images/classy/icons/x-office-spreadsheet.png);
+}
+.file--x-office-document {
+  background-image: url(../../../images/classy/icons/x-office-document.png);
+}
+.file--x-office-presentation {
+  background-image: url(../../../images/classy/icons/x-office-presentation.png);
+}
+.file--text-x-script {
+  background-image: url(../../../images/classy/icons/text-x-script.png);
+}
+.file--text-html {
+  background-image: url(../../../images/classy/icons/text-html.png);
+}
+.file--text-plain {
+  background-image: url(../../../images/classy/icons/text-plain.png);
+}
+.file--application-pdf {
+  background-image: url(../../../images/classy/icons/application-pdf.png);
+}
+.file--application-x-executable {
+  background-image: url(../../../images/classy/icons/application-x-executable.png);
+}
+.file--audio {
+  background-image: url(../../../images/classy/icons/audio-x-generic.png);
+}
+.file--video {
+  background-image: url(../../../images/classy/icons/video-x-generic.png);
+}
+.file--text {
+  background-image: url(../../../images/classy/icons/text-x-generic.png);
+}
+.file--image {
+  background-image: url(../../../images/classy/icons/image-x-generic.png);
+}
diff --git a/core/themes/claro/css/classy/components/forum.css b/core/themes/claro/css/classy/components/forum.css
new file mode 100644
index 000000000000..c35e3f4411e6
--- /dev/null
+++ b/core/themes/claro/css/classy/components/forum.css
@@ -0,0 +1,46 @@
+/**
+ * @file
+ * Styling for the Forum module.
+ */
+
+.forum__description {
+  margin: 0.5em;
+  font-size: 0.9em;
+}
+.forum__icon {
+  float: left; /* LTR */
+  width: 24px;
+  height: 24px;
+  margin: 0 9px 0 0; /* LTR */
+  background-image: url(../../../images/classy/icons/forum-icons.png);
+  background-repeat: no-repeat;
+}
+[dir="rtl"] .forum__icon {
+  float: right;
+  margin: 0 0 0 9px;
+}
+.forum__title {
+  overflow: hidden;
+}
+.forum .indented {
+  margin-left: 20px; /* LTR */
+}
+[dir="rtl"] .forum .indented {
+  margin-right: 20px;
+  margin-left: 0;
+}
+.forum__topic-status--new {
+  background-position: -24px 0;
+}
+.forum__topic-status--hot {
+  background-position: -48px 0;
+}
+.forum__topic-status--hot-new {
+  background-position: -72px 0;
+}
+.forum__topic-status--sticky {
+  background-position: -96px 0;
+}
+.forum__topic-status--closed {
+  background-position: -120px 0;
+}
diff --git a/core/themes/claro/css/classy/components/icons.css b/core/themes/claro/css/classy/components/icons.css
new file mode 100644
index 000000000000..ab0245f4c56d
--- /dev/null
+++ b/core/themes/claro/css/classy/components/icons.css
@@ -0,0 +1,21 @@
+/**
+ * @file
+ * Visual styles for icons.
+ */
+
+.icon-help {
+  padding: 1px 0 1px 20px; /* LTR */
+  background: url(../../../../../misc/help.png) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .icon-help {
+  padding: 1px 20px 1px 0;
+  background-position: 100% 50%;
+}
+.feed-icon {
+  display: block;
+  overflow: hidden;
+  width: 16px;
+  height: 16px;
+  text-indent: -9999px;
+  background: url(../../../../../misc/feed.svg) no-repeat;
+}
diff --git a/core/themes/claro/css/classy/components/indented.css b/core/themes/claro/css/classy/components/indented.css
new file mode 100644
index 000000000000..6925a0636365
--- /dev/null
+++ b/core/themes/claro/css/classy/components/indented.css
@@ -0,0 +1,16 @@
+
+/**
+ * @file
+ * Basic styling for comment module.
+ */
+
+/**
+ * Indent threaded comments.
+ */
+.indented {
+  margin-left: 25px; /* LTR */
+}
+[dir="rtl"] .indented {
+  margin-right: 25px;
+  margin-left: 0;
+}
diff --git a/core/themes/claro/css/classy/components/inline-form.css b/core/themes/claro/css/classy/components/inline-form.css
new file mode 100644
index 000000000000..b5201a78c9db
--- /dev/null
+++ b/core/themes/claro/css/classy/components/inline-form.css
@@ -0,0 +1,33 @@
+/**
+ * @file
+ * Visual styles for inline forms.
+ */
+
+.form--inline .form-item {
+  float: left; /* LTR */
+  margin-right: 0.5em; /* LTR */
+}
+[dir="rtl"] .form--inline .form-item {
+  float: right;
+  margin-right: 0;
+  margin-left: 0.5em;
+}
+/* This is required to win over specificity of [dir="rtl"] .form--inline .form-item */
+[dir="rtl"] .views-filterable-options-controls .form-item {
+  margin-right: 2%;
+}
+.form--inline .form-item-separator {
+  margin-top: 2.3em;
+  margin-right: 1em; /* LTR */
+  margin-left: 0.5em; /* LTR */
+}
+[dir="rtl"] .form--inline .form-item-separator {
+  margin-right: 0.5em;
+  margin-left: 1em;
+}
+.form--inline .form-actions {
+  clear: left; /* LTR */
+}
+[dir="rtl"] .form--inline .form-actions {
+  clear: right;
+}
diff --git a/core/themes/claro/css/classy/components/item-list.css b/core/themes/claro/css/classy/components/item-list.css
new file mode 100644
index 000000000000..a8ce5d28a53d
--- /dev/null
+++ b/core/themes/claro/css/classy/components/item-list.css
@@ -0,0 +1,32 @@
+/**
+ * @file
+ * Visual styles for item list.
+ */
+
+.item-list .title {
+  font-weight: bold;
+}
+.item-list ul {
+  margin: 0 0 0.75em 0;
+  padding: 0;
+}
+.item-list li {
+  margin: 0 0 0.25em 1.5em; /* LTR */
+  padding: 0;
+}
+[dir="rtl"] .item-list li {
+  margin: 0 1.5em 0.25em 0;
+}
+
+/**
+ * Comma separated lists.
+ */
+.item-list--comma-list {
+  display: inline;
+}
+.item-list--comma-list .item-list__comma-list,
+.item-list__comma-list li,
+[dir="rtl"] .item-list--comma-list .item-list__comma-list,
+[dir="rtl"] .item-list__comma-list li {
+  margin: 0;
+}
diff --git a/core/themes/claro/css/classy/components/link.css b/core/themes/claro/css/classy/components/link.css
new file mode 100644
index 000000000000..fa83f2bb2c37
--- /dev/null
+++ b/core/themes/claro/css/classy/components/link.css
@@ -0,0 +1,16 @@
+/**
+ * @file
+ * Style another element as a link.
+ */
+
+button.link {
+  margin: 0;
+  padding: 0;
+  cursor: pointer;
+  border: 0;
+  background: transparent;
+  font-size: 1em;
+}
+label button.link {
+  font-weight: bold;
+}
diff --git a/core/themes/claro/css/classy/components/links.css b/core/themes/claro/css/classy/components/links.css
new file mode 100644
index 000000000000..e4832539337a
--- /dev/null
+++ b/core/themes/claro/css/classy/components/links.css
@@ -0,0 +1,23 @@
+/**
+ * @file
+ * Visual styles for links.
+ */
+
+ul.inline,
+ul.links.inline {
+  display: inline;
+  padding-left: 0; /* LTR */
+}
+[dir="rtl"] ul.inline,
+[dir="rtl"] ul.links.inline {
+  padding-right: 0;
+  padding-left: 15px;
+}
+ul.inline li {
+  display: inline;
+  padding: 0 0.5em;
+  list-style-type: none;
+}
+ul.links a.is-active {
+  color: #000;
+}
diff --git a/core/themes/claro/css/classy/components/media-embed-error.css b/core/themes/claro/css/classy/components/media-embed-error.css
new file mode 100644
index 000000000000..edb3ab24e60e
--- /dev/null
+++ b/core/themes/claro/css/classy/components/media-embed-error.css
@@ -0,0 +1,20 @@
+/**
+ * @file
+ * Media Embed filter: default styling for media embed errors.
+ */
+
+/**
+ * The caption filter's styling overrides ours, so add a more specific selector
+ * to account for that.
+ */
+.media-embed-error,
+.caption > .media-embed-error {
+  max-width: 200px;
+  padding: 100px 20px 20px;
+  text-align: center;
+  background-color: #ebebeb;
+  background-image: url(../../../../../modules/media/images/icons/no-thumbnail.png);
+  background-repeat: no-repeat;
+  background-position: center top;
+  background-size: 100px 100px;
+}
diff --git a/core/themes/claro/css/classy/components/menu.css b/core/themes/claro/css/classy/components/menu.css
new file mode 100644
index 000000000000..80d3e14d86b8
--- /dev/null
+++ b/core/themes/claro/css/classy/components/menu.css
@@ -0,0 +1,34 @@
+/**
+ * @file
+ * Visual styles for menu.
+ */
+
+ul.menu {
+  margin-left: 1em; /* LTR */
+  padding: 0;
+  list-style: none outside;
+  text-align: left; /* LTR */
+}
+[dir="rtl"] ul.menu {
+  margin-right: 1em;
+  margin-left: 0;
+  text-align: right;
+}
+.menu-item--expanded {
+  list-style-type: circle;
+  list-style-image: url(../../../../../misc/menu-expanded.png);
+}
+.menu-item--collapsed {
+  list-style-type: disc;
+  list-style-image: url(../../../../../misc/menu-collapsed.png); /* LTR */
+}
+[dir="rtl"] .menu-item--collapsed {
+  list-style-image: url(../../../../../misc/menu-collapsed-rtl.png);
+}
+.menu-item {
+  margin: 0;
+  padding-top: 0.2em;
+}
+ul.menu a.is-active {
+  color: #000;
+}
diff --git a/core/themes/claro/css/classy/components/more-link.css b/core/themes/claro/css/classy/components/more-link.css
new file mode 100644
index 000000000000..c604061317d0
--- /dev/null
+++ b/core/themes/claro/css/classy/components/more-link.css
@@ -0,0 +1,12 @@
+/**
+ * @file
+ * Markup generated by #type 'more_link'.
+ */
+
+.more-link {
+  display: block;
+  text-align: right; /* LTR */
+}
+[dir="rtl"] .more-link {
+  text-align: left;
+}
diff --git a/core/themes/claro/css/classy/components/node.css b/core/themes/claro/css/classy/components/node.css
new file mode 100644
index 000000000000..6b7cd5257d6d
--- /dev/null
+++ b/core/themes/claro/css/classy/components/node.css
@@ -0,0 +1,8 @@
+/**
+ * @file
+ * Visual styles for nodes.
+ */
+
+.node--unpublished {
+  background-color: #fff4f4;
+}
diff --git a/core/themes/claro/css/classy/components/search-results.css b/core/themes/claro/css/classy/components/search-results.css
new file mode 100644
index 000000000000..343ea8b5fb1b
--- /dev/null
+++ b/core/themes/claro/css/classy/components/search-results.css
@@ -0,0 +1,8 @@
+/**
+ * @file
+ * Stylesheet for results generated by the Search module.
+ */
+
+.search-results {
+  list-style: none;
+}
diff --git a/core/themes/claro/css/classy/components/tablesort.css b/core/themes/claro/css/classy/components/tablesort.css
new file mode 100644
index 000000000000..44e5349404d0
--- /dev/null
+++ b/core/themes/claro/css/classy/components/tablesort.css
@@ -0,0 +1,11 @@
+/**
+ * @file
+ * Table sort indicator.
+ */
+
+th.is-active img {
+  display: inline;
+}
+td.is-active {
+  background-color: #ddd;
+}
diff --git a/core/themes/claro/css/classy/components/textarea.css b/core/themes/claro/css/classy/components/textarea.css
new file mode 100644
index 000000000000..2661bae9c4a3
--- /dev/null
+++ b/core/themes/claro/css/classy/components/textarea.css
@@ -0,0 +1,11 @@
+/**
+ * @file
+ * Visual styles for a resizable textarea.
+ */
+
+.form-textarea-wrapper textarea {
+  display: block;
+  box-sizing: border-box;
+  width: 100%;
+  margin: 0;
+}
diff --git a/core/themes/claro/css/classy/components/ui-dialog.css b/core/themes/claro/css/classy/components/ui-dialog.css
new file mode 100644
index 000000000000..476c21ffdb77
--- /dev/null
+++ b/core/themes/claro/css/classy/components/ui-dialog.css
@@ -0,0 +1,15 @@
+/**
+ * @file
+ * Styles for Classy's modal windows.
+ */
+
+.ui-dialog--narrow {
+  max-width: 500px;
+}
+
+@media screen and (max-width: 600px) {
+  .ui-dialog--narrow {
+    min-width: 95%;
+    max-width: 95%;
+  }
+}
diff --git a/core/themes/claro/css/layout/image-widget.css b/core/themes/claro/css/layout/image-widget.css
index 8964c2cf40ce..b1ea2e776ff9 100644
--- a/core/themes/claro/css/layout/image-widget.css
+++ b/core/themes/claro/css/layout/image-widget.css
@@ -7,7 +7,7 @@
 
 /**
  * @file
- * Extends classy/image-widget.
+ * Image widget styles.
  */
 
 .image-widget-data {
diff --git a/core/themes/claro/css/layout/image-widget.pcss.css b/core/themes/claro/css/layout/image-widget.pcss.css
index ce659ce082e1..93d96f8a026f 100644
--- a/core/themes/claro/css/layout/image-widget.pcss.css
+++ b/core/themes/claro/css/layout/image-widget.pcss.css
@@ -1,6 +1,6 @@
 /**
  * @file
- * Extends classy/image-widget.
+ * Image widget styles.
  */
 
 .image-widget-data {
diff --git a/core/themes/claro/images/classy/README.txt b/core/themes/claro/images/classy/README.txt
new file mode 100644
index 000000000000..9df44f55ec0a
--- /dev/null
+++ b/core/themes/claro/images/classy/README.txt
@@ -0,0 +1,12 @@
+WHAT IS THIS DIRECTORY FOR?
+--------------------------------
+This directory is for image files previously inherited from the Classy theme.
+
+WHY ARE CLASSY IMAGE FILES BEING COPIED HERE?
+-------------------------------------------
+Classy will be deprecated during the Drupal 9 lifecycle. To prepare for Classy's
+removal, image files that would otherwise be inherited from Classy are copied
+here.
+
+Image files that differ from the Classy versions should not be placed in this
+directory or any subdirectory.
diff --git a/core/themes/claro/images/classy/icons/application-octet-stream.png b/core/themes/claro/images/classy/icons/application-octet-stream.png
new file mode 100644
index 000000000000..d5453217dc5c
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/application-octet-stream.png
@@ -0,0 +1,3 @@
+‰PNG
+
+���
IHDR���������µú7ê���tEXtSoftware�Adobe ImageReadyqÉe<���_IDAT(SÍͱ	€@DÑ©Õ,À`û42Ìäî@ýâÁîZ€óÓ#„ŒÔd2!¤4J¯>dt�æ`§
,=Þ›âÀÚ{g8°…ØC	ÔPG(<ûh\¡æÁwÝ)E˜o}˜^¬����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/application-pdf.png b/core/themes/claro/images/classy/icons/application-pdf.png
new file mode 100644
index 000000000000..36107d6e8040
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/application-pdf.png
@@ -0,0 +1,5 @@
+‰PNG
+
+���
IHDR���������óÿa��!IDATxڍӱŠÂ0Çñ{AqsÜ]ÜÄM9p¾I—ê#¸ú‚ nN.
+..Å¡à"š–¶¤ic~—渢Ö\ú‡/%| )ý� ²,ú–å{‹sO�c”ÒRI’<"_Z Û¶KÉÉþ=ï²O-à8ÎkðÕ®ë–z…hÏóÞFf3ÁÀÄq\*:@
„뵐7þœï#è÷AšMÐÛÍp΋2y8šNá·Ûz=pÆÌ�[­ Av8 A„òÝÃѨÚ%’Z
A§ƒh<FºÙ(ŒÔëՁl¿W›ùù¬Öén÷‹v»r‘š…ˆ'@°å2ÔW¸_¯F :Ÿƒ_.
+ð[-UºÝ€ögBü›Ü£*öü�()5hô����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/application-x-executable.png b/core/themes/claro/images/classy/icons/application-x-executable.png
new file mode 100644
index 000000000000..d5453217dc5c
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/application-x-executable.png
@@ -0,0 +1,3 @@
+‰PNG
+
+���
IHDR���������µú7ê���tEXtSoftware�Adobe ImageReadyqÉe<���_IDAT(SÍͱ	€@DÑ©Õ,À`û42Ìäî@ýâÁîZ€óÓ#„ŒÔd2!¤4J¯>dt�æ`§
,=Þ›âÀÚ{g8°…ØC	ÔPG(<ûh\¡æÁwÝ)E˜o}˜^¬����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/audio-x-generic.png b/core/themes/claro/images/classy/icons/audio-x-generic.png
new file mode 100644
index 000000000000..28d7f50862b5
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/audio-x-generic.png
@@ -0,0 +1,3 @@
+‰PNG
+
+���
IHDR���������óÿa��IDAT8Ocøÿÿ?×××ÿ'W1H-L²?þüÿýûwüãÇdCòq�·nÝÂÀ �“ҁ8	§<ÀÀ0ðwœ¼~ý£¨Zì¼{÷Œï=½öÿèÍÍÿלîû?y_ÖÿòõŽÿ³W6àëׯ`>_è¿ß,6LÐ�Pˆƒ0Hq×îèÿËN7ÿ?psÅÿ‡¯ogÀŸ?À¤ÆF#h�Àc£¿aÐ�^$IØ�ôâõVÿ#ˆüŸv8‡°Ásyÿg¬ÔúëÕ)¸þþúÿý×çÿÿþýÅo�(3ýû÷/©Ái�)¦�ð›œÛ‰����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/forum-icons.png b/core/themes/claro/images/classy/icons/forum-icons.png
new file mode 100644
index 000000000000..e291de672522
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/forum-icons.png
@@ -0,0 +1,10 @@
+‰PNG
+
+���
IHDR���������"{„?��PLTE���ÿÿÿŸŸŸÃÃÃwww³³³‡‡‡ŸŸŸ¯¯¯“““ŸŸŸ³³³§§§“““»»»¯¯¯»»»ŸŸŸ‡‡‡¯¯¯‡‡‡›››‹‹‹¯¯¯‡‡‡———¯¯¯³³³ÿÿÿ‡‡‡ûûûÿÿÿ»»»§§§¯¯¯ŸŸŸ£££›››···‡‡‡““““““‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ûûûŸŸŸ‡‡‡‹‹‹ûûû¯¯¯‡‡‡§§§³³³···»»»ûûû‡‡‡»»»‡‡‡¯¯¯›››“““———‡‡‡‡‡‡‹‹‹ûûû›››÷÷÷£££§§§···»»»———‡‡‡“““ÿÿÿ§§§›››‡‡‡‹‹‹¯¯¯‡‡‡›››———“““‡‡‡“““———§§§‡‡‡———‹‹‹›››¯¯¯···»»»ÿÿÿ‡‡‡“““ÿÿÿ‡‡‡«««ßß߯¯¯³³³···‡‡‡‹‹‹ïïï“““³³³»»»‡‡‡§§§ûûûŸŸŸŸŸŸ£££««««««‡‡‡···§§§»»»›››£££§§§ûûû§§§ÛÛÛ¯¯¯›››‹‹‹ŸŸŸ‡‡‡«««———³³³···»»»ÃÃÃÇÇÇËËËÓÓÓ××ד““çççóóó÷÷÷ûûûÿÿÿ¿¿¿ÏÏÏïï£ßßßãããëëëtP[þ���ŒtRNS�	
+
+    %***+,..001479=HKMX\ddhiimsvxxxxxxyy{}ƒƒŠ••›¥®¯±±³³µ·¼¼½ÀÂÂÂÃÆÇÏÐÑÑÑÒÕÖÖÖ×ÛÛàáááäääçèéëëëììíîðôõöøøúûûüüüýýþþþ甐��IDATx^µ‘…·E‡JiS
+-êÒâîî”/RÜŠhq·W¤P|dÕ]bï¯äÎÝÉî&›äÀãð圼ó¾ùíoîæ*
·mÛ¨tþÜw?8Åÿ”ŸeëÝOøÕ±ïü¶­]ïÞÿeÚúˆyùÛÿEÞYÔ?ÛsÜß8~@㘞õõÍÇtý8§A~ãÉÛÀüòž‹?sÂ$“$¡õÉùs¼c¥=zí9sòv+OççmKPŒl&˜Îw{ÎøÔO³<Ï3Iê}tjã³ÊÇÌ "ðp훼ÛÊgM>¬ó0ÌçyÈF•?³êéÜ{â;~–£mnxcKۏ
+‡„f9áwà=¸uyÞ¶Úy&(Äaa ¤ÎgÝe‡f3¤ìÖ)`0h^v§²ÃZ·ä™ ÌrÀ5HÅ$?.`ÔqÝc€W^(gê!ç>3íÇDÓ4®…ÙÇè;xËòbIvŽ¤Œ ™÷ó<ƒxòâTÜ»ùШ=KŠô‡Mèk°,ùqÓæŸFÝ€¼ôÝü!±#Œú90&Võ‡$„‡Ó€PÙ=Êy$hO“â>|~QíqDnšQd&ýÚcV¾W“—-˜‡ª¼ÄÂ¥”zçUÞqªç-¾E!ô(ëVlü|0büvìº=ê8Òèx0¤}ð¿@Óx$>˜G/LÛù±"ŸW¬Ϋ~æaEæøö(Êî4ƒE|sŸ¢<~rCé& =7ݧlùs@!)<É¿-½Ô“|=»ÅŠ8²’sn¢§†a¨u¯r¦Ql©	Ls§ôò AŸ$£Ê…ƒÚ7ùh—ôÀt{4Ž0OŸ™‚]àÁj\ÂêE9òÎÝÕ´…íÝ0Ï;äµ
Êúß­9yôÝüë²a0OHƒØÛxÇæ€Y÷�½—ÁØ4î§÷íÒ›ÜgüñšgÍ懕gÜìxÙ#(ó„9yÆ£HösA–áé¤9ùÉÈŒ�΍q
+”ÞôB£Ñ«à/àƒU§öãÆkàöï‡ðíååp(½)CìšôH.}
+ÜP-XUO[ì×OŒ,fÿÈë­@x5ÈLUúH@)þ©{ê‘nzèÅ/TUÕÕ"‰õKf½®'þÙBcý<
+Ãqµñ¼ö€ôÝ~ZêÒËŸß É·9遟u]<ýÊ%þ>m¤Enši¡/ò‹{TI?Œ<'*ÐÉKÎÞ£®Yâ{¯ÔTÎ\‡Dº:åË®ïö-éUØ ñ}"²u‡Ëß„ƒ{–ùÓ¿bý4(Hd2—f¾ÞöIíKua*ý[°AÉ«u—£®ÿ\¿k©¿ì}±d•©/ݲį¥¿Ë	W½Ü÷î=8¬V£¾wÕR¿†þµqÊ
>ÿí‡{×ñÏI¿FþEà2gz‚¿L����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/image-x-generic.png b/core/themes/claro/images/classy/icons/image-x-generic.png
new file mode 100644
index 000000000000..c1b814f7cb6f
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/image-x-generic.png
@@ -0,0 +1,6 @@
+‰PNG
+
+���
IHDR���������óÿa��HIDATxÚ•’=KÃP†³ù'ü.ÒÁZ*Šø… q·N¢Ð!ƒJDGEÅYAœÄIT¨‰`Sð³4I¡QLnmòš{†ÐZ’聇÷ð&÷K"� $IÂÈú�Dƒ€1Û¶›p§^2*àS>ëo‚¼HϹÀõ™|Þ/Ãe:‡ö·ë!êW–®b‡
+¼ï
+`ÿȏâא$\P#A°ÛÏcõÄjÖšЄQR0ŸiÁÜŒ€¢’¤Ü’xž-p­Iâü¸F¡‡r!#Юk)¨ª-À×TñW¨šiTËi0cvqœ’:“ºx~Ú+7Œwe„²r1€ÒI/ý¯Wƒñ‚§Ã$ö» íˆ(ìuâñ ›º—£e¬ '·ãv#ü¶mWÄÝfnV©ƒºžˆ\fÛ¢ˆ0Æè;G@ï„
+þA ø|	Ê@F����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/package-x-generic.png b/core/themes/claro/images/classy/icons/package-x-generic.png
new file mode 100644
index 000000000000..21fc382cba23
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/package-x-generic.png
@@ -0,0 +1,4 @@
+‰PNG
+
+���
IHDR���������µú7ê���tEXtSoftware�Adobe ImageReadyqÉe<���¦IDAT(S1Â0ï­|€PÜPì‡D”4ðTôH©qPȲ>ƒ„c‚ðh•“<Yہ(
+6**qO’0 'Ž_‡”u&�
QìgËCW™p&[\¼é3áB{û;-NŸBK*6T6µ¥ÐŁéŒBÄÙK‚Q#Q™Ñ˜	µáÙà_s=oH÷>-¿".;óCø£á¶Ô0`"©a2†\øNÜ{Ó†ˆiËûø–����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/text-html.png b/core/themes/claro/images/classy/icons/text-html.png
new file mode 100644
index 000000000000..9c7c7932c25a
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/text-html.png
@@ -0,0 +1,7 @@
+‰PNG
+
+���
IHDR���������óÿa���ÐIDATxڍ“Ï
+‚@‡}©Þ¦S‡®=@Ÿ¢7:GÞ ‚þ	…wÁÛ²
+æäo@ØÆvǁfç÷)‚1qÓ–ès?‚º®ÉZ; ª*W²ð
+PY–I0F°??3¯ ÏsIt±^AQD±Ä+(Ë2„.0Æ0×óí_¯ðÅÛ„¦“9Ý/O€3Üé‚dwD€Ï¦i€;^7/®W…î°~ƒtÂ"Ÿ\ÙW xB]€BPöº@)]€Ÿ©mÛØñÆâ
+¾c0¡©¶›����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/text-plain.png b/core/themes/claro/images/classy/icons/text-plain.png
new file mode 100644
index 000000000000..06804849b833
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/text-plain.png
@@ -0,0 +1,4 @@
+‰PNG
+
+���
IHDR���������µú7ê���tEXtSoftware�Adobe ImageReadyqÉe<���~IDAT(S•ŽÁ	€0E3«8€‡lâîâÉ‹ 
+¢Ôôkm¬éÅ<hhóø)@EÅÄäfä#ì^)hÀÝùà"jqI„Qˆu¿¾…&0…®„Aز	‹ädæJè6t%œ”°¢¿1r*A×?Áª?ØTÈãf;˜‘ªºœÞÁ����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/text-x-generic.png b/core/themes/claro/images/classy/icons/text-x-generic.png
new file mode 100644
index 000000000000..06804849b833
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/text-x-generic.png
@@ -0,0 +1,4 @@
+‰PNG
+
+���
IHDR���������µú7ê���tEXtSoftware�Adobe ImageReadyqÉe<���~IDAT(S•ŽÁ	€0E3«8€‡lâîâÉ‹ 
+¢Ôôkm¬éÅ<hhóø)@EÅÄäfä#ì^)hÀÝùà"jqI„Qˆu¿¾…&0…®„Aز	‹ädæJè6t%œ”°¢¿1r*A×?Áª?ØTÈãf;˜‘ªºœÞÁ����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/text-x-script.png b/core/themes/claro/images/classy/icons/text-x-script.png
new file mode 100644
index 000000000000..f9ecca813882
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/text-x-script.png
@@ -0,0 +1,5 @@
+‰PNG
+
+���
IHDR���������óÿa���ÛIDATxڝ“Á
+‚@Eû©þ¦U‹¶}@?ªˆÀE!D †’ YRM¸Ì—wàÁ¤
¯zpxsaîa‘Æqú‚EÇpïMP×5•e9 ª*S2·
+0Q
èEÞÏŽ©U$I.š”VRŠB?Ò›1‡eVÁñÓd<£ÍÊ£<ÏûÈ‚¢(hçîµä§È&²�_üœd`#>Ë‚¦ièšÞ´ÀßfÆ–<륫K*{ ò–|åÀÿp	"΢ _è¿FÏø™Ú¶¥ûEawì‚_àސ>2„¬¯Z����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/video-x-generic.png b/core/themes/claro/images/classy/icons/video-x-generic.png
new file mode 100644
index 000000000000..a2b71f95d9e1
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/video-x-generic.png
@@ -0,0 +1,5 @@
+‰PNG
+
+���
IHDR���������µú7ê���tEXtSoftware�Adobe ImageReadyqÉe<���xIDAT(Ï•11ýV>À(vßIEOî
+`®ˆAv”2]4šØ	‚F‹BA10[²åÜc®	ÐK§©pKø<³}cÌ=7S¡bšáQ0°,<ËB=SÁ¬ù½ \¬
+ÿÍ „yÆg7aAîπǴ"Îj����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/x-office-document.png b/core/themes/claro/images/classy/icons/x-office-document.png
new file mode 100644
index 000000000000..40db538fcb71
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/x-office-document.png
@@ -0,0 +1,5 @@
+‰PNG
+
+���
IHDR���������óÿa���‹IDATxÚÕ“A
+!E=k/Ðå,ºð:£÷܉ÔÔTR‚c3³šl’ÇßÄ âŽµÿàÕ¡Ýq÷#È9cJI��\òœ
+(f{zèð;kçqFÀIS÷^À2dSsnB ÉÑ	bŒ•��®5(¥T‚Z«¾Á:ë¼ÉÝÐ3µÖŽ ¹@Á|�ó¾~-à����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/x-office-presentation.png b/core/themes/claro/images/classy/icons/x-office-presentation.png
new file mode 100644
index 000000000000..fb119e5ba91d
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/x-office-presentation.png
@@ -0,0 +1,5 @@
+‰PNG
+
+���
IHDR���������óÿa���|IDATxÚå“Á
+€ †}Ö^ stðo1=ärÁ`1¦£Žýðá÷
"ÞÄÑÁÞ	÷=µV�E)EJVS@9¶ è¡F^ÏÎòF SRRÈ°Ì䜞&÷¦‚Ù+øF~ ø~‰zš®}®GBó3µÖFÐ[àE
+. 4çÏ;«����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/images/classy/icons/x-office-spreadsheet.png b/core/themes/claro/images/classy/icons/x-office-spreadsheet.png
new file mode 100644
index 000000000000..9af7b61ea11f
--- /dev/null
+++ b/core/themes/claro/images/classy/icons/x-office-spreadsheet.png
@@ -0,0 +1,4 @@
+‰PNG
+
+���
IHDR���������óÿa���~IDATxÚå“Á	À E=u¼Ñ:@îÑeȳ¨`M“B E"ÒC{臇Ìã_4�pa­…6ļwäœ!ÆؐR’’UPæ}jÀÐ"Ÿ²<H¢*ðÞ7È°L8çzŒ	B4ò]Î/5(¥|Ü�óËü™j­=è.E
+N† ò8ÍÏ����IEND®B`‚
\ No newline at end of file
diff --git a/core/themes/claro/js/classy/README.txt b/core/themes/claro/js/classy/README.txt
new file mode 100644
index 000000000000..efa01cfd1035
--- /dev/null
+++ b/core/themes/claro/js/classy/README.txt
@@ -0,0 +1,12 @@
+WHAT IS THIS DIRECTORY FOR?
+--------------------------------
+This directory is for JS files previously inherited from the Classy theme.
+
+WHY ARE CLASSY JS FILES BEING COPIED HERE?
+-------------------------------------------
+Classy will be deprecated during the Drupal 9 lifecycle. To prepare for Classy's
+removal, JS files that would otherwise be inherited from Classy are copied
+here.
+
+JS files that differ from the Classy versions should not be placed in this
+directory or any subdirectory.
diff --git a/core/themes/claro/js/classy/media_embed_ckeditor.theme.es6.js b/core/themes/claro/js/classy/media_embed_ckeditor.theme.es6.js
new file mode 100644
index 000000000000..10193f7ba2dc
--- /dev/null
+++ b/core/themes/claro/js/classy/media_embed_ckeditor.theme.es6.js
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Classy theme overrides for the Media Embed CKEditor plugin.
+ */
+
+(Drupal => {
+  /**
+   * Themes the error displayed when the media embed preview fails.
+   *
+   * @param {string} error
+   *   The error message to display
+   *
+   * @return {string}
+   *   A string representing a DOM fragment.
+   *
+   * @see media-embed-error.html.twig
+   */
+  Drupal.theme.mediaEmbedPreviewError = () =>
+    `<div class="media-embed-error media-embed-error--preview-error">${Drupal.t(
+      'An error occurred while trying to preview the media. Please save your work and reload this page.',
+    )}</div>`;
+})(Drupal);
diff --git a/core/themes/claro/js/classy/media_embed_ckeditor.theme.js b/core/themes/claro/js/classy/media_embed_ckeditor.theme.js
new file mode 100644
index 000000000000..6614288cb4e4
--- /dev/null
+++ b/core/themes/claro/js/classy/media_embed_ckeditor.theme.js
@@ -0,0 +1,12 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
+
+(function (Drupal) {
+  Drupal.theme.mediaEmbedPreviewError = function () {
+    return '<div class="media-embed-error media-embed-error--preview-error">' + Drupal.t('An error occurred while trying to preview the media. Please save your work and reload this page.') + '</div>';
+  };
+})(Drupal);
\ No newline at end of file
-- 
GitLab