Move into nested docroot

This commit is contained in:
Rob Davies 2017-02-13 15:31:17 +00:00
parent 83a0d3a149
commit c8b70abde9
13405 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,17 @@
ABOUT CLASSY
-----------
Classy is a base theme that provides many classes in its markup. For cleaner
markup (fewer classes), the default Stable base theme can be used instead.
To use Classy as your base theme, set the 'base theme' in your theme's .info.yml
file to "classy":
base theme: classy
See https://www.drupal.org/theme-guide/8/classy for more information on using
the Classy theme.
ABOUT DRUPAL THEMING
--------------------
See https://www.drupal.org/theme-guide/8 for more information on Drupal theming.

View file

@ -0,0 +1,23 @@
name: Classy
type: theme
description: 'A base theme with sensible default CSS classes added. Learn how to use Classy as a base theme in the <a href="https://www.drupal.org/theme-guide/8">Drupal 8 Theming Guide</a>.'
package: Core
version: VERSION
core: 8.x
hidden: true
libraries:
- classy/base
- core/normalize
libraries-extend:
user/drupal.user:
- classy/user
core/drupal.dropbutton:
- classy/dropbutton
core/drupal.dialog:
- classy/dialog
file/drupal.file:
- classy/file
core/drupal.progress:
- classy/progress

View file

@ -0,0 +1,93 @@
base:
version: VERSION
css:
component:
css/components/action-links.css: { weight: -10 }
css/components/breadcrumb.css: { weight: -10 }
css/components/button.css: { weight: -10 }
css/components/collapse-processed.css: { weight: -10 }
css/components/container-inline.css: { weight: -10 }
css/components/details.css: { weight: -10 }
css/components/exposed-filters.css: { weight: -10 }
css/components/field.css: { weight: -10 }
css/components/form.css: { weight: -10 }
css/components/icons.css: { weight: -10 }
css/components/inline-form.css: { weight: -10 }
css/components/item-list.css: { weight: -10 }
css/components/link.css: { weight: -10 }
css/components/links.css: { weight: -10 }
css/components/menu.css: { weight: -10 }
css/components/more-link.css: { weight: -10 }
css/components/pager.css: { weight: -10 }
css/components/tabledrag.css: { weight: -10 }
css/components/tableselect.css: { weight: -10 }
css/components/tablesort.css: { weight: -10 }
css/components/tabs.css: { weight: -10 }
css/components/textarea.css: { weight: -10 }
css/components/ui-dialog.css: { weight: -10 }
book-navigation:
version: VERSION
css:
component:
css/components/book-navigation.css: {}
dialog:
version: VERSION
css:
component:
css/components/dialog.css: { weight: -10 }
dropbutton:
version: VERSION
css:
component:
css/components/dropbutton.css: { weight: -10 }
file:
version: VERSION
css:
component:
css/components/file.css: { weight: -10 }
forum:
version: VERSION
css:
component:
css/components/forum.css: { weight: -10 }
indented:
version: VERSION
css:
component:
css/components/indented.css: {}
messages:
version: VERSION
css:
component:
css/components/messages.css: { weight: -10 }
node:
version: VERSION
css:
component:
css/components/node.css: { weight: -10 }
progress:
version: VERSION
css:
component:
css/components/progress.css: { weight: -10 }
search-results:
version: VERSION
css:
component:
css/components/search-results.css: {}
user:
version: VERSION
css:
component:
css/components/user.css: { weight: -10 }

View file

@ -0,0 +1,43 @@
/**
* @file
* Styles for link buttons and action links.
*/
.action-links {
list-style: none;
padding: 0;
margin: 1em 0;
}
[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-left: 0.3em;
margin-right: 0;
}
.button-action {
display: inline-block;
line-height: 160%;
padding: 0.2em 0.5em 0.3em;
text-decoration: none;
}
.button-action:before {
content: '+';
font-weight: 900;
margin-left: -0.1em; /* LTR */
padding-right: 0.2em; /* LTR */
}
[dir="rtl"] .button-action:before {
margin-left: 0;
margin-right: -0.1em;
padding-left: 0.2em;
padding-right: 0;
}

