├── source ├── fonts │ └── .keep ├── js │ └── .keep ├── _data │ └── listitems.json ├── _patterns │ ├── 00-atoms │ │ ├── field.md │ │ ├── form.md │ │ ├── misc.md │ │ ├── content.md │ │ ├── field │ │ │ ├── classy-image │ │ │ │ ├── _classy-image.base.scss │ │ │ │ ├── demo │ │ │ │ │ ├── classy-image-demo.md │ │ │ │ │ └── classy-image-demo.twig │ │ │ │ └── _classy-image.html.twig │ │ │ └── stable-responsive-image │ │ │ │ ├── _stable-responsive-image.base.scss │ │ │ │ └── demo │ │ │ │ ├── stable-responsive-image-demo.md │ │ │ │ └── stable-responsive-image-demo.twig │ │ ├── misc │ │ │ └── stable-feed-icon │ │ │ │ ├── _stable-feed-icon.base.scss │ │ │ │ ├── demo │ │ │ │ ├── stable-feed-icon-demo.md │ │ │ │ └── stable-feed-icon-demo.twig │ │ │ │ └── _stable-feed-icon.html.twig │ │ ├── form │ │ │ ├── classy-input │ │ │ │ ├── demo │ │ │ │ │ ├── classy-input-demo.md │ │ │ │ │ ├── classy-input-textfield.md │ │ │ │ │ ├── classy-input-submit.md │ │ │ │ │ ├── classy-input-textfield.twig │ │ │ │ │ ├── classy-input-submit.twig │ │ │ │ │ └── classy-input-demo.twig │ │ │ │ ├── _classy-input.base.scss │ │ │ │ └── _classy-input.html.twig │ │ │ ├── classy-select │ │ │ │ ├── demo │ │ │ │ │ ├── classy-select-demo.md │ │ │ │ │ └── classy-select-demo.twig │ │ │ │ ├── _classy-select.base.scss │ │ │ │ └── _classy-select.html.twig │ │ │ ├── classy-form-element-label │ │ │ │ ├── _classy-form-element-label.base.scss │ │ │ │ ├── demo │ │ │ │ │ ├── classy-form-element-label-demo.md │ │ │ │ │ └── classy-form-element-label-demo.twig │ │ │ │ └── _classy-form-element-label.html.twig │ │ │ └── classy-textarea │ │ │ │ ├── demo │ │ │ │ ├── classy-textarea-demo.md │ │ │ │ └── classy-textarea-demo.twig │ │ │ │ ├── _classy-textarea.base.scss │ │ │ │ └── _classy-textarea.html.twig │ │ └── content │ │ │ └── paragraph.twig │ ├── 01-molecules │ │ ├── field.md │ │ ├── form.md │ │ ├── misc.md │ │ ├── views.md │ │ ├── content.md │ │ ├── dataset.md │ │ ├── navigation.md │ │ ├── form │ │ │ ├── classy-form │ │ │ │ ├── _classy-form.component.scss │ │ │ │ ├── demo │ │ │ │ │ ├── classy-form-demo.md │ │ │ │ │ └── classy-form-demo.twig │ │ │ │ └── _classy-form.html.twig │ │ │ ├── classy-form-element │ │ │ │ ├── demo │ │ │ │ │ ├── classy-form-element-description.md │ │ │ │ │ ├── classy-form-element-demo.md │ │ │ │ │ ├── classy-form-element-error.md │ │ │ │ │ ├── classy-form-element-required.md │ │ │ │ │ ├── classy-form-element-description-error.md │ │ │ │ │ ├── classy-form-element-error.twig │ │ │ │ │ ├── classy-form-element-required.twig │ │ │ │ │ ├── classy-form-element-description.twig │ │ │ │ │ └── classy-form-element-description-error.twig │ │ │ │ └── _classy-form-element.component.scss │ │ │ └── classy-container │ │ │ │ ├── _classy-container.component.scss │ │ │ │ ├── demo │ │ │ │ ├── classy-container-demo.md │ │ │ │ ├── classy-container-demo.twig │ │ │ │ ├── _classy-container-form-textfield.twig │ │ │ │ └── _classy-container-form-textarea.twig │ │ │ │ └── _classy-container.html.twig │ │ ├── navigation │ │ │ ├── classy-menu │ │ │ │ ├── demo │ │ │ │ │ ├── classy-menu-collapsed.md │ │ │ │ │ ├── classy-menu-expanded.md │ │ │ │ │ ├── classy-menu-demo.md │ │ │ │ │ ├── classy-menu-collapsed.twig │ │ │ │ │ └── classy-menu-demo.twig │ │ │ │ └── _classy-menu.component.scss │ │ │ ├── classy-links │ │ │ │ ├── _classy-links.component.scss │ │ │ │ └── demo │ │ │ │ │ ├── classy-links-demo.md │ │ │ │ │ ├── _classy-links-read-more.twig │ │ │ │ │ └── classy-links-demo.twig │ │ │ ├── classy-pager │ │ │ │ ├── demo │ │ │ │ │ └── classy-pager-demo.md │ │ │ │ └── _classy-pager.component.scss │ │ │ ├── classy-menu-local-task │ │ │ │ ├── _classy-menu-local-task.component.scss │ │ │ │ ├── demo │ │ │ │ │ ├── classy-menu-local-task-demo.md │ │ │ │ │ └── classy-menu-local-task-demo.twig │ │ │ │ └── _classy-menu-local-task.html.twig │ │ │ ├── classy-breadcrumb │ │ │ │ ├── demo │ │ │ │ │ ├── classy-breadcrumb-demo.md │ │ │ │ │ └── classy-breadcrumb-demo.twig │ │ │ │ ├── _classy-breadcrumb.component.scss │ │ │ │ └── _classy-breadcrumb.html.twig │ │ │ └── classy-menu-local-tasks │ │ │ │ ├── demo │ │ │ │ ├── classy-menu-local-tasks-demo.md │ │ │ │ ├── classy-menu-local-tasks-secondary.md │ │ │ │ └── classy-menu-local-tasks-secondary.twig │ │ │ │ ├── _classy-menu-local-tasks.component.scss │ │ │ │ └── _classy-menu-local-tasks.html.twig │ │ ├── content │ │ │ └── classy-media │ │ │ │ ├── _classy-media.component.scss │ │ │ │ ├── demo │ │ │ │ ├── classy-media-demo.md │ │ │ │ └── classy-media-demo.twig │ │ │ │ └── _classy-media.html.twig │ │ ├── dataset │ │ │ └── classy-item-list │ │ │ │ ├── _classy-item-list.component.scss │ │ │ │ └── demo │ │ │ │ ├── classy-item-list-demo.md │ │ │ │ └── classy-item-list-demo.twig │ │ ├── field │ │ │ ├── classy-file-link │ │ │ │ ├── demo │ │ │ │ │ ├── classy-file-link-demo.md │ │ │ │ │ └── classy-file-link-demo.twig │ │ │ │ ├── _classy-file-link.html.twig │ │ │ │ └── _classy-file-link.component.scss │ │ │ └── classy-field │ │ │ │ ├── demo │ │ │ │ ├── classy-field-demo.md │ │ │ │ ├── classy-field-inline.md │ │ │ │ ├── classy-field-inline.twig │ │ │ │ ├── _classy-field-comment-body.twig │ │ │ │ ├── _classy-field-node-teaser.twig │ │ │ │ ├── _classy-field-tags.twig │ │ │ │ ├── _classy-field-node-body.twig │ │ │ │ └── _classy-field-image.twig │ │ │ │ └── _classy-field.component.scss │ │ ├── misc │ │ │ └── classy-status-messages │ │ │ │ ├── _classy-status-messages.component.scss │ │ │ │ └── demo │ │ │ │ └── classy-status-messages-demo.md │ │ └── views │ │ │ └── classy-views-exposed-form │ │ │ ├── demo │ │ │ ├── classy-views-exposed-form-demo.md │ │ │ └── classy-views-exposed-form-demo.twig │ │ │ ├── _classy-views-exposed-form.component.scss │ │ │ └── _classy-views-exposed-form.html.twig │ ├── 02-organisms │ │ ├── block.md │ │ ├── field.md │ │ ├── views.md │ │ ├── content.md │ │ ├── layout.md │ │ ├── content │ │ │ ├── shila-article │ │ │ │ ├── demo │ │ │ │ │ ├── shila-article-demo.md │ │ │ │ │ ├── shila-article-teaser.md │ │ │ │ │ └── shila-article-teaser.twig │ │ │ │ ├── _shila-article.component.scss │ │ │ │ └── _shila-article.html.twig │ │ │ ├── classy-node │ │ │ │ ├── demo │ │ │ │ │ ├── classy-node-demo.md │ │ │ │ │ ├── classy-node-teaser.md │ │ │ │ │ └── classy-node-teaser.twig │ │ │ │ └── _classy-node.component.scss │ │ │ ├── classy-page-title │ │ │ │ ├── _classy-page-title.component.scss │ │ │ │ ├── demo │ │ │ │ │ ├── classy-page-title-demo.md │ │ │ │ │ └── classy-page-title-demo.twig │ │ │ │ └── _classy-page-title.html.twig │ │ │ └── classy-comment │ │ │ │ ├── demo │ │ │ │ └── classy-comment-demo.md │ │ │ │ └── _classy-comment.component.scss │ │ ├── layout │ │ │ ├── classy-html │ │ │ │ └── _classy-html.component.scss │ │ │ ├── classy-region │ │ │ │ ├── _classy-region.component.scss │ │ │ │ ├── demo │ │ │ │ │ ├── classy-region-demo.md │ │ │ │ │ ├── classy-region-footer.md │ │ │ │ │ ├── classy-region-header.md │ │ │ │ │ ├── classy-region-breadcrumb.md │ │ │ │ │ ├── classy-region-primary-menu.md │ │ │ │ │ ├── classy-region-sidebar-first.md │ │ │ │ │ ├── classy-region-secondary-menu.md │ │ │ │ │ ├── classy-region-breadcrumb.twig │ │ │ │ │ ├── classy-region-primary-menu.twig │ │ │ │ │ ├── classy-region-sidebar-first.twig │ │ │ │ │ ├── classy-region-demo.twig │ │ │ │ │ ├── classy-region-header.twig │ │ │ │ │ ├── classy-region-secondary-menu.twig │ │ │ │ │ └── classy-region-footer.twig │ │ │ │ └── _classy-region.html.twig │ │ │ └── classy-page │ │ │ │ └── _classy-page.component.scss │ │ ├── block │ │ │ ├── classy-block │ │ │ │ ├── _classy-block.component.scss │ │ │ │ └── demo │ │ │ │ │ ├── classy-block-demo.md │ │ │ │ │ ├── _classy-block-main.twig │ │ │ │ │ ├── _classy-block-page-title.twig │ │ │ │ │ ├── _classy-block-breadcrumb.twig │ │ │ │ │ └── classy-block-demo.twig │ │ │ ├── classy-menu-block │ │ │ │ ├── _classy-menu-block.component.scss │ │ │ │ └── demo │ │ │ │ │ ├── classy-menu-block-demo.md │ │ │ │ │ └── classy-menu-block-demo.twig │ │ │ ├── classy-search-form-block │ │ │ │ ├── _classy-search-form-block.component.scss │ │ │ │ └── demo │ │ │ │ │ ├── classy-search-form-block-demo.md │ │ │ │ │ └── classy-search-form-block-demo.twig │ │ │ ├── classy-branding-block │ │ │ │ ├── demo │ │ │ │ │ └── classy-branding-block-demo.md │ │ │ │ └── _classy-branding-block.component.scss │ │ │ └── classy-local-tasks-block │ │ │ │ ├── demo │ │ │ │ ├── classy-local-tasks-block-demo.md │ │ │ │ └── classy-local-tasks-block-demo.twig │ │ │ │ ├── _classy-local-tasks-block.component.scss │ │ │ │ └── _classy-local-tasks-block.html.twig │ │ ├── views │ │ │ ├── classy-views-view │ │ │ │ ├── _classy-views-view.component.scss │ │ │ │ └── demo │ │ │ │ │ ├── classy-views-view-demo.md │ │ │ │ │ ├── _classy-views-view-display-table.twig │ │ │ │ │ └── classy-views-view-demo.twig │ │ │ ├── classy-views-view-table │ │ │ │ ├── _classy-views-view-table.component.scss │ │ │ │ └── demo │ │ │ │ │ └── classy-views-view-table-demo.md │ │ │ └── classy-views-view-unformatted │ │ │ │ ├── _classy-views-view-unformatted.component.scss │ │ │ │ ├── demo │ │ │ │ ├── classy-views-view-unformatted-demo.md │ │ │ │ └── classy-views-view-unformatted-demo.twig │ │ │ │ └── _classy-views-view-unformatted.html.twig │ │ └── field │ │ │ └── classy-comments │ │ │ ├── _classy-comments.component.scss │ │ │ └── demo │ │ │ └── classy-comments-demo.md │ ├── 03-templates │ │ ├── basic-page.md │ │ ├── front-page.md │ │ └── basic-page.twig │ ├── 04-pages │ │ └── welcome-page.md │ ├── 01-molecules.md │ ├── 04-pages.md │ ├── 02-organisms.md │ ├── 03-templates.md │ └── 00-atoms.md ├── favicon.ico ├── images │ ├── stable │ │ ├── color │ │ │ ├── hook.png │ │ │ ├── lock.png │ │ │ └── hook-rtl.png │ │ ├── core │ │ │ ├── help.png │ │ │ ├── tree.png │ │ │ ├── loading.gif │ │ │ ├── druplicon.png │ │ │ ├── menu-leaf.png │ │ │ ├── loading-small.gif │ │ │ ├── menu-expanded.png │ │ │ ├── tree-bottom.png │ │ │ ├── menu-collapsed.png │ │ │ ├── throbber-active.gif │ │ │ ├── menu-collapsed-rtl.png │ │ │ ├── throbber-inactive.png │ │ │ ├── icons │ │ │ │ ├── 333333 │ │ │ │ │ └── caret-down.svg │ │ │ │ ├── 424242 │ │ │ │ │ └── loupe.svg │ │ │ │ ├── 505050 │ │ │ │ │ └── loupe.svg │ │ │ │ ├── 787878 │ │ │ │ │ ├── twistie-up.svg │ │ │ │ │ ├── twistie-down.svg │ │ │ │ │ ├── file.svg │ │ │ │ │ ├── push-right.svg │ │ │ │ │ ├── push-up.svg │ │ │ │ │ ├── push-left.svg │ │ │ │ │ ├── wrench.svg │ │ │ │ │ ├── chevron-disc-up.svg │ │ │ │ │ ├── barchart.svg │ │ │ │ │ ├── chevron-disc-down.svg │ │ │ │ │ ├── pencil.svg │ │ │ │ │ ├── key.svg │ │ │ │ │ ├── ex.svg │ │ │ │ │ ├── move.svg │ │ │ │ │ ├── paintbrush.svg │ │ │ │ │ ├── questionmark-disc.svg │ │ │ │ │ ├── puzzlepiece.svg │ │ │ │ │ ├── orgchart.svg │ │ │ │ │ └── cog.svg │ │ │ │ ├── bebebe │ │ │ │ │ ├── house.svg │ │ │ │ │ ├── push-right.svg │ │ │ │ │ ├── push-up.svg │ │ │ │ │ ├── push-left.svg │ │ │ │ │ ├── pencil.svg │ │ │ │ │ ├── chevron-disc-left.svg │ │ │ │ │ ├── chevron-disc-right.svg │ │ │ │ │ ├── key.svg │ │ │ │ │ ├── hamburger.svg │ │ │ │ │ ├── star.svg │ │ │ │ │ ├── person.svg │ │ │ │ │ ├── ex.svg │ │ │ │ │ ├── move.svg │ │ │ │ │ ├── star-empty.svg │ │ │ │ │ ├── questionmark-disc.svg │ │ │ │ │ └── cog.svg │ │ │ │ ├── ffffff │ │ │ │ │ ├── house.svg │ │ │ │ │ ├── twistie-up.svg │ │ │ │ │ ├── twistie-down.svg │ │ │ │ │ ├── pencil.svg │ │ │ │ │ ├── hamburger.svg │ │ │ │ │ ├── star.svg │ │ │ │ │ ├── person.svg │ │ │ │ │ ├── ex.svg │ │ │ │ │ ├── star-empty.svg │ │ │ │ │ └── questionmark-disc.svg │ │ │ │ ├── 004875 │ │ │ │ │ ├── twistie-up.svg │ │ │ │ │ └── twistie-down.svg │ │ │ │ ├── 008ee6 │ │ │ │ │ ├── twistie-up.svg │ │ │ │ │ └── twistie-down.svg │ │ │ │ ├── 5181c6 │ │ │ │ │ ├── twistie-up.svg │ │ │ │ │ ├── twistie-down.svg │ │ │ │ │ ├── chevron-disc-up.svg │ │ │ │ │ ├── chevron-disc-down.svg │ │ │ │ │ └── pencil.svg │ │ │ │ ├── 73b355 │ │ │ │ │ └── check.svg │ │ │ │ ├── 000000 │ │ │ │ │ ├── chevron-left.svg │ │ │ │ │ ├── chevron-right.svg │ │ │ │ │ ├── file.svg │ │ │ │ │ ├── wrench.svg │ │ │ │ │ ├── barchart.svg │ │ │ │ │ ├── ex.svg │ │ │ │ │ ├── move.svg │ │ │ │ │ ├── paintbrush.svg │ │ │ │ │ ├── questionmark-disc.svg │ │ │ │ │ ├── puzzlepiece.svg │ │ │ │ │ └── orgchart.svg │ │ │ │ ├── 0074bd │ │ │ │ │ ├── chevron-left.svg │ │ │ │ │ └── chevron-right.svg │ │ │ │ ├── e29700 │ │ │ │ │ └── warning.svg │ │ │ │ ├── ee0000 │ │ │ │ │ └── required.svg │ │ │ │ └── e32700 │ │ │ │ │ └── error.svg │ │ │ └── feed.svg │ │ ├── views_ui │ │ │ └── sprites.png │ │ ├── quickedit │ │ │ └── icon-throbber.gif │ │ └── image │ │ │ ├── upload.svg │ │ │ └── error.svg │ └── classy │ │ └── icons │ │ ├── text-html.png │ │ ├── forum-icons.png │ │ ├── text-plain.png │ │ ├── text-x-generic.png │ │ ├── text-x-script.png │ │ ├── application-pdf.png │ │ ├── audio-x-generic.png │ │ ├── image-x-generic.png │ │ ├── package-x-generic.png │ │ ├── video-x-generic.png │ │ ├── x-office-document.png │ │ ├── x-office-presentation.png │ │ ├── x-office-spreadsheet.png │ │ ├── application-octet-stream.png │ │ └── application-x-executable.png ├── css │ ├── stable │ │ ├── menu_ui │ │ │ └── menu_ui.admin.css │ │ ├── system │ │ │ ├── components │ │ │ │ ├── nowrap.module.css │ │ │ │ ├── position-container.module.css │ │ │ │ ├── fieldgroup.module.css │ │ │ │ ├── details.module.css │ │ │ │ ├── sticky-header.module.css │ │ │ │ ├── container-inline.module.css │ │ │ │ ├── system-status-report-general-info.css │ │ │ │ ├── reset-appearance.module.css │ │ │ │ ├── resize.module.css │ │ │ │ ├── clearfix.module.css │ │ │ │ ├── item-list.module.css │ │ │ │ ├── tablesort.module.css │ │ │ │ ├── js.module.css │ │ │ │ ├── tree-child.module.css │ │ │ │ ├── align.module.css │ │ │ │ ├── system-status-report-counters.css │ │ │ │ ├── autocomplete-loading.module.css │ │ │ │ └── system-status-counter.css │ │ │ └── system.diff.css │ │ ├── node │ │ │ ├── node.admin.css │ │ │ └── node.preview.css │ │ ├── taxonomy │ │ │ └── taxonomy.theme.css │ │ ├── core │ │ │ ├── dialog │ │ │ │ ├── off-canvas.layout.css │ │ │ │ └── off-canvas.motion.css │ │ │ └── print.css │ │ ├── content_moderation │ │ │ ├── content_moderation.theme.css │ │ │ └── content_moderation.module.css │ │ ├── language │ │ │ └── language.admin.css │ │ ├── file │ │ │ └── file.admin.css │ │ ├── contextual │ │ │ ├── contextual.module.css │ │ │ └── contextual.toolbar.css │ │ ├── user │ │ │ ├── user.icons.admin.css │ │ │ ├── user.module.css │ │ │ └── user.admin.css │ │ ├── views │ │ │ └── views.module.css │ │ ├── ckeditor │ │ │ ├── ckeditor-iframe.css │ │ │ └── plugins │ │ │ │ ├── language │ │ │ │ └── ckeditor.language.css │ │ │ │ └── drupalimagecaption │ │ │ │ └── ckeditor.drupalimagecaption.css │ │ ├── config_translation │ │ │ └── config_translation.admin.css │ │ ├── filter │ │ │ └── filter.caption.css │ │ ├── settings_tray │ │ │ ├── settings_tray.module.css │ │ │ └── settings_tray.motion.css │ │ ├── migrate_drupal_ui │ │ │ └── components │ │ │ │ └── upgrade-analysis-report-tables.css │ │ └── content_translation │ │ │ └── content_translation.admin.css │ ├── classy │ │ └── components │ │ │ ├── node.css │ │ │ ├── search-results.css │ │ │ ├── tablesort.css │ │ │ ├── textarea.css │ │ │ ├── more-link.css │ │ │ ├── tabledrag.css │ │ │ ├── button.css │ │ │ ├── pager.css │ │ │ ├── indented.css │ │ │ ├── ui-dialog.css │ │ │ ├── link.css │ │ │ ├── tableselect.css │ │ │ ├── links.css │ │ │ ├── icons.css │ │ │ ├── container-inline.css │ │ │ ├── details.css │ │ │ ├── tabs.css │ │ │ ├── breadcrumb.css │ │ │ ├── field.css │ │ │ ├── item-list.css │ │ │ ├── menu.css │ │ │ ├── book-navigation.css │ │ │ ├── dropbutton.css │ │ │ ├── inline-form.css │ │ │ ├── collapse-processed.css │ │ │ └── action-links.css │ └── stable-theme.admin.css ├── sass │ ├── normalize.scss │ ├── layout.scss │ ├── state.scss │ ├── theme.scss │ └── base.scss ├── _meta │ └── _01-foot.twig └── _twig-components │ └── functions │ └── create_attribute.function.php ├── templates ├── form │ ├── form.html.twig │ ├── input.html.twig │ ├── select.html.twig │ ├── container.html.twig │ ├── textarea.html.twig │ ├── form-element-label.html.twig │ └── form-element.html.twig ├── layout │ ├── page.html.twig │ ├── region.html.twig │ └── html.html.twig ├── navigation │ ├── links.html.twig │ ├── breadcrumb.html.twig │ ├── menu.html.twig │ ├── menu-local-task.html.twig │ ├── menu-local-tasks.html.twig │ └── pager.html.twig ├── misc │ ├── status-messages.html.twig │ └── feed-icon.html.twig ├── field │ ├── responsive-image.html.twig │ ├── file-link.html.twig │ ├── image.html.twig │ ├── field--comment.html.twig │ └── field.html.twig ├── views │ ├── views-view-unformatted.html.twig │ ├── views-exposed-form.html.twig │ ├── views-view.html.twig │ └── views-view-table.html.twig ├── content │ ├── page-title.html.twig │ ├── media.html.twig │ ├── comment.html.twig │ └── node.html.twig ├── block │ ├── block--local-tasks-block.html.twig │ ├── block--system-branding-block.html.twig │ ├── block--search-form-block.html.twig │ ├── block.html.twig │ └── block--system-menu-block.html.twig └── dataset │ └── item-list.html.twig ├── shila_theme.libraries.yml ├── .gitignore ├── shila_theme.breakpoints.yml ├── alter-twig.php └── composer.json /source/fonts/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/js/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/_data/listitems.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Field 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/misc.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Misc 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/content.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Content 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Field 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/misc.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Misc 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/views.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Views 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Block 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/field.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Field 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Views 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/content.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Content 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/dataset.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Dataset 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Content 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Layout 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Navigation 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/03-templates/basic-page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Basic page 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/03-templates/front-page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Front page 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/04-pages/welcome-page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Welcome page 3 | --- 4 | -------------------------------------------------------------------------------- /source/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/favicon.ico -------------------------------------------------------------------------------- /templates/form/form.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@molecules/form/classy-form/_classy-form.html.twig' %} 2 | -------------------------------------------------------------------------------- /templates/form/input.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@atoms/form/classy-input/_classy-input.html.twig' %} 2 | -------------------------------------------------------------------------------- /templates/form/select.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@atoms/form/classy-select/_classy-select.html.twig' %} 2 | -------------------------------------------------------------------------------- /templates/layout/page.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@organisms/layout/classy-page/_classy-page.html.twig' %} 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/shila-article/demo/shila-article-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Article 3 | --- 4 | -------------------------------------------------------------------------------- /templates/navigation/links.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@molecules/navigation/classy-links/_classy-links.html.twig' %} 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/shila-article/demo/shila-article-teaser.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Article teaser 3 | --- 4 | -------------------------------------------------------------------------------- /source/_patterns/03-templates/basic-page.twig: -------------------------------------------------------------------------------- 1 | {% include '@organisms/layout/classy-page/demo/_classy-page-demo.twig' only %} 2 | -------------------------------------------------------------------------------- /source/images/stable/color/hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/color/hook.png -------------------------------------------------------------------------------- /source/images/stable/color/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/color/lock.png -------------------------------------------------------------------------------- /source/images/stable/core/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/help.png -------------------------------------------------------------------------------- /source/images/stable/core/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/tree.png -------------------------------------------------------------------------------- /templates/misc/status-messages.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@molecules/misc/classy-status-messages/_classy-status-messages.html.twig' %} 2 | -------------------------------------------------------------------------------- /source/css/stable/menu_ui/menu_ui.admin.css: -------------------------------------------------------------------------------- 1 | .menu-enabled { 2 | width: 70px; 3 | } 4 | .menu-label { 5 | font-weight: bold; 6 | } 7 | -------------------------------------------------------------------------------- /source/images/stable/core/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/loading.gif -------------------------------------------------------------------------------- /source/sass/normalize.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * sass/normalize.scss 4 | */ 5 | 6 | @import "partials/generic/generic.normalize"; 7 | -------------------------------------------------------------------------------- /templates/field/responsive-image.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@atoms/field/stable-responsive-image/_stable-responsive-image.html.twig' %} 2 | -------------------------------------------------------------------------------- /source/images/classy/icons/text-html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/text-html.png -------------------------------------------------------------------------------- /source/images/stable/color/hook-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/color/hook-rtl.png -------------------------------------------------------------------------------- /source/images/stable/core/druplicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/druplicon.png -------------------------------------------------------------------------------- /source/images/stable/core/menu-leaf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/menu-leaf.png -------------------------------------------------------------------------------- /source/images/classy/icons/forum-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/forum-icons.png -------------------------------------------------------------------------------- /source/images/classy/icons/text-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/text-plain.png -------------------------------------------------------------------------------- /source/images/stable/core/loading-small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/loading-small.gif -------------------------------------------------------------------------------- /source/images/stable/core/menu-expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/menu-expanded.png -------------------------------------------------------------------------------- /source/images/stable/core/tree-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/tree-bottom.png -------------------------------------------------------------------------------- /source/images/stable/views_ui/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/views_ui/sprites.png -------------------------------------------------------------------------------- /source/images/classy/icons/text-x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/text-x-generic.png -------------------------------------------------------------------------------- /source/images/classy/icons/text-x-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/text-x-script.png -------------------------------------------------------------------------------- /source/images/stable/core/menu-collapsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/menu-collapsed.png -------------------------------------------------------------------------------- /source/images/stable/core/throbber-active.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/throbber-active.gif -------------------------------------------------------------------------------- /templates/field/file-link.html.twig: -------------------------------------------------------------------------------- 1 | {% set file_link = link %} 2 | 3 | {% include '@molecules/field/classy-file-link/_classy-file-link.html.twig' %} 4 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field/classy-image/_classy-image.base.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // atoms/field/classy-image/_classy-image.base.scss 3 | 4 | img { 5 | } 6 | -------------------------------------------------------------------------------- /source/images/classy/icons/application-pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/application-pdf.png -------------------------------------------------------------------------------- /source/images/classy/icons/audio-x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/audio-x-generic.png -------------------------------------------------------------------------------- /source/images/classy/icons/image-x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/image-x-generic.png -------------------------------------------------------------------------------- /source/images/classy/icons/package-x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/package-x-generic.png -------------------------------------------------------------------------------- /source/images/classy/icons/video-x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/video-x-generic.png -------------------------------------------------------------------------------- /source/images/classy/icons/x-office-document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/x-office-document.png -------------------------------------------------------------------------------- /source/images/stable/core/menu-collapsed-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/menu-collapsed-rtl.png -------------------------------------------------------------------------------- /source/images/stable/core/throbber-inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/core/throbber-inactive.png -------------------------------------------------------------------------------- /source/images/stable/quickedit/icon-throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/stable/quickedit/icon-throbber.gif -------------------------------------------------------------------------------- /templates/views/views-view-unformatted.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@organisms/views/classy-views-view-unformatted/_classy-views-view-unformatted.html.twig' %} 2 | -------------------------------------------------------------------------------- /source/css/classy/components/node.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for nodes. 4 | */ 5 | 6 | .node--unpublished { 7 | background-color: #fff4f4; 8 | } 9 | -------------------------------------------------------------------------------- /source/images/classy/icons/x-office-presentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/x-office-presentation.png -------------------------------------------------------------------------------- /source/images/classy/icons/x-office-spreadsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/x-office-spreadsheet.png -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form/_classy-form.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/form/classy-form/_classy-form.component.scss 3 | 4 | form { 5 | } 6 | -------------------------------------------------------------------------------- /source/images/classy/icons/application-octet-stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/application-octet-stream.png -------------------------------------------------------------------------------- /source/images/classy/icons/application-x-executable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aleksip/shila-drupal-theme/HEAD/source/images/classy/icons/application-x-executable.png -------------------------------------------------------------------------------- /templates/navigation/breadcrumb.html.twig: -------------------------------------------------------------------------------- 1 | {% set title = 'Breadcrumb'|t %} 2 | 3 | {% include '@molecules/navigation/classy-breadcrumb/_classy-breadcrumb.html.twig' %} 4 | -------------------------------------------------------------------------------- /templates/navigation/menu.html.twig: -------------------------------------------------------------------------------- 1 | {% set attributes = attributes.addClass('menu') %} 2 | 3 | {% include '@molecules/navigation/classy-menu/_classy-menu.html.twig' %} 4 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu/demo/classy-menu-collapsed.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Menu (multi level, all collapsed) 3 | --- 4 | 5 | Pseudo-pattern variant. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-html/_classy-html.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/layout/classy-html/_classy-html.component.scss 3 | 4 | html { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field/classy-image/demo/classy-image-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Image 3 | --- 4 | 5 | Based on the standard `image.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/misc/stable-feed-icon/_stable-feed-icon.base.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // atoms/misc/stable-feed-icon/_stable-feed-icon.base.scss 3 | 4 | .feed-icon { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/content/classy-media/_classy-media.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/content/classy-media/_classy-media.component.scss 3 | 4 | .media { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-description.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form element (description) 3 | --- 4 | 5 | Pseudo-pattern variant. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form/demo/classy-form-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form 3 | --- 4 | 5 | Based on the standard `form.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu/demo/classy-menu-expanded.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Menu (multi level, with expanded item) 3 | --- 4 | 5 | Pseudo-pattern variant. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-block/_classy-block.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/block/classy-block/_classy-block.component.scss 3 | 4 | .block { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-node/demo/classy-node-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Node 3 | --- 4 | 5 | Based on the standard `node.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/css/stable/system/components/nowrap.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Utility class to prevent text wrapping. 4 | */ 5 | 6 | .nowrap { 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/demo/classy-input-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form input 3 | --- 4 | 5 | Based on the standard `input.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-block/demo/classy-block-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Block 3 | --- 4 | 5 | Based on the standard `block.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/_classy-region.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/layout/classy-region/_classy-region.component.scss 3 | 4 | .region { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/demo/classy-input-textfield.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form textfield 3 | --- 4 | 5 | Based on the standard `input.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Molecules 3 | --- 4 | 5 | # Molecules 6 | 7 | > Molecules are relatively simple groups of UI elements functioning together as 8 | > a unit. 9 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-links/_classy-links.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/navigation/classy-links/_classy-links.component.scss 3 | 4 | .links { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-pager/demo/classy-pager-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pager 3 | --- 4 | 5 | Based on the standard `pager.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-node/demo/classy-node-teaser.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Node teaser 3 | --- 4 | 5 | Based on the standard `node.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/css/stable/system/components/position-container.module.css: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 3 | * Contain positioned elements. 4 | */ 5 | 6 | .position-container { 7 | position: relative; 8 | } 9 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/demo/classy-input-submit.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form submit button 3 | --- 4 | 5 | Based on the standard `input.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-select/demo/classy-select-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form select element 3 | --- 4 | 5 | Based on the standard `select.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/misc/stable-feed-icon/demo/stable-feed-icon-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Feed icon 3 | --- 4 | 5 | Based on the standard `feed-icon.html.twig` template from Stable theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Content region 3 | --- 4 | 5 | Based on the standard `region.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-footer.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Footer region 3 | --- 4 | 5 | Based on the standard `region.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-header.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Header region 3 | --- 4 | 5 | Based on the standard `region.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view/_classy-views-view.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/views/classy-views-view/_classy-views-view.component.scss 3 | 4 | .view { 5 | } 6 | -------------------------------------------------------------------------------- /source/css/classy/components/search-results.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Stylesheet for results generated by the Search module. 4 | */ 5 | 6 | .search-results { 7 | list-style: none; 8 | } 9 | -------------------------------------------------------------------------------- /source/css/stable/system/components/fieldgroup.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Fieldgroup border reset. 4 | */ 5 | 6 | .fieldgroup { 7 | border-width: 0; 8 | padding: 0; 9 | } 10 | -------------------------------------------------------------------------------- /source/_meta/_01-foot.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ patternLabFoot | raw }} 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-form-element-label/_classy-form-element-label.base.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // atoms/form/classy-form-element-label/_form-element-label.base.scss 3 | 4 | label { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/content/classy-media/demo/classy-media-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Media item (image) 3 | --- 4 | 5 | Based on the standard `media.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/dataset/classy-item-list/_classy-item-list.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/dataset/classy-item-list/_classy-item-list.component.scss 3 | 4 | .item-list { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/dataset/classy-item-list/demo/classy-item-list-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Item list 3 | --- 4 | 5 | Based on the standard `item-list.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-file-link/demo/classy-file-link-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: File link 3 | --- 4 | 5 | Based on the standard `file-link.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu/demo/classy-menu-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Menu (one level only) 3 | --- 4 | 5 | Based on the standard `menu.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/shila-article/_shila-article.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/content/shila-article/_shila-article.component.scss 3 | 4 | .node--type-article { 5 | } 6 | -------------------------------------------------------------------------------- /templates/content/page-title.html.twig: -------------------------------------------------------------------------------- 1 | {% set title_attributes = title_attributes.addClass('page-title') %} 2 | 3 | {% include '@organisms/content/classy-page-title/_classy-page-title.html.twig' %} 4 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field/stable-responsive-image/_stable-responsive-image.base.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // atoms/field/stable-responsive-image/_stable-responsive-image.base.scss 3 | 4 | picture { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-task/_classy-menu-local-task.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/navigation/classy-menu-local-task/_classy-menu-local-task.component.scss 3 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-menu-block/_classy-menu-block.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/block/classy-menu-block/_classy-menu-block.component.scss 3 | 4 | .block-menu { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-page-title/_classy-page-title.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/content/classy-page-title/_classy-page-title.component.scss 3 | 4 | .page-title { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-page-title/demo/classy-page-title-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Page title 3 | --- 4 | 5 | Based on the standard `page-title.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-breadcrumb.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Breadcrumb region 3 | --- 4 | 5 | Based on the standard `region.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-select/_classy-select.base.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // atoms/form/classy-select/_classy-select.base.scss 3 | 4 | select { 5 | } 6 | optgroup { 7 | } 8 | option { 9 | } 10 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/_classy-form-element.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/form/classy-form-element/_classy-form-element.component.scss 3 | 4 | .form-item { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form element 3 | --- 4 | 5 | Based on the standard `form-element.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-breadcrumb/demo/classy-breadcrumb-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Breadcrumb 3 | --- 4 | 5 | Based on the standard `breadcrumb.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-primary-menu.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Primary menu region 3 | --- 4 | 5 | Based on the standard `region.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-sidebar-first.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Sidebar first region 3 | --- 4 | 5 | Based on the standard `region.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/04-pages.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pages 3 | --- 4 | 5 | # Pages 6 | 7 | > Pages are specific instances of templates that show what a UI looks like with 8 | > real representative content in place. 9 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-breadcrumb/_classy-breadcrumb.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/navigation/classy-breadcrumb/_classy-breadcrumb.component.scss 3 | 4 | .breadcrumb { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-links/demo/classy-links-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Links 3 | --- 4 | 5 | A list of links. 6 | 7 | Based on the standard `links.html.twig` template from Classy theme. 8 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-menu-block/demo/classy-menu-block-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Menu block 3 | --- 4 | 5 | Based on the standard `block--system-menu-block.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-secondary-menu.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Secondary menu region 3 | --- 4 | 5 | Based on the standard `region.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view/demo/classy-views-view-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: View (unformatted rows) 3 | --- 4 | 5 | Based on the standard `views-view.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/sass/layout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * sass/layout.scss 4 | * 5 | * CSS rules that layout a page. 6 | */ 7 | 8 | @import "partials/imports"; 9 | 10 | @import "../_patterns/**/*.layout.scss"; 11 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-textarea/demo/classy-textarea-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Textarea 3 | --- 4 | 5 | Form textarea element. 6 | 7 | Based on the standard `textarea.html.twig` template from Classy theme. 8 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/misc/classy-status-messages/_classy-status-messages.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/misc/classy-status-messages/_classy-status-messages.component.scss 3 | 4 | .messages { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/misc/classy-status-messages/demo/classy-status-messages-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Status messages 3 | --- 4 | 5 | Based on the standard `status-messages.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Organisms 3 | --- 4 | 5 | # Organisms 6 | 7 | > Organisms are relatively complex UI components composed of groups of molecules 8 | > and/or atoms and/or other organisms. 9 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-comment/demo/classy-comment-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Comment 3 | --- 4 | 5 | A single comment. 6 | 7 | Based on the standard `comment.html.twig` template from Classy theme. 8 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field/stable-responsive-image/demo/stable-responsive-image-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Responsive image 3 | --- 4 | 5 | Based on the standard `form-element-label.html.twig` template from Stable theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-error.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form element (error message) 3 | --- 4 | 5 | Based on the standard `form-element.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-required.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form element (required) 3 | --- 4 | 5 | Based on the standard `form-element.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view-table/_classy-views-view-table.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/views/classy-views-view-table/_classy-views-view-table.component.scss 3 | 4 | .views-row { 5 | } 6 | -------------------------------------------------------------------------------- /source/css/classy/components/tablesort.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Table sort indicator. 4 | */ 5 | 6 | th.is-active img { 7 | display: inline; 8 | } 9 | td.is-active { 10 | background-color: #ddd; 11 | } 12 | -------------------------------------------------------------------------------- /source/css/stable/node/node.admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for administration pages. 4 | */ 5 | 6 | /** 7 | * Revisions overview screen. 8 | */ 9 | .revision-current { 10 | background: #ffc; 11 | } 12 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-form-element-label/demo/classy-form-element-label-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form element label 3 | --- 4 | 5 | Based on the standard `form-element-label.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/_classy-input.base.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // atoms/form/classy-input/_classy-input.base.scss 3 | 4 | input { 5 | } 6 | input[type="submit"] { 7 | } 8 | input[type="text"] { 9 | } 10 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-tasks/demo/classy-menu-local-tasks-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Local tasks menu 3 | --- 4 | 5 | Based on the standard `menu-local-tasks.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-search-form-block/_classy-search-form-block.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/block/classy-search-form-block/classy-search-form-block.component.scss 3 | 4 | .block-search { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view-table/demo/classy-views-view-table-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: View content (table) 3 | --- 4 | 5 | Based on the standard `views-view-table.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/css/stable/system/components/details.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Collapsible details. 4 | * 5 | * @see collapse.js 6 | */ 7 | 8 | .js details:not([open]) .details-wrapper { 9 | display: none; 10 | } 11 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-container/_classy-container.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/form/classy-container/classy-container.component.scss 3 | 4 | .form-wrapper { 5 | } 6 | .views-element-container { 7 | } 8 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-task/demo/classy-menu-local-task-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Local tasks menu item 3 | --- 4 | 5 | Based on the standard `menu-local-task.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/views/classy-views-exposed-form/demo/classy-views-exposed-form-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Views exposed form 3 | --- 4 | 5 | Based on the standard `views-exposed-form.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-branding-block/demo/classy-branding-block-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Branding block 3 | --- 4 | 5 | Based on the standard `block--system-branding-block.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/field/classy-comments/_classy-comments.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/field/classy-comments/_classy-comments.component.scss 3 | 4 | .field--type-comment { 5 | } 6 | .comment-form__title { 7 | } 8 | -------------------------------------------------------------------------------- /source/_patterns/03-templates.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Templates 3 | --- 4 | 5 | # Templates 6 | 7 | > Templates are page-level objects that place components into a layout and 8 | > articulate the design’s underlying content structure. 9 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-local-tasks-block/demo/classy-local-tasks-block-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Local tasks block 3 | --- 4 | 5 | Based on the standard `block--local-tasks-block.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-search-form-block/demo/classy-search-form-block-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Search form block 3 | --- 4 | 5 | Based on the standard `block--search-form-block.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /templates/misc/feed-icon.html.twig: -------------------------------------------------------------------------------- 1 | {% set attributes = attributes.addClass('feed-icon') %} 2 | {% set title = 'Subscribe to @title'|t({'@title': title}) %} 3 | 4 | {% include '@atoms/misc/stable-feed-icon/_stable-feed-icon.html.twig' %} 5 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-local-tasks-block/_classy-local-tasks-block.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/block/classy-local-tasks-block/_classy-local-tasks-block.component.scss 3 | 4 | .block-local-tasks-block { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-description-error.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Form element (description, error message) 3 | --- 4 | 5 | Based on the standard `form-element.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/views/classy-views-exposed-form/_classy-views-exposed-form.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/views/classy-views-exposed-form/_classy-views-exposed-form.component.scss 3 | 4 | .view-filters .form--inline { 5 | } 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view-unformatted/_classy-views-view-unformatted.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/views/classy-views-view-unformatted/_classy-views-view-unformatted.component.scss 3 | 4 | .views-row { 5 | } 6 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/house.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/house.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/sass/state.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * sass/state.scss 4 | * 5 | * CSS rules that style states and are not included with components. 6 | */ 7 | 8 | @import "partials/imports"; 9 | 10 | @import "../_patterns/**/_*.state.scss"; 11 | -------------------------------------------------------------------------------- /source/sass/theme.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * sass/theme.scss 4 | * 5 | * CSS rules that style theme and are not included with components. 6 | */ 7 | 8 | @import "partials/imports"; 9 | 10 | @import "../_patterns/**/_*.theme.scss"; 11 | -------------------------------------------------------------------------------- /templates/navigation/menu-local-task.html.twig: -------------------------------------------------------------------------------- 1 | {% set attributes = attributes.addClass(is_active ? 'is-active') %} 2 | {% set task_link = link %} 3 | 4 | {% include '@molecules/navigation/classy-menu-local-task/_classy-menu-local-task.html.twig' %} 5 | -------------------------------------------------------------------------------- /source/images/stable/image/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/classy-field-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Field 3 | --- 4 | 5 | Generic field that can have a label and can contain multiple items. 6 | 7 | Based on the standard `field.html.twig` template from Classy theme. 8 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-tasks/demo/classy-menu-local-tasks-secondary.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Local tasks menu (with secondary tasks) 3 | --- 4 | 5 | Based on the standard `menu-local-tasks.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view-unformatted/demo/classy-views-view-unformatted-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: View content (unformatted rows) 3 | --- 4 | 5 | Based on the standard `views-view-unformatted.html.twig` template from Classy theme. 6 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/333333/caret-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/field/image.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | style_name ? 'image-style-' ~ style_name|clean_class, 4 | ] 5 | %} 6 | {% set attributes = attributes.addClass(classes) %} 7 | 8 | {% include '@atoms/field/classy-image/_classy-image.html.twig' %} 9 | -------------------------------------------------------------------------------- /templates/navigation/menu-local-tasks.html.twig: -------------------------------------------------------------------------------- 1 | {% set primary_tabs_title = 'Primary tabs'|t %} 2 | {% set secondary_tabs_title = 'Secondary tabs'|t %} 3 | 4 | {% include '@molecules/navigation/classy-menu-local-tasks/_classy-menu-local-tasks.html.twig' %} 5 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/_classy-field.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/field/classy-field/_classy-field.component.scss 3 | 4 | .field { 5 | } 6 | .field__label { 7 | } 8 | .field__items { 9 | } 10 | .field__item { 11 | } 12 | -------------------------------------------------------------------------------- /source/css/classy/components/textarea.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for a resizable textarea. 4 | */ 5 | 6 | .form-textarea-wrapper textarea { 7 | display: block; 8 | margin: 0; 9 | width: 100%; 10 | box-sizing: border-box; 11 | } 12 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/classy-field-inline.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Field (inline) 3 | --- 4 | 5 | Generic field that can have a label and can contain multiple items. 6 | 7 | Based on the standard `field.html.twig` template from Classy theme. 8 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/classy-field-inline.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/field/classy-field/demo/classy-field-demo.twig' with { 3 | 'attributes': create_attribute({'class': ['field', 'field--label-inline']}) 4 | } only 5 | %} 6 | -------------------------------------------------------------------------------- /source/css/stable/taxonomy/taxonomy.theme.css: -------------------------------------------------------------------------------- 1 | 2 | .taxonomy-term-preview { 3 | background-color: #eee; 4 | } 5 | .taxonomy-term-divider-top { 6 | border-bottom: none; 7 | } 8 | .taxonomy-term-divider-bottom { 9 | border-top: 1px dotted #ccc; 10 | } 11 | -------------------------------------------------------------------------------- /source/css/classy/components/more-link.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Markup generated by #type 'more_link'. 4 | */ 5 | 6 | .more-link { 7 | display: block; 8 | text-align: right; /* LTR */ 9 | } 10 | [dir="rtl"] .more-link { 11 | text-align: left; 12 | } 13 | -------------------------------------------------------------------------------- /source/css/stable/core/dialog/off-canvas.layout.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styling for layouts in the off-canvas dialog. 4 | * 5 | * See seven/css/layout/layout.css 6 | */ 7 | 8 | .layout-icon__region { 9 | fill: #f5f5f2; 10 | stroke: #666; 11 | } 12 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/004875/twistie-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/008ee6/twistie-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/5181c6/twistie-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/twistie-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/twistie-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/block/block--local-tasks-block.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'block.html.twig' %} 2 | 3 | {% set aria_label = 'Tabs'|t %} 4 | 5 | {% block template %} 6 | {% include '@organisms/block/classy-local-tasks-block/_classy-local-tasks-block.html.twig' %} 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/004875/twistie-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/008ee6/twistie-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/5181c6/twistie-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/twistie-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/twistie-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-pager/_classy-pager.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/navigation/classy-pager/_classy-pager.component.scss 3 | 4 | .pager { 5 | } 6 | .pager__items { 7 | } 8 | .pager__item { 9 | } 10 | .pager__item.is-active { 11 | } 12 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/demo/classy-input-textfield.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@atoms/form/classy-input/demo/classy-input-demo.twig' with { 3 | 'attributes': create_attribute({ 4 | 'class': ['form-text'], 5 | 'type': ['text'] 6 | }) 7 | } only 8 | %} 9 | -------------------------------------------------------------------------------- /source/css/stable/system/components/sticky-header.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Table header behavior. 4 | * 5 | * @see tableheader.js 6 | */ 7 | 8 | table.sticky-header { 9 | background-color: #fff; 10 | margin-top: 0; 11 | z-index: 500; 12 | top: 0; 13 | } 14 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-tasks/_classy-menu-local-tasks.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/navigation/classy-menu-local-tasks/_classy-menu-local-tasks.component.scss 3 | 4 | .tabs { 5 | } 6 | .tabs.primary { 7 | } 8 | .tabs.secondary { 9 | } 10 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-comment/_classy-comment.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/content/classy-comment/_classy-comment.component.scss 3 | 4 | .comment { 5 | } 6 | .comment__meta { 7 | } 8 | .comment__submitted { 9 | } 10 | .comment > .content { 11 | } 12 | -------------------------------------------------------------------------------- /source/css/stable/content_moderation/content_moderation.theme.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Theme styles for the content_moderation module. 4 | */ 5 | .entity-moderation-form { 6 | border: 1px dashed #bbb; 7 | margin: 2em 0; 8 | background: #fff; 9 | padding-left: 1em; 10 | } 11 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-node/_classy-node.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/content/classy-node/_classy-node.component.scss 3 | 4 | .node { 5 | } 6 | .node__meta { 7 | } 8 | .node__submitted { 9 | } 10 | .node__content { 11 | } 12 | .node--unpublished { 13 | } 14 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/shila-article/_shila-article.html.twig: -------------------------------------------------------------------------------- 1 | {% extends '@organisms/content/classy-node/_classy-node.html.twig' %} 2 | {# 3 | /** 4 | * @file 5 | * Placeholder file for a custom implementation. 6 | * 7 | * @see templates/content/node.html.twig 8 | */ 9 | #} 10 | -------------------------------------------------------------------------------- /source/css/stable/language/language.admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for the content language administration page. 4 | */ 5 | 6 | #language-content-settings-form table .bundle { 7 | width: 25%; 8 | } 9 | #language-content-settings-form table .operations { 10 | width: 75%; 11 | } 12 | -------------------------------------------------------------------------------- /templates/form/container.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | has_parent ? 'js-form-wrapper', 4 | has_parent ? 'form-wrapper', 5 | ] 6 | %} 7 | {% set attributes = attributes.addClass(classes) %} 8 | 9 | {% include '@molecules/form/classy-container/_classy-container.html.twig' %} 10 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/content/paragraph.twig: -------------------------------------------------------------------------------- 1 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod 2 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 3 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 4 | consequat.

5 | -------------------------------------------------------------------------------- /source/images/stable/image/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu/_classy-menu.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/navigation/classy-menu/_classy-menu.component.scss 3 | 4 | .menu { 5 | } 6 | .menu-item { 7 | } 8 | .menu-item--expanded { 9 | } 10 | .menu-item--collapsed { 11 | } 12 | .menu .is-active { 13 | } 14 | -------------------------------------------------------------------------------- /source/css/classy/components/tabledrag.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for table drag. 4 | */ 5 | 6 | tr.drag { 7 | background-color: #fffff0; 8 | } 9 | tr.drag-previous { 10 | background-color: #ffd; 11 | } 12 | body div.tabledrag-changed-warning { 13 | margin-bottom: 0.5em; 14 | } 15 | -------------------------------------------------------------------------------- /source/css/classy/components/button.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for buttons. 4 | */ 5 | 6 | .button, 7 | .image-button { 8 | margin-left: 1em; 9 | margin-right: 1em; 10 | } 11 | .button:first-child, 12 | .image-button:first-child { 13 | margin-left: 0; 14 | margin-right: 0; 15 | } 16 | -------------------------------------------------------------------------------- /source/css/classy/components/pager.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for pager. 4 | */ 5 | 6 | .pager__items { 7 | clear: both; 8 | text-align: center; 9 | } 10 | .pager__item { 11 | display: inline; 12 | padding: 0.5em; 13 | } 14 | .pager__item.is-active { 15 | font-weight: bold; 16 | } 17 | -------------------------------------------------------------------------------- /shila_theme.libraries.yml: -------------------------------------------------------------------------------- 1 | global-styling: 2 | css: 3 | base: 4 | source/css/base.css: {} 5 | component: 6 | source/css/component.css: {} 7 | layout: 8 | source/css/layout.css: {} 9 | state: 10 | source/css/state.css: {} 11 | theme: 12 | source/css/theme.css: {} 13 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/field/classy-comments/demo/classy-comments-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Comments 3 | --- 4 | 5 | While technically a field in Drupal, this template renders an entire comments 6 | section including a comment form. 7 | 8 | Based on the standard `field--comment.html.twig` template from Classy theme. 9 | -------------------------------------------------------------------------------- /source/css/classy/components/indented.css: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * @file 4 | * Basic styling for comment module. 5 | */ 6 | 7 | /** 8 | * Indent threaded comments. 9 | */ 10 | .indented { 11 | margin-left: 25px; /* LTR */ 12 | } 13 | [dir="rtl"] .indented { 14 | margin-left: 0; 15 | margin-right: 25px; 16 | } 17 | -------------------------------------------------------------------------------- /source/css/classy/components/ui-dialog.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for Classy's modal windows. 4 | */ 5 | 6 | .ui-dialog--narrow { 7 | max-width: 500px; 8 | } 9 | 10 | @media screen and (max-width: 600px) { 11 | .ui-dialog--narrow { 12 | max-width: 95%; 13 | min-width: 95%; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /templates/block/block--system-branding-block.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'block.html.twig' %} 2 | 3 | {% set site_home_url = path('') %} 4 | {% set site_home_title = 'Home'|t %} 5 | 6 | {% block template %} 7 | {% include '@organisms/block/classy-branding-block/_classy-branding-block.html.twig' %} 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-textarea/_classy-textarea.base.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // atoms/form/classy-textarea/_classy-textarea.base.scss 3 | 4 | textarea { 5 | } 6 | .form-textarea-wrapper { 7 | } 8 | .form-textarea { 9 | } 10 | .form-textarea.resizable-vertical { 11 | } 12 | .form-textarea.required { 13 | } 14 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-branding-block/_classy-branding-block.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/block/classy-branding-block/_classy-branding-block.component.scss 3 | 4 | .block-system-branding-block { 5 | .site-logo { 6 | } 7 | .site-name { 8 | } 9 | .site-slogan { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /templates/block/block--search-form-block.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'block', 4 | 'block-search', 5 | 'container-inline', 6 | ] 7 | %} 8 | {% set attributes = attributes.addClass(classes) %} 9 | 10 | {% include '@organisms/block/classy-search-form-block/_classy-search-form-block.html.twig' %} 11 | -------------------------------------------------------------------------------- /templates/layout/region.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'region', 4 | 'region-' ~ region|clean_class, 5 | ] 6 | %} 7 | {% set attributes = attributes.addClass(classes) %} 8 | 9 | {% block template %} 10 | {% include '@organisms/layout/classy-region/_classy-region.html.twig' %} 11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /source/css/classy/components/link.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Style another element as a link. 4 | */ 5 | 6 | button.link { 7 | background: transparent; 8 | border: 0; 9 | cursor: pointer; 10 | margin: 0; 11 | padding: 0; 12 | font-size: 1em; 13 | } 14 | label button.link { 15 | font-weight: bold; 16 | } 17 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view/demo/_classy-views-view-display-table.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@organisms/views/classy-views-view/demo/classy-views-view-demo.twig' with { 3 | 'rows': include('@organisms/views/classy-views-view-table/demo/classy-views-view-table-demo.twig', with_context = false) 4 | } only 5 | %} 6 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/demo/classy-input-submit.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@atoms/form/classy-input/demo/classy-input-demo.twig' with { 3 | 'attributes': create_attribute({ 4 | 'class': ['button', 'form-submit'], 5 | 'type': ['submit'], 6 | 'value': ['Submit'] 7 | }) 8 | } only 9 | %} 10 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-page/_classy-page.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // organisms/layout/classy-page/_classy-page.component.scss 3 | 4 | .layout-container { 5 | } 6 | .layout-container > header { 7 | } 8 | .layout-container > main { 9 | } 10 | .layout-container > footer { 11 | } 12 | .layout-content { 13 | } 14 | -------------------------------------------------------------------------------- /source/css/stable/system/components/container-inline.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Inline items. 4 | */ 5 | 6 | .container-inline div, 7 | .container-inline label { 8 | display: inline; 9 | } 10 | /* Details contents always need to be rendered as block. */ 11 | .container-inline .details-wrapper { 12 | display: block; 13 | } 14 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Atoms 3 | --- 4 | 5 | # Atoms 6 | 7 | > Atoms of our interfaces serve as the foundational building blocks that 8 | > comprise all our user interfaces. These atoms include basic HTML elements like 9 | > form labels, inputs, buttons, and others that can’t be broken down any further 10 | > without ceasing to be functional. 11 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-error.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/form/classy-form-element/demo/classy-form-element-demo.twig' with { 3 | 'errors': 'Error message. Lorem ipsum dolor sit amet, consectetur adipiscing elit, 4 | sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' 5 | } only 6 | %} 7 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/73b355/check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/block/block.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'block', 4 | 'block-' ~ configuration.provider|clean_class, 5 | 'block-' ~ plugin_id|clean_class, 6 | ] 7 | %} 8 | {% set attributes = attributes.addClass(classes) %} 9 | 10 | {% block template %} 11 | {% include '@organisms/block/classy-block/_classy-block.html.twig' %} 12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /templates/views/views-exposed-form.html.twig: -------------------------------------------------------------------------------- 1 | {% if q is not empty %} 2 | {# 3 | This ensures that, if clean URLs are off, the 'q' is added first, 4 | as a hidden form element, so that it shows up first in the POST URL. 5 | #} 6 | {{ q }} 7 | {% endif %} 8 | 9 | {% include '@molecules/views/classy-views-exposed-form/_classy-views-exposed-form.html.twig' %} 10 | -------------------------------------------------------------------------------- /source/_twig-components/functions/create_attribute.function.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/0074bd/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/views/views-view.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'view', 4 | 'view-' ~ id|clean_class, 5 | 'view-id-' ~ id, 6 | 'view-display-id-' ~ display_id, 7 | dom_id ? 'js-view-dom-id-' ~ dom_id, 8 | ] 9 | %} 10 | {% set attributes = attributes.addClass(classes) %} 11 | 12 | {% include '@organisms/views/classy-views-view/_classy-views-view.html.twig' %} 13 | -------------------------------------------------------------------------------- /source/css/stable/core/dialog/off-canvas.motion.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Motion effects for off-canvas dialog. 4 | * 5 | * Motion effects are in a separate file so that they can be easily turned off 6 | * to improve performance if desired. 7 | */ 8 | 9 | .dialog-off-canvas-main-canvas { 10 | transition: padding-right 0.7s ease, padding-left 0.7s ease, padding-top 0.3s ease; 11 | } 12 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/0074bd/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-container/demo/classy-container-demo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Container 3 | --- 4 | 5 | A container used to wrap child elements. Used for grouped form items. Can also 6 | be used as a theme wrapper for any renderable element, to surround it with a 7 | `
` and HTML attributes. 8 | 9 | Based on the standard `container.html.twig` template from Classy theme. 10 | -------------------------------------------------------------------------------- /source/css/stable/system/components/reset-appearance.module.css: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 3 | * Utility class to remove browser styles, especially for button. 4 | */ 5 | 6 | .reset-appearance { 7 | -webkit-appearance: none; 8 | -moz-appearance: none; 9 | appearance: none; 10 | border: 0 none; 11 | background: transparent; 12 | padding: 0; 13 | margin: 0; 14 | line-height: inherit; 15 | } 16 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /templates/form/textarea.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'form-textarea', 4 | resizable ? 'resize-' ~ resizable, 5 | required ? 'required', 6 | ] 7 | %} 8 | {% set wrapper_attributes = wrapper_attributes.addClass('form-textarea-wrapper') %} 9 | {% set attributes = attributes.addClass(classes) %} 10 | 11 | {% include '@atoms/form/classy-textarea/_classy-textarea.html.twig' %} 12 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/file.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/file.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/content/media.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'media', 4 | 'media--type-' ~ media.bundle()|clean_class, 5 | not media.isPublished() ? 'media--unpublished', 6 | view_mode ? 'media--view-mode-' ~ view_mode|clean_class, 7 | ] 8 | %} 9 | {% set attributes = attributes.addClass(classes) %} 10 | 11 | {% include '@molecules/content/classy-media/_classy-media.html.twig' %} 12 | -------------------------------------------------------------------------------- /templates/views/views-view-table.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'views-table', 4 | 'views-view-table', 5 | 'cols-' ~ header|length, 6 | responsive ? 'responsive-enabled', 7 | sticky ? 'sticky-enabled', 8 | ] 9 | %} 10 | {% set attributes = attributes.addClass(classes) %} 11 | 12 | {% include '@organisms/views/classy-views-view-table/_classy-views-view-table.html.twig' %} 13 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/views/classy-views-exposed-form/demo/classy-views-exposed-form-demo.twig: -------------------------------------------------------------------------------- 1 | {% if form is not defined %} 2 | {% set form = include('@molecules/form/classy-form/demo/classy-form-demo.twig', with_context = false) %} 3 | {% endif %} 4 | 5 | {% 6 | include '@molecules/views/classy-views-exposed-form/_classy-views-exposed-form.html.twig' with { 7 | 'form': form 8 | } only 9 | %} 10 | -------------------------------------------------------------------------------- /source/css/stable/system/components/resize.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Resizable textareas. 4 | */ 5 | 6 | .resize-none { 7 | resize: none; 8 | } 9 | .resize-vertical { 10 | resize: vertical; 11 | min-height: 2em; 12 | } 13 | .resize-horizontal { 14 | resize: horizontal; 15 | max-width: 100%; 16 | } 17 | .resize-both { 18 | resize: both; 19 | max-width: 100%; 20 | min-height: 2em; 21 | } 22 | -------------------------------------------------------------------------------- /templates/form/form-element-label.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | title_display == 'after' ? 'option', 4 | title_display == 'invisible' ? 'visually-hidden', 5 | required ? 'js-form-required', 6 | required ? 'form-required', 7 | ] 8 | %} 9 | {% set attributes = attributes.addClass(classes) %} 10 | 11 | {% include '@atoms/form/classy-form-element-label/_classy-form-element-label.html.twig' %} 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | /node_modules/ 3 | /pattern-lab-php/ 4 | /public/ 5 | /source/_meta/_00-head.mustache 6 | /source/_meta/_01-foot.mustache 7 | /source/css/* 8 | !/source/css/classy/ 9 | !/source/css/stable/ 10 | !/source/css/stable-theme.admin.css 11 | !/source/css/stable-theme.css 12 | /source/js/scripts-styleguide.js 13 | /vendor/ 14 | /wiki/ 15 | /composer.lock 16 | /dependencyGraph.json 17 | /package-lock.json 18 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field/classy-image/_classy-image.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override of an image. 5 | * 6 | * Available variables: 7 | * - attributes: HTML attributes for the img tag. 8 | * - style_name: (optional) The name of the image style applied. 9 | * 10 | * @see template_preprocess_image() 11 | * @see templates/field/image.html.twig 12 | */ 13 | #} 14 | 15 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field/classy-image/demo/classy-image-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({ 3 | 'src': ['https://interactive-examples.mdn.mozilla.net/media/examples/painted-hand-298-332.jpg'] 4 | }) %} 5 | {% endif %} 6 | 7 | {% 8 | include '@atoms/field/classy-image/_classy-image.html.twig' with { 9 | 'attributes': attributes 10 | } only 11 | %} 12 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/demo/classy-input-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute() %} 3 | {% endif %} 4 | {% if children is not defined %} 5 | {% set children = '' %} 6 | {% endif %} 7 | 8 | {% 9 | include '@atoms/form/classy-input/_classy-input.html.twig' with { 10 | 'attributes': attributes, 11 | 'children': children 12 | } only 13 | %} 14 | -------------------------------------------------------------------------------- /source/css/stable/file/file.admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Admin stylesheet for file module. 4 | */ 5 | 6 | /* File upload widget. */ 7 | .form-managed-file .form-submit { 8 | margin: 0 0.5em; 9 | } 10 | .form-managed-file div.ajax-progress-bar { 11 | display: none; 12 | margin-top: 4px; 13 | padding: 0; 14 | width: 28em; 15 | } 16 | .form-managed-file .ajax-progress-bar .bar { 17 | margin: 0; 18 | } 19 | -------------------------------------------------------------------------------- /source/css/stable/system/components/clearfix.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Float clearing. 4 | * 5 | * Based on the micro clearfix hack by Nicolas Gallagher, with the :before 6 | * pseudo selector removed to allow normal top margin collapse. 7 | * 8 | * @see http://nicolasgallagher.com/micro-clearfix-hack 9 | */ 10 | 11 | .clearfix:after { 12 | content: ""; 13 | display: table; 14 | clear: both; 15 | } 16 | -------------------------------------------------------------------------------- /source/css/stable/system/components/item-list.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for item list. 4 | */ 5 | 6 | .item-list__comma-list, 7 | .item-list__comma-list li { 8 | display: inline; 9 | } 10 | .item-list__comma-list { 11 | margin: 0; 12 | padding: 0; 13 | } 14 | .item-list__comma-list li:after { 15 | content: ", "; 16 | } 17 | .item-list__comma-list li:last-child:after { 18 | content: ""; 19 | } 20 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/push-right.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/push-right.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/css/classy/components/tableselect.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Table select behavior. 4 | * 5 | * @see tableselect.js 6 | */ 7 | 8 | tr.selected td { 9 | background: #ffc; 10 | } 11 | td.checkbox, 12 | th.checkbox { 13 | text-align: center; 14 | } 15 | [dir="rtl"] td.checkbox, 16 | [dir="rtl"] th.checkbox { 17 | /* This is required to win over specificity of [dir="rtl"] td */ 18 | text-align: center; 19 | } 20 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/push-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/push-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/push-left.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/push-left.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/css/stable/contextual/contextual.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Generic base styles for contextual module. 4 | */ 5 | 6 | .contextual-region { 7 | position: relative; 8 | } 9 | .contextual .trigger:focus { 10 | /* Override the .focusable position: static */ 11 | position: relative !important; 12 | } 13 | .contextual-links { 14 | display: none; 15 | } 16 | .contextual.open .contextual-links { 17 | display: block; 18 | } 19 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/e29700/warning.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-links/demo/_classy-links-read-more.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/navigation/classy-links/demo/classy-links-demo.twig' with { 3 | 'attributes': create_attribute({'class': ['links', 'inline', 'node__links']}), 4 | 'links': [ 5 | { 6 | 'attributes': create_attribute({'class': ['node-readmore']}), 7 | 'link': 'Read more' 8 | } 9 | ] 10 | } only 11 | %} 12 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/5181c6/chevron-disc-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/chevron-disc-up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form/_classy-form.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a 'form' element. 5 | * 6 | * Available variables 7 | * - attributes: A list of HTML attributes for the wrapper element. 8 | * - children: The child elements of the form. 9 | * 10 | * @see template_preprocess_form() 11 | * @see templates/form/form.html.twig 12 | */ 13 | #} 14 | 15 | {{ children }} 16 | 17 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-input/_classy-input.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for an 'input' #type form element. 5 | * 6 | * Available variables: 7 | * - attributes: A list of HTML attributes for the input element. 8 | * - children: Optional additional rendered elements. 9 | * 10 | * @see template_preprocess_input() 11 | * @see templates/form/input.html.twig 12 | */ 13 | #} 14 | {{ children }} 15 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-required.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/form/classy-form-element/demo/classy-form-element-demo.twig' with { 3 | 'label': 4 | include('@atoms/form/classy-form-element-label/demo/classy-form-element-label-demo.twig', { 5 | 'attributes': create_attribute({'class': ['form-required']}), 6 | 'required': true 7 | }, with_context = false) 8 | } only 9 | %} 10 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/views/classy-views-exposed-form/_classy-views-exposed-form.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a views exposed form. 5 | * 6 | * Available variables: 7 | * - form: A render element representing the form. 8 | * 9 | * @see template_preprocess_views_exposed_form() 10 | * @see templates/views/views-exposed-form.html.twig 11 | */ 12 | #} 13 |
14 | {{ form }} 15 |
16 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/barchart.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/5181c6/chevron-disc-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/barchart.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/chevron-disc-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/css/stable/core/print.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | margin: 1em; 4 | background-color: #fff; 5 | } 6 | [dir="rtl"] body { 7 | direction: rtl; 8 | } 9 | th { 10 | text-align: left; /* LTR */ 11 | color: #006; 12 | border-bottom: 1px solid #ccc; 13 | } 14 | [dir="rtl"] th { 15 | text-align: right; 16 | } 17 | tr:nth-child(odd) { 18 | background-color: #ddd; 19 | } 20 | tr:nth-child(even) { 21 | background-color: #fff; 22 | } 23 | td { 24 | padding: 5px; 25 | } 26 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-form-element-label/demo/classy-form-element-label-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute() %} 3 | {% endif %} 4 | {% if title is not defined %} 5 | {% set title = 'Form element label' %} 6 | {% endif %} 7 | 8 | {% 9 | include '@atoms/form/classy-form-element-label/_classy-form-element-label.html.twig' with { 10 | 'attributes': attributes, 11 | 'title': title 12 | } only 13 | %} 14 | -------------------------------------------------------------------------------- /source/css/classy/components/links.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for links. 4 | */ 5 | 6 | ul.inline, 7 | ul.links.inline { 8 | display: inline; 9 | padding-left: 0; /* LTR */ 10 | } 11 | [dir="rtl"] ul.inline, 12 | [dir="rtl"] ul.links.inline { 13 | padding-right: 0; 14 | padding-left: 15px; 15 | } 16 | ul.inline li { 17 | display: inline; 18 | list-style-type: none; 19 | padding: 0 0.5em; 20 | } 21 | ul.links a.is-active { 22 | color: #000; 23 | } 24 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/5181c6/pencil.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/pencil.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/pencil.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/pencil.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/dataset/item-list.html.twig: -------------------------------------------------------------------------------- 1 | {% if context.list_style %} 2 | {%- set wrapper_attributes = wrapper_attributes.addClass('item-list--' ~ context.list_style) %} 3 | {%- set attributes = attributes.addClass('item-list__' ~ context.list_style) %} 4 | {% endif %} 5 | {% if items or empty %} 6 | {% set wrapper_attributes = wrapper_attributes.addClass('item-list') %} 7 | {% endif %} 8 | 9 | {% include '@molecules/dataset/classy-item-list/_classy-item-list.html.twig' %} 10 | -------------------------------------------------------------------------------- /source/css/stable/user/user.icons.admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styling for the user module icons. 4 | */ 5 | 6 | /** 7 | * Toolbar tab icon. 8 | */ 9 | .toolbar-bar .toolbar-icon-user:before { 10 | background-image: url(../../../images/stable/core/icons/bebebe/person.svg); 11 | } 12 | .toolbar-bar .toolbar-icon-user:active:before, 13 | .toolbar-bar .toolbar-icon-user.is-active:before { 14 | background-image: url(../../../images/stable/core/icons/ffffff/person.svg); 15 | } 16 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/chevron-disc-left.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-page-title/demo/classy-page-title-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['page-title']}) %} 3 | {% endif %} 4 | {% if title is not defined %} 5 | {% set title = 'Page title' %} 6 | {% endif %} 7 | 8 | {% 9 | include '@organisms/content/classy-page-title/_classy-page-title.html.twig' with { 10 | 'title_attributes': title_attributes, 11 | 'title': title 12 | } only 13 | %} 14 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/chevron-disc-right.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/css/stable/user/user.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Module styling for user module. 4 | */ 5 | .password-strength__title, 6 | .password-strength__text { 7 | display: inline; 8 | } 9 | .password-strength__meter { 10 | height: 0.75em; 11 | margin-top: 0.5em; 12 | background-color: lightgray; 13 | } 14 | .password-strength__indicator { 15 | height: 100%; 16 | width: 0; 17 | background-color: gray; 18 | } 19 | .password-confirm-match { 20 | visibility: hidden; 21 | } 22 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-task/demo/classy-menu-local-task-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute() %} 3 | {% endif %} 4 | {% if task_link is not defined %} 5 | {% set task_link = 'Local task' %} 6 | {% endif %} 7 | 8 | {% 9 | include '@molecules/navigation/classy-menu-local-task/_classy-menu-local-task.html.twig' with { 10 | 'attributes': attributes, 11 | 'task_link': task_link 12 | } only 13 | %} 14 | -------------------------------------------------------------------------------- /source/css/stable/system/components/tablesort.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Table sort indicator. 4 | * 5 | * @see tablesort-indicator.html.twig 6 | */ 7 | 8 | .tablesort { 9 | width: 16px; 10 | height: 16px; 11 | display: inline-block; 12 | background-size: 100%; 13 | } 14 | .tablesort--asc { 15 | background-image: url(../../../images/core/icons/787878/twistie-down.svg); 16 | } 17 | .tablesort--desc { 18 | background-image: url(../../../images/core/icons/787878/twistie-up.svg); 19 | } 20 | -------------------------------------------------------------------------------- /source/images/stable/core/feed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/_classy-field-comment-body.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/field/classy-field/demo/classy-field-demo.twig' with { 3 | 'label_hidden': true, 4 | 'attributes': create_attribute({'class': ['field', 'field--comment-body']}), 5 | 'items': [ 6 | { 7 | 'attributes': create_attribute({'class': ['field__item']}), 8 | 'content': include('@atoms/content/paragraph.twig', with_context = false) 9 | } 10 | ] 11 | } only 12 | %} 13 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-local-tasks-block/_classy-local-tasks-block.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "@organisms/block/classy-block/_classy-block.html.twig" %} 2 | {# 3 | /** 4 | * @file 5 | * Theme override for tabs. 6 | * 7 | * @see templates/block/block--local-tasks-block.html.twig 8 | */ 9 | #} 10 | {% block content %} 11 | {% if content %} 12 | 15 | {% endif %} 16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /source/css/stable/user/user.admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Admin styling for the User module. 4 | */ 5 | 6 | /* Permissions page */ 7 | .permissions .module { 8 | font-weight: bold; 9 | } 10 | .permissions .permission { 11 | padding-left: 1.5em; /* LTR */ 12 | } 13 | [dir="rtl"] .permissions .permission { 14 | padding-left: 0; 15 | padding-right: 1.5em; 16 | } 17 | 18 | /* Account settings */ 19 | .user-admin-settings .details-description { 20 | font-size: 0.85em; 21 | padding-bottom: 0.5em; 22 | } 23 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/424242/loupe.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/505050/loupe.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-file-link/_classy-file-link.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a link to a file. 5 | * 6 | * Available variables: 7 | * - attributes: The HTML attributes for the containing element. 8 | * - file_link: A link to the file. 9 | * - icon: The icon image representing the file type. 10 | * 11 | * @see template_preprocess_file_link() 12 | * @see templates/field/file-link.html.twig 13 | */ 14 | #} 15 | {{ icon }} {{ file_link }} 16 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-description.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/form/classy-form-element/demo/classy-form-element-demo.twig' with { 3 | 'description_display': 'after', 4 | 'description': { 5 | 'attributes': create_attribute({'class': ['description']}), 6 | 'content': 'Description. Lorem ipsum dolor sit amet, consectetur adipiscing 7 | elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' 8 | } 9 | } only 10 | %} 11 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/key.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/key.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/css/stable/node/node.preview.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for node preview page. 4 | */ 5 | 6 | .node-preview-container { 7 | position: fixed; 8 | z-index: 499; 9 | width: 100%; 10 | padding: 10px; 11 | box-sizing: border-box; 12 | } 13 | 14 | @media only screen and (min-width: 36em) { 15 | .node-preview-container .form-type-select { 16 | margin-left: 25%; /* LTR */ 17 | } 18 | [dir="rtl"] .node-preview-container .form-type-select { 19 | margin-right: 25%; 20 | margin-left: 0; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /source/css/stable/system/components/js.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Utility classes to assist with Javascript functionality. 4 | */ 5 | 6 | /** 7 | * For anything you want to hide on page load when JS is enabled, so 8 | * that you can use the JS to control visibility and avoid flicker. 9 | */ 10 | .js .js-hide { 11 | display: none; 12 | } 13 | 14 | /** 15 | * For anything you want to show on page load only when JS is enabled. 16 | */ 17 | .js-show { 18 | display: none; 19 | } 20 | .js .js-show { 21 | display: block; 22 | } 23 | -------------------------------------------------------------------------------- /templates/content/comment.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'comment', 4 | 'js-comment', 5 | status != 'published' ? status, 6 | comment.owner.anonymous ? 'by-anonymous', 7 | author_id and author_id == commented_entity.getOwnerId() ? 'by-' ~ commented_entity.getEntityTypeId() ~ '-author', 8 | ] 9 | %} 10 | {% set attributes = attributes.addClass(classes) %} 11 | {% set content_attributes = content_attributes.addClass('content') %} 12 | 13 | {% include '@organisms/content/classy-comment/_classy-comment.html.twig' %} 14 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/content/classy-media/_classy-media.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override to display a media item. 5 | * 6 | * Available variables: 7 | * - name: Name of the media. 8 | * - content: Media content. 9 | * 10 | * @see template_preprocess_media() 11 | * @see templates/content/media.html.twig 12 | * 13 | * @ingroup themeable 14 | */ 15 | #} 16 | 17 | {{ title_suffix.contextual_links }} 18 | {% if content %} 19 | {{ content }} 20 | {% endif %} 21 | 22 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/hamburger.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ee0000/required.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/hamburger.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/layout/html.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set body_classes = [ 3 | logged_in ? 'user-logged-in', 4 | not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class, 5 | node_type ? 'page-node-type-' ~ node_type|clean_class, 6 | db_offline ? 'db-offline', 7 | ] 8 | %} 9 | {% set attributes = attributes.addClass(body_classes) %} 10 | {% set head_title = head_title|safe_join(' | ') %} 11 | {% set skip_to_main_content_text = 'Skip to main content'|t %} 12 | 13 | {% include '@organisms/layout/classy-html/_classy-html.html.twig' %} 14 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/misc/stable-feed-icon/demo/stable-feed-icon-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['feed-icon']}) %} 3 | {% endif %} 4 | {% if title is not defined %} 5 | {% set title = 'Subscribe to' %} 6 | {% endif %} 7 | {% if url is not defined %} 8 | {% set url = '' %} 9 | {% endif %} 10 | 11 | {% 12 | include '@atoms/misc/stable-feed-icon/_stable-feed-icon.html.twig' with { 13 | 'attributes': attributes, 14 | 'title': title, 15 | 'url': url 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/_classy-field-node-teaser.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/field/classy-field/demo/classy-field-demo.twig' with { 3 | 'label_hidden': true, 4 | 'attributes': create_attribute({'class': [ 5 | 'field', 'field--name-body', 'field--type-text-with-summary' 6 | ]}), 7 | 'items': [ 8 | { 9 | 'attributes': create_attribute({'class': ['field__item']}), 10 | 'content': include('@atoms/content/paragraph.twig', with_context = false) 11 | } 12 | ] 13 | } only 14 | %} 15 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/star.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/star.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-node/demo/classy-node-teaser.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@organisms/content/classy-node/demo/classy-node-demo.twig' with { 3 | 'attributes': create_attribute({'class': ['node', 'node--view-mode-teaser']}), 4 | 'page': false, 5 | 'display_submitted': true, 6 | 'content': 7 | include('@molecules/field/classy-field/demo/_classy-field-node-teaser.twig', with_context = false) ~ 8 | include('@molecules/navigation/classy-links/demo/_classy-links-read-more.twig', with_context = false) 9 | } only 10 | %} 11 | -------------------------------------------------------------------------------- /source/css/classy/components/icons.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for icons. 4 | */ 5 | 6 | .icon-help { 7 | background: url(../../../images/stable/core/help.png) 0 50% no-repeat; /* LTR */ 8 | padding: 1px 0 1px 20px; /* LTR */ 9 | } 10 | [dir="rtl"] .icon-help { 11 | background-position: 100% 50%; 12 | padding: 1px 20px 1px 0; 13 | } 14 | .feed-icon { 15 | background: url(../../../images/stable/core/feed.svg) no-repeat; 16 | overflow: hidden; 17 | text-indent: -9999px; 18 | display: block; 19 | width: 16px; 20 | height: 16px; 21 | } 22 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view/demo/classy-views-view-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['view']}) %} 3 | {% endif %} 4 | {% if rows is not defined %} 5 | {% set rows = include('@organisms/views/classy-views-view-unformatted/demo/classy-views-view-unformatted-demo.twig', with_context = false) %} 6 | {% endif %} 7 | 8 | {% 9 | include '@organisms/views/classy-views-view/_classy-views-view.html.twig' with { 10 | 'attributes': attributes, 11 | 'rows': rows 12 | } only 13 | %} 14 | -------------------------------------------------------------------------------- /source/css/stable/views/views.module.css: -------------------------------------------------------------------------------- 1 | /* table style column align */ 2 | .views-align-left { 3 | text-align: left; 4 | } 5 | .views-align-right { 6 | text-align: right; 7 | } 8 | .views-align-center { 9 | text-align: center; 10 | } 11 | /* Grid style column align. */ 12 | .views-view-grid .views-col { 13 | float: left; 14 | } 15 | .views-view-grid .views-row { 16 | clear: both; 17 | float: left; 18 | width: 100%; 19 | } 20 | /* Provide some space between display links. */ 21 | .views-display-link + .views-display-link { 22 | margin-left: 0.5em; 23 | } 24 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/misc/stable-feed-icon/_stable-feed-icon.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a feed icon. 5 | * 6 | * Available variables: 7 | * - url: An internal system path or a fully qualified external URL of the feed. 8 | * - attributes: Remaining HTML attributes for the feed link. 9 | * - title: A descriptive title of the feed link. 10 | * - class: HTML classes to be applied to the feed link. 11 | * 12 | * @see templates/misc/feed-icon.html.twig 13 | */ 14 | #} 15 | 16 | {{ title }} 17 | 18 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-container/demo/classy-container-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['js-form-wrapper', 'form-wrapper']}) %} 3 | {% endif %} 4 | {% if children is not defined %} 5 | {% set children = include('@molecules/form/classy-form-element/demo/classy-form-element-demo.twig', with_context = false) %} 6 | {% endif %} 7 | 8 | {% 9 | include '@molecules/form/classy-container/_classy-container.html.twig' with { 10 | 'attributes': attributes, 11 | 'children': children 12 | } only 13 | %} 14 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-breadcrumb.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['region', 'region-breadcrumb']}) %} 3 | {% endif %} 4 | {% if content is not defined %} 5 | {% set content %} 6 | {% include '@organisms/block/classy-block/demo/_classy-block-breadcrumb.twig' only %} 7 | {% endset %} 8 | {% endif %} 9 | 10 | {% 11 | include '@organisms/layout/classy-region/demo/classy-region-demo.twig' with { 12 | 'attributes': attributes, 13 | 'content': content 14 | } only 15 | %} 16 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-primary-menu.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['region', 'region-primary-menu']}) %} 3 | {% endif %} 4 | {% if content is not defined %} 5 | {% set content %} 6 | {% include '@organisms/block/classy-menu-block/demo/_classy-menu-block-main.twig' only %} 7 | {% endset %} 8 | {% endif %} 9 | 10 | {% 11 | include '@organisms/layout/classy-region/demo/classy-region-demo.twig' with { 12 | 'attributes': attributes, 13 | 'content': content 14 | } only 15 | %} 16 | -------------------------------------------------------------------------------- /source/css/stable/system/components/tree-child.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for a nested tree child. 4 | */ 5 | 6 | div.tree-child { 7 | background: url(../../../images/core/tree.png) no-repeat 11px center; /* LTR */ 8 | } 9 | div.tree-child-last { 10 | background: url(../../../images/core/tree-bottom.png) no-repeat 11px center; /* LTR */ 11 | } 12 | [dir="rtl"] div.tree-child, 13 | [dir="rtl"] div.tree-child-last { 14 | background-position: -65px center; 15 | } 16 | div.tree-child-horizontal { 17 | background: url(../../../images/core/tree.png) no-repeat -11px center; 18 | } 19 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/person.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/person.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-select/demo/classy-select-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute() %} 3 | {% endif %} 4 | {% if options is not defined %} 5 | {% set options = [ 6 | {'type': 'option', 'value': 1, 'label': 'Option 1'}, 7 | {'type': 'option', 'value': 2, 'label': 'Option 2'}, 8 | {'type': 'option', 'value': 3, 'label': 'Option 3'}, 9 | ] %} 10 | {% endif %} 11 | 12 | {% 13 | include '@atoms/form/classy-select/_classy-select.html.twig' with { 14 | 'attributes': attributes, 15 | 'options': options 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-file-link/demo/classy-file-link-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['file', 'file--general']}) %} 3 | {% endif %} 4 | {% if icon is not defined %} 5 | {% set icon = '' %} 6 | {% endif %} 7 | {% if file_link is not defined %} 8 | {% set file_link = 'File link' %} 9 | {% endif %} 10 | 11 | {% 12 | include '@molecules/field/classy-file-link/_classy-file-link.html.twig' with { 13 | 'attributes': attributes, 14 | 'icon': icon, 15 | 'file_link': file_link 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/ex.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/move.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/ex.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/move.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/ex.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/move.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/ex.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/_classy-region.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override to display a region. 5 | * 6 | * Available variables: 7 | * - content: The content for this region, typically blocks. 8 | * - attributes: HTML attributes for the region
. 9 | * - region: The name of the region variable as defined in the theme's 10 | * .info.yml file. 11 | * 12 | * @see template_preprocess_region() 13 | * @see templates/layout/region.html.twig 14 | */ 15 | #} 16 | {% if content %} 17 | 18 | {{ content }} 19 |
20 | {% endif %} 21 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-sidebar-first.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['region', 'region-sidebar-first']}) %} 3 | {% endif %} 4 | {% if content is not defined %} 5 | {% set content %} 6 | {% include '@organisms/block/classy-search-form-block/demo/classy-search-form-block-demo.twig' only %} 7 | {% endset %} 8 | {% endif %} 9 | 10 | {% 11 | include '@organisms/layout/classy-region/demo/classy-region-demo.twig' with { 12 | 'attributes': attributes, 13 | 'content': content 14 | } only 15 | %} 16 | -------------------------------------------------------------------------------- /source/css/classy/components/container-inline.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Inline items. 4 | */ 5 | 6 | .container-inline label:after, 7 | .container-inline .label:after { 8 | content: ":"; 9 | } 10 | .form-type-radios .container-inline label:after, 11 | .form-type-checkboxes .container-inline label:after { 12 | content: ""; 13 | } 14 | .form-type-radios .container-inline .form-type-radio, 15 | .form-type-checkboxes .container-inline .form-type-checkbox { 16 | margin: 0 1em; 17 | } 18 | .container-inline .form-actions, 19 | .container-inline.form-actions { 20 | margin-top: 0; 21 | margin-bottom: 0; 22 | } 23 | -------------------------------------------------------------------------------- /source/css/stable/ckeditor/ckeditor-iframe.css: -------------------------------------------------------------------------------- 1 | /** 2 | * CSS added to iframe-based instances only. 3 | */ 4 | body { 5 | font-family: Arial, Verdana, sans-serif; 6 | font-size: 15px; 7 | color: #222; 8 | background-color: #fff; 9 | margin: 8px; 10 | } 11 | 12 | @media screen and (max-width: 600px) { 13 | /* A font-size of 16px prevents iOS from zooming. */ 14 | body { 15 | font-size: 16px; 16 | } 17 | } 18 | 19 | ol, 20 | ul, 21 | dl { 22 | /* Preserved spaces for list items with text direction other than the list. 23 | * (CKEditor issues #6249,#8049) */ 24 | padding: 0 40px; 25 | } 26 | -------------------------------------------------------------------------------- /source/css/stable/config_translation/config_translation.admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for Configuration Translation. 4 | */ 5 | 6 | /** 7 | * Hide the label, in an accessible way, for responsive screens which show the 8 | * form in one column. 9 | */ 10 | .translation-set__translated label { 11 | clip: rect(1px, 1px, 1px, 1px); 12 | height: 1px; 13 | overflow: hidden; 14 | position: absolute; 15 | width: 1px; 16 | } 17 | 18 | @media screen and (min-width: 38em) { 19 | .translation-set__translated label { 20 | height: auto; 21 | position: inherit; 22 | width: auto; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /source/css/classy/components/details.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Collapsible details. 4 | * 5 | * @see collapse.js 6 | * @see http://nicolasgallagher.com/css-background-image-hacks/ 7 | */ 8 | 9 | details { 10 | border: 1px solid #ccc; 11 | margin-top: 1em; 12 | margin-bottom: 1em; 13 | } 14 | details > .details-wrapper { 15 | padding: 0.5em 1.5em; 16 | } 17 | /* @todo Regression: The summary of uncollapsible details are no longer 18 | vertically aligned with the .details-wrapper in browsers without native 19 | details support. */ 20 | summary { 21 | cursor: pointer; 22 | padding: 0.2em 0.5em; 23 | } 24 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/paintbrush.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/paintbrush.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/css/stable/ckeditor/plugins/language/ckeditor.language.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Language: add styling for elements that have a language attribute. 4 | */ 5 | 6 | /** 7 | * Show the user that a 'lang' tag has been applied by adding a thin dotted 8 | * border. We also append the value of the tag between brackets, for example: 9 | * '(en)'. Since the html element has a 'lang' attribute too we only target 10 | * elements within the html scope. 11 | */ 12 | html [lang] { 13 | outline: 1px dotted gray; 14 | } 15 | html [lang]:after { 16 | content: " ("attr(lang)")"; 17 | font-size: 10px; 18 | color: #666; 19 | } 20 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/shila-article/demo/shila-article-teaser.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@organisms/content/classy-node/demo/classy-node-demo.twig' with { 3 | 'attributes': create_attribute({'class': [ 4 | 'node', 'node--type-article', 'node--view-mode-teaser' 5 | ]}), 6 | 'page': false, 7 | 'label': 'Article title', 8 | 'display_submitted': true, 9 | 'content': 10 | include('@molecules/field/classy-field/demo/_classy-field-node-teaser.twig', with_context = false) ~ 11 | include('@molecules/navigation/classy-links/demo/_classy-links-read-more.twig', with_context = false) 12 | } only 13 | %} 14 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-container/demo/_classy-container-form-textfield.twig: -------------------------------------------------------------------------------- 1 | {% if label is not defined %} 2 | {% set label = 'Textfield label' %} 3 | {% endif %} 4 | {% set children = include('@molecules/form/classy-form-element/demo/classy-form-element-demo.twig', { 5 | 'label': 6 | include('@atoms/form/classy-form-element-label/demo/classy-form-element-label-demo.twig', { 7 | 'title': label 8 | }, with_context = false) 9 | }, with_context = false) %} 10 | 11 | {% 12 | include '@molecules/form/classy-container/demo/classy-container-demo.twig' with { 13 | 'children': children 14 | } only 15 | %} 16 | -------------------------------------------------------------------------------- /source/css/classy/components/tabs.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for tabs. 4 | */ 5 | 6 | div.tabs { 7 | margin: 1em 0; 8 | } 9 | ul.tabs { 10 | list-style: none; 11 | margin: 0 0 0.5em; 12 | padding: 0; 13 | } 14 | .tabs > li { 15 | display: inline-block; 16 | margin-right: 0.3em; /* LTR */ 17 | } 18 | [dir="rtl"] .tabs > li { 19 | margin-left: 0.3em; 20 | margin-right: 0; 21 | } 22 | .tabs a { 23 | display: block; 24 | padding: 0.2em 1em; 25 | text-decoration: none; 26 | } 27 | .tabs a.is-active { 28 | background-color: #eee; 29 | } 30 | .tabs a:focus, 31 | .tabs a:hover { 32 | background-color: #f5f5f5; 33 | } 34 | -------------------------------------------------------------------------------- /shila_theme.breakpoints.yml: -------------------------------------------------------------------------------- 1 | shila_theme.xs: 2 | label: XS 3 | mediaQuery: 'all and (max-width: 524px)' 4 | weight: 0 5 | multipliers: 6 | - 1x 7 | - 2x 8 | shila_theme.s: 9 | label: S 10 | mediaQuery: 'all and (min-width: 525px) and (max-width: 800px)' 11 | weight: 1 12 | multipliers: 13 | - 1x 14 | - 2x 15 | shila_theme.m: 16 | label: M 17 | mediaQuery: 'all and (min-width: 801px) and (max-width: 1024px)' 18 | weight: 2 19 | multipliers: 20 | - 1x 21 | - 2x 22 | shila_theme.l: 23 | label: L 24 | mediaQuery: 'all and (min-width: 1025px)' 25 | weight: 3 26 | multipliers: 27 | - 1x 28 | - 2x 29 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-task/_classy-menu-local-task.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a local task link. 5 | * 6 | * Available variables: 7 | * - attributes: HTML attributes for the wrapper element. 8 | * - is_active: Whether the task item is an active tab. 9 | * - task_link: A rendered link element. 10 | * 11 | * Note: This template renders the content for each task item in 12 | * menu-local-tasks.html.twig. 13 | * 14 | * @see template_preprocess_menu_local_task() 15 | * @see templates/navigation/menu-local-task.html.twig 16 | */ 17 | #} 18 | {{ task_link }} 19 | -------------------------------------------------------------------------------- /alter-twig.php: -------------------------------------------------------------------------------- 1 | addFunction(new \Twig_SimpleFunction('create_attribute', function ($attributes = []) { 17 | return is_array($attributes) ? new Attribute($attributes) : $attributes; 18 | })); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /source/css/classy/components/breadcrumb.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for breadcrumbs. 4 | */ 5 | 6 | .breadcrumb { 7 | padding-bottom: 0.5em; 8 | } 9 | .breadcrumb ol { 10 | margin: 0; 11 | padding: 0; 12 | } 13 | [dir="rtl"] .breadcrumb ol { 14 | /* This is required to win over specificity of [dir="rtl"] ol */ 15 | margin-right: 0; 16 | } 17 | .breadcrumb li { 18 | display: inline; 19 | list-style-type: none; 20 | margin: 0; 21 | padding: 0; 22 | } 23 | /* IE8 does not support :not() and :last-child. */ 24 | .breadcrumb li:before { 25 | content: " \BB "; 26 | } 27 | .breadcrumb li:first-child:before { 28 | content: none; 29 | } 30 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-local-tasks-block/demo/classy-local-tasks-block-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': [ 3 | 'block', 'block-core', 'block-local-tasks-block' 4 | ]}) %} 5 | {% endif %} 6 | {% if content is not defined %} 7 | {% set content = include('@molecules/navigation/classy-menu-local-tasks/demo/classy-menu-local-tasks-demo.twig', with_context = false) %} 8 | {% endif %} 9 | 10 | {% 11 | include '@organisms/block/classy-local-tasks-block/_classy-local-tasks-block.html.twig' with { 12 | 'attributes': attributes, 13 | 'content': content 14 | } only 15 | %} 16 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['region', 'region-content']}) %} 3 | {% endif %} 4 | {% if content is not defined %} 5 | {% set content %} 6 | {% include '@organisms/block/classy-block/demo/_classy-block-page-title.twig' only %} 7 | {% include '@organisms/block/classy-block/demo/_classy-block-main.twig' only %} 8 | {% endset %} 9 | {% endif %} 10 | 11 | {% 12 | include '@organisms/layout/classy-region/_classy-region.html.twig' with { 13 | 'attributes': attributes, 14 | 'content': content 15 | } only 16 | %} 17 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-header.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['region', 'region-header']}) %} 3 | {% endif %} 4 | {% if content is not defined %} 5 | {% set content %} 6 | {% 7 | include '@organisms/block/classy-branding-block/demo/classy-branding-block-demo.twig' with { 8 | 'site_slogan': '', 9 | } only 10 | %} 11 | {% endset %} 12 | {% endif %} 13 | 14 | {% 15 | include '@organisms/layout/classy-region/demo/classy-region-demo.twig' with { 16 | 'attributes': attributes, 17 | 'content': content 18 | } only 19 | %} 20 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-breadcrumb/demo/classy-breadcrumb-demo.twig: -------------------------------------------------------------------------------- 1 | {% if title is not defined %} 2 | {% set title = 'Breadcrumb' %} 3 | {% endif %} 4 | {% if breadcrumb is not defined %} 5 | {% set breadcrumb = [ 6 | { 7 | 'text': 'Crumb 1', 8 | 'url': '#' 9 | }, 10 | { 11 | 'text': 'Crumb 2', 12 | 'url': '#' 13 | }, 14 | { 15 | 'text': 'Crumb 3', 16 | 'url': '#' 17 | } 18 | ] %} 19 | {% endif %} 20 | 21 | {% 22 | include '@molecules/navigation/classy-breadcrumb/_classy-breadcrumb.html.twig' with { 23 | 'title': title, 24 | 'breadcrumb': breadcrumb 25 | } only 26 | %} 27 | -------------------------------------------------------------------------------- /source/css/classy/components/field.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for fields. 4 | */ 5 | 6 | .field__label { 7 | font-weight: bold; 8 | } 9 | .field--label-inline .field__label, 10 | .field--label-inline .field__items { 11 | float: left; /* LTR */ 12 | } 13 | .field--label-inline .field__label, 14 | .field--label-inline > .field__item, 15 | .field--label-inline .field__items { 16 | padding-right: 0.5em; 17 | } 18 | [dir="rtl"] .field--label-inline .field__label, 19 | [dir="rtl"] .field--label-inline .field__items { 20 | padding-left: 0.5em; 21 | padding-right: 0; 22 | } 23 | .field--label-inline .field__label::after { 24 | content: ":"; 25 | } 26 | -------------------------------------------------------------------------------- /templates/field/field--comment.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'field', 4 | 'field--name-' ~ field_name|clean_class, 5 | 'field--type-' ~ field_type|clean_class, 6 | 'field--label-' ~ label_display, 7 | 'comment-wrapper', 8 | ] 9 | %} 10 | {% 11 | set title_classes = [ 12 | 'title', 13 | label_display == 'visually_hidden' ? 'visually-hidden', 14 | ] 15 | %} 16 | {% set attributes = attributes.addClass(classes) %} 17 | {% set title_attributes = title_attributes.addClass(title_classes) %} 18 | {% set comment_form_title = 'Add new comment'|t %} 19 | 20 | {% include '@organisms/field/classy-comments/_classy-comments.html.twig' %} 21 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-form-element-label/_classy-form-element-label.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a form element label. 5 | * 6 | * Available variables: 7 | * - title: The label's text. 8 | * - title_display: Elements title_display setting. 9 | * - required: An indicator for whether the associated form element is required. 10 | * - attributes: A list of HTML attributes for the label. 11 | * 12 | * @see template_preprocess_form_element_label() 13 | * @see templates/form-element-label.html.twig 14 | */ 15 | #} 16 | {% if title is not empty or required -%} 17 | {{ title }} 18 | {%- endif %} 19 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-textarea/demo/classy-textarea-demo.twig: -------------------------------------------------------------------------------- 1 | {% if wrapper_attributes is not defined %} 2 | {% set wrapper_attributes = create_attribute({'class': ['form-textarea-wrapper']}) %} 3 | {% endif %} 4 | {% if attributes is not defined %} 5 | {% set attributes = create_attribute({'class': ['form-textarea', 'resize-vertical']}) %} 6 | {% endif %} 7 | {% if value is not defined %} 8 | {% set value = '' %} 9 | {% endif %} 10 | 11 | {% 12 | include '@atoms/form/classy-textarea/_classy-textarea.html.twig' with { 13 | 'wrapper_attributes': wrapper_attributes, 14 | 'attributes': attributes, 15 | 'value': value 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/_classy-field-tags.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/field/classy-field/demo/classy-field-demo.twig' with { 3 | 'label': 'Tags', 4 | 'items': [ 5 | { 6 | 'attributes': create_attribute({'class': ['field__item']}), 7 | 'content': 'Tag one' 8 | }, 9 | { 10 | 'attributes': create_attribute({'class': ['field__item']}), 11 | 'content': 'Tag two' 12 | }, 13 | { 14 | 'attributes': create_attribute({'class': ['field__item']}), 15 | 'content': 'Tag three' 16 | } 17 | ] 18 | } only 19 | %} 20 | -------------------------------------------------------------------------------- /source/css/stable/system/components/align.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Alignment classes for text and block level elements. 4 | */ 5 | 6 | .text-align-left { 7 | text-align: left; 8 | } 9 | .text-align-right { 10 | text-align: right; 11 | } 12 | .text-align-center { 13 | text-align: center; 14 | } 15 | .text-align-justify { 16 | text-align: justify; 17 | } 18 | 19 | /** 20 | * Alignment classes for block level elements (images, videos, blockquotes, etc.) 21 | */ 22 | .align-left { 23 | float: left; 24 | } 25 | .align-right { 26 | float: right; 27 | } 28 | .align-center { 29 | display: block; 30 | margin-left: auto; 31 | margin-right: auto; 32 | } 33 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/star-empty.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/star-empty.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/_classy-field-node-body.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/field/classy-field/demo/classy-field-demo.twig' with { 3 | 'label_hidden': true, 4 | 'attributes': create_attribute({'class': ['field', 'field--node-body']}), 5 | 'items': [ 6 | { 7 | 'attributes': create_attribute({'class': ['field__item']}), 8 | 'content': 9 | include('@atoms/content/paragraph.twig', with_context = false) ~ 10 | include('@atoms/content/paragraph.twig', with_context = false) ~ 11 | include('@atoms/content/paragraph.twig', with_context = false), 12 | } 13 | ] 14 | } only 15 | %} 16 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-block/demo/_classy-block-main.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['block', 'block-system', 'block-system-main-block']}) %} 3 | {% endif %} 4 | {% if label is not defined %} 5 | {% set label = false %} 6 | {% endif %} 7 | {% if content is not defined %} 8 | {% set content = include('@organisms/content/classy-node/demo/classy-node-demo.twig', with_context = false) %} 9 | {% endif %} 10 | 11 | {% 12 | include '@organisms/block/classy-block/demo/classy-block-demo.twig' with { 13 | 'attributes': attributes, 14 | 'label': label, 15 | 'content': content 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-textarea/_classy-textarea.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a 'textarea' #type form element. 5 | * 6 | * Available variables 7 | * - wrapper_attributes: A list of HTML attributes for the wrapper element. 8 | * - attributes: A list of HTML attributes for the 18 |
19 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-field/demo/_classy-field-image.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/field/classy-field/demo/classy-field-demo.twig' with { 3 | 'label': 'Image', 4 | 'attributes': create_attribute({ 5 | 'class': ['field', 'field--name-field-media-image', 'field--type-image'] 6 | }), 7 | 'title_attributes': create_attribute({ 8 | 'class': ['field__label', 'visually-hidden'] 9 | }), 10 | 'items': [ 11 | { 12 | 'attributes': create_attribute({'class': ['field__item']}), 13 | 'content': include('@atoms/field/classy-image/demo/classy-image-demo.twig', with_context = false), 14 | } 15 | ] 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/field/classy-file-link/_classy-file-link.component.scss: -------------------------------------------------------------------------------- 1 | // @file 2 | // molecules/field/classy-file-link/_classy-file-link.component.scss 3 | 4 | .file { 5 | } 6 | .file--general, 7 | .file--application-octet-stream { 8 | } 9 | .file--package-x-generic { 10 | } 11 | .file--x-office-spreadsheet { 12 | } 13 | .file--x-office-document { 14 | } 15 | .file--x-office-presentation { 16 | } 17 | .file--text-x-script { 18 | } 19 | .file--text-html { 20 | } 21 | .file--text-plain { 22 | } 23 | .file--application-pdf { 24 | } 25 | .file--application-x-executable { 26 | } 27 | .file--audio { 28 | } 29 | .file--video { 30 | } 31 | .file--text { 32 | } 33 | .file--image { 34 | } 35 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form-element/demo/classy-form-element-description-error.twig: -------------------------------------------------------------------------------- 1 | {% 2 | include '@molecules/form/classy-form-element/demo/classy-form-element-demo.twig' with { 3 | 'description_display': 'after', 4 | 'description': { 5 | 'attributes': create_attribute({'class': ['description']}), 6 | 'content': 'Description. Lorem ipsum dolor sit amet, consectetur adipiscing 7 | elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' 8 | }, 9 | 'errors': 'Error message. Lorem ipsum dolor sit amet, consectetur adipiscing 10 | elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' 11 | } only 12 | %} 13 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-block/demo/_classy-block-page-title.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['block', 'block-core', 'block-page-title-block']}) %} 3 | {% endif %} 4 | {% if label is not defined %} 5 | {% set label = false %} 6 | {% endif %} 7 | {% if content is not defined %} 8 | {% set content = include('@organisms/content/classy-page-title/demo/classy-page-title-demo.twig', with_context = false) %} 9 | {% endif %} 10 | 11 | {% 12 | include '@organisms/block/classy-block/demo/classy-block-demo.twig' with { 13 | 'attributes': attributes, 14 | 'label': label, 15 | 'content': content 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu/demo/classy-menu-collapsed.twig: -------------------------------------------------------------------------------- 1 | {% set items = [ 2 | { 3 | 'attributes': create_attribute({'class': ['menu-item', 'menu-item--collapsed']}), 4 | 'link': 'Menu item 1' 5 | }, 6 | { 7 | 'attributes': create_attribute({'class': ['menu-item', 'menu-item--collapsed']}), 8 | 'link': 'Menu item 2' 9 | }, 10 | { 11 | 'attributes': create_attribute({'class': ['menu-item', 'menu-item--collapsed']}), 12 | 'link': 'Menu item 3' 13 | }, 14 | ] %} 15 | 16 | {% 17 | include '@molecules/navigation/classy-menu/demo/classy-menu-demo.twig' with { 18 | 'items': items 19 | } only 20 | %} 21 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/e32700/error.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-block/demo/_classy-block-breadcrumb.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['block', 'block-system', 'block-system-breadcrumb-block']}) %} 3 | {% endif %} 4 | {% if label is not defined %} 5 | {% set label = false %} 6 | {% endif %} 7 | {% if content is not defined %} 8 | {% set content = include('@molecules/navigation/classy-breadcrumb/demo/classy-breadcrumb-demo.twig', with_context = false) %} 9 | {% endif %} 10 | 11 | {% 12 | include '@organisms/block/classy-block/demo/classy-block-demo.twig' with { 13 | 'attributes': attributes, 14 | 'label': label, 15 | 'content': content 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-form/demo/classy-form-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute() %} 3 | {% endif %} 4 | {% if children is not defined %} 5 | {% set children %} 6 | {% include '@molecules/form/classy-container/demo/classy-container-demo.twig' only %} 7 | {% include '@molecules/form/classy-container/demo/classy-container-demo.twig' only %} 8 | {% include '@molecules/form/classy-container/demo/classy-container-demo.twig' only %} 9 | {% endset %} 10 | {% endif %} 11 | 12 | {% 13 | include '@molecules/form/classy-form/_classy-form.html.twig' with { 14 | 'attributes': attributes, 15 | 'children': children 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/field/stable-responsive-image/demo/stable-responsive-image-demo.twig: -------------------------------------------------------------------------------- 1 | {% if sources is not defined %} 2 | {% set sources = [ 3 | create_attribute({ 4 | 'srcset': ['https://interactive-examples.mdn.mozilla.net/media/examples/surfer-240-200.jpg'], 5 | 'media': ['(min-width: 800px)'] 6 | }) 7 | ] %} 8 | {% endif %} 9 | {% if img_element is not defined %} 10 | {% set img_element = include('@atoms/field/classy-image/demo/classy-image-demo.twig', with_context = false) %} 11 | {% endif %} 12 | 13 | {% 14 | include '@atoms/field/stable-responsive-image/_stable-responsive-image.html.twig' with { 15 | 'sources': sources, 16 | 'img_element': img_element 17 | } only 18 | %} 19 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-secondary-menu.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['region', 'region-secondary-menu']}) %} 3 | {% endif %} 4 | {% if content is not defined %} 5 | {% set content %} 6 | {% 7 | include '@organisms/block/classy-menu-block/demo/classy-menu-block-demo.twig' with { 8 | 'title_attributes': create_attribute({'class': ['visually-hidden']}) 9 | } only 10 | %} 11 | {% endset %} 12 | {% endif %} 13 | 14 | {% 15 | include '@organisms/layout/classy-region/demo/classy-region-demo.twig' with { 16 | 'attributes': attributes, 17 | 'content': content 18 | } only 19 | %} 20 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/content/classy-media/demo/classy-media-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['media', 'media--type-image']}) %} 3 | {% endif %} 4 | {% if title_suffix is not defined %} 5 | {% set title_suffix = { 6 | 'contextual_links': '' 7 | } %} 8 | {% endif %} 9 | {% if content is not defined %} 10 | {% set content = include('@molecules/field/classy-field/demo/_classy-field-image.twig', with_context = false) %} 11 | {% endif %} 12 | 13 | {% 14 | include '@molecules/content/classy-media/_classy-media.html.twig' with { 15 | 'attributes': attributes, 16 | 'title_suffix': title_suffix, 17 | 'content': content 18 | } only 19 | %} 20 | -------------------------------------------------------------------------------- /source/css/classy/components/item-list.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for item list. 4 | */ 5 | 6 | .item-list .title { 7 | font-weight: bold; 8 | } 9 | .item-list ul { 10 | margin: 0 0 0.75em 0; 11 | padding: 0; 12 | } 13 | .item-list li { 14 | margin: 0 0 0.25em 1.5em; /* LTR */ 15 | padding: 0; 16 | } 17 | [dir="rtl"] .item-list li { 18 | margin: 0 1.5em 0.25em 0; 19 | } 20 | 21 | /** 22 | * Comma separated lists. 23 | */ 24 | .item-list--comma-list { 25 | display: inline; 26 | } 27 | .item-list--comma-list .item-list__comma-list, 28 | .item-list__comma-list li, 29 | [dir="rtl"] .item-list--comma-list .item-list__comma-list, 30 | [dir="rtl"] .item-list__comma-list li { 31 | margin: 0; 32 | } 33 | -------------------------------------------------------------------------------- /source/css/stable/ckeditor/plugins/drupalimagecaption/ckeditor.drupalimagecaption.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Image Caption: overrides to make centered alignment work inside CKEditor. 4 | */ 5 | 6 | /** 7 | * Since .align-center is set on the non-captioned image's parent block element 8 | * in CKEditor, the image must be centered separately. 9 | */ 10 | p[data-widget="image"].align-center { 11 | text-align: center; 12 | } 13 | 14 | /** 15 | * Since .align-center is set on captioned widget's wrapper element in CKEditor, 16 | * the alignment of internals must be set separately. 17 | */ 18 | div[data-cke-widget-wrapper].align-center > figure[data-widget="image"] { 19 | margin-left: auto; 20 | margin-right: auto; 21 | } 22 | -------------------------------------------------------------------------------- /source/css/stable/system/components/system-status-report-counters.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for the system status report counters. 4 | */ 5 | 6 | .system-status-report-counters__item { 7 | width: 100%; 8 | padding: 0.5em 0; 9 | text-align: center; 10 | white-space: nowrap; 11 | background-color: rgba(0, 0, 0, 0.063); 12 | margin-bottom: 0.5em; 13 | } 14 | 15 | @media screen and (min-width: 60em) { 16 | .system-status-report-counters { 17 | flex-wrap: wrap; 18 | display: flex; 19 | justify-content: space-between; 20 | } 21 | .system-status-report-counters__item--half-width { 22 | width: 49%; 23 | } 24 | .system-status-report-counters__item--third-width { 25 | width: 33%; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-search-form-block/demo/classy-search-form-block-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': [ 3 | 'block', 'block-search', 'container-inline' 4 | ]}) %} 5 | {% endif %} 6 | {% if label is not defined %} 7 | {% set label = 'Search' %} 8 | {% endif %} 9 | {% if content is not defined %} 10 | {% set content = include('@molecules/form/classy-form/demo/_classy-form-search-block.twig', with_context = false) %} 11 | {% endif %} 12 | 13 | {% 14 | include '@organisms/block/classy-search-form-block/_classy-search-form-block.html.twig' with { 15 | 'attributes': attributes, 16 | 'label': label, 17 | 'content': content 18 | } only 19 | %} 20 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/questionmark-disc.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/questionmark-disc.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/questionmark-disc.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/ffffff/questionmark-disc.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/css/stable/filter/filter.caption.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Caption filter: default styling for displaying image captions. 4 | */ 5 | 6 | /** 7 | * Essentials, based on http://stackoverflow.com/a/13363408. 8 | */ 9 | .caption { 10 | display: table; 11 | } 12 | .caption > * { 13 | display: block; 14 | max-width: 100%; 15 | } 16 | .caption > figcaption { 17 | display: table-caption; 18 | caption-side: bottom; 19 | max-width: none; 20 | } 21 | 22 | /** 23 | * While editing and whenever the caption is empty, show a placeholder. 24 | * 25 | * Based on http://codepen.io/flesler/pen/AEIFc. 26 | */ 27 | .caption > figcaption[contenteditable=true]:empty:before { 28 | content: attr(data-placeholder); 29 | font-style: italic; 30 | } 31 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aleksip/shila-drupal-theme", 3 | "description": "Shila theme for Drupal 8", 4 | "keywords": [ 5 | "drupal", 6 | "theme", 7 | "twig", 8 | "pattern lab" 9 | ], 10 | "homepage": "https://github.com/aleksip/shila-drupal-theme", 11 | "license": "GPL-2.0-or-later", 12 | "type": "drupal-theme", 13 | "authors": [ 14 | { 15 | "name": "Aleksi Peebles" 16 | } 17 | ], 18 | "support": { 19 | "issues": "https://github.com/aleksip/shila-drupal-theme/issues", 20 | "source": "https://github.com/aleksip/shila-drupal-theme/releases" 21 | }, 22 | "require": { 23 | "aleksip/plugin-data-transform": "^1.3.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /source/css/stable/system/components/autocomplete-loading.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for animated throbber. 4 | * 5 | * @see autocomplete.js 6 | */ 7 | 8 | .js input.form-autocomplete { 9 | background-image: url(../../../images/core/throbber-inactive.png); 10 | background-position: 100% center; /* LTR */ 11 | background-repeat: no-repeat; 12 | } 13 | .js[dir="rtl"] input.form-autocomplete { 14 | background-position: 0% center; 15 | } 16 | .js input.form-autocomplete.ui-autocomplete-loading { 17 | background-image: url(../../../images/core/throbber-active.gif); 18 | background-position: 100% center; /* LTR */ 19 | } 20 | .js[dir="rtl"] input.form-autocomplete.ui-autocomplete-loading { 21 | background-position: 0% center; 22 | } 23 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-container/demo/_classy-container-form-textarea.twig: -------------------------------------------------------------------------------- 1 | {% if label is not defined %} 2 | {% set label = 'Textarea label' %} 3 | {% endif %} 4 | {% set children = include('@molecules/form/classy-form-element/demo/classy-form-element-demo.twig', { 5 | 'label': 6 | include('@atoms/form/classy-form-element-label/demo/classy-form-element-label-demo.twig', { 7 | 'title': label 8 | }, with_context = false), 9 | 'children': 10 | include('@atoms/form/classy-textarea/demo/classy-textarea-demo.twig', with_context = false) 11 | }, with_context = false) %} 12 | 13 | {% 14 | include '@molecules/form/classy-container/demo/classy-container-demo.twig' with { 15 | 'children': children 16 | } only 17 | %} 18 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/content/classy-page-title/_classy-page-title.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for page titles. 5 | * 6 | * Available variables: 7 | * - title_attributes: HTML attributes for the page title element. 8 | * - title_prefix: Additional output populated by modules, intended to be 9 | * displayed in front of the main title tag that appears in the template. 10 | * - title: The page title, for use in the actual content. 11 | * - title_suffix: Additional output populated by modules, intended to be 12 | * displayed after the main title tag that appears in the template. 13 | */ 14 | #} 15 | {{ title_prefix }} 16 | {% if title %} 17 | {{ title }} 18 | {% endif %} 19 | {{ title_suffix }} 20 | -------------------------------------------------------------------------------- /templates/block/block--system-menu-block.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'block', 4 | 'block-menu', 5 | 'navigation', 6 | 'menu--' ~ derivative_plugin_id|clean_class, 7 | ] 8 | %} 9 | {% set heading_id = attributes.id ~ '-menu'|clean_id %} 10 | {% set attributes = attributes.addClass(classes)|without('role', 'aria-labelledby') %} 11 | {# Label. If not displayed, we still provide it for screen readers. #} 12 | {% if not configuration.label_display %} 13 | {% set title_attributes = title_attributes.addClass('visually-hidden') %} 14 | {% endif %} 15 | {% set title_attributes = title_attributes.setAttribute('id', heading_id) %} 16 | 17 | {% block template %} 18 | {% include '@organisms/block/classy-menu-block/_classy-menu-block.html.twig' %} 19 | {% endblock %} 20 | -------------------------------------------------------------------------------- /templates/content/node.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'node', 4 | 'node--type-' ~ node.bundle|clean_class, 5 | node.isPromoted() ? 'node--promoted', 6 | node.isSticky() ? 'node--sticky', 7 | not node.isPublished() ? 'node--unpublished', 8 | view_mode ? 'node--view-mode-' ~ view_mode|clean_class, 9 | ] 10 | %} 11 | {% set attributes = attributes.addClass(classes) %} 12 | {% set author_attributes = author_attributes.addClass('node__submitted') %} 13 | {% set submitted %}{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}{% endset %} 14 | {% set content_attributes = content_attributes.addClass('node__content') %} 15 | 16 | {% block template %} 17 | {% include '@organisms/content/classy-node/_classy-node.html.twig' %} 18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-links/demo/classy-links-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['links', 'inline']}) %} 3 | {% endif %} 4 | {% if links is not defined %} 5 | {% set links = [ 6 | { 7 | 'attributes': create_attribute(), 8 | 'link': 'Link 1' 9 | }, 10 | { 11 | 'attributes': create_attribute(), 12 | 'link': 'Link 2' 13 | }, 14 | { 15 | 'attributes': create_attribute(), 16 | 'link': 'Link 3' 17 | }, 18 | ] %} 19 | {% endif %} 20 | 21 | {% 22 | include '@molecules/navigation/classy-links/_classy-links.html.twig' with { 23 | 'attributes': attributes, 24 | 'links': links 25 | } only 26 | %} 27 | -------------------------------------------------------------------------------- /source/css/stable/settings_tray/settings_tray.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styling for Settings Tray module. 4 | */ 5 | /* 6 | * Position the edit toolbar tab. 7 | * @todo Move changes into contextual module when Settings Tray is not 8 | * experimental: https://www.drupal.org/node/2784591. 9 | */ 10 | .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab { 11 | float: left; 12 | } 13 | [dir="rtl"] .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab { 14 | float: right; 15 | } 16 | 17 | .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode a, 18 | .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode input { 19 | pointer-events: none; 20 | } 21 | .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .contextual-links a { 22 | pointer-events: inherit; 23 | } 24 | -------------------------------------------------------------------------------- /source/sass/base.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * sass/base.scss 4 | * 5 | * CSS rules that style HTML elements ("base" styles). 6 | */ 7 | 8 | @import "partials/imports"; 9 | 10 | @import "partials/generic/generic.box-sizing"; 11 | 12 | @import "partials/elements/elements.page"; 13 | @import "partials/elements/elements.typography"; 14 | @import "partials/elements/elements.images"; 15 | @import "partials/elements/elements.tables"; 16 | 17 | @import "partials/styles/styles.typography"; 18 | @import "partials/styles/styles.links"; 19 | @import "partials/styles/styles.lists"; 20 | @import "partials/styles/styles.tables"; 21 | @import "partials/styles/styles.forms"; 22 | @import "partials/styles/styles.buttons"; 23 | @import "partials/styles/styles.focus"; 24 | 25 | @import "../_patterns/**/_*.base.scss"; 26 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/dataset/classy-item-list/demo/classy-item-list-demo.twig: -------------------------------------------------------------------------------- 1 | {% if wrapper_attributes is not defined %} 2 | {% set wrapper_attributes = create_attribute({'class': ['item-list']}) %} 3 | {% endif %} 4 | {% if list_type is not defined %} 5 | {% set list_type = 'ul' %} 6 | {% endif %} 7 | {% if items is not defined %} 8 | {% set items = [ 9 | {'attributes': create_attribute(), 'value': 'Item 1'}, 10 | {'attributes': create_attribute(), 'value': 'Item 2'}, 11 | {'attributes': create_attribute(), 'value': 'Item 3'} 12 | ] %} 13 | {% endif %} 14 | 15 | {% 16 | include '@molecules/dataset/classy-item-list/_classy-item-list.html.twig' with { 17 | 'wrapper_attributes': wrapper_attributes, 18 | 'list_type': list_type, 19 | 'items': items 20 | } only 21 | %} 22 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-breadcrumb/_classy-breadcrumb.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a breadcrumb trail. 5 | * 6 | * Available variables: 7 | * - breadcrumb: Breadcrumb trail items. 8 | * 9 | * @see templates/navigation/breadcrumb.html.twig 10 | */ 11 | #} 12 | {% if breadcrumb %} 13 | 27 | {% endif %} 28 | -------------------------------------------------------------------------------- /source/css/stable/settings_tray/settings_tray.motion.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Motion effects for Settings Tray module. 4 | * 5 | * Motion effects are in a separate file so that they can be easily turned off 6 | * to improve performance if desired. 7 | */ 8 | 9 | /* Transition the edit icon in the toolbar. */ 10 | #toolbar-bar.button.toolbar-icon.toolbar-icon.toolbar-icon-edit:before { 11 | transition: all 0.7s ease; 12 | } 13 | 14 | /* Transition the editables on the page, their contextual links and their hover states. */ 15 | .dialog-off-canvas-main-canvas .contextual, 16 | .dialog-off-canvas-main-canvas .js-settings-tray-edit-mode .settings-tray-editable, 17 | .dialog-off-canvas-main-canvas.js-off-canvas-dialog-open .js-settings-tray-edit-mode .settings-tray-editable { 18 | transition: all 0.7s ease; 19 | } 20 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/puzzlepiece.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/puzzlepiece.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view-unformatted/demo/classy-views-view-unformatted-demo.twig: -------------------------------------------------------------------------------- 1 | {% if title is not defined %} 2 | {% set title = '' %} 3 | {% endif %} 4 | {% if rows is not defined %} 5 | {% set rows = [ 6 | { 7 | 'attributes': create_attribute({'class': ['views-row']}), 8 | 'content': 'Row 1 content' 9 | }, 10 | { 11 | 'attributes': create_attribute({'class': ['views-row']}), 12 | 'content': 'Row 2 content' 13 | }, 14 | { 15 | 'attributes': create_attribute({'class': ['views-row']}), 16 | 'content': 'Row 3 content' 17 | } 18 | ] %} 19 | {% endif %} 20 | 21 | {% 22 | include '@organisms/views/classy-views-view-unformatted/_classy-views-view-unformatted.html.twig' with { 23 | 'title': title, 24 | 'rows': rows 25 | } only 26 | %} 27 | -------------------------------------------------------------------------------- /source/css/stable/migrate_drupal_ui/components/upgrade-analysis-report-tables.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for the upgrade analysis report tables. 4 | */ 5 | .upgrade-analysis-report__status-icon:before { 6 | content: ""; 7 | background-size: 16px; 8 | background-position: left center; 9 | background-repeat: no-repeat; 10 | width: 32px; 11 | height: 14px; 12 | display: inline-block; 13 | } 14 | 15 | .upgrade-analysis-report__status-icon--warning:before { 16 | background-image: url(../../../images/core/icons/e29700/warning.svg); 17 | } 18 | .upgrade-analysis-report__status-icon--checked:before { 19 | background-image: url(../../../images/core/icons/73b355/check.svg); 20 | } 21 | .upgrade-analysis-report__status-icon--error:before { 22 | background-image: url(../../../images/core/icons/e32700/error.svg); 23 | } 24 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/layout/classy-region/demo/classy-region-footer.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['region', 'region-footer']}) %} 3 | {% endif %} 4 | {% if content is not defined %} 5 | {% set content %} 6 | {% 7 | include '@organisms/block/classy-block/demo/classy-block-demo.twig' with { 8 | 'attributes': create_attribute({'class': ['block', 'block-system-powered-by-block']}), 9 | 'label': '', 10 | 'content': 'Powered by Pattern Lab' 11 | } only 12 | %} 13 | {% endset %} 14 | {% endif %} 15 | 16 | {% 17 | include '@organisms/layout/classy-region/demo/classy-region-demo.twig' with { 18 | 'attributes': attributes, 19 | 'content': content 20 | } only 21 | %} 22 | -------------------------------------------------------------------------------- /templates/field/field.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'field', 4 | 'field--name-' ~ field_name|clean_class, 5 | 'field--type-' ~ field_type|clean_class, 6 | 'field--label-' ~ label_display, 7 | ] 8 | %} 9 | {% 10 | set title_classes = [ 11 | 'field__label', 12 | label_display == 'visually_hidden' ? 'visually-hidden', 13 | ] 14 | %} 15 | {% if label_hidden %} 16 | {% if multiple %} 17 | {% set attributes = attributes.addClass(classes, 'field__items') %} 18 | {% else %} 19 | {% set attributes = attributes.addClass(classes, 'field__item') %} 20 | {% endif %} 21 | {% else %} 22 | {% set attributes = attributes.addClass(classes) %} 23 | {% set title_attributes = title_attributes.addClass(title_classes) %} 24 | {% endif %} 25 | 26 | {% include '@molecules/field/classy-field/_classy-field.html.twig' %} 27 | -------------------------------------------------------------------------------- /templates/navigation/pager.html.twig: -------------------------------------------------------------------------------- 1 | {% set pagination_title = 'Pagination'|t %} 2 | {% set first_page_title = 'Go to first page'|t %} 3 | {% set first_page_text = 'First page'|t %} 4 | {% set first_text = '« First'|t %} 5 | {% set previous_page_title = 'Go to previous page'|t %} 6 | {% set previous_page_text = 'Previous page'|t %} 7 | {% set previous_text = '‹ Previous'|t %} 8 | {% set current_page_text = 'Current page'|t %} 9 | {% set go_to_page_text = 'Go to page'|t %} 10 | {% set page_text ='Page'|t %} 11 | {% set next_page_title = 'Go to next page'|t %} 12 | {% set next_page_text = 'Next page'|t %} 13 | {% set next_text = 'Next ›'|t %} 14 | {% set last_page_title = 'Go to last page'|t %} 15 | {% set last_page_text = 'Last page'|t %} 16 | {% set last_text = 'Last »'|t %} 17 | 18 | {% include '@molecules/navigation/classy-pager/_classy-pager.html.twig' %} 19 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu/demo/classy-menu-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['menu']}) %} 3 | {% endif %} 4 | {% if items is not defined %} 5 | {% set items = [ 6 | { 7 | 'attributes': create_attribute({'class': ['menu-item']}), 8 | 'link': 'Menu item 1' 9 | }, 10 | { 11 | 'attributes': create_attribute({'class': ['menu-item']}), 12 | 'link': 'Menu item 2' 13 | }, 14 | { 15 | 'attributes': create_attribute({'class': ['menu-item']}), 16 | 'link': 'Menu item 3' 17 | }, 18 | ] %} 19 | {% endif %} 20 | 21 | {% 22 | include '@molecules/navigation/classy-menu/_classy-menu.html.twig' with { 23 | 'attributes': attributes, 24 | 'items': items 25 | } only 26 | %} 27 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/000000/orgchart.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-tasks/_classy-menu-local-tasks.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override to display primary and secondary local tasks. 5 | * 6 | * Available variables: 7 | * - primary: HTML list items representing primary tasks. 8 | * - secondary: HTML list items representing primary tasks. 9 | * 10 | * Each item in these variables (primary and secondary) can be individually 11 | * themed in menu-local-task.html.twig. 12 | * 13 | * @see templates/navigation/menu-local-tasks.html.twig 14 | */ 15 | #} 16 | {% if primary %} 17 |

{{ primary_tabs_title }}

18 |
    {{ primary }}
19 | {% endif %} 20 | {% if secondary %} 21 |

{{ secondary_tabs_title }}

22 |
    {{ secondary }}
23 | {% endif %} 24 | -------------------------------------------------------------------------------- /templates/form/form-element.html.twig: -------------------------------------------------------------------------------- 1 | {% 2 | set classes = [ 3 | 'js-form-item', 4 | 'form-item', 5 | 'js-form-type-' ~ type|clean_class, 6 | 'form-type-' ~ type|clean_class, 7 | 'js-form-item-' ~ name|clean_class, 8 | 'form-item-' ~ name|clean_class, 9 | title_display not in ['after', 'before'] ? 'form-no-label', 10 | disabled == 'disabled' ? 'form-disabled', 11 | errors ? 'form-item--error', 12 | ] 13 | %} 14 | {% 15 | set description_classes = [ 16 | 'description', 17 | description_display == 'invisible' ? 'visually-hidden', 18 | ] 19 | %} 20 | {% set attributes = attributes.addClass(classes) %} 21 | {% set description_attributes = description.attributes.addClass(description_classes) %} 22 | 23 | {% block template %} 24 | {% include '@molecules/form/classy-form-element/_classy-form-element.html.twig' %} 25 | {% endblock %} 26 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/views/classy-views-view-unformatted/_classy-views-view-unformatted.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override to display a view of unformatted rows. 5 | * 6 | * Available variables: 7 | * - title: The title of this group of rows. May be empty. 8 | * - rows: A list of the view's row items. 9 | * - attributes: The row's HTML attributes. 10 | * - content: The row's content. 11 | * - view: The view object. 12 | * - default_row_class: A flag indicating whether default classes should be 13 | * used on rows. 14 | * 15 | * @see template_preprocess_views_view_unformatted() 16 | * @see templates/views/views-view-unformatted.html.twig 17 | */ 18 | #} 19 | {% if title %} 20 |

{{ title }}

21 | {% endif %} 22 | {% for row in rows %} 23 | 24 | {{- row.content -}} 25 | 26 | {% endfor %} 27 | -------------------------------------------------------------------------------- /source/css/classy/components/menu.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for menu. 4 | */ 5 | 6 | ul.menu { 7 | list-style: none outside; 8 | margin-left: 1em; /* LTR */ 9 | padding: 0; 10 | text-align: left; /* LTR */ 11 | } 12 | [dir="rtl"] ul.menu { 13 | margin-left: 0; 14 | margin-right: 1em; 15 | text-align: right; 16 | } 17 | .menu-item--expanded { 18 | list-style-image: url(../../../images/stable/core/menu-expanded.png); 19 | list-style-type: circle; 20 | } 21 | .menu-item--collapsed { 22 | list-style-image: url(../../../images/stable/core/menu-collapsed.png); /* LTR */ 23 | list-style-type: disc; 24 | } 25 | [dir="rtl"] .menu-item--collapsed { 26 | list-style-image: url(../../../images/stable/core/menu-collapsed-rtl.png); 27 | } 28 | .menu-item { 29 | padding-top: 0.2em; 30 | margin: 0; 31 | } 32 | ul.menu a.is-active { 33 | color: #000; 34 | } 35 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/orgchart.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-menu-block/demo/classy-menu-block-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['block', 'block-menu', 'navigation']}) %} 3 | {% endif %} 4 | {% if title_attributes is not defined %} 5 | {% set title_attributes = create_attribute() %} 6 | {% endif %} 7 | {% if configuration is not defined %} 8 | {% set configuration = {'label': 'Menu block label'} %} 9 | {% endif %} 10 | {% if content is not defined %} 11 | {% set content = include('@molecules/navigation/classy-menu/demo/classy-menu-demo.twig', with_context = false) %} 12 | {% endif %} 13 | 14 | {% 15 | include '@organisms/block/classy-menu-block/_classy-menu-block.html.twig' with { 16 | 'attributes': attributes, 17 | 'title_attributes': title_attributes, 18 | 'configuration': configuration, 19 | 'content': content 20 | } only 21 | %} 22 | -------------------------------------------------------------------------------- /source/css/stable/system/system.diff.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Traditional split diff theming 3 | */ 4 | table.diff { 5 | border-spacing: 4px; 6 | margin-bottom: 20px; 7 | width: 100%; 8 | } 9 | table.diff .diff-context { 10 | background-color: #fafafa; 11 | } 12 | table.diff .diff-deletedline { 13 | background-color: #ffa; 14 | width: 50%; 15 | } 16 | table.diff .diff-addedline { 17 | background-color: #afa; 18 | width: 50%; 19 | } 20 | table.diff .diffchange { 21 | color: #f00; 22 | font-weight: bold; 23 | } 24 | table.diff .diff-marker { 25 | width: 1.4em; 26 | } 27 | table.diff th { 28 | padding-right: inherit; /* LTR */ 29 | } 30 | [dir="rtl"] table.diff th { 31 | padding-right: 0; 32 | padding-left: inherit; 33 | } 34 | table.diff td div { 35 | overflow: auto; 36 | padding: 0.1ex 0.5em; 37 | word-wrap: break-word; 38 | } 39 | table.diff td { 40 | padding: 0.1ex 0.4em; 41 | } 42 | -------------------------------------------------------------------------------- /source/css/stable/contextual/contextual.toolbar.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styling for contextual module's toolbar tab. 4 | */ 5 | 6 | /* Tab appearance. */ 7 | .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab { 8 | float: right; /* LTR */ 9 | } 10 | [dir="rtl"] .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab { 11 | float: left; 12 | } 13 | .toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item { 14 | margin: 0; 15 | } 16 | .toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item.is-active { 17 | background-image: -webkit-linear-gradient(rgb(78, 159, 234) 0%, rgb(69, 132, 221) 100%); 18 | background-image: linear-gradient(rgb(78, 159, 234) 0%, rgb(69, 132, 221) 100%); 19 | } 20 | 21 | /* @todo get rid of this declaration by making toolbar.module's CSS less specific */ 22 | .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab.hidden { 23 | display: none; 24 | } 25 | -------------------------------------------------------------------------------- /source/css/classy/components/book-navigation.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styling for the Book module. 4 | */ 5 | 6 | .book-navigation .menu { 7 | padding-bottom: 0; 8 | padding-top: 1em; 9 | } 10 | .book-navigation .book-pager { 11 | margin: 0; 12 | overflow: auto; 13 | padding: 0.5em 0; 14 | } 15 | .book-pager__item { 16 | display: inline-block; 17 | list-style-type: none; 18 | vertical-align: top; 19 | } 20 | .book-pager__item--previous { 21 | text-align: left; /* LTR */ 22 | width: 45%; 23 | } 24 | [dir="rtl"] .book-pager__item--previous { 25 | float: right; 26 | text-align: right; 27 | } 28 | .book-pager__item--center { 29 | text-align: center; 30 | width: 8%; 31 | } 32 | .book-pager__item--next { 33 | float: right; /* LTR */ 34 | text-align: right; /* LTR */ 35 | width: 45%; 36 | } 37 | [dir="rtl"] .book-pager__item--next { 38 | float: left; 39 | text-align: left; 40 | } 41 | -------------------------------------------------------------------------------- /source/css/stable/system/components/system-status-counter.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for the system status counter component. 4 | */ 5 | 6 | .system-status-counter__status-icon { 7 | display: inline-block; 8 | height: 25px; 9 | width: 25px; 10 | vertical-align: middle; 11 | } 12 | .system-status-counter__status-icon:before { 13 | content: ""; 14 | background-size: 20px; 15 | background-position: center 2px; 16 | background-repeat: no-repeat; 17 | display: block; 18 | } 19 | 20 | .system-status-counter__status-icon--error:before { 21 | background-image: url(../../../images/core/icons/e32700/error.svg); 22 | } 23 | .system-status-counter__status-icon--warning:before { 24 | background-image: url(../../../images/core/icons/e29700/warning.svg); 25 | } 26 | .system-status-counter__status-icon--checked:before { 27 | background-image: url(../../../images/core/icons/73b355/check.svg); 28 | } 29 | -------------------------------------------------------------------------------- /source/css/classy/components/dropbutton.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * General styles for dropbuttons. 4 | */ 5 | 6 | .js .dropbutton-widget { 7 | background-color: white; 8 | border: 1px solid #ccc; 9 | } 10 | .js .dropbutton-widget:hover { 11 | border-color: #b8b8b8; 12 | } 13 | .dropbutton .dropbutton-action > * { 14 | padding: 0.1em 0.5em; 15 | white-space: nowrap; 16 | } 17 | .dropbutton .secondary-action { 18 | border-top: 1px solid #e8e8e8; 19 | } 20 | .dropbutton-multiple .dropbutton { 21 | border-right: 1px solid #e8e8e8; /* LTR */ 22 | } 23 | [dir="rtl"] .dropbutton-multiple .dropbutton { 24 | border-left: 1px solid #e8e8e8; 25 | border-right: 0 none; 26 | } 27 | .dropbutton-multiple .dropbutton .dropbutton-action > * { 28 | margin-right: 0.25em; /* LTR */ 29 | } 30 | [dir="rtl"] .dropbutton-multiple .dropbutton .dropbutton-action > * { 31 | margin-left: 0.25em; 32 | margin-right: 0; 33 | } 34 | -------------------------------------------------------------------------------- /source/css/classy/components/inline-form.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for inline forms. 4 | */ 5 | 6 | .form--inline .form-item { 7 | float: left; /* LTR */ 8 | margin-right: 0.5em; /* LTR */ 9 | } 10 | [dir="rtl"] .form--inline .form-item { 11 | float: right; 12 | margin-right: 0; 13 | margin-left: 0.5em; 14 | } 15 | /* This is required to win over specificity of [dir="rtl"] .form--inline .form-item */ 16 | [dir="rtl"] .views-filterable-options-controls .form-item { 17 | margin-right: 2%; 18 | } 19 | .form--inline .form-item-separator { 20 | margin-top: 2.3em; 21 | margin-right: 1em; /* LTR */ 22 | margin-left: 0.5em; /* LTR */ 23 | } 24 | [dir="rtl"] .form--inline .form-item-separator { 25 | margin-right: 0.5em; 26 | margin-left: 1em; 27 | } 28 | .form--inline .form-actions { 29 | clear: left; /* LTR */ 30 | } 31 | [dir="rtl"] .form--inline .form-actions { 32 | clear: right; 33 | } 34 | -------------------------------------------------------------------------------- /source/css/stable/content_translation/content_translation.admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for the content language administration page. 4 | */ 5 | 6 | .language-content-settings-form .bundle { 7 | width: 24%; 8 | } 9 | .language-content-settings-form .field { 10 | padding-left: 3em; /* LTR */ 11 | width: 24%; 12 | } 13 | [dir="rtl"] .language-content-settings-form .field { 14 | padding-right: 3em; 15 | padding-left: 1em; 16 | } 17 | .language-content-settings-form .column { 18 | padding-left: 5em; /* LTR */ 19 | } 20 | [dir="rtl"] .language-content-settings-form .column { 21 | padding-right: 5em; 22 | padding-left: 1em; 23 | } 24 | .language-content-settings-form .field label, 25 | .language-content-settings-form .column label { 26 | font-weight: normal; 27 | } 28 | .language-content-settings-form .translatable { 29 | width: 1%; 30 | } 31 | .language-content-settings-form .operations { 32 | width: 75%; 33 | } 34 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/form/classy-container/_classy-container.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override of a container used to wrap child elements. 5 | * 6 | * Used for grouped form items. Can also be used as a theme wrapper for any 7 | * renderable element, to surround it with a
and HTML attributes. 8 | * See \Drupal\Core\Render\Element\RenderElement for more 9 | * information on the #theme_wrappers render array property, and 10 | * \Drupal\Core\Render\Element\container for usage of the container render 11 | * element. 12 | * 13 | * Available variables: 14 | * - attributes: HTML attributes for the containing element. 15 | * - children: The rendered child elements of the container. 16 | * - has_parent: A flag to indicate that the container has one or more parent 17 | containers. 18 | * 19 | * @see template_preprocess_container() 20 | * @see templates/form/container.html.twig 21 | */ 22 | #} 23 | {{ children }}
24 | -------------------------------------------------------------------------------- /source/css/stable/content_moderation/content_moderation.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Component styles for the content_moderation module. 4 | */ 5 | .entity-moderation-form { 6 | list-style: none; 7 | display: -webkit-flex; /* Safari */ 8 | display: flex; 9 | -webkit-flex-wrap: wrap; /* Safari */ 10 | flex-wrap: wrap; 11 | -webkit-align-items: flex-start; /* Safari */ 12 | align-items: flex-start; 13 | } 14 | 15 | .entity-moderation-form__item { 16 | margin-right: 2em; 17 | display: table; 18 | } 19 | 20 | .entity-moderation-form__item:last-child { 21 | -webkit-align-self: flex-end; /* Safari */ 22 | align-self: flex-end; 23 | margin-right: 0; 24 | } 25 | 26 | .entity-moderation-form .form-item { 27 | margin-top: 1em; 28 | margin-bottom: 1em; 29 | } 30 | 31 | .entity-moderation-form .form-item label { 32 | padding-bottom: 0.25em; 33 | display: table; 34 | } 35 | 36 | .entity-moderation-form input[type=submit] { 37 | margin-bottom: 1.2em; 38 | } 39 | -------------------------------------------------------------------------------- /source/_patterns/01-molecules/navigation/classy-menu-local-tasks/demo/classy-menu-local-tasks-secondary.twig: -------------------------------------------------------------------------------- 1 | {% set secondary_tabs_title = 'Secondary tabs' %} 2 | {% set secondary %} 3 | {% 4 | include '@molecules/navigation/classy-menu-local-task/demo/classy-menu-local-task-demo.twig' with { 5 | 'task_link': 'Secondary task 1' 6 | } only 7 | %} 8 | {% 9 | include '@molecules/navigation/classy-menu-local-task/demo/classy-menu-local-task-demo.twig' with { 10 | 'task_link': 'Secondary task 2' 11 | } only 12 | %} 13 | {% 14 | include '@molecules/navigation/classy-menu-local-task/demo/classy-menu-local-task-demo.twig' with { 15 | 'task_link': 'Secondary task 3' 16 | } only 17 | %} 18 | {% endset %} 19 | 20 | {% 21 | include '@molecules/navigation/classy-menu-local-tasks/demo/classy-menu-local-tasks-demo.twig' with { 22 | 'secondary_tabs_title': secondary_tabs_title, 23 | 'secondary': secondary 24 | } only 25 | %} 26 | -------------------------------------------------------------------------------- /source/css/classy/components/collapse-processed.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Visual styles for collapsible fieldsets. 4 | */ 5 | 6 | .collapse-processed > summary { 7 | padding-left: 0.5em; 8 | padding-right: 0.5em; 9 | } 10 | .collapse-processed > summary:before { 11 | background: url(../../../images/stable/core/menu-expanded.png) 0 100% no-repeat; /* LTR */ 12 | content: ""; 13 | float: left; /* LTR */ 14 | height: 1em; 15 | width: 1em; 16 | } 17 | [dir="rtl"] .collapse-processed > summary:before { 18 | background-position: 100% 100%; 19 | float: right; 20 | } 21 | .collapse-processed:not([open]) > summary:before { 22 | background-position: 25% 35%; /* LTR */ 23 | -ms-transform: rotate(-90deg); 24 | -webkit-transform: rotate(-90deg); 25 | transform: rotate(-90deg); 26 | } 27 | [dir="rtl"] .collapse-processed:not([open]) > summary:before { 28 | background-position: 75% 35%; 29 | -ms-transform: rotate(90deg); 30 | -webkit-transform: rotate(90deg); 31 | transform: rotate(90deg); 32 | } 33 | -------------------------------------------------------------------------------- /source/css/stable-theme.admin.css: -------------------------------------------------------------------------------- 1 | @import url(stable/block/block.admin.css); 2 | @import url(stable/ckeditor/ckeditor.admin.css); 3 | @import url(stable/color/color.admin.css); 4 | @import url(stable/config_translation/config_translation.admin.css); 5 | @import url(stable/content_translation/content_translation.admin.css); 6 | @import url(stable/field_ui/field_ui.admin.css); 7 | @import url(stable/file/file.admin.css); 8 | @import url(stable/filter/filter.admin.css); 9 | @import url(stable/image/image.admin.css); 10 | @import url(stable/language/language.admin.css); 11 | @import url(stable/locale/locale.admin.css); 12 | @import url(stable/menu_ui/menu_ui.admin.css); 13 | @import url(stable/node/node.admin.css); 14 | @import url(stable/system/system.admin.css); 15 | @import url(stable/update/update.admin.theme.css); 16 | @import url(stable/user/user.admin.css); 17 | @import url(stable/user/user.icons.admin.css); 18 | @import url(stable/views_ui/views_ui.admin.css); 19 | @import url(stable/views_ui/views_ui.admin.theme.css); 20 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/787878/cog.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/images/stable/core/icons/bebebe/cog.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/_patterns/00-atoms/form/classy-select/_classy-select.html.twig: -------------------------------------------------------------------------------- 1 | {# 2 | /** 3 | * @file 4 | * Theme override for a select element. 5 | * 6 | * Available variables: 7 | * - attributes: HTML attributes for the 28 | {% endspaceless %} 29 | -------------------------------------------------------------------------------- /source/css/classy/components/action-links.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * Styles for link buttons and action links. 4 | */ 5 | 6 | .action-links { 7 | list-style: none; 8 | padding: 0; 9 | margin: 1em 0; 10 | } 11 | [dir="rtl"] .action-links { 12 | /* This is required to win over specificity of [dir="rtl"] ul */ 13 | margin-right: 0; 14 | } 15 | .action-links li { 16 | display: inline-block; 17 | margin: 0 0.3em; 18 | } 19 | .action-links li:first-child { 20 | margin-left: 0; /* LTR */ 21 | } 22 | [dir="rtl"] .action-links li:first-child { 23 | margin-left: 0.3em; 24 | margin-right: 0; 25 | } 26 | .button-action { 27 | display: inline-block; 28 | line-height: 160%; 29 | padding: 0.2em 0.5em 0.3em; 30 | text-decoration: none; 31 | } 32 | .button-action:before { 33 | content: "+"; 34 | font-weight: 900; 35 | margin-left: -0.1em; /* LTR */ 36 | padding-right: 0.2em; /* LTR */ 37 | } 38 | [dir="rtl"] .button-action:before { 39 | margin-left: 0; 40 | margin-right: -0.1em; 41 | padding-left: 0.2em; 42 | padding-right: 0; 43 | } 44 | -------------------------------------------------------------------------------- /source/_patterns/02-organisms/block/classy-block/demo/classy-block-demo.twig: -------------------------------------------------------------------------------- 1 | {% if attributes is not defined %} 2 | {% set attributes = create_attribute({'class': ['block']}) %} 3 | {% endif %} 4 | {% if title_prefix is not defined %} 5 | {% set title_prefix = '' %} 6 | {% endif %} 7 | {% if title_attributes is not defined %} 8 | {% set title_attributes = create_attribute() %} 9 | {% endif %} 10 | {% if label is not defined %} 11 | {% set label = 'Block title' %} 12 | {% endif %} 13 | {% if title_suffix is not defined %} 14 | {% set title_suffix = '' %} 15 | {% endif %} 16 | {% if content is not defined %} 17 | {% set content = include('@atoms/content/paragraph.twig', with_context = false) %} 18 | {% endif %} 19 | 20 | {% 21 | include '@organisms/block/classy-block/_classy-block.html.twig' with { 22 | 'attributes': attributes, 23 | 'class': class, 24 | 'title_prefix': title_prefix, 25 | 'title_attributes': title_attributes, 26 | 'label': label, 27 | 'title_suffix': title_suffix, 28 | 'content': content 29 | } only 30 | %} 31 | --------------------------------------------------------------------------------