diff --git a/composer.json b/composer.json index d808ac57db02d0d8a6f22557cceaa9cff746c2e4..a4fc7ef1596c52b7289b64557521dc44dc7375b9 100644 --- a/composer.json +++ b/composer.json @@ -89,7 +89,7 @@ "dimsemenov/magnific-popup": "1.1", "drupal/addtocalendar": "3.4", "drupal/admin_toolbar": "3.4", - "drupal/adminimal_theme": "^1.6", + "drupal/adminimal_theme": "^1.7", "drupal/administerusersbyrole": "3.3", "drupal/allowed_formats": "2.0", "drupal/anchor_link": "1.10", diff --git a/composer.lock b/composer.lock index 288713b5040575b8e87e02df8043c82cc09ddefe..9ba073d9d5982396818233ed17b66215e105beec 100644 --- a/composer.lock +++ b/composer.lock @@ -1766,26 +1766,27 @@ }, { "name": "drupal/adminimal_theme", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/adminimal_theme.git", - "reference": "8.x-1.6" + "reference": "8.x-1.7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/adminimal_theme-8.x-1.6.zip", - "reference": "8.x-1.6", - "shasum": "89132d0853388afe8dfd11fb83c69a48d8c13413" + "url": "https://ftp.drupal.org/files/projects/adminimal_theme-8.x-1.7.zip", + "reference": "8.x-1.7", + "shasum": "0fe020fecab6a1f6d877f2e622fb9f916ada52bb" }, "require": { - "drupal/core": "^8.8 || ^9" + "drupal/core": "^9.3 || ^10", + "drupal/seven": "~1.0" }, "type": "drupal-theme", "extra": { "drupal": { - "version": "8.x-1.6", - "datestamp": "1602006937", + "version": "8.x-1.7", + "datestamp": "1691504486", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -1808,6 +1809,10 @@ { "name": "realityloop", "homepage": "https://www.drupal.org/user/139189" + }, + { + "name": "rjjakes", + "homepage": "https://www.drupal.org/user/3457245" } ], "description": "Drupal administration theme with modern minimalist design.", @@ -6669,6 +6674,66 @@ "issues": "https://www.drupal.org/project/issues/scheduler" } }, + { + "name": "drupal/seven", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/seven.git", + "reference": "1.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/seven-1.0.0.zip", + "reference": "1.0.0", + "shasum": "88e86926388c7e6cf66b0502d13a0470ce2399cd" + }, + "require": { + "drupal/core": "^9 || ^10" + }, + "type": "drupal-theme", + "extra": { + "drupal": { + "version": "1.0.0", + "datestamp": "1683652106", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "mcrittenden", + "homepage": "https://www.drupal.org/user/420631" + }, + { + "name": "mrfelton", + "homepage": "https://www.drupal.org/user/305669" + }, + { + "name": "TravisCarden", + "homepage": "https://www.drupal.org/user/236758" + } + ], + "description": "The Seven theme from Drupal 8/9 moved to contrib", + "homepage": "https://www.drupal.org/project/seven", + "support": { + "source": "https://git.drupalcode.org/project/seven" + } + }, { "name": "drupal/simple_gmap", "version": "3.0.1", diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index b80f056ba9ee8021fce3e90fee791ca34e51c583..15cd863cf942792d0a3c5280df4fc80528041333 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1829,27 +1829,28 @@ }, { "name": "drupal/adminimal_theme", - "version": "1.6.0", - "version_normalized": "1.6.0.0", + "version": "1.7.0", + "version_normalized": "1.7.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/adminimal_theme.git", - "reference": "8.x-1.6" + "reference": "8.x-1.7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/adminimal_theme-8.x-1.6.zip", - "reference": "8.x-1.6", - "shasum": "89132d0853388afe8dfd11fb83c69a48d8c13413" + "url": "https://ftp.drupal.org/files/projects/adminimal_theme-8.x-1.7.zip", + "reference": "8.x-1.7", + "shasum": "0fe020fecab6a1f6d877f2e622fb9f916ada52bb" }, "require": { - "drupal/core": "^8.8 || ^9" + "drupal/core": "^9.3 || ^10", + "drupal/seven": "~1.0" }, "type": "drupal-theme", "extra": { "drupal": { - "version": "8.x-1.6", - "datestamp": "1602006937", + "version": "8.x-1.7", + "datestamp": "1691504486", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -1873,6 +1874,10 @@ { "name": "realityloop", "homepage": "https://www.drupal.org/user/139189" + }, + { + "name": "rjjakes", + "homepage": "https://www.drupal.org/user/3457245" } ], "description": "Drupal administration theme with modern minimalist design.", @@ -6937,6 +6942,69 @@ }, "install-path": "../../web/modules/scheduler" }, + { + "name": "drupal/seven", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/seven.git", + "reference": "1.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/seven-1.0.0.zip", + "reference": "1.0.0", + "shasum": "88e86926388c7e6cf66b0502d13a0470ce2399cd" + }, + "require": { + "drupal/core": "^9 || ^10" + }, + "type": "drupal-theme", + "extra": { + "drupal": { + "version": "1.0.0", + "datestamp": "1683652106", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "installation-source": "dist", + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "mcrittenden", + "homepage": "https://www.drupal.org/user/420631" + }, + { + "name": "mrfelton", + "homepage": "https://www.drupal.org/user/305669" + }, + { + "name": "TravisCarden", + "homepage": "https://www.drupal.org/user/236758" + } + ], + "description": "The Seven theme from Drupal 8/9 moved to contrib", + "homepage": "https://www.drupal.org/project/seven", + "support": { + "source": "https://git.drupalcode.org/project/seven" + }, + "install-path": "../../web/themes/seven" + }, { "name": "drupal/simple_gmap", "version": "3.0.1", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 505406715533582df3000e490014d5f4136286d5..63158197fba072cfdfe011e0f7721d9e57927af4 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -287,9 +287,9 @@ 'dev_requirement' => false, ), 'drupal/adminimal_theme' => array( - 'pretty_version' => '1.6.0', - 'version' => '1.6.0.0', - 'reference' => '8.x-1.6', + 'pretty_version' => '1.7.0', + 'version' => '1.7.0.0', + 'reference' => '8.x-1.7', 'type' => 'drupal-theme', 'install_path' => __DIR__ . '/../../web/themes/adminimal_theme', 'aliases' => array(), @@ -1117,6 +1117,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'drupal/seven' => array( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'reference' => '1.0.0', + 'type' => 'drupal-theme', + 'install_path' => __DIR__ . '/../../web/themes/seven', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'drupal/simple_gmap' => array( 'pretty_version' => '3.0.1', 'version' => '3.0.1.0', diff --git a/web/themes/adminimal_theme/adminimal_theme.info.yml b/web/themes/adminimal_theme/adminimal_theme.info.yml index 02aa2ae97a87d8269bb11cc44631d69696dc4050..5ee6b212f61c7e2514694520c630ea88eb3732db 100644 --- a/web/themes/adminimal_theme/adminimal_theme.info.yml +++ b/web/themes/adminimal_theme/adminimal_theme.info.yml @@ -1,7 +1,7 @@ name: Adminimal type: theme description: 'Drupal administration theme with modern minimalist design.' -core_version_requirement: ^8.8 || ^9 +core_version_requirement: ^9.3 || ^10 base theme: seven libraries: @@ -27,7 +27,7 @@ regions: regions_hidden: - sidebar_first -# Information added by Drupal.org packaging script on 2020-10-06 -version: '8.x-1.6' +# Information added by Drupal.org packaging script on 2023-08-08 +version: '8.x-1.7' project: 'adminimal_theme' -datestamp: 1602006939 +datestamp: 1691504488 diff --git a/web/themes/adminimal_theme/adminimal_theme.theme b/web/themes/adminimal_theme/adminimal_theme.theme index 99781357f53b0fc03ead1a3ddc61093077ef0f69..79fba26e658ec769d6af4d4b6a50b2ed04288b1f 100644 --- a/web/themes/adminimal_theme/adminimal_theme.theme +++ b/web/themes/adminimal_theme/adminimal_theme.theme @@ -42,11 +42,10 @@ function adminimal_theme_form_system_theme_settings_alter(&$form, FormStateInter // Get adminimal theme path. global $base_url; - $adminimal_path = drupal_get_path('theme', 'adminimal_theme'); + $adminimal_path = \Drupal::service('extension.list.theme')->getPath('adminimal_theme'); $old_css_path = $adminimal_path . '/css/custom.css'; $custom_css_path = 'public://adminimal-custom.css'; - $custom_css_dir = str_replace($base_url . '/', "", file_create_url($custom_css_path)); - $custom_css_url = file_create_url($custom_css_path); + $custom_css_dir = str_replace($base_url . '/', "", \Drupal::service('file_url_generator')->generateAbsoluteString($custom_css_path)); // Try to create the adminimal-custom.css file automatically. if (!file_exists($custom_css_path)) { diff --git a/web/themes/adminimal_theme/composer.json b/web/themes/adminimal_theme/composer.json index e5c2b65157935a70869b2de8f8cb31c279060619..2cd17237a77eacdff9887b7cdf92ed90f17ba2d0 100644 --- a/web/themes/adminimal_theme/composer.json +++ b/web/themes/adminimal_theme/composer.json @@ -6,5 +6,8 @@ "support": { "issues": "https://www.drupal.org/project/issues/adminimal_theme" }, - "license": "GPL-2.0+" + "license": "GPL-2.0+", + "require": { + "drupal/seven": "~1.0" + } } diff --git a/web/themes/seven/LICENSE.txt b/web/themes/seven/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d159169d1050894d3ea3b98e1c965c4058208fe1 --- /dev/null +++ b/web/themes/seven/LICENSE.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/web/themes/seven/README.txt b/web/themes/seven/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..0aa9d237eb16fb3cfc1d23da579a4d7bdc9fdda4 --- /dev/null +++ b/web/themes/seven/README.txt @@ -0,0 +1,8 @@ +ABOUT SEVEN +----------- + +Seven was the default administration theme for Drupal 8 and 9. It has been +removed from Drupal 10 and replaced with a modern equivalent, Olivero. + +This theme is available for existing sites that may need it, but we do not +recommend using it on a new site. diff --git a/web/themes/seven/config/schema/seven.schema.yml b/web/themes/seven/config/schema/seven.schema.yml new file mode 100644 index 0000000000000000000000000000000000000000..8e40d45b75fc7ac1873613c82b379ec0e54c085f --- /dev/null +++ b/web/themes/seven/config/schema/seven.schema.yml @@ -0,0 +1,5 @@ +# Schema for the configuration files of the Seven theme. + +seven.settings: + type: theme_settings + label: 'Seven settings' diff --git a/web/themes/seven/css/base/elements.css b/web/themes/seven/css/base/elements.css new file mode 100644 index 0000000000000000000000000000000000000000..2599a0f5866054510b1c4c814cb57d272072a67d --- /dev/null +++ b/web/themes/seven/css/base/elements.css @@ -0,0 +1,179 @@ +/** + * Generic elements. + */ +body { + color: #333; + background: #fff; + font: normal 81.3%/1.538em "Lucida Grande", "Lucida Sans Unicode", "DejaVu Sans", "Lucida Sans", sans-serif; +} +a, +.link { + text-decoration: none; + color: #0074bd; +} +a:hover, +.link:hover, +a:focus, +.link:focus { + text-decoration: underline; + outline: 0; +} +hr { + height: 1px; + margin: 0; + padding: 0; + border: none; + background: #ccc; +} +summary, +.fieldgroup:not(.form-composite) > legend { + text-transform: uppercase; + font-weight: bold; +} + +/** + * Reusable heading classes are included to help modules change the styling of + * headings on a page without affecting accessibility. + */ +h1, +.heading-a { + margin: 0; + font-size: 1.625em; + font-weight: bold; + line-height: 1.875em; +} +h2, +.heading-b { + margin: 10px 0; + font-size: 1.385em; + font-weight: bold; +} +h3, +.heading-c { + margin: 10px 0; + font-size: 1.231em; + font-weight: bold; +} +h4, +.heading-d { + margin: 10px 0; + font-size: 1.154em; + font-weight: bold; +} +h5, +.heading-e { + margin: 10px 0; + font-size: 1.077em; + font-weight: bold; +} +h6, +.heading-f { + margin: 10px 0; + font-size: 1.077em; + font-weight: bold; +} +p { + margin: 1em 0; +} +dl { + margin: 0 0 20px; +} +dl dd, +dl dl { + margin-bottom: 10px; + margin-left: 20px; /* LTR */ +} +[dir="rtl"] dl dd, +[dir="rtl"] dl dl { + margin-right: 20px; +} +blockquote { + margin: 1em 40px; +} +address { + font-style: italic; +} +u, +ins { + text-decoration: underline; +} +s, +strike, +del { + text-decoration: line-through; +} +big { + font-size: larger; +} +small { + font-size: smaller; +} +sub { + vertical-align: sub; + font-size: smaller; + line-height: normal; +} +sup { + vertical-align: super; + font-size: smaller; + line-height: normal; +} +abbr, +acronym { + border-bottom: dotted 1px; +} +ul { + margin: 0.25em 0 0.25em 1.5em; /* LTR */ + list-style-type: disc; + list-style-image: none; +} +[dir="rtl"] ul { + margin-right: 1.5em; + margin-left: 0; +} +/* This is required to win over specificity of [dir="rtl"] ul */ +[dir="rtl"] .messages__list { + margin-right: 0; +} +ol { + margin: 0.25em 0 0.25em 2em; /* LTR */ + padding: 0; + list-style-type: decimal; +} +[dir="rtl"] ol { + margin-right: 2em; + margin-left: 0; +} +code { + margin: 0.5em 0; +} +pre { + margin: 0.5em 0; + white-space: pre-wrap; +} +details { + line-height: 1.295em; +} +details summary { + padding: 0.95em 1.45em; +} +details summary:focus { + outline: none; +} +/** + * Unfortunately, text-decoration for details summary is not supported on all + * browsers. So we add a span (which can handle text-decoration) in Seven's + * templates/details.html.twig. In case there are other details templates that + * don't have the span, we provide text-decoration in the parent selector. + * This provides maximum compatibility and coverage with minimal disruption. + */ +details summary:not(.seven-details__summary):focus { + text-decoration: underline; +} +details summary:focus span { + text-decoration: underline; +} +img { + max-width: 100%; + height: auto; +} diff --git a/web/themes/seven/css/base/print.css b/web/themes/seven/css/base/print.css new file mode 100644 index 0000000000000000000000000000000000000000..98c128a474c37f18e703167bd2d1e73dc1fee132 --- /dev/null +++ b/web/themes/seven/css/base/print.css @@ -0,0 +1,89 @@ +@media print { + * { + /* Black prints faster */ + /* https://github.com/h5bp/main.css/blob/main/dist/_print.css#L14 */ + color: #000 !important; + background-color: transparent !important; + box-shadow: none !important; + text-shadow: none !important; + } + body { + padding-top: 0; + } + a, + a:visited { + text-decoration: underline; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + a, + .link { + text-decoration: underline; + color: #000; + } + .button, + .button--primary { + background: none !important; + } + .messages { + border-width: 1px; + border-color: #999; + } + .is-collapse-enabled .tabs { + max-height: 999em; + } + .is-horizontal .tabs__tab { + margin: 0 4px !important; + border-radius: 4px 4px 0 0 !important; + } + .dropbutton-multiple .dropbutton .secondary-action { + display: block; + } + .js .dropbutton-widget, + .js td .dropbutton-widget /* Splitbuttons */ { + position: relative; + } + .js .dropbutton .dropbutton-toggle { + display: none; + } + .js .dropbutton-multiple .dropbutton-widget { + border-radius: 4px; + background: none; + } + input.form-autocomplete, + input.form-text, + input.form-tel, + input.form-email, + input.form-url, + input.form-search, + input.form-number, + input.form-color, + input.form-file, + textarea.form-textarea, + select.form-select { + border-width: 1px; + } +} diff --git a/web/themes/seven/css/base/typography.css b/web/themes/seven/css/base/typography.css new file mode 100644 index 0000000000000000000000000000000000000000..fd8e8ebe81d9af546d1c0697233fa524713fe064 --- /dev/null +++ b/web/themes/seven/css/base/typography.css @@ -0,0 +1,36 @@ +/** +* Reusable utility classes that apply vertical spacing consistency and in line +* with the base line height of Seven. +*/ +.leader { + margin-top: 20px; + margin-top: 1.538rem; +} +.leader-double { + margin-top: 40px; + margin-top: 3.076rem; +} +.leader-triple { + margin-top: 60px; + margin-top: 4.614rem; +} +.leader-quadruple { + margin-top: 80px; + margin-top: 6.152rem; +} +.trailer { + margin-bottom: 20px; + margin-bottom: 1.538rem; +} +.trailer-double { + margin-bottom: 40px; + margin-bottom: 3.076rem; +} +.trailer-triple { + margin-bottom: 60px; + margin-bottom: 4.614rem; +} +.trailer-quadruple { + margin-bottom: 80px; + margin-bottom: 6.152rem; +} diff --git a/web/themes/seven/css/classy/README.txt b/web/themes/seven/css/classy/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..42514f5f0c72fe4245e6be2387e6ca8abb646715 --- /dev/null +++ b/web/themes/seven/css/classy/README.txt @@ -0,0 +1,12 @@ +WHAT IS THIS DIRECTORY FOR? +-------------------------------- +This directory is for CSS files previously inherited from the Classy theme. + +WHY ARE CLASSY CSS FILES BEING COPIED HERE? +------------------------------------------- +Classy will be deprecated during the Drupal 9 lifecycle. To prepare for Classy's +removal, CSS files that would otherwise be inherited from Classy are copied +here. + +CSS files that differ from the Classy versions should not be placed in this +directory or any subdirectory. diff --git a/web/themes/seven/css/classy/components/action-links.css b/web/themes/seven/css/classy/components/action-links.css new file mode 100644 index 0000000000000000000000000000000000000000..274d798e18e7ea39766ef871dd511b22c3a3803c --- /dev/null +++ b/web/themes/seven/css/classy/components/action-links.css @@ -0,0 +1,43 @@ +/** + * @file + * Styles for link buttons and action links. + */ + +.action-links { + margin: 1em 0; + padding: 0; + list-style: none; +} +[dir="rtl"] .action-links { + /* This is required to win over specificity of [dir="rtl"] ul */ + margin-right: 0; +} +.action-links li { + display: inline-block; + margin: 0 0.3em; +} +.action-links li:first-child { + margin-left: 0; /* LTR */ +} +[dir="rtl"] .action-links li:first-child { + margin-right: 0; + margin-left: 0.3em; +} +.button-action { + display: inline-block; + padding: 0.2em 0.5em 0.3em; + text-decoration: none; + line-height: 160%; +} +.button-action:before { + margin-left: -0.1em; /* LTR */ + padding-right: 0.2em; /* LTR */ + content: "+"; + font-weight: 900; +} +[dir="rtl"] .button-action:before { + margin-right: -0.1em; + margin-left: 0; + padding-right: 0; + padding-left: 0.2em; +} diff --git a/web/themes/seven/css/classy/components/book-navigation.css b/web/themes/seven/css/classy/components/book-navigation.css new file mode 100644 index 0000000000000000000000000000000000000000..08728e27b531cf85c374cc542b2aad34643b967f --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/breadcrumb.css b/web/themes/seven/css/classy/components/breadcrumb.css new file mode 100644 index 0000000000000000000000000000000000000000..1e6a7fac71a177eefc9da2312f8739e84ef16b89 --- /dev/null +++ b/web/themes/seven/css/classy/components/breadcrumb.css @@ -0,0 +1,29 @@ +/** + * @file + * Styles for breadcrumbs. + */ + +.breadcrumb { + padding-bottom: 0.5em; +} +.breadcrumb ol { + margin: 0; + padding: 0; +} +[dir="rtl"] .breadcrumb ol { + /* This is required to win over specificity of [dir="rtl"] ol */ + margin-right: 0; +} +.breadcrumb li { + display: inline; + margin: 0; + padding: 0; + list-style-type: none; +} +/* IE8 does not support :not() and :last-child. */ +.breadcrumb li:before { + content: " \BB "; +} +.breadcrumb li:first-child:before { + content: none; +} diff --git a/web/themes/seven/css/classy/components/button.css b/web/themes/seven/css/classy/components/button.css new file mode 100644 index 0000000000000000000000000000000000000000..5eb4f1ac13ca0b853aca842ff796b636f7edfdc6 --- /dev/null +++ b/web/themes/seven/css/classy/components/button.css @@ -0,0 +1,15 @@ +/** + * @file + * Visual styles for buttons. + */ + +.button, +.image-button { + margin-right: 1em; + margin-left: 1em; +} +.button:first-child, +.image-button:first-child { + margin-right: 0; + margin-left: 0; +} diff --git a/web/themes/seven/css/classy/components/collapse-processed.css b/web/themes/seven/css/classy/components/collapse-processed.css new file mode 100644 index 0000000000000000000000000000000000000000..ef10aa341e156bdbc1d0a7d3602fa9002483bf29 --- /dev/null +++ b/web/themes/seven/css/classy/components/collapse-processed.css @@ -0,0 +1,32 @@ +/** + * @file + * Visual styles for collapsible fieldsets. + */ + +.collapse-processed > summary { + padding-right: 0.5em; + padding-left: 0.5em; +} +.collapse-processed > summary:before { + float: left; /* LTR */ + width: 1em; + height: 1em; + content: ""; + background: url(../../../images/menu-expanded.png) 0 100% no-repeat; /* LTR */ +} +[dir="rtl"] .collapse-processed > summary:before { + float: right; + background-position: 100% 100%; +} +.collapse-processed:not([open]) > summary:before { + -ms-transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + background-position: 25% 35%; /* LTR */ +} +[dir="rtl"] .collapse-processed:not([open]) > summary:before { + -ms-transform: rotate(90deg); + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + background-position: 75% 35%; +} diff --git a/web/themes/seven/css/classy/components/container-inline.css b/web/themes/seven/css/classy/components/container-inline.css new file mode 100644 index 0000000000000000000000000000000000000000..64b78f683bf159533eb9d5661a209767782e7cc3 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/dropbutton.css b/web/themes/seven/css/classy/components/dropbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..5e971ba622dc2e4734d2a6c4beeef7029e9d790f --- /dev/null +++ b/web/themes/seven/css/classy/components/dropbutton.css @@ -0,0 +1,33 @@ +/** + * @file + * General styles for dropbuttons. + */ + +.js .dropbutton-widget { + border: 1px solid #ccc; + background-color: white; +} +.js .dropbutton-widget:hover { + border-color: #b8b8b8; +} +.dropbutton .dropbutton-action > * { + padding: 0.1em 0.5em; + white-space: nowrap; +} +.dropbutton .secondary-action { + border-top: 1px solid #e8e8e8; +} +.dropbutton-multiple .dropbutton { + border-right: 1px solid #e8e8e8; /* LTR */ +} +[dir="rtl"] .dropbutton-multiple .dropbutton { + border-right: 0 none; + border-left: 1px solid #e8e8e8; +} +.dropbutton-multiple .dropbutton .dropbutton-action > * { + margin-right: 0.25em; /* LTR */ +} +[dir="rtl"] .dropbutton-multiple .dropbutton .dropbutton-action > * { + margin-right: 0; + margin-left: 0.25em; +} diff --git a/web/themes/seven/css/classy/components/exposed-filters.css b/web/themes/seven/css/classy/components/exposed-filters.css new file mode 100644 index 0000000000000000000000000000000000000000..b686902ef111f07def492f6e39636f4449fdf130 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/field.css b/web/themes/seven/css/classy/components/field.css new file mode 100644 index 0000000000000000000000000000000000000000..ff7e9ab1fc765b99f3ca09d6e8b9a6db7867229c --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/file.css b/web/themes/seven/css/classy/components/file.css new file mode 100644 index 0000000000000000000000000000000000000000..8637242a546a504e47999984174f0fd6ba20f186 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/form.css b/web/themes/seven/css/classy/components/form.css new file mode 100644 index 0000000000000000000000000000000000000000..0822f34683d85eb287ab951eb967c6669150d85d --- /dev/null +++ b/web/themes/seven/css/classy/components/form.css @@ -0,0 +1,104 @@ +/** + * @file + * Visual styles for form components. + */ + +form .field-multiple-table { + margin: 0; +} +form .field-multiple-table .field-multiple-drag { + width: 30px; + padding-right: 0; /* LTR */ +} +[dir="rtl"] form .field-multiple-table .field-multiple-drag { + padding-left: 0; +} +form .field-multiple-table .field-multiple-drag .tabledrag-handle { + padding-right: 0.5em; /* LTR */ +} +[dir="rtl"] form .field-multiple-table .field-multiple-drag .tabledrag-handle { + padding-right: 0; + padding-left: 0.5em; +} +form .field-add-more-submit { + margin: 0.5em 0 0; +} + +/** + * Markup generated by Form API. + */ +.form-item, +.form-actions { + margin-top: 1em; + margin-bottom: 1em; +} +tr.odd .form-item, +tr.even .form-item { + margin-top: 0; + margin-bottom: 0; +} +.form-composite > .fieldset-wrapper > .description, +.form-item .description { + font-size: 0.85em; +} +label.option { + display: inline; + font-weight: normal; +} +.form-composite > legend, +.label { + display: inline; + margin: 0; + padding: 0; + font-size: inherit; + font-weight: bold; +} +.form-checkboxes .form-item, +.form-radios .form-item { + margin-top: 0.4em; + margin-bottom: 0.4em; +} +.form-type-radio .description, +.form-type-checkbox .description { + margin-left: 2.4em; /* LTR */ +} +[dir="rtl"] .form-type-radio .description, +[dir="rtl"] .form-type-checkbox .description { + margin-right: 2.4em; + margin-left: 0; +} +.marker { + color: #e00; +} +.form-required:after { + display: inline-block; + width: 6px; + height: 6px; + margin: 0 0.3em; + content: ""; + vertical-align: super; + /* Use a background image to prevent screen readers from announcing the text. */ + background-image: url(../../../images/icons/ee0000/required.svg); + background-repeat: no-repeat; + background-size: 6px 6px; +} +abbr.tabledrag-changed, +abbr.ajax-changed { + border-bottom: none; +} +.form-item input.error, +.form-item textarea.error, +.form-item select.error { + border: 2px solid red; +} + +/* Inline error messages. */ +.form-item--error-message:before { + display: inline-block; + width: 14px; + height: 14px; + content: ""; + vertical-align: sub; + background: url(../../../images/icons/e32700/error.svg) no-repeat; + background-size: contain; +} diff --git a/web/themes/seven/css/classy/components/forum.css b/web/themes/seven/css/classy/components/forum.css new file mode 100644 index 0000000000000000000000000000000000000000..c35e3f4411e6b986dd7050ab722bd648ea401d7a --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/icons.css b/web/themes/seven/css/classy/components/icons.css new file mode 100644 index 0000000000000000000000000000000000000000..744eba8c1abcf4680774c69ac0fe5c885083e812 --- /dev/null +++ b/web/themes/seven/css/classy/components/icons.css @@ -0,0 +1,21 @@ +/** + * @file + * Visual styles for icons. + */ + +.icon-help { + padding: 1px 0 1px 20px; /* LTR */ + background: url(../../../images/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(../../../images/feed.svg) no-repeat; +} diff --git a/web/themes/seven/css/classy/components/image-widget.css b/web/themes/seven/css/classy/components/image-widget.css new file mode 100644 index 0000000000000000000000000000000000000000..56777c41ea43d0fdd279c1ce5f1f024b949a3e58 --- /dev/null +++ b/web/themes/seven/css/classy/components/image-widget.css @@ -0,0 +1,33 @@ +/** + * @file + * Image upload widget. + * + * This CSS file is not used in this theme (Classy). It was intended to be used, + * but due to a bug, Drupal 8 shipped with it not being used. To not break + * backwards compatibility, we continue to not load it in Classy. Every + * subtheme of Classy is encouraged to use it, by attaching the + * classy/image-widget asset library in their image-widget.html.twig file. + * + * @see core/themes/seven/templates/content-edit/image-widget.html.twig. + * + * @todo In Drupal 9, let core/themes/classy/templates/content-edit/image-widget.html.twig + * attach the classy/image-widget asset library. + */ + +.image-preview { + float: left; /* LTR */ + padding: 0 10px 10px 0; /* LTR */ +} +[dir="rtl"] .image-preview { + float: right; + padding: 0 0 10px 10px; +} +.image-widget-data { + float: left; /* LTR */ +} +[dir="rtl"] .image-widget-data { + float: right; +} +.image-widget-data .text-field { + width: auto; +} diff --git a/web/themes/seven/css/classy/components/indented.css b/web/themes/seven/css/classy/components/indented.css new file mode 100644 index 0000000000000000000000000000000000000000..65ae0612f64fe1de3d43e96edb26361e109affac --- /dev/null +++ b/web/themes/seven/css/classy/components/indented.css @@ -0,0 +1,15 @@ +/** + * @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/web/themes/seven/css/classy/components/inline-form.css b/web/themes/seven/css/classy/components/inline-form.css new file mode 100644 index 0000000000000000000000000000000000000000..b5201a78c9db0c2a8f09c700f3374badbca79d31 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/item-list.css b/web/themes/seven/css/classy/components/item-list.css new file mode 100644 index 0000000000000000000000000000000000000000..a8ce5d28a53ddd7de538b7f83983dcbaa359b817 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/link.css b/web/themes/seven/css/classy/components/link.css new file mode 100644 index 0000000000000000000000000000000000000000..fa83f2bb2c371b95ff87270ef93e4c72b86815ac --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/links.css b/web/themes/seven/css/classy/components/links.css new file mode 100644 index 0000000000000000000000000000000000000000..e4832539337a9b555f293e47ca2f0d8dc1358d5d --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/media-embed-error.css b/web/themes/seven/css/classy/components/media-embed-error.css new file mode 100644 index 0000000000000000000000000000000000000000..699b82f7ab01228fa0050744470dec7eaf1cdd8a --- /dev/null +++ b/web/themes/seven/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(../../../images/no-thumbnail.png); + background-repeat: no-repeat; + background-position: center top; + background-size: 100px 100px; +} diff --git a/web/themes/seven/css/classy/components/menu.css b/web/themes/seven/css/classy/components/menu.css new file mode 100644 index 0000000000000000000000000000000000000000..c226639a162986559867e67609a4e9a340a41a26 --- /dev/null +++ b/web/themes/seven/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(../../../images/menu-expanded.png); +} +.menu-item--collapsed { + list-style-type: disc; + list-style-image: url(../../../images/menu-collapsed.png); /* LTR */ +} +[dir="rtl"] .menu-item--collapsed { + list-style-image: url(../../../images/menu-collapsed-rtl.png); +} +.menu-item { + margin: 0; + padding-top: 0.2em; +} +ul.menu a.is-active { + color: #000; +} diff --git a/web/themes/seven/css/classy/components/messages.css b/web/themes/seven/css/classy/components/messages.css new file mode 100644 index 0000000000000000000000000000000000000000..1435327eec4dad666698fc854de4511abe3aa940 --- /dev/null +++ b/web/themes/seven/css/classy/components/messages.css @@ -0,0 +1,72 @@ +/** + * @file + * Styles for system messages. + */ + +.messages { + padding: 15px 20px 15px 35px; /* LTR */ + word-wrap: break-word; + border: 1px solid; + border-width: 1px 1px 1px 0; /* LTR */ + border-radius: 2px; + background: no-repeat 10px 17px; /* LTR */ + overflow-wrap: break-word; +} +[dir="rtl"] .messages { + padding-right: 35px; + padding-left: 20px; + text-align: right; + border-width: 1px 0 1px 1px; + background-position: right 10px top 17px; +} +.messages + .messages { + margin-top: 1.538em; +} +.messages__list { + margin: 0; + padding: 0; + list-style: none; +} +.messages__item + .messages__item { + margin-top: 0.769em; +} +/* See .color-success in Seven's colors.css */ +.messages--status { + color: #325e1c; + border-color: #c9e1bd #c9e1bd #c9e1bd transparent; /* LTR */ + background-color: #f3faef; + background-image: url(../../../images/icons/73b355/check.svg); + box-shadow: -8px 0 0 #77b259; /* LTR */ +} +[dir="rtl"] .messages--status { + margin-left: 0; + border-color: #c9e1bd transparent #c9e1bd #c9e1bd; + box-shadow: 8px 0 0 #77b259; +} +/* See .color-warning in Seven's colors.css */ +.messages--warning { + color: #734c00; + border-color: #f4daa6 #f4daa6 #f4daa6 transparent; /* LTR */ + background-color: #fdf8ed; + background-image: url(../../../images/icons/e29700/warning.svg); + box-shadow: -8px 0 0 #e09600; /* LTR */ +} +[dir="rtl"] .messages--warning { + border-color: #f4daa6 transparent #f4daa6 #f4daa6; + box-shadow: 8px 0 0 #e09600; +} +/* See .color-error in Seven's colors.css */ +.messages--error { + color: #a51b00; + border-color: #f9c9bf #f9c9bf #f9c9bf transparent; /* LTR */ + background-color: #fcf4f2; + background-image: url(../../../images/icons/e32700/error.svg); + box-shadow: -8px 0 0 #e62600; /* LTR */ +} +[dir="rtl"] .messages--error { + border-color: #f9c9bf transparent #f9c9bf #f9c9bf; + box-shadow: 8px 0 0 #e62600; +} +.messages--error p.error { + color: #a51b00; +} diff --git a/web/themes/seven/css/classy/components/more-link.css b/web/themes/seven/css/classy/components/more-link.css new file mode 100644 index 0000000000000000000000000000000000000000..c604061317d013d634660816cca3fd606091ed40 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/node.css b/web/themes/seven/css/classy/components/node.css new file mode 100644 index 0000000000000000000000000000000000000000..6b7cd5257d6d167426d11e2b6adb5eda3fecbfdf --- /dev/null +++ b/web/themes/seven/css/classy/components/node.css @@ -0,0 +1,8 @@ +/** + * @file + * Visual styles for nodes. + */ + +.node--unpublished { + background-color: #fff4f4; +} diff --git a/web/themes/seven/css/classy/components/pager.css b/web/themes/seven/css/classy/components/pager.css new file mode 100644 index 0000000000000000000000000000000000000000..a9471fc037cab28544a3c89cf7040f26434cf1a5 --- /dev/null +++ b/web/themes/seven/css/classy/components/pager.css @@ -0,0 +1,16 @@ +/** + * @file + * Visual styles for pager. + */ + +.pager__items { + clear: both; + text-align: center; +} +.pager__item { + display: inline; + padding: 0.5em; +} +.pager__item.is-active { + font-weight: bold; +} diff --git a/web/themes/seven/css/classy/components/progress.css b/web/themes/seven/css/classy/components/progress.css new file mode 100644 index 0000000000000000000000000000000000000000..47da889350040c07f3137184192d19a66d0c6334 --- /dev/null +++ b/web/themes/seven/css/classy/components/progress.css @@ -0,0 +1,69 @@ +/** + * @file + * Visual styles for progress bar. + * + * @see progress.js + */ + +.progress__track { + border-color: #b3b3b3; + border-radius: 10em; + background-color: #f2f1eb; + background-image: -webkit-linear-gradient(#e7e7df, #f0f0f0); + background-image: linear-gradient(#e7e7df, #f0f0f0); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.16); +} +.progress__bar { + height: 16px; + margin-top: -1px; + margin-left: -1px; /* LTR */ + padding: 0 1px; + -webkit-transition: width 0.5s ease-out; + transition: width 0.5s ease-out; + -webkit-animation: animate-stripes 3s linear infinite; + -moz-animation: animate-stripes 3s linear infinite; + border: 1px #07629a solid; + border-radius: 10em; + background: #057ec9; + background-image: + -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), + -webkit-linear-gradient(left top, #0094f0 0%, #0094f0 25%, #007ecc 25%, #007ecc 50%, #0094f0 50%, #0094f0 75%, #0094f0 100%); + background-image: + linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), + linear-gradient(to right bottom, #0094f0 0%, #0094f0 25%, #007ecc 25%, #007ecc 50%, #0094f0 50%, #0094f0 75%, #0094f0 100%); + background-size: 40px 40px; +} +[dir="rtl"] .progress__bar { + margin-right: -1px; + margin-left: 0; + -webkit-animation-direction: reverse; + -moz-animation-direction: reverse; + animation-direction: reverse; +} + +@media screen and (prefers-reduced-motion: reduce) { + .progress__bar { + -webkit-transition: none; + transition: none; + -webkit-animation: none; + -moz-animation: none; + } +} + +/** + * Progress bar animations. + */ +@-webkit-keyframes animate-stripes { + 0% { background-position: 0 0, 0 0; } + 100% { background-position: 0 0, -80px 0; } +} + +@-ms-keyframes animate-stripes { + 0% { background-position: 0 0, 0 0; } + 100% { background-position: 0 0, -80px 0; } +} + +@keyframes animate-stripes { + 0% { background-position: 0 0, 0 0; } + 100% { background-position: 0 0, -80px 0; } +} diff --git a/web/themes/seven/css/classy/components/search-results.css b/web/themes/seven/css/classy/components/search-results.css new file mode 100644 index 0000000000000000000000000000000000000000..343ea8b5fb1b22d6e3684832eeded759ab058ca1 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/tabledrag.css b/web/themes/seven/css/classy/components/tabledrag.css new file mode 100644 index 0000000000000000000000000000000000000000..a197b24979cff8f741691b1d25e2d2ca6063174a --- /dev/null +++ b/web/themes/seven/css/classy/components/tabledrag.css @@ -0,0 +1,14 @@ +/** + * @file + * Visual styles for table drag. + */ + +tr.drag { + background-color: #fffff0; +} +tr.drag-previous { + background-color: #ffd; +} +body div.tabledrag-changed-warning { + margin-bottom: 0.5em; +} diff --git a/web/themes/seven/css/classy/components/tableselect.css b/web/themes/seven/css/classy/components/tableselect.css new file mode 100644 index 0000000000000000000000000000000000000000..fcfb2a5aa4aec34886cfe3c193e1cbcb20cb08fb --- /dev/null +++ b/web/themes/seven/css/classy/components/tableselect.css @@ -0,0 +1,19 @@ +/** + * @file + * Table select behavior. + * + * @see tableselect.js + */ + +tr.selected td { + background: #ffc; +} +td.checkbox, +th.checkbox { + text-align: center; +} +[dir="rtl"] td.checkbox, +[dir="rtl"] th.checkbox { + /* This is required to win over specificity of [dir="rtl"] td */ + text-align: center; +} diff --git a/web/themes/seven/css/classy/components/tablesort.css b/web/themes/seven/css/classy/components/tablesort.css new file mode 100644 index 0000000000000000000000000000000000000000..44e5349404d0356ab1b601951ff0d141b85ac4a4 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/tabs.css b/web/themes/seven/css/classy/components/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..16fb1223f08abe7f7366148eb089531b917b1996 --- /dev/null +++ b/web/themes/seven/css/classy/components/tabs.css @@ -0,0 +1,33 @@ +/** + * @file + * Visual styles for tabs. + */ + +div.tabs { + margin: 1em 0; +} +ul.tabs { + margin: 0 0 0.5em; + padding: 0; + list-style: none; +} +.tabs > li { + display: inline-block; + margin-right: 0.3em; /* LTR */ +} +[dir="rtl"] .tabs > li { + margin-right: 0; + margin-left: 0.3em; +} +.tabs a { + display: block; + padding: 0.2em 1em; + text-decoration: none; +} +.tabs a.is-active { + background-color: #eee; +} +.tabs a:focus, +.tabs a:hover { + background-color: #f5f5f5; +} diff --git a/web/themes/seven/css/classy/components/textarea.css b/web/themes/seven/css/classy/components/textarea.css new file mode 100644 index 0000000000000000000000000000000000000000..2661bae9c4a3f2f9ea0aff1df132962ae656241b --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/components/ui-dialog.css b/web/themes/seven/css/classy/components/ui-dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..476c21ffdb771ed189d7a6e7f76cfe170dbe340b --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/css/classy/layout/media-library.css b/web/themes/seven/css/classy/layout/media-library.css new file mode 100644 index 0000000000000000000000000000000000000000..84dee10daa5407063fa77cae7cdbae9ca37ea2e5 --- /dev/null +++ b/web/themes/seven/css/classy/layout/media-library.css @@ -0,0 +1,28 @@ +/** + * @file + * Contains minimal layout styling for the media library. + */ + +.media-library-wrapper { + display: flex; +} + +.media-library-menu { + flex-basis: 20%; + flex-shrink: 0; +} + +.media-library-content { + flex-grow: 1; +} + +.media-library-views-form { + display: flex; + flex-wrap: wrap; +} + +.media-library-views-form .media-library-item { + justify-content: space-between; + max-width: 23%; + margin: 1%; +} diff --git a/web/themes/seven/css/components/admin-list.css b/web/themes/seven/css/components/admin-list.css new file mode 100644 index 0000000000000000000000000000000000000000..090f3fd377cf3fc5f594fc87b8c90a050aa37496 --- /dev/null +++ b/web/themes/seven/css/components/admin-list.css @@ -0,0 +1,46 @@ +/** + * Admin lists. + */ +ul.admin-list { + margin: 0; + padding: 0; +} +.admin-list li { + position: relative; + margin: 0; + padding: 0; + list-style-type: none; + list-style-image: none; + border-top: 1px solid #bfbfbf; +} +.admin-list.compact li { + border: none; +} +.admin-list li a { + display: block; + min-height: 0; + padding: 14px 15px 14px 25px; /* LTR */ + background: url(../../images/icons/bebebe/chevron-disc-right.svg) no-repeat 1px 16px; /* LTR */ +} +[dir="rtl"] .admin-list li a { + padding-right: 25px; + padding-left: 15px; + background: url(../../images/icons/bebebe/chevron-disc-left.svg) no-repeat right 16px; +} +.admin-list.compact li a { + padding: 2px 0; + background-image: none; +} +.admin-list li a:hover, +.admin-list li a:focus, +.admin-list li a:active { + text-decoration: none; +} +.admin-list li a .label { + font-size: 1.0769em; +} +.admin-list li a:hover .label, +.admin-list li a:focus .label, +.admin-list li a:active .label { + text-decoration: underline; +} diff --git a/web/themes/seven/css/components/breadcrumb.css b/web/themes/seven/css/components/breadcrumb.css new file mode 100644 index 0000000000000000000000000000000000000000..d5512048b999a5179987c8f60cfa14b4af481a41 --- /dev/null +++ b/web/themes/seven/css/components/breadcrumb.css @@ -0,0 +1,9 @@ +/** + * @file + * Breadcrumbs. + */ + +.breadcrumb { + padding: 20px 0 10px; + line-height: 1em; +} diff --git a/web/themes/seven/css/components/buttons.css b/web/themes/seven/css/components/buttons.css new file mode 100644 index 0000000000000000000000000000000000000000..c747f65274f1451929bd08b754b6eef31205feae --- /dev/null +++ b/web/themes/seven/css/components/buttons.css @@ -0,0 +1,213 @@ +/** + * @file + * Structural styles for Seven’s UI buttons + * + * Apply these classes to any element (<link>, <button>, <input>, etc.) that + * should appear as a button. + */ + +/** + * Buttons. + * + * 1. Enable z-index on buttons. + * 2. Normalize 'line-height'; can’t be changed from 'normal' in Firefox 4+. + * 3. Allows full range of styling in Webkit and Gecko. + * 4. Use px units to ensure button text is centered vertically. + * 5. Use rems to avoid the font size cascade of ems, with a px fallback for + * older browsers. + * 6. Prevent fat text in WebKit. + * + * @todo Consider moving box-sizing into base.css under a universal selector. + * See https://www.drupal.org/node/2124251 + * + */ +.button { + position: relative; /* 1 */ + display: inline-block; + box-sizing: border-box; + padding: 4px 1.5em; /* 4 */ + cursor: pointer; + -webkit-transition: all 0.1s; + transition: all 0.1s; + text-align: center; + text-decoration: none; + color: #333; + border: 1px solid #a6a6a6; + border-radius: 20em; + background-color: #f2f1eb; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); + font-size: 14px; + font-size: 0.875rem; /* 5 */ + font-weight: 600; + line-height: normal; /* 2 */ + -webkit-appearance: none; /* 3 */ + -moz-appearance: none; /* 3 */ + -webkit-font-smoothing: antialiased; /* 6 */ +} +.button:hover, +.button:focus { + text-decoration: none; + color: #1a1a1a; + outline: none; + background-color: #f9f8f6; + background-image: -webkit-linear-gradient(top, #fcfcfa, #e9e9dd); + background-image: linear-gradient(to bottom, #fcfcfa, #e9e9dd); +} +.button:hover { + box-shadow: 0 1px 2px hsla(0, 0%, 0%, 0.125); +} + +/* Prevent focus ring being covered by next siblings. */ +.button:focus { + z-index: 10; + border: 1px solid #3ab2ff; + box-shadow: 0 0 0.5em 0.1em hsla(203, 100%, 60%, 0.7); +} +.button:active { + -webkit-transition: none; + transition: none; + border: 1px solid #a6a6a6; + background-color: #dfdfd9; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} + +.button--primary { + color: #fff; + border-color: #1e5c90; + background-color: #0071b8; + background-image: -webkit-linear-gradient(top, #007bc6, #0071b8); + background-image: linear-gradient(to bottom, #007bc6, #0071b8); + text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + font-weight: 700; + -webkit-font-smoothing: antialiased; +} +.button--primary:hover, +.button--primary:focus { + color: #fff; + border-color: #1e5c90; + background-color: #2369a6; + background-image: -webkit-linear-gradient(top, #0c97ed, #1f86c7); + background-image: linear-gradient(to bottom, #0c97ed, #1f86c7); +} +.button--primary:focus { + border: 1px solid #1280df; +} +.button--primary:hover { + box-shadow: 0 1px 2px hsla(203, 10%, 10%, 0.25); +} +.button--primary:active { + border-color: #144b78; + background-image: -webkit-linear-gradient(top, #08639b, #0071b8); + background-image: linear-gradient(to bottom, #08639b, #0071b8); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} + +/** + * Overrides styling from system.theme. + */ +.button-action:before { + margin-left: -0.2em; /* LTR */ + padding-right: 0.2em; /* LTR */ + font-size: 14px; + font-size: 0.875rem; + line-height: 16px; + -webkit-font-smoothing: auto; +} +[dir="rtl"] .button-action:before { + margin-right: -0.2em; + margin-left: 0; + padding-right: 0; + padding-left: 0.2em; +} + +/** + * 1. Use px units to ensure button text is centered vertically. + */ +.no-touchevents .button--small { + padding: 2px 1em; /* 1 */ + font-size: 13px; + font-size: 0.813rem; +} + +.button:disabled, +.button:disabled:active, +.button.is-disabled, +.button.is-disabled:active { + cursor: default; + color: #5c5c5c; + border-color: #d4d4d4; + background: #ededed; + box-shadow: none; + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); + font-weight: normal; +} + +/* Link actions. */ + +/** + * Style a clickable/tappable element as a link. Duplicates the base style for + * the <a> tag, plus a reset for padding, borders and background. + */ +.link { + display: inline; + padding: 0; + cursor: pointer; + text-decoration: none; + color: #0074bd; + border: 0; + background: none; + -webkit-appearance: none; + -moz-appearance: none; +} +.link:hover, +.link:focus { + text-decoration: underline; + color: #008ee6; +} + +/** + * We've temporarily added the danger button here, bit of a harsh reset but we + * need it. + * @todo replace with link--danger. + * See https://www.drupal.org/node/2123731 + */ +.button--danger { + display: inline; + padding: 0; + cursor: pointer; + text-decoration: underline; + color: #c72100; + border: 0; + border-radius: 0; + background: none; + box-shadow: none; + font-weight: 400; + -webkit-appearance: none; + -moz-appearance: none; +} +.button--danger:hover, +.button--danger:focus, +.button--danger:active { + padding: 0; + text-decoration: underline; + color: #ff2a00; + border: 0; + background: none; + box-shadow: none; + text-shadow: none; +} +.button--danger:disabled, +.button--danger.is-disabled { + padding: 0; + cursor: default; + text-decoration: none; + color: #737373; + border: 0; + background: none; + box-shadow: none; + -webkit-font-smoothing: antialiased; +} diff --git a/web/themes/seven/css/components/container-inline.css b/web/themes/seven/css/components/container-inline.css new file mode 100644 index 0000000000000000000000000000000000000000..301b3fb17ec01741b889ae235df17b74abfc8069 --- /dev/null +++ b/web/themes/seven/css/components/container-inline.css @@ -0,0 +1,18 @@ +/** + * @file + * Inline items. + */ + +.container-inline .form-radios label:after, +.container-inline .form-checkboxes label:after { + content: ""; +} +.container-inline .form-radios .form-type-radio, +.container-inline .form-checkboxes .form-type-checkbox { + margin-right: 1em; +} +[dir="rtl"] .container-inline .form-radios .form-type-radio, +[dir="rtl"] .container-inline .form-checkboxes .form-type-checkbox { + margin-right: 0; + margin-left: 1em; +} diff --git a/web/themes/seven/css/components/container-inline.module.css b/web/themes/seven/css/components/container-inline.module.css new file mode 100644 index 0000000000000000000000000000000000000000..d3844257b82c2b74a4697edfc6fc07419b6ff3ea --- /dev/null +++ b/web/themes/seven/css/components/container-inline.module.css @@ -0,0 +1,9 @@ +/** + * @file + * Inline items. + */ + +.container-inline div, +.container-inline label { + display: inline-block; +} diff --git a/web/themes/seven/css/components/content-header.css b/web/themes/seven/css/components/content-header.css new file mode 100644 index 0000000000000000000000000000000000000000..635dff4d0262311d08f97b364ca2555d2a0b6b3e --- /dev/null +++ b/web/themes/seven/css/components/content-header.css @@ -0,0 +1,8 @@ +/** + * Content header. + */ +.content-header { + overflow: hidden; + padding: 24px 0 0; + background-color: #e0e0d8; +} diff --git a/web/themes/seven/css/components/details.css b/web/themes/seven/css/components/details.css new file mode 100644 index 0000000000000000000000000000000000000000..bd4d98cbdb98dd06714a323ab047e36a88c47001 --- /dev/null +++ b/web/themes/seven/css/components/details.css @@ -0,0 +1,26 @@ +/** + * @file + * Collapsible details. + * + * @see collapse.js + */ +.seven-details { + margin-top: 1em; + margin-bottom: 1em; + border: 1px solid #bfbfbf; + border-radius: 3px; + background-color: #fcfcfa; +} +.seven-details__summary { + cursor: pointer; + color: #0074bd; + text-shadow: 0 1px 0 white; +} +.seven-details__summary:hover, +.seven-details__summary:focus, +.seven-details[open] > .seven-details__summary { + color: #004f80; +} +.seven-details__wrapper { + padding: 0 1.5em 1em 1.5em; +} diff --git a/web/themes/seven/css/components/dialog.css b/web/themes/seven/css/components/dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..354f3222aa682937b2408d467074e109cb5cb555 --- /dev/null +++ b/web/themes/seven/css/components/dialog.css @@ -0,0 +1,127 @@ +/** + * Presentational styles for Drupal dialogs. + */ + +.ui-dialog { + position: absolute; + z-index: 1260; + padding: 0; + border: 0; + background: transparent; +} + +@media all and (max-width: 48em) { /* 768px */ + .ui-dialog { + min-width: 92%; + max-width: 92%; + } +} +.ui-dialog .ui-dialog-titlebar { + padding: 15px 49px 15px 15px; /* LTR */ + border-top-left-radius: 5px; + border-top-right-radius: 5px; + background: #6b6b6b; +} +[dir="rtl"] .ui-dialog .ui-dialog-titlebar { + padding-right: 15px; + padding-left: 49px; +} +.ui-dialog .ui-dialog-title { + margin: 0; + color: #fff; + font-size: 1.231em; + font-weight: 600; + -webkit-font-smoothing: antialiased; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + top: 10px; + right: 12px; /* LTR */ + width: 30px; + height: 30px; + margin: 0; + padding: 0; + -webkit-transition: all 0.1s; + transition: all 0.1s; + border: 3px solid #6b6b6b; + border-radius: 5px; + background: none; +} +.ui-dialog .ui-dialog-titlebar-close:hover, +.ui-dialog .ui-dialog-titlebar-close:focus { + border-color: #fff; +} +[dir="rtl"] .ui-dialog .ui-dialog-titlebar-close { + right: auto; + left: 20px; +} +.ui-dialog .ui-icon.ui-icon-closethick { + margin-top: -8px; + background: url(../../images/icons/ffffff/ex.svg) 0 0 no-repeat; +} +.ui-dialog .ui-widget-content.ui-dialog-content { + overflow: auto; + padding: 1em; + background: #fff; +} +.views-ui-dialog .ui-widget-content.ui-dialog-content { + padding: 0; +} +.ui-dialog .ui-widget-content.ui-dialog-buttonpane { + /* border-top: 1px solid #bfbfbf; */ + margin: 0; + padding: 15px 20px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + background: #f5f5f2; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: none; + margin: 0; + padding: 0; +} +.ui-dialog .ui-dialog-buttonpane .ui-button-text-only .ui-button-text { + padding: 0; +} +.ui-dialog .ui-dialog-content { + position: static; +} + +/* Form action buttons are moved in dialogs. Remove empty space. */ +.ui-dialog .ui-dialog-content .form-actions { + margin: 0; + padding: 0; +} +.ui-dialog .ajax-progress-throbber { + position: fixed; + z-index: 1000; + top: 48.5%; + /* Can't do center:50% middle: 50%, so approximate it for a typical window size. */ + left: 49%; /* LTR */ + width: 24px; + height: 24px; + padding: 4px; + opacity: 0.9; + border-radius: 7px; + background-color: #232323; + background-image: url(../../images/loading-small.gif); + background-repeat: no-repeat; + background-position: center center; +} +[dir="rtl"] .ui-dialog .ajax-progress-throbber { + right: 49%; + left: auto; +} +.ui-dialog .ajax-progress-throbber .throbber, +.ui-dialog .ajax-progress-throbber .message { + display: none; +} +.ui-dialog.ui-dialog-off-canvas .ui-dialog-titlebar { + position: relative; +} +.ui-dialog.ui-dialog-off-canvas .ui-dialog-titlebar-close { + top: 10px; +} +.ui-dialog.ui-dialog-off-canvas .ui-widget-content.ui-dialog-content { + background: none; +} diff --git a/web/themes/seven/css/components/dropbutton.component.css b/web/themes/seven/css/components/dropbutton.component.css new file mode 100644 index 0000000000000000000000000000000000000000..83c333d64d87c0559726579a8ceba7bfeb7b530b --- /dev/null +++ b/web/themes/seven/css/components/dropbutton.component.css @@ -0,0 +1,338 @@ +/** + * @file + * Styling dropbuttons. + */ + +/** + * Reset styling for all elements. + */ +.js .dropbutton .dropbutton-action > input, +.js .dropbutton .dropbutton-action > a, +.js .dropbutton .dropbutton-action > button { + margin: 0; + padding: 0; + text-align: left; /* LTR */ + text-decoration: none; + color: #333; + font-weight: 600; + line-height: normal; + -webkit-font-smoothing: antialiased; +} +[dir="rtl"].js .dropbutton .dropbutton-action > input, +[dir="rtl"].js .dropbutton .dropbutton-action > a, +[dir="rtl"].js .dropbutton .dropbutton-action > button { + margin-left: 0; /* This is required to win over specificity of [dir="rtl"] .dropbutton-multiple .dropbutton .dropbutton-action > * */ + text-align: right; +} +.js .dropbutton-action.last { + border-radius: 0 0 0 1em; /* LTR */ +} +[dir="rtl"] .js .dropbutton-action.last { + border-radius: 0 0 1em 0; +} + +/** + * Overwrite Sevens button styling. + */ +.js .dropbutton-widget .button { + border: 0; + border-radius: 0; + background: transparent; + box-shadow: none; +} +.js .dropbutton-multiple .dropbutton { + border-right: 0; /* LTR */ +} +[dir="rtl"].js .dropbutton-multiple .dropbutton { + border-left: 0; +} + +/** + * Show dropbutton elements as buttons when javascript is disabled + */ +.dropbutton { + margin: 0; + padding: 0; + list-style-type: none; +} +.dropbutton li + li { + margin-top: 10px; +} +.js .dropbutton li { + margin-right: 0; + margin-bottom: 0; +} +.js .dropbutton li + li { + margin-top: 0; +} + +@media screen and (min-width: 37.5625em) { /* 601px */ + .dropbutton li { + display: inline-block; + } + .dropbutton li + li { + margin-top: 0; + margin-left: 1em; + } + .js .dropbutton li + li { + margin-left: 0; + } +} + +/** + * Copied styling for .button. + */ +.js .dropbutton-multiple .dropbutton-widget { + border: 1px solid #a6a6a6; + border-radius: 20em; + background-color: #f2f1eb; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); +} +.dropbutton-multiple.open .dropbutton-widget { + border-radius: 1em; +} +.js .dropbutton-widget .dropbutton-action a, +.js .dropbutton-widget .dropbutton-action input, +.js .dropbutton-widget .dropbutton-action button { + display: block; + width: 100%; + padding: 4px 1.5em; + border-radius: 20em 0 0 20em; /* LTR */ +} +[dir="rtl"].js .dropbutton-widget .dropbutton-action a, +[dir="rtl"].js .dropbutton-widget .dropbutton-action input, +[dir="rtl"].js .dropbutton-widget .dropbutton-action button { + border-radius: 0 20em 20em 0; +} +.js .dropbutton-widget .dropbutton-action a:focus, +.js .dropbutton-widget .dropbutton-action input:focus, +.js .dropbutton-widget .dropbutton-action button:focus { + text-decoration: underline; +} +.js .dropbutton-multiple.open .dropbutton-action a, +.js .dropbutton-multiple.open .dropbutton-action .button { + border-radius: 0; +} +.js .dropbutton-multiple.open .dropbutton-action:first-child a, +.js .dropbutton-multiple.open .dropbutton-action:first-child .button { + border-radius: 0.9em 0 0 0; /* LTR */ +} +[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:first-child a, +[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:first-child .button { + border-radius: 0 0.9em 0 0; +} +.js .dropbutton-multiple.open .dropbutton-action:last-child a, +.js .dropbutton-multiple.open .dropbutton-action:last-child .button { + border-radius: 0 0 0 0.9em; /* LTR */ +} +[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:last-child a, +[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:last-child .button { + border-radius: 0 0 0.9em 0; +} +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action a:hover, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action button:hover, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action input:hover, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action a:focus, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action button:focus, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action input:focus { + z-index: 3; + color: #1a1a1a; + background-color: #f9f8f6; + background-image: -webkit-linear-gradient(top, #fcfcfa, #e9e9dd); + background-image: linear-gradient(to bottom, #fcfcfa, #e9e9dd); + box-shadow: 0 1px 2px hsla(0, 0%, 0%, 0.125); +} +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action a:active, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action input:active, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-action button:active { + text-decoration: none; + background-color: #dfdfd9; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} +.dropbutton .secondary-action { + border-top: 1px solid #bfbfba; +} + +/** + * Rare instances when a dropbutton is actually just a button. + * Copied from Seven's buttons.css. + */ +.dropbutton-single .dropbutton-widget { + position: static; + display: inline-block; + border: 0; + background: transparent; +} +.dropbutton-single .dropbutton-action a { + width: auto !important; + padding: 4px 1.5em; + -webkit-transition: all 0.1s; + transition: all 0.1s; + text-decoration: none; + color: #333; + border: 1px solid #a6a6a6; + border-radius: 20em !important; + background-color: #f2f1eb; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); + font-weight: 600; + -webkit-font-smoothing: antialiased; +} +.dropbutton-single .dropbutton-action a:hover, +.dropbutton-single .dropbutton-action a:focus { + text-decoration: none; + color: #1a1a1a; + outline: none; + background-color: #f9f8f6; + background-image: -webkit-linear-gradient(top, #fcfcfa, #e9e9dd); + background-image: linear-gradient(to bottom, #fcfcfa, #e9e9dd); +} +.dropbutton-single .dropbutton-action a:hover, +.dropbutton-single .dropbutton-action a:focus { + box-shadow: 0 1px 2px hsla(0, 0%, 0%, 0.125); +} +.dropbutton-single .dropbutton-action a:active { + -webkit-transition: none; + transition: none; + background-color: #dfdfd9; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} +.dropbutton .dropbutton-action .ajax-progress { + position: absolute; + z-index: 2; + top: 0.2em; + right: 0.2em; + padding: 0 0 0 0.1em; +} +.dropbutton-multiple .dropbutton-action .ajax-progress { + top: 0.15em; + right: 2.2em; + margin-right: 0; +} +.dropbutton-multiple .secondary-action .ajax-progress { + top: auto; + bottom: 0.3em; +} + +/** + * The dropdown trigger. + */ +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button { + border-left: 1px solid #a6a6a6; /* LTR */ + outline: none; +} +[dir="rtl"].js .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button { + border-right: 1px solid #a6a6a6; + border-left: 0; +} +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button { + border-radius: 0 20em 20em 0; /* LTR */ +} +[dir="rtl"].js .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button { + border-radius: 20em 0 0 20em; +} +.dropbutton-multiple.open .dropbutton-widget .dropbutton-toggle button { + border-radius: 0 1em 1em 0; /* LTR */ +} +[dir="rtl"] .dropbutton-multiple.open .dropbutton-widget .dropbutton-toggle button { + border-radius: 1em 0 0 1em; +} +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button:hover, +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button:focus { + z-index: 3; + text-decoration: none; + color: #1a1a1a; + background-color: #f9f8f6; + background-image: -webkit-linear-gradient(top, #fcfcfa, #e9e9dd); + background-image: linear-gradient(to bottom, #fcfcfa, #e9e9dd); + box-shadow: 0 1px 2px hsla(0, 0%, 0%, 0.125); +} +.js .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button:active { + background-color: #dfdfd9; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} +.dropbutton-arrow { + top: 54%; + right: 35%; /* LTR */ + border-top-color: #333; +} +[dir="rtl"] .dropbutton-arrow { + right: auto; + left: 35%; +} +.dropbutton-multiple.open .dropbutton-arrow { + top: 0.6667em; + border-top-color: transparent; + border-bottom: 0.3333em solid #333; +} + +/** + * Form edit action theming. + * Copied styling from .button--primary. + */ +.js .form-actions .dropbutton .dropbutton-action > * { + color: #fff; + text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + font-weight: 700; +} +.js .form-actions .dropbutton-widget { + position: relative; + border-color: #1e5c90; + background-color: #0071b8; + background-image: -webkit-linear-gradient(top, #007bc6, #0071b8); + background-image: linear-gradient(to bottom, #007bc6, #0071b8); + text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); +} +.form-actions .dropbutton-multiple.open .dropbutton-widget { + background-image: -webkit-linear-gradient(top, #007bc6, #0071b8); + background-image: linear-gradient(to bottom, #007bc6, #0071b8); +} +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-action .button:hover, +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-action .button:focus { + color: #fff; + background-color: #2369a6; + background-image: -webkit-linear-gradient(top, #0c97ed, #1f86c7); + background-image: linear-gradient(to bottom, #0c97ed, #1f86c7); + box-shadow: 0 1px 2px hsla(203, 10%, 10%, 0.25); +} +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-action .button:active { + border-color: #144b78; + background-image: -webkit-linear-gradient(top, #08639b, #0071b8); + background-image: linear-gradient(to bottom, #08639b, #0071b8); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button, +.form-actions .dropbutton .secondary-action { + border-color: #1e5c90; +} +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button { + background-image: -webkit-linear-gradient(top, #007bc6, #0071b8); + background-image: linear-gradient(to bottom, #007bc6, #0071b8); +} +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button:hover, +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button:focus { + background-color: #2369a6; + background-image: -webkit-linear-gradient(top, #0c97ed, #1f86c7); + background-image: linear-gradient(to bottom, #0c97ed, #1f86c7); +} +.js .form-actions .dropbutton-wrapper .dropbutton-widget .dropbutton-toggle button:active { + border-color: #144b78; + background-image: -webkit-linear-gradient(top, #08639b, #0071b8); + background-image: linear-gradient(to bottom, #08639b, #0071b8); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} +.form-actions .dropbutton-arrow { + border-top-color: #fff; +} +.form-actions .dropbutton-multiple.open .dropbutton-arrow { + border-bottom: 0.3333em solid white; +} diff --git a/web/themes/seven/css/components/entity-meta.css b/web/themes/seven/css/components/entity-meta.css new file mode 100644 index 0000000000000000000000000000000000000000..11be99177bcdd4a7250ec6e2040c8be198ed8a7f --- /dev/null +++ b/web/themes/seven/css/components/entity-meta.css @@ -0,0 +1,70 @@ +/** + * Entity meta settings. + */ +.entity-meta { + border-right: 1px solid #bfbfbf; + border-left: 1px solid #bfbfbf; + border-radius: 3px; + background-color: #edede8; + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.15); +} +.entity-meta__header, +.entity-meta .seven-details { + border-top: 1px solid #bfbfbf; + border-bottom: 1px solid #bfbfbf; + background-color: #fcfcfa; +} +.entity-meta__header { + padding: 1em 1.5em; + border-radius: 3px 3px 0 0; +} +.entity-meta__title { + margin: 0.25em 0; + text-shadow: 0 1px 0 #fff; + font-size: 1.231em; + font-weight: bold; +} +.entity-meta__header .form-item { + margin: 0.25em 0; +} +.entity-meta__last-saved { + font-style: italic; /* As-designed, but really: why is this italic? */ +} +.entity-meta .seven-details { + margin: 0; + border-top: 1px solid #fff; + border-right: 0; + border-left: 0; + border-radius: 0; +} +.entity-meta .seven-details:last-child { + border-radius: 0 0 3px 3px; +} +.entity-meta .seven-details[open] { + padding-top: 1px; + border-top-width: 0; + background-color: transparent; + background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.125), transparent 4px); + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.125), transparent 4px); +} +.entity-meta .seven-details[open] + .seven-details[open] { + padding-top: 0; + border-top-width: 1px; + background-image: none; +} +.entity-meta .seven-details > .seven-details__wrapper { + padding-top: 0; +} +.entity-meta .seven-details > summary { + padding: 0.85em 1.25em; + text-shadow: 0 1px 0 white; +} +.seven-details__summary > .summary { + text-transform: none; + color: #595959; + font-size: 0.95em; + font-weight: normal; +} +.seven-details__summary:focus > .summary { + text-decoration: none; +} diff --git a/web/themes/seven/css/components/field-ui.css b/web/themes/seven/css/components/field-ui.css new file mode 100644 index 0000000000000000000000000000000000000000..d099c51992b9f61336ffd2e04953d59886be5bb0 --- /dev/null +++ b/web/themes/seven/css/components/field-ui.css @@ -0,0 +1,28 @@ +/* Field UI */ +#field-display-overview input.field-plugin-settings-edit { + margin: 0; + padding: 1px 8px; +} +#field-display-overview tr.field-plugin-settings-changed { + background: #ffb; +} +#field-display-overview tr.drag { + background: #fe7; +} +#field-display-overview tr.field-plugin-settings-editing { + background: #d5e9f2; +} +#field-display-overview .field-plugin-settings-edit-form .form-item { + margin: 10px 0; +} +#field-display-overview .field-plugin-settings-edit-form .form-submit { + margin-bottom: 0; +} +#field-display-overview .form-item-fields-field-image-settings-edit-form-settings-image-style .description { + display: inline-block; + margin-left: 1em; /* LTR */ +} +[dir="rtl"] #field-display-overview .form-item-fields-field-image-settings-edit-form-settings-image-style .description { + margin-right: 1em; + margin-left: 0; +} diff --git a/web/themes/seven/css/components/form.css b/web/themes/seven/css/components/form.css new file mode 100644 index 0000000000000000000000000000000000000000..a414994977d6ab4a4f6e59af0f83a9e2f7976221 --- /dev/null +++ b/web/themes/seven/css/components/form.css @@ -0,0 +1,376 @@ +/** + * Form elements. + */ +form { + margin: 0; + padding: 0; +} + +/** + * Prevent regression due to explicit line-height and font-size applied to these + * elements in normalize.css 7.0.0. + */ +button:not(.button), +input:not([type="file"],.form-text, .form-textarea) { + line-height: 1.25em; +} +textarea, +input[type="search"], +input[type="number"], +input[type="email"] { + line-height: normal; +} +select { + font-size: 0.8125rem; + line-height: 1.42902em; +} +details select { + line-height: 1.20324em; +} + +/** + * Prevent regression due to fieldset styling that was removed in normalize.css + * 6.0.0. + */ +fieldset { + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + border: 1px solid #c0c0c0; +} +fieldset:not(.fieldgroup) { + position: relative; + min-width: 0; + margin: 1em 0; + padding: 30px 18px 18px; + border-radius: 2px; + background-color: #fcfcfa; +} +fieldset:not(.fieldgroup) > legend { + position: absolute; + top: 10px; + letter-spacing: 0.08em; + text-transform: uppercase; + font-size: 1em; + font-weight: bold; +} +.fieldgroup { + min-width: 0; +} +.form-item { + margin: 0.75em 0; +} +/** + * When a table row has a single form item, prevent it from adding unnecessary + * extra spacing. If it has multiple form items, allow spacing between them, + * overriding Classy. + */ +tr.odd .form-item, +tr.even .form-item { + margin-top: 0.75em; + margin-bottom: 0.75em; +} +td > .form-item:only-child { + margin-top: 0; + margin-bottom: 0; +} +.form-type-checkbox { + padding: 0; +} +label { + display: table; + margin: 0 0 0.1em; + padding: 0; + font-weight: bold; +} +label.error { + color: #a51b00; +} +label[for] { + cursor: pointer; +} +.form-item label.option { + text-transform: none; +} +.form-item label.option input { + vertical-align: middle; +} +.form-disabled label { + color: #686868; +} +.form-disabled input.form-date, +.form-disabled input.form-text, +.form-disabled input.form-tel, +.form-disabled input.form-time, +.form-disabled input.form-email, +.form-disabled input.form-url, +.form-disabled input.form-search, +.form-disabled input.form-number, +.form-disabled input.form-color, +.form-disabled input.form-file, +.form-disabled textarea.form-textarea, +.form-disabled select.form-select { + border-color: #d4d4d4; + background-color: hsla(0, 0%, 0%, 0.08); + box-shadow: none; +} +.form-item input.error, +.form-item textarea.error, +.form-item select.error { + color: #a51b00; + border-width: 1px; + border-color: #e62600; + background-color: hsla(15, 75%, 97%, 1); + box-shadow: inset 0 5px 5px -5px #b8b8b8; +} +.form-item textarea.error + .cke { + border-width: 1px; + border-color: #e62600; +} +.form-item textarea.error + .ck-editor > .ck-editor__main { + border: 1px solid #e62600; +} +.form-item input.error:focus, +.form-item textarea.error:focus, +.form-item select.error:focus { + border-color: #e62600; + outline: 0; + background-color: #fcf4f2; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 0 8px 1px #e62600; +} +.form-required:after { + width: 7px; + height: 7px; + background-size: 7px 7px; +} +.form-item--error-message { + margin-top: 0.15em; + color: #e32700; +} +.fieldset-wrapper > .form-item--error-message { + margin-top: 0; +} +.text-format-wrapper .form-item--error-message { + margin: 0; + padding: 0.25em 0.666em 0; + border: solid #ccc; + border-width: 0 1px; +} + +/* Filter */ +ul.tips, +div.description, +.form-item .description { + margin: 0.2em 0 0 0; + color: #595959; + font-size: 0.95em; +} +.form-item .description.error { + margin-top: 0; + color: #a51b00; +} + +ul.tips li { + margin: 0.25em 0 0.25em 1.5em; /* LTR */ +} +[dir="rtl"] ul.tips li { + margin: 0.25em 1.5em 0.25em 0; +} +.form-type-radio .description, +.form-type-checkbox .description { + margin-left: 1.5em; /* LTR */ +} +[dir="rtl"] .form-type-radio .description, +[dir="rtl"] .form-type-checkbox .description { + margin-right: 1.5em; + margin-left: 0; +} +.form-text, +.form-textarea { + border-radius: 2px; + font-size: 1em; + line-height: normal; +} + +input.form-autocomplete, +input.form-text, +input.form-tel, +input.form-email, +input.form-url, +input.form-search, +input.form-number, +input.form-color, +input.form-file, +input.form-date, +input.form-time, +textarea.form-textarea { + box-sizing: border-box; + max-width: 100%; + padding: 0.3em 0.4em 0.3em 0.5em; /* LTR */ + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + color: #595959; + border: 1px solid #b8b8b8; + border-top-color: #999; + border-radius: 2px; + background: #fcfcfa; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.125); + font-size: 1em; +} +[dir="rtl"] textarea.form-textarea { + padding: 0.3em 0.5em 0.3em 0.4em; +} +.form-text:focus, +.form-tel:focus, +.form-email:focus, +.form-url:focus, +.form-search:focus, +.form-number:focus, +.form-color:focus, +.form-file:focus, +.form-textarea:focus, +.form-date:focus, +.form-time:focus { + border-color: #40b6ff; + outline: 0; + background-color: #fff; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 0 8px #40b6ff; +} + +.confirm-parent, +.password-parent { + overflow: visible; + width: auto; +} + +.form-item-options-group-info-identifier, +.form-item-pass .description { + clear: both; +} + +/** + * Limits extra long instances of select elements to the max width allowed + * to avoid breaking layouts. + */ +select { + max-width: 100%; +} + +/** + * Select elements - Webkit only + */ +@media screen and (-webkit-min-device-pixel-ratio: 0) { + select { + padding: 1px 1.571em 1px 0.5em; /* LTR */ + cursor: pointer; + -webkit-transition: all 0.1s; + transition: all 0.1s; + border: 1px solid #a6a6a6; + border-radius: 0.143em; + background: + url(../../images/icons/333333/caret-down.svg) no-repeat 99% 63%, + -webkit-linear-gradient(top, #f6f6f3, #e7e7df); /* LTR */ + + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); + font-size: 0.875rem; + -webkit-appearance: none; + -webkit-font-smoothing: antialiased; + } + [dir="rtl"] select { + padding: 1px 0.714em 1px 1.571em; + background-position: 1% 63%, 0 0; + } + select:focus, + select:hover { + color: #1a1a1a; + background-image: + url(../../images/icons/333333/caret-down.svg), + -webkit-linear-gradient(top, #fcfcfa, #e9e9dd); + } + select:hover { + box-shadow: 0 1px 2px hsla(0, 0%, 0%, 0.125); + } +} + +/** + * Improve spacing of cancel link. + */ +#edit-cancel { + margin-left: 10px; /* LTR */ +} +[dir="rtl"] #edit-cancel { + margin-right: 10px; + margin-left: 0; +} + +/** + * Improve form element usability on narrow devices. + */ +@media screen and (max-width: 600px) { + input.form-autocomplete, + input.form-text, + input.form-tel, + input.form-email, + input.form-url, + input.form-search, + input.form-number, + input.form-color, + input.form-file, + textarea.form-textarea { + width: 100%; + font-size: 1.2em; + line-height: 1.2em; + } + input.form-number { + width: auto; + } + .form-actions input, + .form-wrapper input[type="submit"] { + float: none; + width: 100%; + margin-top: 10px; + margin-right: 0; + margin-left: 0; + padding-bottom: 6px; + } + .form-actions input:first-child, + .form-wrapper input[type="submit"]:first-child { + margin-top: 0; + } + details summary { + overflow: hidden; + box-sizing: border-box; + white-space: nowrap; + text-overflow: ellipsis; + } + .password-strength { + width: 100%; + } + div.form-item div.password-suggestions { + float: none; + } + #dblog-filter-form .form-actions { + float: none; + padding: 0; + } + #edit-cancel { + display: block; + margin: 10px 0 0 0; + } + select { + width: 100%; + } +} + +/* Exceptions */ +#diff-inline-form select, +div.filter-options select { + padding: 0; +} + +/** + * Prevent regression due to -webkit-appearance being set to button in + * normalize.css 4.1.0. + */ +::-webkit-file-upload-button { + -webkit-appearance: push-button; +} diff --git a/web/themes/seven/css/components/help.css b/web/themes/seven/css/components/help.css new file mode 100644 index 0000000000000000000000000000000000000000..1cbcbd49fe516fc905b02dd1b4c6cd2b25cacdae --- /dev/null +++ b/web/themes/seven/css/components/help.css @@ -0,0 +1,8 @@ +/** + * @file + * Seven styles for the help component. + */ + +.help p { + margin: 0 0 10px; +} diff --git a/web/themes/seven/css/components/jquery.ui/theme.css b/web/themes/seven/css/components/jquery.ui/theme.css new file mode 100644 index 0000000000000000000000000000000000000000..6c4dc4152b2306322535c382ddd90ce93cc69e4c --- /dev/null +++ b/web/themes/seven/css/components/jquery.ui/theme.css @@ -0,0 +1,391 @@ +/** + * @file + * Seven styles for jQuery UI. + * Overrides /core/assets/vendor/jquery.ui/themes/base/theme.css. + */ + +/** + * Component containers + */ +.ui-widget { + background: none; +} +.ui-widget-content { + border: none; +} + +/** + * Interaction states + */ +.ui-state-default, +.ui-state-hover, +.ui-state-focus, +.ui-state-active { + outline: 0; +} +.ui-state-highlight { + font-weight: bold; +} + +/** + * Interaction cues + */ +.ui-state-active, +.ui-widget-content .ui-state-active { + color: #840; +} +.ui-state-error, +.ui-widget-content .ui-state-error { + color: #fff; + border-color: #d52; + background: #e63; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled { + opacity: 0.35; + filter: alpha(opacity=35); +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary { + opacity: 0.7; + filter: alpha(opacity=70); +} + +/** + * Icons + */ +/* states and images */ +.ui-icon { + display: block; + overflow: hidden; + width: 16px; + height: 16px; + text-indent: -99999px; + background-image: url(../../../images/ui-icons-222222-256x240.png); + background-repeat: no-repeat; +} +.ui-widget-content .ui-icon, +.ui-widget-header .ui-icon { + background-image: url(../../../images/ui-icons-222222-256x240.png); +} +.ui-state-default .ui-icon { + background-image: url(../../../images/ui-icons-888888-256x240.png); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-state-highlight .ui-icon { + background-image: url(../../../images/ui-icons-454545-256x240.png); +} +.ui-state-active .ui-icon { + background-image: url(../../../images/ui-icons-800000-256x240.png); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(../../../images/ui-icons-ffffff-256x240.png); +} +.ui-widget p .ui-icon { + margin: 2px 3px 0 0; /* LTR */ +} + +[dir="rtl"] .ui-widget p .ui-icon { + margin: 2px 0 0 3px; +} +/* positioning */ +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } +.ui-icon-carat-1-n { background-position: 0 0; } + +/** + * Accordion + */ +.ui-accordion { + border: none; +} +.ui-accordion .ui-accordion-header { + text-transform: uppercase; + border: solid 1px #ccc; +} +.ui-accordion h3.ui-accordion-header, +#block-system-main h3.ui-accordion-header { + margin: 10px 0; + font-size: 1.1em; +} +#block-system-main .ui-accordion h3.ui-state-active, +.ui-accordion h3.ui-state-active { + margin-bottom: 0; +} +.ui-accordion .ui-accordion-header a { + display: block; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border: solid 1px #ccc; + border-top: 0; +} + +/** + * Tabs + */ +.ui-tabs { + padding: 0; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: 5px 10px 4px; + border-bottom: solid 1px #ccc; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + line-height: 20px; +} +.ui-tabs .ui-tabs-nav li { + margin: 0; + padding: 0 1em 0 10px; /* LTR */ + list-style: none; +} +[dir="rtl"] .ui-tabs .ui-tabs-nav li { + padding: 0 10px 0 1em; +} +.ui-tabs .ui-tabs-nav li a { + float: none; + padding: 0 10px; + border-radius: 10px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a { + color: #fff; + background: #666; + font-weight: normal; +} + +/** + * Overlays + */ +.ui-widget-overlay { + opacity: 0.7; + filter: alpha(opacity=70); + background: #000; +} + +/** + * Slider + */ +.ui-slider { + border: solid 1px #ccc; +} +.ui-slider .ui-slider-range { + background: #e4e4e4; +} +.ui-slider .ui-slider-handle { + border: 1px solid #e4e4e4; + border-right-color: #d2d2d2; + border-bottom: 1px solid #b4b4b4; + border-left-color: #d2d2d2; + border-radius: 4px; + background-color: #e4e4e4; +} +.ui-slider a.ui-state-active, +.ui-slider .ui-slider-handle:active { + color: #fff; + border: solid 1px #555; + background: #666; +} + +/** + * Progress Bar + */ +.ui-progressbar { + height: 1.4em; + background: #e4e4e4; +} +.ui-progressbar .ui-progressbar-value { + height: 1.5em; + background: #0072b9 url(../../../../../misc/progress.gif); +} + +/** + * Autocomplete + */ +.ui-autocomplete { + border: 1px solid #ccc; + background: #fff; +} + +/* Suggestion list */ +.ui-autocomplete .ui-menu-item.ui-state-focus, +.autocomplete .ui-menu-item.ui-state-hover { + margin: 0; + background: #0072b9; +} +.ui-autocomplete .ui-state-focus a, +.autocomplete .ui-state-hover a { + color: #fff; +} diff --git a/web/themes/seven/css/components/layout-builder-content-translation.css b/web/themes/seven/css/components/layout-builder-content-translation.css new file mode 100644 index 0000000000000000000000000000000000000000..44ebd2a13a88db875c123e80f7cdde109ab06ab2 --- /dev/null +++ b/web/themes/seven/css/components/layout-builder-content-translation.css @@ -0,0 +1,4 @@ +.layout-builder-translation-warning { + padding-left: 20px; + background: left 2px url(../../images/icons/e29700/warning.svg) no-repeat; +} diff --git a/web/themes/seven/css/components/media.css b/web/themes/seven/css/components/media.css new file mode 100644 index 0000000000000000000000000000000000000000..34b1599497e49e23753520b1f5f59fd1dfef40e3 --- /dev/null +++ b/web/themes/seven/css/components/media.css @@ -0,0 +1,3 @@ +.media-form .field--name-status { + margin-top: 1.5em; +} diff --git a/web/themes/seven/css/components/menus-and-lists.css b/web/themes/seven/css/components/menus-and-lists.css new file mode 100644 index 0000000000000000000000000000000000000000..43e374571f129335971ff8ef394a8a506445135e --- /dev/null +++ b/web/themes/seven/css/components/menus-and-lists.css @@ -0,0 +1,41 @@ +/** + * Menus and lists. + */ +.item-list ul { + margin: 0.25em 0 0.25em 1.5em; /* LTR */ + list-style-type: disc; + list-style-image: none; +} +[dir="rtl"] .item-list ul { + margin: 0.25em 1.5em 0.25em 0; +} +.item-list ul li, +.menu-item { + list-style-type: disc; + list-style-image: none; +} +.menu-item { + margin: 0; +} +.item-list ul li.collapsed, +.menu-item--collapsed { + list-style-type: disc; + list-style-image: url(../../images/menu-collapsed.png); +} +.item-list ul li.expanded, +.menu-item--expanded { + list-style-type: circle; + list-style-image: url(../../images/menu-expanded.png); +} +ul.links li, +ul.inline li { + padding-right: 1em; /* LTR */ +} +[dir="rtl"] ul.links li, +[dir="rtl"] ul.inline li { + padding-right: 0; + padding-left: 1em; +} +ul.inline li { + display: inline; +} diff --git a/web/themes/seven/css/components/messages.css b/web/themes/seven/css/components/messages.css new file mode 100644 index 0000000000000000000000000000000000000000..242dead7493231c39f142bae1a4a967efa07a7c6 --- /dev/null +++ b/web/themes/seven/css/components/messages.css @@ -0,0 +1,26 @@ +/** + * Messages. + */ +.messages { + margin: 9px 0 10px 8px; /* LTR */ +} +[dir="rtl"] .messages { + margin: 9px 8px 10px 0; +} +.messages pre { + margin: 0; +} +.messages h1, +.messages .heading-a, +.messages h2, +.messages .heading-b, +.messages h3, +.messages .heading-c, +.messages h4, +.messages .heading-d, +.messages h5, +.messages .heading-e, +.messages h6, +.messages .heading-f { + margin-top: 0; +} diff --git a/web/themes/seven/css/components/modules-page.css b/web/themes/seven/css/components/modules-page.css new file mode 100644 index 0000000000000000000000000000000000000000..2478065cb7fa96e62d72071729c7c21489b27074 --- /dev/null +++ b/web/themes/seven/css/components/modules-page.css @@ -0,0 +1,49 @@ +/* Modules page */ +.system-modules fieldset { + border: 0; + border-top: 1px solid #ccc; +} +.system-modules .seven-details { + margin: 0; + padding: 0; + border: 0; + background: none; +} +.system-modules .seven-details__summary { + padding: 0.95em 0.5em; + border-bottom: 1px solid #ccc; +} +.system-modules [open] .seven-details__summary { + border-bottom: none; +} +.system-modules .seven-details__wrapper { + padding: 0 0 0.5em 0; +} +.system-modules .fieldset-wrapper { + padding: 0; +} +.system-modules table, +.locale-translation-status-form table { + border: 0; +} +.system-modules tr.even, +.system-modules tr.odd, +.locale-translation-status-form tr.even, +.locale-translation-status-form tr.odd { + border: 0; + border-bottom: 10px solid #fff; + background: #f3f4ee; +} +.system-modules tr td:last-child, +.locale-translation-status-form tr td:last-child { + border: 0; +} +.system-modules table th, +.locale-translation-status-form table th { + border: 0; + border-bottom: 10px solid #fff; +} +.system-modules .sticky-header th, +.locale-translation-status-form .sticky-header th { + border: 0; +} diff --git a/web/themes/seven/css/components/node.css b/web/themes/seven/css/components/node.css new file mode 100644 index 0000000000000000000000000000000000000000..037d0e06263f65385c6a6964405eacaf66a375b9 --- /dev/null +++ b/web/themes/seven/css/components/node.css @@ -0,0 +1,3 @@ +.node__submitted { + margin: 1em 0; +} diff --git a/web/themes/seven/css/components/page-title.css b/web/themes/seven/css/components/page-title.css new file mode 100644 index 0000000000000000000000000000000000000000..df18051f21079c308dc68ed2a3f93c99824f874a --- /dev/null +++ b/web/themes/seven/css/components/page-title.css @@ -0,0 +1,8 @@ +/** + * @file + * Page title. + */ +.page-title { + display: inline-block; + -webkit-font-smoothing: antialiased; +} diff --git a/web/themes/seven/css/components/pager.css b/web/themes/seven/css/components/pager.css new file mode 100644 index 0000000000000000000000000000000000000000..4cefa59b91daf6c865e01159f612037d0e782c1c --- /dev/null +++ b/web/themes/seven/css/components/pager.css @@ -0,0 +1,45 @@ +/** + * @file + * Styles for Seven's Pagination. + */ +.pager__items { + margin: 0.25em 0 0.25em 1.5em; /* LTR */ + padding: 0; +} +[dir="rtl"] .pager__items { + margin: 0.25em 1.5em 0.25em 0; +} +.pager__item { + display: inline-block; + margin: 0; + padding: 0 0.4em; + color: #757575; + font-size: 1.08em; +} +.pager__item a { + padding: 0 5px 2px; + transition: border-bottom-color 0.2s; + text-decoration: none; + border-bottom: 2px solid transparent; + font-weight: 600; + line-height: 1.55em; + -webkit-font-smoothing: antialiased; +} +.pager__item.is-active a { + color: #2a678c; + border-bottom-width: 3px; + border-bottom-color: #2a678c; + font-weight: 700; +} +.pager__item a:hover, +.pager__item a:focus { + color: #3395d2; + border-bottom-color: #3395d2; +} +.pager__item--next a, +.pager__item--last a, +.pager__item--first a, +.pager__item--previous a { + color: #2a678c; + border-bottom-width: 0; +} diff --git a/web/themes/seven/css/components/panel.css b/web/themes/seven/css/components/panel.css new file mode 100644 index 0000000000000000000000000000000000000000..45aac2b62e0c518a141e52dc4879a3f9cce90381 --- /dev/null +++ b/web/themes/seven/css/components/panel.css @@ -0,0 +1,17 @@ +/** + * @file + * Panel styling. Panels are used to visually group items together. + */ + +.panel { + margin: 0 0 20px; + padding: 9px; + border: 1px solid #ccc; + background: #f8f8f8; +} +.panel__title { + margin: 0; + padding-bottom: 9px; + text-transform: uppercase; + font-size: 1em; +} diff --git a/web/themes/seven/css/components/quickedit.css b/web/themes/seven/css/components/quickedit.css new file mode 100644 index 0000000000000000000000000000000000000000..f9409086eac02690601f359aab9b5f64e6230a7e --- /dev/null +++ b/web/themes/seven/css/components/quickedit.css @@ -0,0 +1,63 @@ +/** + * @file + * Override Quick Edit's entity toolbar style on the Drupal front-end. + * + * I.e. loaded by Quick Edit on the front-end, despite this being a back-end theme. + */ + +/** + * The Seven style guide prescribes softer corners. + */ +.quickedit-toolbar-container > .quickedit-toolbar-content, +.quickedit-toolbar-container > .quickedit-toolbar-lining { + border-radius: 4px; +} +.quickedit-button { + border-radius: 3px; +} + +/** + * Entity toolbar's "save" button must be styled like a Seven primary button. + */ +.quickedit-button.action-save, +.quickedit-button.action-saving { + margin-top: 2px; + color: #fff; + border-color: #1e5c90; + background-image: -webkit-linear-gradient(top, #007bc6, #0071b8); + background-image: linear-gradient(to bottom, #007bc6, #0071b8); + text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + font-weight: 700; + -webkit-font-smoothing: antialiased; +} +.quickedit-button.action-save:hover, +.quickedit-button.action-save:focus, +.quickedit-button.action-saving:hover, +.quickedit-button.action-saving:focus { + color: #fff; + border-color: #1e5c90; + background-color: #2369a6; + background-image: -webkit-linear-gradient(top, #0c97ed, #1f86c7); + background-image: linear-gradient(to bottom, #0c97ed, #1f86c7); +} +.quickedit-button.action-save:hover, +.quickedit-button.action-save:focus, +.quickedit-button.action-saving:hover, +.quickedit-button.action-saving:focus { + box-shadow: 0 1px 2px hsla(203, 10%, 10%, 0.25); +} +.quickedit-button.action-save:active, +.quickedit-button.action-saving:active { + border-color: #144b78; + background-image: -webkit-linear-gradient(top, #08639b, #0071b8); + background-image: linear-gradient(to bottom, #08639b, #0071b8); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} + +/** + * The entity toolbar's "save" button's top margin shifts both buttons 2px down, + * so we must compensate for that to achieve vertically centered positioning. + */ +.quickedit .icon-close:before { + top: 8px; +} diff --git a/web/themes/seven/css/components/search-admin-settings.css b/web/themes/seven/css/components/search-admin-settings.css new file mode 100644 index 0000000000000000000000000000000000000000..cc117e38f4835886fc41001e550b291678f8935c --- /dev/null +++ b/web/themes/seven/css/components/search-admin-settings.css @@ -0,0 +1,14 @@ +/** + * @file + * Styles for administration pages. + */ + +/** + * Add search page select/submit. + */ +.search-admin-settings .container-inline { + margin-bottom: 1em; +} +.search-admin-settings label[for="edit-search-type"] { + display: block; +} diff --git a/web/themes/seven/css/components/skip-link.css b/web/themes/seven/css/components/skip-link.css new file mode 100644 index 0000000000000000000000000000000000000000..1e6b8c73b0caf3659e4e25c60e5b27cffb1e17b1 --- /dev/null +++ b/web/themes/seven/css/components/skip-link.css @@ -0,0 +1,25 @@ +/** + * @file + * Skip link + * + * Allows keyboard users to quickly skip to the main content of the page. + */ + +.skip-link { + z-index: 50; + left: 50%; + padding: 1px 10px 2px; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); + color: #fff; + border-radius: 0 0 10px 10px; + background: #444; + font-size: 0.94em; +} +.skip-link:focus { + text-decoration: none; +} +.skip-link.visually-hidden.focusable:focus { + position: absolute !important; +} diff --git a/web/themes/seven/css/components/system-status-counter.css b/web/themes/seven/css/components/system-status-counter.css new file mode 100644 index 0000000000000000000000000000000000000000..1166d379f15d1f2ae2c10f7319ef6c17bc20c4d8 --- /dev/null +++ b/web/themes/seven/css/components/system-status-counter.css @@ -0,0 +1,86 @@ +/** + * @file + * Styles for the system status counter component. + */ + +.system-status-counter { + display: inline-block; + overflow-y: hidden; + box-sizing: border-box; + width: 100%; + white-space: nowrap; + border: 1px solid #e6e4df; + border-radius: 3px; + background: #fcfcfa; +} +.system-status-counter__status-icon { + display: inline-block; + width: 60px; + height: 60px; + vertical-align: middle; + border-right: 1px solid #e6e4df; /* LTR */ + border-left: 0; /* LTR */ + background-color: #faf9f5; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) inset; +} +[dir="rtl"] .system-status-counter__status-icon { + border-right: 0; + border-left: 1px solid #e6e4df; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) inset; +} +.system-status-counter__status-icon:before { + display: block; + width: 100%; + height: 100%; + content: ""; + background-repeat: no-repeat; + background-position: 50% center; + background-size: 25px; +} + +.system-status-counter__status-icon--error:before { + background-image: url(../../images/icons/e32700/error.svg); +} +.system-status-counter__status-icon--warning:before { + background-image: url(../../images/icons/e29700/warning.svg); +} +.system-status-counter__status-icon--checked:before { + background-image: url(../../images/icons/73b355/check.svg); +} +.system-status-counter__status-title { + display: inline-block; + padding: 0 6px; + vertical-align: middle; + text-transform: uppercase; + font-size: 1rem; + font-weight: bold; + line-height: 1em; +} +.system-status-counter__title-count { + display: block; + margin-bottom: 2px; +} +.system-status-counter__details { + display: block; + text-transform: none; + font-size: 12px; + font-weight: normal; + line-height: 1.5; +} + +@media screen and (min-width: 61em) { + .system-status-counter__status-icon, + .system-status-counter { + height: 65px; + } + .system-status-counter__status-icon { + width: 65px; + } + .system-status-counter__status-title { + padding: 10px 3%; + font-size: 16px; + } + .system-status-counter__status-icon:before { + background-size: 35px; + } +} diff --git a/web/themes/seven/css/components/system-status-report-counters.css b/web/themes/seven/css/components/system-status-report-counters.css new file mode 100644 index 0000000000000000000000000000000000000000..855eadf925a1e4eccb7759e2e407bc4b0af9156d --- /dev/null +++ b/web/themes/seven/css/components/system-status-report-counters.css @@ -0,0 +1,26 @@ +/** + * @file + * Styles for the system status report counters. + */ + +.system-status-report-counters__item { + width: 100%; + margin: 10px 0; +} + +@media screen and (min-width: 60em) { + .system-status-report-counters__item { + margin-bottom: 20px; + } + .system-status-report-counters { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + } + .system-status-report-counters__item--half-width { + width: 49%; + } + .system-status-report-counters__item--third-width { + width: 32%; + } +} diff --git a/web/themes/seven/css/components/system-status-report-general-info.css b/web/themes/seven/css/components/system-status-report-general-info.css new file mode 100644 index 0000000000000000000000000000000000000000..e666d6c4ac93a61fa01e97fcad120ead67f22492 --- /dev/null +++ b/web/themes/seven/css/components/system-status-report-general-info.css @@ -0,0 +1,161 @@ +/** + * @file + * Seven styles for the System Status general info. + */ + +.system-status-general-info { + border: 1px solid #ccc; + border-radius: 3px; +} + +.system-status-general-info__header { + overflow: hidden; + margin: 0; + padding: 10px; + text-transform: uppercase; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + background-color: #f5f5f2; + font-size: 14px; +} + +.system-status-general-info__item { + overflow-x: auto; + box-sizing: border-box; + padding: 10px 10px 20px; + border-top: 1px solid #ccc; + background: #fcfcfa; +} + +.system-status-general-info__item-icon { + display: inline-block; + width: 45px; + height: 45px; + vertical-align: top; +} +.system-status-general-info__item-icon:before { + display: block; + width: 100%; + height: 100%; + content: ""; + background-repeat: no-repeat; + background-position: 50% center; + background-size: 35px; +} +.system-status-general-info__item-icon--drupal:before { + background-image: url(../../images/logo/drupal-logo.svg); +} +.system-status-general-info__item-icon--clock:before { + background-image: url(../../images/icons/cccccc/clock.svg); +} +.system-status-general-info__item-icon--server:before { + background-image: url(../../images/icons/cccccc/server.svg); +} +.system-status-general-info__item-icon--php:before { + background-image: url(../../images/icons/cccccc/php-logo.svg); + background-size: 45px; +} +.system-status-general-info__item-icon--database:before { + background-image: url(../../images/icons/cccccc/database.svg); + background-size: 30px; +} + +.system-status-general-info__item-details { + position: relative; + display: inline-block; + box-sizing: border-box; + width: calc(100% - 60px); + padding-left: 10px; /* LTR */ +} +[dir="rtl"] .system-status-general-info__item-details { + padding-right: 10px; + padding-left: 0; +} + +.system-status-general-info__item-title { + margin-bottom: 0; +} + +.system-status-general-info__sub-item-title { + margin: 0; +} + +.system-status-general-info__sub-item__title { + font-weight: bold; +} +.system-status-general-info__sub-item__value { + display: block; +} + +.system-status-general-info__run-cron { + margin: 1em 0 0; +} + +@media screen and (min-width: 48em) { + .system-status-general-info__items { + display: flex; + overflow-x: hidden; + flex-wrap: wrap; + } + + .system-status-general-info__item { + flex: 1; + flex-basis: 33%; + width: 33%; + } + .system-status-general-info__item:nth-child(2) { + flex: 2; + flex-basis: 66%; + } + .system-status-general-info__item:nth-child(2), + .system-status-general-info__item:nth-child(4), + .system-status-general-info__item:nth-child(5) { + border-left: 1px solid #ccc; /* LTR */ + } + [dir="rtl"] .system-status-general-info__item:nth-child(1), + [dir="rtl"] .system-status-general-info__item:nth-child(3) { + border-left: 1px solid #ccc; + } + [dir="rtl"] .system-status-general-info__item:nth-child(2), + [dir="rtl"] .system-status-general-info__item:nth-child(5) { + border-left: 0; + } + + .system-status-general-info__run-cron { + margin: 15px 0 5px; + } +} + +@media screen and (min-width: 60em) { + .system-status-general-info__item-icon { + width: 55px; + height: 55px; + } + .system-status-general-info__item-icon:before { + background-size: 35px; + } + .system-status-general-info__item-icon--php:before { + background-size: 55px; + } + + .system-status-general-info__run-cron { + position: absolute; + top: 1em; + right: 1em; /* LTR */ + margin-top: 0; + } + [dir="rtl"] .system-status-general-info__run-cron { + right: auto; + left: 1em; + } +} + +@media screen and (max-width: 48em) { + .system-status-general-info__header { + display: none; + } + .system-status-general-info { + margin-top: 25px; + border-top: 0; + } +} diff --git a/web/themes/seven/css/components/system-status-report.css b/web/themes/seven/css/components/system-status-report.css new file mode 100644 index 0000000000000000000000000000000000000000..1e9d159ec42c69959f87e1b3ae862d7f74b9b128 --- /dev/null +++ b/web/themes/seven/css/components/system-status-report.css @@ -0,0 +1,153 @@ +/** + * @file + * Seven styles for the System Status Report. + */ + +.system-status-report__requirements-group { + padding-top: 20px; +} +.system-status-report__entry { + overflow: auto; + width: 100%; + margin: 0; + border: 0; + border-top: 1px solid #ccc; + border-radius: 0; + background-color: transparent; +} +.system-status-report__entry:last-of-type { + border-bottom: 1px solid #bebfb9; +} +.system-status-report__entry--error { + background-color: transparent; +} +.system-status-report__entry--warning { + background-color: transparent; +} +/* Account for native and poly-filled details element */ +.system-status-report__status-title { + position: relative; + box-sizing: border-box; + width: 100%; + padding: 1em 1em 1em 3em; /* LTR */ + font-weight: bold; +} +.system-status-report__status-title .details-title { + text-transform: none; + color: inherit; +} +.system-status-report__status-title .details-title { + padding-left: 3em; /* LTR */ +} +[dir="rtl"] .system-status-report__status-title .details-title { + padding-right: 3em; + padding-left: 0; +} +[dir="rtl"].details .system-status-report__status-title { + padding: 1em 3em 1em 1em; +} +.collapse-processed > .system-status-report__status-title:before { + float: right; /* LTR */ +} +.system-status-report__status-title::-webkit-details-marker { + float: right; /* LTR */ +} +[dir="rtl"] .collapse-processed > .system-status-report__status-title:before { + float: left; +} +[dir="rtl"] .system-status-report__status-title::-webkit-details-marker { + float: left; +} + +/* Make poly-filled details and summary elements behave correctly. */ +.system-status-report summary:first-child ~ * { + display: none; +} +.system-status-report details[open] > *, +.system-status-report details > summary:first-child { + display: block; + color: inherit; +} + +.system-status-report__status-title .details-title:before, +.details .system-status-report__status-icon:before { + position: absolute; + top: 1em; + left: 10px; /* LTR */ + display: inline-block; + width: 16px; + height: 16px; + margin-right: 10px; /* LTR */ + content: ""; + vertical-align: top; + background-repeat: no-repeat; + background-position: top center; + background-size: contain; +} +[dir="rtl"] .system-status-report__status-title .details-title:before, +[dir="rtl"].details .system-status-report__status-title:before { + right: 10px; + left: auto; + margin-right: 0; +} +.system-status-report__status-icon--error .details-title:before, +.details .system-status-report__status-icon--error:before { + background-image: url(../../images/icons/e32700/error.svg); +} +.system-status-report__status-icon--warning .details-title:before, +.details .system-status-report__status-icon--warning:before { + background-image: url(../../images/icons/e29700/warning.svg); +} + +.system-status-report__entry__value { + box-sizing: border-box; + padding: 0 1em 1em 3em; /* LTR */ +} +[dir="rtl"] .system-status-report__entry__value { + padding-right: 3em; + padding-left: 1em; +} + +@media screen and (max-width: 48em) { + .system-status-report { + word-wrap: break-word; + } +} + +@media screen and (min-width: 48em) { + .system-status-report__entry::after { + display: table; + clear: both; + content: ""; + } + .system-status-report__status-title { + float: left; /* LTR */ + width: 18rem; + cursor: default; + } + .system-status-report__status-title:hover, + .system-status-report__status-title:focus { + text-decoration: none; + } + [dir="rtl"] .system-status-report__status-title { + float: right; + } + html.js .system-status-report__status-title::-webkit-details-marker { + display: none; + } + .collapse-processed > .system-status-report__status-title:before { + position: relative; + top: 3px; + } + .system-status-report__entry__value { + display: block; + float: right; + width: calc(100% - 23em); + padding-top: 1em; + padding-left: 0; /* LTR */ + } + [dir="rtl"] .system-status-report__entry__value { + padding-right: 3em; + padding-left: 0; + } +} diff --git a/web/themes/seven/css/components/tables.css b/web/themes/seven/css/components/tables.css new file mode 100644 index 0000000000000000000000000000000000000000..727e0658e60174eae24225b2159e64f721ed5567 --- /dev/null +++ b/web/themes/seven/css/components/tables.css @@ -0,0 +1,162 @@ +/** + * @file + * Seven styles for Tables. + */ + +table { + width: 100%; + margin: 0 0 10px; + border-collapse: collapse; +} +caption { + text-align: left; /* LTR */ +} +[dir="rtl"] caption { + text-align: right; +} +th { + padding: 10px 12px; + text-align: left; /* LTR */ +} +[dir="rtl"] th { + text-align: right; +} +thead th { + text-transform: uppercase; + color: #333; + border: solid #bfbfba; + border-width: 1px 0; + background: #f5f5f2; +} +tr { + padding: 0.1em 0.6em; + border-bottom: 1px solid #e6e4df; +} +thead > tr { + border-bottom: 1px solid #000; +} +tbody tr:hover, +tbody tr:focus { + background: #f7fcff; +} +/* See colors.css */ +tbody tr.color-warning:hover, +tbody tr.color-warning:focus { + background: #fdf8ed; +} +tbody tr.color-error:hover, +tbody tr.color-error:focus { + background: #fcf4f2; +} + +table.no-highlight tr.selected td { + background: transparent; +} + +td, +th { + vertical-align: middle; +} +td { + padding: 10px 12px; + text-align: left; /* LTR */ +} +[dir="rtl"] td { + text-align: right; +} +th > a { + position: relative; + display: block; +} + +/* 1. Must match negative bottom padding of the parent <th> */ +th > a:after { + position: absolute; + top: 0; + right: 0; + bottom: -10px; /* 1. */ + left: 0; + display: block; + content: ""; + -webkit-transition: all 0.1s; + transition: all 0.1s; + border-bottom: 2px solid transparent; +} +th.is-active > a { + color: #004875; +} +th.is-active img { + position: absolute; + top: 50%; + right: 0; /* LTR */ +} +[dir="rtl"] th.is-active img { + right: auto; + left: 0; +} +th.is-active > a:after { + border-bottom-color: #004875; +} +th > a:hover, +th > a:focus, +th.is-active > a:hover, +th.is-active > a:focus { + text-decoration: none; + color: #008ee6; +} +th > a:hover:after, +th > a:focus:after, +th.is-active > a:hover:after, +th.is-active > a:focus:after { + border-bottom-color: #008ee6; +} +td .item-list ul { + margin: 0; +} +/* This is required to win over specificity of [dir="rtl"] .item-list ul */ +[dir="rtl"] td .item-list ul { + margin: 0; +} +td.is-active { + background: none; +} + +/* Force browsers to calculate the width of a 'select all' <th> element. */ +th.select-all { + width: 1px; +} + +/** + * Captions. + */ +.caption { + margin-bottom: 1.2em; +} + +/** + * Responsive tables. + */ +@media screen and (max-width: 37.5em) { /* 600px */ + th.priority-low, + td.priority-low, + th.priority-medium, + td.priority-medium { + display: none; + } +} + +@media screen and (max-width: 60em) { /* 920px */ + th.priority-low, + td.priority-low { + display: none; + } +} + +/** + * Target every .form-text input where its parent is a form-item inside a table + * cell. + */ +td > .form-item > .form-text, +td > .ajax-new-content > .form-item > .form-text { + width: 100%; +} diff --git a/web/themes/seven/css/components/tablesort-indicator.css b/web/themes/seven/css/components/tablesort-indicator.css new file mode 100644 index 0000000000000000000000000000000000000000..07274b1ef2087a211ca87b0e7d1ac8869508df00 --- /dev/null +++ b/web/themes/seven/css/components/tablesort-indicator.css @@ -0,0 +1,26 @@ +/** + * @file + * Tablesort indicator styles. + */ + +.tablesort { + float: right; /* LTR */ + width: 10px; + height: 10px; + margin-top: 5px; +} +[dir="rtl"] .tablesort { + float: left; +} +.tablesort--asc { + background-image: url(../../images/icons/004875/twistie-down.svg); +} +a:hover .tablesort--asc { + background-image: url(../../images/icons/008ee6/twistie-down.svg); +} +.tablesort--desc { + background-image: url(../../images/icons/004875/twistie-up.svg); +} +a:hover .tablesort--desc { + background-image: url(../../images/icons/008ee6/twistie-up.svg); +} diff --git a/web/themes/seven/css/components/tabs.css b/web/themes/seven/css/components/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..156a29501a67cf4a2b4825b7e08e556d19c594fe --- /dev/null +++ b/web/themes/seven/css/components/tabs.css @@ -0,0 +1,355 @@ +/** + * Tabs. + */ +.is-collapse-enabled .tabs, +.is-horizontal .tabs { + position: relative; +} +.is-collapse-enabled .tabs:before, +.is-horizontal .tabs:before { + position: absolute; + z-index: 10; + right: 0; + bottom: 0; + left: 0; + display: block; + height: 1px; + content: ""; + background-color: #a6a6a6; +} + +/* Span the full width of the viewport */ +.content-header .is-horizontal .tabs:before, +.content-header .is-collapse-enabled .tabs:before { + right: -2.5em; + left: -2.5em; +} + +/** + * Tab + * + * 1. Required by some elements such as <button> + * 2. Fixed height needed to ensure alignment with absolutely-positioned + * active tab. + */ +.tabs__tab { + position: relative; + display: block; + overflow: hidden; + box-sizing: border-box; + width: 100%; /* 1 */ + margin: -1px 0 0; + padding: 9px 2em 7px 1em; /* LTR */ + white-space: nowrap; + text-overflow: ellipsis; + color: #0074bd; + border: 1px solid #bfbfbf; + background-color: rgba(242, 242, 240, 0.7); +} +[dir="rtl"] .tabs__tab { + padding-right: 1em; + padding-left: 2em; +} +.tabs__tab:hover, +.tabs__tab:focus { + color: #008ee6; + background-color: #fafaf7; +} +li.tabs__tab { + display: block; + padding: 0; +} +/* This is required to win over specificity of [dir="rtl"] .tabs__tab */ +[dir="rtl"] li.tabs__tab { + padding-right: 0; + padding-left: 0; +} +li.tabs__tab a { + padding: 9px 2em 7px 1em; /* LTR */ +} +[dir="rtl"] li.tabs__tab a { + padding-right: 1em; + padding-left: 2em; +} +.tabs a:hover, +.tabs a:focus { + text-decoration: none; +} + +/* Primary tabs */ +.tabs.primary { + clear: both; + margin: 16px 0 0; + margin: 1rem 0 0; +} +.tabs.primary .tabs__tab.is-active { + z-index: 15; + color: #004f80; + border-color: #a6a6a6; + border-radius: 4px 0 0 0; /* LTR */ + background-color: #fff; +} +[dir="rtl"] .tabs.primary .tabs__tab.is-active { + border-top-left-radius: 0; + border-top-right-radius: 4px; +} +.tabs.primary a { + background: none; +} +.tabs.primary a:focus { + text-decoration: underline; + color: #008ee6; + background-color: #fafaf7; +} +.tabs.primary .is-active a:focus { + text-decoration: underline; + background: none; +} + +/* Only add the arrow if there's space */ +@media screen and (min-width: 18.75em) { /* 300px */ + .tabs.primary a { + background: url(../../images/icons/0074bd/chevron-right.svg) 99% center no-repeat; + } + [dir="rtl"] .tabs.primary a { + background: url(../../images/icons/0074bd/chevron-left.svg) 1% center no-repeat; + } + .tabs.primary .tabs__tab.is-active a { + background-image: none; + } +} +.tabs__trigger { + display: none; +} + +/* JS dependent styling */ +.is-collapse-enabled .tabs__trigger { + position: absolute; + z-index: 10; + top: 2px; + right: 0; /* LTR */ + left: auto; /* LTR */ + display: block; + box-sizing: content-box; + width: 25%; + padding-right: 4px; + padding-left: 4px; + text-align: center; + letter-spacing: 0.1em; + border-left: 0; /* LTR */ + border-radius: 0 4px 0 0; /* LTR */ + outline: 0; + font-family: Arial, sans-serif; + font-size: 1.25em; +} +[dir="rtl"] .is-collapse-enabled .tabs__trigger { + right: auto; + left: 0; + border-right: 0; + border-left: 1px solid #bfbfbf; + border-radius: 4px 0 0 0; +} +.is-collapse-enabled .tabs { + max-height: 0; + padding-top: 38px; +} +.tabs.is-open { + max-height: 999em; + padding-bottom: 16px; + padding-bottom: 1rem; +} +.is-collapse-enabled .tabs__tab.is-active { + position: absolute; + top: 2px; + left: 0; /* LTR */ + width: 75%; + border-bottom: 0; +} +[dir="rtl"] .is-collapse-enabled .tabs__tab.is-active { + right: 0; + left: auto; +} +.is-collapse-enabled .tabs.primary a.is-active:before { + content: none; +} +.is-open .tabs__tab.is-active { + color: #004f80; + border-color: #a6a6a6; + border-bottom: 1px solid #a6a6a6; + background-color: #fff; +} + +/* Styles for the horizontal state always take priority */ +.is-horizontal .tabs { + overflow: visible; + max-height: none !important; + padding-top: 0 !important; +} +.is-horizontal .tabs__tab { + float: left; /* LTR */ + width: auto; + height: auto; + margin: 0 0 -1px; + text-align: center; + border-bottom-color: #a6a6a6; +} +[dir="rtl"] .is-horizontal .tabs__tab { + float: right; + /* This is required to win over specificity of [dir="rtl"] .tabs > li */ + margin-left: 0; +} +.is-horizontal .tabs__tab + .tabs__tab { + margin-left: -1px; /* LTR */ +} +[dir="rtl"] .is-horizontal .tabs__tab + .tabs__tab { + margin-right: -1px; + margin-left: 0; +} +.is-horizontal .tabs.primary .tabs__tab:first-child { + border-radius: 4px 0 0 0; /* LTR */ +} +[dir="rtl"] .is-horizontal .tabs.primary .tabs__tab:first-child { + border-radius: 0 4px 0 0; +} +.is-horizontal .tabs.primary .tabs__tab:last-child { + border-radius: 0 4px 0 0; /* LTR */ +} +[dir="rtl"] .is-horizontal .tabs.primary .tabs__tab:last-child { + border-radius: 4px 0 0 0; +} + +/* Override the states above */ +.is-horizontal .tabs__tab.is-active, +.is-horizontal .tabs.primary .tabs__tab.is-active, +[dir="rtl"] .is-horizontal .tabs.primary .tabs__tab.is-active { + position: relative; + top: 0; + width: auto; + margin: 0 -4px; + border-bottom: 0; + border-radius: 4px 4px 0 0; +} +.is-horizontal .tabs.primary a { + padding: 7px 2em 7px 2em; + background-image: none; +} +.is-horizontal .tabs__trigger { + display: none; +} + +/* Secondary tabs */ +.tabs.secondary { + display: block; + margin-top: 16px; + margin-top: 1rem; +} +.tabs.secondary .tabs__tab { + display: block; + margin-left: -1px; /* LTR */ + padding: 5px 15px 5px 16px; /* LTR */ + -webkit-transition: border-color 0.2s, background-color 0.2s; + transition: border-color 0.2s, background-color 0.2s; + color: #0074bd; +} +[dir="rtl"] .tabs.secondary .tabs__tab { + margin-right: -1px; + margin-left: 0; + padding-right: 16px; + padding-left: 15px; +} +/* This is required to win over specificity of [dir="rtl"] .tabs.secondary .tabs__tab */ +[dir="rtl"] .views-displays .tabs.secondary li, +[dir="rtl"] .views-displays .tabs.secondary li.is-active { + padding-right: 0; + padding-left: 0; +} +.tabs.secondary .tabs__tab + .tabs__tab { + border-top: 1px solid #d9d8d4; +} +.tabs.secondary .tabs__tab.is-active { + padding-left: 15px; /* LTR */ + color: #004f80; + border-left: 2px solid #004f80; /* LTR */ +} +[dir="rtl"] .tabs.secondary .tabs__tab.is-active { + padding-right: 15px; + border-right: 2px solid #004f80; + border-left: 1px solid #bfbfbf; +} +/* This is required to win over specificity of [dir="rtl"] .tabs.secondary .tabs__tab.is-active */ +[dir="rtl"] .views-displays .tabs.secondary li.is-active { + padding-right: 0; + border: 0 none; +} +.tabs.secondary .tabs__tab:hover, +.tabs.secondary .tabs__tab:focus { + padding-left: 15px; /* LTR */ + color: #008ee6; + border-left: 2px solid #008ee6; /* LTR */ +} +[dir="rtl"] .tabs.secondary .tabs__tab:hover, +[dir="rtl"] .tabs.secondary .tabs__tab:focus { + padding-right: 15px; + border-right: 2px solid #008ee6; + border-left: 1px solid #bfbfbf; +} +/* This is required to win over specificity of [dir="rtl"] .tabs.secondary .tabs__tab:hover */ +[dir="rtl"] .views-displays .tabs li.tabs__tab:hover { + padding-right: 0; + border: 0 none; +} +.tabs.secondary a { + padding: 7px 13px 5px; + text-decoration: none; + background-color: transparent; +} +/* This is required to win over specificity of [dir="rtl"] li.tabs__tab a */ +[dir="rtl"] .tabs.secondary a { + padding-right: 13px; + padding-left: 13px; +} +/* This is required to win over specificity of [dir="rtl"] .tabs.secondary a */ +[dir="rtl"] .views-displays .tabs.secondary a { + padding-right: 7px; + padding-left: 7px; +} +.tabs.secondary .is-active a { + color: #004f80; +} +.tabs.secondary a:focus { + text-decoration: underline; +} + +/* Styles for the horizontal state */ +.is-horizontal .tabs.secondary .tabs__tab { + position: relative; + z-index: 15; + top: 0; + float: left; /* LTR */ + margin-right: 1em; + margin-left: 1em; + padding: 0; + border-top: 0; + border-right-color: transparent; /* LTR */ + border-bottom: 2px solid transparent; + border-left: 1px solid transparent; /* LTR */ + background: none; +} +/** + * 1. This is required to win over specificity of + * [dir="rtl"] .tabs.secondary .tabs__tab:hover, + * [dir="rtl"] .tabs.secondary .tabs__tab:focus + */ +[dir="rtl"] .is-horizontal .tabs.secondary .tabs__tab { + float: right; + padding-right: 0; /* 1 */ + border-right: 1px solid transparent; + border-left-color: transparent; +} +.is-horizontal .tabs.secondary .tabs__tab.is-active { + border-bottom-color: #004f80; +} +.is-horizontal .tabs.secondary .tabs__tab:hover, +.is-horizontal .tabs.secondary .tabs__tab:focus { + border-bottom-color: #008ee6; +} diff --git a/web/themes/seven/css/components/tour.theme.css b/web/themes/seven/css/components/tour.theme.css new file mode 100644 index 0000000000000000000000000000000000000000..e77d9ff58b2d9e704127d8d84946f191e5aedb3d --- /dev/null +++ b/web/themes/seven/css/components/tour.theme.css @@ -0,0 +1,79 @@ +/** + * @file + * Styles for Tour theme. + */ + +/* Default styles for the container */ +.shepherd-element { + color: #fff; + border-radius: 5px; + background-color: #000; + background-color: rgba(0, 0, 0, 0.8); +} + +.shepherd-element:focus { + outline: none; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 0 8px #40b6ff; +} + +/* Mobile */ +@media only screen and (max-width: 767px) { + .shepherd-element { + border-radius: 0; + } +} + +.shepherd-arrow:before { + background: none; +} + +/* Add a little css triangle pip, older browser just miss out on the fanciness of it. */ +.shepherd-arrow { + border: solid 14px rgba(0, 0, 0, 0.8); +} + +.shepherd-element[data-popper-placement^=top] > .shepherd-arrow { + bottom: -28px; + border-right-color: transparent; + border-bottom-color: transparent; + border-left-color: transparent; +} + +.shepherd-element[data-popper-placement^=bottom] > .shepherd-arrow { + top: -28px; + border-top-color: transparent; + border-right-color: transparent; + border-left-color: transparent; +} + +.shepherd-element[data-popper-placement^=left] > .shepherd-arrow { + right: -28px; + border-top-color: transparent; + border-right-color: transparent; /* LTR */ + border-bottom-color: transparent; +} + +.shepherd-element[data-popper-placement^=right] > .shepherd-arrow { + left: -28px; + border-top-color: transparent; + border-bottom-color: transparent; + border-left-color: transparent; /* LTR */ +} + +.shepherd-text p { + line-height: 1.385em; +} +.shepherd-text a { + color: #fff; +} + +.shepherd-cancel-icon { + color: #fff; + font-family: "Open Sans", Verdana, sans-serif; + font-size: 1.4em; + font-weight: bold; +} + +.shepherd-cancel-icon:hover { + color: rgba(255, 255, 255, 0.8); +} diff --git a/web/themes/seven/css/components/user.css b/web/themes/seven/css/components/user.css new file mode 100644 index 0000000000000000000000000000000000000000..0008a93b626253f26db160aa1f247fc149f4ad86 --- /dev/null +++ b/web/themes/seven/css/components/user.css @@ -0,0 +1,66 @@ +/** + * @file + * Theme styling for user module. + */ + +/* Visual styling for the Password strength indicator */ +.password-strength__meter { + margin-top: 0.5em; + background-color: #ebeae4; +} +.password-strength__indicator { + -webkit-transition: width 0.5s ease-out; + transition: width 0.5s ease-out; + background-color: #77b259; +} +.password-strength__indicator.is-weak { + background-color: #e62600; +} +.password-strength__indicator.is-fair { + background-color: #e09600; +} +.password-strength__indicator.is-good { + background-color: #0074bd; +} +.password-strength__indicator.is-strong { + background-color: #77b259; +} + +.password-confirm, +.password-field, +.password-strength, +.password-confirm-match { + width: 55%; +} + +.password-suggestions { + max-width: 34.7em; + margin: 0.7em 0; + padding: 0.2em 0.5em; + border: 1px solid #b4b4b4; +} +.password-suggestions ul { + margin-bottom: 0; +} + +.confirm-parent, +.password-parent { + clear: left; /* LTR */ + overflow: hidden; + max-width: 33em; + margin: 0; +} +[dir="rtl"] .confirm-parent, +[dir="rtl"] .password-parent { + clear: right; +} + +/* Styling for the status indicator of the passwords match test. */ +.password-confirm-message .ok { + color: #325e1c; + font-weight: bold; +} +.password-confirm-message .error { + color: #a51b00; + font-weight: bold; +} diff --git a/web/themes/seven/css/components/vertical-tabs.css b/web/themes/seven/css/components/vertical-tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..07c2ca0d10f3a65a5db12dc870ed241646115bf0 --- /dev/null +++ b/web/themes/seven/css/components/vertical-tabs.css @@ -0,0 +1,130 @@ +/** + * @file + * Override of misc/vertical-tabs.css. + */ + +.vertical-tabs { + position: relative; + margin: 10px 0; + border: 1px solid #bdbdbd; + border-radius: 4px; + background: #e6e5e1; +} +.vertical-tabs__menu { + float: left; /* LTR */ + width: 240px; + margin: 0 -100% -1px 0; /* LTR */ + padding: 0; + list-style-type: none; + border-bottom: 1px solid #ccc; + line-height: 1; +} +[dir="rtl"] .vertical-tabs__menu { + float: right; + margin: 0 0 -1px -100%; +} +.vertical-tabs__menu-item { + position: relative; +} +.vertical-tabs__menu-item.is-selected { + z-index: 1; + overflow-x: hidden; + width: 100%; + border-right: 1px solid #fcfcfa; /* LTR */ + border-bottom: 1px solid #b3b2ad; + box-shadow: 0 5px 5px -5px hsla(0, 0%, 0%, 0.3); +} +.vertical-tabs__menu-item.last { + border-bottom: none; +} +.vertical-tabs__menu-item.first a { + border-top-left-radius: 4px; /* LTR */ +} +[dir="rtl"] .vertical-tabs__menu-item.first a { + border-top-left-radius: 0; + border-top-right-radius: 4px; +} +[dir="rtl"] .vertical-tabs__menu-item.is-selected { + border-right: none; + border-left: 1px solid #fcfcfa; +} +.vertical-tabs__menu-item:focus, +.vertical-tabs__menu-item:active { + z-index: 2; +} +.vertical-tabs__menu-item a { + display: block; + padding: 10px 15px 15px; + text-decoration: none; + border-bottom: 1px solid #b3b2ad; + background-color: #f2f2f0; + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); +} +.vertical-tabs__menu-item:last-child a { + border-bottom: 0; +} +.vertical-tabs__menu-item.is-selected a, +.vertical-tabs__menu-item a:hover, +.vertical-tabs__menu-item a:focus { + background: #fcfcfa; + text-shadow: none; +} +.vertical-tabs__menu-item a:focus { + outline: none; +} +.vertical-tabs__menu-item a:focus .vertical-tabs__menu-item-title { + text-decoration: underline; +} +.vertical-tabs__menu-item a:active .vertical-tabs__menu-item-title, +.vertical-tabs__menu-item.is-selected a:focus .vertical-tabs__menu-item-title { + text-decoration: none; +} +.vertical-tabs__menu-item.is-selected a { + padding-left: 11px; /* LTR */ + text-decoration: none; + color: #004f80; + border-bottom: none; +} +[dir=rtl] .vertical-tabs__menu-item.is-selected a { + padding-right: 11px; + padding-left: 15px; +} +.vertical-tabs__menu-item.is-selected a:hover, +.vertical-tabs__menu-item.is-selected a:focus { + color: #007ecc; +} +[data-vertical-tabs-panes] { + background-color: #fcfcfa; +} +.vertical-tabs__panes { + margin: 0 0 0 240px; /* LTR */ + padding: 10px 15px 10px 15px; + border-left: 1px solid #a6a5a1; /* LTR */ + border-top-right-radius: 4px; /* LTR */ + border-bottom-right-radius: 4px; /* LTR */ +} +[dir="rtl"] .vertical-tabs__panes { + margin: 0 240px 0 0; + border-right: 1px solid #a6a5a1; + border-left: none; + border-radius: 4px 0 0 4px; +} +.vertical-tabs__panes:after { + display: table; + clear: both; + content: ""; +} +.vertical-tabs__pane { + margin: 0; + padding: 0; + color: #595959; + border: 0; +} +.vertical-tabs__menu-item-summary { + display: block; + padding-top: 0.4em; + color: #666; +} +.vertical-tabs__pane > summary { + display: none; +} diff --git a/web/themes/seven/css/components/views-ui.css b/web/themes/seven/css/components/views-ui.css new file mode 100644 index 0000000000000000000000000000000000000000..912c8257b4cdf3cb16ba3248deb471f67d92b3c4 --- /dev/null +++ b/web/themes/seven/css/components/views-ui.css @@ -0,0 +1,334 @@ +/** + * Views styling + */ + +/* @group Forms */ + +/** + * Seven positions the summary absolutely, but does not have a way to ignore + * details without a summary so we make one up. + * + * @todo Neither a fieldset without legend nor a details without summary is + * valid HTML markup in any way. Refactor Views UI to not produce such invalid + * markup. + */ +details.fieldset-no-legend { + padding-top: 0; +} + +/** + * Being extra safe here and scoping this to the add view wizard form (where + * a layout problem occurs for the Display format details if we don't fix its + * padding), but it's probably safe to just let it apply everywhere. + */ +#views-ui-add-form details details .seven-details__wrapper { + padding-right: 0; + padding-left: 0; +} + +.views-display-tab details.box-padding .seven-details__wrapper { + padding: 0; +} + +.views-admin input.form-submit, +.views-ui-dialog input.form-submit, +.views-admin a.button, +.views-ui-dialog a.button { + margin-top: 0; + margin-right: 0; /* LTR */ + margin-bottom: 0; +} +[dir="rtl"] .views-admin input.form-submit, +[dir="rtl"] .views-ui-dialog input.form-submit, +[dir="rtl"] .views-admin a.button, +[dir="rtl"] .views-ui-dialog a.button { + margin-right: 1em; + margin-left: 0; +} +[dir="rtl"] .views-admin input.form-submit:first-child, +[dir="rtl"] .views-ui-dialog input.form-submit:first-child, +[dir="rtl"] .views-admin a.button:first-child, +[dir="rtl"] .views-ui-dialog a.button:first-child { + margin-right: 0; +} + +.form-radios > .form-item { + margin-top: 3px; +} + +/* @group Dependent options + */ + +/* This is necessary to supersede the Seven .form-item + * reset declaration that sets the margin to zero. + */ +.form-item-options-expose-required, +.form-item-options-expose-label, +.form-item-options-expose-field-identifier, +.form-item-options-expose-description { + margin-left: 1.5em; /* LTR */ +} +[dir="rtl"] .form-item-options-expose-required, +[dir="rtl"] .form-item-options-expose-label, +[dir="rtl"] .form-item-options-expose-field-identifier, +[dir="rtl"] .form-item-options-expose-description { + margin-right: 1.5em; + margin-left: 0; +} + +.views-admin-dependent .form-item .form-item, +.views-admin-dependent .form-type-checkboxes, +.views-admin-dependent .form-type-radios, +.views-admin-dependent .form-item .form-item, +.form-item-options-expose-required, +.form-item-options-expose-label, +.form-item-options-expose-field-identifier, +.form-item-options-expose-description { + margin-top: 6px; + margin-bottom: 6px; +} + +.views-admin-dependent .form-type-radio, +.views-admin-dependent .form-radios .form-item { + margin-top: 2px; + margin-bottom: 2px; +} + +/* @end */ + +/* @group Lists */ + +.views-admin ul.secondary, +.views-admin .item-list ul { + margin: 0; + padding: 0; +} + +.views-displays ul.secondary li a, +.views-displays ul.secondary li.is-active a, +.views-displays ul.secondary li.is-active a.is-active { + padding: 2px 7px 3px; +} + +.views-displays ul.secondary li a { + color: #0074bd; +} + +.views-displays ul.secondary li.is-active a, +.views-displays ul.secondary li.is-active a.is-active { + border: 1px solid transparent; +} + +.views-admin .links li { + padding-right: 0; /* LTR */ +} +[dir="rtl"] .views-admin .links li { + padding-left: 0; +} + +.views-admin .button .links li { + padding-right: 12px; /* LTR */ +} +[dir="rtl"] .views-admin .button .links li { + padding-left: 12px; +} + +.views-display-top ul.secondary { + float: left; /* LTR */ + background-color: transparent; +} +[dir="rtl"] .views-display-top ul.secondary { + float: right; +} + +.views-display-top .secondary .action-list li { + float: none; + margin: 0; +} + +/* @end */ + +/* @group Tables */ + +.views-ui-rearrange-filter-form table td, +.views-ui-rearrange-filter-form table th { + vertical-align: top; +} + +/* @end */ + +/* @group Attachment details */ + +#edit-display-settings-title { + color: #008bcb; +} + +/* @end */ + +/* @group Attachment details tabs + * + * The tabs that switch between sections + */ + +.views-displays .secondary { + text-align: left; /* LTR */ +} +[dir="rtl"] .views-displays .secondary { + text-align: right; +} + +.views-admin .icon.add { + background-position: center 3px; +} + +.views-displays .secondary a:hover > .icon.add { + background-position: center -25px; +} + +.views-displays .secondary .open > a { + border-radius: 7px 7px 0 0; +} + +.views-displays .secondary .open > a:hover, +.views-displays .secondary .open > a:focus { + color: #008bcb; + background-color: #f1f1f1; +} + +.views-displays .secondary .action-list li:first-child { + border-radius: 0 7px 0 0; /* LTR */ +} +[dir="rtl"] .views-displays .secondary .action-list li:first-child { + border-radius: 7px 0 0 0; +} + +.views-displays .secondary .action-list li:last-child { + border-radius: 0 0 7px 7px; +} + +.views-displays .secondary .action-list input.form-submit { + color: #008bcb; +} + +/* @end */ + +/* @group Attachment buckets + * + * These are the individual "buckets," or boxes, inside the display settings area + */ + +.views-ui-display-tab-bucket h3 { + text-transform: uppercase; +} + +.views-ui-display-tab-bucket .links { + padding: 2px 6px 4px; +} + +.views-ui-display-tab-bucket .links li + li { + margin-left: 3px; /* LTR */ +} +[dir="rtl"] .views-ui-display-tab-bucket .links li + li { + margin-right: 3px; + margin-left: 0; +} + +/* @end */ + +/* @group Rearrange filter criteria */ + +.views-ui-rearrange-filter-form .action-links { + float: left; + margin: 0 0 1em; + padding: 0; +} +.views-ui-rearrange-filter-form .tabledrag-toggle-weight-wrapper { + float: right; + margin-bottom: 1em; +} + +.views-ui-rearrange-filter-form table { + border: medium none; +} + +.views-ui-rearrange-filter-form [id^="views-row"] { + border: medium none; +} + +.views-ui-rearrange-filter-form tr td:last-child { + border-right: medium none; /* LTR */ +} +[dir="rtl"] .views-ui-rearrange-filter-form tr td:last-child { + border-right: initial; + border-left: medium none; +} + +.views-ui-rearrange-filter-form .filter-group-operator-row { + border-right: 1px solid transparent !important; + border-left: 1px solid transparent !important; +} + +.views-ui-rearrange-filter-form tr.drag td { + background-color: #fe7 !important; +} + +.views-ui-rearrange-filter-form tr.drag-previous td { + background-color: #ffb !important; +} + +/* @end */ + +/* @group Live preview elements */ + +.views-query-info pre { + margin-top: 0; + margin-bottom: 0; +} + +/* @group Query info table */ + +.views-query-info table { + border-radius: 7px; + -webkit-border-horizontal-spacing: 1px; + -webkit-border-vertical-spacing: 1px; +} + +.views-query-info table tr td:last-child { + /* Fixes a Seven style that bleeds down into this table unnecessarily */ + border-right: 0 none; /* LTR */ +} +[dir="rtl"] .views-query-info table tr td:last-child { + border-right: initial; + border-left: 0 none; +} + +/* @end */ + +/* @end */ + +/* @group Add view */ + +.form-item-page-create, +.form-item-block-create { + margin-top: 13px; +} + +/* @end */ + +/* @group Modal dialog box + * + * The contents of the popup dialog on the views edit form. + */ + +.filterable-option .form-item.form-type-checkbox { + padding-top: 4px; + /* This selector is aggressive because Seven's reset for .form-items is aggressive. */ + padding-bottom: 4px; + padding-left: 4px; /* LTR */ +} +[dir="rtl"] .filterable-option .form-item.form-type-checkbox { + padding-right: 4px; + padding-left: 8px; +} + +/* @end */ diff --git a/web/themes/seven/css/layout/layout.css b/web/themes/seven/css/layout/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..39649e43c1785fe127ceede9d431a4bbfb1178f1 --- /dev/null +++ b/web/themes/seven/css/layout/layout.css @@ -0,0 +1,14 @@ +/** + * Add spacing to bottom of pages + */ +.page-content { + margin-bottom: 80px; +} + +/** + * Add color to layout icons. + */ +.layout-icon__region { + fill: #f5f5f2; + stroke: #666; +} diff --git a/web/themes/seven/css/layout/node-add.css b/web/themes/seven/css/layout/node-add.css new file mode 100644 index 0000000000000000000000000000000000000000..977cb2305f83e03a49c546960a85828d54558d89 --- /dev/null +++ b/web/themes/seven/css/layout/node-add.css @@ -0,0 +1,26 @@ +.layout-region-node-footer__content { + margin-top: 1.5em; + padding-top: 0.5em; + border-top: 1px solid #bebfb9; +} + +/** + * Widescreen + * + * Both of the following media queries must *exactly* match what is in + * node.module.css. This is rather crazy. + * + * @todo Figure out how to reduce media query duplication across files + * and modules. Layout styles only allowed in themes? + */ +@media + screen and (min-width: 780px), + (orientation: landscape) and (min-device-height: 780px) { + .node-form-layout .messages { + margin-top: 1em; + margin-bottom: 1em; + } + .layout-region-node-footer__content { + margin-top: 0.5em; + } +} diff --git a/web/themes/seven/css/theme/ckeditor-admin.css b/web/themes/seven/css/theme/ckeditor-admin.css new file mode 100644 index 0000000000000000000000000000000000000000..7214a24bcdefc0dc725031f13fd5e62b8cce5b8e --- /dev/null +++ b/web/themes/seven/css/theme/ckeditor-admin.css @@ -0,0 +1,15 @@ +/** + * @file + * Seven specific styling for CKEditor admin. + */ + +/* + * This rule is needed to provide Seven's blue focus outline. + */ +.ckeditor-toolbar-disabled .ckeditor-buttons li a:focus { + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 0 8px #40b6ff; +} + +.ckeditor-toolbar-active .ckeditor-buttons li a:focus { + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 0 8px #40b6ff; +} diff --git a/web/themes/seven/css/theme/ckeditor-dialog.css b/web/themes/seven/css/theme/ckeditor-dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..87ac1214d76614c24da2b54cc3bb46224b01da02 --- /dev/null +++ b/web/themes/seven/css/theme/ckeditor-dialog.css @@ -0,0 +1,254 @@ +/** + * @file + * CKEditor-native dialogs theming. + */ + +.cke_dialog_background_cover { + display: none; +} +.cke_dialog:before { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ""; + opacity: 0.7; + background: #000; +} +[dir="rtl"] .cke_reset_all * { + text-align: right; + direction: rtl; +} +.cke_reset_all .cke_dialog_body { + position: relative; + border: 0; + border-radius: 0; + background: none; +} +.cke_reset_all .cke_dialog_body * { + font: 13px/1.538em "Lucida Grande", "Lucida Sans Unicode", "DejaVu Sans", "Lucida Sans", sans-serif; +} + +/* Dialog's header. */ +.cke_reset_all .cke_dialog_title { + padding: 15px 49px 15px 15px; + color: #fff; + border: 0; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + background: #6b6b6b; + box-shadow: none; + text-shadow: none; + font-size: 1.3344em; + font-weight: 600; + line-height: 1.315em; + -webkit-font-smoothing: antialiased; +} +[dir="rtl"] .cke_reset_all .cke_dialog_title { + padding: 15px 15px 15px 49px; +} + +/* More specificity to prevent overriding in high density screens. */ +.cke_reset_all .cke_dialog .cke_dialog_close_button { + top: 16px; + right: 20px; + width: 16px; + height: 16px; + opacity: 1; + background: url(../../images/icons/ffffff/ex.svg) 0 0 no-repeat; +} +[dir="rtl"] .cke_reset_all .cke_dialog .cke_dialog_close_button { + right: auto; + left: 20px; +} +.cke_reset_all .cke_dialog .cke_label { + display: none; +} + +/* Dialog's body. */ +.cke_reset_all .cke_dialog_contents { + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} +.cke_reset_all .cke_dialog_contents_body { + padding: 1em; +} +.cke_reset_all tr:hover, +.cke_reset_all tr:focus { + background: none; +} +[dir="rtl"] .cke_reset_all .cke_dialog_ui_hbox_first, +[dir="rtl"] .cke_reset_all .cke_dialog_ui_hbox_child { + padding-right: 0; + padding-left: 10px; +} +.cke_reset_all .cke_dialog_body label { + display: table; + margin: 0 0 0.1em; + padding: 0; + font-weight: bold; +} +.cke_reset_all .cke_dialog_body .cke_dialog_ui_input_text, +.cke_reset_all .cke_dialog_body .cke_dialog_ui_input_textarea, +.cke_reset_all .cke_dialog_body div.cke_dialog_ui_input_select { + border: 0; +} +.cke_reset_all .cke_dialog_body textarea, +.cke_reset_all .cke_dialog_body input[type="text"], +.cke_reset_all select.cke_dialog_ui_input_select { + box-sizing: border-box; + max-width: 100%; + margin: 0 0 3px; + padding: 0.3em 0.4em 0.3em 0.5em; + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + color: #595959; + border: 1px solid #b8b8b8; + border-top-color: #999; + border-radius: 2px; + background: #fcfcfa; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.125); + font-size: 1em; + line-height: normal; +} +.cke_reset_all select.cke_dialog_ui_input_select { + padding-right: 1.5em; + background: #fcfcfa url(../../images/icons/333333/caret-down.svg) no-repeat 99% 63%; +} +.cke_reset_all .cke_dialog_body textarea:focus, +.cke_reset_all .cke_dialog_body input[type="text"]:focus, +.cke_reset_all select.cke_dialog_ui_input_select:focus { + border-color: #40b6ff; + outline: 0; + background-color: #fff; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 0 8px #40b6ff; +} + +/* Dialog's footer. */ +.cke_reset_all .cke_dialog .cke_dialog_footer { + margin: 0; + padding: 15px 20px; + text-align: left; + border: 0; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + outline: none; + background: #f5f5f2; +} +[dir="rtl"] .cke_reset_all .cke_dialog .cke_dialog_footer { + text-align: right; +} +.cke_reset_all .cke_dialog .cke_resizer { + display: none; +} +.cke_reset_all .cke_dialog_footer_buttons { + margin: 0; +} +.cke_dialog_footer_buttons td { + float: right; +} +[dir="rtl"] .cke_dialog_footer_buttons td { + float: left; +} +.cke_reset_all a.cke_dialog_ui_button { + position: relative; + display: inline-block; + box-sizing: border-box; + margin-right: 1em; + padding: 4px 1.5em; + cursor: pointer; + -webkit-transition: all 0.1s; + transition: all 0.1s; + text-align: center; + text-decoration: none; + color: #333; + border: 1px solid #a6a6a6; + border-radius: 20em; + background-color: #f2f1eb; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); + font-size: 14px; + font-size: 0.875rem; + font-weight: 600; + line-height: normal; + -webkit-appearance: none; + -moz-appearance: none; + -webkit-font-smoothing: antialiased; +} +[dir="rtl"] .cke_reset_all a.cke_dialog_ui_button { + margin-right: 0; + margin-left: 1em; +} + +/* More specificity to prevent overriding in high contrast mode. */ +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button:hover, +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button:focus { + padding: 4px 1.5em; + text-decoration: none; + color: #1a1a1a; + border: 1px solid #a6a6a6; + background-color: #f9f8f6; + background-image: -webkit-linear-gradient(top, #fcfcfa, #e9e9dd); + background-image: linear-gradient(to bottom, #fcfcfa, #e9e9dd); + box-shadow: 0 1px 2px hsla(0, 0%, 0%, 0.125); +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button:focus { + z-index: 10; + border: 1px solid #3ab2ff; + box-shadow: 0 0 0.5em 0.1em hsla(203, 100%, 60%, 0.7); +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button:active { + padding: 4px 1.5em; + -webkit-transition: none; + transition: none; + border: 1px solid #a6a6a6; + background-color: #dfdfd9; + background-image: -webkit-linear-gradient(top, #f6f6f3, #e7e7df); + background-image: linear-gradient(to bottom, #f6f6f3, #e7e7df); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button span { + padding: 0; + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); + font-size: 0.875rem; + line-height: normal; +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button:hover span, +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button:focus span, +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button:active span { + padding: 0; +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok { + color: #fff; + border-color: #1e5c90; + background-color: #0071b8; + background-image: -webkit-linear-gradient(top, #007bc6, #0071b8); + background-image: linear-gradient(to bottom, #007bc6, #0071b8); + text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + font-weight: 700; + -webkit-font-smoothing: antialiased; +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:hover, +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:focus { + color: #fff; + border-color: #1e5c90; + background-color: #2369a6; + background-image: -webkit-linear-gradient(top, #0c97ed, #1f86c7); + background-image: linear-gradient(to bottom, #0c97ed, #1f86c7); + box-shadow: 0 1px 2px hsla(203, 10%, 10%, 0.25); +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:focus { + border: 1px solid #1280df; + box-shadow: 0 0 0.5em 0.1em hsla(203, 100%, 60%, 0.7); +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:active { + border-color: #144b78; + background-image: -webkit-linear-gradient(top, #08639b, #0071b8); + background-image: linear-gradient(to bottom, #08639b, #0071b8); + box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.2); +} +.cke_reset_all .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok span { + text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); +} diff --git a/web/themes/seven/css/theme/colors.css b/web/themes/seven/css/theme/colors.css new file mode 100644 index 0000000000000000000000000000000000000000..ac8823996fa6bcde322188d46ebcc30f638b8500 --- /dev/null +++ b/web/themes/seven/css/theme/colors.css @@ -0,0 +1,15 @@ +/** + * Reusable colors. + */ +.color-success { + color: #325e1c; + background-color: #f3faef; +} +.color-warning { + color: #734c00; + background-color: #fdf8ed; +} +.color-error { + color: #a51b00; + background-color: #fcf4f2; +} diff --git a/web/themes/seven/css/theme/filter.admin.css b/web/themes/seven/css/theme/filter.admin.css new file mode 100644 index 0000000000000000000000000000000000000000..db42f12f4da79c9edbce14df2a7e487c6a9404ba --- /dev/null +++ b/web/themes/seven/css/theme/filter.admin.css @@ -0,0 +1,80 @@ +/** + * @file + * Admin styling for the Filter module. + */ + +/** + * Filter information under field. + */ +.text-format-wrapper > .form-item { + margin-bottom: 0; +} + +.filter-wrapper { + overflow: hidden; + margin: 0; + padding: 0.5em 0.666em; + border: 1px solid #ccc; + border-top: 0; +} +.filter-wrapper .form-item { + margin: 0; +} +.filter-wrapper .form-item label { + display: inline; +} + +.filter-help { + float: right; /* LTR */ +} +[dir="rtl"] .filter-help { + float: left; +} +.filter-guidelines .filter-guidelines-item { + margin-top: 1em; +} +.filter-help p { + margin: 0; +} +.filter-help a { + position: relative; + margin: 0 20px 0 0; /* LTR */ +} +[dir="rtl"] .filter-help a { + margin: 0 0 0 20px; +} +.filter-help a:after { + position: absolute; + top: 0; + right: -20px; /* LTR */ + display: block; + width: 16px; + height: 16px; + content: ""; + background: transparent url(../../images/help.png); +} +[dir="rtl"] .filter-help a:after { + right: auto; + left: -20px; +} + +.text-format-wrapper .description { + margin-top: 0.5em; +} +.tips { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + font-size: 0.9em; +} + +/** + * Improve filter tips position. + */ +.tips { + padding-left: 0; /* LTR */ +} +[dir="rtl"] .tips { + padding-right: 0; +} diff --git a/web/themes/seven/css/theme/install-page.css b/web/themes/seven/css/theme/install-page.css new file mode 100644 index 0000000000000000000000000000000000000000..b616b418d96fae4421dcbabfe81bf268b4461aec --- /dev/null +++ b/web/themes/seven/css/theme/install-page.css @@ -0,0 +1,62 @@ +/** + * @file + * Installation styling. + * + * Unfortunately we have to make our styling quite strong, to override the + * .maintenance-page styling. + */ +.install-page { + min-height: 100%; + background-color: #1275b2; + background-image: + url(../../images/noise-low.png), + -webkit-radial-gradient(hsl(203, 80%, 45%), hsl(203, 80%, 32%)); + background-image: + url(../../images/noise-low.png), + radial-gradient(hsl(203, 80%, 45%), hsl(203, 80%, 32%)); + background-repeat: repeat; + background-position: left top, 50% 50%; /* LTR */ +} +[dir="rtl"] .install-page { + background-position: right top, 50% 50%; +} + +/** + * Password widget + */ +.install-page .password-parent, +.install-page .confirm-parent { + width: auto; +} +.install-page .form-item .password-suggestions { + float: none; + width: auto; +} +.install-page table td { + word-break: break-all; +} + +.install-page .site-version { + vertical-align: super; + color: #595959; + font-size: 0.5em; +} + +@media all and (max-width: 1010px) and (min-width: 48em) { + .install-page .password-strength, + .install-page .confirm-parent { + width: 100%; + } + .install-configure-form .form-type-password { + width: 100%; + } + .password-confirm, + .password-field { + float: none; + } + .password-confirm-match { + float: none; + width: auto; + max-width: 100%; + } +} diff --git a/web/themes/seven/css/theme/maintenance-page.css b/web/themes/seven/css/theme/maintenance-page.css new file mode 100644 index 0000000000000000000000000000000000000000..047b88ff1c18056ac57c01d025759a159c03f8e7 --- /dev/null +++ b/web/themes/seven/css/theme/maintenance-page.css @@ -0,0 +1,204 @@ +/** + * @file + * Maintenance theming. + */ + +.maintenance-page { + min-height: 100%; + background-color: #e0e0d8; + background-image: -webkit-radial-gradient(hsl(203, 2%, 90%), hsl(203, 2%, 95%)); + background-image: radial-gradient(hsl(203, 2%, 90%), hsl(203, 2%, 95%)); + background-repeat: repeat; + background-position: left top, 50% 50%; /* LTR */ +} +[dir="rtl"] .maintenance-page { + background-position: right top, 50% 50%; +} + +.page-title { + word-wrap: break-word; + color: #0074bd; + font-size: 2em; + line-height: 1.2em; +} + +/** + * Task list & step indicator + */ +@media all and (max-width: 48em) { /* 768px */ + header[role="banner"] { + position: relative; + } + .step-indicator { + position: absolute; + top: 0.2em; + right: 0.5em; /* LTR */ + display: block; + font-size: 1.385em; + } + [dir="rtl"] .step-indicator { + right: auto; + left: 0.5em; + } + .task-list { + display: none; + } +} + +@media all and (min-width: 48em) { /* 768px */ + .step-indicator { + display: none; + } + .task-list { + margin-left: 0; /* LTR */ + padding-bottom: 1em; + padding-left: 0; /* LTR */ + list-style-type: none; + } + [dir="rtl"] .task-list { + margin-right: 0; + padding-right: 0; + } + .task-list li { + padding: 0.5em 1em 0.5em 3.85em; /* LTR */ + color: #1a1a1a; + } + [dir="rtl"] .task-list li { + padding: 0.5em 3.85em 0.5em 1em; + } + .task-list .is-active { + position: relative; + background: #ebeae4; + font-weight: normal; + } + .task-list .is-active:after { + position: absolute; + top: 50%; + left: 100%; /* LTR */ + width: 0; + height: 0; + margin-top: -1.269em; + content: " "; + pointer-events: none; + border: solid transparent; + border-width: 1.269em; + border-color: rgba(235, 234, 228, 0); + border-left-color: #ebeae4; /* LTR */ + } + [dir="rtl"] .task-list .is-active:after { + right: 100%; + left: auto; + border-right-color: #ebeae4; + border-left-color: transparent; + } + .task-list .done { + color: #adadad; + } +} + +/** + * Layout + */ +.layout-container { + width: auto; + margin-right: 1.25em; + margin-left: 1.25em; + background: #fff; +} +.layout-container:after { /* no reason for a clearfix in the markup */ + display: table; + clear: both; + content: ""; +} + +@media all and (max-width: 48em) { /* 768px */ + .layout-container { + margin: 1.25em; + padding: 10px 20px; + } + .page-title { + margin-right: 2em; /* LTR */ + margin-bottom: 0.725em; + } + [dir="rtl"] .page-title { + margin-right: 0; + margin-left: 2em; + } +} + +@media all and (min-width: 48em) { /* 768px */ + html { + display: table; + } + .install-page, + .maintenance-page { + display: table-cell; + padding: 1em 0; + vertical-align: middle; + } + html, + .install-page, + .maintenance-page { + width: 100%; + height: 100%; + margin: 0; + } + .layout-container { + width: 75%; + max-width: 770px; + margin: 0 auto; + padding: 20px 0 40px 0; + border-radius: 5px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); + } + + /* Positioning sidebar & content */ + main { + float: left; /* LTR */ + clear: none; + box-sizing: border-box; + width: 65%; + padding-right: 3.85em; + padding-left: 3.85em; + } + [dir="rtl"] main { + float: right; + } + ul { + margin: 0.25em 0; + padding: 15px; + } + [dir="rtl"] ul { + margin-right: 0; /* Overrides default [dir="rtl"] ul margin */ + } + .layout-sidebar-first { + float: left; /* LTR */ + width: 35%; + } + [dir="rtl"] .layout-sidebar-first { + float: right; + } + + /* Margins for sitename */ + .page-title { + margin: 0.75em 1.9em; + } +} + +/** + * Status report customization for install and update page. + */ +.system-status-report__status-title { + float: none; + width: 100%; +} +.system-status-report__entry__value { + float: none; + width: 100%; + padding-top: 0; + padding-left: 3em; /* LTR */ +} +[dir="rtl"] .system-status-report__entry__value { + padding-right: 3em; + padding-left: 1em; +} diff --git a/web/themes/seven/css/theme/media-library.css b/web/themes/seven/css/theme/media-library.css new file mode 100644 index 0000000000000000000000000000000000000000..fef1a7a2530881ee0b8b853db99feca23111c365 --- /dev/null +++ b/web/themes/seven/css/theme/media-library.css @@ -0,0 +1,737 @@ +/** + * @file media-library.css + + * Styling for Media Library. + */ + +.media-library-wrapper { + display: flex; + margin: -1em; +} + +/** + * @todo Reuse or build on vertical tabs styling for the media library menu. + * https://www.drupal.org/project/drupal/issues/3023767 + */ +.media-library-menu { + display: block; + width: 600px; + max-width: 20%; + margin: 0; /* LTR */ + padding: 0; + border-bottom: 1px solid #ccc; + background-color: #e6e5e1; + line-height: 1; +} +[dir="rtl"] .media-library-menu { + margin: 0; +} + +/** + * @todo Use a class instead of the li element. + * https://www.drupal.org/project/drupal/issues/3029227 + */ +.media-library-menu li { + display: block; + padding: 0; + list-style: none; +} + +.media-library-menu__link { + position: relative; + display: block; + box-sizing: border-box; + padding: 15px; + text-decoration: none; + border-bottom: 1px solid #b3b2ad; + background-color: #f2f2f0; + text-shadow: 0 1px hsla(0, 0%, 100%, 0.6); +} + +.media-library-menu__link:active, +.media-library-menu__link:hover, +.media-library-menu__link:focus { + background: #fcfcfa; + text-shadow: none; +} + +.media-library-menu__link:focus, +.media-library-menu__link:active { + outline: none; +} + +.media-library-menu__link.active { + z-index: 1; + margin-right: -1px; /* LTR */ + color: #000; + border-right: 1px solid #fcfcfa; /* LTR */ + border-bottom: 1px solid #b3b2ad; + background-color: #fff; + box-shadow: 0 5px 5px -5px hsla(0, 0%, 0%, 0.3); +} +[dir="rtl"] .media-library-menu__link.active { + margin-right: 0; + margin-left: -1px; + border-right: 0; + border-left: 1px solid #fcfcfa; +} + +.media-library-content { + width: 100%; + padding: 1em; + border-left: 1px solid #b3b2ad; /* LTR */ + outline: none; +} +[dir="rtl"] .media-library-content { + border-right: 1px solid #b3b2ad; + border-left: 0; +} + +/* Generic media add form styles. */ +.media-library-add-form--without-input .form-item { + margin: 0 0 1em; +} + +/** + * Remove outline from added media list. + * + * The added media list receives focus after adding new media, but since it is + * not an interactive element, it does not need an outline. + */ +.media-library-add-form__added-media { + margin: 0; + padding: 0; + outline: none; +} + +.media-library-add-form__input-wrapper { + padding: 16px; + border: 1px solid #bfbfbf; + border-radius: 2px; + background: #fcfcfa; +} + +/* Style the media add upload form. */ +.media-library-add-form--upload.media-library-add-form--without-input .form-item-upload { + margin-bottom: 0; +} + +.media-library-add-form .file-upload-help { + margin: 8px 0 0; +} + +/* Style the media add oEmbed form. */ +.media-library-add-form--oembed .media-library-add-form__input-wrapper { + display: flex; +} + +@media screen and (max-width: 37.5em) { + .media-library-add-form--oembed .media-library-add-form__input-wrapper { + display: block; + } +} + +.media-library-add-form--oembed.media-library-add-form--without-input .form-item-url { + margin-bottom: 0; +} + +.media-library-add-form-oembed-url { + width: 100%; +} + +/** + * @todo Remove .button when styles are moved to the seven theme in + * https://www.drupal.org/project/drupal/issues/2980769 + */ +.button.media-library-add-form-oembed-submit { + align-self: center; +} + +/* Media add form selection styles. */ +.media-library-add-form__selected-media { + margin-top: 1em; +} + +/* Change to padding to account for the negative margin for flex grid. */ +.media-library-add-form__selected-media .details-wrapper { + padding: 0 10px 1em 10px; +} + +.media-library-add-form__selected-media .media-library-item .field--name-thumbnail img { + height: 100px; +} + +/* Generic media library view styles. */ +.media-library-select-all { + flex-basis: 100%; + width: 100%; + margin: 10px 8px; +} +.media-library-select-all input { + margin-right: 10px; +} +[dir="rtl"] .media-library-select-all input { + margin-left: 10px; +} + +.media-library-views-form, +.media-library-selection, +.media-library-add-form__selected-media .details-wrapper, +.media-library-views-form__bulk_form, +.media-library-view .form--inline { + display: flex; + flex-wrap: wrap; +} + +.media-library-views-form > .form-actions { + flex-basis: 100%; +} + +.media-library-views-form__header { + flex-basis: 100%; +} + +.media-library-views-form__header .form-item { + margin-right: 8px; +} + +.media-library-views-form__rows { + display: flex; + flex-wrap: wrap; + flex-basis: 100%; + margin: 0 -8px; +} + +.media-library-view .form-actions { + align-self: flex-end; + margin: 0.75em 0; +} + +@media screen and (max-width: 600px) { + .media-library-view .form-actions { + flex-basis: 100%; + } +} + +.media-library-view .media-library-view--form-actions { + clear: left; + align-self: flex-end; + margin: 0.75em 0; +} + +/** + * Override the table display of the visually hidden labels. + * + * The width, height and overflow properties in the styles for the + * .visually-hidden class do not work correctly if the element has a table + * display. + */ +.media-library-item label { + display: inline-block; +} + +/* Media library widget view styles. */ +.media-library-wrapper .media-library-view { + position: relative; + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} + +.media-library-wrapper .view-header { + align-self: flex-end; + margin: 1em 0; + text-align: right; /* LTR */ +} +[dir="rtl"] .media-library-wrapper .view-header { + text-align: left; +} + +.media-library-wrapper .media-library-view .view-content { + flex: 0 0 100%; +} + +.media-library-wrapper .views-display-link { + margin: 0; + padding-left: 22px; /* LTR */ + color: #333; + font-size: 15px; + line-height: 16px; +} +[dir="rtl"] .media-library-wrapper .views-display-link { + padding-right: 22px; + padding-left: 0; +} + +.media-library-wrapper .views-display-link.is-active { + font-weight: bold; +} + +.media-library-wrapper .views-display-link-widget { + margin-right: 15px; + background: url(../../images/icons/333333/grid.svg) left 0 no-repeat; /* LTR */ +} +[dir="rtl"] .media-library-wrapper .views-display-link-widget { + background-position: right 0; +} + +.media-library-wrapper .views-display-link-widget_table { + background: url(../../images/icons/333333/table.svg) left 0 no-repeat; /* LTR */ +} +[dir="rtl"] .media-library-wrapper .views-display-link-widget_table { + background-position: right 0; +} + +/** + * Style the media library grid items. + */ +.media-library-item { + position: relative; +} + +/** +* The media library item container receives screen reader focus when items are +* removed. Since it is not an interactive element, it does not need an +* outline. +*/ +.media-library-item--grid { + justify-content: center; + box-sizing: border-box; + width: 50%; + padding: 8px; + vertical-align: top; + outline: none; + background: #fff; +} + +.media-library-item--grid:before { + position: absolute; + top: 7px; + left: 7px; + width: calc(100% - 16px); + height: calc(100% - 16px); + content: ""; + transition: border-color 0.2s, color 0.2s, background 0.2s; + pointer-events: none; + border: 1px solid #dbdbdb; +} + +/* Media library widget weight field styles. */ +.media-library-item--grid .form-item { + margin: 0.75em; +} + +/* The selected items in the add form should be shown a bit smaller. */ +.media-library-add-form__selected-media .media-library-item--small { + width: 33.3%; +} + +.media-library-widget-modal .ui-dialog-buttonpane { + display: flex; + align-items: center; +} + +.media-library-widget-modal .ui-dialog-buttonpane .form-actions { + flex: 1; +} + +/** + * By default, the dialog is too narrow to be usable. + * @see Drupal.ckeditor.openDialog() + */ +.ui-dialog--narrow.media-library-widget-modal { + max-width: 75%; +} + +@media screen and (min-width: 45em) { + .media-library-item--grid { + width: 33.3%; + } + + /* Change the width for the modal and widget since there is less space. */ + .media-library-widget-modal .media-library-item--grid, + .media-library-selection .media-library-item--grid { + width: 50%; + } + + /* The selected items in the add form should be shown a bit smaller. */ + .media-library-add-form__selected-media .media-library-item--small { + width: 25%; + } +} + +@media screen and (min-width: 60em) { + .media-library-item--grid { + width: 25%; + } + + /* Change the width for the modal and widget since there is less space. */ + .media-library-widget-modal .media-library-item--grid, + .media-library-selection .media-library-item--grid { + width: 33.3%; + } + + /* The selected items in the add form should be shown a bit smaller. */ + .media-library-add-form__selected-media .media-library-item--small { + width: 16.6%; + } +} + +@media screen and (min-width: 77em) { + .media-library-item--grid { + width: 16.6%; + } + + /* Change the width for the modal and widget since there is less space. */ + .media-library-widget-modal .media-library-item--grid, + .media-library-selection .media-library-item--grid { + width: 25%; + } + + /* The selected items in the add form should be shown a bit smaller. */ + .media-library-add-form__selected-media .media-library-item--small { + width: 16.6%; + } +} + +.media-library-item--grid .field--name-thumbnail { + overflow: hidden; + text-align: center; + background-color: #ebebeb; +} + +.media-library-item--grid .field--name-thumbnail img { + height: 180px; + object-fit: contain; + object-position: center center; +} + +.media-library-item--grid.is-hover:before, +.media-library-item--grid.checked:before, +.media-library-item--grid.is-focus:before { + top: 5px; + left: 5px; + border-width: 3px; + border-color: #40b6ff; + border-radius: 3px; +} + +.media-library-item--grid.checked:before { + border-color: #0076c0; +} + +.media-library-item__click-to-select-checkbox { + position: absolute; + z-index: 1; + top: 16px; + left: 16px; /* LTR */ + display: block; +} +[dir="rtl"] .media-library-item__click-to-select-checkbox { + right: 16px; + left: auto; +} + +.media-library-item__click-to-select-checkbox input { + width: 20px; + height: 20px; +} + +.media-library-item__click-to-select-checkbox .form-item { + margin: 0; +} + +.media-library-item__click-to-select-trigger { + overflow: hidden; + height: 100%; + cursor: pointer; +} + +/* Media library item table styles. */ +.media-library-item--table img { + max-width: 100px; + height: auto; +} + +/* Media library entity view display styles. */ +.media-library-item__preview { + padding-bottom: 34px; +} + +.field--widget-media-library-widget .media-library-item__preview { + cursor: move; +} + +.field--widget-media-library-widget .js-media-library-item:only-child .media-library-item__preview { + cursor: inherit; +} + +.media-library-item__status { + position: absolute; + top: 40px; + left: 5px; /* LTR */ + padding: 5px 10px; + pointer-events: none; + color: #e4e4e4; + background: #666; + font-size: 12px; + font-style: italic; +} +[dir="rtl"] .media-library-item__status { + right: 5px; + left: auto; +} + +.media-library-item__attributes { + position: absolute; + bottom: 0; + display: block; + overflow: hidden; + max-width: calc(100% - 10px); + max-height: calc(100% - 50px); + padding: 5px; + background: white; +} + +.media-library-item__name { + font-size: 14px; +} + +.media-library-item__name { + display: block; + overflow: hidden; + margin: 2px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.media-library-item__attributes:hover .media-library-item__name, +.media-library-item--grid.is-focus .media-library-item__name, +.media-library-item--grid.checked .media-library-item__name { + white-space: normal; +} + +.media-library-item__type { + color: #696969; + font-size: 12px; +} + +.media-library-item--disabled { + pointer-events: none; + opacity: 0.5; +} + +/* Media library widget styles. */ +.media-library-widget { + position: relative; +} + +/** + * @todo Change to .media-library-open-button when styles are moved to the + * seven theme in https://www.drupal.org/project/drupal/issues/2980769 + */ +.button.media-library-open-button { + margin-bottom: 1em; + margin-left: 0; /* LTR */ +} +[dir="rtl"] .button.media-library-open-button { + margin-right: 0; + margin-left: 1em; +} + +.media-library-widget__toggle-weight { + position: absolute; + top: 5px; + right: 5px; /* LTR */ +} +[dir="rtl"] .media-library-widget__toggle-weight { + right: auto; + left: 5px; +} + +/* Add negative margin for flex grid. */ +.media-library-selection { + margin: 1em -8px; +} + +/** + * Media library widget edit and delete button styles. + * + * We have to override the .button styles since buttons make heavy use of + * background and border property changes. + */ +.media-library-item__edit, +.media-library-item__edit:hover, +.media-library-item__edit:focus, +.media-library-item__remove, +.media-library-item__remove:hover, +.media-library-item__remove:focus, +.media-library-item__remove.button, +.media-library-item__remove.button:first-child, +.media-library-item__remove.button:disabled, +.media-library-item__remove.button:disabled:active, +.media-library-item__remove.button:hover, +.media-library-item__remove.button:focus { + position: absolute; + z-index: 1; + top: 10px; + overflow: hidden; + width: 21px; + height: 21px; + margin: 5px; + padding: 0; + transition: 0.2s border-color; + color: transparent; + border: 2px solid #ccc; + border-radius: 20px; + background-size: 13px; + text-shadow: none; + font-size: 0; +} + +.media-library-item__edit { + right: 40px; /* LTR */ +} +[dir="rtl"] .media-library-item__edit { + right: auto; + left: 40px; +} + +.media-library-item__remove { + right: 10px; /* LTR */ +} +[dir="rtl"] .media-library-item__remove { + right: auto; + left: 10px; +} + +.media-library-item__edit { + background: url("../../images/icons/787878/pencil.svg") #fff center no-repeat; + background-size: 13px; +} +.media-library-item__remove, +.media-library-item__remove.button, +.media-library-item__remove.button:first-child, +.media-library-item__remove.button:disabled, +.media-library-item__remove.button:disabled:active, +.media-library-item__remove.button:hover, +.media-library-item__remove.button:focus { + background: url("../../images/icons/787878/ex.svg") #fff center no-repeat; + background-size: 13px; +} +.media-library-item__edit:hover, +.media-library-item__edit:focus, +.media-library-item__remove:hover, +.media-library-item__remove:focus, +.media-library-item__remove.button:hover, +.media-library-item__remove.button:focus, +.media-library-item__remove.button:disabled:active { + border-color: #40b6ff; +} + +/** + * Style the added media item container. + * + * The added media container receives screen reader focus since it has the role + * 'listitem'. Since it is not an interactive element, it does not need an + * outline. + */ +.media-library-add-form__media { + position: relative; + display: flex; + padding: 1em 0; + border-bottom: 1px solid #c0c0c0; + outline: none; +} + +/* Do not show the top padding for the first item. */ +.media-library-add-form__media:first-child { + padding-top: 0; +} + +/** + * Change the position of the remove button for the first item. + * + * The first item doesn't have a top padding, change the location of the remove + * button as well. + */ +.media-library-add-form__media:first-child .media-library-add-form__remove-button[type="submit"] { + top: 5px; +} + +/* Do not show the bottom border and padding for the last item. */ +.media-library-add-form__media:last-child { + padding-bottom: 0; + border-bottom: 0; +} + +.media-library-add-form__preview { + display: flex; + align-items: center; + justify-content: center; + width: 220px; + margin-right: 20px; /* LTR */ + background: #ebebeb; +} +[dir="rtl"] .media-library-add-form__preview { + margin-right: 0; + margin-left: 20px; +} + +/** + * @todo Remove [type="submit"] when styles are moved to the seven theme in + * https://www.drupal.org/project/drupal/issues/2980769 + */ +.media-library-add-form__remove-button[type="submit"] { + position: absolute; + top: 25px; + right: 6px; /* LTR */ + width: auto; + margin: 0; + padding: 2px 20px 2px 2px; /* LTR */ + text-transform: lowercase; + color: transparent; + border: 0; + border-radius: 0; + background: transparent url(../../images/icons/787878/ex.svg) right 2px no-repeat; /* LTR */ + font-weight: normal; + line-height: 16px; +} +[dir="rtl"] .media-library-add-form__remove-button[type="submit"] { + right: auto; + left: 13px; + padding: 2px 2px 2px 20px; + background-position: left 2px; +} + +.media-library-add-form__remove-button:focus, +.media-library-add-form__remove-button.button:disabled, +.media-library-add-form__remove-button.button:disabled:active, +.media-library-add-form__remove-button.button:focus { + color: #787878; + border: 0; + background: transparent url(../../images/icons/787878/ex.svg) right 2px no-repeat; /* LTR */ +} +[dir="rtl"] .media-library-add-form__remove-button:focus, +[dir="rtl"] .media-library-add-form__remove-button.button:disabled, +[dir="rtl"] .media-library-add-form__remove-button.button:disabled:active, +[dir="rtl"] .media-library-add-form__remove-button.button:focus { + background-position: left 2px; +} + +.media-library-add-form__remove-button:hover, +.media-library-add-form__remove-button.button:hover { + color: #e00; + border: 0; + background: transparent url(../../images/icons/ee0000/ex.svg) right 2px no-repeat; /* LTR */ + box-shadow: none; +} +[dir="rtl"] .media-library-add-form__remove-button:hover, +[dir="rtl"] .media-library-add-form__remove-button.button:hover { + background-position: left 2px; +} + +/* @todo Remove in https://www.drupal.org/project/drupal/issues/3064914 */ +.views-live-preview .media-library-view div.views-row + div.views-row { + margin-top: 0; +} diff --git a/web/themes/seven/css/theme/update-report.css b/web/themes/seven/css/theme/update-report.css new file mode 100644 index 0000000000000000000000000000000000000000..ac83a83ad3f12c38fc7484cb4a714961362edb68 --- /dev/null +++ b/web/themes/seven/css/theme/update-report.css @@ -0,0 +1,28 @@ +/** + * @file update-report.css + * + * Styling for the Available updates report at admin/reports/updates + */ + +.project-update__compatibility-details details { + height: 20px; + margin: 2px 0; + border: 0; + background-color: inherit; +} +.project-update__compatibility-details details[open] { + overflow: visible; + height: auto; + white-space: normal; +} +.project-update__compatibility-details summary { + margin: 0; + padding: 0; + text-transform: none; + border: 0; + font-weight: normal; +} +.project-update__compatibility-details .details-wrapper { + margin: 0; + padding: 5px 0; +} diff --git a/web/themes/seven/images/classy/README.txt b/web/themes/seven/images/classy/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..9df44f55ec0a5d8b73c19d54049faf18e73ab931 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/application-octet-stream.png b/web/themes/seven/images/classy/icons/application-octet-stream.png new file mode 100644 index 0000000000000000000000000000000000000000..d5453217dc5cc30e805d3d0da8fa91e5a0684b86 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/application-pdf.png b/web/themes/seven/images/classy/icons/application-pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..36107d6e804015e13d122c53cb035d33632678d2 --- /dev/null +++ b/web/themes/seven/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���p2y8�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/web/themes/seven/images/classy/icons/application-x-executable.png b/web/themes/seven/images/classy/icons/application-x-executable.png new file mode 100644 index 0000000000000000000000000000000000000000..d5453217dc5cc30e805d3d0da8fa91e5a0684b86 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/audio-x-generic.png b/web/themes/seven/images/classy/icons/audio-x-generic.png new file mode 100644 index 0000000000000000000000000000000000000000..28d7f50862b5dbb153c0809e9119fd879d499788 --- /dev/null +++ b/web/themes/seven/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��ׯ`>_��,6L��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/web/themes/seven/images/classy/icons/forum-icons.png b/web/themes/seven/images/classy/icons/forum-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e291de672522d40458ed4b6fc15f58372c778afa --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/image-x-generic.png b/web/themes/seven/images/classy/icons/image-x-generic.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b814f7cb6f4a21e165e88db557ffe4692babad --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/package-x-generic.png b/web/themes/seven/images/classy/icons/package-x-generic.png new file mode 100644 index 0000000000000000000000000000000000000000..21fc382cba23efb9d7cfaefb6a98b86324d531e3 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/text-html.png b/web/themes/seven/images/classy/icons/text-html.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7c7932c25ad93adc9c9e6962d984d1703cd17f --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/text-plain.png b/web/themes/seven/images/classy/icons/text-plain.png new file mode 100644 index 0000000000000000000000000000000000000000..06804849b8331ed8be3d1ae089311ae58ea79c83 --- /dev/null +++ b/web/themes/seven/images/classy/icons/text-plain.png @@ -0,0 +1,4 @@ +�PNG + +��� IHDR�����������7����tEXtSoftware�Adobe ImageReadyq�e<���~IDAT(S��� �0E3�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/web/themes/seven/images/classy/icons/text-x-generic.png b/web/themes/seven/images/classy/icons/text-x-generic.png new file mode 100644 index 0000000000000000000000000000000000000000..06804849b8331ed8be3d1ae089311ae58ea79c83 --- /dev/null +++ b/web/themes/seven/images/classy/icons/text-x-generic.png @@ -0,0 +1,4 @@ +�PNG + +��� IHDR�����������7����tEXtSoftware�Adobe ImageReadyq�e<���~IDAT(S��� �0E3�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/web/themes/seven/images/classy/icons/text-x-script.png b/web/themes/seven/images/classy/icons/text-x-script.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ecca813882ad9d8f3509464e2d8ac017910b81 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/video-x-generic.png b/web/themes/seven/images/classy/icons/video-x-generic.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b71f95d9e1a5bf86d90a1272bf4f9ae44fcb71 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/x-office-document.png b/web/themes/seven/images/classy/icons/x-office-document.png new file mode 100644 index 0000000000000000000000000000000000000000..40db538fcb71e1f46147a717cdf7134c4e74a239 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/x-office-presentation.png b/web/themes/seven/images/classy/icons/x-office-presentation.png new file mode 100644 index 0000000000000000000000000000000000000000..fb119e5ba91dd5141e07aad5229754cd06401c99 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/classy/icons/x-office-spreadsheet.png b/web/themes/seven/images/classy/icons/x-office-spreadsheet.png new file mode 100644 index 0000000000000000000000000000000000000000..9af7b61ea11fb8bd71c0b5c6506a2101d5c1f714 --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/images/feed.svg b/web/themes/seven/images/feed.svg new file mode 100644 index 0000000000000000000000000000000000000000..595a9d9ab0d19202db8788f4de2e5858ed2b2404 --- /dev/null +++ b/web/themes/seven/images/feed.svg @@ -0,0 +1,8 @@ +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"> + <rect fill="#ff9900" width="16" height="16" x="0" y="0" rx="3" ry="3"/> + <g fill="#ffffff"> + <circle cx="4.25" cy="11.812" r="1.5"/> + <path d="M10,13.312H7.875c0-2.83-2.295-5.125-5.125-5.125l0,0V6.062C6.754,6.062,10,9.308,10,13.312z"/> + <path d="M11.5,13.312c0-4.833-3.917-8.75-8.75-8.75V2.375c6.041,0,10.937,4.896,10.937,10.937H11.5z"/> + </g> +</svg> diff --git a/web/themes/seven/images/help.png b/web/themes/seven/images/help.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc5cac7956f6e1d0733695af8db4cffcef90d84 --- /dev/null +++ b/web/themes/seven/images/help.png @@ -0,0 +1,5 @@ +�PNG + +��� IHDR�����������a����IDATxڥ�= +�@�s��#HN�#��"mnb�2G����-��,�B���^�B2���}��ܝ������VY�iP4��+(�k���b*��1;�d�&�Z�E��RY��-�aԸ=�� +���- ��-5�}/���-���a!�q� �b������c��m5�3:9�NP�q@����:@b�d{���A�����D�3�Ag$�u;ٜ�Q�y#m��rl�t쫛O��B䃪 t�����IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/icons/004875/twistie-down.svg b/web/themes/seven/images/icons/004875/twistie-down.svg new file mode 100644 index 0000000000000000000000000000000000000000..6cd6a786bbbec522474409f47f7e0d444b0f3b01 --- /dev/null +++ b/web/themes/seven/images/icons/004875/twistie-down.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#004875" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg> diff --git a/web/themes/seven/images/icons/004875/twistie-up.svg b/web/themes/seven/images/icons/004875/twistie-up.svg new file mode 100644 index 0000000000000000000000000000000000000000..bf3b80ed01ebb6926d1c2622310ac01b995179d6 --- /dev/null +++ b/web/themes/seven/images/icons/004875/twistie-up.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#004875" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg> diff --git a/web/themes/seven/images/icons/0074bd/chevron-left.svg b/web/themes/seven/images/icons/0074bd/chevron-left.svg new file mode 100644 index 0000000000000000000000000000000000000000..122e1c09991a6c4ad3a0fb511a018107ff18aa32 --- /dev/null +++ b/web/themes/seven/images/icons/0074bd/chevron-left.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#0074bd" d="M7.951 7.645c-.193.196-.193.516 0 .71l3.258 3.29c.193.193.191.519-.002.709l-1.371 1.371c-.193.192-.512.191-.707 0l-5.335-5.371c-.194-.194-.194-.514 0-.708l5.335-5.369c.195-.195.514-.195.707-.001l1.371 1.371c.193.194.195.513.002.709l-3.258 3.289z"/></svg> diff --git a/web/themes/seven/images/icons/0074bd/chevron-right.svg b/web/themes/seven/images/icons/0074bd/chevron-right.svg new file mode 100644 index 0000000000000000000000000000000000000000..b16a8ce89d581648b8e560315a2c05100f159084 --- /dev/null +++ b/web/themes/seven/images/icons/0074bd/chevron-right.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#0074bd" d="M8.053 8.355c.193-.195.193-.517 0-.711l-3.26-3.289c-.193-.195-.192-.514.002-.709l1.371-1.371c.194-.194.512-.193.706.001l5.335 5.369c.195.195.195.515 0 .708l-5.335 5.37c-.194.192-.512.193-.706.002l-1.371-1.371c-.194-.195-.195-.514-.002-.709l3.26-3.29z"/></svg> diff --git a/web/themes/seven/images/icons/008ee6/twistie-down.svg b/web/themes/seven/images/icons/008ee6/twistie-down.svg new file mode 100644 index 0000000000000000000000000000000000000000..23f6d9ac1b8bfe487bad1a5384bcdb5593e0a41f --- /dev/null +++ b/web/themes/seven/images/icons/008ee6/twistie-down.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#008ee6" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg> diff --git a/web/themes/seven/images/icons/008ee6/twistie-up.svg b/web/themes/seven/images/icons/008ee6/twistie-up.svg new file mode 100644 index 0000000000000000000000000000000000000000..dc9dd8e9f7d84f6d0cedd1aded9433517d0fb8c1 --- /dev/null +++ b/web/themes/seven/images/icons/008ee6/twistie-up.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#008ee6" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg> diff --git a/web/themes/seven/images/icons/333333/caret-down.svg b/web/themes/seven/images/icons/333333/caret-down.svg new file mode 100644 index 0000000000000000000000000000000000000000..4e48c8c9830036db493e5fb6ea15c568cc67ccef --- /dev/null +++ b/web/themes/seven/images/icons/333333/caret-down.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#333333" d="M3.8 5.4c-.165-.22-.075-.4.2-.4h8.002c.275 0 .365.18.199.4l-3.898 5.2c-.166.221-.436.221-.6 0l-3.903-5.2z"/></svg> diff --git a/web/themes/seven/images/icons/333333/grid.svg b/web/themes/seven/images/icons/333333/grid.svg new file mode 100644 index 0000000000000000000000000000000000000000..98ada644c6fd764f8dd6ae276766de080f86d509 --- /dev/null +++ b/web/themes/seven/images/icons/333333/grid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#333333" d="M10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5v-3A1.5 1.5 0 0 1 10.5 9zm-8 0h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5v-3A1.5 1.5 0 0 1 2.5 9zm8-8h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5v-3A1.5 1.5 0 0 1 10.5 1zm-8 0h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5v-3A1.5 1.5 0 0 1 2.5 1z"/></svg> diff --git a/web/themes/seven/images/icons/333333/table.svg b/web/themes/seven/images/icons/333333/table.svg new file mode 100644 index 0000000000000000000000000000000000000000..502bf1c142dd7ba41b6f0b4f14c78eaac3422d17 --- /dev/null +++ b/web/themes/seven/images/icons/333333/table.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#333333" d="M7 15a1.5 1.5 0 0 1 0-3h7a1.5 1.5 0 0 1 0 3H7zm-4.5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM7 9.5a1.5 1.5 0 0 1 0-3h7a1.5 1.5 0 0 1 0 3H7zm-4.5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM7 4a1.5 1.5 0 0 1 0-3h7a1.5 1.5 0 0 1 0 3H7zM2.5 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"/></svg> diff --git a/web/themes/seven/images/icons/73b355/check.svg b/web/themes/seven/images/icons/73b355/check.svg new file mode 100644 index 0000000000000000000000000000000000000000..566cbc4c8e861890f47ea648f843511c68e38305 --- /dev/null +++ b/web/themes/seven/images/icons/73b355/check.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#73b355"><path d="M6.464 13.676c-.194.194-.513.194-.707 0l-4.96-4.955c-.194-.193-.194-.513 0-.707l1.405-1.407c.194-.195.512-.195.707 0l2.849 2.848c.194.193.513.193.707 0l6.629-6.626c.195-.194.514-.194.707 0l1.404 1.404c.193.194.193.513 0 .707l-8.741 8.736z"/></svg> \ No newline at end of file diff --git a/web/themes/seven/images/icons/787878/ex.svg b/web/themes/seven/images/icons/787878/ex.svg new file mode 100644 index 0000000000000000000000000000000000000000..ca0d409dc5972dd461904a87ad39dd22f17a0b3e --- /dev/null +++ b/web/themes/seven/images/icons/787878/ex.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg> diff --git a/web/themes/seven/images/icons/787878/pencil.svg b/web/themes/seven/images/icons/787878/pencil.svg new file mode 100644 index 0000000000000000000000000000000000000000..ca821f305df714264bf02c301a437fd0df01582e --- /dev/null +++ b/web/themes/seven/images/icons/787878/pencil.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z"/><rect fill="#787878" x="5.129" y="3.8" transform="matrix(-.707 -.707 .707 -.707 6.189 20.064)" width="4.243" height="9.899"/><path fill="#787878" d="M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z"/></g></svg> diff --git a/web/themes/seven/images/icons/bebebe/chevron-disc-left.svg b/web/themes/seven/images/icons/bebebe/chevron-disc-left.svg new file mode 100644 index 0000000000000000000000000000000000000000..70cf58c40f75fdb6b84a66bdea025ea62f739a9d --- /dev/null +++ b/web/themes/seven/images/icons/bebebe/chevron-disc-left.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M8.002 1c-3.868 0-7.002 3.133-7.002 7 0 3.865 3.134 7 7.002 7 3.865 0 7-3.135 7-7 0-3.867-3.135-7-7-7zm2.348 10.482l-.977.977c-.195.193-.514.193-.707 0l-4.108-4.105c-.194-.195-.194-.514 0-.708l4.108-4.105c.193-.194.512-.194.707 0l.979.977c.191.194.191.513 0 .707l-2.422 2.421c-.195.194-.195.515 0 .708l2.419 2.421c.196.19.196.512.001.707z"/></svg> diff --git a/web/themes/seven/images/icons/bebebe/chevron-disc-right.svg b/web/themes/seven/images/icons/bebebe/chevron-disc-right.svg new file mode 100644 index 0000000000000000000000000000000000000000..d026581793bd72e1b9799e04b7938aa1de6eb04a --- /dev/null +++ b/web/themes/seven/images/icons/bebebe/chevron-disc-right.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M8.002 1c-3.868 0-7.002 3.135-7.002 7 0 3.867 3.134 7 7.002 7 3.865 0 7-3.133 7-7 0-3.865-3.135-7-7-7zm3.441 7.357l-4.106 4.104c-.194.191-.514.191-.708 0l-.978-.979c-.194-.193-.194-.518 0-.707l2.423-2.421c.195-.195.195-.514 0-.708l-2.422-2.421c-.194-.194-.194-.513 0-.707l.977-.977c.194-.194.514-.194.708 0l4.106 4.108c.191.194.191.515 0 .708z"/></svg> diff --git a/web/themes/seven/images/icons/cccccc/clock.svg b/web/themes/seven/images/icons/cccccc/clock.svg new file mode 100644 index 0000000000000000000000000000000000000000..e51d3e01fea5a40990a4381605812e0bc11fa944 --- /dev/null +++ b/web/themes/seven/images/icons/cccccc/clock.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="42.659" height="46.603" viewBox="0 0 42.659 46.603"> + <path fill="#CCC" d="M24.15 3.73V0h-8v3.915C6.15 6.13 0 14.717 0 24.978 0 36.92 9.975 46.603 21.918 46.603s20.74-9.682 20.74-21.625c0-10.576-8.507-19.372-18.507-21.25zm7 24.072H17.83V11h5v12.802h8.32v4z"/> +</svg> diff --git a/web/themes/seven/images/icons/cccccc/database.svg b/web/themes/seven/images/icons/cccccc/database.svg new file mode 100644 index 0000000000000000000000000000000000000000..3351212de7192e4d9ddc380a87af0404d4364b96 --- /dev/null +++ b/web/themes/seven/images/icons/cccccc/database.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="38.847" height="44.262" viewBox="0 0 38.847 44.262"> + <path fill="#CCC" d="M19.745 0c5.74.123 12.272.953 16.9 4.668 1.865 1.498 2.786 3.91 1.597 6.126-1.255 2.34-4.13 3.733-6.518 4.6-5.63 2.04-12.113 2.38-18.014 1.573-2.92-.4-5.91-1.103-8.58-2.374C2.94 13.553.39 11.788.037 9.19c-.532-3.925 4.23-6.23 7.264-7.3C11.287.482 15.54.037 19.745 0c4.302.092-3.334.03 0 0z"/> + <path fill="#CCC" d="M6.76 17.5c3.702 1.427 7.65 1.972 11.6 2.09 4.058.12 8.107-.424 12.023-1.523 4.227-1.186 7.227-3.624 8.463-6.145v5.965c-.076.524-.197 1.028-.384 1.5-.718 1.81-2.594 2.974-4.235 3.848-4.293 2.286-9.5 3.04-14.31 3.083-4.803.043-9.902-.542-14.3-2.575-1.906-.88-3.9-2.02-4.988-3.887-.66-1.135-.626-2.21-.626-3.486v-4.38c1.232 2.64 3.94 4.422 6.757 5.51z"/> + <path fill="#CCC" d="M6.76 26.436c3.702 1.428 7.65 1.973 11.6 2.09 4.058.12 8.107-.423 12.023-1.522 4.227-1.186 7.227-3.624 8.463-6.145v5.964c-.076.524-.197 1.028-.384 1.5-.718 1.81-2.594 2.974-4.235 3.848-4.293 2.286-9.5 3.04-14.31 3.083-4.803.043-9.902-.542-14.3-2.575-1.906-.88-3.9-2.02-4.988-3.887-.66-1.135-.626-2.21-.626-3.486v-4.38c1.232 2.64 3.94 4.422 6.757 5.51z"/> + <path fill="#CCC" d="M6.76 35.374c3.702 1.428 7.65 1.973 11.6 2.09 4.058.12 8.107-.423 12.023-1.522 4.227-1.186 7.227-3.624 8.463-6.145v5.965c-.076.524-.197 1.028-.384 1.5-.718 1.81-2.594 2.974-4.235 3.848-4.293 2.286-9.5 3.04-14.31 3.083-4.803.043-9.902-.542-14.3-2.575-1.906-.88-3.9-2.02-4.988-3.887-.66-1.134-.626-2.21-.626-3.485v-4.38c1.232 2.64 3.94 4.422 6.757 5.51z"/> +</svg> diff --git a/web/themes/seven/images/icons/cccccc/php-logo.svg b/web/themes/seven/images/icons/cccccc/php-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..b039d24288f78a471ca52e98cabd15261f742aef --- /dev/null +++ b/web/themes/seven/images/icons/cccccc/php-logo.svg @@ -0,0 +1,7 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="66" height="33.447" viewBox="0 0 66 33.447"> + <g fill="#CCC"> + <path d="M49.5 12.255h-2.7l-1.473 7h2.4c1.59 0 2.773-.342 3.55-.94.78-.6 1.304-1.62 1.577-3.023.26-1.345.142-1.975-.357-2.528-.5-.553-1.498-.51-2.996-.51z"/> + <path d="M33 0C14.775 0 0 7.488 0 16.724s14.775 16.724 33 16.724 33-7.488 33-16.724S51.225 0 33 0zm-9.328 19.982c-.787.737-1.662 1.376-2.625 1.69-.963.313-2.19.583-3.68.583H13.99l-.935 5H9.11l3.52-18h7.584c2.28 0 3.946.34 4.992 1.537 1.046 1.197 1.36 2.74.944 4.885-.172.884-.462 1.628-.87 2.36-.413.732-.947 1.338-1.608 1.945zm11.51 2.273l1.558-8.124c.177-.91.112-1.29-.196-1.62-.308-.33-.962-.255-1.963-.255h-3.126l-2.016 10h-3.913l3.52-18h3.912l-.935 5h3.486c2.193 0 3.706.124 4.54.888.832.765 1.08 1.99.748 3.703l-1.637 8.41h-3.977zm21.747-6.708c-.173.884-.463 1.692-.872 2.424-.41.734-.944 1.404-1.605 2.01-.787.738-1.662 1.377-2.625 1.69-.963.314-2.19.584-3.68.584h-3.377l-.934 5h-3.944l3.518-18h7.584c2.282 0 3.946.34 4.992 1.537 1.046 1.2 1.36 2.61.943 4.757z"/> + <path d="M18.72 12.255h-2.703l-1.473 7h2.4c1.59 0 2.773-.342 3.552-.94.778-.6 1.303-1.62 1.576-3.023.26-1.345.142-1.975-.357-2.528-.5-.553-1.497-.51-2.996-.51z"/> + </g> +</svg> diff --git a/web/themes/seven/images/icons/cccccc/server.svg b/web/themes/seven/images/icons/cccccc/server.svg new file mode 100644 index 0000000000000000000000000000000000000000..1576b390d873e22ec9e5933145f4198babf1f94a --- /dev/null +++ b/web/themes/seven/images/icons/cccccc/server.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="44" height="34" viewBox="0 0 44 34"> + <path fill="#CCC" d="M29.98 7.018H7.17c-1.208 0-2.197-.748-2.197-2s.99-2 2.2-2h22.81c1.208 0 2.198.748 2.198 2s-.99 2-2.2 2zM37.61 7c-1.104 0-2-.895-2-2s.896-2 2-2 2 .895 2 2-.894 2-2 2zM0 0v10h44V0H0zM29.98 31.018H7.17c-1.208 0-2.197-.748-2.197-2s.99-2 2.2-2h22.81c1.208 0 2.198.748 2.198 2s-.99 2-2.2 2zM37.61 31c-1.104 0-2-.895-2-2s.896-2 2-2 2 .895 2 2-.894 2-2 2zM0 24v10h44V24H0zM29.98 19.018H7.17c-1.208 0-2.197-.748-2.197-2s.99-2 2.2-2h22.81c1.208 0 2.198.748 2.198 2s-.99 2-2.2 2zM37.61 19c-1.104 0-2-.895-2-2s.896-2 2-2 2 .895 2 2-.894 2-2 2zM0 12v10h44V12H0z"/> +</svg> diff --git a/web/themes/seven/images/icons/e29700/warning.svg b/web/themes/seven/images/icons/e29700/warning.svg new file mode 100644 index 0000000000000000000000000000000000000000..1498a41f4d7ec3466a0409f225eb5e9097ef9fd8 --- /dev/null +++ b/web/themes/seven/images/icons/e29700/warning.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#e29700"><path d="M14.66 12.316l-5.316-10.633c-.738-1.476-1.946-1.476-2.685 0l-5.317 10.633c-.738 1.477.008 2.684 1.658 2.684h10.002c1.65 0 2.396-1.207 1.658-2.684zm-7.66-8.316h2.002v5h-2.002v-5zm2.252 8.615c0 .344-.281.625-.625.625h-1.25c-.345 0-.626-.281-.626-.625v-1.239c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.239z"/></svg> \ No newline at end of file diff --git a/web/themes/seven/images/icons/e32700/error.svg b/web/themes/seven/images/icons/e32700/error.svg new file mode 100644 index 0000000000000000000000000000000000000000..151a1e67c929d1d8b01950224811c0a658e1aea9 --- /dev/null +++ b/web/themes/seven/images/icons/e32700/error.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#e32700"><path d="M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm4.025 9.284c.062.063.1.149.1.239 0 .091-.037.177-.1.24l-1.262 1.262c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-2.283-2.283-2.286 2.283c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-1.261-1.262c-.063-.062-.1-.148-.1-.24 0-.088.036-.176.1-.238l2.283-2.285-2.283-2.284c-.063-.064-.1-.15-.1-.24s.036-.176.1-.24l1.262-1.262c.063-.063.149-.1.24-.1.089 0 .176.036.24.1l2.285 2.284 2.283-2.284c.064-.063.15-.1.24-.1s.176.036.24.1l1.262 1.262c.062.063.1.149.1.24 0 .089-.037.176-.1.24l-2.283 2.284 2.283 2.284z"/></svg> diff --git a/web/themes/seven/images/icons/ee0000/ex.svg b/web/themes/seven/images/icons/ee0000/ex.svg new file mode 100644 index 0000000000000000000000000000000000000000..6b45a1d5726e5a305022173b9dd062b4bb375153 --- /dev/null +++ b/web/themes/seven/images/icons/ee0000/ex.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ee0000" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg> diff --git a/web/themes/seven/images/icons/ee0000/required.svg b/web/themes/seven/images/icons/ee0000/required.svg new file mode 100644 index 0000000000000000000000000000000000000000..f7882d6df9b941fe722f3e6921f122e39b11f20d --- /dev/null +++ b/web/themes/seven/images/icons/ee0000/required.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#EE0000" d="M0,7.562l1.114-3.438c2.565,0.906,4.43,1.688,5.59,2.35C6.398,3.553,6.237,1.544,6.22,0.447h3.511 c-0.05,1.597-0.234,3.6-0.558,6.003c1.664-0.838,3.566-1.613,5.714-2.325L16,7.562c-2.05,0.678-4.06,1.131-6.028,1.356 c0.984,0.856,2.372,2.381,4.166,4.575l-2.906,2.059c-0.935-1.274-2.041-3.009-3.316-5.206c-1.194,2.275-2.244,4.013-3.147,5.206 l-2.856-2.059c1.872-2.307,3.211-3.832,4.017-4.575C3.849,8.516,1.872,8.062,0,7.562"/></svg> diff --git a/web/themes/seven/images/icons/ffffff/ex.svg b/web/themes/seven/images/icons/ffffff/ex.svg new file mode 100644 index 0000000000000000000000000000000000000000..24c13610d9d56709524fd9fab8c1beea28b5148f --- /dev/null +++ b/web/themes/seven/images/icons/ffffff/ex.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ffffff" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg> diff --git a/web/themes/seven/images/loading-small.gif b/web/themes/seven/images/loading-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..5cbf6e7b75523144e46e36aba2d58263b767b93b --- /dev/null +++ b/web/themes/seven/images/loading-small.gif @@ -0,0 +1,25 @@ +GIF89a����������������������������Ž�����������������������{{{ssskkkcccZZZRRRJJJBBB:::111)))!!!������!�NETSCAPE2.0���!� +��,���������&��6Me��K,k��G8@q�h/MG�H:��%#��Gc�4�D2a�8��@@�p2�Hfz�H,%���x" +WrIix%pqX1*�=##���+�����������=���"���I�#3g�~��" �"�>�w� �� kX (_�S(�As}RTx �(�oBB4��x�Z %�q���!� +��,��������'��GQe���04k<��\�nU����6�d� 'U!�`D �%�Xe�U(2�H� `�%)2(* ��P���Eš b%K`1K:$2$��P�{�(�������������{"��#�)1��%�%�% +#��k +�{���"� �?&�*E ���vl�� ��[8�w+��!��!� +��,�������Ԡ'��WUe���a<k,VDQ��JG�7�G�`P6���YQ4 �Z�Cb4���A����Q���a^iU��M!��Q�C�X�#V + +n2��Q� +91�����+������1��q~�=��wx:{e+�" ��% ��"]�)�<�H�*9�H~�1x��%��"�t���!� +��,��������'��gYe���@k���ah<Z%V����D�e�HDf��!j�d)�X,�"�ϓ1 +�Fj�`:f�QE��dI�:{*+:k$ u�"��91>� �����>��� ��"��:�)E*�� )�%���#���� +�"�cI ���(�E�+{�����`��.�"��W��!� +��,�������۠'��w]e��ҲH뺉��*��S%Z���"�<b c"z$G��`8�6F����*>Q�0DG���ѨU,5q@0�E��sJ:}aL�G�9}����+��������#��}�%��W1*:"R)�L")�D��n�˺�9��R�;��ȶ#���Ϊ!��!� +��,������ߠ'�$�8����6p����Q�x��%N�� +y<R���l" ��BQHddz��b��`�*�!MLj�����옵�F=�{2~5^|t ��"������9���5��"��"�*�~��$ �* 2���5 d# +���"d���� �� + +�oI �5����Uc��pK ��!� +��,��������'���ae��Uk,bP �ަ��u�G큫L.��D"��&��D4a0ȒE2�.ȍ��h0&b҅+��v9ȕQI�,JfEsHR2$bv�#>#��{� + +���2 +�������H������#���"�#��$�"0* *�+%{\" �%����*��NUȷ�����LQ����!� +��,��������'���ee���4Yk��b&��ܴ8� ��x,�lh&8��DRQ���Q4g��5�A)q_�&��d�TBP�@UF2A1�*;$F$ s� m1�"������J������$��,+:+��% y% * + + m��#� +�%� "�� ��" U����^�å�A!��; \ No newline at end of file diff --git a/web/themes/seven/images/logo/LICENSE.txt b/web/themes/seven/images/logo/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..414da578e863c6b58308adc5c91c73d554420924 --- /dev/null +++ b/web/themes/seven/images/logo/LICENSE.txt @@ -0,0 +1,3 @@ +The files in this directory are not covered by the GNU General Public License. +See https://www.drupal.org/about/media-kit/copyright-and-trademark for the +license terms of these Drupal brand materials. diff --git a/web/themes/seven/images/logo/drupal-logo.svg b/web/themes/seven/images/logo/drupal-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..bd2d4921a5662c720500bb425d436ba5c3477b0a --- /dev/null +++ b/web/themes/seven/images/logo/drupal-logo.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" class="drupal-logo" width="42.2" height="55.5" viewBox="0 0 42.2 55.5"> + <path fill="#cccccc" d="M29.8,11.7C25.9,7.9,22.2,4.2,21.1,0c-1.1,4.2-4.8,7.9-8.7,11.7C6.6,17.5,0,24.1,0,34c-0.3,11.6,9,21.3,20.6,21.5 s21.3-9,21.5-20.6c0-0.3,0-0.6,0-0.9C42.2,24.1,35.6,17.5,29.8,11.7z M10.8,35.9c-0.6,0.8-1.2,1.7-1.6,2.6 c-0.1,0.1-0.2,0.3-0.4,0.3H8.7c-0.5,0-1-0.9-1-0.9l0,0c-0.1-0.2-0.3-0.5-0.4-0.7L7.2,37C5.9,34.2,7,30.3,7,30.3l0,0 c0.5-1.9,1.4-3.8,2.5-5.4c0.7-1,1.5-2,2.3-3l1,1l4.7,4.8c0.2,0.2,0.2,0.5,0,0.7l-4.9,5.5l0,0L10.8,35.9z M21.3,49.7 c-4,0-7.3-3.3-7.2-7.3c0-1.8,0.7-3.5,1.8-4.8c1.5-1.8,3.4-3.6,5.5-6c2.4,2.6,4,4.3,5.5,6.3c0.1,0.1,0.2,0.3,0.3,0.5 c0.8,1.2,1.3,2.6,1.3,4.1C28.6,46.5,25.3,49.7,21.3,49.7C21.3,49.7,21.3,49.7,21.3,49.7z M35,38.1L35,38.1 c-0.1,0.3-0.4,0.5-0.7,0.6h-0.1c-0.3-0.1-0.5-0.3-0.7-0.5l0,0c-1.3-1.9-2.7-3.7-4.3-5.3l-1.9-2l-6.4-6.6c-1.3-1.2-2.6-2.6-3.8-3.9 c0-0.1-0.1-0.1-0.1-0.1c-0.2-0.3-0.4-0.6-0.5-1c0-0.1,0-0.1,0-0.2c-0.2-1.1,0.2-2.2,1-3c1.2-1.2,2.5-2.5,3.7-3.8 c1.3,1.4,2.7,2.8,4.1,4.2l0,0c2.8,2.6,5.3,5.5,7.6,8.6c1.9,2.7,2.9,5.8,2.9,9.1C35.6,35.4,35.4,36.8,35,38.1z"/> +</svg> diff --git a/web/themes/seven/images/menu-collapsed-rtl.png b/web/themes/seven/images/menu-collapsed-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8d0b8823a90704b3743f980108b8a7d914193c --- /dev/null +++ b/web/themes/seven/images/menu-collapsed-rtl.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR�����������Ő���PLTE������U��~���tRNS�@��f���IDATc�``R`r`��� B|�O�����IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/menu-collapsed.png b/web/themes/seven/images/menu-collapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..91f3fd40ede024798b6de5ea2675bb692a3cfa95 --- /dev/null +++ b/web/themes/seven/images/menu-collapsed.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR�����������Ő���PLTE������U��~���tRNS�@��f���IDATcV`�@)ff�|�̷������IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/menu-expanded.png b/web/themes/seven/images/menu-expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..46f39ecb351cff65243fa9a614a69d039e1302a5 --- /dev/null +++ b/web/themes/seven/images/menu-expanded.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR�����������Ő���PLTE������U��~���tRNS�@��f���IDATx�c��P�`� �������������IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/no-thumbnail.png b/web/themes/seven/images/no-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..926c5314eccfeb16e76a3594b927cb5e6af3be4f --- /dev/null +++ b/web/themes/seven/images/no-thumbnail.png @@ -0,0 +1,26 @@ +�PNG + +��� IHDR����������J�6����sRGB������PIDATx��Eu��&�����G�� �q8TBB` �ZEz|�R[Km߈�(J������5$�65��=�P�lР��ӐI?��Ο���og�7���?�{Ξ��s��;߹3;;3;;l�{��r3cƌQ���;�|Ç_s�=��8O��[ +?��w�#z��/� Mܽ����(Kl�E�O��(Z%B�f;�Vdd��)\0(lF�9s��0֚��/��,���8Mx��K��!x���\�`��:�o�K��$����)\*�h�>�&�e��&���e"��p�Jx�8c����V���2i��(MA�rU/��-��#/��Agqc\(9�la��===��J�E ��B�N�"�¢e˖m�'��,~M��T�S�0���J B���n�����.&���YPذ��kA��� B��[[�] F衤*T�{o�нۂ�|�W<�y�}�R:�#��$LGr�)(��C�(��a����Q_d1�c��F��ZajY�����}��jr2ŦiXP�F"P���XM�x1�i6���:�Hm�k�C,9r�ܾ���Bx�<�����Ι��Wf���B�=��e��L����d^���Ӄ��O?��L\���F� +c�Q��0���$n&��%.Tn���`����!���q��j��fZ�V8((�Z��*��$4crvGc�y'O�|��ݻ�`譌5<��P�7 ��2�,��[�����2�v|�{`@�Id�! t�-�a1gB>�]� +m��&�e�@M����K��];���\O�صkW��ƼKD-�1|;��6G,���"#6}���P��q���Ph ��5.`DDkV6�0W�u�q����AW�"�(��"�(�@J����(zz빸^�.�w��Iq�m4o/����Pc�� ��P~_e��L�2�"{��%�K�}[�U27�~���M��d+�jx���7�XŤ߆�s۱�%�AC�{������ă��<��[��F���l��\p�*짌-2�j±�m�5X�[�v����!�e�Xƶ ͬa4����F[Bα�AA_���x��S�� �sJ�� s���̳O���q���� ��OX�� ���1��"��^����x�}���ba��%Th���2�R��d�E_`���(��RrӦM;�����J�5i]�Z�}�������F����m��uQHc�w��6X��P�7���2��1fQBK�}[��а�ea2�[�#�F�'�����k�c��.!#��d4��;���(�5ؤ�+.�ƾo2:���9 ��b���\<i����F#tp��H� +nj�|��N/�(||.z�o.�4(��%�G� �ǻJח>�h�S<KE��$��6��[U2�exf�e!�=�\e`E��w�u�l�h�}���a���-�-�� ��O��ͽ�ڮ�>�JWE@PE@PE@PE@P�^�����"kp��M��2��Mɒw��Ur��O�ei:4^++�@�0P�|��,L'�� W��?�9�1��ǢU�z�dD;4@<�s�5jy�_�31�,LF��tjF�v��laU��,묦�lip���S^i�~���Y%2��/K��k� �L@ﱈ�h�M�:���;w>`t�\��'�L~�~� ;^r.�Ń;�4S.�y ~V��)��6KX���yz����������ݫh& +���ip=;d�L�z���H��=���W\7��<E�s�<v���p�h�m��K�������Av�������%'����5�ڋ��L�9hIH��qyaT�������{�u����'�� H[ʒ̣���z3g������&L�t��m6-&\g�ytL��� +�\H��/��� ��ׁY��'��!���%5h���oqA2iҤQ.؍��4Z#��{5�.;����L܄'7 ˖���G_��D��E�Q��V@�'���t��|\�{�����-2��:D�<��j����g���x�l� ��.�6��^i� +�&�L)�ve����.������H�Wu~�N!��B�w#��+�:�RS�,v�l:p����F�����Eax� g6�����Ƀ#[��mT{<[2�?'����}M�I�l����u� h1�C��d��W��wڙNn0�j�ުh�ϻ��~��9����4<h�_����v^:�Q��i-��K1��������Q����vhc1@x��O]W +rMԢ����vh��jd�����`�MO���f���'��IR��th_hf.&�C�G�xr� ��:����z�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"��D��k�Xw�B'^���7�f���k�M�I���}ꩧ�f&�����菌5꜕+W��]Y��w�l��Trȹ� +L�4�V���:�n\e��~I�����c�:� +�x����Nf4ӵ �>�z�~9[���N;�m۶�/����g��3�ҝ��T�x���^"{����]�bņ�T<�h������K�9{ �~�]w���y��O�u�֟�p��������o��I��i*>����]��d���Y�|s|��(6�'��LQ��q^��^�b��E�y���+3�,R=�Z=�:�r�7���I�d����Wȿ��e&���N[j�h���-@�^� h! ��)�J���6�1X��u7rP���8�Fm����������by{�k���Z��YN?�m���B�r���}9 ?M!?��������GJ�?�A�y�Ì�|������M������R��wif�+y[��@/Z��!�Edn?=% �O��E����}B�ض�g�����HBR�3o���@�}O���^���䟺��e|�d>�cWo^��{����\�'��<`rO�����:���+�/��fƵ=�OL)=�G��:%�����R�S��m{��߭@;\���Ѯ��<�aϗ3�Yت�no��I ��{��^ �jêg1��抄d �78l(Dr$ '��= ˞uA g� +vz�n\�3��=*'{�����Ӗ�ㅧ���=�,�ﱳ�;Ml8%��um��)�e���1�A��x�1-u�i�L4��[h������$�����U�VU��`�'_��h����ou��&�.�p ����9_V\�Z�^O�I�II�F�K�xj�������a�.��b�ȧ�ʳ�=��e�� ��0����$@�^͋\h�{\�H��^W�"�>Þh��`иq�6V�ȑ��bdߨ�G�h��^W��g ��M[Vx�ݱcG���3�8� 2�ؓ�c�fg�����]����P�ht<�׃��iU�lٲɕ�����_���<��UE��I���8��Q&��.�]�`��or!�|�ו�`�6c*���B%�+��˗g���o�,4?T�?���xV��ػ���B�$@ӆ�6U}UA[ �� 럻��ƽ�EO@sٛ���h<�>GF+B�"d]��7l�ܹ#]�D����s"���$@�ˏ|q.:��Bj��]qЎ`���f{���c���'WJ�s��(��=���� ��Sk�ĵM��Y�O;���+�_;y���$1)��3bذ����rO�hr�NO~�������r��^\�%�O[��B��{���;t�/ OtГ��=���DoRl�y� +����Lؙ�p�Ȼ�Y�p��ʇms�pR��̙���=^� a��b�L�လ�6��]�|�d�ҒVQ�����+a��WE�^L��)x&,_��1;}aWS���ё��%���ι625������t�L���!���A��o�T ':��~�a���qF���yp.��%#gv�q�\]}��M�1���˅K�k�G�����'��Ǯ/"����M�xF�kZ�ĵ{�E�.�-�Ls�O�d~ߥ��[9%��v�V�x��t�(���y�v�y�d�S�mWG��Qc���6nܸv�ĉO��s]���G}�0�߂?*�5 9�Y��<WB&�EA���V�G#��W��ͽ��K��~�m��e �#-���k��&���J#9'�L��9Lj���D�V���">Q��_b�^��� �]�}����h`� 0Ð���N\E���.�����.�Bc`��=��/�]:�ϛh~�+���]�d@��1Ht�J��m^�A�T�"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(�h̦`�2�I93g�<����ݗ��N�=����a����� +m����ߜ]����S~X�F�<��;����Qu��ɿ��,Y2��/� ς���uE=D%��m�5k֬eum�_��!.λx����Wpvt��*�����n����Q'�}֡Ł��ٛ��j��g!���X~-���i_v�}ʡg̘�g����R�o���6����!���BOO��˖-{� +��c�wh6C�����1��YG~ϣ�tS^��c} ��r�?z�����?�ö�Sy1��O�/���?�^&�?���/��Z���M�S�W��W�v M���NaW�2����8ɷ���M��-��������p� ���F���˟�ׯ_6/�o�땜R!�=���\ȟ|~خ�������0�'��+�B�#���la���r�U�T���o.��&<� ;vS9/��ߓڰ3:i�B��Ts�Eŕ�l�q?<~����s�(���x'�y���q�����̧+rUŴ�K6�:����@66/�q����/�+���E�^�S�O�c7X�,�QU@S��:AS���.��G^���������yYFlRO����\�bņT;-gH:4���"��qҤIo��]�]�����őo��8,�'�\��,�!���8��M��G���<��W� �LE~��Ñ��?|�p:i������%nO�c�ړl�8��)S&3n� +�&D(�u��d��˳��3/�r��#��hi?c����}b��S����12�~�#�m�� +&-һ��!)���〷��ಢ2���|�o�&ڌy~��P���R������n5jԱ�V��M��M��|�2T�^*G~��ɩw�}����L�:u�Ν; ��2�,���+��]ck�CS���e�پ҃�|�V�$_�T*�A���đ/�4)��Ʊ���Ct�仐'߷Cx���X�������!���}��N �m2�B*�7#m\� +�y�����8v��#O��V�\)-{#�F:�,������>n�3��S7f�:��q��ɫt/�H��1�))ƌ�;���O,�Ώ̙3��� +T������vTI�3˄AH�q�رcO��,���ŭ���83��7П=8�3K�~�#�-e�%�"�S��Ƶ��cC �y��~��4�)Cpb���n!��U�yR�K�Zh�T��y;�ָ�º&0��Egf<�H��1� 0�¶q̘1�Z��.g%�2DXzD�S����j�y��%�5t�A�|�@)cCd}�u�d����d��kq��D�i��V�xZ��C�0��è�|�И�Q-4��d�o�A!�x(93-��]�3ҙ��#}D'�Y�\��B�!��Bd���JP"9�B�����6���_�1+7d���e�������Q �/ +�q���B���C�<ݷ��/��A�M�Ϻ��"���*�2�X*;��J%dh�C���B��C����3�Ǹ����#�Kt-���N�|�ʫN[�Շ�`'� tݳ��k�c�=Bcb��?�q�h�_�$g����Z^"�SG�Zha�#㥵�,q�G;R+=�w�~�=�؝�>���#��|��ȯ��r�`�^_8+/_tW�rh'-uh�x��u��E�jӦM�Ɣ�����4���qh�ή�A��F94�� ��休�{����<�S���_����:.B�,虆3�1"MWX3|KuKy�2u��QM�e8�2�R��b��e"��M��?+��#OJ��&�^��n��n���X_�"_ʫQG�^ +�yQ:�}��h���A�5۷o�=������#c��3��on��"+O�Z6�� n�ӳ �k��/;N�����!��2-L��=i����S7go�Z)Q���Xm��+��N�4 +y+�p/�0�r����K]j�$Ǹ!D.��-ӧO� ��R}"[$����0-��CՙG�3')�&.���0`�Eĥ����oq�u�֟��K:gގ�+Z��# +;�ai�8 +�{D��Op���Q))��f/�#ԑ�N~S�?�<��ylD^��3p��"�4��w���%C�Y�W��gi�����b�b~L�&��W�](���}9p����9x,��튃:��K�.��(���}9��'�.�[I���T8�张9wb���-łц<���4d�jC�����"_ac�����6���e���(�)ȷ�e��oU9Z�kb]�KZ��kJ�H�0���(�߄#�ǟ1�:� �9���hJ��ڑ}�x�!Cw���-V� U�����#���H�ބf���#����K�-��$9x�2FpݼC�ˑ������K)Hq�!}dO2Y8tFdFt�H����/��G��\�r�O����ꛢ3"$��8X��Z�� X��tC��`��C��͗��+�H��VJ���i��H��)lR��R���w�M&N����1{b��in������Z�6�MX����YG~���f��e���.>Ň��3���J}�*����R�k�м�����k� g̘tZCꗶ�Fe�jo�iR(d��C۠Ȧ�/~�WA��hx=v_�n�75u3�N��:t���_CW� +�S��M��۲��ٳgg_v�|��C����ɗ,Y2�V�B��,��4Yb� >���ɒ�o͚5k�:ok8ա[��2�>��g}4w��߱�?�<L��C{�p?�~�W��)kS�@[C�������mz(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(��"�(�0����>K�9����IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/noise-low.png b/web/themes/seven/images/noise-low.png new file mode 100644 index 0000000000000000000000000000000000000000..105bee165dac3e8bdfd39138fe2121078bee65d8 --- /dev/null +++ b/web/themes/seven/images/noise-low.png @@ -0,0 +1,30 @@ +�PNG + +��� IHDR�����������1|����PLTE����������������������������Q� ��� tRNS +Lw����IDATx^�7Wc����Sܥl0L)�K�RƄ)f��"S�<��I?��[?���{�2G���E�.��a���G��S�.ے)*1����kD���b=������:W�͑9��S0pv 3u({�9��ugd���� ��m�%�wT}$���Z�t\(����������/!�5eG�c~q3��k]�h�����91U!��0�ߣ�F�8�+��o�n�����Fʸ��M��H,'�ׇ>� ����ϔ�~/�h�\z�^�Q�+Z�Ā��� +l�P�oh��Ka-�c�R1��B�����k؊l�Ck��$R�K�Q� f����9<iy��T�r��Q5M1�z��3Tp��J�+�j�=cR�N���ۣ�7�i%��ox@c�ޯ�b�e��W�H\JC[����=����#�~�at:�&��|ڵ?�&lT��Uj���ǹ� i��]y���zchQ�L�W��q��m��M���Q�1����]�0q�R�p���E�f8YO���h�S�P���/��z�4�J?����14- @Q�#>?Kc~%M��u]T��`�W�&E�����y�va��=�Ӥ,��K��¼2�����J�q�;�G�d,� +u�Hj����Vu��fPp��n�f����X4����p�:k���$�5[�U�@j����<K=Ow:+���ct�K5[\���<6oج��|�j�����A��-#���?��"v�t�y�մ|� +ׅ7B�ӌ��XB�}�g���+����d�v��a�$�������A���R��P�KN���\@I���@�i��C*(h�)-Ԩ�ڥĻ��`2˪5o�)��U�c�$��>�,��vpPʁ�R?钕����� +-sS���.��K��t��������_�q�/+v�2�m�Z���N!ʪ���*�F@ה�n��:9����J1 j%��ɪ2�؊y\����U��XBڹ%�6{�h��J�X��J-�=l�cH�9�;�g7���b����U���ӌ2�����X77���4��@Z\C��+z�"�U��#���#ďi�����GǗ��.h��j�DV��\� ?�6�S ��Q���U"�J +tG�9kMZ�1����m�H���Gwޡ�;%%�C�ԢqfV>�������6UC��`��C:��l�æ`Ilr�hu3��F9�r��a�KI���U��f����r���`io5�I���W͒�Bj3����+^����9뱄��Ak��:c��6K�瞥��I"U�����E�P֖�\�z(�)=����C�!��s��_��|:ѐ'Us���8��м�\����=&.a�g0x���mGGH� +Ph�(u�K�;R�[!�fn�M��JU��b�����u)2nQ��Va����4{�n��<o��F�6m�������y�Lݴl�G!-K�Wl��7o.��\YQ�̕�����Wb�V|O7@�����N��r�8�5��6Ձn�V#�t��s��߳���!OC,��hgR2���3F���RV�c��l19���T�@�"/O{���k�)����i���q�=*^�S����T��aOˍЕ/�W�`�Z�Z���젩~i +�e�;`W��bB�0@G��XYi%�_V�"����<W��/s;eB�!G�\��@�㲣?5r��1A��K���k�e�N�o�����ס��1���~�Y�)p�oBN\ +}�H����H.�� D��Vȥv�M��W ��#_��Ƌ�b�$��_�����1��B �ʞ+� �R�>�<6�ɶ�����0�f0 ��%�UP55A�O|b���e,��k��j�U՟#Pкjj¹=Ξ�n�{3e.�����J|���R���[���z2�$�E�!���6���ę�Չ�p���X�Gt��7�օ��I��\��ߩ��T�E�j�s��m=���k��!R8Uċ�@M#��`ᱜ;gZ��r�X������܀�Po�:p�x��+\�BJ�8Z ���G�K� ���=�f1�9��I�$��h-}%���LJ ���b~!��4@C��/��l���͈W�Af����Pm�k�"������MZ��X +:�YP����B��y~?Z)�yC�Z-�a����G��C=��UO� NÜ]�?�-F��f��o!�d�湻#��¶dž��_��,1ݼ��Q-����>9=!YEH�Qّ0e�8MzE��f'�p�5;� 3� +������8�oSxO< e��}�)x]T� N�`Ѱ + N��@%f���;��� �"���t@3b�h�q��ޤ�+��9ϴ?�5��d�4O9�$�Pݡ$�t�QÈ��&�[�b��Q:6��M�ʌ�)t+\ �_˔gJ�&k��~~^9L ]~��ڰ�T��s����Z��S�$�OG�C��nym����h��u��}0��ԥP$�v����(_���=r���aa��;.���mH�E��7�M�Z�<H8��x��0��d�I����F�H +�*Py�� :�.�?�H�b%G>ʗ���{�;o�#fc'8�$3ؤ�{z=�9�vj +̣m�B̺�4�����`Mv8���)�}�TlS[2�|3K�|>��5��N�BC�2j����ƿ!�j �����#1--4����Fv]oi(���&�Qـc��c��e�C����9�u�L��3⫯�_8/��C� RbcG� �OY�����D~+'�B1ly3�⎦�v=�A��G�/@��{{��ڙ�E'�Bk���|�蹢Th�GK/��ג/��N��f*W��<k�b���=�Ƿ +S���%�+�T>랜-�M�j��6�+6�טx�i,M� e�r;�טw�.5�8NJ��ﵲ�����5��m9�c��Q�H���p���v��yt��FW߱h�L�-���Bሌ�"G ��ӊ4I�+���C��-�.��X�����-"@���7�NI����!p�Zu�} bC�^8�(LQw�N�� �q,w\�*gc^y���@/ �2��e�r���(��/�bKh��<X����|�L9�����%Y��4�P�@g�踴�K�??���%� 89v��.x������:B����A݊T�&�Q�|]Z�������P�:E���ޒ�]p�Rs�K� +BDp�����C��90��y��X.%/�K�a��a�Q&3�͝=Z��,�(�/��,jb������1����X�؛�V`�!t�ܠ��͜�n��54��o����v�j):��n�'���7zQإ4^v��6Bc���&�v2ކPTf-ҙ0F0I2H5� +�Y��)�#.L��AK=��=��3�P]�W�u���&�$�<`�Y��o��� V{ ~��t�++?�%��@���l�q,�Ō�Ê�9m;��Uu�� !��|�A��a�g"�"h��wq�Ƀ��rJ}t�%ř:�+*�} +�8B��6�B��s��İ��c�|��2���Zg�*Yx�u���*,�a�wW�"0l�/Пq�R��$���'�vT�F����soc�[�'����M���kPǜ/`w��hf���@G�/�:�k�PҮ�.���k�44��3����]�) �)(+4�;ww���H %�f�o��sk�<CLA�l�h���O�K���P�D3m�(�U@�l̂g�Γ� �8�.�Τi ���6C���z�5E�P{ldvqVɫ�W,:�����s� + W�tE}�x�����t��%�,�e�T���>��>��;�^�����q��U\ �P���zW* ����U��!얘����O@ ǝ�&�$@ԋ�)���|��$$:!D�<��N�@����*�u)zy������`���������m^�eG?�D�Yƣ��W3�M����Z��U6��s�n�3��^]��L�#�9�^{�k�g�bo����OT��\��"\�p�XK?�[O�O�_�h��v����^8<)��T� +骒��"G�z�.��Ui��_+���Wyl�=����a� y��ft;��}���V_㫶���|"wL���Wt���M��vB�={*��&뱘BZ"L�_a9��b��Q������-8'[|�ln�G��U��Xe}��L�T�}��a����jZ\4SVS\�=�D�Yx�Y2y��0��P�1�ߺ/�h�{'1�r�m���� �� +����U��7?#�NrZ���Z��* +�����mM `�����sBX�m��A��Y.�c`1�mm.-P��"�{{��71���� �r�|EY�Mq+b=`�^_�!P�o�k� �G���h�X?�'3��V�y[��e�s�J-d�����8@��g�f����u���=�7d-�K1�Ml��`�<�����V.h��ib(U�����t��ЮUo��s���[v�@s�lvq�{��Da���mP}��v.<�[��D���fF��� +J�%+�{����^�Rv��Th4`�Μi +(@�tz�u�d���R���)��ԗr���\$kw7�Ă���Fg-��}x���K!�cы��[k�����C�B�r0�)���8{���}����b_��M>��t��+ҁ+A���V��r h��}$SV0=�M���^._-d��I7���*G���fQz�X�X����7��J�s����2<�ܧ�!V����Q��X�X7dc�%�t���䣚D���Z�f� +��i8��';P[�(t1��4�k���w6��2��3� +��@9���N������ ���?Mbx���vz�8"��&؆n��v��yRg��} ��Z��|�V���_�5�� 0�"`��_+8�Na+�i��1I'T�J�\�DkL�w����@B�<���w�{�� �Q�����yZ�� ��|�)����\��n)��?)B� +'?[s�����jh���-0���F����IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/ui-icons-222222-256x240.png b/web/themes/seven/images/ui-icons-222222-256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9606f7614c8bd5d0b9b147e47f719c90598070 --- /dev/null +++ b/web/themes/seven/images/ui-icons-222222-256x240.png @@ -0,0 +1,28 @@ +�PNG + +��� IHDR�����������IJ�����PLTE"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""]�����NtRNS�2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$� +��b���lߝF>n~�hh�H����IDATx^���0E����8av��߄44�z�,͗lKV���'�4MQ_?��u9�(RP�1�� +`2��/�@�A�:��d�� +@s�x����X.�����^@�к�R����]�B<ñ��To�CT|",��5�;���vc�_���i��i��M��"��T����}@�B�P��(6��'��7�j�<�<� P!_1���ݍ+��҈���R>e*�Mw~�;�k@?���i��i�y\j��0�x��I8�>X��}6�ݱ�:������� Y����㗈�XAr�b�?n�q��N� ��8@vffsv�����U~1��8�É���t!�C`�\СC˾�U�Ex�~L6M�4M�\�Y*\@�/f���j���d#�����I�Pi���!n0���]H����&-VTL@��u��@���bw�)E�PA�;�� +c=����P���o50B�J��N� {�e���aw����n��:s���?a�O�$-�i��"(в$�!�<GY�x�D���·��4M�4Mø�"?��0^Ⱥ9d�: +|*�?e��SF:������N��ˬ� +HLN�F��$��0e�!�Ҥ��}>N�1��/r�+�Iߑ���ΰ5�0���#�v<���f{h��w��= +��������`���*!X1�h���^q��$1f��sK�4M�l�ƛO�����O���`���4�m�|۫�V���֑��c���8�����s��9��m0�������8�xV�KH�Q�J��wE�r�n��W��w���{�����)k����l�Mk��u�?�)�������Z�ǽ�a�p������i��O;g�ܶqE�����AE�����S)um7M�� �֮�q��{�ǩ��-$%,�|��s��s��ba/��.�G�)iK��8W�$܃>�>��J�W�,~L�H��Ș`��)˜�6�@�Ĕ�d���T�_���Y� +��"K�_aCxB�0`z�+6(��} +d` �����@�S�&�T���Ȳ����|>J�X���N�� d�b~����HU�9�$��4���{��b� ��5Im�����n�@��ET�xpF�f9�� @�,�8g� +=��ʲL�V��Ǖ0����E�h4��F���b���f9�n�R7�x����zWڍ�@O��P�'2ɴ����B-1�A <~��d�Y�ϼ�A�x�T3*XŒb�e��~t�fq�Y�AL�:��IMTrY���?��$49��'��� +�)`\�@�z�������8=��e��g +2�L��M���� q��@���}U�����f�8�� ��O��Ni@�����O��{�)5L�۳Ʌ���KY��=�SHUU&�[�8,rl�3��=zWmz��#,��=��EQ\AK �J8��SM1G:���?P-�?XīÉ�����A�W�7�����L��*�P�e{�� +�*u��S�S�+N9�� �I�jL�������Z<��.�����w E��tu���羭vԸ��H��SQ9�����{��$�0��)]�x]:�}�/��z�V�i:���`�_P��W�|���"�w��A� ��O&������q�s��|�����#�`ڛ�q�_�2I�+B��;�ty�\�L�Y��^/ +�4_>?��7k=c��Bm�e�[�t,��LWT�q_��@rNB ���U>� �z�D��Z�?q����۩4��E�N���{1%n����p��g�X�H�ź2��e��u��%�~�����y�O�s�ߊ������o������IP�@��J� +��C����}�7v:���r����_&�[��#o�SkU�y�*H�~M�� +*K��V�l|�j�q�?)V9��6!λ;E �݆��W���vG +n�K+^���� +��߰�,�ׯ�ׯ�H.� +*��� �X�ڡ�1�O�`�rvJ�W��d�4�����{j�w��{�H���_d5�:�{2�v�A���:���b�,��t�b���Q*��)1�^E�=��5�Sxә��^���.�6�9����y�r�rɡ����4�\�q���п,V5�VG�s{{{A��{~q���a>�dX.g�Y�_���b�=���,<�N�������K�I���� x�d�@��~�\�$y��U�HG@+K���ӯLQ��Yؓm�D�dѐ��g�Di`��#IG8ՀW@�1^99hG���D@w�J���������ɮ�j�IrrqωWNn�����<���=����;������5?����Z�H�Vs�2�o�TD�M1`��p�-�-����*��L�ن�f�%�c��Z�R[�g�b�P�/�4ͻ���RЭv���m�~��i�l��j�n�*0�N�;ӂ�o@ɚ2@[�<s�1��%C&)��Fx��9^[������ T���` ����$���l|=��6����/�M��� +Hhk̩��;n�zz��ު/�� ������%��&���OHl�{�b��r��E`����I�0�i��vJ�ޖP*��R��`DX<�9�P�w��8�ӡ2m����d�0�����@�C@0.�t���[[����`���[{��z\�y���������0�?���Sp����}�Y.�7P(������)+�+ދU�ʘ8�ge}-q<�ޗzf%����8d{��O�|��f=�iB��Q����x�)*X8v���F�����l�83Nuw����������+B���௬�'c*Ic5�ry��m�<;|�m� Q����m�x�-t�����"�+j;�Vt����u����ڎ� }1���_�ㅔW�����?�j��c����@����X+1�?z=Ś�&րj} ���4����%����ԯ���%"?#u��?�l�FZ�eh�Hh���Ȑ��_������e�G@�^��7@%U��R�iCW� q� +X���{TU� �k��ETH�f�%� +����M͚�I�Ik%�MR�&=ި����^�}����˶'2�����T֎����������5l\����}��?�2����� +�Ȉu: $ѧ�PC`� +�YF覀P/x����tSi�����+����fV������/ +����!�?��3�`�I�����W� �wn`�od�����30�?��ss������IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/ui-icons-454545-256x240.png b/web/themes/seven/images/ui-icons-454545-256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..80cb644a58f9bb4d638d0d44b060caa8895ea48a --- /dev/null +++ b/web/themes/seven/images/ui-icons-454545-256x240.png @@ -0,0 +1,28 @@ +�PNG + +��� IHDR�����������IJ�����PLTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE�ڲ����NtRNS�2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$� +��b���lߝF>n~�hh�H����IDATx^���0E����8av��߄44�z�,͗lKV���'�4MQ_?��u9�(RP�1�� +`2��/�@�A�:��d�� +@s�x����X.�����^@�к�R����]�B<ñ��To�CT|",��5�;���vc�_���i��i��M��"��T����}@�B�P��(6��'��7�j�<�<� P!_1���ݍ+��҈���R>e*�Mw~�;�k@?���i��i�y\j��0�x��I8�>X��}6�ݱ�:������� Y����㗈�XAr�b�?n�q��N� ��8@vffsv�����U~1��8�É���t!�C`�\СC˾�U�Ex�~L6M�4M�\�Y*\@�/f���j���d#�����I�Pi���!n0���]H����&-VTL@��u��@���bw�)E�PA�;�� +c=����P���o50B�J��N� {�e���aw����n��:s���?a�O�$-�i��"(в$�!�<GY�x�D���·��4M�4Mø�"?��0^Ⱥ9d�: +|*�?e��SF:������N��ˬ� +HLN�F��$��0e�!�Ҥ��}>N�1��/r�+�Iߑ���ΰ5�0���#�v<���f{h��w��= +��������`���*!X1�h���^q��$1f��sK�4M�l�ƛO�����O���`���4�m�|۫�V���֑��c���8�����s��9��m0�������8�xV�KH�Q�J��wE�r�n��W��w���{�����)k����l�Mk��u�?�)�������Z�ǽ�a�p������i��O;g�ܶqE�����AE�����S)um7M�� �֮�q��{�ǩ��-$%,�|��s��s��ba/��.�G�)iK��8W�$܃>�>��J�W�,~L�H��Ș`��)˜�6�@�Ĕ�d���T�_���Y� +��"K�_aCxB�0`z�+6(��} +d` �����@�S�&�T���Ȳ����|>J�X���N�� d�b~����HU�9�$��4���{��b� ��5Im�����n�@��ET�xpF�f9�� @�,�8g� +=��ʲL�V��Ǖ0����E�h4��F���b���f9�n�R7�x����zWڍ�@O��P�'2ɴ����B-1�A <~��d�Y�ϼ�A�x�T3*XŒb�e��~t�fq�Y�AL�:��IMTrY���?��$49��'��� +�)`\�@�z�������8=��e��g +2�L��M���� q��@���}U�����f�8�� ��O��Ni@�����O��{�)5L�۳Ʌ���KY��=�SHUU&�[�8,rl�3��=zWmz��#,��=��EQ\AK �J8��SM1G:���?P-�?XīÉ�����A�W�7�����L��*�P�e{�� +�*u��S�S�+N9�� �I�jL�������Z<��.�����w E��tu���羭vԸ��H��SQ9�����{��$�0��)]�x]:�}�/��z�V�i:���`�_P��W�|���"�w��A� ��O&������q�s��|�����#�`ڛ�q�_�2I�+B��;�ty�\�L�Y��^/ +�4_>?��7k=c��Bm�e�[�t,��LWT�q_��@rNB ���U>� �z�D��Z�?q����۩4��E�N���{1%n����p��g�X�H�ź2��e��u��%�~�����y�O�s�ߊ������o������IP�@��J� +��C����}�7v:���r����_&�[��#o�SkU�y�*H�~M�� +*K��V�l|�j�q�?)V9��6!λ;E �݆��W���vG +n�K+^���� +��߰�,�ׯ�ׯ�H.� +*��� �X�ڡ�1�O�`�rvJ�W��d�4�����{j�w��{�H���_d5�:�{2�v�A���:���b�,��t�b���Q*��)1�^E�=��5�Sxә��^���.�6�9����y�r�rɡ����4�\�q���п,V5�VG�s{{{A��{~q���a>�dX.g�Y�_���b�=���,<�N�������K�I���� x�d�@��~�\�$y��U�HG@+K���ӯLQ��Yؓm�D�dѐ��g�Di`��#IG8ՀW@�1^99hG���D@w�J���������ɮ�j�IrrqωWNn�����<���=����;������5?����Z�H�Vs�2�o�TD�M1`��p�-�-����*��L�ن�f�%�c��Z�R[�g�b�P�/�4ͻ���RЭv���m�~��i�l��j�n�*0�N�;ӂ�o@ɚ2@[�<s�1��%C&)��Fx��9^[������ T���` ����$���l|=��6����/�M��� +Hhk̩��;n�zz��ު/�� ������%��&���OHl�{�b��r��E`����I�0�i��vJ�ޖP*��R��`DX<�9�P�w��8�ӡ2m����d�0�����@�C@0.�t���[[����`���[{��z\�y���������0�?���Sp����}�Y.�7P(������)+�+ދU�ʘ8�ge}-q<�ޗzf%����8d{��O�|��f=�iB��Q����x�)*X8v���F�����l�83Nuw����������+B���௬�'c*Ic5�ry��m�<;|�m� Q����m�x�-t�����"�+j;�Vt����u����ڎ� }1���_�ㅔW�����?�j��c����@����X+1�?z=Ś�&րj} ���4����%����ԯ���%"?#u��?�l�FZ�eh�Hh���Ȑ��_������e�G@�^��7@%U��R�iCW� q� +X���{TU� �k��ETH�f�%� +����M͚�I�Ik%�MR�&=ި����^�}����˶'2�����T֎����������5l\����}��?�2����� +�Ȉu: $ѧ�PC`� +�YF覀P/x����tSi�����+����fV������/ +����!�?��3�`�I�����W� �wn`�od�����30�?��ss������IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/ui-icons-800000-256x240.png b/web/themes/seven/images/ui-icons-800000-256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7bf106b2b4d07cc47d45f96fa3fb473c85e8ee17 --- /dev/null +++ b/web/themes/seven/images/ui-icons-800000-256x240.png @@ -0,0 +1,28 @@ +�PNG + +��� IHDR�����������IJ�����PLTE���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������j>����NtRNS�2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$� +��b���lߝF>n~�hh�H����IDATx^���0E����8av��߄44�z�,͗lKV���'�4MQ_?��u9�(RP�1�� +`2��/�@�A�:��d�� +@s�x����X.�����^@�к�R����]�B<ñ��To�CT|",��5�;���vc�_���i��i��M��"��T����}@�B�P��(6��'��7�j�<�<� P!_1���ݍ+��҈���R>e*�Mw~�;�k@?���i��i�y\j��0�x��I8�>X��}6�ݱ�:������� Y����㗈�XAr�b�?n�q��N� ��8@vffsv�����U~1��8�É���t!�C`�\СC˾�U�Ex�~L6M�4M�\�Y*\@�/f���j���d#�����I�Pi���!n0���]H����&-VTL@��u��@���bw�)E�PA�;�� +c=����P���o50B�J��N� {�e���aw����n��:s���?a�O�$-�i��"(в$�!�<GY�x�D���·��4M�4Mø�"?��0^Ⱥ9d�: +|*�?e��SF:������N��ˬ� +HLN�F��$��0e�!�Ҥ��}>N�1��/r�+�Iߑ���ΰ5�0���#�v<���f{h��w��= +��������`���*!X1�h���^q��$1f��sK�4M�l�ƛO�����O���`���4�m�|۫�V���֑��c���8�����s��9��m0�������8�xV�KH�Q�J��wE�r�n��W��w���{�����)k����l�Mk��u�?�)�������Z�ǽ�a�p������i��O;g�ܶqE�����AE�����S)um7M�� �֮�q��{�ǩ��-$%,�|��s��s��ba/��.�G�)iK��8W�$܃>�>��J�W�,~L�H��Ș`��)˜�6�@�Ĕ�d���T�_���Y� +��"K�_aCxB�0`z�+6(��} +d` �����@�S�&�T���Ȳ����|>J�X���N�� d�b~����HU�9�$��4���{��b� ��5Im�����n�@��ET�xpF�f9�� @�,�8g� +=��ʲL�V��Ǖ0����E�h4��F���b���f9�n�R7�x����zWڍ�@O��P�'2ɴ����B-1�A <~��d�Y�ϼ�A�x�T3*XŒb�e��~t�fq�Y�AL�:��IMTrY���?��$49��'��� +�)`\�@�z�������8=��e��g +2�L��M���� q��@���}U�����f�8�� ��O��Ni@�����O��{�)5L�۳Ʌ���KY��=�SHUU&�[�8,rl�3��=zWmz��#,��=��EQ\AK �J8��SM1G:���?P-�?XīÉ�����A�W�7�����L��*�P�e{�� +�*u��S�S�+N9�� �I�jL�������Z<��.�����w E��tu���羭vԸ��H��SQ9�����{��$�0��)]�x]:�}�/��z�V�i:���`�_P��W�|���"�w��A� ��O&������q�s��|�����#�`ڛ�q�_�2I�+B��;�ty�\�L�Y��^/ +�4_>?��7k=c��Bm�e�[�t,��LWT�q_��@rNB ���U>� �z�D��Z�?q����۩4��E�N���{1%n����p��g�X�H�ź2��e��u��%�~�����y�O�s�ߊ������o������IP�@��J� +��C����}�7v:���r����_&�[��#o�SkU�y�*H�~M�� +*K��V�l|�j�q�?)V9��6!λ;E �݆��W���vG +n�K+^���� +��߰�,�ׯ�ׯ�H.� +*��� �X�ڡ�1�O�`�rvJ�W��d�4�����{j�w��{�H���_d5�:�{2�v�A���:���b�,��t�b���Q*��)1�^E�=��5�Sxә��^���.�6�9����y�r�rɡ����4�\�q���п,V5�VG�s{{{A��{~q���a>�dX.g�Y�_���b�=���,<�N�������K�I���� x�d�@��~�\�$y��U�HG@+K���ӯLQ��Yؓm�D�dѐ��g�Di`��#IG8ՀW@�1^99hG���D@w�J���������ɮ�j�IrrqωWNn�����<���=����;������5?����Z�H�Vs�2�o�TD�M1`��p�-�-����*��L�ن�f�%�c��Z�R[�g�b�P�/�4ͻ���RЭv���m�~��i�l��j�n�*0�N�;ӂ�o@ɚ2@[�<s�1��%C&)��Fx��9^[������ T���` ����$���l|=��6����/�M��� +Hhk̩��;n�zz��ު/�� ������%��&���OHl�{�b��r��E`����I�0�i��vJ�ޖP*��R��`DX<�9�P�w��8�ӡ2m����d�0�����@�C@0.�t���[[����`���[{��z\�y���������0�?���Sp����}�Y.�7P(������)+�+ދU�ʘ8�ge}-q<�ޗzf%����8d{��O�|��f=�iB��Q����x�)*X8v���F�����l�83Nuw����������+B���௬�'c*Ic5�ry��m�<;|�m� Q����m�x�-t�����"�+j;�Vt����u����ڎ� }1���_�ㅔW�����?�j��c����@����X+1�?z=Ś�&րj} ���4����%����ԯ���%"?#u��?�l�FZ�eh�Hh���Ȑ��_������e�G@�^��7@%U��R�iCW� q� +X���{TU� �k��ETH�f�%� +����M͚�I�Ik%�MR�&=ި����^�}����˶'2�����T֎����������5l\����}��?�2����� +�Ȉu: $ѧ�PC`� +�YF覀P/x����tSi�����+����fV������/ +����!�?��3�`�I�����W� �wn`�od�����30�?��ss������IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/ui-icons-888888-256x240.png b/web/themes/seven/images/ui-icons-888888-256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..8373712d13cf55efd105966a905ccd64cb4c5f59 --- /dev/null +++ b/web/themes/seven/images/ui-icons-888888-256x240.png @@ -0,0 +1,28 @@ +�PNG + +��� IHDR�����������IJ�����PLTE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{���NtRNS�2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$� +��b���lߝF>n~�hh�H����IDATx^���0E����8av��߄44�z�,͗lKV���'�4MQ_?��u9�(RP�1�� +`2��/�@�A�:��d�� +@s�x����X.�����^@�к�R����]�B<ñ��To�CT|",��5�;���vc�_���i��i��M��"��T����}@�B�P��(6��'��7�j�<�<� P!_1���ݍ+��҈���R>e*�Mw~�;�k@?���i��i�y\j��0�x��I8�>X��}6�ݱ�:������� Y����㗈�XAr�b�?n�q��N� ��8@vffsv�����U~1��8�É���t!�C`�\СC˾�U�Ex�~L6M�4M�\�Y*\@�/f���j���d#�����I�Pi���!n0���]H����&-VTL@��u��@���bw�)E�PA�;�� +c=����P���o50B�J��N� {�e���aw����n��:s���?a�O�$-�i��"(в$�!�<GY�x�D���·��4M�4Mø�"?��0^Ⱥ9d�: +|*�?e��SF:������N��ˬ� +HLN�F��$��0e�!�Ҥ��}>N�1��/r�+�Iߑ���ΰ5�0���#�v<���f{h��w��= +��������`���*!X1�h���^q��$1f��sK�4M�l�ƛO�����O���`���4�m�|۫�V���֑��c���8�����s��9��m0�������8�xV�KH�Q�J��wE�r�n��W��w���{�����)k����l�Mk��u�?�)�������Z�ǽ�a�p������i��O;g�ܶqE�����AE�����S)um7M�� �֮�q��{�ǩ��-$%,�|��s��s��ba/��.�G�)iK��8W�$܃>�>��J�W�,~L�H��Ș`��)˜�6�@�Ĕ�d���T�_���Y� +��"K�_aCxB�0`z�+6(��} +d` �����@�S�&�T���Ȳ����|>J�X���N�� d�b~����HU�9�$��4���{��b� ��5Im�����n�@��ET�xpF�f9�� @�,�8g� +=��ʲL�V��Ǖ0����E�h4��F���b���f9�n�R7�x����zWڍ�@O��P�'2ɴ����B-1�A <~��d�Y�ϼ�A�x�T3*XŒb�e��~t�fq�Y�AL�:��IMTrY���?��$49��'��� +�)`\�@�z�������8=��e��g +2�L��M���� q��@���}U�����f�8�� ��O��Ni@�����O��{�)5L�۳Ʌ���KY��=�SHUU&�[�8,rl�3��=zWmz��#,��=��EQ\AK �J8��SM1G:���?P-�?XīÉ�����A�W�7�����L��*�P�e{�� +�*u��S�S�+N9�� �I�jL�������Z<��.�����w E��tu���羭vԸ��H��SQ9�����{��$�0��)]�x]:�}�/��z�V�i:���`�_P��W�|���"�w��A� ��O&������q�s��|�����#�`ڛ�q�_�2I�+B��;�ty�\�L�Y��^/ +�4_>?��7k=c��Bm�e�[�t,��LWT�q_��@rNB ���U>� �z�D��Z�?q����۩4��E�N���{1%n����p��g�X�H�ź2��e��u��%�~�����y�O�s�ߊ������o������IP�@��J� +��C����}�7v:���r����_&�[��#o�SkU�y�*H�~M�� +*K��V�l|�j�q�?)V9��6!λ;E �݆��W���vG +n�K+^���� +��߰�,�ׯ�ׯ�H.� +*��� �X�ڡ�1�O�`�rvJ�W��d�4�����{j�w��{�H���_d5�:�{2�v�A���:���b�,��t�b���Q*��)1�^E�=��5�Sxә��^���.�6�9����y�r�rɡ����4�\�q���п,V5�VG�s{{{A��{~q���a>�dX.g�Y�_���b�=���,<�N�������K�I���� x�d�@��~�\�$y��U�HG@+K���ӯLQ��Yؓm�D�dѐ��g�Di`��#IG8ՀW@�1^99hG���D@w�J���������ɮ�j�IrrqωWNn�����<���=����;������5?����Z�H�Vs�2�o�TD�M1`��p�-�-����*��L�ن�f�%�c��Z�R[�g�b�P�/�4ͻ���RЭv���m�~��i�l��j�n�*0�N�;ӂ�o@ɚ2@[�<s�1��%C&)��Fx��9^[������ T���` ����$���l|=��6����/�M��� +Hhk̩��;n�zz��ު/�� ������%��&���OHl�{�b��r��E`����I�0�i��vJ�ޖP*��R��`DX<�9�P�w��8�ӡ2m����d�0�����@�C@0.�t���[[����`���[{��z\�y���������0�?���Sp����}�Y.�7P(������)+�+ދU�ʘ8�ge}-q<�ޗzf%����8d{��O�|��f=�iB��Q����x�)*X8v���F�����l�83Nuw����������+B���௬�'c*Ic5�ry��m�<;|�m� Q����m�x�-t�����"�+j;�Vt����u����ڎ� }1���_�ㅔW�����?�j��c����@����X+1�?z=Ś�&րj} ���4����%����ԯ���%"?#u��?�l�FZ�eh�Hh���Ȑ��_������e�G@�^��7@%U��R�iCW� q� +X���{TU� �k��ETH�f�%� +����M͚�I�Ik%�MR�&=ި����^�}����˶'2�����T֎����������5l\����}��?�2����� +�Ȉu: $ѧ�PC`� +�YF覀P/x����tSi�����+����fV������/ +����!�?��3�`�I�����W� �wn`�od�����30�?��ss������IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/images/ui-icons-ffffff-256x240.png b/web/themes/seven/images/ui-icons-ffffff-256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..3086869dad620762d287816748955140410fe815 --- /dev/null +++ b/web/themes/seven/images/ui-icons-ffffff-256x240.png @@ -0,0 +1,28 @@ +�PNG + +��� IHDR�����������IJ�����PLTE����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������NtRNS�2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$� +��b���lߝF>n~�hh�H����IDATx^���0E����8av��߄44�z�,͗lKV���'�4MQ_?��u9�(RP�1�� +`2��/�@�A�:��d�� +@s�x����X.�����^@�к�R����]�B<ñ��To�CT|",��5�;���vc�_���i��i��M��"��T����}@�B�P��(6��'��7�j�<�<� P!_1���ݍ+��҈���R>e*�Mw~�;�k@?���i��i�y\j��0�x��I8�>X��}6�ݱ�:������� Y����㗈�XAr�b�?n�q��N� ��8@vffsv�����U~1��8�É���t!�C`�\СC˾�U�Ex�~L6M�4M�\�Y*\@�/f���j���d#�����I�Pi���!n0���]H����&-VTL@��u��@���bw�)E�PA�;�� +c=����P���o50B�J��N� {�e���aw����n��:s���?a�O�$-�i��"(в$�!�<GY�x�D���·��4M�4Mø�"?��0^Ⱥ9d�: +|*�?e��SF:������N��ˬ� +HLN�F��$��0e�!�Ҥ��}>N�1��/r�+�Iߑ���ΰ5�0���#�v<���f{h��w��= +��������`���*!X1�h���^q��$1f��sK�4M�l�ƛO�����O���`���4�m�|۫�V���֑��c���8�����s��9��m0�������8�xV�KH�Q�J��wE�r�n��W��w���{�����)k����l�Mk��u�?�)�������Z�ǽ�a�p������i��O;g�ܶqE�����AE�����S)um7M�� �֮�q��{�ǩ��-$%,�|��s��s��ba/��.�G�)iK��8W�$܃>�>��J�W�,~L�H��Ș`��)˜�6�@�Ĕ�d���T�_���Y� +��"K�_aCxB�0`z�+6(��} +d` �����@�S�&�T���Ȳ����|>J�X���N�� d�b~����HU�9�$��4���{��b� ��5Im�����n�@��ET�xpF�f9�� @�,�8g� +=��ʲL�V��Ǖ0����E�h4��F���b���f9�n�R7�x����zWڍ�@O��P�'2ɴ����B-1�A <~��d�Y�ϼ�A�x�T3*XŒb�e��~t�fq�Y�AL�:��IMTrY���?��$49��'��� +�)`\�@�z�������8=��e��g +2�L��M���� q��@���}U�����f�8�� ��O��Ni@�����O��{�)5L�۳Ʌ���KY��=�SHUU&�[�8,rl�3��=zWmz��#,��=��EQ\AK �J8��SM1G:���?P-�?XīÉ�����A�W�7�����L��*�P�e{�� +�*u��S�S�+N9�� �I�jL�������Z<��.�����w E��tu���羭vԸ��H��SQ9�����{��$�0��)]�x]:�}�/��z�V�i:���`�_P��W�|���"�w��A� ��O&������q�s��|�����#�`ڛ�q�_�2I�+B��;�ty�\�L�Y��^/ +�4_>?��7k=c��Bm�e�[�t,��LWT�q_��@rNB ���U>� �z�D��Z�?q����۩4��E�N���{1%n����p��g�X�H�ź2��e��u��%�~�����y�O�s�ߊ������o������IP�@��J� +��C����}�7v:���r����_&�[��#o�SkU�y�*H�~M�� +*K��V�l|�j�q�?)V9��6!λ;E �݆��W���vG +n�K+^���� +��߰�,�ׯ�ׯ�H.� +*��� �X�ڡ�1�O�`�rvJ�W��d�4�����{j�w��{�H���_d5�:�{2�v�A���:���b�,��t�b���Q*��)1�^E�=��5�Sxә��^���.�6�9����y�r�rɡ����4�\�q���п,V5�VG�s{{{A��{~q���a>�dX.g�Y�_���b�=���,<�N�������K�I���� x�d�@��~�\�$y��U�HG@+K���ӯLQ��Yؓm�D�dѐ��g�Di`��#IG8ՀW@�1^99hG���D@w�J���������ɮ�j�IrrqωWNn�����<���=����;������5?����Z�H�Vs�2�o�TD�M1`��p�-�-����*��L�ن�f�%�c��Z�R[�g�b�P�/�4ͻ���RЭv���m�~��i�l��j�n�*0�N�;ӂ�o@ɚ2@[�<s�1��%C&)��Fx��9^[������ T���` ����$���l|=��6����/�M��� +Hhk̩��;n�zz��ު/�� ������%��&���OHl�{�b��r��E`����I�0�i��vJ�ޖP*��R��`DX<�9�P�w��8�ӡ2m����d�0�����@�C@0.�t���[[����`���[{��z\�y���������0�?���Sp����}�Y.�7P(������)+�+ދU�ʘ8�ge}-q<�ޗzf%����8d{��O�|��f=�iB��Q����x�)*X8v���F�����l�83Nuw����������+B���௬�'c*Ic5�ry��m�<;|�m� Q����m�x�-t�����"�+j;�Vt����u����ڎ� }1���_�ㅔW�����?�j��c����@����X+1�?z=Ś�&րj} ���4����%����ԯ���%"?#u��?�l�FZ�eh�Hh���Ȑ��_������e�G@�^��7@%U��R�iCW� q� +X���{TU� �k��ETH�f�%� +����M͚�I�Ik%�MR�&=ި����^�}����˶'2�����T֎����������5l\����}��?�2����� +�Ȉu: $ѧ�PC`� +�YF覀P/x����tSi�����+����fV������/ +����!�?��3�`�I�����W� �wn`�od�����30�?��ss������IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/js/classy/README.txt b/web/themes/seven/js/classy/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..efa01cfd103552923d092d7a8866ca13d056368b --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/js/classy/media_embed_ckeditor.theme.es6.js b/web/themes/seven/js/classy/media_embed_ckeditor.theme.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..a33d18ffcd3d531624b028b65ef8d4940369138e --- /dev/null +++ b/web/themes/seven/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/web/themes/seven/js/classy/media_embed_ckeditor.theme.js b/web/themes/seven/js/classy/media_embed_ckeditor.theme.js new file mode 100644 index 0000000000000000000000000000000000000000..19cc4ff77763ccdea8407959894cab4a7aa27c73 --- /dev/null +++ b/web/themes/seven/js/classy/media_embed_ckeditor.theme.js @@ -0,0 +1,10 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(Drupal => { + 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); \ No newline at end of file diff --git a/web/themes/seven/js/mobile.install.es6.js b/web/themes/seven/js/mobile.install.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..bfe40a42f3ad1520a32390fe4a9fa07727e66855 --- /dev/null +++ b/web/themes/seven/js/mobile.install.es6.js @@ -0,0 +1,29 @@ +(function () { + function findActiveStep(steps) { + for (let i = 0; i < steps.length; i++) { + if (steps[i].className === 'is-active') { + return i + 1; + } + } + // The final "Finished" step is never "active". + if (steps[steps.length - 1].className === 'done') { + return steps.length; + } + return 0; + } + + function installStepsSetup() { + const steps = document.querySelectorAll('.task-list li'); + if (steps.length) { + const header = document.querySelector('header[role="banner"]'); + const stepIndicator = document.createElement('div'); + stepIndicator.className = 'step-indicator'; + stepIndicator.innerHTML = `${findActiveStep(steps)}/${steps.length}`; + header.appendChild(stepIndicator); + } + } + + if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', installStepsSetup); + } +})(); diff --git a/web/themes/seven/js/mobile.install.js b/web/themes/seven/js/mobile.install.js new file mode 100644 index 0000000000000000000000000000000000000000..5f5a9758dce30ea23621464ee54c81c9a8758bdd --- /dev/null +++ b/web/themes/seven/js/mobile.install.js @@ -0,0 +1,38 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function () { + function findActiveStep(steps) { + for (let i = 0; i < steps.length; i++) { + if (steps[i].className === 'is-active') { + return i + 1; + } + } + + if (steps[steps.length - 1].className === 'done') { + return steps.length; + } + + return 0; + } + + function installStepsSetup() { + const steps = document.querySelectorAll('.task-list li'); + + if (steps.length) { + const header = document.querySelector('header[role="banner"]'); + const stepIndicator = document.createElement('div'); + stepIndicator.className = 'step-indicator'; + stepIndicator.innerHTML = `${findActiveStep(steps)}/${steps.length}`; + header.appendChild(stepIndicator); + } + } + + if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', installStepsSetup); + } +})(); \ No newline at end of file diff --git a/web/themes/seven/js/nav-tabs.es6.js b/web/themes/seven/js/nav-tabs.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..7393f35f2a9ea1263a1632bd6266ecd933318b1f --- /dev/null +++ b/web/themes/seven/js/nav-tabs.es6.js @@ -0,0 +1,51 @@ +/** + * @file + * Responsive navigation tabs. + * + * This also supports collapsible navigable is the 'is-collapsible' class is + * added to the main element, and a target element is included. + */ +(function ($, Drupal) { + function init(tab) { + const $tab = $(tab); + const $target = $tab.find('[data-drupal-nav-tabs-target]'); + const isCollapsible = $tab.hasClass('is-collapsible'); + + function openMenu(e) { + $target.toggleClass('is-open'); + } + + function handleResize(e) { + $tab.addClass('is-horizontal'); + const $tabs = $tab.find('.tabs'); + const isHorizontal = + $tabs.outerHeight() <= $tabs.find('.tabs__tab').outerHeight(); + $tab.toggleClass('is-horizontal', isHorizontal); + if (isCollapsible) { + $tab.toggleClass('is-collapse-enabled', !isHorizontal); + } + if (isHorizontal) { + $target.removeClass('is-open'); + } + } + + $tab.addClass('position-container is-horizontal-enabled'); + + $tab.on('click.tabs', '[data-drupal-nav-tabs-trigger]', openMenu); + $(window) + .on('resize.tabs', Drupal.debounce(handleResize, 150)) + .trigger('resize.tabs'); + } + + /** + * Initialize the tabs JS. + */ + Drupal.behaviors.navTabs = { + attach(context, settings) { + const notSmartPhone = window.matchMedia('(min-width: 300px)'); + if (notSmartPhone.matches) { + once('nav-tabs', '[data-drupal-nav-tabs]', context).forEach(init); + } + }, + }; +})(jQuery, Drupal); diff --git a/web/themes/seven/js/nav-tabs.js b/web/themes/seven/js/nav-tabs.js new file mode 100644 index 0000000000000000000000000000000000000000..d5f8cb9ecc1a168a95382ef5a3f4ccc4470101d7 --- /dev/null +++ b/web/themes/seven/js/nav-tabs.js @@ -0,0 +1,48 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function ($, Drupal) { + function init(tab) { + const $tab = $(tab); + const $target = $tab.find('[data-drupal-nav-tabs-target]'); + const isCollapsible = $tab.hasClass('is-collapsible'); + + function openMenu(e) { + $target.toggleClass('is-open'); + } + + function handleResize(e) { + $tab.addClass('is-horizontal'); + const $tabs = $tab.find('.tabs'); + const isHorizontal = $tabs.outerHeight() <= $tabs.find('.tabs__tab').outerHeight(); + $tab.toggleClass('is-horizontal', isHorizontal); + + if (isCollapsible) { + $tab.toggleClass('is-collapse-enabled', !isHorizontal); + } + + if (isHorizontal) { + $target.removeClass('is-open'); + } + } + + $tab.addClass('position-container is-horizontal-enabled'); + $tab.on('click.tabs', '[data-drupal-nav-tabs-trigger]', openMenu); + $(window).on('resize.tabs', Drupal.debounce(handleResize, 150)).trigger('resize.tabs'); + } + + Drupal.behaviors.navTabs = { + attach(context, settings) { + const notSmartPhone = window.matchMedia('(min-width: 300px)'); + + if (notSmartPhone.matches) { + once('nav-tabs', '[data-drupal-nav-tabs]', context).forEach(init); + } + } + + }; +})(jQuery, Drupal); \ No newline at end of file diff --git a/web/themes/seven/js/responsive-details.es6.js b/web/themes/seven/js/responsive-details.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..38140fb86bd9d6cb2ea162ed141ff69d70c2cf13 --- /dev/null +++ b/web/themes/seven/js/responsive-details.es6.js @@ -0,0 +1,51 @@ +/** + * @file + * Provides responsive behaviors to HTML details elements. + */ + +(function ($, Drupal) { + /** + * Initializes the responsive behaviors for details elements. + * + * @type {Drupal~behavior} + * + * @prop {Drupal~behaviorAttach} attach + * Attaches the responsive behavior to status report specific details elements. + */ + Drupal.behaviors.responsiveDetails = { + attach(context) { + const details = once('responsive-details', 'details', context); + + if (!details.length) { + return; + } + + const $details = $(details); + const $summaries = $details.find('> summary'); + + function detailsToggle(matches) { + if (matches) { + $details.attr('open', true); + $summaries.attr('aria-expanded', true); + $summaries.on('click.details-open', false); + } else { + // If user explicitly opened one, leave it alone. + const $notPressed = $details + .find('> summary[aria-pressed!=true]') + .attr('aria-expanded', false); + $notPressed.parent('details').attr('open', false); + // After resize, allow user to close previously opened details. + $summaries.off('.details-open'); + } + } + + function handleDetailsMQ(event) { + detailsToggle(event.matches); + } + + const mql = window.matchMedia('(min-width:48em)'); + mql.addListener(handleDetailsMQ); + detailsToggle(mql.matches); + }, + }; +})(jQuery, Drupal); diff --git a/web/themes/seven/js/responsive-details.js b/web/themes/seven/js/responsive-details.js new file mode 100644 index 0000000000000000000000000000000000000000..40d427b0a51b371c1ea0a9d3d8209716fbf96e5d --- /dev/null +++ b/web/themes/seven/js/responsive-details.js @@ -0,0 +1,42 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function ($, Drupal) { + Drupal.behaviors.responsiveDetails = { + attach(context) { + const details = once('responsive-details', 'details', context); + + if (!details.length) { + return; + } + + const $details = $(details); + const $summaries = $details.find('> summary'); + + function detailsToggle(matches) { + if (matches) { + $details.attr('open', true); + $summaries.attr('aria-expanded', true); + $summaries.on('click.details-open', false); + } else { + const $notPressed = $details.find('> summary[aria-pressed!=true]').attr('aria-expanded', false); + $notPressed.parent('details').attr('open', false); + $summaries.off('.details-open'); + } + } + + function handleDetailsMQ(event) { + detailsToggle(event.matches); + } + + const mql = window.matchMedia('(min-width:48em)'); + mql.addListener(handleDetailsMQ); + detailsToggle(mql.matches); + } + + }; +})(jQuery, Drupal); \ No newline at end of file diff --git a/web/themes/seven/logo.svg b/web/themes/seven/logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..ea5e76edb5774a411822d6a9a4b4e1c13033a741 --- /dev/null +++ b/web/themes/seven/logo.svg @@ -0,0 +1 @@ +<svg width="57" height="66" viewBox="471.5 467 57 66" xmlns="http://www.w3.org/2000/svg"><path opacity=".2" fill="#303030" d="M528.5 504.965c0 16.634-13.123 27.615-28.24 27.615-10.29 0-19.894-5.523-24.978-14.167l.605-.027c1.313 1.192 3.39 2.58 7.404 2.515 4.77-.064 5.645-.875 9.855-2.756 22.716-10.17 26.925-19.457 27.736-21.59s2.013-5.587.756-9.415a27.955 27.955 0 0 1-.54-1.808c-3.018-3.372-6.017-5.225-6.92-5.784-.14-.093-.29-.177-.43-.26l.44.26c2.01 1.247 14.314 8.782 14.314 25.417z"/><path fill="#fff" d="M509.09 518.507c1.006 0 2.077.065 2.83.568.756.503 1.193 1.63 1.445 2.263.25.634 0 1.006-.503 1.258-.438.25-.503.12-.94-.69-.44-.81-.82-1.63-3.01-1.63s-2.887.755-3.948 1.63c-1.062.876-1.443 1.193-1.825.69s-.253-1.006.437-1.63 1.825-1.63 2.888-2.077c1.06-.45 1.62-.383 2.625-.383zm-10.413 7.152c1.257 1.005 3.14 1.825 7.153 1.825 4.015 0 6.836-1.137 8.094-2.077.568-.438.82-.065.875.187.056.25.186.624-.252 1.07-.316.317-3.194 2.33-6.594 2.636-3.4.31-7.964.504-10.73-2.01-.438-.44-.316-1.07 0-1.323.317-.25.568-.438.94-.438.374.008.317.008.513.13z"/><path opacity=".2" fill="#aaa" d="M520.89 496.545c-.81 2.133-5.02 11.42-27.735 21.59-4.21 1.88-5.085 2.69-9.854 2.756-4.013.066-6.09-1.32-7.403-2.514l-.605.028h-.01c-2.393-4.042-3.78-8.783-3.78-13.952 0-7.852 2.97-13.654 6.287-17.687.11-.13.213-.26.325-.382a31.303 31.303 0 0 1 7.218-6.203.687.687 0 0 1 .112-.065c.42-.25.754-.447.987-.568 2.757-1.51 4.77-2.263 7.963-4.77.12-.092.242-.186.354-.288l.008-.01c.875-.754 1.64-1.76 2.18-3.4v-.008c.325-.97.567-2.16.716-3.65l.02.018c2.253 2.69 4.954 5.886 6.89 7.144.69.447 1.38.848 2.068 1.202l.3.15c2.243 1.126 4.507 1.945 6.807 3.333l.428.26c.903.56 3.902 2.412 6.92 5.784.12.475.298 1.07.54 1.807 1.274 3.837.073 7.292-.737 9.425z"/><path opacity=".5" fill="#333" d="M514.176 479.538c-3.26-2.077-6.464-2.887-9.603-4.955-1.938-1.267-4.64-4.47-6.893-7.162-.438 4.332-1.686 6.148-3.26 7.35-3.195 2.515-5.207 3.26-7.963 4.77-2.338 1.256-14.958 8.726-14.958 24.913 0 5.17 1.387 9.91 3.77 13.96 5.077 8.635 14.68 14.158 24.97 14.158 15.126 0 28.24-10.98 28.24-27.614 0-9.127-3.707-15.526-7.386-19.633-3.016-3.382-6.015-5.217-6.918-5.785zm7.627 7.34c4.117 5.15 6.213 11.23 6.213 18.077 0 3.968-.755 7.712-2.245 11.148a25.554 25.554 0 0 1-6.053 8.56c-5.15 4.806-12.062 7.45-19.475 7.45-3.67 0-7.265-.698-10.692-2.086a28.613 28.613 0 0 1-9.016-5.774c-5.532-5.225-8.57-12.257-8.57-19.8 0-6.716 2.18-12.695 6.483-17.753 3.288-3.865 6.836-6.007 8.196-6.743.67-.363 1.285-.69 1.89-.997 1.892-.97 3.68-1.89 6.14-3.818 1.312-.997 2.71-2.58 3.305-6.585 2.077 2.468 4.48 5.234 6.314 6.426 1.63 1.08 3.307 1.835 4.918 2.562 1.527.69 3.11 1.406 4.676 2.403l.056.037c4.62 2.84 7.06 5.896 7.86 6.892z"/><path opacity=".5" fill="#fff" d="M497.98 468.678c.874 2.58.753 3.893.753 4.452 0 .56-.307 2.077-1.313 2.832-.438.317-.568.568-.568.624 0 .25.568.438.568 1.006 0 .69-.317 2.077-3.642 5.393-3.325 3.316-8.103 6.278-11.8 8.103-3.698 1.826-5.468 1.686-5.97.81s.185-2.83 2.514-5.392l9.667-6.278 9.164-6.398.503-2.44"/><path fill="#fff" d="M497.98 468.613c-.57 4.145-1.826 5.393-3.512 6.715-2.83 2.133-5.588 3.446-6.212 3.763-1.63.82-7.535 4.08-10.608 8.784-.94 1.444 0 2.012.186 2.133.187.12 2.33.372 6.9-2.385 4.574-2.757 6.595-4.387 9.175-7.078 1.377-1.444 1.573-2.263 1.573-2.636 0-.438-.316-.624-.82-.754-.25-.065-.316-.187 0-.373.317-.186 1.622-.82 1.938-1.07.318-.25 1.827-1.257 1.882-2.887.065-1.63-.056-2.766-.503-4.21zm-14.112 45.628c.065-4.898 4.648-9.472 10.422-9.536 7.348-.065 12.424 7.283 16.13 7.208 3.14-.064 9.166-6.212 12.118-6.212 3.14 0 4.014 3.26 4.014 5.206 0 1.938-.623 5.458-2.133 7.656-1.51 2.198-2.44 3.008-4.2 2.888-2.264-.187-6.78-7.21-9.67-7.35-3.64-.12-11.547 7.6-17.75 7.6-3.763 0-4.9-.567-6.147-1.378-1.92-1.312-2.85-3.315-2.785-6.08z"/><text style="white-space:pre" x="477.531" y="481.527" fill="#333" font-family="Arial,sans-serif" font-size="11.5"> SEVEN</text><text style="white-space:pre" x="473.88" y="526.911" fill="#333" font-family="Arial,sans-serif" font-size="11.5">CONTRIB</text></svg> diff --git a/web/themes/seven/screenshot.png b/web/themes/seven/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..50b79ffd5966d96a261453fcf45b02b2bdc881f6 --- /dev/null +++ b/web/themes/seven/screenshot.png @@ -0,0 +1,156 @@ +�PNG + +��� IHDR��L�������[)���PLTE������������������������������������������������������������������������������������������������������������������������������������������������|yx���da`������������wtsYWW�����������䄁~lig��ޮ���������������um�����������茉�beivnh�����ҫ��������~}~ikq����������}uqop�����������~�������������Ѩ�������ܘ��uz������˙��lqx��ۍ�������ӛ�����svz�����z������������������w~�TPN���ݮ��������a�����[^d��������ǭ����������푕��������������������������R����������������LGD)'(�������_������秷�B�������������︽�(v��b������ˠ��ú�v�����p�d\V���6��I����N��j�DKS���o��rg^���lw�����X�p�������\fs�;��傦б������瞯�@@A125��|���eo~����Ʒ"���Q�ч��QXa���a�������恲� ~�s��-�Ƶ��������������˸�E6)���|��ȵ:�����O��:��s��"�������iUC��ɓo)9L���CTh'����qZ����;�s��$�q���tRNS��Ũ� ����IDATx���?��@�q������]�@�+E��ױTE�RAjp9p(�H$�FA1�589t��� 8�;���?�V-X�� �ܓ{�/�{��ڐ;-�6b'Ƅ0&�u0&�1��1!� m� aLh�`LcB�cB�>����Ƅ�Ͽ�ɶ-�$?��Bh���q���������Bͱ>&��d�e~� �{g"�m�� ����S��&Y�Y�/˲(�;jVU�b$�O�_P���D?�O�7.E�Bͱ>����Ψ�����������l }9&"蟥fj)�P��#|�0��Z97���e,�Gt�d@O�^:,l�v]{�?͘�G]S�������P�L{��b"^h8�R6/�ssv2�5��"Wۮk�(��|�Ao4�,J�(�>��Ao�����^��X�?�n�gQ��Q�kcz�S�!B��iU��h��'2_�IU��-�eXT�)�c�>1�J����*���ʪG&2h�n^�ߚ�aG�>�O��^��x���K�Z���䜑W0��<"}y���Ӂ+Û���ivL����~�P]��j��E����Y �SV�&r`��@��(���"�x�w��}@샧�����)ȾӊdH<�U%l���a֖NQ�b:S�$�%��ݯ�J��Ie��ee +-*8Y���g똀��欎�R����?{�u�@���TEyrȓ�I\�Tu�7�L$~��b*,ru�hi�yү:���1�8 �~�\�n�3��Z0z��il�1��O����,�E��D<�}Ӡ�~�O�9E������2$*�x�[���]�|\u��6��w�{�Z�)��� ��љtBڲs��b��\%�,i�ȹ��2/�2Y(�05�<�P��zݼ���d�:a�sey91m�e�T�ڪ�k��g�5|߲9�Ǥ�y'M�ĽIGeٍ� +��ָ�f�Ɣ{Ɍ.�N�dY0��b��n�ɂ[�-�`��v��j��K�\�I����]����S ^\:%0�����)��l�K�!�S���2���"�Y�:��d �3e&@,�(J3NE}��vƵ2�t��X5}o΄�bm��X��1�-C��[������O� OӼ@�zb�2�ۼ@׃ՔY��V���&Y`���Q��Gly���{��1�ͳ����i�6 �&&��ع��>�6����M8�cB��1!� m� aLh�`LcB�cB�>ڒ���!�]8Jj�����C�a}L�ߑ���<yO��/��xEjW���#������k��ٵ{V��8���|D���]||�Z��R����.�א��B�I)�*N�Д� $�%� ��@KZsuVL}�N*\�����O;} ��1�9�j3(���4�5������c������Hc�a����&�d�0-�c�j��I<�j�-���©�GN S�v�jFoPxx��`��NZ����4 +Hp�Hm��D���cy�۩ ����ƣ� +캷�B�մ��S�>��Tό�N��|�c��������Y��> ��a�4�R���?���u���H\w�.D�)���|f�-���q6��m�������\E�ō������\��}O/PE#�(�XIO���.F��5�q��s.�a1�����19>�ћaD�9���xgs$�p��S�����Z�'N*ҤIa�=�!�au^5�����W�~~� �,��� +[S���,�<��2�� %�Tk���;l�ݟ[�vZ��o��o��[�+�H{�'��!���0vhɰ�����İ�����İ�����İ���������$4b���_�i�C�> f�-�ɤ�k�� $��o����#�;��7\�Х"J�F�?�� �}�N]�v����#G�1���!q1��� +I�w��uZ�t����&�V&x�U5�i����`���x�'S���=P]n:z9�|�(A�U�>��t�m��'�3'-���Dz5kN+}��pb�=���te����xωWT�뤊���� +�� ̬J�9�t>4S�!A#�g�j�,�����ߐ��ܶט +Bp�n���\���;�+j�oZ�1��Ǎi��:ۧ��{QM2�s`��Ҙ�m���& gPH��Ś'^�1� 2�c�q�"�{����y�j"�f���9��a�ML�`vΰ�����oHq�q���6�?�LWN�T��4�N�t�� +Y�Ё�(��EI4v�I�PB=Z�B.���6!�'���r8|�o3���G��� ��v���k��(�0Q�����c�Q;Jh.�%�{Ť=rⰆ��A,�q��f�O��S�I�VOm�!�xM�%�Vw2n��4x��N�9 +��h.���D�S������0&´վc�E�g^dK���0�촸y%�SQ�0�6�8#[�����9,�g��-rL� +� �XV&2,����L�z$``�;�����E�I;p�t�l ?�ڇ�}�*���Bv�^o3���j +�T��aw6�����1��|Q����և��Ϙz�F��jS�X/bLXV.�'��hZٚ�{]��(�^ߠ���Wrj9�� sR�9ϫ�;a�n7�?��Ƌo��;H>�JNp�^��3�y��hޒ���-z&�|ofks^��B1٤y`D�ur�����&�z��ei����ӊ<����*m���s��L�_��&��!�o��1aS\S�, ���/�����J��g�'a +wg���pʿx�s=C���7�e��U��$'ߪs�������tJ�c�)ܞI��%���b�v=]�70L��^���=j݀�m���� ���Q-�Wy�����b�� La0���5�x���q#���{�ts�(澬��?��u窎SM!�t�*�!������)��l.7����P�*��?Mc�A@ !x�D� �� ���+� "#��s1"�`�������&�D��"LQa"L�i���$�A�c�l^��8�a�&�M��_���ѪmA7P��zQ�0���A���PP�B�&��9���S�w��b��:�b��@>��Zu↨��]�=���������ɓ�)��09��m&�Ȯ�;^���w0Q;ۗ]G���D��F��x���&�ٽ�}s�[�hp0<�9����p�ܙ��r`r`r`�"��FLLL_����ȁɁɁ�������k�0a_~�����r0! +�C�i�ӄX�o,� ��4�� l��6y�fDp��¦�l& +�}��q�w�;s��oD��/����r+��e���C�^��/�__� 1p��e/ +Z㣕ZX(��H�|!H��^��lT���ɾ+�W�D�7�L1�+6�d0���w���i� +�%��!G�?��)�/8��.`w{��z����x,���Ύ�LJa"a���Q��^�WDIi͵�{������2��*�-���,��ց� ���6�Hm&�hȷ0M3t/�h� +뎘�2�)Z�� �9��LV�J�(9/3n*�3��R-�%I_��I#��.?g��j��ќV���Y�a��C!�`����z"$^�'ln��y��0"H��u�H��|��sBUY���ޜ�[;���I����R�*����i�0� ߽�~� +p[#�|s¨�bTK�b��������鯢���ʡ|j�큸.,��eS=�VQ�yyq�ͨi�~_�j���v�0�0L�C'�d��37.���;V�ܔ��x�4j��_�U�)b�� %UK��3���f�x+v��$��ɋ�95�\��ŏ�bRͲ�}�y��i�����P�8m�@))Ao����T���!5�i�T_ͫ �@��"許�z,7M9+-ê\��.�i�Zʥ���&��a3}�(��. �b����qy<�a�:'w��u�L��K��렬�-�Tl(].�Æd�CneR���=i��(7�9LC��p,�{�PV����Q�`� ��]��>ʵ���d��|��O�ә�'G>`z.��Le^.��l<��.' [u�4 +��o�e�GƯCt}Z���{ȤZ�.{>�����\Z����ѲH�-�֎��|���8��tN�/b�&��yx�h��D�_X�K11�>�e�ڴ���p^ͫ�� 03`�e�aʹ� +̫MevZo�ь�����N?K./.�1�&v�4 �D�g�|98��ɥ�ҳ|���zLm�4c sr�K�z����N�5T��+ٙ��fR��^73��j��}13�9L�M��]��V�I�^��D��%��B.�&�.'���\$5!H�XnN(�b���ғ���I4�UJZ��M����4q�&D�3�/c�C+R0�56Ѣ�H �)�����읅,�N�pc��٥'-v�0Q��7���/։��D�N���<����~�#���X��z[��<ћ��, �.�?�#�C���ǡ��IEY�����˗��� |!>7��5xlB����c�0��R�A�<cqc�e��c'W6 ��(7�G����~�>�~9Q=_v���B��'�)g����ɾr`��0�g�� 6P��f��4c����~�x��ֆ�=�P?u�!��wa" +�#���7/�D.�ҍO�+����3��W0!�oo���#���{�ܞ"u���K��_l+������GSp N��A���宅�A岲�L,}b��cڪ�8�ܯ�R�n + +u]a-�QJ[胮<���@KyϖG� +(�e@xO`�/c�0 ̌d�� �Ő��l���c�����xnq>���C� ����w��w>=��q�NM�����32��?��e�/W��QF�O������!矄 { +�:����K��d�;�B�4a�} ���8�&@3?�r�2bXGb�(Z�7��t4�Ѯ\�8<fJ��3r�`��'h�@q�>�u0�[%�A�X9�Z@!�_L���`p��r%y}� �Qa���z��� p��4����~Hh +y/t�̍)��P��`J��{&�y�.I%�����������L�o�������m`������� +(�����/F���i�p���M����]m� �K3j���#��g��jG��!vR'��Т?�#�����ռ�!m��z�kh�`�Kjϗ��^�ى�&Z;S�ƛ��J Rŧd�� ᅖc��?�/��AA�>��[!�����ڃ��e$ς�^!��N��Q�Lj�j�eF����טf�+�|s� ��¿e>oǜ�K>��Di[^f��U��K*�V(�tb)~4�o/f�M?"L ��[�)ӕ��'J�e��=R����,��ivQ��ztp|)�0dGX�a9���~RE�k��RrpH��9+�M�X_����X!�}�ڨ�GXLb��3�U��)X�1��K��K�I>V_!f �$�Ks�� (����ތ�. �����Ƹ�9@�~��.�A7�ԉ�2��3 {!��y���-��o`�-0�#�c�z�Ն+z�|���eƠ����xWw�ʍ�j�5��I��]͔�Вy��b�).���:0מx��U�"5nU���)��MϮ,�Q�f���L���;��܃ȻV����iԲ�Vg�`M~��5g�m�Y9}X��I��I�9v"�����(�T��4Җ�f3��8�|�ј�w�HNܪsS��3^��]�9�d�O`v����y+�� �&,w��G'���3�LH�.��=�B�vLQ�������ߢ-��c��>U~���ڲ�Ф�n��5�">�<���h��T�! �$���O�[w}]~��P�p:Q����%5ժ�q��2�f�Ơ)&��3��V��6B�#Ǒh�r�dO������KKl�i�{�ù��;r/��5K�m�&�H)���!��ieQ���D�ޚ��%maXL+��f*��3�z��$?G����M]��I��g��Y��iI��˹�TZ>J�Z��p���eXs��i�3�H쉝L5[o6���"mqe4�Hl�\��r㾾1z��5[�a�J���!2��S_�4�aN�ᶎy��3g7o� +I�6H�r�3�������Y��R'2��n�B�V��>�6��u��&:�0�D�h�_��U ��z�vU� -Ik���~p��d�Dy����W���(����!��{6��>�k1L�vne�z:M�2� �^�-O�C��}q:?ۆ���|Lo���������E��6�h�P,�5��jK���������\v��iWIc���o߫��1��}W�[s~b4f�`����P.?�d#�'���6�J��N>jϼ1�*B�7�4s�m�(�ٍ95��>Q��ذl�K|� U+vϔ?X��Y�,��G�Sj��]�s��`+z�Ac�ŕƍ���q(��>���7.�xq�i�髠\0m ��87�t�ǘ�eK�GX5[ ���"0�~o|2��� Lum��H#0펠pQrq�Vā5 i�/{��*{�Ʊw���q����G����L�U��07��׳x�Cu�$�ֿ��W��b�Zס���y'�N�s��3�O������͚�?��Ə���I)��Z���C�cz�8oW�I�˂=�g�E�m����|�fF�r�Б���n �E�1y-n:��$i���h�������{}��J 0���/_����3���v�F)�[��I!��X?e���u݅2n(�_�oRO'e��2S�xP���2�>����/��z���-���ڢ;Q�����U�qd(�R��檾I�[�5�%�)#o|�홑ZH^��,}F���Ck��T.��<�[�&E��x���(�F'�A�UF�4ù�~��v��Y����F �8�����MՍUu��S�Q5]���9���Bc��8ӭuFV�GhK�R�;�J"o.K-�\cU��ޕ�%�>_�{v���abaUZi�l��*C���8����T+�#"+c�B�s���Luŵ�'���[����qc� +��S�0E�bX�E�/�+�K +�l]�0�L�(az&�&R�+�Q��B�k��rAQ�|yBѮ��o-��焖�e��1��J4����Y��n��������1Ect��)ef�H�S��)[9��t����ցU�~�S�Δ.k]�s�����A���*�A,(WI�㯇��Fv�h4�۟��}ؗ�/ދ/.��W�yΟ�s�Y,���(������ +�s�~���+F�܃�}$G,�����x�� +ޡ�Þ, ފqy�Y���Q���#�N�.����s��� c<�&_��y��I�9�� +M������&:�^�7��,_?T�)����Y��@��\@�� +�ϛ�}������y6GAZ�H����}��աxe5����ҘQO4$�Т���&����9J����!+���D���L��|�������@�_�����gdܜ�@���{�����Y9ff� �[1� ^���>)G��g�=L�m���`al�14���0b;i��_����"���"�������p4fe�rğX�@lr�J�v�߱�$|0�M� ��40�[%��\!��ߟ]�)��������GM�3(�����-Q��&��4��KD��λ� �1����Aj�L��������2���@U���$�� ���9q�W<A����L���۷��T�'��4͘���)�M3��D�����۾�B��/�L������D���G8���x����^�K�oc*$��a��Hbߡ��Ԇi#�j��b��A Mh�E���8��v + ��721��� +1�����B�y����?��?�3�>�f��2R. +]���O��'{s?mo� �_^�p����c�L�M��a��x0`�3)>@��2 =>�����O`��߽���� +�<X^T^�u#I�$��,p)��A�\��H�+@� +�s���^����s#�<�HNۼ��1I�]�/��rw\:)����T�/�l��n�qv�� >� ��163�`pX�7��'C?2L��N��|4�܈���� �+�#�<�g�y���I;�\ ��F�K �����Y�n�;�&����((A����Iy�oϊ Y@�XZ���q�0�g�, +I�O��J>(!�$O���$��<'�4���I���0 ��J��0�q��f�%���3�Ȥؒ�z�^[��yU_�))+Ilv�T�gL���7n��TS�E��T%����Qm� }��I��|N�K'������-�T:�Q�pW]��b(gU1�gݺ ���-��o� ����D��J�jR�V�;hU10�*u�E���JH�����B�� [��_��,,�,i�qc�����G� μ����t��3Ӫ�� ���/��IO^KIܞ�z��b]w�y��S6M�ن7�|"�b�ފ�"�zc���� +��V���Łͦ��Vf�����N��ulN�lC�W���<�hݎ�^�1�u�'�C{&��t�]���R��nKugNݷ��W\�e��������fE��5S��#����`�9�?Ӳ��q��$�J��#s{s#B�O��kޞY�:&����1{�5��{iU��5� +�=5V=�]21�le-�f��Z����k�+'���!�O}82te��pI��SD�}��L�pp�a0y�������2[X�����a:��g5�5���L凶+���W$ntʱ�Z������0�Sލ�L��3�&6g���\�m�H�!i���L]�I>]��78��!���ӝu��Uo{aՖlٔ��꽪�Ԗ;zY�bi��2�pnj4Tj)��U��QUg ��l���jg����:;R�s�>~�?&ܓ�KoV7DI��rnYu9�V�1l �>۠0դ�5�GJM%]q�[c���F]���=��a�b�v$�y���LP�T�f��#����t���=z�����<��MD�+�I�����0W�<��.��=<����4�����h�˱��f`�r�%6�Έ;m�Ԥ���N�[X��)��͏�a��)s�9�WR���Ts�M�&t������1Y���6��ԓN��rrē]Q? �+qb���m{,0�����^������*@� x���B��D�F�l�U����¡���h_��h�p0pD5@8K7���� +y?Xp�+.|`��fҾ9X*!�^��H���|��E�h���h|K�7��};%�˼���b�A�)�_�9?F�~t�{��� ��w��F�����CxӁ O`z�w��1ka�qx�x�=M.��1���� \J3H:]ڥcӡo"n�C�%�Lu�^h}�pH�@m�{�g�x�`����"���[���(`�M�L�4 +�b0S$a�����}q�S +\��0��:�y���ns*�u*nsx���8�i�f��֘r��((���m1Qa=�B�0�� �0S(`�L�Y��@Q�����o`�|�������$%�dM��0M4S0�h�.���~�=i��r�- +ΤM.6�lL�`��f5۴�CM}�����(���S��L��L�t_��!l�V��g5͘\��ڎ�;Վz���60ݹ��i��U��K甒����z���k�s��S���)~]aʙ��L��O�Ƚ��Ͻ��6]v�f������Ȼ\,8��n�j�?��~����T ��/&I_B�t�$��v�hV-]�w�x�m_7w2�{��Zǭw�?d6�����\�$P��H!LI.���^'uP���"*ƨ�/�?�6���7��BA�X +a�4т�HZ�/I���~ +*'�`\��$�k��)�;א��0������Vv�d�}���u�\�����jZ�ݴ�l]ռ��,���J�\1�+�Z�������#[ ԗ$\��ZZP��Eat]��s�x����w���3��^_�ҒKF��WI,LNb��,��F,L,L&.��֓�GD3N���o��X��F��P�o�������p�K~�_�蛈8���~��do��� l��U1�C��"2a��c�O_��c��+01��i�K�( ۡ���Br�k�̖4��Q��P�As1{&�v�.j.���� ��x�T4C9E�n �x3���9j�p<P�|�; ��(�p�PNr-L���# +D�����'c�� k$czh��P��c" �-�~x��S&)�����:��4)��~�� �/����<ʋ���!H��S�5�sUk��\Y +�,�T>Χ�A]�¼��2=�F,���rU�"<��ܳ�f��BS�Bʁ���|����.H�DHy��'n7\�� //��䖉�{6,���p~˺&1�5j��jj.#o�fT����6����lF^bA�����kywCB�*�5U�$;URX�u�W^��Fcw�I�_��_[�����g�ꚜE�p0E�)7�>�)N*�oPGHڎ�Jt�$�d-gR.�;;9m}��y���q�*����-2�$��[r�Z�V�S'Sm��zO䵊dYq������Q-!ޒ���+��ʒ�C�V��WƟ�x�$�1�є譥OBW���ek��%���znQbyN�Z��s1L�*mK�5)J��=� ++L�e��*�d(�^ڨ8��Y�)ZѰo�&�V)������k4��1��e`�Ś�o��c^dh����.jB�ʋGԅnX��7eE\)ߕ���s����M=z(����R��J:u.�����*d'^�q�r�nN0zt>)�;���S���ᆤF^[Gbz�s���t����I�n�+���M�������� x�M="��R��p'WS�����Q�5 �W+rڥ�&�� ���xg��Wt�v�F��Y�U +�t�I�Ҽ�'� ���?���{���}��}��� +���1��4C��ڠ�֔�c�ji��\{�6��Z~}�� +��toŪ=�)�S�,1���S���7��=�;=�M����K��u}+�ˋM�������'�Vow�w{;����~U��6�$���� +�)�u������ݒ�I���S<�4&F�߄��+����Jx�t,�O9�Z��Ps1�2����+5�G@����%UH��1��h6��SŖ;LO�9�US⯩��H�{��`�3���U��R��C���'ӆ}/��'/O�H��+:v>ue��3�$�B������3����������3�y*��ݹ��.�D�DŽ�. �Un���J\(�Q�ʗ +x7mQ�Zn��%���xE;|�2��fe����*w�ד̲�ڰ¥��e���|�uq�丝�*�/;�Y����rȵ0���pE3�X�j��w�`zm��Tt. 0=��d�ī��wV�� L�{К_��n�B�Jť;�g�'=5;zK`Qdj'1x���3Q4ĀX�w��#&��\v-�6��5�J愾�"�ܸ_&�8�K��D�������S��V(�4)���S����Q,i l&�'�Ӄ i!���@O�8��JqdI@��Y���'ƹ��Q�r�)0�b���j(Q��vi^���V��(1��n �E���$��l����%��R���p� �hs<��u'���z�x�h&v���߁��I�������+�#�H�/Bύ���P�4>E,>��*Ѝ�:���Ob(1���E�� �^�ȍ��˧Ho=�d�@��B���f�(��z�zN�.����,�|TfED��X$6f2̲c�o�Bҳ(�`)�3/�,��T��z\ M��1OR�?2j���rlL�^�4��|?2q8#EY珨�}�{;��� ��a"4y�i)b�A;N@H`1=4e��]6�͘M���\G��R�M�7�^j��{;���X���0�0�0}�_#&&&'�&�/��0� +��)�g������0�<L�c'��;���ab�|{�c7���3�0�5ba��ޙ�Eq�q��_��#,���I�e�e�oXN�O�OD@AA0⅊�x �(�U�x����5��Xm��5��i�75�6�M3���μ�{�fd��y���������D<Lj�n��|7�[Ҿb<#��I�9�m^* є�0�&�����E���<L?&^���aCD3�sE˩�]<L=�����UBN~ϠŰ����' 1�$�P<L=�I���L8w{����;Ox +�.�L� +"q��]'d4�����ùQS%���^�oI�-���6��G�+�(HYEwQZͮ�<L=� �F�kv;�e�M��65U��3�°�30�T�r60�XT�X��Yu�"�C��� +1���]{�N���}a��}u�ʖ�2uE���c�D��n}AhJ�$�ay�y��,e����koM���)�6���������N?�R��)�?�9����������w�()Y�bun�~|I��=��̃Fʮ���B���A�To���~}ƕ�{!|���"uj�x�z��Ч�y:#Ais-R:N��\c�ǻ����a�T����W�;��9x��;�w�i��]U������W������uJ�\W������M��Ɏ���������������R;�7_�����N���;�:�:%�����0�E�:�C��n��"i�p��������}��1� v��:��>d�?G��k�$�No�������5�l�8�n�L;���c6)2��̏Ttkח�:��!�YV��`�����>�zS��sa"gB�ggR.>��t�Nس{�]�5����`Pe��ݝ��æ?���q��]�ܮY�GN��x��wt��c��]���𗊦���HEuU|��N|��d3��=i����Iq�5�K���?S�a�Ba `gb2TL���kǻ�R�;���������,�մ��ǒ]��:��a��T���~����w����ϐ����_��ڪ��U��>\�%<���w���^S�UwR�����14}h<}����K/uj�x�z#�I�>7�> )"�S��~u�*f߁�����N1ޡ�TZ�7��B(��-�Tt�&��I9!�/�����)aҸ��':m�;���N̮Ҍ̰�V'�UT���eS�°�4��}G(N)=!���S�a"4A�-✿{��A��)Y�m��pF�͐� R�B�x�,��%�,��@!H����2�~�J���jՉ�'0i�y��J}t^���wH��Ϥ���ËHOK����C�� +�^DRa_&~���̴��O���V�Hrwg��y��gM����2f��<k�����a��ab�����T`��0�����/�~ޓ]�'���-,�<E��{���FyBC��D���)�<L�0L������`���/@Ca3@j 0���1g�x���1��� ��t��=�B�� ��� �2�l$�����Y�rR�4��. +`l�mn�h��A +-�u��^�x`���N()�RƝ��,\��Y+�a�ea��VG�9`�Q��0����h]J�v����BO?�`�P������؆kCGO��� ��P\��b���b��1j�' +�/*;�~�9�h}�Bg�P�;�X�xB6c�#3,#�Wt.Ntl0�_6��S,Za�_O��i��lZ�609�(�$X��I���E�����y�i���̵�a�ea�'�����{�[#"��\��Z9!��Ļ�ml=��r��R�mJ�\��veS\C@ +�#ڷ��,�%/���T�L�/ε'���Ug�ռ3i����@���nf�)9d:y�{ph��vH��*A�+���}6�0 ��f�E�ցc�gq�Q�>����#}�fi�l7/��w��`Q@��{�"�!mm�UD`�Ȁc�=�����y*~ n�bH���)�UY^��fJU ���0�|��A�へqh�+ƌ{0.����V���a�Ǖ�ʩ��)�`g=?-cr�7�c�"��z}��2[.�^��ڞT�1����������gfTc�b�nX��U��Ϝ��5��f�@�믦�f�TR���Ȑ�KBs64���� � V��(OA��&�q�v�D���J��q��y�t¢BE�w��@�-vc� "�G0��,�3-1�Ѝ�+�g]n�24=�A�-����� 5)U?��N�qF�ـ�Ѿ�bKM[9 ӑ��~7�7^L�f����}@�+�����q�����6g�z�rd��W2���!nW#��)����s�`�o�v[}v�Ի�2wc��&-�=���)��Y��>��s<[|��\ʴ���Wmc�n�Z�w��T0���*o�b(ԯx1b�Ͽ�����%��2����0t��w�����מV�v�rӵ8?L9�d��=��=�����xx�����K]���}x��7�Rk�=?i�<��Vr�\I���V3����z�W����A}�w0X�����潶��=�S�F`�̑�}��6O@���,L��i�*�*�<q��1YnNR|R��ʃi�98А�V /��L�3��]��-2 +Z\��i�Ub|q�ź�D��[�<�М�V1�������nY�4����en�U��\����eyK�cgXL�/$0�^9s�e>�ϰ�#�q��\d�h��炬9��c�3��ie�Ed-� m���H����XeazL`j�t"��W��*�L~���?!�m���5 :������~m���1@t�q +�iN�/�c�(�l�0�th��Yz�Np_�䴹~��t�d��BZ[�֙�c!����E3^��Ŋl��$��:]���b�� +�!;`T|?]Z{���h'X.t֠ѵX=W�O�[�� +'��z��+�N��t1�����x�I����&E/9m}3D��De�k�4��o���䌹�<�g0��Z�Y��r����ؚ���s�֨��f�k/��V]�I.�_+�-���Z��K״V���Z3l^ݖV)�z�z>�d�ݏ���@������,5�d��h����ܘۄ,��8|,�2�����E�f��}R��q���j�e������ښ=U����p������㈽`����"H����rHrn��\Z���2�^<jYbXS��(�K3��ۺ����=I�x;�>�a}{���C�Au����٠W9��Y| 0����'����b���ec7�}�uH�9 +4F��=�u}�1��a=ښ�y�KA� +���{����=����Vlm$�z� ��%�d�m5g��ٚC֟Ԕ\��݃��DR�w���vxI�[I��j�mGW5��������Jֱ�gk��Vr�H�A�b�&Z�3{��i��/��%�'Q=B� +ab(@�����^\�0c�tP1@�2L,k�q �eae_~��Ͽ�������EC�?���eX�ٝ�g�<�k1�$�܇��d����@�Q#��R����L�.��JL�HB�ZH�H�®(����@ ���L=����G9%I��m@Q�C,�MAFR�G;I�F$�8�K(�g��\��i�w����w��$E�,Y(c)�!�9��'� +����rk��U)uU9B���893�BYǩ��Rh��S���I�c��)x��`��sM$9xh�o L5�n�`�M*˚cki(4�a���*a2�l�� xX����A�>�oc��� +; ��K3Uc���!��M�I ��[�7gZ{�}�X8ӂQ���/ �l�̧9!I�l��s4h�1�1�����_���Aۖ2Q +�}8zB� MR=l�FVoC���4�������oJMG�V���0`��f$W���r�~� �J"QHcX������6M�� =����DF�sL�3� V*}�[�D:,�I�_u����yԄ,ϡ.�� �R��K�٢�9^X���S��B�<��$XK�+&$xnp �����V ����$E����ı����6m9[ 8N�x�VgnFϸ��`����Z�����"��-��^���i�'��ة��u]����E��G{Қ��� �+"�l%mȟ�]�p��1�=�_���Ԃ���Y�01Ѣ��E�~�� +�Q�Y+�����az�-Sn�" ׂ-��V]\Z��#�a��D�UՂ�[}�3gCH�a����le����'eL�ߚS���acZ�\���i�[d�n=��چs � �� 4v�,;=\AΥ�7,�^d��)>�)ƃ�Xp���Zx'x�Y�/�b�S�l��1��rr��w�Fr�ѕ1��c���5{��<�O��G�W"��W�O]�d �^#b�u�u{��1�3�*:�o�^)L7�<:��>;Oa��� (˛4�e��8�ʆ�+�Pҥ1niK���zJQ�6z�ŷ�5F;�Z&�Ƒ�S�3r��E�Y���9у�X:珥�#���5������;�����l9���&9�� r�-0;�����,(�X���q7l#�(��'�ŘSW����M p�dS���9Xuv���JO��h� �s�ޙe�r�N��-\$늍�/18�Z�M#ׂ�az�-S����W��9Hn���<t}�2e��k�e ���c��.��r��T�r�pcu��o���mܜ�M�;Pb��lV�-ގa�E��G�� �v�W�� ;u��LJ�f��*ɹ�6�@β���Aa�kV͞+��Nէ�����`�N�r&?��{�P�i���{��L7�sr�Ϡ�rV&��9�3A}&LG����u6���q8Mʛ�-R]X6��Eh��Co�s:�B��W,��%�d��Y�,�t��r2�7��ˏ�x�3������06(���p~���O�n �$�|�c�1m4jrtz��t�fض�xaT-Ɍ�|�,��9Z +P\�7�F�AK��Ӭ(�eah�9�Q�B�Ɔ���#7�0+�4�X�Q����gK�f�59��a��l�;gvyؒ��0'��$����%�S=�������8���҃��'!G�,�(��RBL��t��D���h�����8S<➌�āy2�K��ddI�`c�.1c�*nCr.)�V���ʠ�e�Y����ř��S]n�����q����w�r�]U�6]xYR�\�kn����%�p�D4T��p�o���j/�z��q +����zrZ��DR�e�6ǿ7�6�_�x�^!L�����7�n�L�5��`ʅ��m�ȽՕ�)����ט&���pV8� ��1��M`YD�:���a���&l;��E�s`:�vA��Q���i�Ŧ�.s0������a�a�`�(�ܵ|ˑm�C�k���k[����Ł����Q��6��ˆis�� �%�sFz���&�a�Zl��1�����������f�����d���?�f0-m=���L�e��?����ʢ�3]s����ن�>->"�Z���oEi�@��� ��(O�e,�f�U��0?��Y 2K �cS�,Y���72##{��dy�إ����K01x3����W�{Y�s�X��9@1@��X��X����~��R���Ѐ`@"�[u�%`���_㷞�y�BG��F��I�U_v^����C���b�p����i�Nt*t�i=�4}����]���9N�y:Pݝ����^�Y�З����6)�U0�o�߮��?�[x���w���q�D���i��٦Swﭬ#�� ^������`�T���k���$e)kva��~Ś��jSwϞ�|�vחX��h�����AҚ/ئ�N�k�r�0�4�H�";��Dk(JC���ٻ���WO����~ �D����p/1��q����ٸ�������a��i��!\J���U$$�a�λ���ph�������o� �@���ê/��T4U��r�'<L�`h�o�E�������u��/�ӿ��{�M��?�J�6}�~t���M�O� �k�۵����3�z&z�v�B0� �lZ胆!�l�ŏ�+��=X�C�}&^���P� ӝ�J(J��>�ă�$F����BI� +ά�$��S�+|6G�vo<L/"�A���aR�0�0��0����\���I����O�������`bT��)/�m�0����Hb +�����>�쉙�����o!�+���i�&8 ?��&�Awl�72l���ȉ�0���"����a��KK��r �A���>�X���b�����+��ߞ����J�v�,�ZH|U��!���a ��f��wN2�φp��w�U����jk���R���G[��}�}�ђ�O#n�xY���2RD;!�7c +��&x�^LX���m�-ҌB�\C.Y��Yo5��`g�"x 4�b�Kf�{��}� �x�w믜o1U�2��& � Lq��MX�r�w��6+������֟��D���#��,n �ʖRj��i%��^��σiU��cV���O@�����s�ƴ�a�$y ��ɛb+N��� �-0���� �F��E�7�Bs>Y�-G�*�P�����? �O�ki��ڈO��)�c�.-�3�G���I4hP^Oi�&��0�$'���c��ݣs�r +D�&�;���A�)y�W�H������lܜ�����Ƃ���n��м� ��z +��X�]�g⓰KS`����ަ��[ �EP�K����y��W?!~&��$Gzgj�Ni-]��-o8��=1��x`���MY��rD{X�2��,��|$RG����i�e K#�3����5����!cҔ9IV FRs��"�ذM��E�M\�����ԃ����֏�$4�R<k�lR�@8�e�.��P_͐�:�AF�n�:ƴ���>�>�X1g.�ݲ�,��6�*V̱�b�取��'���bs��[m�Qvq��B_[8��d�h�U� ��mա���j`�v�4@w�n�J1�i�,ͺݐ˸�Ov�RElq�>"#����N2f��;O���P��������z!�0��^*L�zt�y�~�� ��,&&&�S�x�x��H<L<L��a��`���x�~�������0��)(�����)i�ſP��'�QB������a�gZR��N]�aR�0�0�t����^DRa_�¤���K%-M����>o�R��^&�qP��>�%ӕŪ�Uo�V� 0F�e����a���^&����T�fL���� +F��nrL�na��ARr`�G���w�-��Z&��.L����Y�SX��O�2�[�>n���p�J�L��Rd��;�8�����1<<gu��à +<��h�K�m�e�ξ�]�50�RM^�a�^&L����~��A7�^�������A��^P����9�`�x�.���y�.���_�~�z>Lwqp��ó�����k��c9��W�;���sBMdFMI�������N�Y�OW�~�\��0���oI�t���gϠ���k�m5�栣�_����}�VӮj�j�~�����+���L �ΰ�����.��í#ݯ��zB�oV�e<nýc�Ṃo�i����֑ Z�{[�q0���ר��͵ĺ�Ex���"/,ȁ�p�k䐕ír�煮b-+���Ovv�6u��`�z�y�X�e ��e��z�34��3Q b���[*T62� +�*��,~�S�����0=_�:���c�a�9�?N�a�Q�0��z�<=m]^D�z�x�z�@s��}y�=HS���/��.�+����.3[d1Yr8Wݥ�t�"�����T�.R�&( Hѳ����,(Q�b�b9{�&�3͋���.��,��L��0����{���F�~y�7���@�� ~]��`�+_lI~J�叡���Ǝ���ؑJ�~�h�뾪?{�O�J��p�߲�&ZiĔ0){��3)6.�*��<�����9��*iK�0}c/&=�2|,{�"I��j�H*aR��I`��BH\��c'�i +p��t�.�2l�r�U�*+a� +���75�~�������ٚ��D�� +n��W���˘�0 �����?�~ƽ��c�2�Y�^�/S���D���x�vW�4`/����v�D hs�ק1�o3����~��4�Z�&���.=L^~u�����_�~9���?�k��,��U �3`�<𘁌1�J� Lj����� ��p������s�M�Ù��_�?�����e�[.=��`¸����B��4���_����^-��s�DW�n��A���mA���e�Gk�����}~&���������{�>����]�.�=z���s˕J��@�� +t_߁�1�6���(E�a�������'�I�b��}{_��h�,������ ���ڶ��]�� ��/��X~j��X����y�J��$�Y��<�~ y����!Ä��-B4�n!*<���{�ͽ���W�۶�w���ǡۇ>�YӶ�Ԛ��6�^ѻl��5�t���j{`�f��˫z+z�J�aoJ����~��0n��`:������ώ�X���Qq��Y��#���bV\�����3*6F,?�����=w����|mj����������^��(z����!�O-T��9�5�{��9��bz/��~��Ɔ5�����m��yIۧ���g��aoJ����W�}{Ձ1�?�A�f��c}�kJ�.um�z"���ɞ��h[�{����$�t�V+i�6w9O�3�r�C���Z�Y�����$'����1s?��Ҹcg��嗅��ݗ��s� +�o~�}��Ms���7���)<uU{לE����x���ݻ9~�&`~�<���;b�C+,C1,�����4��KPܗ�W������KQ�$����w`����3�7ԅ?&Fb|��-K����w����-�LZ�'��m��镡�G����mF�P����|_S��������X���A�at��,���U����j��H����� )a��`b�� �I��ȱO��j�A2�TԠǪ=ߟ��H(�2���=���,�������%�$�\�n @J�m +t����S`.��6k30�WAG;��C�a�>$��T�Qp ����W(�i��bS�)�G1��<��.ɳz���9:�#x����`h$�����X�KV���`�u��#Fi̫���W��$�X�/��}����%#�2�4�{,>���zS +�Q��?���.MK��ָ�v����| ����=��鷩Ӂ���u�N3�}4���b|�X�nˤL�FBc�E�0`���P}^u3��z\�Ք b#U����m��Q����9I���E|� $��U;�(�!�|x���e>| .D��� ЈK� '"k�+�)azy0�x�F���6� ��^�cer�B�om���E��e�}%Y�n�i^>~G��68�u��?:ɳ��/q��f�K�wa��B5��}����t�bIe�Ǜ�^{�U:L��n��Y��e���.}{d�'��d�d�w��L<y��V�w��j�p� ��+.��Ґ蟛m��R��n�<gm1bȱ}x�B�*����A�j�j?� N<���&p!Z즙$G+]�[���㖮oV��Ra�K~;���BvQX��IؼuvY�W����% �4k>"`���Kv]0ɇQ�wBw�u-��m������>k�W�ԝ�{e�A��pc�B����U]va�oDk�.;u������Y����B,�۱چ��K���>�/j���b+�E��|ٽ&8��cV�}:ꏬ�L�>LK讜��I����&tW��h=���(6���~�˜���K���MI���u��G ~�SrC��Y����p�ۚ�t2��^����Iӵ��X���|�U0�e�L�-��[j�J`*FX�߆w�O��3swYx>� ����ntXi�U�ZݷMV���,�#w=�a����>Y��奍��I��}I�u�� + +}AE�E�}��I����7��I�^��dq����IyQU&��z�H�4٤G��w9�VĒ:�6-�����\��B�}'@M��}=9�Q-A x�8��Hu !(E�1�3�Z_9ʆ +���%�!8�jg�����Y�6GSb�|IJ��r��*%�`g�염6���<�%38�3�d[�7|�ˆe[��Y�,N߷>�3�k��.j^}�wN�]RFG��:�P�i�7��&9p>�pf���gG����%MSR��P�J�v�:k駤�j�<�PS�m�<�%:�zmhV�@�bid�84�jm`�M��lvh�Vf����^g��uD ���u��Hu@�Vs�����Īn�nF)h��63�ε�{���]1�(U4��o)M�HJ�(�+!.Gm�q��(�>��;Z���ך�cGi�⬡6N���|��Q�#�"� b�Z~U�F���W��HƩ�*Ŋ�=靣��P�X�v� �� �9f��k��G�P��**U���AQ�j2��f���b����2�T���9��ۙ���U�Ԝ�L�]���D<@ON1�R|��TU��;ŪJ]����oLU�h�4�eMЍQ5�?/L4|�U_w���WƮ9�fg���1=��vp5ܘ���D��YY�M��Gq�`_���!�Ds%�'���d��c�"�2�r��к©�S"@��D�2z�!N�½(�T�O�*�#��P 4 +ҩ������^������d�%� ���2���(C(�ˤ�\\.)�y\��$�"I����)��6�Ɲ,��c&h��O�7�M�t��ǏŬ�#�v]2RS���yi��X~S�b�̀ޞ���]���ܻ��囇� +�}���/�0���yf]=p�E�3$Gȋ�'a"rf}Uh�Y��9�vo��G��문[rp���0��7֮x��^��sl���m�:�|�g_�|������0���alO���a���~�Ίc�{�v}m�G�صq�-$l�u{?B�ƹ]�&�8���صM���Y&�v}��oCᓅ�a�&u7��A.sb���\L/����c��hZE��?����\�ʸ5=�{��x�ٱ�"W|xd#�+a���P�7���.7��1D���ߺ&�d BC*=���7��z�s��C�� &>��G��黍����!XE�t9f綝� �X~{��OIoT��kv~")i{��{�Λ� L��J���e����]M7��9��mC@J�T�T�� wm ���ŀWH=���X~�a�ݤ�$&�����F���@�l�A�/aq!<���B���pqC��8IH0zO2�Bab�<_7{� ( +i������ {$:%���v�X�n��ՌS�!�q +�d�v��Z��0�g7� +o澭n���,Z���Ŵ0.���ݐ�%�g/�q��<j�9&�8�措�S�_�O(5�l�j����q�o���s�U��1m��f� ��=�CCuL-g��iV���Y�5ɘ40H�H����l*3�"+��L�� .����@�M�|K��@!#a���B15 Xɑ5N"���]J8� m��a%̰�*L���2gYY�6�Oĸd{5��A������I%`U�=I��64�i��]vd{��\B�k�81��D��WZ��ě���~Av���~��������ﰞ��}�A����߭^[���s�˻�Yd�jiَ%A&9�g�ŕ�[f�o��'�,�WG8RO���@�?�`�Wj���-�������Ms�9�����oL�Z�S���U�l�Kk�ر��3�d������W?^�����삐���x?ss��պ$�a�a��e��]J臛��} }�,5¸U�{��e�{��rJ�����!qɄ]r��A�<�~\8/}�G+����w��ك�������]�K��ޕ�Xz�����fވFyu�X&�����@�z$N+ח�㴎�bK|\X��pٙ���hSk!��#���\ ��X.p�9_\�{��Ub��;��I��{�>�{�Mx�=��:l��l(��y��^�����Ξ���Qi ����ӫlC3��ǧ�M+(^P��/AlR�V[$�^i�ye�_&e�d���ʴ$_�}9�NZ:�&�ۊ������o5�s�s�`R2�;� +��Y�[ȸn-Vs9p����F��߯��&'�7ط�3��;4�c�z�3�3<4�<6)�I�{݅��0���˟Wd���7�2a���8?!X��7?���e`���-<ٔ?N02��ԧ�f�A)�O����)��t�W���W`���HP������#�oYc��DsI����FRH�G-���/�}}�ԵG�Ό_����}�W�1�,c�.�x���8>��'�E�5㢾�f��������F�-���g��oڠ1S +"�� �`m�2XF��`���T$�h"�Z9.Y��K�I�b"��5UƎ�����M�p$=�R�|2 +#��T�ԓ���$��M�1 �p��'BGe=�?T��j�D�Lf��(�]�1y�pqYĠ��V�>�E�j�vE:\q�͠H��6��Cb������p� ���M Jb�CXYL�EYӦ9L����4x3�CmK�0������XV����`f�b���"E3FP��9M�$����+q�hO` Z +g���~�欫�~e�B�<X}V���H�8��P�!�x8Xm��I�L[�qq������{C�<�q^&L|�`����)�NyL�W��9���"�I�9*�t���+�= �겪��(��K�JQ��V�ɿY45 ,���2_L��3S��`�Z]k��t���ש��2 D�lo�V��D��8� B��9%�ɛ-e�S�1�#*-�R�͋�ɐ��'-#0��@�(���b��Y�w�f�j]�+cU�0�C("gj��8�;;z���}�C aF�E�����)���択 -�W�W�viYAr����Y��ׯ�f�{�}Z�I��uw������<� +M1s߹Q�Q��0��.�1�s�H�>}噲y��M�����1&Q&�7�kX:�%���� +�W_��V�\��Zߵ���ӳxL�����(.ޮd�,/�ٱ�kXM +�_��8��3����l�sx�w�I��,���L�n�D��>���3��9�0 {������2�K}� L{p��; +; +�hM�-����>L}�E���Z��!�p���bl�/ +Z&���Y^�K;����:�W��'!� ��:�j�6�|�A6�,^�Z�;Iz�,K��D�������́� O����SgWZ�X�H�a)��<�]׳��f{�$w�[rQ!��8m�߹i���x����%[�4�uh��T�fc�U"���Vm%L�^6L[��='C=&0a�:�˴�W�s�_��v'�uy���ݲD��䥇�z���L�-�`K����O���W?��j�Hb���~�r�?�w+G����x'��:3��^!�g&�m�-��`���skc)�}֝ey��p�âI�Zj�{�����>�E�����X$��I +�>�9����}�7��ϒcI�_��1��ps�������������8{�0 �\��#���X-̒G���Y'���V���n�j�!���.�gU�m�&l����.0��7��ҺS�}Bb6�óNo�~�ry�u�z����vyg��EY��\G�ʋ���c�F�u���N�8�@��y�{�Q��/�U��!�Gl\�~q� qU������#S'��3۲�{]�[��M�Xm`�;W L L�˷������0q��a�dú���p)�_�j G�Z +FZ0�-|MUTFD0c��s� k���S2; U(���) +�8�1EM��+��j샑�X'EKQl��i%NPS�I��a<�V]�j"O )�<�L�;�|��8U3�]cƐ}CEcC�F��Vb�R�!�4_O�Q�vkS*#�be� �8Sr��)c���|8���IW�x2�H�D��e�L�%�E�1 &V�AM�pjd@ėP���#�B��ZD| ǘ���{FLAE�Q�o�O@>��A[�(BC,�dRC@�����Yq 10�#��3#�, ��L�J��e��)?��c +��a(������7���Pab�PC���U|_�h���?{S�H�C���*n��{&�-���ii�/�ɀ�(=�V�10T6Ħ�)������� P��^��)�0Z��73����tfy�I�K���5��f�����O�yF9_�J�n4)�i[7vGRi@b�ۺ��4�(�&�=����<�W����d9�lN�~���M7O�����u�)���\ ��3���������>焯�x5���N��5_�k����MJ�^ +L�l�=�����<��%u#敧��KLҌ�s���]�����)azQ��8__�s�B^u3��|Z]�$�˜c_ݬc�@C{�ի�u��$��@��9%�3$���f�*�LJS.���01|��g���*6��hP�����Z��5������ĝz�i���)a�Q`bT�����xp9^��S<��%���X֘�,lv~��X���hVb�Y��d ��D�H1B KѤ���(2+bݿ�H��c0��i�0��)�Y��5�G�g`��U����C�������OuܭX�{tH3�1Yc5w⒨8������aUbt4��ݭ$$:@g����?��!�Ľ!����B�� �9~��5h����o��u7f���;o�#f��MP��5;o7O�y{�%������Sc�v���]�$�9�ImšCg%;{O-�����Q�4t�F�ا@��b�`&��܍�9�{[C�GUm�<z��E����?Vl�Z����(��Us{>�Gϵ�պ>j���X�s���m?�������{��s�1͞��3�cA] ��a�oa1�^�/H�����>�އ6m����/Vܟы�Mh��C@�J��������c���\�p��ͽ����L?�)=�V��5�S]������] Ӑa���U}�`�Lm��:5��rIϩ��7{?�Z��{mgIϴ� �o��}�^�5�C�f�������c�>:������G����8�s{�VlT;�9F�_س �bE] �Ч0�>ŗ�Ω 8���}�֭���͊K]���b���_rK����fM�G���O�|��ֲ�[����v^H�:s�u]s����A@š[w%�� �Xs��15�1LJ93�������`50 +Yc�� +�j@I�{+>�ܽ����#�.��{�O���8)K �ĸKH��0�ؑ����H4�Mf +�G���w`��o�����w��A��4�cվyXǘ���j�VU��~�|��Xژ�0�E3v�>&�9����k�h<�!��X���#d��؝�D��M��aRʙ�����_ ~�ڦ����f���z"��^�x����y���>&{�)�JՀ�o�� &�~�XO�]���oOE +����L���8+���.(�[^��!?����(sɑ�0���],��*�pT�|2>��Y�3·T���Χ+XT�� +8|���z<�_�k�'� T#�o�W��I+Ҕf���؆���GR����d������h�)F�|Y3� @*��y�G"C܉1JwЁ)���+^��M�9`���/�#�X)���+��gy�����;@ s(�B�<:��A̐K;��"���H�.%@n%F�2�C��֙��(az90��+p���z{��y��]��XT��d������ĸ3g:�#1�a�;0/�oקo����Un��V\ukor�C$o��K���ԙEQ����g&����s"'F�xS�B-��������I>�]��9 �l��Y�#�$Vzɾ̶�p��K 903���d�52���JL���V6/p:Zm]uَ�p�V��)3� �=KaT��#�C�<Y�>�gr^���T �ˁIl���,�РH�u�&'����;�ۤU[�DF�9izy�}�����<��o���+�ѯ�⟻�F�Ͼ�.�kI�Z�۷Z�k��7ɇ0 8��s�G��I~���z/�+6S�X�N��&o���.c���U��;<���f�2r�~�6E�X������e�d������m*��f�/�~'�\��s���N��w)�Lӷ3w���Y6��&G2]q�e��fo?}~i��(az90����Ev���?�ɒ}U+��8��4��j�t5�cs:�"�����vF�K��[d�K�, ۫G]�e�>|��tV~��?�/!�ɳ� +�rX����\�E��2'���&�~�h��p�Z�W�������dy �� Ð�Є��u:IW٨�)���Y6�lc&��bԗ�j�������z,)9�>2�®���]��,�J7G!����4(g��6l�i_0L�8��&�����>��]���j���-&]K�ȵgv�#�)�+#�(����k�KْB���ޮaM�,�]>�;L�W�[�;�,?�k�<�;�p�Jc�(yd�� ��[��_;��o?����w���+���Ts9�r��x��#ƌ�;�g���?���~�����O�MwY}!M5<e�k�/����!l���q^o���.�㳥�N�4;�{��cƶ�Y �U�j��>��煉�x�����r��y��H�*����`�<�݁������U�]�F^�I�Z[W'�xs�W��Rt�?�xq5:�u�3;�kZ�] +ߎUt`m�^y�M����֖��Fgو�SH>E�@�m�͢j��<yq���P��L�gm)[.�Gk��?�ó� \�8�N�1���,Pz(/e[��x{N��dx~I�lS=D�M�b��W4�ӛg�m�k6Yf����6�:x��v� +c��7�=������#PY�ooO�9\�.��cE,KKX�/�8>5S��,� e$�n�b��z�F�����/KA� +�2\�/(�,Ø��@s�8\���{��,����|����$k1b�\^ �yhn�I�e �����u\\ +��L04����l/e�����R�g���3�| �@%7W#�LƵgt!偘3qK��nN�[?��3k���9� D����Q�n=��@D�|X7ؘ�X��ZsL%�,X��/1���特!E�(C!MS��*�� �?����Q���h\�Tx�~��cp|H��Qu���|���*�@�<�&_<��r��`�k�#ΩR.$�qi��G�3����\JH��$�E�<�'�'�n>��&R���@BZH+j>L���3�{��������t]�'j�����Pq{���=�8ts/=�ܮ[g%� ��K\Na��#�43��0���܊�>��,F�0}���ѱ�s~�Pq�vͶ=]��n�>������Abs�2��s͍ ����\�1�m�|��XV�ͽ`�� r�0�-��7�3�^�Yq��� �?��H��*>/9x��5s���q�<LAt_s{w~���|�k�U]�� +�����(��OߪOя�1���/�`�^C��*����ܳ:O�{�$�t�W����V��ꬸv���7ڴ=X�f]���m�4$8 �V��� ��eU+�'�Qm���.���#0�7���[�ՎR����_ayf0�o��4�S�!}����4��Џ��Ɛ��=r,�}��0^!g�se��:�/�����m��]��.�(D�3u}��B}�O>e���;Bt����dLŰQ,������k�=*V�KF�Bm�0��p�!#7�KS����$\f�L��p4���0�#���:lV����y�Տ��S�NX�{۶apO?:�6�)��j+�c +���|�3PgG�(��X�.�9`���n!�*���:�N��4+bk%:�%lj��c�I�#r�dYC6@V�vܤ%�7v�����!��W��o�S����Z���N�8*3��9�,Z0A]:�������o����jr�t�(J~�-�ш������/���09�C�И]*m�Ѧ���Zy���m����"�ؿ�!�u�Y��,��_63��3P��7�mD.d�[�˳�#�y����y�c}�D� +�fZ�3�_&)*E���R���|D�%�6�<u|��k��:��6�h~Uc�9�Rmx�'g�� x����X�h�����(D�Bn�I!vf�FȲ3nQ+�#�8̧ +�o�?>�!<�3�.�V�%��(����gJ��cm��T��rll��g���]z$OO�ٙ�D��(�֥�q�YM�I��.I�b4fٺy��j�9sR����߉�MK��!�#�i���Dh +�o.O�� �q�g�O�;�do�#��&i��o-����4��!;�W��sZ�{�\!�͋���^x��gK�<s��h�U��|,�d����5}�&��k'��%<�<��� �ӓr構����*�����p|��������c��I��2��Ѧ�k�C�:����B���~I�3�K���K�"OZ�e��[l}# +w��F�k:����.Ll�no,+���Mo��z�z,�P��ǾS�w��)d�-9ڎ�S_N�0��-��L���[�Q~�1v���ڻ�W2�!�^rZ'��͎la���Q�q#-�wr֚���ƙ�h=+[����V���3�'k͇ ��#�?�B�+/<d��[�~셾¢:�e��:�2G���B�nˤ�;�]�b✸+&� �(��v"D�4u���9��m�^so��1F�5��N��\�M�|{�_�������� +�[� +��{�Ĥ���z�ײؒ�[{���d������ש��p�;S�}%_��[?b�.�y7���g�ه뺜:Y�aw��s��زqgN�j�)n���>a9�����+dN��o����A+U/am��L�S/�^u>�6��B������b��pKW���.�ɋeK��r~+/�[PP"0H��7�9�:,��t![�ٮ[H�F�F�E�oG����[��sh� ͏���02ɟ�`%l29�*��� +e���ה'm����g����/#�s6y��{:�=IJF/y����ԉ�B����G�[w��U�X`7��ܛӸ���g���C��� +a��I.~iv'���7� +b�ИT_��/+G0䞉/�_�h��?lKbZ�N���jj@�V��V�-��V�m���G�ZA�۪�u �i�j2����5�g���$S�o}���%l�j)n�>�b03E� +)��Xk)52��R�2l`�G���a�R˨���{�4�BJS|���ZF[�~�%����s �kHIxf$��ԡ:�R��@��U���_O���+ xùV� V�Ά�^�;�M|=Ӏ��y�S!���6�k!e~�f�.��%�����z�����1ż����`@����=��+�'�o{[-�u���:m��[�WK��hCy�WK( o�M�(�ˑL�h$$.� H��-hHf�?[�m�mٲ��{��m��t_��{�w�wOo��s��w�qgH�kk�!�$ ��@�-BZE�Y׀�{�\Į�'e#���!rm�z�B> d�Mq���j8��]1!�[荐]�Oʚ�XD�On>����a�x$O�Rw�cR��`��)��Hl]d̆>��G�a��/&���N%���聬kn\�$A| ���2�>�<ʓ�ɐ����:p�L���n�]%.���� 7�.fa�Hp��V�鏐>@�{�7�^�:�z�f��SQ��������XӞ\Ɩ��x^I'�� ��o�S���=����� �1 ��Nu��pk���1pG�A,M��E�60`�s���@� ��զ8HRTg��MH���#i���諸v��=�4'��B��z��Њt��������vSئ��d�#�j̈́oq� I�D�$>�����,"t��2Dp߈�98@��;$�����X�p�v��Q;/ qd�e�L�Uy���5�Ѡ�fث���_+K�Vi���&d��T�� iW�������Q �P�u�;�4_(��?�N�J���I���(�Po���N����u<�ؖ^�ߔ������5%��kT�ڇ�A�Xd�� +�U +y��`��J��θ�k�f�a_w�P:��s5�(�Lz��Z㼒'�QE*�����1L5�['�/���A���l��*����D���%������6G���`zX�ɲ�fk o���,x��-Wf�Hc�p�ݬ���hy©1���u��̕�T�gV���.ցR<��{,�w- en��@㏥�����W��3Vpź{�U^�y�m*��+�sO��>���Gwcb�����<O|?���M��_D�<������������֑[S}�J��K�i����j��Q�VuM�~��!�~�L�?� +�����=9�L�)f�?��t�,�X~驮���Z�� +�e���jpE�k�>����?]��3����&�W@v���cf��l͵Y�Ɨw��ȁ�} �(��vʋ�4b���v��1ez���XV�G?�&��+<��J���2���|��'{߈�~!�<��@���b|7?h�1�o�����m��=��nUG���̪x��ĭ��1�.�3�h��ρw;yR��A'#��R����'`�����4�O��H�{Gvj\S!���G ���ꋿ�3}�4�8�Ygt�g���jzik�Pr�AЇ���ԝ\�q��ʍSu�vG���3_��5��k�R����l���2���OLI_ܲ"@lt�zv�9�B��1ĶjN�bl ��l:��M�e�j���$���Tu��ޚ�暱O�KЫu!���{�"�Wԩ;�$;��`�t]|q���jj�+;�c}��G�����Ϯ'��q��܀]2�"ٰ�m�j�� i���M����T +该*�~&%��Ex�d-x�#������(Gv���X�I���8���6�*#��i1��B�D�r��z#��&�%����;L!Z�&:�g�mh�@M]�q��N�9���(N�j¾��;c�RSG��B[�3������n��x}a|[����~�<���������>$��DeDud�J��a +�9��-װ���j?�x<�L�(%�}�s��m�H���r�@{���D4��9W�&=��}�.Sƪ�d��P�uuZ��:��%9��#��TA���*Lj� ,�6�|9�ůp飓�����������Z���cmf�&ϱ.g����� +�U�t �:s7�u�]T�M�ܑ�!���3Y��(���}�1GeH���0�c0��!�S\�v�M2�X�:�!#�kɵ�� �&eXS3��3 am�\�����9$kQ6`.�p=$2���'�<�5��\� +���m1'h�� &��j���Þ����o�Bډʒ��]�Z�k)����b��'49��<R���h��VH���\���D1V]+H�4|��Q��5WD�%8'܈�m�p8E���_L6����S����;#9�g��=t��_��]�'�/�p���둕����)~ +��������)�_�u�t��[����wLog�I�wLo~�{Ƀ�ӑYP)��\a +t�=�>�#�ⱹ�1��V���/N��i[��<=|<¯���\c�P���(�0ȶh/��Wy�n�������*^9�^4�9L^�{�U�E��K� r�O�v������O�l��K�g��&����î� �� +�����^���1�s�>�Ն�z��-�� 0Q��U^�{��)7^�(D�W�i[w�� ���] �c������9���r�ݻ�e��Т>*5�t4)7`��`z��|9k��oȡ�+��j�LG��)u����E�[��`R"������ +�Q���k@=���1`g�5-��)�8����~䀄�R�$���l�Ū�]�ٰk�i�)ZA�X���>�܌�����}@�������8 +Ƌ���v�LTtD&X��=m�͈������W���ŵk���7�%X8�{���8�Z�W崌� +�3[��ƀ>U�H��2��ז�U�:5BJ�����f��%ԬJ��W���?����=��F���;���n���V�w����0���N��������wf��U�N7��Tr)��u�M�#bئ�'gT�]���Wj{c���[�»>��f��[`Z0i=�b�KWbx9Eo-���XѰ�hk�3��Jsg��D���r}�Lli�=i��K�z����ʳ��A����3�]�~�A2�ڍ�Ɗ���[�i����/����+� ��J��vy�鋗>�)�ۭm����_M��}C:����&���$� +��s�cR"�=k�����2���| +5I'1�x�=����5;=�FU�ד#��L��h�qMN!��dL��eǴZp�J_�������h�2 ye�[��-K֎���ӳd�=�$A�9]���{D�FM��v=ݥ�m2$m�镀���Xz&:G���J/��E�ք��{ `"��M{���v�$����`��ܳ3 +=����IEND�B`� \ No newline at end of file diff --git a/web/themes/seven/seven.breakpoints.yml b/web/themes/seven/seven.breakpoints.yml new file mode 100644 index 0000000000000000000000000000000000000000..1b6bd2fb43ea8253ebd54827c7f528d0825963e0 --- /dev/null +++ b/web/themes/seven/seven.breakpoints.yml @@ -0,0 +1,12 @@ +seven.mobile: + label: mobile + mediaQuery: '(min-width: 0em)' + weight: 0 + multipliers: + - 1x +seven.wide: + label: wide + mediaQuery: 'screen and (min-width: 40em)' + weight: 1 + multipliers: + - 1x diff --git a/web/themes/seven/seven.info.yml b/web/themes/seven/seven.info.yml new file mode 100644 index 0000000000000000000000000000000000000000..a88525b455ac58e8a47de3de85f9f172b18a3098 --- /dev/null +++ b/web/themes/seven/seven.info.yml @@ -0,0 +1,94 @@ +name: Seven +type: theme +base theme: false +description: 'The Seven theme from Drupal 8/9 moved to contrib' +core_version_requirement: ^9 || ^10 + +# version: VERSION +libraries: + - seven/classy.messages + - core/normalize + - seven/global-styling +libraries-override: + system/base: + css: + component: + css/components/system-status-counter.css: css/components/system-status-counter.css + css/components/system-status-report-counters.css: css/components/system-status-report-counters.css + css/components/system-status-report-general-info.css: css/components/system-status-report-general-info.css + + core/drupal.vertical-tabs: + css: + component: + misc/vertical-tabs.css: false + core/drupal.autocomplete: + css: + theme: + assets/vendor/jquery.ui/themes/base/theme.css: false + core/drupal.tabbingmanager: + css: + theme: + assets/vendor/jquery.ui/themes/base/theme.css: false + core/drupal.dialog: + css: + component: + assets/vendor/jquery.ui/themes/base/dialog.css: false + theme: + assets/vendor/jquery.ui/themes/base/theme.css: false + +libraries-extend: + core/ckeditor: + - seven/ckeditor-dialog + - seven/ckeditor-admin + core/drupal.autocomplete: + - seven/seven.jquery.ui + core/drupal.dialog: + - seven/seven.drupal.dialog + - seven/seven.jquery.ui + core/drupal.dropbutton: + - seven/classy.dropbutton + core/drupal.progress: + - seven/classy.progress + core/drupal.tabbingmanager: + - seven/seven.jquery.ui + core/drupal.vertical-tabs: + - seven/vertical-tabs + file/drupal.file: + - seven/classy.file + filter/drupal.filter.admin: + - seven/filter + filter/drupal.filter: + - seven/filter + media/media_embed_ckeditor_theme: + - seven/classy.media_embed_ckeditor_theme + media_library/view: + - seven/media_library + media_library/widget: + - seven/media_library + tour/tour-styling: + - seven/tour-styling + user/drupal.user: + - seven/user + +quickedit_stylesheets: + - css/components/quickedit.css +regions: + header: 'Header' + pre_content: 'Pre-content' + breadcrumb: Breadcrumb + highlighted: Highlighted + help: Help + content: Content + page_top: 'Page top' + page_bottom: 'Page bottom' + sidebar_first: 'First sidebar' +regions_hidden: + - sidebar_first + +ckeditor_stylesheets: + - css/classy/components/media-embed-error.css + +# Information added by Drupal.org packaging script on 2023-05-09 +version: '1.0.0' +project: 'seven' +datestamp: 1683652108 diff --git a/web/themes/seven/seven.libraries.yml b/web/themes/seven/seven.libraries.yml new file mode 100644 index 0000000000000000000000000000000000000000..72a214dfccb340329f104210db7413655e63b0e0 --- /dev/null +++ b/web/themes/seven/seven.libraries.yml @@ -0,0 +1,259 @@ +global-styling: + version: VERSION + css: + base: + css/base/elements.css: {} + css/base/typography.css: {} + css/base/print.css: {} + component: + css/classy/components/action-links.css: {} + css/classy/components/breadcrumb.css: {} + css/classy/components/button.css: {} + css/classy/components/collapse-processed.css: {} + css/classy/components/container-inline.css: {} + css/classy/components/exposed-filters.css: {} + css/classy/components/field.css: {} + css/classy/components/form.css: {} + css/classy/components/icons.css: {} + css/classy/components/inline-form.css: {} + css/classy/components/item-list.css: {} + css/classy/components/link.css: {} + css/classy/components/links.css: {} + css/classy/components/menu.css: {} + css/classy/components/more-link.css: {} + css/classy/components/pager.css: {} + css/classy/components/tabledrag.css: {} + css/classy/components/tableselect.css: {} + css/classy/components/tablesort.css: {} + css/classy/components/tabs.css: {} + css/classy/components/textarea.css: {} + css/classy/components/ui-dialog.css: {} + css/components/admin-list.css: {} + css/components/content-header.css: {} + css/components/container-inline.css: {} + css/components/container-inline.module.css: {} + css/components/breadcrumb.css: {} + css/components/buttons.css: {} + css/components/details.css: {} + css/components/messages.css: {} + css/components/dropbutton.component.css: {} + css/components/entity-meta.css: {} + css/components/field-ui.css: {} + css/components/form.css: {} + css/components/help.css: {} + css/components/menus-and-lists.css: {} + css/components/modules-page.css: {} + css/components/node.css: {} + css/components/page-title.css: {} + css/components/pager.css: {} + css/components/panel.css: {} + css/components/skip-link.css: {} + css/components/tables.css: {} + css/components/search-admin-settings.css: {} + css/components/tablesort-indicator.css: {} + css/components/system-status-report-general-info.css: {} + css/components/system-status-report.css: {} + css/components/system-status-report-counters.css: {} + css/components/system-status-counter.css: {} + css/components/tabs.css: {} + css/components/views-ui.css: {} + theme: + css/theme/colors.css: {} + layout: + css/layout/layout.css: {} + dependencies: + - system/admin + +node-form: + version: VERSION + css: + layout: + css/layout/node-add.css: {} + dependencies: + - node/form + +maintenance-page: + version: VERSION + js: + js/mobile.install.js: {} + css: + theme: + css/theme/maintenance-page.css: {} + dependencies: + - system/maintenance + - seven/global-styling + +update-report: + version: VERSION + css: + theme: + css/theme/update-report.css: {} + +install-page: + version: VERSION + js: + js/mobile.install.js: {} + css: + theme: + css/theme/install-page.css: {} + dependencies: + - seven/maintenance-page + +drupal.nav-tabs: + version: VERSION + js: + js/nav-tabs.js: {} + dependencies: + - core/jquery + - core/drupal + - core/once + - core/drupal.debounce + - core/collapse + +drupal.responsive-detail: + version: VERSION + js: + js/responsive-details.js: {} + dependencies: + - core/jquery + - core/once + - core/collapse + +vertical-tabs: + version: VERSION + css: + component: + css/components/vertical-tabs.css: {} + +seven.jquery.ui: + version: VERSION + css: + component: + css/components/jquery.ui/theme.css: { weight: -1 } + +seven.drupal.dialog: + version: VERSION + css: + theme: + css/components/dialog.css: {} + +ckeditor-admin: + version: VERSION + css: + theme: + css/theme/ckeditor-admin.css: {} + +ckeditor-dialog: + version: VERSION + css: + theme: + css/theme/ckeditor-dialog.css: {} + +tour-styling: + version: VERSION + css: + theme: + css/components/tour.theme.css: {} + +media-form: + version: VERSION + css: + layout: + css/components/media.css: {} + dependencies: + - media/form + +media_library: + version: VERSION + css: + theme: + css/theme/media-library.css: {} + +layout_builder_content_translation_admin: + version: VERSION + css: + component: + css/components/layout-builder-content-translation.css: {} + +user: + version: VERSION + css: + component: + css/components/user.css: { weight: -10 } + +filter: + version: VERSION + css: + component: + css/theme/filter.admin.css: {} + +classy.book-navigation: + version: VERSION + css: + component: + css/classy/components/book-navigation.css: {} + +classy.dropbutton: + version: VERSION + css: + component: + css/classy/components/dropbutton.css: { weight: -10 } + +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.image-widget: + version: VERSION + css: + component: + css/classy/components/image-widget.css: {} + +classy.indented: + version: VERSION + css: + component: + css/classy/components/indented.css: {} + +classy.media_embed_ckeditor_theme: + version: VERSION + js: + js/classy/media_embed_ckeditor.theme.js: {} + +classy.media_embed_error: + version: VERSION + css: + component: + css/classy/components/media-embed-error.css: {} + +classy.messages: + version: VERSION + css: + component: + css/classy/components/messages.css: { weight: -10 } + +classy.node: + version: VERSION + css: + component: + css/classy/components/node.css: { weight: -10 } + +classy.progress: + version: VERSION + css: + component: + css/classy/components/progress.css: { weight: -10 } + +classy.search-results: + version: VERSION + css: + component: + css/classy/components/search-results.css: {} diff --git a/web/themes/seven/seven.theme b/web/themes/seven/seven.theme new file mode 100644 index 0000000000000000000000000000000000000000..144f7c53be0dfafd90abdf392f337129099aaf80 --- /dev/null +++ b/web/themes/seven/seven.theme @@ -0,0 +1,467 @@ +<?php + +/** + * @file + * Functions to support theming in the Seven theme. + */ + +use Drupal\Component\Utility\Html; +use Drupal\Core\Url; +use Drupal\Core\Form\FormStateInterface; +use Drupal\media\MediaForm; +use Drupal\views\Form\ViewsForm; +use Drupal\views\ViewExecutable; + +/** + * Implements hook_preprocess_HOOK() for HTML document templates. + */ +function seven_preprocess_html(&$variables) { + // If on a node add or edit page, add a node-layout class. + $path_args = explode('/', \Drupal::request()->getPathInfo()); + if ($suggestions = theme_get_suggestions($path_args, 'page', '-')) { + foreach ($suggestions as $suggestion) { + if ($suggestion === 'page-node-edit' || strpos($suggestion, 'page-node-add') !== FALSE) { + $variables['attributes']['class'][] = 'node-form-layout'; + } + } + } +} + +/** + * Implements hook_preprocess_HOOK() for menu-local-tasks templates. + * + * Use preprocess hook to set #attached to child elements because they will be + * processed by Twig and \Drupal::service('renderer')->render() will be invoked. + */ +function seven_preprocess_menu_local_tasks(&$variables) { + if (!empty($variables['primary'])) { + $variables['primary']['#attached'] = [ + 'library' => [ + 'seven/drupal.nav-tabs', + ], + ]; + } + elseif (!empty($variables['secondary'])) { + $variables['secondary']['#attached'] = [ + 'library' => [ + 'seven/drupal.nav-tabs', + ], + ]; + } +} + +/** + * Implements hook_preprocess_HOOK() for menu-local-task templates. + */ +function seven_preprocess_menu_local_task(&$variables) { + $variables['attributes']['class'][] = 'tabs__tab'; +} + +/** + * Implements hook_preprocess_HOOK() for list of available node type templates. + */ +function seven_preprocess_node_add_list(&$variables) { + if (!empty($variables['content'])) { + /** @var \Drupal\node\NodeTypeInterface $type */ + foreach ($variables['content'] as $type) { + $variables['types'][$type->id()]['label'] = $type->label(); + $variables['types'][$type->id()]['url'] = Url::fromRoute('node.add', ['node_type' => $type->id()])->toString(); + } + } +} + +/** + * Implements hook_preprocess_HOOK() for block content add list templates. + * + * Displays the list of available custom block types for creation, adding + * separate variables for the label and url. + */ +function seven_preprocess_block_content_add_list(&$variables) { + if (!empty($variables['content'])) { + foreach ($variables['content'] as $type) { + $variables['types'][$type->id()]['label'] = $type->label(); + $options = ['query' => \Drupal::request()->query->all()]; + $variables['types'][$type->id()]['url'] = Url::fromRoute('block_content.add_form', ['block_content_type' => $type->id()], $options)->toString(); + } + } +} + +/** + * Implements hook_preprocess_block() for block content. + * + * Disables contextual links for all blocks except for layout builder blocks. + */ +function seven_preprocess_block(&$variables) { + if (isset($variables['title_suffix']['contextual_links']) && !isset($variables['elements']['#contextual_links']['layout_builder_block'])) { + unset($variables['title_suffix']['contextual_links']); + unset($variables['elements']['#contextual_links']); + + $variables['attributes']['class'] = array_diff($variables['attributes']['class'], ['contextual-region']); + } +} + +/** + * Implements hook_preprocess_HOOK() for block admin page templates. + */ +function seven_preprocess_admin_block_content(&$variables) { + if (!empty($variables['content'])) { + foreach ($variables['content'] as $key => $item) { + $variables['content'][$key]['url'] = $item['url']->toString(); + } + } +} + +/** + * Implements hook_preprocess_HOOK() for menu-local-action templates. + */ +function seven_preprocess_menu_local_action(array &$variables) { + $variables['link']['#options']['attributes']['class'][] = 'button--primary'; + $variables['link']['#options']['attributes']['class'][] = 'button--small'; + + // We require the touchevents test for button styling. + $variables['#attached']['library'][] = 'core/drupal.touchevents-test'; +} + +/** + * Implements hook_element_info_alter(). + */ +function seven_element_info_alter(&$type) { + // We require the touchevents test for button styling. + if (isset($type['button'])) { + $type['button']['#attached']['library'][] = 'core/drupal.touchevents-test'; + } +} + +/** + * Implements hook_preprocess_install_page(). + */ +function seven_preprocess_install_page(&$variables) { + // Seven has custom styling for the install page. + $variables['#attached']['library'][] = 'seven/install-page'; +} + +/** + * Implements hook_preprocess_maintenance_page(). + */ +function seven_preprocess_maintenance_page(&$variables) { + // Seven has custom styling for the maintenance page. + $variables['#attached']['library'][] = 'seven/maintenance-page'; +} + +/** + * Implements hook_form_BASE_FORM_ID_alter() for \Drupal\node\NodeForm. + * + * Changes vertical tabs to container. + */ +function seven_form_node_form_alter(&$form, FormStateInterface $form_state) { + $form['#theme'] = ['node_edit_form']; + $form['#attached']['library'][] = 'seven/node-form'; + + $form['advanced']['#type'] = 'container'; + $form['meta']['#type'] = 'container'; + $form['meta']['#access'] = TRUE; + $form['meta']['changed']['#wrapper_attributes']['class'][] = 'container-inline'; + $form['meta']['author']['#wrapper_attributes']['class'][] = 'container-inline'; + + $form['revision_information']['#type'] = 'container'; + $form['revision_information']['#group'] = 'meta'; +} + +/** + * Implements hook_form_BASE_FORM_ID_alter() for \Drupal\media\MediaForm. + */ +function seven_form_media_form_alter(&$form, FormStateInterface $form_state) { + // Only attach CSS from core if this form comes from Media core, and not from + // the contrib Media Entity 1.x branch. + if (\Drupal::moduleHandler()->moduleExists('media') && $form_state->getFormObject() instanceof MediaForm) { + // @todo Revisit after https://www.drupal.org/node/2892304 is in. It + // introduces a footer region to these forms which will allow for us to + // display a top border over the published checkbox by defining a + // media-edit-form.html.twig template the same way node does. + $form['#attached']['library'][] = 'seven/media-form'; + } +} + +/** + * Implements hook_form_FORM_ID_alter() for language_content_settings_form(). + */ +function seven_form_language_content_settings_form_alter(array &$form, FormStateInterface $form_state) { + $form['#attached']['library'][] = 'seven/layout_builder_content_translation_admin'; +} + +/** + * Implements hook_preprocess_views_view_fields(). + * + * This targets each rendered media item in the grid display of the media + * library's modal dialog. + */ +function seven_preprocess_views_view_fields__media_library(array &$variables) { + // Add classes to media rendered entity field so it can be targeted for + // styling. Adding this class in a template is very difficult to do. + if (isset($variables['fields']['rendered_entity']->wrapper_attributes)) { + $variables['fields']['rendered_entity']->wrapper_attributes->addClass('media-library-item__click-to-select-trigger'); + } +} + +/** + * Implements hook_form_alter(). + */ +function seven_form_alter(array &$form, FormStateInterface $form_state, $form_id) { + $form_object = $form_state->getFormObject(); + if ($form_object instanceof ViewsForm && strpos($form_object->getBaseFormId(), 'views_form_media_library') === 0) { + if (isset($form['header'])) { + $form['header']['#attributes']['class'][] = 'media-library-views-form__header'; + $form['header']['media_bulk_form']['#attributes']['class'][] = 'media-library-views-form__bulk_form'; + } + $form['actions']['submit']['#attributes']['class'] = ['media-library-select']; + + // This conditional exists because the media-library-views-form class is + // currently added by Classy, but Seven will eventually not use Classy as a + // base theme. + // @todo remove conditional, keep class addition in + // https://drupal.org/node/3110137 + // @see https://www.drupal.org/node/3109287 + // @see classy_form_alter() + if (!isset($form['#attributes']['class']) || !in_array('media-library-views-form', $form['#attributes']['class'])) { + $form['#attributes']['class'][] = 'media-library-views-form'; + } + } + // Add after build to add a CSS class to the form actions. + if ($form_id === 'views_exposed_form' && strpos($form['#id'], 'views-exposed-form-media-library-widget') === 0) { + $form['actions']['#attributes']['class'][] = 'media-library-view--form-actions'; + } +} + +/** + * Implements hook_form_BASE_FORM_ID_alter(). + */ +function seven_form_media_library_add_form_alter(array &$form, FormStateInterface $form_state) { + $form['#attributes']['class'][] = 'media-library-add-form'; + $form['#attached']['library'][] = 'seven/media_library'; + + // If there are unsaved media items, apply styling classes to various parts + // of the form. + if (isset($form['media'])) { + $form['#attributes']['class'][] = 'media-library-add-form--with-input'; + + // Put a wrapper around the informational message above the unsaved media + // items. + $form['description']['#template'] = '<p class="media-library-add-form__description">{{ text }}</p>'; + } + else { + $form['#attributes']['class'][] = 'media-library-add-form--without-input'; + } +} + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function seven_form_media_library_add_form_upload_alter(array &$form, FormStateInterface $form_state) { + $form['#attributes']['class'][] = 'media-library-add-form--upload'; + + if (isset($form['container'])) { + $form['container']['#attributes']['class'][] = 'media-library-add-form__input-wrapper'; + } +} + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function seven_form_media_library_add_form_oembed_alter(array &$form, FormStateInterface $form_state) { + $form['#attributes']['class'][] = 'media-library-add-form--oembed'; + + // If no media items have been added yet, add a couple of styling classes + // to the initial URL form. + if (isset($form['container'])) { + $form['container']['#attributes']['class'][] = 'media-library-add-form__input-wrapper'; + $form['container']['url']['#attributes']['class'][] = 'media-library-add-form-oembed-url'; + $form['container']['submit']['#attributes']['class'][] = 'media-library-add-form-oembed-submit'; + } +} + +/** + * Implements hook_preprocess_item_list__media_library_add_form_media_list(). + * + * This targets each new, unsaved media item added to the media library, before + * they are saved. + */ +function seven_preprocess_item_list__media_library_add_form_media_list(array &$variables) { + foreach ($variables['items'] as &$item) { + $item['value']['preview']['#attributes']['class'][] = 'media-library-add-form__preview'; + $item['value']['fields']['#attributes']['class'][] = 'media-library-add-form__fields'; + $item['value']['remove_button']['#attributes']['class'][] = 'media-library-add-form__remove-button'; + + // #source_field_name is set by AddFormBase::buildEntityFormElement() + // to help themes and form_alter hooks identify the source field. + $fields = &$item['value']['fields']; + $source_field_name = $fields['#source_field_name']; + if (isset($fields[$source_field_name])) { + $fields[$source_field_name]['#attributes']['class'][] = 'media-library-add-form__source-field'; + } + } +} + +/** + * Implements hook_preprocess_media_library_item__widget(). + * + * This targets each media item selected in an entity reference field. + */ +function seven_preprocess_media_library_item__widget(array &$variables) { + $variables['content']['remove_button']['#attributes']['class'][] = 'media-library-item__remove'; +} + +/** + * Implements hook_preprocess_media_library_item__small(). + * + * This targets each pre-selected media item selected when adding new media in + * the modal media library dialog. + */ +function seven_preprocess_media_library_item__small(array &$variables) { + $variables['content']['select']['#attributes']['class'][] = 'media-library-item__click-to-select-checkbox'; +} + +/** + * @todo Remove this when https://www.drupal.org/project/drupal/issues/2999549 + * lands. + * + * @see \Drupal\media_library\Plugin\Field\FieldWidget\MediaLibraryWidget::formElement() + */ +function seven_preprocess_fieldset__media_library_widget(array &$variables) { + if (isset($variables['prefix']['weight_toggle'])) { + $variables['prefix']['weight_toggle']['#attributes']['class'][] = 'media-library-widget__toggle-weight'; + } + if (isset($variables['suffix']['open_button'])) { + $variables['suffix']['open_button']['#attributes']['class'][] = 'media-library-open-button'; + } +} + +/** + * Implements hook_views_pre_render(). + */ +function seven_views_pre_render(ViewExecutable $view) { + $add_classes = function (&$option, array $classes_to_add) { + $classes = preg_split('/\s+/', $option); + $classes = array_filter($classes); + $classes = array_merge($classes, $classes_to_add); + $option = implode(' ', array_unique($classes)); + }; + + if ($view->id() === 'media_library') { + if ($view->display_handler->options['defaults']['css_class']) { + $add_classes($view->displayHandlers->get('default')->options['css_class'], ['media-library-view']); + } + else { + $add_classes($view->display_handler->options['css_class'], ['media-library-view']); + } + + if ($view->current_display === 'page') { + if (array_key_exists('media_bulk_form', $view->field)) { + $add_classes($view->field['media_bulk_form']->options['element_class'], ['media-library-item__click-to-select-checkbox']); + } + if (array_key_exists('rendered_entity', $view->field)) { + $add_classes($view->field['rendered_entity']->options['element_class'], ['media-library-item__content']); + } + if (array_key_exists('edit_media', $view->field)) { + $add_classes($view->field['edit_media']->options['alter']['link_class'], ['media-library-item__edit']); + } + if (array_key_exists('delete_media', $view->field)) { + $add_classes($view->field['delete_media']->options['alter']['link_class'], ['media-library-item__remove']); + } + } + elseif (strpos($view->current_display, 'widget') === 0) { + if (array_key_exists('rendered_entity', $view->field)) { + $add_classes($view->field['rendered_entity']->options['element_class'], ['media-library-item__content']); + } + if (array_key_exists('media_library_select_form', $view->field)) { + $add_classes($view->field['media_library_select_form']->options['element_wrapper_class'], ['media-library-item__click-to-select-checkbox']); + } + + if ($view->display_handler->options['defaults']['css_class']) { + $add_classes($view->displayHandlers->get('default')->options['css_class'], ['media-library-view--widget']); + } + else { + $add_classes($view->display_handler->options['css_class'], ['media-library-view--widget']); + } + } + } +} + +/** + * Implements hook_preprocess_links__media_library_menu(). + * + * This targets the menu of available media types in the media library's modal + * dialog. + * + * @todo Do this in the relevant template once + * https://www.drupal.org/project/drupal/issues/3088856 is resolved. + * @todo revisit in https://drupal.org/node/3110132 + */ +function seven_preprocess_links__media_library_menu(array &$variables) { + foreach ($variables['links'] as &$link) { + // This conditional exists because the media-library-menu__link class is + // currently added by Classy, but Seven will eventually not use Classy as a + // base theme. + // @todo remove conditional, keep class addition in + // https://drupal.org/node/3110137 + // @see https://www.drupal.org/node/3109287 + // @see classy_preprocess_links__media_library_menu() + if (!isset($link['link']['#options']['attributes']['class']) || !in_array('media-library-menu__link', $link['link']['#options']['attributes']['class'])) { + $link['link']['#options']['attributes']['class'][] = 'media-library-menu__link'; + } + } +} + +/** + * Implements hook_preprocess_image_widget(). + */ +function seven_preprocess_image_widget(array &$variables) { + $data = &$variables['data']; + + // This prevents image widget templates from rendering preview container HTML + // to users that do not have permission to access these previews. + // @todo revisit in https://drupal.org/node/953034 + // @todo revisit in https://drupal.org/node/3114318 + if (isset($data['preview']['#access']) && $data['preview']['#access'] === FALSE) { + unset($data['preview']); + } + + // @todo Revisit everything in this conditional in + // https://drupal.org/node/3117430 + if (!empty($variables['element']['fids']['#value'])) { + $file = reset($variables['element']['#files']); + $data["file_{$file->id()}"]['filename']['#suffix'] = ' <span class="file-size">(' . format_size($file->getSize()) . ')</span> '; + } +} + +/** + * Prepares variables for update version templates. + * + * Default template: update-version.html.twig. + * + * @param array $variables + * An associative array containing: + * - version: An array of information about the release version. + */ +function seven_preprocess_update_version(array &$variables) { + $variables['#attached']['library'][] = 'seven/update-report'; +} + +/** + * Implements template_preprocess_links(). + * + * This makes it so array keys of #links items are added as a class. This + * functionality was removed in Drupal 8.1, but still necessary in some + * instances. + * + * @todo remove in https://drupal.org/node/3120962 + */ +function seven_preprocess_links(&$variables) { + if (!empty($variables['links'])) { + foreach ($variables['links'] as $key => $value) { + if (!is_numeric($key)) { + $class = Html::getClass($key); + $variables['links'][$key]['attributes']->addClass($class); + } + } + } +} diff --git a/web/themes/seven/templates/admin-block-content.html.twig b/web/themes/seven/templates/admin-block-content.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..ae111e2d35337f97eb0ce82f2b9ba0a6cc542547 --- /dev/null +++ b/web/themes/seven/templates/admin-block-content.html.twig @@ -0,0 +1,34 @@ +{# +/** + * @file + * Seven's theme implementation for the content of an administrative block. + * + * Uses unordered list markup in both compact and extended modes. + * + * Available variables: + * - content: List of administrative menu items. Each menu item contains: + * - link: Link to the admin section. + * - title: Short name of the section. + * - description: Description of the administrative menu item. + * - url: URI to the admin section. + * - options: URL options. See \Drupal\Core\Url::fromUri() for details. + * - attributes: HTML attributes to be added to the element. + * - compact: Boolean indicating whether compact mode is turned on or not. + * + * @see template_preprocess_admin_block_content() + * @see seven_preprocess_admin_block_content() + */ +#} +{% + set classes = [ + 'admin-list', + compact ? 'compact', + ] +%} +{% if content %} + <ul{{ attributes.addClass(classes) }}> + {% for item in content %} + <li><a href="{{ item.url }}"><span class="label">{{ item.title }}</span><div class="description">{{ item.description }}</div></a></li> + {% endfor %} + </ul> +{% endif %} diff --git a/web/themes/seven/templates/block--local-actions-block.html.twig b/web/themes/seven/templates/block--local-actions-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..65397588fed3589096f0d105f0979e820e4413dc --- /dev/null +++ b/web/themes/seven/templates/block--local-actions-block.html.twig @@ -0,0 +1,14 @@ +{% extends "@block/block.html.twig" %} +{# +/** + * @file + * Theme override for local actions (primary admin actions.) + */ +#} +{% block content %} + {% if content %} + <ul class="action-links"> + {{ content }} + </ul> + {% endif %} +{% endblock %} diff --git a/web/themes/seven/templates/block-content-add-list.html.twig b/web/themes/seven/templates/block-content-add-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..0c0c49664a1c9efa5b12467c9c2fd49c39253fa6 --- /dev/null +++ b/web/themes/seven/templates/block-content-add-list.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @file + * Seven's theme implementation to display a list of custom block types. + * + * Displays the list of available custom block types for creation. + * + * Available variables: + * - types: A collection of all the available custom block types. + * Each type contains: + * - url: A link to add a block of this type. + * - description: A description of this custom block type. + * - label: The title of the custom block type. + * - path: A path for the link to add a block of this type. + * + * @see template_preprocess_block_content_add_list() + * @see seven_preprocess_block_content_add_list() + */ + #} +<ul class="admin-list"> + {% for type in types %} + <li class="clearfix"> + <a href="{{ type.url }}"><span class="label">{{ type.label }}</span><div class="description">{{ type.description }}</div></a> + </li> + {% endfor %} +</ul> diff --git a/web/themes/seven/templates/classy/README.txt b/web/themes/seven/templates/classy/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..8708a82e744212c695aa6054c37aa30d9d3d9a34 --- /dev/null +++ b/web/themes/seven/templates/classy/README.txt @@ -0,0 +1,12 @@ +WHAT IS THIS DIRECTORY FOR? +-------------------------------- +This directory is for templates previously inherited from the Classy theme. + +WHY ARE CLASSY TEMPLATES BEING COPIED HERE? +------------------------------------------- +Classy will be deprecated during the Drupal 9 lifecycle. To prepare for Classy's +removal, templates that would otherwise be inherited from Classy are copied +here. + +Templates that differ from the Classy versions should not be placed in this +directory or any subdirectory. diff --git a/web/themes/seven/templates/classy/block/block--local-tasks-block.html.twig b/web/themes/seven/templates/classy/block/block--local-tasks-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..0f25f59d83131f120371ed25943903c48c3abe63 --- /dev/null +++ b/web/themes/seven/templates/classy/block/block--local-tasks-block.html.twig @@ -0,0 +1,14 @@ +{% extends "block.html.twig" %} +{# +/** + * @file + * Theme override for tabs. + */ +#} +{% block content %} + {% if content %} + <nav class="tabs" role="navigation" aria-label="{{ 'Tabs'|t }}"> + {{ content }} + </nav> + {% endif %} +{% endblock %} diff --git a/web/themes/seven/templates/classy/block/block--search-form-block.html.twig b/web/themes/seven/templates/classy/block/block--search-form-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..667202fb6b658bf3b0aae080d6687913074ef6d1 --- /dev/null +++ b/web/themes/seven/templates/classy/block/block--search-form-block.html.twig @@ -0,0 +1,45 @@ +{# +/** + * @file + * Theme override for the search form block. + * + * Available variables: + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values, including: + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - attributes: A list HTML attributes populated by modules, intended to + * be added to the main container tag of this template. Includes: + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * @see template_preprocess_block() + * @see search_preprocess_block() + */ +#} +{% + set classes = [ + 'block', + 'block-search', + 'container-inline', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if label %} + <h2{{ title_attributes }}>{{ label }}</h2> + {% endif %} + {{ title_suffix }} + {% block content %} + {{ content }} + {% endblock %} +</div> diff --git a/web/themes/seven/templates/classy/block/block--system-branding-block.html.twig b/web/themes/seven/templates/classy/block/block--system-branding-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..baa015b17729687d9d9d078d573e8212ae7dd409 --- /dev/null +++ b/web/themes/seven/templates/classy/block/block--system-branding-block.html.twig @@ -0,0 +1,30 @@ +{% extends "block.html.twig" %} +{# +/** + * @file + * Theme override for a branding block. + * + * Each branding element variable (logo, name, slogan) is only available if + * enabled in the block configuration. + * + * Available variables: + * - site_logo: Logo for site as defined in Appearance or theme settings. + * - site_name: Name for site as defined in Site information settings. + * - site_slogan: Slogan for site as defined in Site information settings. + */ +#} +{% block content %} + {% if site_logo %} + <a href="{{ path('<front>') }}" rel="home" class="site-logo"> + <img src="{{ site_logo }}" alt="{{ 'Home'|t }}" /> + </a> + {% endif %} + {% if site_name %} + <div class="site-name"> + <a href="{{ path('<front>') }}" rel="home">{{ site_name }}</a> + </div> + {% endif %} + {% if site_slogan %} + <div class="site-slogan">{{ site_slogan }}</div> + {% endif %} +{% endblock %} diff --git a/web/themes/seven/templates/classy/block/block--system-menu-block.html.twig b/web/themes/seven/templates/classy/block/block--system-menu-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..407f8403fd28c7db920f68ccbd4927bc2bbccb21 --- /dev/null +++ b/web/themes/seven/templates/classy/block/block--system-menu-block.html.twig @@ -0,0 +1,56 @@ +{# +/** + * @file + * Theme override for a menu block. + * + * Available variables: + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values. + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - attributes: HTML attributes for the containing element. + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: HTML attributes for the title element. + * - content_attributes: HTML attributes for the content element. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * Headings should be used on navigation menus that consistently appear on + * multiple pages. When this menu block's label is configured to not be + * displayed, it is automatically made invisible using the 'visually-hidden' CSS + * class, which still keeps it visible for screen-readers and assistive + * technology. Headings allow screen-reader and keyboard only users to navigate + * to or skip the links. + * See http://juicystudio.com/article/screen-readers-display-none.php and + * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. + */ +#} +{% + set classes = [ + 'block', + 'block-menu', + 'navigation', + 'menu--' ~ derivative_plugin_id|clean_class, + ] +%} +{% set heading_id = attributes.id ~ '-menu'|clean_id %} +<nav role="navigation" aria-labelledby="{{ heading_id }}"{{ attributes.addClass(classes)|without('role', 'aria-labelledby') }}> + {# Label. If not displayed, we still provide it for screen readers. #} + {% if not configuration.label_display %} + {% set title_attributes = title_attributes.addClass('visually-hidden') %} + {% endif %} + {{ title_prefix }} + <h2{{ title_attributes.setAttribute('id', heading_id) }}>{{ configuration.label }}</h2> + {{ title_suffix }} + + {# Menu. #} + {% block content %} + {{ content }} + {% endblock %} +</nav> diff --git a/web/themes/seven/templates/classy/block/block.html.twig b/web/themes/seven/templates/classy/block/block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..fd3311be958b9de2fcd17108309c854fdc807217 --- /dev/null +++ b/web/themes/seven/templates/classy/block/block.html.twig @@ -0,0 +1,44 @@ +{# +/** + * @file + * Theme override to display a block. + * + * Available variables: + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values. + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - attributes: array of HTML attributes populated by modules, intended to + * be added to the main container tag of this template. + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * @see template_preprocess_block() + */ +#} +{% + set classes = [ + 'block', + 'block-' ~ configuration.provider|clean_class, + 'block-' ~ plugin_id|clean_class, + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if label %} + <h2{{ title_attributes }}>{{ label }}</h2> + {% endif %} + {{ title_suffix }} + {% block content %} + {{ content }} + {% endblock %} +</div> diff --git a/web/themes/seven/templates/classy/content-edit/file-managed-file.html.twig b/web/themes/seven/templates/classy/content-edit/file-managed-file.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..629335a839b0f03a151fbe7bae977e1c218712ab --- /dev/null +++ b/web/themes/seven/templates/classy/content-edit/file-managed-file.html.twig @@ -0,0 +1,22 @@ +{# +/** + * @file + * Theme override to display a file form widget. + * + * Available variables: + * - element: Form element for the file upload. + * - attributes: HTML attributes for the containing element. + * + * @see template_preprocess_file_managed_file() + */ +#} +{{ attach_library('seven/classy.file') }} +{% + set classes = [ + 'js-form-managed-file', + 'form-managed-file', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ element }} +</div> diff --git a/web/themes/seven/templates/classy/content-edit/filter-caption.html.twig b/web/themes/seven/templates/classy/content-edit/filter-caption.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1e35795fc153cc516987f5157e7edac1e728437f --- /dev/null +++ b/web/themes/seven/templates/classy/content-edit/filter-caption.html.twig @@ -0,0 +1,18 @@ +{# +/** + * @file + * Theme override for a filter caption. + * + * Returns HTML for a captioned image, audio, video or other tag. + * + * Available variables + * - string node: The complete HTML tag whose contents are being captioned. + * - string tag: The name of the HTML tag whose contents are being captioned. + * - string caption: The caption text. + * - string classes: The classes of the captioned HTML tag. + */ +#} +<figure role="group" class="caption caption-{{ tag }}{%- if classes %} {{ classes }}{%- endif %}"> +{{ node }} +<figcaption>{{ caption }}</figcaption> +</figure> diff --git a/web/themes/seven/templates/classy/content-edit/filter-guidelines.html.twig b/web/themes/seven/templates/classy/content-edit/filter-guidelines.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..afef2d2cfb37a41943a26e9c98cee45d81a36eb7 --- /dev/null +++ b/web/themes/seven/templates/classy/content-edit/filter-guidelines.html.twig @@ -0,0 +1,29 @@ +{# +/** + * @file + * Theme override for guidelines for a text format. + * + * Available variables: + * - format: Contains information about the current text format, including the + * following: + * - name: The name of the text format, potentially unsafe and needs to be + * escaped. + * - format: The machine name of the text format, e.g. 'basic_html'. + * - attributes: HTML attributes for the containing element. + * - tips: Descriptions and a CSS ID in the form of 'module-name/filter-id' + * (only used when 'long' is TRUE) for each filter in one or more text + * formats. + * + * @see template_preprocess_filter_tips() + */ +#} +{% + set classes = [ + 'filter-guidelines-item', + 'filter-guidelines-' ~ format.id, + ] +%} +<div{{ attributes.addClass(classes) }}> + <h4 class="label">{{ format.label }}</h4> + {{ tips }} +</div> diff --git a/web/themes/seven/templates/classy/content-edit/filter-tips.html.twig b/web/themes/seven/templates/classy/content-edit/filter-tips.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..25ed49d6ae18a9ef97a71308518f9fb998a5bce3 --- /dev/null +++ b/web/themes/seven/templates/classy/content-edit/filter-tips.html.twig @@ -0,0 +1,61 @@ +{# +/** + * @file + * Theme override for a set of filter tips. + * + * Available variables: + * - tips: Descriptions and a CSS ID in the form of 'module-name/filter-id' + * (only used when 'long' is TRUE) for each filter in one or more text + * formats. + * - long: A flag indicating whether the passed-in filter tips contain extended + * explanations, i.e. intended to be output on the path 'filter/tips' + * (TRUE), or are in a short format, i.e. suitable to be displayed below a + * form element. Defaults to FALSE. + * - multiple: A flag indicating there is more than one filter tip. + * + * @see template_preprocess_filter_tips() + */ +#} +{% if multiple %} + <h2>{{ 'Text Formats'|t }}</h2> +{% endif %} + +{% if tips|length %} + {% if multiple %} + <div class="compose-tips"> + {% endif %} + + {% for name, tip in tips %} + {% if multiple %} + {% + set tip_classes = [ + 'filter-type', + 'filter-' ~ name|clean_class, + ] + %} + <div{{ tip.attributes.addClass(tip_classes) }}> + <h3>{{ tip.name }}</h3> + {% endif %} + + {% if tip.list|length %} + <ul class="tips"> + {% for item in tip.list %} + {% + set item_classes = [ + long ? 'filter-' ~ item.id|replace({'/': '-'}), + ] + %} + <li{{ item.attributes.addClass(item_classes) }}>{{ item.tip }}</li> + {% endfor %} + </ul> + {% endif %} + + {% if multiple %} + </div> + {% endif %} + {% endfor %} + + {% if multiple %} + </div> + {% endif %} +{% endif %} diff --git a/web/themes/seven/templates/classy/content-edit/text-format-wrapper.html.twig b/web/themes/seven/templates/classy/content-edit/text-format-wrapper.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..08a88ca1ce1d95fba8fe44a30f3fdaca95210143 --- /dev/null +++ b/web/themes/seven/templates/classy/content-edit/text-format-wrapper.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @file + * Theme override for a text format-enabled form element. + * + * Available variables: + * - children: Text format element children. + * - description: Text format element description. + * - attributes: HTML attributes for the containing element. + * - aria_description: Flag for whether or not an ARIA description has been + * added to the description container. + * + * @see template_preprocess_text_format_wrapper() + */ +#} +<div class="js-text-format-wrapper text-format-wrapper js-form-item form-item"> + {{ children }} + {% if description %} + {% + set classes = [ + aria_description ? 'description', + ] + %} + <div{{ attributes.addClass(classes) }}>{{ description }}</div> + {% endif %} +</div> diff --git a/web/themes/seven/templates/classy/content/aggregator-item.html.twig b/web/themes/seven/templates/classy/content/aggregator-item.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..16f4428a03d81e039afd2f2129e37bc24709d47d --- /dev/null +++ b/web/themes/seven/templates/classy/content/aggregator-item.html.twig @@ -0,0 +1,31 @@ +{# +/** + * @file + * Theme override to present a feed item in an aggregator page. + * + * Available variables: + * - url: URL to the originating feed item. + * - title: (optional) Title of the feed item. + * - content: All field items. Use {{ content }} to print them all, + * or print a subset such as {{ content.field_example }}. Use + * {{ content|without('field_example') }} to temporarily suppress the printing + * of a given element. + * - attributes: HTML attributes for the wrapper. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * @see template_preprocess_aggregator_item() + */ +#} +<article{{ attributes.addClass('aggregator-item') }}> + {{ title_prefix }} + {% if title %} + <h3 class="feed-item-title"> + <a href="{{ url }}">{{ title }}</a> + </h3> + {% endif %} + {{ title_suffix }} + {{ content }} +</article> diff --git a/web/themes/seven/templates/classy/content/book-node-export-html.html.twig b/web/themes/seven/templates/classy/content/book-node-export-html.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..94a4c24dc714d510299c202402d6e575b739a126 --- /dev/null +++ b/web/themes/seven/templates/classy/content/book-node-export-html.html.twig @@ -0,0 +1,20 @@ +{# +/** + * @file + * Theme override for a single node in a printer-friendly outline. + * + * Available variables: + * - node: Fully loaded node. + * - depth: Depth of the current node inside the outline. + * - title: Node title. + * - content: Node content. + * - children: All the child nodes recursively rendered through this file. + * + * @see template_preprocess_book_node_export_html() + */ +#} +<article id="node-{{ node.id }}" class="section-{{ depth }}"> + <h1 class="book-heading">{{ title }}</h1> + {{ content }} + {{ children }} +</article> diff --git a/web/themes/seven/templates/classy/content/comment.html.twig b/web/themes/seven/templates/classy/content/comment.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f4c9e2a8fcf5a7ce76ce81ac9c2f76b2e18e557b --- /dev/null +++ b/web/themes/seven/templates/classy/content/comment.html.twig @@ -0,0 +1,115 @@ +{# +/** + * @file + * Theme override for comments. + * + * Available variables: + * - author: (optional) Comment author. Can be a link or plain text. + * - content: The content-related items for the comment display. Use + * {{ content }} to print them all, or print a subset such as + * {{ content.field_example }}. Use the following code to temporarily suppress + * the printing of a given child element: + * @code + * {{ content|without('field_example') }} + * @endcode + * - created: (optional) Formatted date and time for when the comment was + * created. Preprocess functions can reformat it by calling + * DateFormatter::format() with the desired parameters on the + * 'comment.created' variable. + * - changed: (optional) Formatted date and time for when the comment was last + * changed. Preprocess functions can reformat it by calling + * DateFormatter::format() with the desired parameters on the + * 'comment.changed' variable. + * - permalink: Comment permalink. + * - submitted: (optional) Submission information created from author and + * created during template_preprocess_comment(). + * - user_picture: (optional) The comment author's profile picture. + * - status: Comment status. Possible values are: + * unpublished, published, or preview. + * - title: (optional) Comment title, linked to the comment. + * - attributes: HTML attributes for the containing element. + * The attributes.class may contain one or more of the following classes: + * - comment: The current template type; e.g., 'theming hook'. + * - by-anonymous: Comment by an unregistered user. + * - by-{entity-type}-author: Comment by the author of the parent entity, + * eg. by-node-author. + * - preview: When previewing a new or edited comment. + * The following applies only to viewers who are registered users: + * - unpublished: An unpublished comment visible only to administrators. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - content_attributes: List of classes for the styling of the comment content. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - threaded: A flag indicating whether the comments are threaded or not. + * + * These variables are provided to give context about the parent comment (if + * any, optional): + * - parent_comment: Full parent comment entity (if any). + * - parent_author: Equivalent to author for the parent comment. + * - parent_created: Equivalent to created for the parent comment. + * - parent_changed: Equivalent to changed for the parent comment. + * - parent_title: Equivalent to title for the parent comment. + * - parent_permalink: Equivalent to permalink for the parent comment. + * - parent: A text string of parent comment submission information created from + * 'parent_author' and 'parent_created' during template_preprocess_comment(). + * This information is presented to help screen readers follow lengthy + * discussion threads. You can hide this from sighted users using the class + * visually-hidden. + * + * These two variables are provided for context: + * - comment: Full comment object. + * - commented_entity: Entity the comments are attached to. + * + * @see template_preprocess_comment() + */ +#} +{% if threaded %} + {{ attach_library('seven/classy.indented') }} +{% endif %} +{% + set classes = [ + 'comment', + 'js-comment', + status != 'published' ? status, + comment.owner.anonymous ? 'by-anonymous', + author_id and author_id == commented_entity.getOwnerId() ? 'by-' ~ commented_entity.getEntityTypeId() ~ '-author', + ] +%} +<article{{ attributes.addClass(classes) }}> + {# + Hide the "new" indicator by default, let a piece of JavaScript ask the + server which comments are new for the user. Rendering the final "new" + indicator here would break the render cache. + #} + <mark class="hidden" data-comment-timestamp="{{ new_indicator_timestamp }}"></mark> + + {% if submitted %} + <footer class="comment__meta"> + {{ user_picture }} + <p class="comment__submitted">{{ submitted }}</p> + + {# + Indicate the semantic relationship between parent and child comments for + accessibility. The list is difficult to navigate in a screen reader + without this information. + #} + {% if parent %} + <p class="parent visually-hidden">{{ parent }}</p> + {% endif %} + + {{ permalink }} + </footer> + {% endif %} + + <div{{ content_attributes.addClass('content') }}> + {% if title %} + {{ title_prefix }} + <h3{{ title_attributes }}>{{ title }}</h3> + {{ title_suffix }} + {% endif %} + {{ content }} + </div> +</article> diff --git a/web/themes/seven/templates/classy/content/links--node.html.twig b/web/themes/seven/templates/classy/content/links--node.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e6cda0d7bb557e1be0c732d456ffcbb353f81269 --- /dev/null +++ b/web/themes/seven/templates/classy/content/links--node.html.twig @@ -0,0 +1,40 @@ +{# +/** + * @file + * Theme override to display node links. + * + * Available variables: + * - attributes: Attributes for the UL containing the list of links. + * - links: Links to be output. + * Each link will have the following elements: + * - link: (optional) A render array that returns a link. See + * template_preprocess_links() for details how it is generated. + * - text: The link text. + * - attributes: HTML attributes for the list item element. + * - text_attributes: (optional) HTML attributes for the span element if no + * 'url' was supplied. + * - heading: (optional) A heading to precede the links. + * - text: The heading text. + * - level: The heading level (e.g. 'h2', 'h3'). + * - attributes: (optional) A keyed list of attributes for the heading. + * If the heading is a string, it will be used as the text of the heading and + * the level will default to 'h2'. + * + * Headings should be used on navigation menus and any list of links that + * consistently appears on multiple pages. To make the heading invisible use + * the 'visually-hidden' CSS class. Do not use 'display:none', which + * removes it from screen readers and assistive technology. Headings allow + * screen reader and keyboard only users to navigate to or skip the links. + * See http://juicystudio.com/article/screen-readers-display-none.php and + * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. + * + * @see template_preprocess_links() + * + * @ingroup themeable + */ +#} +{% if links %} + <div class="node__links"> + {% include "links.html.twig" %} + </div> +{% endif %} diff --git a/web/themes/seven/templates/classy/content/mark.html.twig b/web/themes/seven/templates/classy/content/mark.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..9219915ce5d567258169d4b58cdf44a32263e0b4 --- /dev/null +++ b/web/themes/seven/templates/classy/content/mark.html.twig @@ -0,0 +1,20 @@ +{# +/** + * @file + * Theme override for a marker for new or updated content. + * + * Available variables: + * - status: Number representing the marker status to display. Use the constants + * below for comparison: + * - MARK_NEW + * - MARK_UPDATED + * - MARK_READ + */ +#} +{% if logged_in %} + {% if status is constant('MARK_NEW') %} + <span class="marker">{{ 'New'|t }}</span> + {% elseif status is constant('MARK_UPDATED') %} + <span class="marker">{{ 'Updated'|t }}</span> + {% endif %} +{% endif %} diff --git a/web/themes/seven/templates/classy/content/media-embed-error.html.twig b/web/themes/seven/templates/classy/content/media-embed-error.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4b1dc926b6f0ea1f7a8060b1141aa122b7480f91 --- /dev/null +++ b/web/themes/seven/templates/classy/content/media-embed-error.html.twig @@ -0,0 +1,21 @@ +{# +/** + * @file + * Theme override for a missing media error. + * + * Available variables + * - message: The message text. + * - attributes: HTML attributes for the containing element. + * + * When a response from the back end can't be returned, a related error message + * is displayed from JavaScript. + * + * @see Drupal.theme.mediaEmbedPreviewError + * + * @ingroup themeable + */ +#} +{{ attach_library('seven/classy.media_embed_error') }} +<div{{ attributes.addClass('media-embed-error', 'media-embed-error--missing-source') }}> + {{ message }} +</div> diff --git a/web/themes/seven/templates/classy/content/media.html.twig b/web/themes/seven/templates/classy/content/media.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..422030e9d027b79f2b77d252f09bad1fb7821bdd --- /dev/null +++ b/web/themes/seven/templates/classy/content/media.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Theme override to display a media item. + * + * Available variables: + * - name: Name of the media. + * - content: Media content. + * + * @see template_preprocess_media() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'media', + 'media--type-' ~ media.bundle()|clean_class, + not media.isPublished() ? 'media--unpublished', + view_mode ? 'media--view-mode-' ~ view_mode|clean_class, + ] +%} +<article{{ attributes.addClass(classes) }}> + {{ title_suffix.contextual_links }} + {% if content %} + {{ content }} + {% endif %} +</article> diff --git a/web/themes/seven/templates/classy/content/node.html.twig b/web/themes/seven/templates/classy/content/node.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..eedfd86d379073add25be3d1014c487a86dff7d8 --- /dev/null +++ b/web/themes/seven/templates/classy/content/node.html.twig @@ -0,0 +1,105 @@ +{# +/** + * @file + * Theme override to display a node. + * + * Available variables: + * - node: The node entity with limited access to object properties and methods. + * Only method names starting with "get", "has", or "is" and a few common + * methods such as "id", "label", and "bundle" are available. For example: + * - node.getCreatedTime() will return the node creation timestamp. + * - node.hasField('field_example') returns TRUE if the node bundle includes + * field_example. (This does not indicate the presence of a value in this + * field.) + * - node.isPublished() will return whether the node is published or not. + * Calling other methods, such as node.delete(), will result in an exception. + * See \Drupal\node\Entity\Node for a full list of public properties and + * methods for the node object. + * - label: (optional) The title of the node. + * - content: All node items. Use {{ content }} to print them all, + * or print a subset such as {{ content.field_example }}. Use + * {{ content|without('field_example') }} to temporarily suppress the printing + * of a given child element. + * - author_picture: The node author user entity, rendered using the "compact" + * view mode. + * - metadata: Metadata for this node. + * - date: (optional) Themed creation date field. + * - author_name: (optional) Themed author name field. + * - url: Direct URL of the current node. + * - display_submitted: Whether submission information should be displayed. + * - attributes: HTML attributes for the containing element. + * The attributes.class element may contain one or more of the following + * classes: + * - node: The current template type (also known as a "theming hook"). + * - node--type-[type]: The current node type. For example, if the node is an + * "Article" it would result in "node--type-article". Note that the machine + * name will often be in a short form of the human readable label. + * - node--view-mode-[view_mode]: The View Mode of the node; for example, a + * teaser would result in: "node--view-mode-teaser", and + * full: "node--view-mode-full". + * The following are controlled through the node publishing options. + * - node--promoted: Appears on nodes promoted to the front page. + * - node--sticky: Appears on nodes ordered above other non-sticky nodes in + * teaser listings. + * - node--unpublished: Appears on unpublished nodes visible only to site + * admins. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - content_attributes: Same as attributes, except applied to the main + * content tag that appears in the template. + * - author_attributes: Same as attributes, except applied to the author of + * the node tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - view_mode: View mode; for example, "teaser" or "full". + * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. + * - page: Flag for the full page state. Will be true if view_mode is 'full'. + * - readmore: Flag for more state. Will be true if the teaser content of the + * node cannot hold the main body content. + * - logged_in: Flag for authenticated user status. Will be true when the + * current user is a logged-in member. + * - is_admin: Flag for admin user status. Will be true when the current user + * is an administrator. + * + * @see template_preprocess_node() + * + */ +#} +{% + set classes = [ + 'node', + 'node--type-' ~ node.bundle|clean_class, + node.isPromoted() ? 'node--promoted', + node.isSticky() ? 'node--sticky', + not node.isPublished() ? 'node--unpublished', + view_mode ? 'node--view-mode-' ~ view_mode|clean_class, + ] +%} +{{ attach_library('seven/classy.node') }} +<article{{ attributes.addClass(classes) }}> + + {{ title_prefix }} + {% if label and not page %} + <h2{{ title_attributes }}> + <a href="{{ url }}" rel="bookmark">{{ label }}</a> + </h2> + {% endif %} + {{ title_suffix }} + + {% if display_submitted %} + <footer class="node__meta"> + {{ author_picture }} + <div{{ author_attributes.addClass('node__submitted') }}> + {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %} + {{ metadata }} + </div> + </footer> + {% endif %} + + <div{{ content_attributes.addClass('node__content') }}> + {{ content }} + </div> + +</article> diff --git a/web/themes/seven/templates/classy/content/page-title.html.twig b/web/themes/seven/templates/classy/content/page-title.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e1de7266074e092d5d5d99d1c0c12bc36955989b --- /dev/null +++ b/web/themes/seven/templates/classy/content/page-title.html.twig @@ -0,0 +1,19 @@ +{# +/** + * @file + * Theme override for page titles. + * + * Available variables: + * - title_attributes: HTML attributes for the page title element. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title: The page title, for use in the actual content. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + */ +#} +{{ title_prefix }} +{% if title %} + <h1{{ title_attributes.addClass('page-title') }}>{{ title }}</h1> +{% endif %} +{{ title_suffix }} diff --git a/web/themes/seven/templates/classy/content/search-result.html.twig b/web/themes/seven/templates/classy/content/search-result.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..150b8d903e9d920df52e439afe3255c638b11fc5 --- /dev/null +++ b/web/themes/seven/templates/classy/content/search-result.html.twig @@ -0,0 +1,72 @@ +{# +/** + * @file + * Theme override for displaying a single search result. + * + * This template renders a single search result. The list of results is + * rendered using '#theme' => 'item_list', with suggestions of: + * - item_list__search_results__(plugin_id) + * - item_list__search_results + * + * Available variables: + * - url: URL of the result. + * - title: Title of the result. + * - snippet: A small preview of the result. Does not apply to user searches. + * - info: String of all the meta information ready for print. Does not apply + * to user searches. + * - plugin_id: The machine-readable name of the plugin being executed,such + * as "node_search" or "user_search". + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - info_split: Contains same data as info, but split into separate parts. + * - info_split.type: Node type (or item type string supplied by module). + * - info_split.user: Author of the node linked to users profile. Depends + * on permission. + * - info_split.date: Last update of the node. Short formatted. + * - info_split.comment: Number of comments output as "% comments", % + * being the count. (Depends on comment.module). + * @todo The info variable needs to be made drillable and each of these sub + * items should instead be within info and renamed info.foo, info.bar, etc. + * + * Other variables: + * - title_attributes: HTML attributes for the title. + * - content_attributes: HTML attributes for the content. + * + * Since info_split is keyed, a direct print of the item is possible. + * This array does not apply to user searches so it is recommended to check + * for its existence before printing. The default keys of 'type', 'user' and + * 'date' always exist for node searches. Modules may provide other data. + * @code + * {% if (info_split.comment) %} + * <span class="info-comment"> + * {{ info_split.comment }} + * </span> + * {% endif %} + * @endcode + * + * To check for all available data within info_split, use the code below. + * @code + * <pre> + * {{ dump(info_split) }} + * </pre> + * @endcode + * + * @see template_preprocess_search_result() + */ +#} +{{ attach_library('seven/classy.search-results') }} +{{ title_prefix }} +<h3{{ title_attributes.addClass('search-result__title') }}> + <a href="{{ url }}">{{ title }}</a> +</h3> +{{ title_suffix }} +<div class="search-result__snippet-info"> + {% if snippet %} + <p{{ content_attributes.addClass('search-result__snippet') }}>{{ snippet }}</p> + {% endif %} + {% if info %} + <p class="search-result__info">{{ info }}</p> + {% endif %} +</div> diff --git a/web/themes/seven/templates/classy/content/taxonomy-term.html.twig b/web/themes/seven/templates/classy/content/taxonomy-term.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..6478b507d006fdd2386ab35f7eef09eb89be16b3 --- /dev/null +++ b/web/themes/seven/templates/classy/content/taxonomy-term.html.twig @@ -0,0 +1,41 @@ +{# +/** + * @file + * Theme override to display a taxonomy term. + * + * Available variables: + * - url: URL of the current term. + * - name: (optional) Name of the current term. + * - content: Items for the content of the term (fields and description). + * Use 'content' to print them all, or print a subset such as + * 'content.description'. Use the following code to exclude the + * printing of a given child element: + * @code + * {{ content|without('description') }} + * @endcode + * - attributes: HTML attributes for the wrapper. + * - page: Flag for the full page state. + * - term: The taxonomy term entity, including: + * - id: The ID of the taxonomy term. + * - bundle: Machine name of the current vocabulary. + * - view_mode: View mode, e.g. 'full', 'teaser', etc. + * + * @see template_preprocess_taxonomy_term() + */ +#} +{% + set classes = [ + 'taxonomy-term', + 'vocabulary-' ~ term.bundle|clean_class, + ] +%} +<div{{ attributes.setAttribute('id', 'taxonomy-term-' ~ term.id).addClass(classes) }}> + {{ title_prefix }} + {% if name and not page %} + <h2><a href="{{ url }}">{{ name }}</a></h2> + {% endif %} + {{ title_suffix }} + <div class="content"> + {{ content }} + </div> +</div> diff --git a/web/themes/seven/templates/classy/dataset/aggregator-feed.html.twig b/web/themes/seven/templates/classy/dataset/aggregator-feed.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..9eacccb60481cf07f94c7427af4c4f193f1ca939 --- /dev/null +++ b/web/themes/seven/templates/classy/dataset/aggregator-feed.html.twig @@ -0,0 +1,36 @@ +{# +/** + * @file + * Theme override to present an aggregator feed. + * + * The contents are rendered above feed listings when browsing source feeds. + * For example, "example.com/aggregator/sources/1". + * + * Available variables: + * - title: (optional) Title of the feed item. + * - content: All field items. Use {{ content }} to print them all, + * or print a subset such as {{ content.field_example }}. Use + * {{ content|without('field_example') }} to temporarily suppress the printing + * of a given element. + * - attributes: HTML attributes for the wrapper. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * @see template_preprocess_aggregator_feed() + */ +#} +<div{{ attributes.addClass('aggregator-feed') }}> + + {{ title_prefix }} + {% if title and not full %} + <h2{{ title_attributes }}>{{ title }}</h2> + {% endif %} + {{ title_suffix }} + + {{ content }} + +</div> diff --git a/web/themes/seven/templates/classy/dataset/forum-icon.html.twig b/web/themes/seven/templates/classy/dataset/forum-icon.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..d6be503bb2af344d3f149ce285f0980c0878fc28 --- /dev/null +++ b/web/themes/seven/templates/classy/dataset/forum-icon.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Theme override to display a status icon for a forum post. + * + * Available variables: + * - attributes: HTML attributes to be applied to the wrapper element. + * - class: HTML classes that determine which icon to display. May be one of + * 'hot', 'hot-new', 'new', 'default', 'closed', or 'sticky'. + * - title: Text alternative for the forum icon. + * - icon_title: Text alternative for the forum icon, same as above. + * - new_posts: '1' when this topic contains new posts, otherwise '0'. + * - first_new: '1' when this is the first topic with new posts, otherwise '0'. + * - icon_status: Indicates which status icon should be used. + * + * @see template_preprocess_forum_icon() + */ +#} +{% + set classes = [ + 'forum__icon', + 'forum__topic-status--' ~ icon_status, + ] +%} +<div{{ attributes.addClass(classes) }}> + {% if first_new -%} + <a id="new"></a> + {%- endif %} + <span class="visually-hidden">{{ icon_title }}</span> +</div> diff --git a/web/themes/seven/templates/classy/dataset/forum-list.html.twig b/web/themes/seven/templates/classy/dataset/forum-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..d8523f1598276ca42a5d759fd45852f871158774 --- /dev/null +++ b/web/themes/seven/templates/classy/dataset/forum-list.html.twig @@ -0,0 +1,79 @@ +{# +/** + * @file + * Theme override to display a list of forums and containers. + * + * Available variables: + * - forums: A collection of forums and containers to display. It is keyed to + * the numeric IDs of all child forums and containers. Each forum in forums + * contains: + * - is_container: A flag indicating if the forum can contain other + * forums. Otherwise, the forum can only contain topics. + * - depth: How deep the forum is in the current hierarchy. + * - zebra: 'even' or 'odd', used for row class. + * - icon_class: 'default' or 'new', used for forum icon class. + * - icon_title: Text alternative for the forum icon. + * - name: The name of the forum. + * - link: The URL to link to this forum. + * - description: The description field for the forum, containing: + * - value: The descriptive text for the forum. + * - new_topics: A flag indicating if the forum contains unread posts. + * - new_url: A URL to the forum's unread posts. + * - new_text: Text for the above URL, which tells how many new posts. + * - old_topics: A count of posts that have already been read. + * - num_posts: The total number of posts in the forum. + * - last_reply: Text representing the last time a forum was posted or + * commented in. + * - forum_id: Forum ID for the current forum. Parent to all items within the + * forums array. + * + * @see template_preprocess_forum_list() + */ +#} +<table id="forum-{{ forum_id }}"> + <thead> + <tr> + <th>{{ 'Forum'|t }}</th> + <th>{{ 'Topics'|t }}</th> + <th>{{ 'Posts'|t }}</th> + <th>{{ 'Last post'|t }}</th> + </tr> + </thead> + <tbody> + {% for child_id, forum in forums %} + <tr id="forum-list-{{ child_id }}" class="{{ forum.zebra }}"> + <td {% if forum.is_container == true -%} + colspan="4" class="container" + {%- else -%} + class="forum-list__forum" + {%- endif -%}> + {# + Enclose the contents of this cell with X divs, where X is the + depth this forum resides at. This will allow us to use CSS + left-margin for indenting. + #} + {% if forum.depth > 0 %}{% for i in 1..forum.depth %}<div class="indented">{% endfor %}{% endif %} + <div class="forum__icon forum-status-{{ forum.icon_class }}" title="{{ forum.icon_title }}"> + <span class="visually-hidden">{{ forum.icon_title }}</span> + </div> + <div class="forum__name"><a href="{{ forum.link }}">{{ forum.label }}</a></div> + {% if forum.description.value %} + <div class="forum__description">{{ forum.description.value }}</div> + {% endif %} + {% if forum.depth > 0 %}{% for i in 1..forum.depth %}</div>{% endfor %}{% endif %} + </td> + {% if forum.is_container == false %} + <td class="forum__topics"> + {{ forum.num_topics }} + {% if forum.new_topics == true %} + <br /> + <a href="{{ forum.new_url }}">{{ forum.new_text }}</a> + {% endif %} + </td> + <td class="forum__posts">{{ forum.num_posts }}</td> + <td class="forum__last-reply">{{ forum.last_reply }}</td> + {% endif %} + </tr> + {% endfor %} + </tbody> +</table> diff --git a/web/themes/seven/templates/classy/dataset/forums.html.twig b/web/themes/seven/templates/classy/dataset/forums.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..a1bf63c249672d80f0d8b0f3bf12c046ac459c68 --- /dev/null +++ b/web/themes/seven/templates/classy/dataset/forums.html.twig @@ -0,0 +1,24 @@ +{# +/** + * @file + * Theme override to display a forum. + * + * May contain forum containers as well as forum topics. + * + * Available variables: + * - forums: The forums to display (as processed by forum-list.html.twig). + * - topics: The topics to display. + * - topics_pager: The topics pager. + * - forums_defined: A flag to indicate that the forums are configured. + * + * @see template_preprocess_forums() + */ +#} +{{ attach_library('seven/classy.forum') }} +{% if forums_defined %} + <div class="forum"> + {{ forums }} + {{ topics }} + {{ topics_pager }} + </div> +{% endif %} diff --git a/web/themes/seven/templates/classy/dataset/item-list--search-results.html.twig b/web/themes/seven/templates/classy/dataset/item-list--search-results.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e9928fd776600c762b9f096370e9978ff1c6495a --- /dev/null +++ b/web/themes/seven/templates/classy/dataset/item-list--search-results.html.twig @@ -0,0 +1,29 @@ +{% extends "item-list.html.twig" %} +{# +/** + * @file + * Theme override for an item list of search results. + * + * Available variables: + * - items: A list of items. Each item contains: + * - attributes: HTML attributes to be applied to each list item. + * - value: The content of the list element. + * - title: The title of the list. + * - list_type: The tag for list element ("ul" or "ol"). + * - attributes: HTML attributes to be applied to the list. + * - empty: A message to display when there are no items. Allowed value is a + * string or render array. + * - context: An list of contextual data associated with the list. For search + * results, the following data is set: + * - plugin: The search plugin ID, for example "node_search". + * + * @see template_preprocess_item_list() + */ +#} +{% + set classes = [ + 'search-results', + context.plugin ~ '-results', + ] +%} +{% set attributes = attributes.addClass(classes) %} diff --git a/web/themes/seven/templates/classy/dataset/item-list.html.twig b/web/themes/seven/templates/classy/dataset/item-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..20541b0b7e6652761504f747ad9972a2759fe27b --- /dev/null +++ b/web/themes/seven/templates/classy/dataset/item-list.html.twig @@ -0,0 +1,41 @@ +{# +/** + * @file + * Theme override for an item list. + * + * Available variables: + * - items: A list of items. Each item contains: + * - attributes: HTML attributes to be applied to each list item. + * - value: The content of the list element. + * - title: The title of the list. + * - list_type: The tag for list element ("ul" or "ol"). + * - wrapper_attributes: HTML attributes to be applied to the list wrapper. + * - attributes: HTML attributes to be applied to the list. + * - empty: A message to display when there are no items. Allowed value is a + * string or render array. + * - context: A list of contextual data associated with the list. May contain: + * - list_style: The custom list style. + * + * @see template_preprocess_item_list() + */ +#} +{% if context.list_style %} + {%- set wrapper_attributes = wrapper_attributes.addClass('item-list--' ~ context.list_style) %} + {%- set attributes = attributes.addClass('item-list__' ~ context.list_style) %} +{% endif %} +{% if items or empty -%} + <div{{ wrapper_attributes.addClass('item-list') }}> + {%- if title is not empty -%} + <h3>{{ title }}</h3> + {%- endif -%} + {%- if items -%} + <{{ list_type }}{{ attributes }}> + {%- for item in items -%} + <li{{ item.attributes }}>{{ item.value }}</li> + {%- endfor -%} + </{{ list_type }}> + {%- else -%} + {{- empty -}} + {%- endif -%} + </div> +{%- endif %} diff --git a/web/themes/seven/templates/classy/dataset/table.html.twig b/web/themes/seven/templates/classy/dataset/table.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..2afa9c155642349eea89066b17ad245044558b80 --- /dev/null +++ b/web/themes/seven/templates/classy/dataset/table.html.twig @@ -0,0 +1,113 @@ +{# +/** + * @file + * Theme override to display a table. + * + * Available variables: + * - attributes: HTML attributes to apply to the <table> tag. + * - caption: A localized string for the <caption> tag. + * - colgroups: Column groups. Each group contains the following properties: + * - attributes: HTML attributes to apply to the <col> tag. + * Note: Drupal currently supports only one table header row, see + * https://www.drupal.org/node/893530 and + * http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7#comment-5109. + * - header: Table header cells. Each cell contains the following properties: + * - tag: The HTML tag name to use; either 'th' or 'td'. + * - attributes: HTML attributes to apply to the tag. + * - content: A localized string for the title of the column. + * - field: Field name (required for column sorting). + * - sort: Default sort order for this column ("asc" or "desc"). + * - sticky: A flag indicating whether to use a "sticky" table header. + * - rows: Table rows. Each row contains the following properties: + * - attributes: HTML attributes to apply to the <tr> tag. + * - data: Table cells. + * - no_striping: A flag indicating that the row should receive no + * 'even / odd' styling. Defaults to FALSE. + * - cells: Table cells of the row. Each cell contains the following keys: + * - tag: The HTML tag name to use; either 'th' or 'td'. + * - attributes: Any HTML attributes, such as "colspan", to apply to the + * table cell. + * - content: The string to display in the table cell. + * - active_table_sort: A boolean indicating whether the cell is the active + table sort. + * - footer: Table footer rows, in the same format as the rows variable. + * - empty: The message to display in an extra row if table does not have + * any rows. + * - no_striping: A boolean indicating that the row should receive no striping. + * - header_columns: The number of columns in the header. + * + * @see template_preprocess_table() + */ +#} +<table{{ attributes }}> + {% if caption %} + <caption>{{ caption }}</caption> + {% endif %} + + {% for colgroup in colgroups %} + {% if colgroup.cols %} + <colgroup{{ colgroup.attributes }}> + {% for col in colgroup.cols %} + <col{{ col.attributes }} /> + {% endfor %} + </colgroup> + {% else %} + <colgroup{{ colgroup.attributes }} /> + {% endif %} + {% endfor %} + + {% if header %} + <thead> + <tr> + {% for cell in header %} + {% + set cell_classes = [ + cell.active_table_sort ? 'is-active', + ] + %} + <{{ cell.tag }}{{ cell.attributes.addClass(cell_classes) }}> + {{- cell.content -}} + </{{ cell.tag }}> + {% endfor %} + </tr> + </thead> + {% endif %} + + {% if rows %} + <tbody> + {% for row in rows %} + {% + set row_classes = [ + not no_striping ? cycle(['odd', 'even'], loop.index0), + ] + %} + <tr{{ row.attributes.addClass(row_classes) }}> + {% for cell in row.cells %} + <{{ cell.tag }}{{ cell.attributes }}> + {{- cell.content -}} + </{{ cell.tag }}> + {% endfor %} + </tr> + {% endfor %} + </tbody> + {% elseif empty %} + <tbody> + <tr class="odd"> + <td colspan="{{ header_columns }}" class="empty message">{{ empty }}</td> + </tr> + </tbody> + {% endif %} + {% if footer %} + <tfoot> + {% for row in footer %} + <tr{{ row.attributes }}> + {% for cell in row.cells %} + <{{ cell.tag }}{{ cell.attributes }}> + {{- cell.content -}} + </{{ cell.tag }}> + {% endfor %} + </tr> + {% endfor %} + </tfoot> + {% endif %} +</table> diff --git a/web/themes/seven/templates/classy/field/field--comment.html.twig b/web/themes/seven/templates/classy/field/field--comment.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1ec3ee64b104b032ae9486871d7565890ff580a0 --- /dev/null +++ b/web/themes/seven/templates/classy/field/field--comment.html.twig @@ -0,0 +1,57 @@ +{# +/** + * @file + * Theme override for comment fields. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - label_hidden: Whether to show the field label or not. + * - title_attributes: HTML attributes for the title. + * - label: The label for the field. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional title output populated by modules, intended to + * be displayed after the main title tag that appears in the template. + * - comments: List of comments rendered through comment.html.twig. + * - comment_form: The 'Add new comment' form. + * - comment_display_mode: Is the comments are threaded. + * - comment_type: The comment type bundle ID for the comment field. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * + * @see template_preprocess_field() + * @see comment_preprocess_field() + */ +#} +{% + set classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + 'comment-wrapper', + ] +%} +{% + set title_classes = [ + 'title', + label_display == 'visually_hidden' ? 'visually-hidden', + ] +%} +<section{{ attributes.addClass(classes) }}> + {% if comments and not label_hidden %} + {{ title_prefix }} + <h2{{ title_attributes.addClass(title_classes) }}>{{ label }}</h2> + {{ title_suffix }} + {% endif %} + + {{ comments }} + + {% if comment_form %} + <h2 class="title comment-form__title">{{ 'Add new comment'|t }}</h2> + {{ comment_form }} + {% endif %} + +</section> diff --git a/web/themes/seven/templates/classy/field/field--node--created.html.twig b/web/themes/seven/templates/classy/field/field--node--created.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f4d1acd439b412ede7b49fb0ff16e069962a6dd8 --- /dev/null +++ b/web/themes/seven/templates/classy/field/field--node--created.html.twig @@ -0,0 +1,44 @@ +{# +/** + * @file + * Theme override for the node created field. + * + * This is an override of field.html.twig for the node created field. See that + * template for documentation about its details and overrides. + * + * Available variables: + * - attributes: HTML attributes for the containing span element. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * - is_inline: If false, display an ordinary field. + * If true, display an inline format, suitable for inside elements such as + * <span>, <h2> and so on. + * + * @see field.html.twig + * @see node_preprocess_field__node() + * + * @todo Delete as part of https://www.drupal.org/node/3015623 + */ +#} +{% if not is_inline %} + {% include "field.html.twig" %} +{% else %} +{% + set classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + ] +%} +<span{{ attributes.addClass(classes) }}> + {%- for item in items -%} + {{ item.content }} + {%- endfor -%} +</span> +{% endif %} diff --git a/web/themes/seven/templates/classy/field/field--node--title.html.twig b/web/themes/seven/templates/classy/field/field--node--title.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e79c39eb52cc9ad55449993e583026731d4806c5 --- /dev/null +++ b/web/themes/seven/templates/classy/field/field--node--title.html.twig @@ -0,0 +1,44 @@ +{# +/** + * @file + * Theme override for the node title field. + * + * This is an override of field.html.twig for the node title field. See that + * template for documentation about its details and overrides. + * + * Available variables: + * - attributes: HTML attributes for the containing span element. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * - is_inline: If false, display an ordinary field. + * If true, display an inline format, suitable for inside elements such as + * <span>, <h2> and so on. + * + * @see field.html.twig + * @see node_preprocess_field__node() + * + * @todo Delete as part of https://www.drupal.org/node/3015623 + */ +#} +{% if not is_inline %} + {% include "field.html.twig" %} +{% else %} +{% + set classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + ] +%} +<span{{ attributes.addClass(classes) }}> + {%- for item in items -%} + {{ item.content }} + {%- endfor -%} +</span> +{% endif %} diff --git a/web/themes/seven/templates/classy/field/field--node--uid.html.twig b/web/themes/seven/templates/classy/field/field--node--uid.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..0a381083246a5fd8a4ad4f9738f088fc31760bc5 --- /dev/null +++ b/web/themes/seven/templates/classy/field/field--node--uid.html.twig @@ -0,0 +1,44 @@ +{# +/** + * @file + * Theme override for the node user field. + * + * This is an override of field.html.twig for the node user field. See that + * template for documentation about its details and overrides. + * + * Available variables: + * - attributes: HTML attributes for the containing span element. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * - is_inline: If false, display an ordinary field. + * If true, display an inline format, suitable for inside elements such as + * <span>, <h2> and so on. + * + * @see field.html.twig + * @see node_preprocess_field__node() + * + * @todo Delete as part of https://www.drupal.org/node/3015623 + */ +#} +{% if not is_inline %} + {% include "field.html.twig" %} +{% else %} +{% + set classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + ] +%} +<span{{ attributes.addClass(classes) }}> + {%- for item in items -%} + {{ item.content }} + {%- endfor -%} +</span> +{% endif %} diff --git a/web/themes/seven/templates/classy/field/field--text-long.html.twig b/web/themes/seven/templates/classy/field/field--text-long.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..07ce721d2d70e767cb74b466243e590f97dfe5ef --- /dev/null +++ b/web/themes/seven/templates/classy/field/field--text-long.html.twig @@ -0,0 +1 @@ +{% extends "field--text.html.twig" %} diff --git a/web/themes/seven/templates/classy/field/field--text-with-summary.html.twig b/web/themes/seven/templates/classy/field/field--text-with-summary.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..07ce721d2d70e767cb74b466243e590f97dfe5ef --- /dev/null +++ b/web/themes/seven/templates/classy/field/field--text-with-summary.html.twig @@ -0,0 +1 @@ +{% extends "field--text.html.twig" %} diff --git a/web/themes/seven/templates/classy/field/field--text.html.twig b/web/themes/seven/templates/classy/field/field--text.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..5d1690c3ec98fe51e2ae2d7c4f5cbb2b72102b3c --- /dev/null +++ b/web/themes/seven/templates/classy/field/field--text.html.twig @@ -0,0 +1,28 @@ +{% extends "field.html.twig" %} +{# +/** + * @file + * Default theme implementation for a text field. + * + * A 'clearfix' class is added, because 'text' fields have a 'format' property + * that allows a Text Format to be associated with the entered text, which then + * applies filtering on output. A common use case is to align images to the left + * or right, and without this 'clearfix' class, such aligned images may be + * rendered outside of the 'text' field formatter's boundaries, and hence + * overlap with other fields. By setting the 'clearfix' class on all 'text' + * fields, we prevent that. + * + * @see https://www.drupal.org/node/2358529 + * + * A 'text-formatted' class is added to assist with default styling of base + * elements such as paragraphs and lists that may not have classes assigned to + * them. This allows user entered content to have default styling without + * interfering with the styles of other UI components such as system generated + * lists or other dynamic content. + * + * @see https://www.drupal.org/node/2539860 + * + * @ingroup themeable + */ +#} +{% set attributes = attributes.addClass('clearfix', 'text-formatted') %} diff --git a/web/themes/seven/templates/classy/field/field.html.twig b/web/themes/seven/templates/classy/field/field.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1cfbd651ce16042e853f73c243590019058c4573 --- /dev/null +++ b/web/themes/seven/templates/classy/field/field.html.twig @@ -0,0 +1,81 @@ +{# +/** + * @file + * Theme override for a field. + * + * To override output, copy the "field.html.twig" from the templates directory + * to your theme's directory and customize it, just like customizing other + * Drupal templates such as page.html.twig or node.html.twig. + * + * Instead of overriding the theming for all fields, you can also just override + * theming for a subset of fields using + * @link themeable Theme hook suggestions. @endlink For example, + * here are some theme hook suggestions that can be used for a field_foo field + * on an article node type: + * - field--node--field-foo--article.html.twig + * - field--node--field-foo.html.twig + * - field--node--article.html.twig + * - field--field-foo.html.twig + * - field--text-with-summary.html.twig + * - field.html.twig + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - label_hidden: Whether to show the field label or not. + * - title_attributes: HTML attributes for the title. + * - label: The label for the field. + * - multiple: TRUE if a field can contain multiple items. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item's content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * + * + * @see template_preprocess_field() + */ +#} +{% + set classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + label_display == 'inline' ? 'clearfix', + ] +%} +{% + set title_classes = [ + 'field__label', + label_display == 'visually_hidden' ? 'visually-hidden', + ] +%} + +{% if label_hidden %} + {% if multiple %} + <div{{ attributes.addClass(classes, 'field__items') }}> + {% for item in items %} + <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div> + {% endfor %} + </div> + {% else %} + {% for item in items %} + <div{{ attributes.addClass(classes, 'field__item') }}>{{ item.content }}</div> + {% endfor %} + {% endif %} +{% else %} + <div{{ attributes.addClass(classes) }}> + <div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div> + {% if multiple %} + <div class="field__items"> + {% endif %} + {% for item in items %} + <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div> + {% endfor %} + {% if multiple %} + </div> + {% endif %} + </div> +{% endif %} diff --git a/web/themes/seven/templates/classy/field/file-audio.html.twig b/web/themes/seven/templates/classy/field/file-audio.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..60ac095f9938423051df76fc4f1df66512851c52 --- /dev/null +++ b/web/themes/seven/templates/classy/field/file-audio.html.twig @@ -0,0 +1,23 @@ +{# +/** +* @file +* Default theme implementation to display the file entity as an audio tag. +* +* Available variables: +* - attributes: An array of HTML attributes, intended to be added to the +* audio tag. +* - files: And array of files to be added as sources for the audio tag. Each +* element is an array with the following elements: +* - file: The full file object. +* - source_attributes: An array of HTML attributes for to be added to the +* source tag. +* +* @ingroup themeable +*/ +#} +{{ attach_library('seven/classy.file') }} +<audio {{ attributes }}> + {% for file in files %} + <source {{ file.source_attributes }} /> + {% endfor %} +</audio> diff --git a/web/themes/seven/templates/classy/field/file-video.html.twig b/web/themes/seven/templates/classy/field/file-video.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4ed6794a095ba07115bfd360d0e6bba89e152803 --- /dev/null +++ b/web/themes/seven/templates/classy/field/file-video.html.twig @@ -0,0 +1,23 @@ +{# +/** +* @file +* Default theme implementation to display the file entity as a video tag. +* +* Available variables: +* - attributes: An array of HTML attributes, intended to be added to the +* video tag. +* - files: And array of files to be added as sources for the video tag. Each +* element is an array with the following elements: +* - file: The full file object. +* - source_attributes: An array of HTML attributes for to be added to the +* source tag. +* +* @ingroup themeable +*/ +#} +{{ attach_library('seven/classy.file') }} +<video {{ attributes }}> + {% for file in files %} + <source {{ file.source_attributes }} /> + {% endfor %} +</video> diff --git a/web/themes/seven/templates/classy/field/image.html.twig b/web/themes/seven/templates/classy/field/image.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..31f782bb60a899f1682037f4c3f2b2707c543874 --- /dev/null +++ b/web/themes/seven/templates/classy/field/image.html.twig @@ -0,0 +1,18 @@ +{# +/** + * @file + * Theme override of an image. + * + * Available variables: + * - attributes: HTML attributes for the img tag. + * - style_name: (optional) The name of the image style applied. + * + * @see template_preprocess_image() + */ +#} +{% +set classes = [ + style_name ? 'image-style-' ~ style_name|clean_class, +] +%} +<img{{ attributes.addClass(classes) }} /> diff --git a/web/themes/seven/templates/classy/field/link-formatter-link-separate.html.twig b/web/themes/seven/templates/classy/field/link-formatter-link-separate.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..52c8d29a77fc11c037ee2811e4f2eb30f67368aa --- /dev/null +++ b/web/themes/seven/templates/classy/field/link-formatter-link-separate.html.twig @@ -0,0 +1,22 @@ +{# +/** + * @file + * Theme override of a link with separate title and URL elements. + * + * Available variables: + * - link: The link that has already been formatted by l(). + * - title: (optional) A descriptive or alternate title for the link, which may + * be different than the actual link text. + * + * @see template_preprocess() + * @see template_preprocess_link_formatter_link_separate() + */ +#} +{% apply spaceless %} + <div class="link-item"> + {% if title %} + <div class="link-title">{{ title }}</div> + {% endif %} + <div class="link-url">{{ link }}</div> + </div> +{% endapply %} diff --git a/web/themes/seven/templates/classy/field/time.html.twig b/web/themes/seven/templates/classy/field/time.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f2912b7f9872f9d2343b2ebf04064f76c4b85c77 --- /dev/null +++ b/web/themes/seven/templates/classy/field/time.html.twig @@ -0,0 +1,22 @@ +{# +/** + * @file + * Theme override for a date / time element. + * + * Available variables + * - timestamp: (optional) A UNIX timestamp for the datetime attribute. If the + * datetime cannot be represented as a UNIX timestamp, use a valid datetime + * attribute value in attributes.datetime. + * - text: (optional) The content to display within the <time> element. + * Defaults to a human-readable representation of the timestamp value or the + * datetime attribute value using DateFormatter::format(). + * - attributes: (optional) HTML attributes to apply to the <time> element. + * A datetime attribute in 'attributes' overrides the 'timestamp'. To + * create a valid datetime attribute value from a UNIX timestamp, use + * DateFormatter::format() with one of the predefined 'html_*' formats. + * + * @see template_preprocess_time() + * @see http://www.w3.org/TR/html5-author/the-time-element.html#attr-time-datetime + */ +#} +<time{{ attributes.addClass('datetime') }}>{{ text }}</time> diff --git a/web/themes/seven/templates/classy/form/datetime-form.html.twig b/web/themes/seven/templates/classy/form/datetime-form.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f56182fdf2aa5c031a1966110a974d14a215b356 --- /dev/null +++ b/web/themes/seven/templates/classy/form/datetime-form.html.twig @@ -0,0 +1,15 @@ +{# +/** + * @file + * Theme override of a datetime form element. + * + * Available variables: + * - attributes: HTML attributes for the datetime form element. + * - content: The datelist form element to be output. + * + * @see template_preprocess_datetime_form() + */ +#} +<div{{ attributes.addClass('container-inline') }}> + {{ content }} +</div> diff --git a/web/themes/seven/templates/classy/form/datetime-wrapper.html.twig b/web/themes/seven/templates/classy/form/datetime-wrapper.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..5b52f2daa380f2ef7bb1a0cc15f433c47b2713ff --- /dev/null +++ b/web/themes/seven/templates/classy/form/datetime-wrapper.html.twig @@ -0,0 +1,36 @@ +{# +/** + * @file + * Theme override of a datetime form wrapper. + * + * Available variables: + * - content: The form element to be output, usually a datelist, or datetime. + * - title: The title of the form element. + * - title_attributes: HTML attributes for the title wrapper. + * - description: Description text for the form element. + * - required: An indicator for whether the associated form element is required. + * + * @see template_preprocess_datetime_wrapper() + */ +#} +{% + set title_classes = [ + 'label', + required ? 'js-form-required', + required ? 'form-required', + ] +%} +{% if title %} + <h4{{ title_attributes.addClass(title_classes) }}>{{ title }}</h4> +{% endif %} +{{ content }} +{% if errors %} + <div class="form-item--error-message"> + <strong>{{ errors }}</strong> + </div> +{% endif %} +{% if description %} + <div{{ description_attributes.addClass('description') }}> + {{ description }} + </div> +{% endif %} diff --git a/web/themes/seven/templates/classy/form/fieldset.html.twig b/web/themes/seven/templates/classy/form/fieldset.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..93b5f54d8964c748ddce16a004bb78f2b21abc5f --- /dev/null +++ b/web/themes/seven/templates/classy/form/fieldset.html.twig @@ -0,0 +1,68 @@ +{# +/** + * @file + * Theme override for a fieldset element and its children. + * + * Available variables: + * - attributes: HTML attributes for the fieldset element. + * - errors: (optional) Any errors for this fieldset element, may not be set. + * - required: Boolean indicating whether the fieldset element is required. + * - legend: The legend element containing the following properties: + * - title: Title of the fieldset, intended for use as the text of the legend. + * - attributes: HTML attributes to apply to the legend. + * - description: The description element containing the following properties: + * - content: The description content of the fieldset. + * - attributes: HTML attributes to apply to the description container. + * - description_display: Description display setting. It can have these values: + * - before: The description is output before the element. + * - after: The description is output after the element (default). + * - invisible: The description is output after the element, hidden visually + * but available to screen readers. + * - children: The rendered child elements of the fieldset. + * - prefix: The content to add before the fieldset children. + * - suffix: The content to add after the fieldset children. + * + * @see template_preprocess_fieldset() + */ +#} +{% + set classes = [ + 'js-form-item', + 'form-item', + 'js-form-wrapper', + 'form-wrapper', + ] +%} +<fieldset{{ attributes.addClass(classes) }}> + {% + set legend_span_classes = [ + 'fieldset-legend', + required ? 'js-form-required', + required ? 'form-required', + ] + %} + {# Always wrap fieldset legends in a <span> for CSS positioning. #} + <legend{{ legend.attributes }}> + <span{{ legend_span.attributes.addClass(legend_span_classes) }}>{{ legend.title }}</span> + </legend> + <div class="fieldset-wrapper"> + {% if description_display == 'before' and description.content %} + <div{{ description.attributes.addClass('description') }}>{{ description.content }}</div> + {% endif %} + {% if errors %} + <div class="form-item--error-message"> + <strong>{{ errors }}</strong> + </div> + {% endif %} + {% if prefix %} + <span class="field-prefix">{{ prefix }}</span> + {% endif %} + {{ children }} + {% if suffix %} + <span class="field-suffix">{{ suffix }}</span> + {% endif %} + {% if description_display in ['after', 'invisible'] and description.content %} + <div{{ description.attributes.addClass('description') }}>{{ description.content }}</div> + {% endif %} + </div> +</fieldset> diff --git a/web/themes/seven/templates/classy/form/form-element-label.html.twig b/web/themes/seven/templates/classy/form/form-element-label.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7c2f8f222340cda34c7a3f5d66b469730e8cad60 --- /dev/null +++ b/web/themes/seven/templates/classy/form/form-element-label.html.twig @@ -0,0 +1,25 @@ +{# +/** + * @file + * Theme override for a form element label. + * + * Available variables: + * - title: The label's text. + * - title_display: Elements title_display setting. + * - required: An indicator for whether the associated form element is required. + * - attributes: A list of HTML attributes for the label. + * + * @see template_preprocess_form_element_label() + */ +#} +{% + set classes = [ + title_display == 'after' ? 'option', + title_display == 'invisible' ? 'visually-hidden', + required ? 'js-form-required', + required ? 'form-required', + ] +%} +{% if title is not empty or required -%} + <label{{ attributes.addClass(classes) }}>{{ title }}</label> +{%- endif %} diff --git a/web/themes/seven/templates/classy/form/form-element.html.twig b/web/themes/seven/templates/classy/form/form-element.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..3bde4f711545eb771de7e4df4815bd726b818153 --- /dev/null +++ b/web/themes/seven/templates/classy/form/form-element.html.twig @@ -0,0 +1,95 @@ +{# +/** + * @file + * Theme override for a form element. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - errors: (optional) Any errors for this form element, may not be set. + * - prefix: (optional) The form element prefix, may not be set. + * - suffix: (optional) The form element suffix, may not be set. + * - required: The required marker, or empty if the associated form element is + * not required. + * - type: The type of the element. + * - name: The name of the element. + * - label: A rendered label element. + * - label_display: Label display setting. It can have these values: + * - before: The label is output before the element. This is the default. + * The label includes the #title and the required marker, if #required. + * - after: The label is output after the element. For example, this is used + * for radio and checkbox #type elements. If the #title is empty but the + * field is #required, the label will contain only the required marker. + * - invisible: Labels are critical for screen readers to enable them to + * properly navigate through forms but can be visually distracting. This + * property hides the label for everyone except screen readers. + * - attribute: Set the title attribute on the element to create a tooltip but + * output no label element. This is supported only for checkboxes and radios + * in \Drupal\Core\Render\Element\CompositeFormElementTrait::preRenderCompositeFormElement(). + * It is used where a visual label is not needed, such as a table of + * checkboxes where the row and column provide the context. The tooltip will + * include the title and required marker. + * - description: (optional) A list of description properties containing: + * - content: A description of the form element, may not be set. + * - attributes: (optional) A list of HTML attributes to apply to the + * description content wrapper. Will only be set when description is set. + * - description_display: Description display setting. It can have these values: + * - before: The description is output before the element. + * - after: The description is output after the element. This is the default + * value. + * - invisible: The description is output after the element, hidden visually + * but available to screen readers. + * - disabled: True if the element is disabled. + * - title_display: Title display setting. + * + * @see template_preprocess_form_element() + */ +#} +{% + set classes = [ + 'js-form-item', + 'form-item', + 'js-form-type-' ~ type|clean_class, + 'form-type-' ~ type|clean_class, + 'js-form-item-' ~ name|clean_class, + 'form-item-' ~ name|clean_class, + title_display not in ['after', 'before'] ? 'form-no-label', + disabled == 'disabled' ? 'form-disabled', + errors ? 'form-item--error', + ] +%} +{% + set description_classes = [ + 'description', + description_display == 'invisible' ? 'visually-hidden', + ] +%} +<div{{ attributes.addClass(classes) }}> + {% if label_display in ['before', 'invisible'] %} + {{ label }} + {% endif %} + {% if prefix is not empty %} + <span class="field-prefix">{{ prefix }}</span> + {% endif %} + {% if description_display == 'before' and description.content %} + <div{{ description.attributes }}> + {{ description.content }} + </div> + {% endif %} + {{ children }} + {% if suffix is not empty %} + <span class="field-suffix">{{ suffix }}</span> + {% endif %} + {% if label_display == 'after' %} + {{ label }} + {% endif %} + {% if errors %} + <div class="form-item--error-message"> + <strong>{{ errors }}</strong> + </div> + {% endif %} + {% if description_display in ['after', 'invisible'] and description.content %} + <div{{ description.attributes.addClass(description_classes) }}> + {{ description.content }} + </div> + {% endif %} +</div> diff --git a/web/themes/seven/templates/classy/form/radios.html.twig b/web/themes/seven/templates/classy/form/radios.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..2e4bafd41c68f038e322cc643cc3c595dd0b9df6 --- /dev/null +++ b/web/themes/seven/templates/classy/form/radios.html.twig @@ -0,0 +1,13 @@ +{# +/** + * @file + * Theme override for a 'radios' #type form element. + * + * Available variables + * - attributes: A list of HTML attributes for the wrapper element. + * - children: The rendered radios. + * + * @see template_preprocess_radios() + */ +#} +<div{{ attributes.addClass('form-radios') }}>{{ children }}</div> diff --git a/web/themes/seven/templates/classy/form/textarea.html.twig b/web/themes/seven/templates/classy/form/textarea.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..99e1bde09059aa3424260dcc53cefb2113288ecb --- /dev/null +++ b/web/themes/seven/templates/classy/form/textarea.html.twig @@ -0,0 +1,25 @@ +{# +/** + * @file + * Theme override for a 'textarea' #type form element. + * + * Available variables + * - wrapper_attributes: A list of HTML attributes for the wrapper element. + * - attributes: A list of HTML attributes for the <textarea> element. + * - resizable: An indicator for whether the textarea is resizable. + * - required: An indicator for whether the textarea is required. + * - value: The textarea content. + * + * @see template_preprocess_textarea() + */ +#} +{% + set classes = [ + 'form-textarea', + resizable ? 'resize-' ~ resizable, + required ? 'required', + ] +%} +<div{{ wrapper_attributes.addClass('form-textarea-wrapper') }}> + <textarea{{ attributes.addClass(classes) }}>{{ value }}</textarea> +</div> diff --git a/web/themes/seven/templates/classy/layout/book-export-html.html.twig b/web/themes/seven/templates/classy/layout/book-export-html.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b7525f7efa88263beed101cbe8e0dcd4377ab5a8 --- /dev/null +++ b/web/themes/seven/templates/classy/layout/book-export-html.html.twig @@ -0,0 +1,45 @@ +{# +/** + * @file + * Theme override for printed version of book outline. + * + * Available variables: + * - title: Top level node title. + * - head: Header tags. + * - language: Language object. + * - language_rtl: A flag indicating whether the current display language is a + * right to left language. + * - base_url: URL to the home page. + * - contents: Nodes within the current outline rendered through + * book-node-export-html.html.twig. + * + * @see template_preprocess_book_export_html() + */ +#} +<!DOCTYPE html> +<html{{ html_attributes }}> + <head> + <title>{{ title }}</title> + {{ page.head }} + <base href="{{ base_url }}" /> + <link type="text/css" rel="stylesheet" href="misc/print.css" /> + </head> + <body> + {# + The given node is embedded to its absolute depth in a top level section. + For example, a child node with depth 2 in the hierarchy is contained in + (otherwise empty) div elements corresponding to depth 0 and depth 1. This + is intended to support WYSIWYG output - e.g., level 3 sections always look + like level 3 sections, no matter their depth relative to the node selected + to be exported as printer-friendly HTML. + #} + + {% if depth > 1 %}{% for i in 1..depth-1 %} + <div class="section-{{ i }}"> + {% endfor %}{% endif %} + {{ contents }} + {% if depth > 1 %}{% for i in 1..depth-1 %} + </div> + {% endfor %}{% endif %} + </body> +</html> diff --git a/web/themes/seven/templates/classy/layout/html.html.twig b/web/themes/seven/templates/classy/layout/html.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4fe57a01cfdd5995db836693c453751d8ee11551 --- /dev/null +++ b/web/themes/seven/templates/classy/layout/html.html.twig @@ -0,0 +1,55 @@ +{# +/** + * @file + * Theme override for the basic structure of a single Drupal page. + * + * Variables: + * - logged_in: A flag indicating if user is logged in. + * - root_path: The root path of the current page (e.g., node, admin, user). + * - node_type: The content type for the current node, if the page is a node. + * - head_title: List of text elements that make up the head_title variable. + * May contain one or more of the following: + * - title: The title of the page. + * - name: The name of the site. + * - slogan: The slogan of the site. + * - page_top: Initial rendered markup. This should be printed before 'page'. + * - page: The rendered page markup. + * - page_bottom: Closing rendered markup. This variable should be printed after + * 'page'. + * - db_offline: A flag indicating if the database is offline. + * - placeholder_token: The token for generating head, css, js and js-bottom + * placeholders. + * + * @see template_preprocess_html() + */ +#} +{% + set body_classes = [ + logged_in ? 'user-logged-in', + not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class, + node_type ? 'page-node-type-' ~ node_type|clean_class, + db_offline ? 'db-offline', + ] +%} +<!DOCTYPE html> +<html{{ html_attributes }}> + <head> + <head-placeholder token="{{ placeholder_token }}"> + <title>{{ head_title|safe_join(' | ') }}</title> + <css-placeholder token="{{ placeholder_token }}"> + <js-placeholder token="{{ placeholder_token }}"> + </head> + <body{{ attributes.addClass(body_classes) }}> + {# + Keyboard navigation/accessibility link to main content section in + page.html.twig. + #} + <a href="#main-content" class="visually-hidden focusable skip-link"> + {{ 'Skip to main content'|t }} + </a> + {{ page_top }} + {{ page }} + {{ page_bottom }} + <js-bottom-placeholder token="{{ placeholder_token }}"> + </body> +</html> diff --git a/web/themes/seven/templates/classy/layout/region.html.twig b/web/themes/seven/templates/classy/layout/region.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..95e71cec37e409bdfab1d8d90e0a192bede54e9c --- /dev/null +++ b/web/themes/seven/templates/classy/layout/region.html.twig @@ -0,0 +1,25 @@ +{# +/** + * @file + * Theme override to display a region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} +{% + set classes = [ + 'region', + 'region-' ~ region|clean_class, + ] +%} +{% if content %} + <div{{ attributes.addClass(classes) }}> + {{ content }} + </div> +{% endif %} diff --git a/web/themes/seven/templates/classy/media-library/container--media-library-content.html.twig b/web/themes/seven/templates/classy/media-library/container--media-library-content.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7c930e2c7b64980f3b1ea8413d143f2791f888b7 --- /dev/null +++ b/web/themes/seven/templates/classy/media-library/container--media-library-content.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Theme implementation the content area of the modal media library dialog. + * + * The content area is everything that is not the menu of available media + * types. This includes the form to add new media items, if available, and + * the view of available media to select. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - children: The rendered child elements of the container. + * - has_parent: A flag to indicate that the container has one or more parent + containers. + * + * @see template_preprocess_container() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + has_parent ? 'js-form-wrapper', + has_parent ? 'form-wrapper', + 'media-library-content', + ] +%} +<div{{ attributes.addClass(classes) }}>{{ children }}</div> diff --git a/web/themes/seven/templates/classy/media-library/container--media-library-widget-selection.html.twig b/web/themes/seven/templates/classy/media-library/container--media-library-widget-selection.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7c0af44307f6ac054143fd886c80bdff1c84fbc1 --- /dev/null +++ b/web/themes/seven/templates/classy/media-library/container--media-library-widget-selection.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Theme implementation of a wrapper for selected media items. + * + * This is used to wrap around the set of media items that are currently + * selected in the media library widget (not the modal dialog), which may + * be used for entity reference fields that target media. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - children: The rendered child elements of the container. + * - has_parent: A flag to indicate that the container has one or more parent + containers. + * + * @see template_preprocess_container() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + has_parent ? 'js-form-wrapper', + has_parent ? 'form-wrapper', + 'media-library-selection', + ] +%} +<div{{ attributes.addClass(classes) }}>{{ children }}</div> diff --git a/web/themes/seven/templates/classy/media-library/links--media-library-menu.html.twig b/web/themes/seven/templates/classy/media-library/links--media-library-menu.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b2361574a83ea94242507b1943ee7da8487c10eb --- /dev/null +++ b/web/themes/seven/templates/classy/media-library/links--media-library-menu.html.twig @@ -0,0 +1,36 @@ +{% extends "links.html.twig" %} +{# +/** + * @file + * Theme implementation of the media type menu in the media library dialog. + * + * Available variables: + * - attributes: Attributes for the UL containing the list of links. + * - links: Links to be output. + * Each link will have the following elements: + * - link: (optional) A render array that returns a link. See + * template_preprocess_links() for details how it is generated. + * - text: The link text. + * - attributes: HTML attributes for the list item element. + * - text_attributes: (optional) HTML attributes for the span element if no + * 'url' was supplied. + * - heading: (optional) A heading to precede the links. + * - text: The heading text. + * - level: The heading level (e.g. 'h2', 'h3'). + * - attributes: (optional) A keyed list of attributes for the heading. + * If the heading is a string, it will be used as the text of the heading and + * the level will default to 'h2'. + * + * Headings should be used on navigation menus and any list of links that + * consistently appears on multiple pages. To make the heading invisible use + * the 'visually-hidden' CSS class. Do not use 'display:none', which + * removes it from screen readers and assistive technology. Headings allow + * screen reader and keyboard only users to navigate to or skip the links. + * See http://juicystudio.com/article/screen-readers-display-none.php and + * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. + * + * @see classy_preprocess_links__media_library_menu() + * @see template_preprocess_links() + */ +#} +{% set attributes = attributes.addClass('media-library-menu') %} diff --git a/web/themes/seven/templates/classy/media-library/media--media-library.html.twig b/web/themes/seven/templates/classy/media-library/media--media-library.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e88635424fc07f47e181e5e894427f9e931c7bc8 --- /dev/null +++ b/web/themes/seven/templates/classy/media-library/media--media-library.html.twig @@ -0,0 +1,55 @@ +{# +/** + * @file + * Theme override of a media item in the media library. + * + * This is used for media that the user can select from the grid of media + * items. It is not used for items that have already been selected in the + * corresponding field widget, or for items that have been previously selected + * before adding new media to the library. + * + * Available variables: + * - media: The entity with limited access to object properties and methods. + * Only method names starting with "get", "has", or "is" and a few common + * methods such as "id", "label", and "bundle" are available. For example: + * - entity.getEntityTypeId() will return the entity type ID. + * - entity.hasField('field_example') returns TRUE if the entity includes + * field_example. (This does not indicate the presence of a value in this + * field.) + * Calling other methods, such as entity.delete(), will result in an exception. + * See \Drupal\Core\Entity\EntityInterface for a full list of methods. + * - name: Name of the media. + * - content: Media content. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - view_mode: View mode; for example, "teaser" or "full". + * - attributes: HTML attributes for the containing element. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - url: Direct URL of the media. + * - preview_attributes: HTML attributes for the preview wrapper. + * - metadata_attributes: HTML attributes for the expandable metadata area. + * - status: Whether or not the Media is published. + * + * @see template_preprocess_media() + * + * @ingroup themeable + */ +#} +<article{{ attributes }}> + {% if content %} + <div{{ preview_attributes.addClass('media-library-item__preview js-media-library-item-preview') }}> + {{ content|without('name') }} + </div> + {% if not status %} + <div class="media-library-item__status">{{ "unpublished" | t }}</div> + {% endif %} + <div{{ metadata_attributes.addClass('media-library-item__attributes') }}> + <div class="media-library-item__name"> + {{ name }} + </div> + </div> + {% endif %} +</article> diff --git a/web/themes/seven/templates/classy/media-library/media-library-item--small.html.twig b/web/themes/seven/templates/classy/media-library/media-library-item--small.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..ba03858b7f82cd64b985264cc9f120bd80db6038 --- /dev/null +++ b/web/themes/seven/templates/classy/media-library/media-library-item--small.html.twig @@ -0,0 +1,31 @@ +{# +/** + * @file + * Default theme implementation of a media library item. + * + * This is used when displaying selected media items, either in the field + * widget or in the "Additional selected media" area when adding new + * media items in the media library modal dialog. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - content: The content of the media library item, plus any additional + * fields or elements surrounding it. + * + * @see seven_preprocess_media_library_item__small() + * @see seven_preprocess_media_library_item__widget() + * @see template_preprocess_media_library_item() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'media-library-item', + 'media-library-item--grid', + 'media-library-item--small', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ content }} +</div> diff --git a/web/themes/seven/templates/classy/media-library/media-library-item.html.twig b/web/themes/seven/templates/classy/media-library/media-library-item.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..297780e0f736548762e4bef93aa85e98c84b9142 --- /dev/null +++ b/web/themes/seven/templates/classy/media-library/media-library-item.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Default theme implementation of a media library item. + * + * This is used when displaying selected media items, either in the field + * widget or in the "Additional selected media" area when adding new + * media items in the media library modal dialog. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - content: The content of the media library item, plus any additional + * fields or elements surrounding it. + * + * @see template_preprocess_media_library_item() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'media-library-item', + 'media-library-item--grid', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ content }} +</div> diff --git a/web/themes/seven/templates/classy/media-library/media-library-wrapper.html.twig b/web/themes/seven/templates/classy/media-library/media-library-wrapper.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4d5458ac795566fe697dd8031d4f8cb1449054ca --- /dev/null +++ b/web/themes/seven/templates/classy/media-library/media-library-wrapper.html.twig @@ -0,0 +1,21 @@ +{# +/** + * @file + * Theme override of a container used to wrap the media library's modal dialog + * interface. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - menu: The menu of available media types to choose from. + * - content: The form to add new media items, followed by the grid or table of + * existing media items to choose from. + * + * @see template_preprocess_media_library_wrapper() + * + * @ingroup themeable + */ +#} +<div{{ attributes.addClass('media-library-wrapper') }}> + {{ menu }} + {{ content }} +</div> diff --git a/web/themes/seven/templates/classy/misc/help-section.html.twig b/web/themes/seven/templates/classy/misc/help-section.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..6cfaa38da26655da2c5e1915b603563fc877accc --- /dev/null +++ b/web/themes/seven/templates/classy/misc/help-section.html.twig @@ -0,0 +1,48 @@ +{# +/** + * @file + * Theme override for a section of the help page. + * + * This implementation divides the links into 4 columns. + * + * Available variables: + * - title: The section title. + * - description: The description text for the section. + * - links: Links to display in the section. + * - empty: Text to display if there are no links. + */ +#} +<div class="clearfix"> + <h2>{{ title }}</h2> + <p>{{ description }}</p> + {% if links %} + {# Calculate the column length, to divide links into 4 columns. #} + {% set size = links|length // 4 %} + {% if size * 4 < links|length %} + {% set size = size + 1 %} + {% endif %} + + {# Output the links in 4 columns. #} + {% set count = 0 %} + {% for link in links %} + {% if count == 0 %} + {# Start a new column. #} + <div class="layout-column layout-column--quarter"><ul> + {% endif %} + <li>{{ link }}</li> + {% set count = count + 1 %} + {% if count >= size %} + {# End the current column. #} + {% set count = 0 %} + </ul></div> + {% endif %} + {% endfor %} + + {# End the last column, if one is open. #} + {% if count > 0 %} + </ul></div> + {% endif %} + {% else %} + <p>{{ empty }}</p> + {% endif %} +</div> diff --git a/web/themes/seven/templates/classy/misc/progress-bar.html.twig b/web/themes/seven/templates/classy/misc/progress-bar.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..5c25bd7d3fa24db42617a9581f2f4212d13d91be --- /dev/null +++ b/web/themes/seven/templates/classy/misc/progress-bar.html.twig @@ -0,0 +1,22 @@ +{# +/** + * @file + * Theme override for a progress bar. + * + * Note that the core Batch API uses this only for non-JavaScript batch jobs. + * + * Available variables: + * - label: The label of the working task. + * - percent: The percentage of the progress. + * - message: A string containing information to be displayed. + */ +#} +{{ attach_library('seven/classy.progress') }} +<div class="progress" data-drupal-progress> + {% if label %} + <div class="progress__label">{{ label }}</div> + {% endif %} + <div class="progress__track"><div class="progress__bar" style="width: {{ percent }}%"></div></div> + <div class="progress__percentage">{{ percent }}%</div> + <div class="progress__description">{{ message }}</div> +</div> diff --git a/web/themes/seven/templates/classy/misc/rdf-metadata.html.twig b/web/themes/seven/templates/classy/misc/rdf-metadata.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..acc62df16d41b5e10442c5ef92e61ae01a511c28 --- /dev/null +++ b/web/themes/seven/templates/classy/misc/rdf-metadata.html.twig @@ -0,0 +1,20 @@ +{# +/** + * @file + * Theme override for empty spans with RDF attributes. + * + * The XHTML+RDFa doctype allows either <span></span> or <span /> syntax to + * be used, but for maximum browser compatibility, W3C recommends the + * former when serving pages using the text/html media type, see + * http://www.w3.org/TR/xhtml1/#C_3. + * + * Available variables: + * - metadata: Each item within corresponds to its own set of attributes, + * and therefore, needs its own 'attributes' element. + * + * @see template_preprocess_rdf_metadata() + */ +#} +{% for attributes in metadata %} + <span{{ attributes.addClass('rdf-meta', 'hidden') }}></span> +{% endfor %} diff --git a/web/themes/seven/templates/classy/misc/status-messages.html.twig b/web/themes/seven/templates/classy/misc/status-messages.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7dda6c040c49d7fc9bde68e76182fc5487183c4f --- /dev/null +++ b/web/themes/seven/templates/classy/misc/status-messages.html.twig @@ -0,0 +1,55 @@ +{# +/** + * @file + * Theme override for status messages. + * + * Displays status, error, and warning messages, grouped by type. + * + * An invisible heading identifies the messages for assistive technology. + * Sighted users see a colored box. See http://www.w3.org/TR/WCAG-TECHS/H69.html + * for info. + * + * Add an ARIA label to the contentinfo area so that assistive technology + * user agents will better describe this landmark. + * + * Available variables: + * - message_list: List of messages to be displayed, grouped by type. + * - status_headings: List of all status types. + * - attributes: HTML attributes for the element, including: + * - class: HTML classes. + */ +#} +<div data-drupal-messages> +{% block messages %} +{% for type, messages in message_list %} + {% + set classes = [ + 'messages', + 'messages--' ~ type, + ] + %} + <div role="contentinfo" aria-label="{{ status_headings[type] }}"{{ attributes.addClass(classes)|without('role', 'aria-label') }}> + {% if type == 'error' %} + <div role="alert"> + {% endif %} + {% if status_headings[type] %} + <h2 class="visually-hidden">{{ status_headings[type] }}</h2> + {% endif %} + {% if messages|length > 1 %} + <ul class="messages__list"> + {% for message in messages %} + <li class="messages__item">{{ message }}</li> + {% endfor %} + </ul> + {% else %} + {{ messages|first }} + {% endif %} + {% if type == 'error' %} + </div> + {% endif %} + </div> + {# Remove type specific classes. #} + {% set attributes = attributes.removeClass(classes) %} +{% endfor %} +{% endblock messages %} +</div> diff --git a/web/themes/seven/templates/classy/navigation/book-all-books-block.html.twig b/web/themes/seven/templates/classy/navigation/book-all-books-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b4cb64de3d5bfdb2bbbfdf2a32793f53d825a9c6 --- /dev/null +++ b/web/themes/seven/templates/classy/navigation/book-all-books-block.html.twig @@ -0,0 +1,22 @@ +{# +/** + * @file + * Theme override for rendering book outlines within a block. + * + * This template is used only when the block is configured to "show block on all + * pages", which presents multiple independent books on all pages. + * + * Available variables: + * - book_menus: Book outlines. + * - id: The parent book ID. + * - title: The parent book title. + * - menu: The top-level book links. + * + * @see template_preprocess_book_all_books_block() + */ +#} +{% for book in book_menus %} + <nav id="book-block-menu-{{ book.id }}" class="book-block-menu" role="navigation" aria-label="{% trans %}Book outline for {{ book.title }}{% endtrans %}"> + {{ book.menu }} + </nav> +{% endfor %} diff --git a/web/themes/seven/templates/classy/navigation/book-navigation.html.twig b/web/themes/seven/templates/classy/navigation/book-navigation.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..eac98b40022c4cd6bf72b805a0da00a42d01cc61 --- /dev/null +++ b/web/themes/seven/templates/classy/navigation/book-navigation.html.twig @@ -0,0 +1,56 @@ +{# +/** + * @file + * Theme override to navigate books. + * + * Presented under nodes that are a part of book outlines. + * + * Available variables: + * - tree: The immediate children of the current node rendered as an unordered + * list. + * - current_depth: Depth of the current node within the book outline. Provided + * for context. + * - prev_url: URL to the previous node. + * - prev_title: Title of the previous node. + * - parent_url: URL to the parent node. + * - parent_title: Title of the parent node. Not printed by default. Provided + * as an option. + * - next_url: URL to the next node. + * - next_title: Title of the next node. + * - has_links: Flags TRUE whenever the previous, parent or next data has a + * value. + * - book_id: The book ID of the current outline being viewed. Same as the node + * ID containing the entire outline. Provided for context. + * - book_url: The book/node URL of the current outline being viewed. Provided + * as an option. Not used by default. + * - book_title: The book/node title of the current outline being viewed. + * + * @see template_preprocess_book_navigation() + */ +#} +{{ attach_library('seven/classy.book-navigation') }} +{% if tree or has_links %} + <nav id="book-navigation-{{ book_id }}" class="book-navigation" role="navigation" aria-labelledby="book-label-{{ book_id }}"> + {{ tree }} + {% if has_links %} + <h2 class="visually-hidden" id="book-label-{{ book_id }}">{{ 'Book traversal links for'|t }} {{ book_title }}</h2> + <ul class="book-pager"> + {% if prev_url %} + <li class="book-pager__item book-pager__item--previous"> + <a href="{{ prev_url }}" rel="prev" title="{{ 'Go to previous page'|t }}"><b>{{ '‹'|t }}</b> {{ prev_title }}</a> + </li> + {% endif %} + {% if parent_url %} + <li class="book-pager__item book-pager__item--center"> + <a href="{{ parent_url }}" title="{{ 'Go to parent page'|t }}">{{ 'Up'|t }}</a> + </li> + {% endif %} + {% if next_url %} + <li class="book-pager__item book-pager__item--next"> + <a href="{{ next_url }}" rel="next" title="{{ 'Go to next page'|t }}">{{ next_title }} <b>{{ '›'|t }}</b></a> + </li> + {% endif %} + </ul> + {% endif %} + </nav> +{% endif %} diff --git a/web/themes/seven/templates/classy/navigation/book-tree.html.twig b/web/themes/seven/templates/classy/navigation/book-tree.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..fba921921e8ce419e46d6a7a704d1645f71d01d6 --- /dev/null +++ b/web/themes/seven/templates/classy/navigation/book-tree.html.twig @@ -0,0 +1,55 @@ +{# +/** + * @file + * Theme override to display a book tree. + * + * Returns HTML for a wrapper for a book sub-tree. + * + * Available variables: + * - items: A nested list of book items. Each book item contains: + * - attributes: HTML attributes for the book item. + * - below: The book item child items. + * - title: The book link title. + * - url: The book link URL, instance of \Drupal\Core\Url. + * - is_expanded: TRUE if the link has visible children within the current + * book tree. + * - is_collapsed: TRUE if the link has children within the current book tree + * that are not currently visible. + * - in_active_trail: TRUE if the link is in the active trail. + */ +#} +{% import _self as book_tree %} + +{# + We call a macro which calls itself to render the full tree. + @see https://twig.symfony.com/doc/3.x/tags/macro.html +#} +{{ book_tree.book_links(items, attributes, 0) }} + +{% macro book_links(items, attributes, menu_level) %} + {% import _self as book_tree %} + {% if items %} + {% if menu_level == 0 %} + <ul{{ attributes.addClass('menu') }}> + {% else %} + <ul class="menu"> + {% endif %} + {% for item in items %} + {% + set classes = [ + 'menu-item', + item.is_expanded ? 'menu-item--expanded', + item.is_collapsed ? 'menu-item--collapsed', + item.in_active_trail ? 'menu-item--active-trail', + ] + %} + <li{{ item.attributes.addClass(classes) }}> + {{ link(item.title, item.url) }} + {% if item.below %} + {{ book_tree.book_links(item.below, attributes, menu_level + 1) }} + {% endif %} + </li> + {% endfor %} + </ul> + {% endif %} +{% endmacro %} diff --git a/web/themes/seven/templates/classy/navigation/breadcrumb.html.twig b/web/themes/seven/templates/classy/navigation/breadcrumb.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7dc08c5207eff25b57e6cbdcefbc95db1ef4a951 --- /dev/null +++ b/web/themes/seven/templates/classy/navigation/breadcrumb.html.twig @@ -0,0 +1,25 @@ +{# +/** + * @file + * Theme override for a breadcrumb trail. + * + * Available variables: + * - breadcrumb: Breadcrumb trail items. + */ +#} +{% if breadcrumb %} + <nav class="breadcrumb" role="navigation" aria-labelledby="system-breadcrumb"> + <h2 id="system-breadcrumb" class="visually-hidden">{{ 'Breadcrumb'|t }}</h2> + <ol> + {% for item in breadcrumb %} + <li> + {% if item.url %} + <a href="{{ item.url }}">{{ item.text }}</a> + {% else %} + {{ item.text }} + {% endif %} + </li> + {% endfor %} + </ol> + </nav> +{% endif %} diff --git a/web/themes/seven/templates/classy/navigation/menu-local-task.html.twig b/web/themes/seven/templates/classy/navigation/menu-local-task.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b8559815b9e937120f8fd4f87bcfe27e7a30c0b0 --- /dev/null +++ b/web/themes/seven/templates/classy/navigation/menu-local-task.html.twig @@ -0,0 +1,17 @@ +{# +/** + * @file + * Theme override for a local task link. + * + * Available variables: + * - attributes: HTML attributes for the wrapper element. + * - is_active: Whether the task item is an active tab. + * - link: A rendered link element. + * + * Note: This template renders the content for each task item in + * menu-local-tasks.html.twig. + * + * @see template_preprocess_menu_local_task() + */ +#} +<li{{ attributes.addClass(is_active ? 'is-active') }}>{{ link }}</li> diff --git a/web/themes/seven/templates/classy/navigation/menu.html.twig b/web/themes/seven/templates/classy/navigation/menu.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..ef04cedd1756737f3fb60e8c1890f24242dcdc45 --- /dev/null +++ b/web/themes/seven/templates/classy/navigation/menu.html.twig @@ -0,0 +1,55 @@ +{# +/** + * @file + * Theme override to display a menu. + * + * Available variables: + * - menu_name: The machine name of the menu. + * - items: A nested list of menu items. Each menu item contains: + * - attributes: HTML attributes for the menu item. + * - below: The menu item child items. + * - title: The menu link title. + * - url: The menu link url, instance of \Drupal\Core\Url + * - localized_options: Menu link localized options. + * - is_expanded: TRUE if the link has visible children within the current + * menu tree. + * - is_collapsed: TRUE if the link has children within the current menu tree + * that are not currently visible. + * - in_active_trail: TRUE if the link is in the active trail. + */ +#} +{% import _self as menus %} + +{# + We call a macro which calls itself to render the full tree. + @see https://twig.symfony.com/doc/3.x/tags/macro.html +#} +{{ menus.menu_links(items, attributes, 0) }} + +{% macro menu_links(items, attributes, menu_level) %} + {% import _self as menus %} + {% if items %} + {% if menu_level == 0 %} + <ul{{ attributes.addClass('menu') }}> + {% else %} + <ul class="menu"> + {% endif %} + {% for item in items %} + {% + set classes = [ + 'menu-item', + item.is_expanded ? 'menu-item--expanded', + item.is_collapsed ? 'menu-item--collapsed', + item.in_active_trail ? 'menu-item--active-trail', + ] + %} + <li{{ item.attributes.addClass(classes) }}> + {{ link(item.title, item.url) }} + {% if item.below %} + {{ menus.menu_links(item.below, attributes, menu_level + 1) }} + {% endif %} + </li> + {% endfor %} + </ul> + {% endif %} +{% endmacro %} diff --git a/web/themes/seven/templates/classy/navigation/toolbar.html.twig b/web/themes/seven/templates/classy/navigation/toolbar.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..5ef3ffad3a3283c4ed4f21b8551271f600cbfe06 --- /dev/null +++ b/web/themes/seven/templates/classy/navigation/toolbar.html.twig @@ -0,0 +1,46 @@ +{# +/** + * @file + * Theme override for the administrative toolbar. + * + * Available variables: + * - attributes: HTML attributes for the wrapper. + * - toolbar_attributes: HTML attributes to apply to the toolbar. + * - toolbar_heading: The heading or label for the toolbar. + * - tabs: List of tabs for the toolbar. + * - attributes: HTML attributes for the tab container. + * - link: Link or button for the menu tab. + * - trays: Toolbar tray list, each associated with a tab. Each tray in trays + * contains: + * - attributes: HTML attributes to apply to the tray. + * - label: The tray's label. + * - links: The tray menu links. + * - remainder: Any non-tray, non-tab elements left to be rendered. + * + * @see template_preprocess_toolbar() + */ +#} +<div{{ attributes.addClass('toolbar') }}> + <nav{{ toolbar_attributes.addClass('toolbar-bar', 'clearfix') }}> + <h2 class="visually-hidden">{{ toolbar_heading }}</h2> + {% for key, tab in tabs %} + {% set tray = trays[key] %} + <div{{ tab.attributes.addClass('toolbar-tab') }}> + {{ tab.link }} + {% apply spaceless %} + <div{{ tray.attributes }}> + {% if tray.label %} + <nav class="toolbar-lining clearfix" role="navigation" aria-label="{{ tray.label }}"> + <h3 class="toolbar-tray-name visually-hidden">{{ tray.label }}</h3> + {% else %} + <nav class="toolbar-lining clearfix" role="navigation"> + {% endif %} + {{ tray.links }} + </nav> + </div> + {% endapply %} + </div> + {% endfor %} + </nav> + {{ remainder }} +</div> diff --git a/web/themes/seven/templates/classy/user/forum-submitted.html.twig b/web/themes/seven/templates/classy/user/forum-submitted.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..57311e96b59b19efc03430cb193a4606d9cbe782 --- /dev/null +++ b/web/themes/seven/templates/classy/user/forum-submitted.html.twig @@ -0,0 +1,21 @@ +{# +/** + * @file + * Theme override for a forum post submission string. + * + * The submission string indicates when and by whom a topic was submitted. + * + * Available variables: + * - author: The author of the post. + * - time: How long ago the post was created. + * - topic: An object with the raw data of the post. Potentially unsafe. Be + * sure to clean this data before printing. + * + * @see template_preprocess_forum_submitted() + */ +#} +{% if time %} + <span class="submitted">{% trans %}By {{ author }} {{ time }} ago{% endtrans %}</span> +{% else %} + {{ 'n/a'|t }} +{% endif %} diff --git a/web/themes/seven/templates/classy/user/user.html.twig b/web/themes/seven/templates/classy/user/user.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..9a824effd35f59462e2bc14b740fde5f437f50a3 --- /dev/null +++ b/web/themes/seven/templates/classy/user/user.html.twig @@ -0,0 +1,23 @@ +{# +/** + * @file + * Theme override to present all user data. + * + * This template is used when viewing a registered user's page, + * e.g., example.com/user/123. 123 being the user's ID. + * + * Available variables: + * - content: A list of content items. Use 'content' to print all content, or + * print a subset such as 'content.field_example'. Fields attached to a user + * such as 'user_picture' are available as 'content.user_picture'. + * - attributes: HTML attributes for the container element. + * - user: A Drupal User entity. + * + * @see template_preprocess_user() + */ +#} +<article{{ attributes.addClass('profile') }}> + {% if content %} + {{- content -}} + {% endif %} +</article> diff --git a/web/themes/seven/templates/classy/user/username.html.twig b/web/themes/seven/templates/classy/user/username.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..df694dff698073f72e1addd165d4891db8aa67a6 --- /dev/null +++ b/web/themes/seven/templates/classy/user/username.html.twig @@ -0,0 +1,29 @@ +{# +/** + * @file + * Theme override for displaying a username. + * + * Available variables: + * - account: The full account information for the user. + * - uid: The user ID, or zero if not a user. As used in anonymous comments. + * - name: The user's name, sanitized, and optionally truncated. + * - name_raw: The user's name, un-truncated. + * - truncated: Whether the user's name was truncated. + * - extra: Additional text to append to the user's name, sanitized. + * - profile_access: Whether the current user has permission to access this + users profile page. + * - link_path: The path or URL of the user's profile page, home page, + * or other desired page to link to for more information about the user. + * - homepage: (optional) The home page of the account, only set for non users. + * - link_options: Options to set on the \Drupal\Core\Url object if linking the + * user's name to the user's page. + * - attributes: HTML attributes for the containing element. + * + * @see template_preprocess_username() + */ +#} +{% if link_path -%} + <a{{ attributes.addClass('username') }}>{{ name }}{{ extra }}</a> +{%- else -%} + <span{{ attributes }}>{{ name }}{{ extra }}</span> +{%- endif -%} diff --git a/web/themes/seven/templates/classy/views/views-exposed-form.html.twig b/web/themes/seven/templates/classy/views/views-exposed-form.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..3c679ae58326b5df55b78698003767192e72d4dc --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-exposed-form.html.twig @@ -0,0 +1,21 @@ +{# +/** + * @file + * Theme override for a views exposed form. + * + * Available variables: + * - form: A render element representing the form. + * + * @see template_preprocess_views_exposed_form() + */ +#} +{% if q is not empty %} + {# + This ensures that, if clean URLs are off, the 'q' is added first, + as a hidden form element, so that it shows up first in the POST URL. + #} +{{ q }} +{% endif %} +<div class="form--inline clearfix"> + {{ form }} +</div> diff --git a/web/themes/seven/templates/classy/views/views-mini-pager.html.twig b/web/themes/seven/templates/classy/views/views-mini-pager.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4b46f2bb1f698633968b8e0290d2730cd1ef52aa --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-mini-pager.html.twig @@ -0,0 +1,42 @@ +{# +/** + * @file + * Theme override for a views mini-pager. + * + * Available variables: + * - heading_id: Pagination heading ID. + * - items: List of pager items. + * + * @see template_preprocess_views_mini_pager() + */ +#} +{% if items.previous or items.next %} + <nav class="pager" role="navigation" aria-labelledby="{{ heading_id }}"> + <h4 id="{{ heading_id }}" class="pager__heading visually-hidden">{{ 'Pagination'|t }}</h4> + <ul class="pager__items js-pager__items"> + {% if items.previous %} + <li class="pager__item pager__item--previous"> + <a href="{{ items.previous.href }}" title="{{ 'Go to previous page'|t }}" rel="prev"{{ items.previous.attributes|without('href', 'title', 'rel') }}> + <span class="visually-hidden">{{ 'Previous page'|t }}</span> + <span aria-hidden="true">{{ items.previous.text|default('‹‹'|t) }}</span> + </a> + </li> + {% endif %} + {% if items.current %} + <li class="pager__item is-active"> + {% trans %} + Page {{ items.current }} + {% endtrans %} + </li> + {% endif %} + {% if items.next %} + <li class="pager__item pager__item--next"> + <a href="{{ items.next.href }}" title="{{ 'Go to next page'|t }}" rel="next"{{ items.next.attributes|without('href', 'title', 'rel') }}> + <span class="visually-hidden">{{ 'Next page'|t }}</span> + <span aria-hidden="true">{{ items.next.text|default('››'|t) }}</span> + </a> + </li> + {% endif %} + </ul> + </nav> +{% endif %} diff --git a/web/themes/seven/templates/classy/views/views-view-grouping.html.twig b/web/themes/seven/templates/classy/views/views-view-grouping.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..44905e56b7942e64446eba7fef095974f48ec64b --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-view-grouping.html.twig @@ -0,0 +1,20 @@ +{# +/** + * @file + * Theme override to display a single views grouping. + * + * Available variables: + * - view: The view object. + * - grouping: The grouping instruction. + * - grouping_level: A number indicating the hierarchical level of the grouping. + * - title: The group heading. + * - content: The content to be grouped. + * - rows: The rows returned from the view. + * + * @see template_preprocess_views_view_grouping() + */ +#} +<div class="view-grouping"> + <div class="view-grouping-header">{{ title }}</div> + <div class="view-grouping-content">{{ content }}</div> +</div> diff --git a/web/themes/seven/templates/classy/views/views-view-row-rss.html.twig b/web/themes/seven/templates/classy/views/views-view-row-rss.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..aee08aee6e27407c9187efe69ec02b92ee8a3b05 --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-view-row-rss.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Theme override to display an item in a views RSS feed. + * + * Available variables: + * - title: RSS item title. + * - link: RSS item link. + * - description: RSS body text. + * - item_elements: RSS item elements to be rendered as XML (pubDate, creator, + * guid). + * + * @see template_preprocess_views_view_row_rss() + * + * @ingroup themeable + */ +#} +<item> + <title>{{ title }}</title> + <link>{{ link }}</link> + <description>{{ description }}</description> + {% for item in item_elements -%} + <{{ item.key }}{{ item.attributes -}} + {% if item.value -%} + >{{ item.value }}</{{ item.key }}> + {% else -%} + {{ ' />' }} + {% endif %} + {%- endfor %} +</item> diff --git a/web/themes/seven/templates/classy/views/views-view-summary-unformatted.html.twig b/web/themes/seven/templates/classy/views/views-view-summary-unformatted.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..151734e948eea2fbb1c29261a0c169c1cd49581e --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-view-summary-unformatted.html.twig @@ -0,0 +1,31 @@ +{# +/** + * @file + * Theme override for unformatted summary links. + * + * Available variables: + * - rows: The rows contained in this view. + * - url: The URL to this row's content. + * - count: The number of items this summary item represents. + * - separator: A separator between each row. + * - attributes: HTML attributes for a row. + * - active: A flag indicating whether the row is active. + * - options: Flags indicating how each row should be displayed. This contains: + * - count: A flag indicating whether the row's 'count' should be displayed. + * - inline: A flag indicating whether the item should be wrapped in an inline + * or block level HTML element. + * + * @see template_preprocess_views_view_summary_unformatted() + */ +#} +{% for row in rows %} + {{ options.inline ? '<span' : '<div' }} class="views-summary views-summary-unformatted"> + {% if row.separator -%} + {{ row.separator }} + {%- endif %} + <a href="{{ row.url }}"{{ row.attributes.addClass(row.active ? 'is-active')|without('href') }}>{{ row.link }}</a> + {% if options.count %} + ({{ row.count }}) + {% endif %} + {{ options.inline ? '</span>' : '</div>' }} +{% endfor %} diff --git a/web/themes/seven/templates/classy/views/views-view-summary.html.twig b/web/themes/seven/templates/classy/views/views-view-summary.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..3190a45ada4fb066a2fbae94e0b39ae8f326e186 --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-view-summary.html.twig @@ -0,0 +1,31 @@ +{# +/** + * @file + * Theme override to display a list of summary lines. + * + * Available variables: + * - rows: The rows contained in this view. + * Each row contains: + * - url: The summary link URL. + * - link: The summary link text. + * - count: The number of items under this grouping. + * - attributes: HTML attributes to apply to each row. + * - active: A flag indicating whether the row is active. + * - options: Flags indicating how the summary should be displayed. + * This contains: + * - count: A flag indicating whether the count should be displayed. + * + * @see template_preprocess_views_view_summary() + */ +#} +<div class="item-list"> + <ul class="views-summary"> + {% for row in rows %} + <li><a href="{{ row.url }}"{{ row.attributes.addClass(row.active ? 'is-active')|without('href') }}>{{ row.link }}</a> + {% if options.count %} + ({{ row.count }}) + {% endif %} + </li> + {% endfor %} + </ul> +</div> diff --git a/web/themes/seven/templates/classy/views/views-view-table.html.twig b/web/themes/seven/templates/classy/views/views-view-table.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..edc14983da77f19519d5e5fcba6230c281cc634a --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-view-table.html.twig @@ -0,0 +1,120 @@ +{# +/** + * @file + * Theme override for displaying a view as a table. + * + * Available variables: + * - attributes: Remaining HTML attributes for the element. + * - class: HTML classes that can be used to style contextually through CSS. + * - title : The title of this group of rows. + * - header: The table header columns. + * - attributes: Remaining HTML attributes for the element. + * - content: HTML classes to apply to each header cell, indexed by + * the header's key. + * - default_classes: A flag indicating whether default classes should be + * used. + * - caption_needed: Is the caption tag needed. + * - caption: The caption for this table. + * - accessibility_description: Extended description for the table details. + * - accessibility_summary: Summary for the table details. + * - rows: Table row items. Rows are keyed by row number. + * - attributes: HTML classes to apply to each row. + * - columns: Row column items. Columns are keyed by column number. + * - attributes: HTML classes to apply to each column. + * - content: The column content. + * - default_classes: A flag indicating whether default classes should be + * used. + * - responsive: A flag indicating whether table is responsive. + * - sticky: A flag indicating whether table header is sticky. + * - summary_element: A render array with table summary information (if any). + * + * @see template_preprocess_views_view_table() + */ +#} +{% + set classes = [ + 'views-table', + 'views-view-table', + 'cols-' ~ header|length, + responsive ? 'responsive-enabled', + sticky ? 'sticky-enabled', + ] +%} +<table{{ attributes.addClass(classes) }}> + {% if caption_needed %} + <caption> + {% if caption %} + {{ caption }} + {% else %} + {{ title }} + {% endif %} + {% if (summary_element is not empty) %} + {{ summary_element }} + {% endif %} + </caption> + {% endif %} + {% if header %} + <thead> + <tr> + {% for key, column in header %} + {% if column.default_classes %} + {% + set column_classes = [ + 'views-field', + 'views-field-' ~ fields[key], + ] + %} + {% endif %} + <th{{ column.attributes.addClass(column_classes).setAttribute('scope', 'col') }}> + {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {%- if column.url -%} + <a href="{{ column.url }}" title="{{ column.title }}" rel="nofollow">{{ column.content }}{{ column.sort_indicator }}</a> + {%- else -%} + {{ column.content }}{{ column.sort_indicator }} + {%- endif -%} + </{{ column.wrapper_element }}> + {%- else -%} + {%- if column.url -%} + <a href="{{ column.url }}" title="{{ column.title }}" rel="nofollow">{{ column.content }}{{ column.sort_indicator }}</a> + {%- else -%} + {{- column.content }}{{ column.sort_indicator }} + {%- endif -%} + {%- endif -%} + </th> + {% endfor %} + </tr> + </thead> + {% endif %} + <tbody> + {% for row in rows %} + <tr{{ row.attributes }}> + {% for key, column in row.columns %} + {% if column.default_classes %} + {% + set column_classes = [ + 'views-field' + ] + %} + {% for field in column.fields %} + {% set column_classes = column_classes|merge(['views-field-' ~ field]) %} + {% endfor %} + {% endif %} + <td{{ column.attributes.addClass(column_classes) }}> + {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {% for content in column.content %} + {{ content.separator }}{{ content.field_output }} + {% endfor %} + </{{ column.wrapper_element }}> + {%- else -%} + {% for content in column.content %} + {{- content.separator }}{{ content.field_output -}} + {% endfor %} + {%- endif %} + </td> + {% endfor %} + </tr> + {% endfor %} + </tbody> +</table> diff --git a/web/themes/seven/templates/classy/views/views-view.html.twig b/web/themes/seven/templates/classy/views/views-view.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..251b0611dda6860b969faadcdbc08c9a84dfe8d8 --- /dev/null +++ b/web/themes/seven/templates/classy/views/views-view.html.twig @@ -0,0 +1,95 @@ +{# +/** + * @file + * Theme override for a main view template. + * + * Available variables: + * - attributes: Remaining HTML attributes for the element. + * - css_name: A CSS-safe version of the view name. + * - css_class: The user-specified classes names, if any. + * - header: The optional header. + * - footer: The optional footer. + * - rows: The results of the view query, if any. + * - empty: The content to display if there are no rows. + * - pager: The optional pager next/prev links to display. + * - exposed: Exposed widget form/info to display. + * - feed_icons: Optional feed icons to display. + * - more: An optional link to the next page of results. + * - title: Title of the view, only used when displaying in the admin preview. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the view title. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the view title. + * - attachment_before: An optional attachment view to be displayed before the + * view content. + * - attachment_after: An optional attachment view to be displayed after the + * view content. + * - dom_id: Unique id for every view being printed to give unique class for + * JavaScript. + * + * @see template_preprocess_views_view() + */ +#} +{% + set classes = [ + 'view', + 'view-' ~ id|clean_class, + 'view-id-' ~ id, + 'view-display-id-' ~ display_id, + dom_id ? 'js-view-dom-id-' ~ dom_id, + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if title %} + {{ title }} + {% endif %} + {{ title_suffix }} + {% if header %} + <div class="view-header"> + {{ header }} + </div> + {% endif %} + {% if exposed %} + <div class="view-filters"> + {{ exposed }} + </div> + {% endif %} + {% if attachment_before %} + <div class="attachment attachment-before"> + {{ attachment_before }} + </div> + {% endif %} + + {% if rows %} + <div class="view-content"> + {{ rows }} + </div> + {% elseif empty %} + <div class="view-empty"> + {{ empty }} + </div> + {% endif %} + + {% if pager %} + {{ pager }} + {% endif %} + {% if attachment_after %} + <div class="attachment attachment-after"> + {{ attachment_after }} + </div> + {% endif %} + {% if more %} + {{ more }} + {% endif %} + {% if footer %} + <div class="view-footer"> + {{ footer }} + </div> + {% endif %} + {% if feed_icons %} + <div class="feed-icons"> + {{ feed_icons }} + </div> + {% endif %} +</div> diff --git a/web/themes/seven/templates/details.html.twig b/web/themes/seven/templates/details.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..316dee2f63c52be21df4298e4cbd16bde76a321a --- /dev/null +++ b/web/themes/seven/templates/details.html.twig @@ -0,0 +1,52 @@ +{# +/** + * @file + * Theme override for a details element. + * + * Available variables + * - attributes: A list of HTML attributes for the details element. + * - errors: (optional) Any errors for this details element, may not be set. + * - title: (optional) The title of the element, may not be set. + * - summary_attributes: A list of HTML attributes for the summary element. + * - description: (optional) The description of the element, may not be set. + * - children: (optional) The children of the element, may not be set. + * - value: (optional) The value of the element, may not be set. + * + * @see template_preprocess_details() + */ +#} +{# + Prefix 'details' class to avoid collision with Modernizr. + + @todo Remove prefix after https://www.drupal.org/node/2981732 has been solved. +#} +<details{{ attributes.addClass('seven-details') }}> + {%- if title -%} + {% + set summary_classes = [ + 'seven-details__summary', + required ? 'js-form-required', + required ? 'form-required', + ] + %} + <summary{{ summary_attributes.addClass(summary_classes) }}> + <span>{{ title }}</span> + </summary> + {%- endif -%} + <div class="seven-details__wrapper details-wrapper"> + {% if errors %} + <div class="form-item form-item--error-message"> + <strong>{{ errors }}</strong> + </div> + {% endif %} + {%- if description -%} + <div class="seven-details__description">{{ description }}</div> + {%- endif -%} + {%- if children -%} + {{ children }} + {%- endif -%} + {%- if value -%} + {{ value }} + {%- endif -%} + </div> +</details> diff --git a/web/themes/seven/templates/entity-add-list.html.twig b/web/themes/seven/templates/entity-add-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..04d493f44e62a1465d63d2d892a966977fa76619 --- /dev/null +++ b/web/themes/seven/templates/entity-add-list.html.twig @@ -0,0 +1,27 @@ +{# +/** + * @file + * Theme override to present a list of available bundles. + * + * Available variables: + * - bundles: A list of bundles, each with the following properties: + * - label: Bundle label. + * - description: Bundle description. + * - add_link: Link to create an entity of this bundle. + * - add_bundle_message: The message shown when there are no bundles. Only + * available if the entity type uses bundle entities. + * + * @see template_preprocess_entity_add_list() + */ +#} +{% if bundles is not empty %} + <ul class="admin-list"> + {% for bundle in bundles %} + <li class="clearfix"><a href="{{ bundle.add_link.url }}"><span class="label">{{ bundle.label }}</span><div class="description">{{ bundle.description }}</div></a></li> + {% endfor %} + </ul> +{% elseif add_bundle_message is not empty %} + <p> + {{ add_bundle_message }} + </p> +{% endif %} diff --git a/web/themes/seven/templates/field/file-link.html.twig b/web/themes/seven/templates/field/file-link.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..739fc0f7e6adbe29a718c99348ff1d4759cdeea9 --- /dev/null +++ b/web/themes/seven/templates/field/file-link.html.twig @@ -0,0 +1,16 @@ +{# +/** + * @file + * Theme override for a link to a file. + * + * Available variables: + * - attributes: The HTML attributes for the containing element. + * - link: A link to the file. + * - icon: The icon image representing the file type. + * - file_size: The size of the file. + * + * @see template_preprocess_file_link() + */ +#} +{{ attach_library('seven/classy.file') }} +<span{{ attributes }}>{{ icon }} {{ link }}</span> diff --git a/web/themes/seven/templates/image-widget.html.twig b/web/themes/seven/templates/image-widget.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..2d6f4014ed5557791a4a9f79ba7984ad1fe3ff1b --- /dev/null +++ b/web/themes/seven/templates/image-widget.html.twig @@ -0,0 +1,25 @@ +{# +/** + * @file + * Theme override for an image field widget. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - data: Render elements of the image widget. + * + * @see template_preprocess_image_widget() + */ +#} +{{ attach_library('seven/classy.image-widget') }} + +<div{{ attributes }}> + {% if data.preview %} + <div class="image-preview"> + {{ data.preview }} + </div> + {% endif %} + <div class="image-widget-data"> + {# Render widget data without the image preview that was output already. #} + {{ data|without('preview') }} + </div> +</div> diff --git a/web/themes/seven/templates/install-page.html.twig b/web/themes/seven/templates/install-page.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f1335a8a4e1fd17401f531167bc0fd67ca8f1094 --- /dev/null +++ b/web/themes/seven/templates/install-page.html.twig @@ -0,0 +1,51 @@ +{# +/** + * @file + * Seven theme implementation to display a Drupal installation page. + * + * All available variables are mirrored in page.html.twig. + * Some may be blank but they are provided for consistency. + * + * @see template_preprocess_install_page() + */ +#} +<div class="layout-container"> + + <header role="banner"> + {% if site_name %} + <h1 class="page-title"> + {{ site_name }} + {% if site_version %} + <span class="site-version">{{ site_version }}</span> + {% endif %} + </h1> + {% endif %} + </header> + + {% if page.sidebar_first %} + <aside class="layout-sidebar-first" role="complementary"> + {{ page.sidebar_first }} + </aside>{# /.layout-sidebar-first #} + {% endif %} + + <main role="main"> + {% if title %} + <h2 class="heading-a">{{ title }}</h2> + {% endif %} + {{ page.highlighted }} + {{ page.content }} + </main> + + {% if page.sidebar_second %} + <aside class="layout-sidebar-second" role="complementary"> + {{ page.sidebar_second }} + </aside>{# /.layout-sidebar-second #} + {% endif %} + + {% if page.page_bottom %} + <footer role="contentinfo"> + {{ page.page_bottom }} + </footer> + {% endif %} + +</div>{# /.layout-container #} diff --git a/web/themes/seven/templates/maintenance-page.html.twig b/web/themes/seven/templates/maintenance-page.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..2286e8829e065d03d1a832d190c5fe11f066a88f --- /dev/null +++ b/web/themes/seven/templates/maintenance-page.html.twig @@ -0,0 +1,40 @@ +{# +/** + * @file + * Seven's theme implementation to display a single Drupal page while offline. + * + * All available variables are mirrored in page.html.twig. + * Some may be blank but they are provided for consistency. + * + * @see template_preprocess_maintenance_page() + */ +#} +<div class="layout-container"> + + <header role="banner"> + {% if site_name %} + <h1 class="page-title">{{ site_name }}</h1> + {% endif %} + </header> + + {% if page.sidebar_first %} + <aside class="layout-sidebar-first" role="complementary"> + {{ page.sidebar_first }} + </aside>{# /.layout-sidebar-first #} + {% endif %} + + <main role="main"> + {% if title %} + <h1>{{ title }}</h1> + {% endif %} + {{ page.highlighted }} + {{ page.content }} + </main> + + {% if page.page_bottom %} + <footer role="contentinfo"> + {{ page.page_bottom }} + </footer> + {% endif %} + +</div>{# /.layout-container #} diff --git a/web/themes/seven/templates/media-library/details--media-library-add-form-selected-media.html.twig b/web/themes/seven/templates/media-library/details--media-library-add-form-selected-media.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..6d62c3fced7f6288381cb1b977173ad05bfdf28c --- /dev/null +++ b/web/themes/seven/templates/media-library/details--media-library-add-form-selected-media.html.twig @@ -0,0 +1,20 @@ +{% extends "details.html.twig" %} +{# +/** + * @file + * Theme override for the "Additional selected media" area of the modal media + * library dialog. + * + * Available variables + * - attributes: A list of HTML attributes for the details element. + * - errors: (optional) Any errors for this details element, may not be set. + * - title: (optional) The title of the element, may not be set. + * - summary_attributes: A list of HTML attributes for the summary element. + * - description: (optional) The description of the element, may not be set. + * - children: (optional) The children of the element, may not be set. + * - value: (optional) The value of the element, may not be set. + * + * @see template_preprocess_details() + */ +#} +{% set attributes = attributes.addClass('media-library-add-form__selected-media seven-details') %} diff --git a/web/themes/seven/templates/media-library/fieldset--media-library-widget.html.twig b/web/themes/seven/templates/media-library/fieldset--media-library-widget.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..93d7267cc5321632a4e30b2cafe23f597f4f9aa1 --- /dev/null +++ b/web/themes/seven/templates/media-library/fieldset--media-library-widget.html.twig @@ -0,0 +1,64 @@ +{# +/** + * @file + * Theme override for the media library widget. + * + * Available variables: + * - attributes: HTML attributes for the fieldset element. + * - errors: (optional) Any errors for this fieldset element, may not be set. + * - required: Boolean indicating whether the fieldset element is required. + * - legend: The legend element containing the following properties: + * - title: Title of the fieldset, intended for use as the text of the legend. + * - attributes: HTML attributes to apply to the legend. + * - description: The description element containing the following properties: + * - content: The description content of the fieldset. + * - attributes: HTML attributes to apply to the description container. + * - children: The rendered child elements of the fieldset. + * - prefix: The content to add before the fieldset children. + * - suffix: The content to add after the fieldset children. + * + * @see seven_preprocess_fieldset__media_library_widget() + * @see template_preprocess_fieldset() + */ +#} +{% + set classes = [ + 'js-form-item', + 'form-item', + 'js-form-wrapper', + 'form-wrapper', + 'media-library-widget', + ] +%} +<fieldset{{ attributes.addClass(classes) }}> + {% + set legend_span_classes = [ + 'fieldset-legend', + required ? 'js-form-required', + required ? 'form-required', + ] + %} + {# Always wrap fieldset legends in a <span> for CSS positioning. #} + <legend{{ legend.attributes }}> + <span{{ legend_span.attributes.addClass(legend_span_classes) }}>{{ legend.title }}</span> + </legend> + <div class="fieldset-wrapper"> + {% if errors %} + <div class="form-item--error-message"> + <strong>{{ errors }}</strong> + </div> + {% endif %} + {% if prefix.empty_selection %} + <p class="media-library-widget-empty-text">{{ prefix.empty_selection }}</p> + {% elseif prefix.weight_toggle %} + {{ prefix.weight_toggle }} + {% endif %} + {{ children }} + {% if suffix %} + <span class="field-suffix">{{ suffix }}</span> + {% endif %} + {% if description.content %} + <div{{ description.attributes.addClass('description') }}>{{ description.content }}</div> + {% endif %} + </div> +</fieldset> diff --git a/web/themes/seven/templates/media-library/item-list--media-library-add-form-media-list.html.twig b/web/themes/seven/templates/media-library/item-list--media-library-add-form-media-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..27cfe2bd26ae634980ce5bd5d4aed6784dfd956e --- /dev/null +++ b/web/themes/seven/templates/media-library/item-list--media-library-add-form-media-list.html.twig @@ -0,0 +1,33 @@ +{# +/** + * @file + * Theme override for a list of new, unsaved media items being added in the + * modal media library dialog. + * + * Available variables: + * - items: A list of items. Each item contains: + * - attributes: HTML attributes to be applied to each list item. + * - value: The content of the list element. + * - title: The title of the list. + * - list_type: The tag for list element ("ul" or "ol"). + * - wrapper_attributes: HTML attributes to be applied to the list wrapper. + * - attributes: HTML attributes to be applied to the list. + * - empty: A message to display when there are no items. Allowed value is a + * string or render array. + * - context: A list of contextual data associated with the list. May contain: + * - list_style: The custom list style. + * + * @see seven_preprocess_item_list__media_library_add_form_media_list() + * @see template_preprocess_item_list() + */ +#} +{% if items -%} + {%- if title is not empty -%} + <h3>{{ title }}</h3> + {%- endif -%} + <{{ list_type }}{{ attributes.addClass('media-library-add-form__added-media') }}> + {%- for item in items -%} + <li{{ item.attributes.addClass('media-library-add-form__media') }}>{{ item.value }}</li> + {%- endfor -%} + </{{ list_type }}> +{%- endif %} diff --git a/web/themes/seven/templates/media-library/views-view--media_library.html.twig b/web/themes/seven/templates/media-library/views-view--media_library.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4321cc3d53c22eff97dd7551d51535af92b916da --- /dev/null +++ b/web/themes/seven/templates/media-library/views-view--media_library.html.twig @@ -0,0 +1,95 @@ +{# +/** + * @file + * Theme override for the media_library view template. + * + * Available variables: + * - attributes: Remaining HTML attributes for the element. + * - css_name: A CSS-safe version of the view name. + * - css_class: The user-specified classes names, if any. + * - header: The optional header. + * - footer: The optional footer. + * - rows: The results of the view query, if any. + * - empty: The content to display if there are no rows. + * - pager: The optional pager next/prev links to display. + * - exposed: Exposed widget form/info to display. + * - feed_icons: Optional feed icons to display. + * - more: An optional link to the next page of results. + * - title: Title of the view, only used when displaying in the admin preview. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the view title. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the view title. + * - attachment_before: An optional attachment view to be displayed before the + * view content. + * - attachment_after: An optional attachment view to be displayed after the + * view content. + * - dom_id: Unique id for every view being printed to give unique class for + * Javascript. + * + * @see template_preprocess_views_view() + */ +#} +{% + set classes = [ + 'view', + 'view-' ~ id|clean_class, + 'view-id-' ~ id, + 'view-display-id-' ~ display_id, + dom_id ? 'js-view-dom-id-' ~ dom_id, + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if title %} + {{ title }} + {% endif %} + {{ title_suffix }} + {% if exposed %} + <div class="view-filters"> + {{ exposed }} + </div> + {% endif %} + {% if header %} + <div class="view-header"> + {{ header }} + </div> + {% endif %} + {% if attachment_before %} + <div class="attachment attachment-before"> + {{ attachment_before }} + </div> + {% endif %} + + {% if rows %} + <div class="view-content"> + {{ rows }} + </div> + {% elseif empty %} + <div class="view-empty"> + {{ empty }} + </div> + {% endif %} + + {% if pager %} + {{ pager }} + {% endif %} + {% if attachment_after %} + <div class="attachment attachment-after"> + {{ attachment_after }} + </div> + {% endif %} + {% if more %} + {{ more }} + {% endif %} + {% if footer %} + <div class="view-footer"> + {{ footer }} + </div> + {% endif %} + {% if feed_icons %} + <div class="feed-icons"> + {{ feed_icons }} + </div> + {% endif %} +</div> diff --git a/web/themes/seven/templates/media-library/views-view-unformatted--media-library.html.twig b/web/themes/seven/templates/media-library/views-view-unformatted--media-library.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4bc33e0e869e5f9f17df02da1355434f06357964 --- /dev/null +++ b/web/themes/seven/templates/media-library/views-view-unformatted--media-library.html.twig @@ -0,0 +1,34 @@ +{# +/** + * @file + * Theme override for the media_library display of unformatted rows. + * + * Available variables: + * - title: The title of this group of rows. May be empty. + * - rows: A list of the view's row items. + * - attributes: The row's HTML attributes. + * - content: The row's content. + * - view: The view object. + * - default_row_class: A flag indicating whether default classes should be + * used on rows. + * + * @see template_preprocess_views_view_unformatted() + */ +#} +{% if title %} + <h3>{{ title }}</h3> +{% endif %} +<div class="media-library-views-form__rows"> + {% for row in rows %} + {% + set row_classes = [ + default_row_class ? 'views-row', + 'media-library-item', + 'media-library-item--grid', + ] + %} + <div{{ row.attributes.addClass(row_classes) }}> + {{- row.content -}} + </div> + {% endfor %} +</div> diff --git a/web/themes/seven/templates/menu-local-tasks.html.twig b/web/themes/seven/templates/menu-local-tasks.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b749127bc6479fce20c2b7c156e3993fd5a87a0e --- /dev/null +++ b/web/themes/seven/templates/menu-local-tasks.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Seven theme implementation to display primary and secondary local tasks. + * + * Available variables: + * - primary: HTML list items representing primary tasks. + * - secondary: HTML list items representing secondary tasks. + * + * Each item in these variables (primary and secondary) can be individually + * themed in menu-local-task.html.twig. + * + * @ingroup themeable + */ +#} +{% if primary %} + <h2 id="primary-tabs-title" class="visually-hidden">{{ 'Primary tabs'|t }}</h2> + <nav role="navigation" class="is-horizontal is-collapsible" aria-labelledby="primary-tabs-title" data-drupal-nav-tabs> + <button class="reset-appearance tabs__tab tabs__trigger" aria-label="{{ 'Primary tabs display toggle'|t }}" data-drupal-nav-tabs-trigger>•••</button> + <ul class="tabs primary clearfix" data-drupal-nav-tabs-target>{{ primary }}</ul> + </nav> +{% endif %} +{% if secondary %} + <h2 id="secondary-tabs-title" class="visually-hidden">{{ 'Secondary tabs'|t }}</h2> + <nav role="navigation" class="is-horizontal" aria-labelledby="secondary-tabs-title" data-drupal-nav-tabs> + <ul class="tabs secondary clearfix">{{ secondary }}</ul> + </nav> +{% endif %} diff --git a/web/themes/seven/templates/node-add-list.html.twig b/web/themes/seven/templates/node-add-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..897dd1ea13c3425a1bde7c52445b0d559e19fc76 --- /dev/null +++ b/web/themes/seven/templates/node-add-list.html.twig @@ -0,0 +1,29 @@ +{# +/** + * @file + * Seven's theme implementation to list node types available for adding content. + * + * Available variables: + * - types: List of content types. Each content type contains: + * - url: Path to the add content of this type page. + * - label: The title of this type of content. + * - description: Description of this type of content. + * + * @see template_preprocess_node_add_list() + * @see seven_preprocess_node_add_list() + */ +#} +{% if content %} + <ul class="admin-list"> + {% for type in types %} + <li class="clearfix"><a href="{{ type.url }}"><span class="label">{{ type.label }}</span><div class="description">{{ type.description }}</div></a></li> + {% endfor %} + </ul> +{% else %} + <p> + {% set create_content = path('node.type_add') %} + {% trans %} + You have not created any content types yet. Go to the <a href="{{ create_content }}">content type creation page</a> to add a new content type. + {% endtrans %} + </p> +{% endif %} diff --git a/web/themes/seven/templates/node-edit-form.html.twig b/web/themes/seven/templates/node-edit-form.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..cf747f92920b54c61e359565763c6a15c5aaa13e --- /dev/null +++ b/web/themes/seven/templates/node-edit-form.html.twig @@ -0,0 +1,31 @@ +{# +/** + * @file + * Theme override for a node edit form. + * + * Two column template for the node add/edit form. + * + * This template will be used when a node edit form specifies 'node_edit_form' + * as its #theme callback. Otherwise, by default, node add/edit forms will be + * themed by form.html.twig. + * + * Available variables: + * - form: The node add/edit form. + * + * @see seven_form_node_form_alter() + */ +#} +<div class="layout-node-form clearfix"> + <div class="layout-region layout-region-node-main"> + {{ form|without('advanced', 'footer', 'actions') }} + </div> + <div class="layout-region layout-region-node-secondary"> + {{ form.advanced }} + </div> + <div class="layout-region layout-region-node-footer"> + <div class="layout-region-node-footer__content"> + {{ form.footer }} + {{ form.actions }} + </div> + </div> +</div> diff --git a/web/themes/seven/templates/page.html.twig b/web/themes/seven/templates/page.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1a1a89b0c31e822478dea33dc35ffa7a7213e720 --- /dev/null +++ b/web/themes/seven/templates/page.html.twig @@ -0,0 +1,62 @@ +{# +/** + * @file + * Seven's theme implementation to display a single Drupal page. + * + * The doctype, html, head, and body tags are not in this template. Instead + * they can be found in the html.html.twig template normally located in the + * core/modules/system directory. + * + * Available variables: + * + * General utility variables: + * - base_path: The base URL path of the Drupal installation. Will usually be + * "/" unless you have installed Drupal in a sub-directory. + * - is_front: A flag indicating if the current page is the front page. + * - logged_in: A flag indicating if the user is registered and signed in. + * - is_admin: A flag indicating if the user has permission to access + * administration pages. + * + * Site identity: + * - front_page: The URL of the front page. Use this instead of base_path when + * linking to the front page. This includes the language domain or prefix. + * + * Page content (in order of occurrence in the default page.html.twig): + * - node: Fully loaded node, if there is an automatically-loaded node + * associated with the page and the node ID is the second argument in the + * page's path (e.g. node/12345 and node/12345/revisions, but not + * comment/reply/12345). + * + * Regions: + * - page.header: Items for the header region. + * - page.pre_content: Items for the pre-content region. + * - page.breadcrumb: Items for the breadcrumb region. + * - page.highlighted: Items for the highlighted region. + * - page.help: Dynamic help text, mostly for admin pages. + * - page.content: The main content of the current page. + * + * @see template_preprocess_page() + * @see html.html.twig + */ +#} + <header class="content-header clearfix"> + <div class="layout-container"> + {{ page.header }} + </div> + </header> + + <div class="layout-container"> + {{ page.pre_content }} + {{ page.breadcrumb }} + <main class="page-content clearfix" role="main"> + <div class="visually-hidden"><a id="main-content" tabindex="-1"></a></div> + {{ page.highlighted }} + {% if page.help %} + <div class="help"> + {{ page.help }} + </div> + {% endif %} + {{ page.content }} + </main> + + </div> diff --git a/web/themes/seven/templates/status-report-counter.html.twig b/web/themes/seven/templates/status-report-counter.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..fe237b982e3464e57b8afa66b6928c58d56ae773 --- /dev/null +++ b/web/themes/seven/templates/status-report-counter.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @file + * Theme override for status report counter. + * + * Available variables: + * - amount: The number shown on counter. + * - text: The text shown on counter. + * - severity: The severity of the counter. + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'system-status-counter', + 'system-status-counter--' ~ severity, + ] +%} +<span{{ attributes.addClass(classes) }}> + <span class="system-status-counter__status-icon system-status-counter__status-icon--{{ severity }}"></span> + <span class="system-status-counter__status-title"> + <span class="system-status-counter__title-count">{{ amount }} {{ text }}</span> + <span class="system-status-counter__details"><a href="#{{ severity }}" ><span class="visually-hidden">{{ text }} </span>Details</a></span> + </span> +</span> diff --git a/web/themes/seven/templates/status-report-general-info.html.twig b/web/themes/seven/templates/status-report-general-info.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..92717dd10c00935263c092fc2b17fcb673468ce2 --- /dev/null +++ b/web/themes/seven/templates/status-report-general-info.html.twig @@ -0,0 +1,99 @@ +{# +/** + * @file + * Theme override for status report general info. + * + * Available variables: + * - drupal: The status of Drupal installation: + * - value: The current status of Drupal installation. + * - description: The description for current status of Drupal installation. + * - cron: The status of cron: + * - value: The current status of cron. + * - description: The description for current status of cron. + * - cron.run_cron: An array to render a button for running cron. + * - database_system: The status of database system: + * - value: The current status of database system. + * - description: The description for current status of cron. + * - database_system_version: The info about current database version: + * - value: The current version of database. + * - description: The description for current version of database. + * - php: The current version of PHP: + * - value: The status of currently installed PHP version. + * - description: The description for current installed PHP version. + * - php_memory_limit: The info about current PHP memory limit: + * - value: The status of currently set PHP memory limit. + * - description: The description for currently set PHP memory limit. + * - webserver: The info about currently installed web server: + * - value: The status of currently installed web server. + * - description: The description for the status of currently installed web + * server. + */ +#} +<div class="system-status-general-info"> + <h2 class="system-status-general-info__header">{{ 'General System Information'|t }}</h2> + <div class="system-status-general-info__items"> + <div class="system-status-general-info__item"> + <span class="system-status-general-info__item-icon system-status-general-info__item-icon--drupal"></span> + <div class="system-status-general-info__item-details"> + <h3 class="system-status-general-info__item-title">{{ 'Drupal Version'|t }}</h3> + {{ drupal.value }} + {% if drupal.description %} + <div class="description">{{ drupal.description }}</div> + {% endif %} + </div> + </div> + <div class="system-status-general-info__item"> + <span class="system-status-general-info__item-icon system-status-general-info__item-icon--clock"></span> + <div class="system-status-general-info__item-details"> + <h3 class="system-status-general-info__item-title">{{ 'Last Cron Run'|t }}</h3> + {{ cron.value }} + {% if cron.run_cron %} + <div class="system-status-general-info__run-cron">{{ cron.run_cron }}</div> + {% endif %} + {% if cron.description %} + <div class="system-status-general-info__description">{{ cron.description }}</div> + {% endif %} + </div> + </div> + <div class="system-status-general-info__item"> + <span class="system-status-general-info__item-icon system-status-general-info__item-icon--server"></span> + <div class="system-status-general-info__item-details"> + <h3 class="system-status-general-info__item-title">{{ 'Web Server'|t }}</h3> + {{ webserver.value }} + {% if webserver.description %} + <div class="description">{{ webserver.description }}</div> + {% endif %} + </div> + </div> + <div class="system-status-general-info__item"> + <span class="system-status-general-info__item-icon system-status-general-info__item-icon--php"></span> + <div class="system-status-general-info__item-details"> + <h3 class="system-status-general-info__item-title">{{ 'PHP'|t }}</h3> + <h4 class="system-status-general-info__sub-item-title">{{ 'Version'|t }}</h4>{{ php.value }} + {% if php.description %} + <div class="description">{{ php.description }}</div> + {% endif %} + + <h4 class="system-status-general-info__sub-item-title">{{ 'Memory limit'|t }}</h4>{{ php_memory_limit.value }} + {% if php_memory_limit.description %} + <div class="description">{{ php_memory_limit.description }}</div> + {% endif %} + </div> + </div> + <div class="system-status-general-info__item"> + <span class="system-status-general-info__item-icon system-status-general-info__item-icon--database"></span> + <div class="system-status-general-info__item-details"> + <h3 class="system-status-general-info__item-title">{{ 'Database'|t }}</h3> + <h4 class="system-status-general-info__sub-item-title">{{ 'Version'|t }}</h4>{{ database_system_version.value }} + {% if database_system_version.description %} + <div class="description">{{ database_system_version.description }}</div> + {% endif %} + + <h4 class="system-status-general-info__sub-item-title">{{ 'System'|t }}</h4>{{ database_system.value }} + {% if database_system.description %} + <div class="description">{{ database_system.description }}</div> + {% endif %} + </div> + </div> + </div> +</div> diff --git a/web/themes/seven/templates/status-report-grouped.html.twig b/web/themes/seven/templates/status-report-grouped.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..91aa2981143baef0ae54fe6809af668f3b3c19e0 --- /dev/null +++ b/web/themes/seven/templates/status-report-grouped.html.twig @@ -0,0 +1,50 @@ +{# +/** + * @file + * Theme override to display status report. + * + * - grouped_requirements: Contains grouped requirements. + * Each group contains: + * - title: The title of the group. + * - type: The severity of the group. + * - items: The requirement instances. + * Each requirement item contains: + * - title: The title of the requirement. + * - value: (optional) The requirement's status. + * - description: (optional) The requirement's description. + * - severity_title: The title of the severity. + * - severity_status: Indicates the severity status. + */ +#} +{{ attach_library('core/drupal.collapse') }} +{{ attach_library('seven/drupal.responsive-detail') }} + +<div class="system-status-report"> + {% for group in grouped_requirements %} + <div class="system-status-report__requirements-group"> + <h3 id="{{ group.type }}">{{ group.title }}</h3> + {% for requirement in group.items %} + <details class="system-status-report__entry system-status-report__entry--{{ group.type }} color-{{ group.type }}" open> + {% + set summary_classes = [ + 'system-status-report__status-title', + group.type in ['warning', 'error'] ? 'system-status-report__status-icon system-status-report__status-icon--' ~ group.type + ] + %} + <summary{{ create_attribute({'class': summary_classes}) }} role="button"> + {% if requirement.severity_title %} + <span class="visually-hidden">{{ requirement.severity_title }}</span> + {% endif %} + {{ requirement.title }} + </summary> + <div class="system-status-report__entry__value"> + {{ requirement.value }} + {% if requirement.description %} + <div class="description">{{ requirement.description }}</div> + {% endif %} + </div> + </details> + {% endfor %} + </div> + {% endfor %} +</div> diff --git a/web/themes/seven/templates/status-report-page.html.twig b/web/themes/seven/templates/status-report-page.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..27e0d1576e24f37191e88926a806dd449bf30750 --- /dev/null +++ b/web/themes/seven/templates/status-report-page.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Theme override for the status report page. + * + * Available variables: + * - counters: The list of counter elements. + * - general_info: A render array to create general info element. + * - requirements: A render array to create requirements table. + * + * @see template_preprocess_status_report() + */ +#} +{% if counters|length == 3 %} + {% set element_width_class = ' system-status-report-counters__item--third-width' %} +{% elseif counters|length == 2 %} + {% set element_width_class = ' system-status-report-counters__item--half-width' %} +{% endif %} +<div class="system-status-report-counters"> + {% for counter in counters %} + <div class="system-status-report-counters__item{{ element_width_class }}"> + {{ counter }} + </div> + {% endfor %} +</div> + +{{ general_info }} +{{ requirements }} diff --git a/web/themes/seven/templates/text_format/container--text-format-filter-guidelines.html.twig b/web/themes/seven/templates/text_format/container--text-format-filter-guidelines.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e10d0951a44560f62ba67a730e126edda4f56516 --- /dev/null +++ b/web/themes/seven/templates/text_format/container--text-format-filter-guidelines.html.twig @@ -0,0 +1,24 @@ +{# +/** + * @file + * Theme implementation for text filter guidelines. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - children: The rendered child elements of the container. + * - has_parent: A flag to indicate that the container has one or more parent + * containers. + * + * @see template_preprocess_container() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + has_parent ? 'js-form-wrapper', + has_parent ? 'form-wrapper', + 'filter-guidelines', + ] +%} +<div{{ attributes.addClass(classes) }}>{{ children }}</div> diff --git a/web/themes/seven/templates/text_format/container--text-format-filter-help.html.twig b/web/themes/seven/templates/text_format/container--text-format-filter-help.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..5935ee33deab4f5218461274227e1b2fab4437a1 --- /dev/null +++ b/web/themes/seven/templates/text_format/container--text-format-filter-help.html.twig @@ -0,0 +1,22 @@ +{# +/** + * @file + * Theme implementation for text filter help. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - children: The rendered child elements of the container. + * + * @see template_preprocess_container() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + has_parent ? 'js-form-wrapper', + has_parent ? 'form-wrapper', + 'filter-help', + ] +%} +<div{{ attributes.addClass(classes) }}>{{ children }}</div> diff --git a/web/themes/seven/templates/text_format/container--text-format-filter-wrapper.html.twig b/web/themes/seven/templates/text_format/container--text-format-filter-wrapper.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..211ab2be0b3d0d29cb4cc9b0359628390d3415a5 --- /dev/null +++ b/web/themes/seven/templates/text_format/container--text-format-filter-wrapper.html.twig @@ -0,0 +1,24 @@ +{# +/** + * @file + * Theme implementation for the text filter wrapper. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - children: The rendered child elements of the container. + * - has_parent: A flag to indicate that the container has one or more parent + * containers. + * + * @see template_preprocess_container() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + has_parent ? 'js-form-wrapper', + has_parent ? 'form-wrapper', + 'filter-wrapper', + ] +%} +<div{{ attributes.addClass(classes) }}>{{ children }}</div> diff --git a/web/themes/seven/tests/src/Functional/SevenLayoutBuilderTest.php b/web/themes/seven/tests/src/Functional/SevenLayoutBuilderTest.php new file mode 100644 index 0000000000000000000000000000000000000000..e39bfaa3b3c8198f484be20325def4b32616a1ca --- /dev/null +++ b/web/themes/seven/tests/src/Functional/SevenLayoutBuilderTest.php @@ -0,0 +1,113 @@ +<?php + +namespace Drupal\Tests\seven\Functional; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests the Seven theme. + * + * @group seven + */ +class SevenLayoutBuilderTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'seven'; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'views', + 'layout_builder', + 'layout_builder_views_test', + 'layout_test', + 'field_ui', + 'block', + 'block_test', + 'node', + 'layout_builder_test', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + $this->drupalPlaceBlock('page_title_block', ['region' => 'header']); + $this->drupalPlaceBlock('local_tasks_block', ['region' => 'header']); + + // Create two nodes. + $this->createContentType([ + 'type' => 'bundle_with_section_field', + 'name' => 'Bundle with section field', + ]); + $this->createNode([ + 'type' => 'bundle_with_section_field', + 'title' => 'The first node title', + 'body' => [ + [ + 'value' => 'The first node body', + ], + ], + ]); + $this->createNode([ + 'type' => 'bundle_with_section_field', + 'title' => 'The second node title', + 'body' => [ + [ + 'value' => 'The second node body', + ], + ], + ]); + } + + /** + * Tests the layout builder has expected contextual links with Seven. + * + * @see seven.theme + */ + public function testContextualLinks() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + $this->drupalLogin($this->drupalCreateUser([ + 'configure any layout', + 'administer node display', + 'administer node fields', + 'access contextual links', + ])); + + $field_ui_prefix = 'admin/structure/types/manage/bundle_with_section_field'; + + // From the manage display page, go to manage the layout. + $this->drupalGet("$field_ui_prefix/display/default"); + $assert_session->linkNotExists('Manage layout'); + $assert_session->fieldDisabled('layout[allow_custom]'); + + $this->submitForm(['layout[enabled]' => TRUE], 'Save'); + $assert_session->linkExists('Manage layout'); + $this->clickLink('Manage layout'); + + // Add a new block. + $assert_session->linkExists('Add block'); + $this->clickLink('Add block'); + $assert_session->linkExists('Powered by Drupal'); + $this->clickLink('Powered by Drupal'); + $page->fillField('settings[label]', 'This is the label'); + $page->checkField('settings[label_display]'); + $page->pressButton('Add block'); + + // Test that the block has the contextual class applied and the container + // for contextual links. + $assert_session->elementExists('css', 'div.block-system-powered-by-block.contextual-region div[data-contextual-id]'); + + // Ensure other blocks do not have contextual links. + $assert_session->elementExists('css', 'div.block-page-title-block'); + $assert_session->elementNotExists('css', 'div.block-page-title-block.contextual-region div[data-contextual-id]'); + } + +}