View file

@ -0,0 +1,40 @@
/**
* @file
* Styling for the Book module.
*/
.book-navigation .menu {
padding-bottom: 0;
padding-top: 1em;
}
.book-navigation .book-pager {
margin: 0;
overflow: auto;
padding: 0.5em 0;
}
.book-pager__item {
display: inline-block;
list-style-type: none;
vertical-align: top;
}
.book-pager__item--previous {
text-align: left; /* LTR */
width: 45%;
}
[dir="rtl"] .book-pager__item--previous {
float: right;
text-align: right;
}
.book-pager__item--center {
text-align: center;
width: 8%;
}
.book-pager__item--next {
float: right; /* LTR */
text-align: right; /* LTR */
width: 45%;
}
[dir="rtl"] .book-pager__item--next {
float: left;
text-align: left;
}

View file

@ -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;
list-style-type: none;
margin: 0;
padding: 0;
}
/* IE8 does not support :not() and :last-child. */
.breadcrumb li:before {
content: ' \BB ';
}
.breadcrumb li:first-child:before {
content: none;
}

View file

@ -0,0 +1,15 @@
/**
* @file
* Visual styles for buttons.
*/
.button,
.image-button {
margin-left: 1em;
margin-right: 1em;
}
.button:first-child,
.image-button:first-child {
margin-left: 0;
margin-right: 0;
}

View file

@ -0,0 +1,32 @@
/**
* @file
* Visual styles for collapsible fieldsets.
*/
.collapse-processed > summary {
padding-left: 0.5em;
padding-right: 0.5em;
}
.collapse-processed > summary:before {
background: url(../../../../misc/menu-expanded.png) 0px 100% no-repeat; /* LTR */
content: "";
float: left; /* LTR */
height: 1em;
width: 1em;
}
[dir="rtl"] .collapse-processed > summary:before {
background-position: 100% 100%;
float: right;
}
.collapse-processed:not([open]) > summary:before {
background-position: 25% 35%; /* LTR */
-ms-transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
}
[dir="rtl"] .collapse-processed:not([open]) > summary:before {
background-position: 75% 35%;
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}

View file

@ -0,0 +1,20 @@
/**
* @file
* Inline items.
*/
.container-inline label:after,
.container-inline .label:after {
content: ':';
}
.form-type-radios .container-inline label:after {
content: '';
}
.form-type-radios .container-inline .form-type-radio {
margin: 0 1em;
}
.container-inline .form-actions,
.container-inline.form-actions {
margin-top: 0;
margin-bottom: 0;
}

View file

@ -0,0 +1,23 @@
/**
* @file
* Collapsible details.
*
* @see collapse.js
* @see http://nicolasgallagher.com/css-background-image-hacks/
*/
details {
border: 1px solid #ccc;
margin-top: 1em;
margin-bottom: 1em;
}
details > .details-wrapper {
padding: 0.5em 1.5em;
}
/* @todo Regression: The summary of uncollapsible details are no longer
vertically aligned with the .details-wrapper in browsers without native
details support. */
summary {
cursor: pointer;
padding: 0.2em 0.5em;
}

View file

@ -0,0 +1,72 @@
/**
* @file
* Presentational styles for Drupal dialogs.
*/
.ui-dialog {
position: absolute;
z-index: 1260;
overflow: visible;
color: #000;
background: #fff;
border: solid 1px #ccc;
padding: 0;
}
@media all and (max-width: 48em) { /* 768px */
.ui-dialog {
width: 92% !important;
}
}
.ui-dialog .ui-dialog-titlebar {
font-weight: bold;
background: #f3f4ee;
border-style: solid;
border-radius: 0;
border-width: 0 0 1px 0;
border-color: #ccc;
}
.ui-dialog .ui-dialog-titlebar-close {
border: 0;
background: none;
}
.ui-dialog .ui-dialog-buttonpane {
margin-top: 0;
background: #f3f4ee;
padding: .3em 1em;
border-width: 1px 0 0 0;
border-color: #ccc;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
margin: 0;
padding: 0;
}
.ui-dialog .ui-dialog-buttonpane .ui-button-text-only .ui-button-text {
padding: 0;
}
/* Form action buttons are moved in dialogs. Remove empty space. */
.ui-dialog .ui-dialog-content .form-actions {
padding: 0;
margin: 0;
}
.ui-dialog .ajax-progress-throbber {
/* Can't do center:50% middle: 50%, so approximate it for a typical window size. */
left: 49%;
position: fixed;
top: 48.5%;
z-index: 1000;
background-color: #232323;
background-image: url(../../../../misc/loading-small.gif);
background-position: center center;
background-repeat: no-repeat;
border-radius: 7px;
height: 24px;
opacity: 0.9;
padding: 4px;
width: 24px;
}
.ui-dialog .ajax-progress-throbber .throbber,
.ui-dialog .ajax-progress-throbber .message {
display: none;
}

View file

@ -0,0 +1,33 @@
/**
* @file
* General styles for dropbuttons.
*/
.js .dropbutton-widget {
background-color: white;
border: 1px solid #cccccc;
}
.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-left: 1px solid #e8e8e8;
border-right: 0 none;
}
.dropbutton-multiple .dropbutton .dropbutton-action > * {
margin-right: 0.25em; /* LTR */
}
[dir="rtl"] .dropbutton-multiple .dropbutton .dropbutton-action > * {
margin-left: 0.25em;
margin-right: 0;
}

View file

@ -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-left: 1em;
margin-right: 0;
}
.exposed-filters .form-item {
margin: 0 0 0.1em 0;
padding: 0;
}
.exposed-filters .form-item label {
float: left; /* LTR */
font-weight: normal;
width: 10em;
}
[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-style: normal;
font-weight: bold;
}
.exposed-filters .additional-filters {
float: left; /* LTR */
margin-right: 1em; /* LTR */
}
[dir="rtl"] .exposed-filters .additional-filters {
float: right;
margin-left: 1em;
margin-right: 0;
}

View file

@ -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-left: 0.5em;
padding-right: 0;
}
.field--label-inline .field__label::after {
content: ':';
}

View file

@ -0,0 +1,62 @@
/**
* @file
* Default style for file module.
*/
/* File icons.*/
.file {
padding-left: 20px; /* LTR */
display: inline-block;
min-height: 16px;
background-repeat: no-repeat;
background-position: left center; /* LTR */
}
[dir="rtl"] .file {
padding-left: inherit;
padding-right: 20px;
background-position: right center;
}
.file--general,
.file--application-octet-stream {
background-image: url(../../images/icons/application-octet-stream.png);
}
.file--package-x-generic {
background-image: url(../../images/icons/package-x-generic.png);
}
.file--x-office-spreadsheet {
background-image: url(../../images/icons/x-office-spreadsheet.png);
}
.file--x-office-document {
background-image: url(../../images/icons/x-office-document.png);
}
.file--x-office-presentation {
background-image: url(../../images/icons/x-office-presentation.png);
}
.file--text-x-script {
background-image: url(../../images/icons/text-x-script.png);
}
.file--text-html {
background-image: url(../../images/icons/text-html.png);
}
.file--text-plain {
background-image: url(../../images/icons/text-plain.png);
}
.file--application-pdf {
background-image: url(../../images/icons/application-pdf.png);
}
.file--application-x-executable {
background-image: url(../../images/icons/application-x-executable.png);
}
.file--audio {
background-image: url(../../images/icons/audio-x-generic.png);
}
.file--video {
background-image: url(../../images/icons/video-x-generic.png);
}
.file--text {
background-image: url(../../images/icons/text-x-generic.png);
}
.file--image {
background-image: url(../../images/icons/image-x-generic.png);
}

View file

@ -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: .5em; /*LTR*/
}
[dir="rtl"] form .field-multiple-table .field-multiple-drag .tabledrag-handle {
padding-right: 0;
padding-left: .5em;
}
form .field-add-more-submit {
margin: .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;
font-size: inherit;
font-weight: bold;
margin: 0;
padding: 0;
}
.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-left: 0;
margin-right: 2.4em;
}
.marker {
color: #e00;
}
.form-required:after {
content: '';
vertical-align: super;
display: inline-block;
/* Use a background image to prevent screen readers from announcing the text. */
background-image: url(../../../../misc/icons/ee0000/required.svg);
background-repeat: no-repeat;
background-size: 6px 6px;
width: 6px;
height: 6px;
margin: 0 0.3em;
}
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 {
content: '';
display: inline-block;
height: 14px;
width: 14px;
vertical-align: sub;
background: url(../../../../misc/icons/e32700/error.svg) no-repeat;
background-size: contain;
}

View file

@ -0,0 +1,46 @@
/**
* @file
* Styling for the Forum module.
*/
.forum__description {
font-size: 0.9em;
margin: 0.5em;
}
.forum__icon {
background-image: url(../../images/icons/forum-icons.png);
background-repeat: no-repeat;
float: left; /* LTR */
height: 24px;
margin: 0 9px 0 0; /* LTR */
width: 24px;
}
[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-left: 0;
margin-right: 20px;
}
.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;
}

View file

@ -0,0 +1,21 @@
/**
* @file
* Visual styles for icons.
*/
.icon-help {
background: url(../../../../misc/help.png) 0 50% no-repeat; /* LTR */
padding: 1px 0 1px 20px; /* LTR */
}
[dir="rtl"] .icon-help {
background-position: 100% 50%;
padding: 1px 20px 1px 0;
}
.feed-icon {
background: url(../../../../misc/feed.svg) no-repeat;
overflow: hidden;
text-indent: -9999px;
display: block;
width: 16px;
height: 16px;
}

View file

@ -0,0 +1,21 @@
/**
* Image upload widget.
*/
.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;
}

View file

@ -0,0 +1,16 @@
/**
* @file
* Basic styling for comment module.
*/
/**
* Indent threaded comments.
*/
.indented {
margin-left: 25px; /* LTR */
}
[dir="rtl"] .indented {
margin-left: 0;
margin-right: 25px;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -0,0 +1,16 @@
/**
* @file
* Style another element as a link.
*/
button.link {
background: transparent;
border: 0;
cursor: pointer;
margin: 0;
padding: 0;
font-size: 1em;
}
label button.link {
font-weight: bold;
}

View file

@ -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;
list-style-type: none;
padding: 0 0.5em;
}
ul.links a.is-active {
color: #000;
}

View file

@ -0,0 +1,34 @@
/**
* @file
* Visual styles for menu.
*/
ul.menu {
list-style: none outside;
margin-left: 1em; /* LTR */
padding: 0;
text-align: left; /* LTR */
}
[dir="rtl"] ul.menu {
margin-left: 0;
margin-right: 1em;
text-align: right;
}
.menu-item--expanded {
list-style-image: url(../../../../misc/menu-expanded.png);
list-style-type: circle;
}
.menu-item--collapsed {
list-style-image: url(../../../../misc/menu-collapsed.png); /* LTR */
list-style-type: disc;
}
[dir="rtl"] .menu-item--collapsed {
list-style-image: url(../../../../misc/menu-collapsed-rtl.png);
}
.menu-item {
padding-top: 0.2em;
margin: 0;
}
ul.menu a.is-active {
color: #000;
}

View file

@ -0,0 +1,72 @@
/**
* @file
* Styles for system messages.
*/
.messages {
background: no-repeat 10px 17px; /* LTR */
border: 1px solid;
border-width: 1px 1px 1px 0; /* LTR */
border-radius: 2px;
padding: 15px 20px 15px 35px; /* LTR */
word-wrap: break-word;
overflow-wrap: break-word;
}
[dir="rtl"] .messages {
border-width: 1px 0 1px 1px;
background-position: right 10px top 17px;
padding-left: 20px;
padding-right: 35px;
text-align: right;
}
.messages + .messages {
margin-top: 1.538em;
}
.messages__list {
list-style: none;
padding: 0;
margin: 0;
}
.messages__item + .messages__item {
margin-top: 0.769em;
}
/* See .color-success in Seven's colors.css */
.messages--status {
color: #325e1c;
background-color: #f3faef;
border-color: #c9e1bd #c9e1bd #c9e1bd transparent; /* LTR */
background-image: url(../../../../misc/icons/73b355/check.svg);
box-shadow: -8px 0 0 #77b259; /* LTR */
}
[dir="rtl"] .messages--status {
border-color: #c9e1bd transparent #c9e1bd #c9e1bd;
box-shadow: 8px 0 0 #77b259;
margin-left: 0;
}
/* See .color-warning in Seven's colors.css */
.messages--warning {
background-color: #fdf8ed;
background-image: url(../../../../misc/icons/e29700/warning.svg);
border-color: #f4daa6 #f4daa6 #f4daa6 transparent; /* LTR */
color: #734c00;
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 {
background-color: #fcf4f2;
color: #a51b00;
background-image: url(../../../../misc/icons/e32700/error.svg);
border-color: #f9c9bf #f9c9bf #f9c9bf transparent; /* LTR */
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;
}

View file

@ -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;
}

View file

@ -0,0 +1,8 @@
/**
* @file
* Visual styles for nodes.
*/
.node--unpublished {
background-color: #fff4f4;
}

View file

@ -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;
}

View file

@ -0,0 +1,71 @@
/**
* @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 {
border: 1px #07629a solid;
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:
-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;
margin-top: -1px;
margin-left: -1px; /* LTR */
padding: 0 1px;
height: 16px;
border-radius: 10em;
-webkit-animation: animate-stripes 3s linear infinite;
-moz-animation: animate-stripes 3s linear infinite;
-webkit-transition: width 0.5s ease-out;
transition: width 0.5s ease-out;
}
[dir="rtl"] .progress__bar {
margin-left: 0;
margin-right: -1px;
animation-direction: reverse;
-webkit-animation-direction: reverse;
-moz-animation-direction: reverse;
}
/**
* 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;}
}

View file

@ -0,0 +1,8 @@
/**
* @file
* Stylesheet for results generated by the Search module.
*/
.search-results {
list-style: none;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -0,0 +1,11 @@
/**
* @file
* Table sort indicator.
*/
th.is-active img {
display: inline;
}
td.is-active {
background-color: #ddd;
}

View file

@ -0,0 +1,33 @@
/**
* @file
* Visual styles for tabs.
*/
div.tabs {
margin: 1em 0;
}
ul.tabs {
list-style: none;
margin: 0 0 0.5em;
padding: 0;
}
.tabs > li {
display: inline-block;
margin-right: 0.3em; /* LTR */
}
[dir="rtl"] .tabs > li {
margin-left: 0.3em;
margin-right: 0;
}
.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;
}

View file

@ -0,0 +1,11 @@
/**
* @file
* Visual styles for a resizable textarea.
*/
.form-textarea-wrapper textarea {
display: block;
margin: 0;
width: 100%;
box-sizing: border-box;
}

View file

@ -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 {
max-width: 95%;
min-width: 95%;
}
}

View file

@ -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 {
background-color: #77b259;
-webkit-transition: width 0.5s ease-out;
transition: width 0.5s ease-out;
}
.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 {
padding: 0.2em 0.5em;
margin: 0.7em 0;
max-width: 34.7em;
border: 1px solid #b4b4b4;
}
.password-suggestions ul {
margin-bottom: 0;
}
.confirm-parent,
.password-parent {
clear: left; /* LTR */
margin: 0;
max-width: 33em;
overflow: hidden;
}
[dir="rtl"] .confirm-parent,
[dir="rtl"] .password-parent {
clear: right;
}
/* Styling for the status indicator of the passwords match test. */
.password-confirm .ok {
color: #325e1c;
font-weight: bold;
}
.password-confirm .error {
color: #a51b00;
font-weight: bold;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="57" height="66" viewBox="471.5 467 57 66" enable-background="new 471.5 467 57 66"><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.415c-.242-.737-.42-1.333-.54-1.808-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-.382 2.683-3.148 5.55-5.17 7.218-6.203.038-.028.075-.047.112-.065.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.148-1.414 3.25-3.444 6.13-6.053 8.56-5.15 4.806-12.062 7.45-19.475 7.45-3.67 0-7.265-.698-10.692-2.086-3.372-1.36-6.398-3.297-9.016-5.774-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"/></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -0,0 +1,12 @@
{% extends "block.html.twig" %}
{#
/**
* @file
* Theme override for local actions (primary admin actions.)
*/
#}
{% block content %}
{% if content %}
<nav class="action-links">{{ content }}</nav>
{% endif %}
{% endblock %}

View file

@ -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 %}

View file

@ -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>

View file

@ -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>') }}" title="{{ 'Home'|t }}" 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>') }}" title="{{ 'Home'|t }}" rel="home">{{ site_name }}</a>
</div>
{% endif %}
{% if site_slogan %}
<div class="site-slogan">{{ site_slogan }}</div>
{% endif %}
{% endblock %}

View file

@ -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>

View file

@ -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>

View file

@ -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('classy/file') }}
{%
set classes = [
'js-form-managed-file',
'form-managed-file',
]
%}
<div{{ attributes.addClass(classes) }}>
{{ element }}
</div>

View file

@ -0,0 +1,12 @@
{#
/**
* @file
* Theme override to display help text for file fields.
*
* Available variables:
* - descriptions: Lines of help text for uploading a file.
*
* @see template_preprocess_file_upload_help()
*/
#}
{{ descriptions|safe_join('<br />') }}

View file

@ -0,0 +1,14 @@
{#
/**
* @file
* Theme override to display a multi file form widget.
*
* Available variables:
* - table: Table of previously uploaded files.
* - element: The form element for uploading another file.
*
* @see template_preprocess_file_widget_multiple()
*/
#}
{{ table }}
{{ element }}

View file

@ -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>

View file

@ -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>

View file

@ -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 %}

View file

@ -0,0 +1,24 @@
{#
/**
* @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('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>

View file

@ -0,0 +1,30 @@
{#
/**
* @file
* Theme override to list node types available for adding content.
*
* This list is displayed on the Add content admin page.
*
* Available variables:
* - types: A list of content types, each with the following properties:
* - add_link: Link to create a piece of content of this type.
* - description: Description of this type of content.
*
* @see template_preprocess_node_add_list()
*/
#}
{% if types is not empty %}
<dl class="node-type-list">
{% for type in types %}
<dt>{{ type.add_link }}</dt>
<dd>{{ type.description }}</dd>
{% endfor %}
</dl>
{% 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 %}

View file

@ -0,0 +1,28 @@
{#
/**
* @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', 'actions') }}
</div>
<div class="layout-region layout-region-node-secondary">
{{ form.advanced }}
</div>
<div class="layout-region layout-region-node-footer">
{{ form.actions }}
</div>
</div>

View file

@ -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>

View file

@ -0,0 +1,29 @@
{#
/**
* @file
* Theme override to present a feed item in an aggregator page.
*
* Available variables:
* - url: URL to the originating feed item.
* - title: 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 }}
<h3 class="feed-item-title">
<a href="{{ url }}">{{ title }}</a>
</h3>
{{ title_suffix }}
{{ content }}
</article>

View file

@ -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>

View file

@ -0,0 +1,111 @@
{#
/**
* @file
* Theme override for comments.
*
* Available variables:
* - author: 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: Formatted date and time for when the comment was created.
* Preprocess functions can reformat it by calling format_date() with the
* desired parameters on the 'comment.created' variable.
* - changed: Formatted date and time for when the comment was last changed.
* Preprocess functions can reformat it by calling format_date() with the
* desired parameters on the 'comment.changed' variable.
* - permalink: Comment permalink.
* - submitted: Submission information created from author and created
* during template_preprocess_comment().
* - user_picture: The comment author's profile picture.
* - status: Comment status. Possible values are:
* unpublished, published, or preview.
* - title: 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):
* - comment_parent: 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.
* - entity: Entity the comments are attached to.
*
* @see template_preprocess_comment()
*/
#}
{% if threaded %}
{{ attach_library('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>
<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>
<div{{ content_attributes.addClass('content') }}>
{% if title %}
{{ title_prefix }}
<h3{{ title_attributes }}>{{ title }}</h3>
{{ title_suffix }}
{% endif %}
{{ content }}
</div>
</article>

View file

@ -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:
* - title: The link text.
* - href: The link URL. If omitted, the 'title' is shown as a plain text
* item in the links list. If 'href' is supplied, the entire link is passed
* to l() as its $options parameter.
* - attributes: (optional) HTML attributes for the anchor, or for the <span>
* tag if no 'href' is 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 %}

View file

@ -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 %}

View file

@ -0,0 +1,108 @@
{#
/**
* @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: 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: Themed creation date field.
* - author_name: 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()
*
* @todo Remove the id attribute (or make it a class), because if that gets
* rendered twice on a page this is invalid CSS for example: two lists
* in different view modes.
*/
#}
{%
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('classy/node') }}
<article{{ attributes.addClass(classes) }}>
{{ title_prefix }}
{% if 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>

View file

@ -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 }}

View file

@ -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('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>

View file

@ -0,0 +1,41 @@
{#
/**
* @file
* Theme override to display a taxonomy term.
*
* Available variables:
* - url: URL of the current term.
* - name: 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 not page %}
<h2><a href="{{ url }}">{{ name }}</a></h2>
{% endif %}
{{ title_suffix }}
<div class="content">
{{ content }}
</div>
</div>

View file

@ -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: 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 not full %}
<h2{{ title_attributes }}>{{ title }}</h2>
{% endif %}
{{ title_suffix }}
{{ content }}
</div>

View file

@ -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>

View file

@ -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.
#}
{% for i in 1..forum.depth if forum.depth > 0 %}<div class="indented">{% endfor %}
<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 %}
{% for i in 1..forum.depth if forum.depth > 0 %}</div>{% endfor %}
</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>

View file

@ -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('classy/forum') }}
{% if forums_defined %}
<div class="forum">
{{ forums }}
{{ topics }}
{{ topics_pager }}
</div>
{% endif %}

View file

@ -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) %}

View file

@ -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 %}

View file

@ -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>

View file

@ -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>

View file

@ -0,0 +1,34 @@
{#
/**
* @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.
*
* @see field.html.twig
*/
#}
{%
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>

View file

@ -0,0 +1,34 @@
{#
/**
* @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.
*
* @see field.html.twig
*/
#}
{%
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>

View file

@ -0,0 +1,34 @@
{#
/**
* @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.
*
* @see field.html.twig
*/
#}
{%
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>

View file

@ -0,0 +1 @@
{% extends "field--text.html.twig" %}

View file

@ -0,0 +1 @@
{% extends "field--text.html.twig" %}

View file

@ -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') %}

View file

@ -0,0 +1,80 @@
{#
/**
* @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,
]
%}
{%
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 %}

View file

@ -0,0 +1,15 @@
{#
/**
* @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.
*
* @see template_preprocess_file_link()
*/
#}
{{ attach_library('classy/file') }}
<span{{ attributes }}>{{ icon }} {{ link }}</span>

View file

@ -0,0 +1,19 @@
{#
/**
* @file
* Theme override to display a formatted image field.
*
* Available variables:
* - image: A collection of image data.
* - image_style: An optional image style.
* - path: An optional array containing the link 'path' and link 'options'.
* - url: An optional URL the image can be linked to.
*
* @see template_preprocess_image_formatter()
*/
#}
{% if url %}
<a href="{{ url }}">{{ image }}</a>
{% else %}
{{ image }}
{% endif %}

View file

@ -0,0 +1,18 @@
{#
/**
* @file
* Theme override for an image using a specific image style.
*
* Available variables:
* - attributes: HTML attributes for the image, including the following:
* - src: Full URL or relative path to the image file.
* - class: One or more classes to be applied to the image.
* - width: The width of the image (if known).
* - height: The height of the image (if known).
* - title: The title of the image.
* - alt: The alternative text for the image.
*
* @see template_preprocess_image_style()
*/
#}
{{ image }}

View file

@ -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) }} />

View file

@ -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()
*/
#}
{% spaceless %}
<div class="link-item">
{% if title %}
<div class="link-title">{{ title }}</div>
{% endif %}
<div class="link-url">{{ link }}</div>
</div>
{% endspaceless %}

Some files were not shown because too many files have changed in this diff Show more