summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwebchick2018-01-19 00:51:57 (GMT)
committerwebchick2018-01-19 00:51:57 (GMT)
commitaead8ca4089e716c70cd95c9e3460e683e524774 (patch)
treea01c749da3bd881f64d5e507b7644e0614e16ceb
parent47c2dda6d141de838c7cc218d69a91840f0e7b9e (diff)
Issue #2809635 by markconroy, navneet0693, alexpott, smaz, larowlan, Eli-T, webchick, yoroy, ikit-claw, budda, kjay, timmillwood, tkoleary, Gábor Hojtsy, andrewmacpherson, lauriii, JayKandari, jibran, ok_lyndsey, big_man, ckrina, nathancz, Paul_Gregory, vijaycs85, SharJay, tomphippen, tim.plunkett, Tarun Lewis, cehfisher, kreynen, Petr Illek, mariohernandez, thamas, thatdamnqa, John Cook, philipnorton42, h2cm, kattekrab, martin_q, waako: Create experimental installation profile
-rw-r--r--core/modules/system/src/Tests/Installer/SingleVisibleProfileTest.php31
-rw-r--r--core/profiles/demo_umami/config/install/block.block.breadcrumbs.yml24
-rw-r--r--core/profiles/demo_umami/config/install/block.block.help.yml20
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_breadcrumbs.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_content.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_help.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_local_actions.yml17
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_login.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_messages.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_page_title.yml17
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_primary_local_tasks.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.seven_secondary_local_tasks.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_account_menu.yml23
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_branding.yml22
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_content.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_footer.yml23
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_local_tasks.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_main_menu.yml23
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_messages.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_page_title.yml17
-rw-r--r--core/profiles/demo_umami/config/install/block.block.umami_search.yml19
-rw-r--r--core/profiles/demo_umami/config/install/block.block.views_block__articles_aside_block_1.yml31
-rw-r--r--core/profiles/demo_umami/config/install/block.block.views_block__promoted_items_block_1.yml29
-rw-r--r--core/profiles/demo_umami/config/install/block_content.type.banner_block.yml7
-rw-r--r--core/profiles/demo_umami/config/install/block_content.type.basic.yml7
-rw-r--r--core/profiles/demo_umami/config/install/contact.form.feedback.yml11
-rw-r--r--core/profiles/demo_umami/config/install/core.base_field_override.node.page.promote.yml21
-rw-r--r--core/profiles/demo_umami/config/install/core.base_field_override.node.recipe.title.yml17
-rw-r--r--core/profiles/demo_umami/config/install/core.date_format.umami_dates.yml7
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_form_display.block_content.banner_block.default.yml59
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_form_display.block_content.basic.default.yml31
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_form_display.contact_message.feedback.default.yml43
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_form_display.node.article.default.yml92
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_form_display.node.page.default.yml74
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_form_display.node.recipe.default.yml163
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_form_display.user.user.default.yml35
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.block_content.banner_block.default.yml55
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.block_content.basic.default.yml21
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.default.yml48
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.full.yml49
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_bottom.yml31
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_medium.yml31
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_small.yml31
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_top.yml31
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.rss.yml23
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.article.teaser.yml50
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.page.default.yml25
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.page.teaser.yml27
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.default.yml115
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.full.yml116
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_bottom.yml47
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_medium.yml58
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_small.yml58
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_top.yml47
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.teaser.yml39
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.user.user.compact.yml26
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_display.user.user.default.yml27
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_bottom.yml9
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_medium.yml9
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_small.yml9
-rw-r--r--core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_top.yml9
-rw-r--r--core/profiles/demo_umami/config/install/editor.editor.basic_html.yml52
-rw-r--r--core/profiles/demo_umami/config/install/editor.editor.full_html.yml60
-rw-r--r--core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_banner_image.yml37
-rw-r--r--core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_content_link.yml22
-rw-r--r--core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_summary.yml18
-rw-r--r--core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_title.yml18
-rw-r--r--core/profiles/demo_umami/config/install/field.field.block_content.basic.body.yml21
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.article.body.yml21
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.article.field_image.yml37
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml26
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.page.body.yml21
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_author.yml27
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_cooking_time.yml22
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_difficulty.yml22
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_image.yml37
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml18
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_number_of_servings.yml22
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_preparation_time.yml22
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_category.yml28
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml20
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml20
-rw-r--r--core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml28
-rw-r--r--core/profiles/demo_umami/config/install/field.field.user.user.user_picture.yml37
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.block_content.field_banner_image.yml29
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.block_content.field_content_link.yml18
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.block_content.field_summary.yml18
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.block_content.field_title.yml20
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_author.yml19
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_cooking_time.yml19
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_difficulty.yml29
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_image.yml31
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_ingredients.yml20
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_number_of_servings.yml19
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_preparation_time.yml19
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_recipe_category.yml19
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_recipe_instruction.yml18
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_summary.yml18
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.node.field_tags.yml19
-rw-r--r--core/profiles/demo_umami/config/install/field.storage.user.user_picture.yml31
-rw-r--r--core/profiles/demo_umami/config/install/filter.format.basic_html.yml50
-rw-r--r--core/profiles/demo_umami/config/install/filter.format.full_html.yml35
-rw-r--r--core/profiles/demo_umami/config/install/filter.format.restricted_html.yml31
-rw-r--r--core/profiles/demo_umami/config/install/image.style.large_21_9.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.large_21_9_2x.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.large_3_2_2x.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.large_3_2_768x512.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.medium_21_9.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.medium_3_2_2x.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.medium_3_2_600x400.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.scale_crop_7_3_large.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.small_21_9.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.square_large.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.square_medium.yml13
-rw-r--r--core/profiles/demo_umami/config/install/image.style.square_small.yml13
-rw-r--r--core/profiles/demo_umami/config/install/node.type.article.yml10
-rw-r--r--core/profiles/demo_umami/config/install/node.type.page.yml10
-rw-r--r--core/profiles/demo_umami/config/install/node.type.recipe.yml16
-rw-r--r--core/profiles/demo_umami/config/install/rdf.mapping.node.article.yml38
-rw-r--r--core/profiles/demo_umami/config/install/rdf.mapping.node.page.yml33
-rw-r--r--core/profiles/demo_umami/config/install/rdf.mapping.taxonomy_term.tags.yml19
-rw-r--r--core/profiles/demo_umami/config/install/responsive_image.styles.3_2_image.yml24
-rw-r--r--core/profiles/demo_umami/config/install/responsive_image.styles.hero_or_banner.yml24
-rw-r--r--core/profiles/demo_umami/config/install/responsive_image.styles.square.yml22
-rw-r--r--core/profiles/demo_umami/config/install/system.theme.yml2
-rw-r--r--core/profiles/demo_umami/config/install/taxonomy.vocabulary.ingredients.yml8
-rw-r--r--core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_category.yml8
-rw-r--r--core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_cuisine.yml8
-rw-r--r--core/profiles/demo_umami/config/install/taxonomy.vocabulary.tags.yml8
-rw-r--r--core/profiles/demo_umami/config/install/user.role.administrator.yml8
-rw-r--r--core/profiles/demo_umami/config/install/views.view.articles_aside.yml215
-rw-r--r--core/profiles/demo_umami/config/install/views.view.featured_articles.yml203
-rw-r--r--core/profiles/demo_umami/config/install/views.view.frontpage.yml343
-rw-r--r--core/profiles/demo_umami/config/install/views.view.promoted_items.yml481
-rw-r--r--core/profiles/demo_umami/config/install/views.view.recipes.yml203
-rw-r--r--core/profiles/demo_umami/config/install/views.view.taxonomy_term.yml314
-rw-r--r--core/profiles/demo_umami/config/optional/block.block.umami_banner_recipes.yml33
-rw-r--r--core/profiles/demo_umami/config/optional/block.block.umami_disclaimer.yml25
-rw-r--r--core/profiles/demo_umami/config/optional/block.block.umami_footer_promo.yml23
-rw-r--r--core/profiles/demo_umami/config/optional/image.style.max_1300x1300.yml17
-rw-r--r--core/profiles/demo_umami/config/optional/image.style.max_2600x2600.yml17
-rw-r--r--core/profiles/demo_umami/config/optional/image.style.max_325x325.yml17
-rw-r--r--core/profiles/demo_umami/config/optional/image.style.max_650x650.yml17
-rw-r--r--core/profiles/demo_umami/config/optional/responsive_image.styles.narrow.yml22
-rw-r--r--core/profiles/demo_umami/config/optional/responsive_image.styles.wide.yml24
-rw-r--r--core/profiles/demo_umami/config/schema/demo_umami.schema.yml31
-rw-r--r--core/profiles/demo_umami/css/toolbar-warning.css32
-rw-r--r--core/profiles/demo_umami/demo_umami.info.yml44
-rw-r--r--core/profiles/demo_umami/demo_umami.install106
-rw-r--r--core/profiles/demo_umami/demo_umami.libraries.yml4
-rw-r--r--core/profiles/demo_umami/demo_umami.links.menu.yml4
-rw-r--r--core/profiles/demo_umami/demo_umami.profile51
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt23
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/articles.csv91
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/chocolate-brownie-umami.jpgbin0 -> 196421 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/heritage-carrots.jpgbin0 -> 191957 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/home-grown-herbs.jpgbin0 -> 205458 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mediterranean-quiche-umami.jpgbin0 -> 190227 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mushrooms-umami.jpgbin0 -> 210552 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pineapple-placeholder-10.jpgbin0 -> 175371 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pizza-umami.jpgbin0 -> 186969 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/supermarket-savvy-umami.jpgbin0 -> 192283 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/thai-green-curry-umami.jpgbin0 -> 172183 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-hero-umami.jpgbin0 -> 225830 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-umami.jpgbin0 -> 163349 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/victoria-sponge-umami.jpgbin0 -> 159996 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/images/watercress-soup-umami.jpgbin0 -> 182109 bytes
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/pages.csv2
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv8
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.info.yml15
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.install26
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php451
-rw-r--r--core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php112
-rw-r--r--core/profiles/demo_umami/src/Plugin/Block/UmamiDisclaimer.php88
-rw-r--r--core/profiles/demo_umami/src/Plugin/Block/UmamiFooterPromo.php104
-rw-r--r--core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php113
-rw-r--r--core/profiles/demo_umami/themes/umami/css/base.css225
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/articles-aside/articles-aside.css12
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/banner/banner.css82
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/branding/branding.css34
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/footer-promo/footer-promo.css54
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/page-title/page-title.css17
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/quicklinks/quicklinks.css83
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/search/search-results.css108
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/blocks/search/search.css106
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content-types/article/article.css25
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content-types/recipe/recipe.css227
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content/full/node-full.css72
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content/highlighted-bottom/highlighted-bottom.css51
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content/highlighted-medium/highlighted-medium.css59
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content/highlighted-small/highlighted-small.css59
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content/highlighted-top/highlighted-top.css80
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/content/node.css9
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/fields/label-items.css24
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/forms/buttons.css27
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/forms/contact.css46
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/messages/messages.css56
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/navigation/breadcrumbs/breadcrumbs.css14
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/navigation/menu-account/menu-account.css35
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/navigation/menu-footer/menu-footer.css41
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/navigation/menu-main/menu-main.css124
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/navigation/more-link/more-link.css32
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css22
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css35
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/regions/bottom/bottom.css42
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/regions/footer/footer.css27
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/regions/header/header.css32
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/views/frontpage.css23
-rw-r--r--core/profiles/demo_umami/themes/umami/css/components/views/promoted-items.css116
-rw-r--r--core/profiles/demo_umami/themes/umami/css/layout/grid-2.css34
-rw-r--r--core/profiles/demo_umami/themes/umami/css/layout/grid-3.css40
-rw-r--r--core/profiles/demo_umami/themes/umami/css/layout/grid-4.css41
-rw-r--r--core/profiles/demo_umami/themes/umami/css/layout/layout-2-col.css19
-rw-r--r--core/profiles/demo_umami/themes/umami/css/layout/layout.css12
-rw-r--r--core/profiles/demo_umami/themes/umami/images/png/umami-bundle.pngbin0 -> 30490 bytes
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/cake.svg1
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/chefs-hat.svg1
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/difficulty.svg9
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/health.svg1
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/knife.svg9
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/learn-to-cook.svg1
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/menu-icon.svg1
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/pointer--white.svg1
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/pointer.svg1
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/search.svg12
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/serves.svg9
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/spoon.svg9
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/timer.svg11
-rw-r--r--core/profiles/demo_umami/themes/umami/images/svg/whisk.svg10
-rw-r--r--core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.es6.js17
-rw-r--r--core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.js19
-rw-r--r--core/profiles/demo_umami/themes/umami/logo.svg17
-rw-r--r--core/profiles/demo_umami/themes/umami/screenshot.pngbin0 -> 396145 bytes
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig52
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/branding/block--system-branding-block.html.twig30
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/footer/block--umami-footer-promo.html.twig8
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/messages/status-messages.html.twig57
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/navigation/block--system-menu-block--footer.html.twig25
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig61
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/navigation/breadcrumb.html.twig30
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/navigation/menu--main.html.twig85
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/navigation/menu-local-task.html.twig17
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/navigation/menu.html.twig85
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/quicklinks/block--umami-quick-links.html.twig11
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig52
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/components/search/input--search.html.twig18
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/content/node--article--full.html.twig102
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-bottom.html.twig107
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-medium.html.twig105
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-small.html.twig105
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-top.html.twig107
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/content/node--recipe--full.html.twig133
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/content/node.html.twig118
-rw-r--r--core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig132
-rw-r--r--core/profiles/demo_umami/themes/umami/umami.breakpoints.yml21
-rw-r--r--core/profiles/demo_umami/themes/umami/umami.info.yml27
-rw-r--r--core/profiles/demo_umami/themes/umami/umami.libraries.yml91
-rw-r--r--core/profiles/demo_umami/themes/umami/umami.theme83
-rw-r--r--core/tests/Drupal/KernelTests/Core/Asset/ResolvedLibraryDefinitionsFilesMatchTest.php4
259 files changed, 10717 insertions, 18 deletions
diff --git a/core/modules/system/src/Tests/Installer/SingleVisibleProfileTest.php b/core/modules/system/src/Tests/Installer/SingleVisibleProfileTest.php
index 91af34a..3e93a0b 100644
--- a/core/modules/system/src/Tests/Installer/SingleVisibleProfileTest.php
+++ b/core/modules/system/src/Tests/Installer/SingleVisibleProfileTest.php
@@ -21,25 +21,20 @@ class SingleVisibleProfileTest extends InstallerTestBase {
*/
protected $profile = NULL;
- /**
- * The install profile info.
- *
- * @var array
- */
- protected $info;
-
protected function setUp() {
- $this->info = [
- 'type' => 'profile',
- 'core' => \Drupal::CORE_COMPATIBILITY,
- 'name' => 'Override standard',
- 'hidden' => TRUE,
- ];
- // File API functions are not available yet.
- $path = $this->siteDirectory . '/profiles/standard';
- mkdir($path, 0777, TRUE);
- file_put_contents("$path/standard.info.yml", Yaml::encode($this->info));
-
+ $profiles = ['standard', 'demo_umami'];
+ foreach ($profiles as $profile) {
+ $info = [
+ 'type' => 'profile',
+ 'core' => \Drupal::CORE_COMPATIBILITY,
+ 'name' => 'Override ' . $profile,
+ 'hidden' => TRUE,
+ ];
+ // File API functions are not available yet.
+ $path = $this->siteDirectory . '/profiles/' . $profile;
+ mkdir($path, 0777, TRUE);
+ file_put_contents("$path/$profile.info.yml", Yaml::encode($info));
+ }
parent::setUp();
}
diff --git a/core/profiles/demo_umami/config/install/block.block.breadcrumbs.yml b/core/profiles/demo_umami/config/install/block.block.breadcrumbs.yml
new file mode 100644
index 0000000..21b2bbf
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.breadcrumbs.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - system
+ theme:
+ - umami
+id: breadcrumbs
+theme: umami
+region: breadcrumbs
+weight: 0
+provider: null
+plugin: system_breadcrumb_block
+settings:
+ id: system_breadcrumb_block
+ label: Breadcrumbs
+ provider: system
+ label_display: '0'
+visibility:
+ request_path:
+ id: request_path
+ pages: '<front>'
+ negate: true
+ context_mapping: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.help.yml b/core/profiles/demo_umami/config/install/block.block.help.yml
new file mode 100644
index 0000000..52a215b
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.help.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - help
+ theme:
+ - umami
+id: help
+theme: umami
+region: highlighted
+weight: 0
+provider: null
+plugin: help_block
+settings:
+ id: help_block
+ label: Help
+ provider: help
+ label_display: '0'
+visibility: { }
+
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_breadcrumbs.yml b/core/profiles/demo_umami/config/install/block.block.seven_breadcrumbs.yml
new file mode 100644
index 0000000..edbdfbd
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_breadcrumbs.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - system
+ theme:
+ - seven
+id: seven_breadcrumbs
+theme: seven
+region: breadcrumb
+weight: 0
+provider: null
+plugin: system_breadcrumb_block
+settings:
+ id: system_breadcrumb_block
+ label: Breadcrumbs
+ provider: system
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_content.yml b/core/profiles/demo_umami/config/install/block.block.seven_content.yml
new file mode 100644
index 0000000..d92214c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_content.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - system
+ theme:
+ - seven
+id: seven_content
+theme: seven
+region: content
+weight: 0
+provider: null
+plugin: system_main_block
+settings:
+ id: system_main_block
+ label: 'Main page content'
+ provider: system
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_help.yml b/core/profiles/demo_umami/config/install/block.block.seven_help.yml
new file mode 100644
index 0000000..9a4e218
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_help.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - help
+ theme:
+ - seven
+id: seven_help
+theme: seven
+region: help
+weight: 0
+provider: null
+plugin: help_block
+settings:
+ id: help_block
+ label: Help
+ provider: help
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_local_actions.yml b/core/profiles/demo_umami/config/install/block.block.seven_local_actions.yml
new file mode 100644
index 0000000..61cdb17
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_local_actions.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ theme:
+ - seven
+id: seven_local_actions
+theme: seven
+region: content
+weight: -10
+provider: null
+plugin: local_actions_block
+settings:
+ id: local_actions_block
+ label: 'Primary admin actions'
+ provider: core
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_login.yml b/core/profiles/demo_umami/config/install/block.block.seven_login.yml
new file mode 100644
index 0000000..110e8fd
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_login.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - user
+ theme:
+ - seven
+id: seven_login
+theme: seven
+region: content
+weight: 10
+provider: null
+plugin: user_login_block
+settings:
+ id: user_login_block
+ label: 'User login'
+ provider: user
+ label_display: visible
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_messages.yml b/core/profiles/demo_umami/config/install/block.block.seven_messages.yml
new file mode 100644
index 0000000..f7b6038
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_messages.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - system
+ theme:
+ - seven
+id: seven_messages
+theme: seven
+region: highlighted
+weight: 0
+provider: null
+plugin: system_messages_block
+settings:
+ id: system_messages_block
+ label: 'Status messages'
+ provider: system
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_page_title.yml b/core/profiles/demo_umami/config/install/block.block.seven_page_title.yml
new file mode 100644
index 0000000..56df293
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_page_title.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ theme:
+ - seven
+id: seven_page_title
+theme: seven
+region: header
+weight: -30
+provider: null
+plugin: page_title_block
+settings:
+ id: page_title_block
+ label: 'Page title'
+ provider: core
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_primary_local_tasks.yml b/core/profiles/demo_umami/config/install/block.block.seven_primary_local_tasks.yml
new file mode 100644
index 0000000..d0017c2
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_primary_local_tasks.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ theme:
+ - seven
+id: seven_primary_local_tasks
+theme: seven
+region: header
+weight: 0
+provider: null
+plugin: local_tasks_block
+settings:
+ id: local_tasks_block
+ label: 'Primary tabs'
+ provider: core
+ label_display: '0'
+ primary: true
+ secondary: false
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.seven_secondary_local_tasks.yml b/core/profiles/demo_umami/config/install/block.block.seven_secondary_local_tasks.yml
new file mode 100644
index 0000000..3339199
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.seven_secondary_local_tasks.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ theme:
+ - seven
+id: seven_secondary_local_tasks
+theme: seven
+region: pre_content
+weight: 0
+provider: null
+plugin: local_tasks_block
+settings:
+ id: local_tasks_block
+ label: 'Secondary tabs'
+ provider: core
+ label_display: '0'
+ primary: false
+ secondary: true
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_account_menu.yml b/core/profiles/demo_umami/config/install/block.block.umami_account_menu.yml
new file mode 100644
index 0000000..a63f812
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_account_menu.yml
@@ -0,0 +1,23 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - system.menu.account
+ module:
+ - system
+ theme:
+ - umami
+id: umami_account_menu
+theme: umami
+region: header
+weight: -4
+provider: null
+plugin: 'system_menu_block:account'
+settings:
+ id: 'system_menu_block:account'
+ label: 'User account menu'
+ provider: system
+ label_display: '0'
+ level: 1
+ depth: 1
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_branding.yml b/core/profiles/demo_umami/config/install/block.block.umami_branding.yml
new file mode 100644
index 0000000..a6af6e4
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_branding.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - system
+ theme:
+ - umami
+id: umami_branding
+theme: umami
+region: header
+weight: -8
+provider: null
+plugin: system_branding_block
+settings:
+ id: system_branding_block
+ label: 'Site branding'
+ provider: system
+ label_display: '0'
+ use_site_logo: true
+ use_site_name: true
+ use_site_slogan: true
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_content.yml b/core/profiles/demo_umami/config/install/block.block.umami_content.yml
new file mode 100644
index 0000000..ac2245f
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_content.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - system
+ theme:
+ - umami
+id: umami_content
+theme: umami
+region: content
+weight: -7
+provider: null
+plugin: system_main_block
+settings:
+ id: system_main_block
+ label: 'Main page content'
+ provider: system
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_footer.yml b/core/profiles/demo_umami/config/install/block.block.umami_footer.yml
new file mode 100644
index 0000000..9c64b3d
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_footer.yml
@@ -0,0 +1,23 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - system.menu.footer
+ module:
+ - system
+ theme:
+ - umami
+id: umami_footer
+theme: umami
+region: footer
+weight: 0
+provider: null
+plugin: 'system_menu_block:footer'
+settings:
+ id: 'system_menu_block:footer'
+ label: 'Tell us what you think'
+ provider: system
+ label_display: '1'
+ level: 1
+ depth: 0
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_local_tasks.yml b/core/profiles/demo_umami/config/install/block.block.umami_local_tasks.yml
new file mode 100644
index 0000000..031d5d7
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_local_tasks.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ theme:
+ - umami
+id: umami_local_tasks
+theme: umami
+region: tabs
+weight: -7
+provider: null
+plugin: local_tasks_block
+settings:
+ id: local_tasks_block
+ label: Tabs
+ provider: core
+ label_display: '0'
+ primary: true
+ secondary: true
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_main_menu.yml b/core/profiles/demo_umami/config/install/block.block.umami_main_menu.yml
new file mode 100644
index 0000000..4788ddd
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_main_menu.yml
@@ -0,0 +1,23 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - system.menu.main
+ module:
+ - system
+ theme:
+ - umami
+id: umami_main_menu
+theme: umami
+region: header
+weight: -8
+provider: null
+plugin: 'system_menu_block:main'
+settings:
+ id: 'system_menu_block:main'
+ label: 'Main navigation'
+ provider: system
+ label_display: '0'
+ level: 1
+ depth: 1
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_messages.yml b/core/profiles/demo_umami/config/install/block.block.umami_messages.yml
new file mode 100644
index 0000000..a802e7d
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_messages.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - system
+ theme:
+ - umami
+id: umami_messages
+theme: umami
+region: highlighted
+weight: -8
+provider: null
+plugin: system_messages_block
+settings:
+ id: system_messages_block
+ label: 'Status messages'
+ provider: system
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_page_title.yml b/core/profiles/demo_umami/config/install/block.block.umami_page_title.yml
new file mode 100644
index 0000000..174a592
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_page_title.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ theme:
+ - umami
+id: umami_page_title
+theme: umami
+region: page_title
+weight: -7
+provider: null
+plugin: page_title_block
+settings:
+ id: page_title_block
+ label: 'Page title'
+ provider: core
+ label_display: '0'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.umami_search.yml b/core/profiles/demo_umami/config/install/block.block.umami_search.yml
new file mode 100644
index 0000000..f86e71c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.umami_search.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - search
+ theme:
+ - umami
+id: umami_search
+theme: umami
+region: header
+weight: -6
+provider: null
+plugin: search_form_block
+settings:
+ id: search_form_block
+ label: Search
+ provider: search
+ label_display: visible
+visibility: { }
diff --git a/core/profiles/demo_umami/config/install/block.block.views_block__articles_aside_block_1.yml b/core/profiles/demo_umami/config/install/block.block.views_block__articles_aside_block_1.yml
new file mode 100644
index 0000000..b6c1cfd
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.views_block__articles_aside_block_1.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - views.view.articles_aside
+ module:
+ - node
+ - views
+ theme:
+ - umami
+id: views_block__articles_aside_block_1
+theme: umami
+region: sidebar
+weight: -7
+provider: null
+plugin: 'views_block:articles_aside-block_1'
+settings:
+ id: 'views_block:articles_aside-block_1'
+ label: ''
+ provider: views
+ label_display: visible
+ views_label: ''
+ items_per_page: none
+visibility:
+ node_type:
+ id: node_type
+ bundles:
+ article: article
+ negate: false
+ context_mapping:
+ node: '@node.node_route_context:node'
diff --git a/core/profiles/demo_umami/config/install/block.block.views_block__promoted_items_block_1.yml b/core/profiles/demo_umami/config/install/block.block.views_block__promoted_items_block_1.yml
new file mode 100644
index 0000000..0a83b19
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block.block.views_block__promoted_items_block_1.yml
@@ -0,0 +1,29 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - views.view.promoted_items
+ module:
+ - system
+ - views
+ theme:
+ - umami
+id: views_block__promoted_items_block_1
+theme: umami
+region: banner_top
+weight: -6
+provider: null
+plugin: 'views_block:promoted_items-block_1'
+settings:
+ id: 'views_block:promoted_items-block_1'
+ label: ''
+ provider: views
+ label_display: '0'
+ views_label: ''
+ items_per_page: none
+visibility:
+ request_path:
+ id: request_path
+ pages: '<front>'
+ negate: false
+ context_mapping: { }
diff --git a/core/profiles/demo_umami/config/install/block_content.type.banner_block.yml b/core/profiles/demo_umami/config/install/block_content.type.banner_block.yml
new file mode 100644
index 0000000..e48b05b
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block_content.type.banner_block.yml
@@ -0,0 +1,7 @@
+langcode: en
+status: true
+dependencies: { }
+id: banner_block
+label: 'Banner block'
+revision: 0
+description: 'A banner block contains a title, summary, link to content and a background image. The background image is scaled to fill the browser''s width.'
diff --git a/core/profiles/demo_umami/config/install/block_content.type.basic.yml b/core/profiles/demo_umami/config/install/block_content.type.basic.yml
new file mode 100644
index 0000000..f01ced9
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/block_content.type.basic.yml
@@ -0,0 +1,7 @@
+langcode: en
+status: true
+dependencies: { }
+id: basic
+label: 'Basic block'
+revision: 0
+description: 'A basic block contains a title and a body.'
diff --git a/core/profiles/demo_umami/config/install/contact.form.feedback.yml b/core/profiles/demo_umami/config/install/contact.form.feedback.yml
new file mode 100644
index 0000000..e222ecd
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/contact.form.feedback.yml
@@ -0,0 +1,11 @@
+langcode: en
+status: true
+dependencies: { }
+id: feedback
+label: 'Website feedback'
+recipients:
+ - admin@example.com
+reply: ''
+weight: 0
+message: 'Your message has been sent.'
+redirect: ''
diff --git a/core/profiles/demo_umami/config/install/core.base_field_override.node.page.promote.yml b/core/profiles/demo_umami/config/install/core.base_field_override.node.page.promote.yml
new file mode 100644
index 0000000..27226a1
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.base_field_override.node.page.promote.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - node.type.page
+id: node.page.promote
+field_name: promote
+entity_type: node
+bundle: page
+label: 'Promoted to front page'
+description: ''
+required: false
+translatable: false
+default_value:
+ -
+ value: 0
+default_value_callback: ''
+settings:
+ on_label: 'On'
+ off_label: 'Off'
+field_type: boolean
diff --git a/core/profiles/demo_umami/config/install/core.base_field_override.node.recipe.title.yml b/core/profiles/demo_umami/config/install/core.base_field_override.node.recipe.title.yml
new file mode 100644
index 0000000..1739927
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.base_field_override.node.recipe.title.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - node.type.recipe
+id: node.recipe.title
+field_name: title
+entity_type: node
+bundle: recipe
+label: 'Recipe Name'
+description: ''
+required: true
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/core/profiles/demo_umami/config/install/core.date_format.umami_dates.yml b/core/profiles/demo_umami/config/install/core.date_format.umami_dates.yml
new file mode 100644
index 0000000..10537db
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.date_format.umami_dates.yml
@@ -0,0 +1,7 @@
+langcode: en
+status: true
+dependencies: { }
+id: umami_dates
+label: 'Umami dates'
+locked: false
+pattern: 'jS F Y'
diff --git a/core/profiles/demo_umami/config/install/core.entity_form_display.block_content.banner_block.default.yml b/core/profiles/demo_umami/config/install/core.entity_form_display.block_content.banner_block.default.yml
new file mode 100644
index 0000000..5dd5dd5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_form_display.block_content.banner_block.default.yml
@@ -0,0 +1,59 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.banner_block
+ - field.field.block_content.banner_block.field_banner_image
+ - field.field.block_content.banner_block.field_content_link
+ - field.field.block_content.banner_block.field_summary
+ - field.field.block_content.banner_block.field_title
+ - image.style.thumbnail
+ module:
+ - image
+ - link
+id: block_content.banner_block.default
+targetEntityType: block_content
+bundle: banner_block
+mode: default
+content:
+ field_banner_image:
+ weight: 4
+ settings:
+ progress_indicator: throbber
+ preview_image_style: thumbnail
+ third_party_settings: { }
+ type: image_image
+ region: content
+ field_content_link:
+ weight: 3
+ settings:
+ placeholder_url: ''
+ placeholder_title: ''
+ third_party_settings: { }
+ type: link_default
+ region: content
+ field_summary:
+ weight: 2
+ settings:
+ rows: 5
+ placeholder: ''
+ third_party_settings: { }
+ type: string_textarea
+ region: content
+ field_title:
+ weight: 1
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ type: string_textfield
+ region: content
+ info:
+ type: string_textfield
+ weight: 0
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_form_display.block_content.basic.default.yml b/core/profiles/demo_umami/config/install/core.entity_form_display.block_content.basic.default.yml
new file mode 100644
index 0000000..7ccb5b0
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_form_display.block_content.basic.default.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.basic
+ - field.field.block_content.basic.body
+ module:
+ - text
+id: block_content.basic.default
+targetEntityType: block_content
+bundle: basic
+mode: default
+content:
+ body:
+ type: text_textarea_with_summary
+ weight: -4
+ region: content
+ settings:
+ rows: 9
+ summary_rows: 3
+ placeholder: ''
+ third_party_settings: { }
+ info:
+ type: string_textfield
+ weight: -5
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_form_display.contact_message.feedback.default.yml b/core/profiles/demo_umami/config/install/core.entity_form_display.contact_message.feedback.default.yml
new file mode 100644
index 0000000..ea0722f
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_form_display.contact_message.feedback.default.yml
@@ -0,0 +1,43 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - contact.form.feedback
+id: contact_message.feedback.default
+targetEntityType: contact_message
+bundle: feedback
+mode: default
+content:
+ copy:
+ weight: 4
+ region: content
+ settings: { }
+ third_party_settings: { }
+ mail:
+ weight: 1
+ region: content
+ settings: { }
+ third_party_settings: { }
+ message:
+ type: string_textarea
+ weight: 3
+ settings:
+ rows: 12
+ placeholder: ''
+ region: content
+ third_party_settings: { }
+ name:
+ weight: 0
+ region: content
+ settings: { }
+ third_party_settings: { }
+ subject:
+ type: string_textfield
+ weight: 2
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+hidden:
+ preview: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_form_display.node.article.default.yml b/core/profiles/demo_umami/config/install/core.entity_form_display.node.article.default.yml
new file mode 100644
index 0000000..122c53e
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_form_display.node.article.default.yml
@@ -0,0 +1,92 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - image.style.thumbnail
+ - node.type.article
+ module:
+ - image
+ - path
+ - text
+id: node.article.default
+targetEntityType: node
+bundle: article
+mode: default
+content:
+ body:
+ type: text_textarea_with_summary
+ weight: 1
+ region: content
+ settings:
+ rows: 9
+ summary_rows: 3
+ placeholder: ''
+ third_party_settings: { }
+ created:
+ type: datetime_timestamp
+ weight: 10
+ region: content
+ settings: { }
+ third_party_settings: { }
+ field_image:
+ type: image_image
+ weight: 4
+ region: content
+ settings:
+ progress_indicator: throbber
+ preview_image_style: thumbnail
+ third_party_settings: { }
+ field_tags:
+ type: entity_reference_autocomplete_tags
+ weight: 3
+ region: content
+ settings: { }
+ third_party_settings: { }
+ path:
+ type: path
+ weight: 30
+ region: content
+ settings: { }
+ third_party_settings: { }
+ promote:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 15
+ region: content
+ third_party_settings: { }
+ status:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 120
+ region: content
+ third_party_settings: { }
+ sticky:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 16
+ region: content
+ third_party_settings: { }
+ title:
+ type: string_textfield
+ weight: 0
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ uid:
+ type: entity_reference_autocomplete
+ weight: 5
+ region: content
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_form_display.node.page.default.yml b/core/profiles/demo_umami/config/install/core.entity_form_display.node.page.default.yml
new file mode 100644
index 0000000..682f1a5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_form_display.node.page.default.yml
@@ -0,0 +1,74 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.page.body
+ - node.type.page
+ module:
+ - path
+ - text
+id: node.page.default
+targetEntityType: node
+bundle: page
+mode: default
+content:
+ body:
+ type: text_textarea_with_summary
+ weight: 31
+ region: content
+ settings:
+ rows: 9
+ summary_rows: 3
+ placeholder: ''
+ third_party_settings: { }
+ created:
+ type: datetime_timestamp
+ weight: 10
+ region: content
+ settings: { }
+ third_party_settings: { }
+ path:
+ type: path
+ weight: 30
+ region: content
+ settings: { }
+ third_party_settings: { }
+ promote:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 15
+ region: content
+ third_party_settings: { }
+ status:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 120
+ region: content
+ third_party_settings: { }
+ sticky:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 16
+ region: content
+ third_party_settings: { }
+ title:
+ type: string_textfield
+ weight: -5
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ uid:
+ type: entity_reference_autocomplete
+ weight: 5
+ region: content
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_form_display.node.recipe.default.yml b/core/profiles/demo_umami/config/install/core.entity_form_display.node.recipe.default.yml
new file mode 100644
index 0000000..be55233
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_form_display.node.recipe.default.yml
@@ -0,0 +1,163 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - image.style.thumbnail
+ - node.type.recipe
+ module:
+ - image
+ - path
+ - text
+id: node.recipe.default
+targetEntityType: node
+bundle: recipe
+mode: default
+content:
+ created:
+ type: datetime_timestamp
+ weight: 13
+ region: content
+ settings: { }
+ third_party_settings: { }
+ field_author:
+ weight: 1
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ type: entity_reference_autocomplete
+ region: content
+ field_cooking_time:
+ weight: 3
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ type: number
+ region: content
+ field_difficulty:
+ weight: 5
+ settings: { }
+ third_party_settings: { }
+ type: options_select
+ region: content
+ field_image:
+ weight: 8
+ settings:
+ progress_indicator: throbber
+ preview_image_style: thumbnail
+ third_party_settings: { }
+ type: image_image
+ region: content
+ field_ingredients:
+ weight: 10
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ type: string_textfield
+ region: content
+ field_number_of_servings:
+ weight: 4
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ type: number
+ region: content
+ field_preparation_time:
+ weight: 2
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ type: number
+ region: content
+ field_recipe_category:
+ weight: 6
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ type: entity_reference_autocomplete
+ region: content
+ field_recipe_instruction:
+ weight: 11
+ settings:
+ rows: 5
+ placeholder: ''
+ third_party_settings: { }
+ type: text_textarea
+ region: content
+ field_summary:
+ weight: 9
+ settings:
+ rows: 5
+ placeholder: ''
+ third_party_settings: { }
+ type: text_textarea
+ region: content
+ field_tags:
+ weight: 7
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ type: entity_reference_autocomplete
+ region: content
+ path:
+ type: path
+ weight: 16
+ region: content
+ settings: { }
+ third_party_settings: { }
+ promote:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 14
+ region: content
+ third_party_settings: { }
+ status:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 17
+ region: content
+ third_party_settings: { }
+ sticky:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 15
+ region: content
+ third_party_settings: { }
+ title:
+ type: string_textfield
+ weight: 0
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ uid:
+ type: entity_reference_autocomplete
+ weight: 12
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ region: content
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_form_display.user.user.default.yml b/core/profiles/demo_umami/config/install/core.entity_form_display.user.user.default.yml
new file mode 100644
index 0000000..6832229
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_form_display.user.user.default.yml
@@ -0,0 +1,35 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.user.user.user_picture
+ - image.style.thumbnail
+ module:
+ - image
+ - user
+id: user.user.default
+targetEntityType: user
+bundle: user
+mode: default
+content:
+ account:
+ weight: -10
+ region: content
+ contact:
+ weight: 5
+ region: content
+ language:
+ weight: 0
+ region: content
+ timezone:
+ weight: 6
+ region: content
+ user_picture:
+ type: image_image
+ settings:
+ progress_indicator: throbber
+ preview_image_style: thumbnail
+ third_party_settings: { }
+ weight: -1
+ region: content
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.block_content.banner_block.default.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.block_content.banner_block.default.yml
new file mode 100644
index 0000000..507d046
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.block_content.banner_block.default.yml
@@ -0,0 +1,55 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.banner_block
+ - field.field.block_content.banner_block.field_banner_image
+ - field.field.block_content.banner_block.field_content_link
+ - field.field.block_content.banner_block.field_summary
+ - field.field.block_content.banner_block.field_title
+ - image.style.scale_crop_7_3_large
+ module:
+ - image
+ - link
+id: block_content.banner_block.default
+targetEntityType: block_content
+bundle: banner_block
+mode: default
+content:
+ field_banner_image:
+ weight: 0
+ label: hidden
+ settings:
+ image_style: scale_crop_7_3_large
+ image_link: ''
+ third_party_settings: { }
+ type: image
+ region: content
+ field_content_link:
+ weight: 3
+ label: hidden
+ settings:
+ trim_length: 80
+ url_only: false
+ url_plain: false
+ rel: ''
+ target: ''
+ third_party_settings: { }
+ type: link
+ region: content
+ field_summary:
+ weight: 2
+ label: hidden
+ settings: { }
+ third_party_settings: { }
+ type: basic_string
+ region: content
+ field_title:
+ weight: 1
+ label: hidden
+ settings:
+ link_to_entity: false
+ third_party_settings: { }
+ type: string
+ region: content
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.block_content.basic.default.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.block_content.basic.default.yml
new file mode 100644
index 0000000..e494882
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.block_content.basic.default.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.basic
+ - field.field.block_content.basic.body
+ module:
+ - text
+id: block_content.basic.default
+targetEntityType: block_content
+bundle: basic
+mode: default
+content:
+ body:
+ label: hidden
+ type: text_default
+ weight: 0
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.default.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.default.yml
new file mode 100644
index 0000000..a544c68
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.default.yml
@@ -0,0 +1,48 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - text
+ - user
+id: node.article.default
+targetEntityType: node
+bundle: article
+mode: default
+content:
+ body:
+ type: text_default
+ weight: 2
+ region: content
+ settings: { }
+ third_party_settings: { }
+ label: hidden
+ field_image:
+ type: responsive_image
+ weight: 1
+ region: content
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: ''
+ third_party_settings: { }
+ label: hidden
+ field_tags:
+ type: entity_reference_label
+ weight: 0
+ region: content
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ links:
+ weight: 3
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.full.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.full.yml
new file mode 100644
index 0000000..2e22452
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.full.yml
@@ -0,0 +1,49 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.full
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - text
+ - user
+id: node.article.full
+targetEntityType: node
+bundle: article
+mode: full
+content:
+ body:
+ type: text_default
+ weight: 2
+ region: content
+ settings: { }
+ third_party_settings: { }
+ label: hidden
+ field_image:
+ type: responsive_image
+ weight: 1
+ region: content
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: ''
+ third_party_settings: { }
+ label: hidden
+ field_tags:
+ type: entity_reference_label
+ weight: 0
+ region: content
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ links:
+ weight: 3
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_bottom.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_bottom.yml
new file mode 100644
index 0000000..c2a0515
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_bottom.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_bottom
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - user
+id: node.article.highlighted_bottom
+targetEntityType: node
+bundle: article
+mode: highlighted_bottom
+content:
+ field_image:
+ type: responsive_image
+ weight: 0
+ region: content
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: content
+ third_party_settings: { }
+ label: hidden
+hidden:
+ body: true
+ field_tags: true
+ links: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_medium.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_medium.yml
new file mode 100644
index 0000000..6d5fccd
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_medium.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_medium
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ - responsive_image.styles.square
+ module:
+ - responsive_image
+ - user
+id: node.article.highlighted_medium
+targetEntityType: node
+bundle: article
+mode: highlighted_medium
+content:
+ field_image:
+ type: responsive_image
+ weight: 0
+ region: content
+ settings:
+ responsive_image_style: square
+ image_link: content
+ third_party_settings: { }
+ label: hidden
+hidden:
+ body: true
+ field_tags: true
+ links: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_small.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_small.yml
new file mode 100644
index 0000000..db32e7f
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_small.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_small
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - user
+id: node.article.highlighted_small
+targetEntityType: node
+bundle: article
+mode: highlighted_small
+content:
+ field_image:
+ type: responsive_image
+ weight: 0
+ region: content
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: content
+ third_party_settings: { }
+ label: hidden
+hidden:
+ body: true
+ field_tags: true
+ links: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_top.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_top.yml
new file mode 100644
index 0000000..c943e42
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.highlighted_top.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_top
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - user
+id: node.article.highlighted_top
+targetEntityType: node
+bundle: article
+mode: highlighted_top
+content:
+ field_image:
+ type: responsive_image
+ weight: 0
+ region: content
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: content
+ third_party_settings: { }
+ label: hidden
+hidden:
+ body: true
+ field_tags: true
+ links: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.rss.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.rss.yml
new file mode 100644
index 0000000..da445c0
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.rss.yml
@@ -0,0 +1,23 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.rss
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ module:
+ - user
+id: node.article.rss
+targetEntityType: node
+bundle: article
+mode: rss
+content:
+ links:
+ weight: 100
+ region: content
+hidden:
+ body: true
+ field_image: true
+ field_tags: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.teaser.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.teaser.yml
new file mode 100644
index 0000000..2731e18
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.article.teaser.yml
@@ -0,0 +1,50 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.teaser
+ - field.field.node.article.body
+ - field.field.node.article.field_image
+ - field.field.node.article.field_tags
+ - node.type.article
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - text
+ - user
+id: node.article.teaser
+targetEntityType: node
+bundle: article
+mode: teaser
+content:
+ body:
+ type: text_summary_or_trimmed
+ weight: 0
+ region: content
+ settings:
+ trim_length: 600
+ third_party_settings: { }
+ label: hidden
+ field_image:
+ type: responsive_image
+ weight: -1
+ region: content
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: content
+ third_party_settings: { }
+ label: hidden
+ field_tags:
+ type: entity_reference_label
+ weight: 10
+ region: content
+ settings:
+ link: true
+ third_party_settings: { }
+ label: above
+ links:
+ weight: 100
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.page.default.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.page.default.yml
new file mode 100644
index 0000000..8afd942
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.page.default.yml
@@ -0,0 +1,25 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.page.body
+ - node.type.page
+ module:
+ - text
+ - user
+id: node.page.default
+targetEntityType: node
+bundle: page
+mode: default
+content:
+ body:
+ label: hidden
+ type: text_default
+ weight: 100
+ region: content
+ settings: { }
+ third_party_settings: { }
+ links:
+ weight: 101
+ region: content
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.page.teaser.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.page.teaser.yml
new file mode 100644
index 0000000..bc7a68c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.page.teaser.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.teaser
+ - field.field.node.page.body
+ - node.type.page
+ module:
+ - text
+ - user
+id: node.page.teaser
+targetEntityType: node
+bundle: page
+mode: teaser
+content:
+ body:
+ label: hidden
+ type: text_summary_or_trimmed
+ weight: 100
+ region: content
+ settings:
+ trim_length: 600
+ third_party_settings: { }
+ links:
+ weight: 101
+ region: content
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.default.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.default.yml
new file mode 100644
index 0000000..42c0ed0
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.default.yml
@@ -0,0 +1,115 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - node.type.recipe
+ - responsive_image.styles.3_2_image
+ module:
+ - options
+ - responsive_image
+ - text
+ - user
+id: node.recipe.default
+targetEntityType: node
+bundle: recipe
+mode: default
+content:
+ field_cooking_time:
+ weight: 1
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_difficulty:
+ weight: 2
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: list_default
+ region: content
+ field_image:
+ weight: 3
+ label: hidden
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: ''
+ third_party_settings: { }
+ type: responsive_image
+ region: content
+ field_ingredients:
+ weight: 4
+ label: above
+ settings:
+ link_to_entity: false
+ third_party_settings: { }
+ type: string
+ region: content
+ field_number_of_servings:
+ weight: 5
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_preparation_time:
+ weight: 6
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_recipe_category:
+ weight: 7
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ type: entity_reference_label
+ region: content
+ field_recipe_instruction:
+ weight: 8
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: text_default
+ region: content
+ field_summary:
+ weight: 9
+ label: hidden
+ settings: { }
+ third_party_settings: { }
+ type: text_default
+ region: content
+ field_tags:
+ weight: 10
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ type: entity_reference_label
+ region: content
+ links:
+ weight: 0
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden:
+ field_author: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.full.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.full.yml
new file mode 100644
index 0000000..deda099
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.full.yml
@@ -0,0 +1,116 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.full
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - node.type.recipe
+ - responsive_image.styles.3_2_image
+ module:
+ - options
+ - responsive_image
+ - text
+ - user
+id: node.recipe.full
+targetEntityType: node
+bundle: recipe
+mode: full
+content:
+ field_cooking_time:
+ weight: 1
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_difficulty:
+ weight: 2
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: list_default
+ region: content
+ field_image:
+ weight: 3
+ label: hidden
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: ''
+ third_party_settings: { }
+ type: responsive_image
+ region: content
+ field_ingredients:
+ weight: 4
+ label: above
+ settings:
+ link_to_entity: false
+ third_party_settings: { }
+ type: string
+ region: content
+ field_number_of_servings:
+ weight: 5
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: false
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_preparation_time:
+ weight: 6
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_recipe_category:
+ weight: 7
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ type: entity_reference_label
+ region: content
+ field_recipe_instruction:
+ weight: 8
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: text_default
+ region: content
+ field_summary:
+ weight: 9
+ label: hidden
+ settings: { }
+ third_party_settings: { }
+ type: text_default
+ region: content
+ field_tags:
+ weight: 10
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ type: entity_reference_label
+ region: content
+ links:
+ weight: 0
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden:
+ field_author: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_bottom.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_bottom.yml
new file mode 100644
index 0000000..a5d2a7b
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_bottom.yml
@@ -0,0 +1,47 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_bottom
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - node.type.recipe
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - user
+id: node.recipe.highlighted_bottom
+targetEntityType: node
+bundle: recipe
+mode: highlighted_bottom
+content:
+ field_image:
+ weight: 0
+ label: hidden
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: content
+ third_party_settings: { }
+ type: responsive_image
+ region: content
+hidden:
+ field_author: true
+ field_cooking_time: true
+ field_difficulty: true
+ field_ingredients: true
+ field_number_of_servings: true
+ field_preparation_time: true
+ field_recipe_category: true
+ field_recipe_instruction: true
+ field_summary: true
+ field_tags: true
+ links: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_medium.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_medium.yml
new file mode 100644
index 0000000..0025d27
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_medium.yml
@@ -0,0 +1,58 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_medium
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - node.type.recipe
+ - responsive_image.styles.square
+ module:
+ - options
+ - responsive_image
+ - user
+id: node.recipe.highlighted_medium
+targetEntityType: node
+bundle: recipe
+mode: highlighted_medium
+content:
+ field_difficulty:
+ weight: 1
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: list_default
+ region: content
+ field_image:
+ weight: 0
+ label: hidden
+ settings:
+ responsive_image_style: square
+ image_link: content
+ third_party_settings: { }
+ type: responsive_image
+ region: content
+ links:
+ weight: 2
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden:
+ field_author: true
+ field_cooking_time: true
+ field_ingredients: true
+ field_number_of_servings: true
+ field_preparation_time: true
+ field_recipe_category: true
+ field_recipe_instruction: true
+ field_summary: true
+ field_tags: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_small.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_small.yml
new file mode 100644
index 0000000..8f7971c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_small.yml
@@ -0,0 +1,58 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_small
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - node.type.recipe
+ - responsive_image.styles.3_2_image
+ module:
+ - options
+ - responsive_image
+ - user
+id: node.recipe.highlighted_small
+targetEntityType: node
+bundle: recipe
+mode: highlighted_small
+content:
+ field_difficulty:
+ weight: 1
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: list_default
+ region: content
+ field_image:
+ weight: 0
+ label: hidden
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: content
+ third_party_settings: { }
+ type: responsive_image
+ region: content
+ links:
+ weight: 2
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden:
+ field_author: true
+ field_cooking_time: true
+ field_ingredients: true
+ field_number_of_servings: true
+ field_preparation_time: true
+ field_recipe_category: true
+ field_recipe_instruction: true
+ field_summary: true
+ field_tags: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_top.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_top.yml
new file mode 100644
index 0000000..f71cb27
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.highlighted_top.yml
@@ -0,0 +1,47 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_top
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - node.type.recipe
+ - responsive_image.styles.3_2_image
+ module:
+ - responsive_image
+ - user
+id: node.recipe.highlighted_top
+targetEntityType: node
+bundle: recipe
+mode: highlighted_top
+content:
+ field_image:
+ weight: 0
+ label: hidden
+ settings:
+ responsive_image_style: 3_2_image
+ image_link: content
+ third_party_settings: { }
+ type: responsive_image
+ region: content
+hidden:
+ field_author: true
+ field_cooking_time: true
+ field_difficulty: true
+ field_ingredients: true
+ field_number_of_servings: true
+ field_preparation_time: true
+ field_recipe_category: true
+ field_recipe_instruction: true
+ field_summary: true
+ field_tags: true
+ links: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.teaser.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.teaser.yml
new file mode 100644
index 0000000..5649684
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.node.recipe.teaser.yml
@@ -0,0 +1,39 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.teaser
+ - field.field.node.recipe.field_author
+ - field.field.node.recipe.field_cooking_time
+ - field.field.node.recipe.field_difficulty
+ - field.field.node.recipe.field_image
+ - field.field.node.recipe.field_ingredients
+ - field.field.node.recipe.field_number_of_servings
+ - field.field.node.recipe.field_preparation_time
+ - field.field.node.recipe.field_recipe_category
+ - field.field.node.recipe.field_recipe_instruction
+ - field.field.node.recipe.field_summary
+ - field.field.node.recipe.field_tags
+ - node.type.recipe
+ module:
+ - user
+id: node.recipe.teaser
+targetEntityType: node
+bundle: recipe
+mode: teaser
+content:
+ links:
+ weight: 100
+ region: content
+hidden:
+ field_author: true
+ field_cooking_time: true
+ field_difficulty: true
+ field_image: true
+ field_ingredients: true
+ field_number_of_servings: true
+ field_preparation_time: true
+ field_recipe_category: true
+ field_recipe_instruction: true
+ field_summary: true
+ field_tags: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.user.user.compact.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.user.user.compact.yml
new file mode 100644
index 0000000..2ff13ad
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.user.user.compact.yml
@@ -0,0 +1,26 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.user.compact
+ - field.field.user.user.user_picture
+ - image.style.thumbnail
+ module:
+ - image
+ - user
+id: user.user.compact
+targetEntityType: user
+bundle: user
+mode: compact
+content:
+ user_picture:
+ type: image
+ weight: 0
+ region: content
+ settings:
+ image_style: thumbnail
+ image_link: content
+ third_party_settings: { }
+ label: hidden
+hidden:
+ member_for: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.user.user.default.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.user.user.default.yml
new file mode 100644
index 0000000..ef1fdd7
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.user.user.default.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.user.user.user_picture
+ - image.style.thumbnail
+ module:
+ - image
+ - user
+id: user.user.default
+targetEntityType: user
+bundle: user
+mode: default
+content:
+ member_for:
+ weight: 5
+ region: content
+ user_picture:
+ type: image
+ weight: 0
+ region: content
+ settings:
+ image_style: thumbnail
+ image_link: content
+ third_party_settings: { }
+ label: hidden
+hidden: { }
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_bottom.yml b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_bottom.yml
new file mode 100644
index 0000000..134ea94
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_bottom.yml
@@ -0,0 +1,9 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.highlighted_bottom
+label: 'Highlighted Bottom'
+targetEntityType: node
+cache: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_medium.yml b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_medium.yml
new file mode 100644
index 0000000..965b3c5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_medium.yml
@@ -0,0 +1,9 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.highlighted_medium
+label: 'Highlighted Medium'
+targetEntityType: node
+cache: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_small.yml b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_small.yml
new file mode 100644
index 0000000..4c55b69
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_small.yml
@@ -0,0 +1,9 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.highlighted_small
+label: 'Highlighted Small'
+targetEntityType: node
+cache: true
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_top.yml b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_top.yml
new file mode 100644
index 0000000..04ae4e5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/core.entity_view_mode.node.highlighted_top.yml
@@ -0,0 +1,9 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.highlighted_top
+label: 'Highlighted Top'
+targetEntityType: node
+cache: true
diff --git a/core/profiles/demo_umami/config/install/editor.editor.basic_html.yml b/core/profiles/demo_umami/config/install/editor.editor.basic_html.yml
new file mode 100644
index 0000000..966cec6
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/editor.editor.basic_html.yml
@@ -0,0 +1,52 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - filter.format.basic_html
+ module:
+ - ckeditor
+format: basic_html
+editor: ckeditor
+settings:
+ toolbar:
+ rows:
+ -
+ -
+ name: Formatting
+ items:
+ - Bold
+ - Italic
+ -
+ name: Linking
+ items:
+ - DrupalLink
+ - DrupalUnlink
+ -
+ name: Lists
+ items:
+ - BulletedList
+ - NumberedList
+ -
+ name: Media
+ items:
+ - Blockquote
+ - DrupalImage
+ -
+ name: 'Block Formatting'
+ items:
+ - Format
+ -
+ name: Tools
+ items:
+ - Source
+ plugins:
+ stylescombo:
+ styles: ''
+image_upload:
+ status: true
+ scheme: public
+ directory: inline-images
+ max_size: ''
+ max_dimensions:
+ width: 0
+ height: 0
diff --git a/core/profiles/demo_umami/config/install/editor.editor.full_html.yml b/core/profiles/demo_umami/config/install/editor.editor.full_html.yml
new file mode 100644
index 0000000..f5dd7bc
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/editor.editor.full_html.yml
@@ -0,0 +1,60 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - filter.format.full_html
+ module:
+ - ckeditor
+format: full_html
+editor: ckeditor
+settings:
+ toolbar:
+ rows:
+ -
+ -
+ name: Formatting
+ items:
+ - Bold
+ - Italic
+ - Strike
+ - Superscript
+ - Subscript
+ - '-'
+ - RemoveFormat
+ -
+ name: Linking
+ items:
+ - DrupalLink
+ - DrupalUnlink
+ -
+ name: Lists
+ items:
+ - BulletedList
+ - NumberedList
+ -
+ name: Media
+ items:
+ - Blockquote
+ - DrupalImage
+ - Table
+ - HorizontalRule
+ -
+ name: 'Block Formatting'
+ items:
+ - Format
+ -
+ name: Tools
+ items:
+ - ShowBlocks
+ - Source
+ plugins:
+ stylescombo:
+ styles: ''
+image_upload:
+ status: true
+ scheme: public
+ directory: inline-images
+ max_size: ''
+ max_dimensions:
+ width: 0
+ height: 0
diff --git a/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_banner_image.yml b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_banner_image.yml
new file mode 100644
index 0000000..4778eb7
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_banner_image.yml
@@ -0,0 +1,37 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.banner_block
+ - field.storage.block_content.field_banner_image
+ module:
+ - image
+id: block_content.banner_block.field_banner_image
+field_name: field_banner_image
+entity_type: block_content
+bundle: banner_block
+label: 'Banner image'
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ file_directory: '[date:custom:Y]-[date:custom:m]'
+ file_extensions: 'png gif jpg jpeg'
+ max_filesize: ''
+ max_resolution: ''
+ min_resolution: ''
+ alt_field: false
+ alt_field_required: true
+ title_field: false
+ title_field_required: false
+ default_image:
+ uuid: null
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ handler: 'default:file'
+ handler_settings: { }
+field_type: image
diff --git a/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_content_link.yml b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_content_link.yml
new file mode 100644
index 0000000..a9ca9b6
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_content_link.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.banner_block
+ - field.storage.block_content.field_content_link
+ module:
+ - link
+id: block_content.banner_block.field_content_link
+field_name: field_content_link
+entity_type: block_content
+bundle: banner_block
+label: 'Content Link'
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ link_type: 17
+ title: 2
+field_type: link
diff --git a/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_summary.yml b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_summary.yml
new file mode 100644
index 0000000..7fd5a2c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_summary.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.banner_block
+ - field.storage.block_content.field_summary
+id: block_content.banner_block.field_summary
+field_name: field_summary
+entity_type: block_content
+bundle: banner_block
+label: Summary
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string_long
diff --git a/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_title.yml b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_title.yml
new file mode 100644
index 0000000..0edb787
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.block_content.banner_block.field_title.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.banner_block
+ - field.storage.block_content.field_title
+id: block_content.banner_block.field_title
+field_name: field_title
+entity_type: block_content
+bundle: banner_block
+label: Title
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/core/profiles/demo_umami/config/install/field.field.block_content.basic.body.yml b/core/profiles/demo_umami/config/install/field.field.block_content.basic.body.yml
new file mode 100644
index 0000000..89118ef
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.block_content.basic.body.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - block_content.type.basic
+ - field.storage.block_content.body
+ module:
+ - text
+id: block_content.basic.body
+field_name: body
+entity_type: block_content
+bundle: basic
+label: Body
+description: ''
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ display_summary: false
+field_type: text_with_summary
diff --git a/core/profiles/demo_umami/config/install/field.field.node.article.body.yml b/core/profiles/demo_umami/config/install/field.field.node.article.body.yml
new file mode 100644
index 0000000..8f3681d
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.article.body.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.body
+ - node.type.article
+ module:
+ - text
+id: node.article.body
+field_name: body
+entity_type: node
+bundle: article
+label: Body
+description: ''
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ display_summary: true
+field_type: text_with_summary
diff --git a/core/profiles/demo_umami/config/install/field.field.node.article.field_image.yml b/core/profiles/demo_umami/config/install/field.field.node.article.field_image.yml
new file mode 100644
index 0000000..b4b1c14
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.article.field_image.yml
@@ -0,0 +1,37 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_image
+ - node.type.article
+ module:
+ - image
+id: node.article.field_image
+field_name: field_image
+entity_type: node
+bundle: article
+label: Image
+description: ''
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ file_directory: '[date:custom:Y]-[date:custom:m]'
+ file_extensions: 'png gif jpg jpeg'
+ max_filesize: ''
+ max_resolution: ''
+ min_resolution: ''
+ alt_field: true
+ title_field: false
+ alt_field_required: true
+ title_field_required: false
+ default_image:
+ uuid: null
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ handler: 'default:file'
+ handler_settings: { }
+field_type: image
diff --git a/core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml b/core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml
new file mode 100644
index 0000000..1b9c4cc
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml
@@ -0,0 +1,26 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_tags
+ - node.type.article
+ - taxonomy.vocabulary.tags
+id: node.article.field_tags
+field_name: field_tags
+entity_type: node
+bundle: article
+label: Tags
+description: 'Enter a comma-separated list. For example: Amsterdam, Mexico City, "Cleveland, Ohio"'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default:taxonomy_term'
+ handler_settings:
+ target_bundles:
+ tags: tags
+ sort:
+ field: _none
+ auto_create: true
+field_type: entity_reference
diff --git a/core/profiles/demo_umami/config/install/field.field.node.page.body.yml b/core/profiles/demo_umami/config/install/field.field.node.page.body.yml
new file mode 100644
index 0000000..6c09432
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.page.body.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.body
+ - node.type.page
+ module:
+ - text
+id: node.page.body
+field_name: body
+entity_type: node
+bundle: page
+label: Body
+description: ''
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ display_summary: true
+field_type: text_with_summary
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_author.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_author.yml
new file mode 100644
index 0000000..386ee59
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_author.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_author
+ - node.type.recipe
+id: node.recipe.field_author
+field_name: field_author
+entity_type: node
+bundle: recipe
+label: Author
+description: 'The author of this recipe. Start typing their username to search.'
+required: true
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default:user'
+ handler_settings:
+ include_anonymous: true
+ filter:
+ type: _none
+ target_bundles: null
+ sort:
+ field: _none
+ auto_create: false
+field_type: entity_reference
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_cooking_time.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_cooking_time.yml
new file mode 100644
index 0000000..e5093e4
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_cooking_time.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_cooking_time
+ - node.type.recipe
+id: node.recipe.field_cooking_time
+field_name: field_cooking_time
+entity_type: node
+bundle: recipe
+label: 'Cooking time'
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ min: 0
+ max: null
+ prefix: ''
+ suffix: ' minutes'
+field_type: integer
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_difficulty.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_difficulty.yml
new file mode 100644
index 0000000..c965fb4
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_difficulty.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_difficulty
+ - node.type.recipe
+ module:
+ - options
+id: node.recipe.field_difficulty
+field_name: field_difficulty
+entity_type: node
+bundle: recipe
+label: Difficulty
+description: ''
+required: true
+translatable: false
+default_value:
+ -
+ value: medium
+default_value_callback: ''
+settings: { }
+field_type: list_string
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_image.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_image.yml
new file mode 100644
index 0000000..fd6127a
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_image.yml
@@ -0,0 +1,37 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_image
+ - node.type.recipe
+ module:
+ - image
+id: node.recipe.field_image
+field_name: field_image
+entity_type: node
+bundle: recipe
+label: Image
+description: 'This image will be used on both the recipe page and wherever the recipe is promoted.'
+required: true
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ file_directory: '[date:custom:Y]-[date:custom:m]'
+ file_extensions: 'png gif jpg jpeg'
+ max_filesize: ''
+ max_resolution: ''
+ min_resolution: ''
+ alt_field: true
+ alt_field_required: true
+ title_field: false
+ title_field_required: false
+ default_image:
+ uuid: null
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ handler: 'default:file'
+ handler_settings: { }
+field_type: image
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml
new file mode 100644
index 0000000..647c7df
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_ingredients
+ - node.type.recipe
+id: node.recipe.field_ingredients
+field_name: field_ingredients
+entity_type: node
+bundle: recipe
+label: Ingredients
+description: 'List the ingredients required for this recipe, one per item.'
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_number_of_servings.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_number_of_servings.yml
new file mode 100644
index 0000000..e593295
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_number_of_servings.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_number_of_servings
+ - node.type.recipe
+id: node.recipe.field_number_of_servings
+field_name: field_number_of_servings
+entity_type: node
+bundle: recipe
+label: 'Number of servings'
+description: ''
+required: true
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ min: 0
+ max: null
+ prefix: ''
+ suffix: ''
+field_type: integer
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_preparation_time.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_preparation_time.yml
new file mode 100644
index 0000000..12c59f6
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_preparation_time.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_preparation_time
+ - node.type.recipe
+id: node.recipe.field_preparation_time
+field_name: field_preparation_time
+entity_type: node
+bundle: recipe
+label: 'Preparation time'
+description: ''
+required: true
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ min: 0
+ max: null
+ prefix: ''
+ suffix: ' minutes'
+field_type: integer
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_category.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_category.yml
new file mode 100644
index 0000000..249eafd
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_category.yml
@@ -0,0 +1,28 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_recipe_category
+ - node.type.recipe
+ - taxonomy.vocabulary.recipe_category
+id: node.recipe.field_recipe_category
+field_name: field_recipe_category
+entity_type: node
+bundle: recipe
+label: 'Recipe category'
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default:taxonomy_term'
+ handler_settings:
+ target_bundles:
+ recipe_category: recipe_category
+ sort:
+ field: name
+ direction: asc
+ auto_create: false
+ auto_create_bundle: ''
+field_type: entity_reference
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml
new file mode 100644
index 0000000..b85af3b
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_recipe_instruction
+ - node.type.recipe
+ module:
+ - text
+id: node.recipe.field_recipe_instruction
+field_name: field_recipe_instruction
+entity_type: node
+bundle: recipe
+label: 'Recipe instruction'
+description: ''
+required: true
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: text_long
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml
new file mode 100644
index 0000000..af8230e
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_summary
+ - node.type.recipe
+ module:
+ - text
+id: node.recipe.field_summary
+field_name: field_summary
+entity_type: node
+bundle: recipe
+label: Summary
+description: 'Provide a short overview of this recipe.'
+required: true
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: text_long
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml
new file mode 100644
index 0000000..a8c6179
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml
@@ -0,0 +1,28 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_tags
+ - node.type.recipe
+ - taxonomy.vocabulary.tags
+id: node.recipe.field_tags
+field_name: field_tags
+entity_type: node
+bundle: recipe
+label: Tags
+description: ''
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default:taxonomy_term'
+ handler_settings:
+ target_bundles:
+ tags: tags
+ sort:
+ field: name
+ direction: asc
+ auto_create: false
+ auto_create_bundle: ''
+field_type: entity_reference
diff --git a/core/profiles/demo_umami/config/install/field.field.user.user.user_picture.yml b/core/profiles/demo_umami/config/install/field.field.user.user.user_picture.yml
new file mode 100644
index 0000000..e06bd7d
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.field.user.user.user_picture.yml
@@ -0,0 +1,37 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.user.user_picture
+ module:
+ - image
+ - user
+id: user.user.user_picture
+field_name: user_picture
+entity_type: user
+bundle: user
+label: Picture
+description: 'Your virtual face or picture.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ file_extensions: 'png gif jpg jpeg'
+ file_directory: 'pictures/[date:custom:Y]-[date:custom:m]'
+ max_filesize: ''
+ alt_field: false
+ title_field: false
+ max_resolution: ''
+ min_resolution: ''
+ default_image:
+ uuid: null
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ alt_field_required: false
+ title_field_required: false
+ handler: 'default:file'
+ handler_settings: { }
+field_type: image
diff --git a/core/profiles/demo_umami/config/install/field.storage.block_content.field_banner_image.yml b/core/profiles/demo_umami/config/install/field.storage.block_content.field_banner_image.yml
new file mode 100644
index 0000000..205e490
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.block_content.field_banner_image.yml
@@ -0,0 +1,29 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - block_content
+ - file
+ - image
+id: block_content.field_banner_image
+field_name: field_banner_image
+entity_type: block_content
+type: image
+settings:
+ uri_scheme: public
+ default_image:
+ uuid: null
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ target_type: file
+ display_field: false
+ display_default: false
+module: image
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.block_content.field_content_link.yml b/core/profiles/demo_umami/config/install/field.storage.block_content.field_content_link.yml
new file mode 100644
index 0000000..678e4a6
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.block_content.field_content_link.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - block_content
+ - link
+id: block_content.field_content_link
+field_name: field_content_link
+entity_type: block_content
+type: link
+settings: { }
+module: link
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.block_content.field_summary.yml b/core/profiles/demo_umami/config/install/field.storage.block_content.field_summary.yml
new file mode 100644
index 0000000..5fc11f5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.block_content.field_summary.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - block_content
+id: block_content.field_summary
+field_name: field_summary
+entity_type: block_content
+type: string_long
+settings:
+ case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.block_content.field_title.yml b/core/profiles/demo_umami/config/install/field.storage.block_content.field_title.yml
new file mode 100644
index 0000000..6e1b0b7
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.block_content.field_title.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - block_content
+id: block_content.field_title
+field_name: field_title
+entity_type: block_content
+type: string
+settings:
+ max_length: 255
+ is_ascii: false
+ case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_author.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_author.yml
new file mode 100644
index 0000000..cb123cf
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_author.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - user
+id: node.field_author
+field_name: field_author
+entity_type: node
+type: entity_reference
+settings:
+ target_type: user
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_cooking_time.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_cooking_time.yml
new file mode 100644
index 0000000..b3ab42e
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_cooking_time.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_cooking_time
+field_name: field_cooking_time
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_difficulty.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_difficulty.yml
new file mode 100644
index 0000000..d8cbe89
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_difficulty.yml
@@ -0,0 +1,29 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - options
+id: node.field_difficulty
+field_name: field_difficulty
+entity_type: node
+type: list_string
+settings:
+ allowed_values:
+ -
+ value: easy
+ label: Easy
+ -
+ value: medium
+ label: Medium
+ -
+ value: hard
+ label: Hard
+ allowed_values_function: ''
+module: options
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_image.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_image.yml
new file mode 100644
index 0000000..e4da708
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_image.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - file
+ - image
+ - node
+id: node.field_image
+field_name: field_image
+entity_type: node
+type: image
+settings:
+ uri_scheme: public
+ default_image:
+ uuid: null
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ target_type: file
+ display_field: false
+ display_default: false
+module: image
+locked: false
+cardinality: 1
+translatable: true
+indexes:
+ target_id:
+ - target_id
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_ingredients.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_ingredients.yml
new file mode 100644
index 0000000..8adf10e
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_ingredients.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_ingredients
+field_name: field_ingredients
+entity_type: node
+type: string
+settings:
+ max_length: 255
+ is_ascii: false
+ case_sensitive: false
+module: core
+locked: false
+cardinality: -1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_number_of_servings.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_number_of_servings.yml
new file mode 100644
index 0000000..d0773ca
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_number_of_servings.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_number_of_servings
+field_name: field_number_of_servings
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_preparation_time.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_preparation_time.yml
new file mode 100644
index 0000000..ffa4bcf
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_preparation_time.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_preparation_time
+field_name: field_preparation_time
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_recipe_category.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_recipe_category.yml
new file mode 100644
index 0000000..ce35487
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_recipe_category.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - taxonomy
+id: node.field_recipe_category
+field_name: field_recipe_category
+entity_type: node
+type: entity_reference
+settings:
+ target_type: taxonomy_term
+module: core
+locked: false
+cardinality: -1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_recipe_instruction.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_recipe_instruction.yml
new file mode 100644
index 0000000..d788ec2
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_recipe_instruction.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - text
+id: node.field_recipe_instruction
+field_name: field_recipe_instruction
+entity_type: node
+type: text_long
+settings: { }
+module: text
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_summary.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_summary.yml
new file mode 100644
index 0000000..45b33a8
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_summary.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - text
+id: node.field_summary
+field_name: field_summary
+entity_type: node
+type: text_long
+settings: { }
+module: text
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.node.field_tags.yml b/core/profiles/demo_umami/config/install/field.storage.node.field_tags.yml
new file mode 100644
index 0000000..73f821f
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.node.field_tags.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - taxonomy
+id: node.field_tags
+field_name: field_tags
+entity_type: node
+type: entity_reference
+settings:
+ target_type: taxonomy_term
+module: core
+locked: false
+cardinality: -1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/field.storage.user.user_picture.yml b/core/profiles/demo_umami/config/install/field.storage.user.user_picture.yml
new file mode 100644
index 0000000..8253628
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/field.storage.user.user_picture.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - file
+ - image
+ - user
+id: user.user_picture
+field_name: user_picture
+entity_type: user
+type: image
+settings:
+ uri_scheme: public
+ default_image:
+ uuid: null
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ target_type: file
+ display_field: false
+ display_default: false
+module: image
+locked: false
+cardinality: 1
+translatable: true
+indexes:
+ target_id:
+ - target_id
+persist_with_no_fields: false
+custom_storage: false
diff --git a/core/profiles/demo_umami/config/install/filter.format.basic_html.yml b/core/profiles/demo_umami/config/install/filter.format.basic_html.yml
new file mode 100644
index 0000000..f9baa17
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/filter.format.basic_html.yml
@@ -0,0 +1,50 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - editor
+name: 'Basic HTML'
+format: basic_html
+weight: 0
+roles:
+ - authenticated
+filters:
+ filter_html:
+ id: filter_html
+ provider: filter
+ status: true
+ weight: -10
+ settings:
+ allowed_html: '<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <p> <br> <span> <img src alt height width data-entity-type data-entity-uuid data-align data-caption>'
+ filter_html_help: false
+ filter_html_nofollow: false
+ filter_align:
+ id: filter_align
+ provider: filter
+ status: true
+ weight: 7
+ settings: { }
+ filter_caption:
+ id: filter_caption
+ provider: filter
+ status: true
+ weight: 8
+ settings: { }
+ filter_html_image_secure:
+ id: filter_html_image_secure
+ provider: filter
+ status: true
+ weight: 9
+ settings: { }
+ editor_file_reference:
+ id: editor_file_reference
+ provider: editor
+ status: true
+ weight: 11
+ settings: { }
+ filter_autop:
+ id: filter_autop
+ provider: filter
+ status: true
+ weight: 0
+ settings: { }
diff --git a/core/profiles/demo_umami/config/install/filter.format.full_html.yml b/core/profiles/demo_umami/config/install/filter.format.full_html.yml
new file mode 100644
index 0000000..e5febb2
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/filter.format.full_html.yml
@@ -0,0 +1,35 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - editor
+name: 'Full HTML'
+format: full_html
+weight: 1
+roles:
+ - administrator
+filters:
+ filter_align:
+ id: filter_align
+ provider: filter
+ status: true
+ weight: 8
+ settings: { }
+ filter_caption:
+ id: filter_caption
+ provider: filter
+ status: true
+ weight: 9
+ settings: { }
+ filter_htmlcorrector:
+ id: filter_htmlcorrector
+ provider: filter
+ status: true
+ weight: 10
+ settings: { }
+ editor_file_reference:
+ id: editor_file_reference
+ provider: editor
+ status: true
+ weight: 11
+ settings: { }
diff --git a/core/profiles/demo_umami/config/install/filter.format.restricted_html.yml b/core/profiles/demo_umami/config/install/filter.format.restricted_html.yml
new file mode 100644
index 0000000..323d077
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/filter.format.restricted_html.yml
@@ -0,0 +1,31 @@
+langcode: en
+status: true
+dependencies: { }
+name: 'Restricted HTML'
+format: restricted_html
+weight: 0
+roles:
+ - anonymous
+filters:
+ filter_html:
+ id: filter_html
+ provider: filter
+ status: true
+ weight: -10
+ settings:
+ allowed_html: '<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>'
+ filter_html_help: true
+ filter_html_nofollow: false
+ filter_autop:
+ id: filter_autop
+ provider: filter
+ status: true
+ weight: 0
+ settings: { }
+ filter_url:
+ id: filter_url
+ provider: filter
+ status: true
+ weight: 0
+ settings:
+ filter_url_length: 72
diff --git a/core/profiles/demo_umami/config/install/image.style.large_21_9.yml b/core/profiles/demo_umami/config/install/image.style.large_21_9.yml
new file mode 100644
index 0000000..7e1c7c2
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.large_21_9.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: large_21_9
+label: 'Large 21:9 (1440x620)'
+effects:
+ 90b69780-6eb1-4cc8-a500-88235ad52f5c:
+ uuid: 90b69780-6eb1-4cc8-a500-88235ad52f5c
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 1440
+ height: 620
diff --git a/core/profiles/demo_umami/config/install/image.style.large_21_9_2x.yml b/core/profiles/demo_umami/config/install/image.style.large_21_9_2x.yml
new file mode 100644
index 0000000..13d8416
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.large_21_9_2x.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: large_21_9_2x
+label: 'Large 21:9 2x (2880x1240)'
+effects:
+ 6b96b7e5-aabd-406e-86ec-2c2e2c18bd82:
+ uuid: 6b96b7e5-aabd-406e-86ec-2c2e2c18bd82
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 2880
+ height: 1240
diff --git a/core/profiles/demo_umami/config/install/image.style.large_3_2_2x.yml b/core/profiles/demo_umami/config/install/image.style.large_3_2_2x.yml
new file mode 100644
index 0000000..e469fb6
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.large_3_2_2x.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: large_3_2_2x
+label: 'Large 3:2 2x (1536x1024)'
+effects:
+ f0d332fd-0884-4f29-9f3c-befd244a63b4:
+ uuid: f0d332fd-0884-4f29-9f3c-befd244a63b4
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 1536
+ height: 1024
diff --git a/core/profiles/demo_umami/config/install/image.style.large_3_2_768x512.yml b/core/profiles/demo_umami/config/install/image.style.large_3_2_768x512.yml
new file mode 100644
index 0000000..ad8e523
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.large_3_2_768x512.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: large_3_2_768x512
+label: 'Large 3:2 (768x512)'
+effects:
+ 36c9f14a-8f5e-4794-92ea-bffab074f52e:
+ uuid: c7627da6-934e-47e2-a795-f10a424bda34
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 768
+ height: 512
diff --git a/core/profiles/demo_umami/config/install/image.style.medium_21_9.yml b/core/profiles/demo_umami/config/install/image.style.medium_21_9.yml
new file mode 100644
index 0000000..43ce95a
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.medium_21_9.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: medium_21_9
+label: 'Medium 21:9 (1024x440)'
+effects:
+ 52985ed4-81d6-4ecf-90c1-4e8c651f76ba:
+ uuid: 52985ed4-81d6-4ecf-90c1-4e8c651f76ba
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 1024
+ height: 440
diff --git a/core/profiles/demo_umami/config/install/image.style.medium_3_2_2x.yml b/core/profiles/demo_umami/config/install/image.style.medium_3_2_2x.yml
new file mode 100644
index 0000000..3a1774f
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.medium_3_2_2x.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: medium_3_2_2x
+label: 'Medium 3:2 2x (1200x800)'
+effects:
+ 4d5a2dc6-8ec0-4a7e-95bb-dd19e8ed248a:
+ uuid: 4d5a2dc6-8ec0-4a7e-95bb-dd19e8ed248a
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 1200
+ height: 800
diff --git a/core/profiles/demo_umami/config/install/image.style.medium_3_2_600x400.yml b/core/profiles/demo_umami/config/install/image.style.medium_3_2_600x400.yml
new file mode 100644
index 0000000..f72a09d
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.medium_3_2_600x400.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: medium_3_2_600x400
+label: 'Medium 3:2 (600x400)'
+effects:
+ 75efca62-f371-41b7-8c6e-5ce6103e0fe4:
+ uuid: 75efca62-f371-41b7-8c6e-5ce6103e0fe4
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 600
+ height: 400
diff --git a/core/profiles/demo_umami/config/install/image.style.scale_crop_7_3_large.yml b/core/profiles/demo_umami/config/install/image.style.scale_crop_7_3_large.yml
new file mode 100644
index 0000000..5f579be
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.scale_crop_7_3_large.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: scale_crop_7_3_large
+label: 'Scale crop 7:3 large'
+effects:
+ 6e4edf30-59c0-45d0-ba6d-63dac5128eef:
+ uuid: 6e4edf30-59c0-45d0-ba6d-63dac5128eef
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 1440
+ height: 617
diff --git a/core/profiles/demo_umami/config/install/image.style.small_21_9.yml b/core/profiles/demo_umami/config/install/image.style.small_21_9.yml
new file mode 100644
index 0000000..905f23f
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.small_21_9.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: small_21_9
+label: 'Small 21:9 (768x330)'
+effects:
+ 06eaf095-124b-435d-af50-442044e91e7d:
+ uuid: 06eaf095-124b-435d-af50-442044e91e7d
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 768
+ height: 330
diff --git a/core/profiles/demo_umami/config/install/image.style.square_large.yml b/core/profiles/demo_umami/config/install/image.style.square_large.yml
new file mode 100644
index 0000000..1bea9a5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.square_large.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: square_large
+label: 'Square Large'
+effects:
+ c7627da6-934e-47e2-a795-f10a424bda34:
+ uuid: c7627da6-934e-47e2-a795-f10a424bda34
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 900
+ height: 900
diff --git a/core/profiles/demo_umami/config/install/image.style.square_medium.yml b/core/profiles/demo_umami/config/install/image.style.square_medium.yml
new file mode 100644
index 0000000..5e924c7
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.square_medium.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: square_medium
+label: 'Square Medium'
+effects:
+ c42becc5-dd14-4384-81e1-8a667c60a705:
+ uuid: c42becc5-dd14-4384-81e1-8a667c60a705
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 600
+ height: 600
diff --git a/core/profiles/demo_umami/config/install/image.style.square_small.yml b/core/profiles/demo_umami/config/install/image.style.square_small.yml
new file mode 100644
index 0000000..03b4b11
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/image.style.square_small.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: { }
+name: square_small
+label: 'Square Small'
+effects:
+ 6c19e3f2-f291-4824-bc17-e485a979502c:
+ uuid: 6c19e3f2-f291-4824-bc17-e485a979502c
+ id: image_scale_and_crop
+ weight: 1
+ data:
+ width: 300
+ height: 300
diff --git a/core/profiles/demo_umami/config/install/node.type.article.yml b/core/profiles/demo_umami/config/install/node.type.article.yml
new file mode 100644
index 0000000..1fd439c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/node.type.article.yml
@@ -0,0 +1,10 @@
+langcode: en
+status: true
+dependencies: { }
+name: Article
+type: article
+description: 'Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: true
diff --git a/core/profiles/demo_umami/config/install/node.type.page.yml b/core/profiles/demo_umami/config/install/node.type.page.yml
new file mode 100644
index 0000000..57dcc0c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/node.type.page.yml
@@ -0,0 +1,10 @@
+langcode: en
+status: true
+dependencies: { }
+name: 'Basic page'
+type: page
+description: 'Use <em>basic pages</em> for your static content, such as an ''About us'' page.'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/core/profiles/demo_umami/config/install/node.type.recipe.yml b/core/profiles/demo_umami/config/install/node.type.recipe.yml
new file mode 100644
index 0000000..89ed321
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/node.type.recipe.yml
@@ -0,0 +1,16 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - menu_ui
+third_party_settings:
+ menu_ui:
+ available_menus: { }
+ parent: ''
+name: Recipe
+type: recipe
+description: 'Add a new recipe to the site.'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: false
diff --git a/core/profiles/demo_umami/config/install/rdf.mapping.node.article.yml b/core/profiles/demo_umami/config/install/rdf.mapping.node.article.yml
new file mode 100644
index 0000000..3277bd4
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/rdf.mapping.node.article.yml
@@ -0,0 +1,38 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - node.type.article
+ module:
+ - node
+id: node.article
+targetEntityType: node
+bundle: article
+types:
+ - 'schema:Article'
+fieldMappings:
+ title:
+ properties:
+ - 'schema:name'
+ created:
+ properties:
+ - 'schema:dateCreated'
+ datatype_callback:
+ callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
+ changed:
+ properties:
+ - 'schema:dateModified'
+ datatype_callback:
+ callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
+ body:
+ properties:
+ - 'schema:text'
+ uid:
+ properties:
+ - 'schema:author'
+ field_image:
+ properties:
+ - 'schema:image'
+ field_tags:
+ properties:
+ - 'schema:about'
diff --git a/core/profiles/demo_umami/config/install/rdf.mapping.node.page.yml b/core/profiles/demo_umami/config/install/rdf.mapping.node.page.yml
new file mode 100644
index 0000000..c515236
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/rdf.mapping.node.page.yml
@@ -0,0 +1,33 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - node.type.page
+ module:
+ - node
+id: node.page
+targetEntityType: node
+bundle: page
+types:
+ - 'schema:WebPage'
+fieldMappings:
+ title:
+ properties:
+ - 'schema:name'
+ created:
+ properties:
+ - 'schema:dateCreated'
+ datatype_callback:
+ callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
+ changed:
+ properties:
+ - 'schema:dateModified'
+ datatype_callback:
+ callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
+ body:
+ properties:
+ - 'schema:text'
+ uid:
+ properties:
+ - 'schema:author'
+ mapping_type: rel
diff --git a/core/profiles/demo_umami/config/install/rdf.mapping.taxonomy_term.tags.yml b/core/profiles/demo_umami/config/install/rdf.mapping.taxonomy_term.tags.yml
new file mode 100644
index 0000000..46b43f1
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/rdf.mapping.taxonomy_term.tags.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - taxonomy.vocabulary.tags
+ module:
+ - taxonomy
+id: taxonomy_term.tags
+targetEntityType: taxonomy_term
+bundle: tags
+types:
+ - 'schema:Thing'
+fieldMappings:
+ name:
+ properties:
+ - 'schema:name'
+ description:
+ properties:
+ - 'schema:description'
diff --git a/core/profiles/demo_umami/config/install/responsive_image.styles.3_2_image.yml b/core/profiles/demo_umami/config/install/responsive_image.styles.3_2_image.yml
new file mode 100644
index 0000000..b8fb098
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/responsive_image.styles.3_2_image.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - image.style.large_3_2_2x
+ - image.style.large_3_2_768x512
+ - image.style.medium_3_2_2x
+ - image.style.medium_3_2_600x400
+id: 3_2_image
+label: '3:2 Image'
+image_style_mappings:
+ -
+ breakpoint_id: responsive_image.viewport_sizing
+ multiplier: 1x
+ image_mapping_type: sizes
+ image_mapping:
+ sizes: 100vw
+ sizes_image_styles:
+ - large_3_2_2x
+ - large_3_2_768x512
+ - medium_3_2_2x
+ - medium_3_2_600x400
+breakpoint_group: responsive_image
+fallback_image_style: large_3_2_768x512
diff --git a/core/profiles/demo_umami/config/install/responsive_image.styles.hero_or_banner.yml b/core/profiles/demo_umami/config/install/responsive_image.styles.hero_or_banner.yml
new file mode 100644
index 0000000..152dc24
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/responsive_image.styles.hero_or_banner.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - image.style.large_21_9
+ - image.style.large_21_9_2x
+ - image.style.medium_21_9
+ - image.style.small_21_9
+id: hero_or_banner
+label: 'Hero or Banner'
+image_style_mappings:
+ -
+ breakpoint_id: responsive_image.viewport_sizing
+ multiplier: 1x
+ image_mapping_type: sizes
+ image_mapping:
+ sizes: 100vw
+ sizes_image_styles:
+ - large_21_9
+ - large_21_9_2x
+ - medium_21_9
+ - small_21_9
+breakpoint_group: responsive_image
+fallback_image_style: small_21_9
diff --git a/core/profiles/demo_umami/config/install/responsive_image.styles.square.yml b/core/profiles/demo_umami/config/install/responsive_image.styles.square.yml
new file mode 100644
index 0000000..1464ff8
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/responsive_image.styles.square.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - image.style.square_large
+ - image.style.square_medium
+ - image.style.square_small
+id: square
+label: Square
+image_style_mappings:
+ -
+ breakpoint_id: responsive_image.viewport_sizing
+ multiplier: 1x
+ image_mapping_type: sizes
+ image_mapping:
+ sizes: 100vw
+ sizes_image_styles:
+ - square_large
+ - square_medium
+ - square_small
+breakpoint_group: responsive_image
+fallback_image_style: square_medium
diff --git a/core/profiles/demo_umami/config/install/system.theme.yml b/core/profiles/demo_umami/config/install/system.theme.yml
new file mode 100644
index 0000000..e0ab8f2
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/system.theme.yml
@@ -0,0 +1,2 @@
+admin: seven
+default: umami
diff --git a/core/profiles/demo_umami/config/install/taxonomy.vocabulary.ingredients.yml b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.ingredients.yml
new file mode 100644
index 0000000..483a82d
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.ingredients.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: { }
+name: Ingredients
+vid: ingredients
+description: ''
+hierarchy: 0
+weight: 0
diff --git a/core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_category.yml b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_category.yml
new file mode 100644
index 0000000..ee82773
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_category.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: { }
+name: 'Recipe category'
+vid: recipe_category
+description: ''
+hierarchy: 0
+weight: 0
diff --git a/core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_cuisine.yml b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_cuisine.yml
new file mode 100644
index 0000000..1725b61
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.recipe_cuisine.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: { }
+name: 'Recipe cuisine'
+vid: recipe_cuisine
+description: ''
+hierarchy: 0
+weight: 0
diff --git a/core/profiles/demo_umami/config/install/taxonomy.vocabulary.tags.yml b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.tags.yml
new file mode 100644
index 0000000..8fac8f5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/taxonomy.vocabulary.tags.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: { }
+name: Tags
+vid: tags
+description: 'Use tags to group articles on similar topics into categories.'
+hierarchy: 0
+weight: 0
diff --git a/core/profiles/demo_umami/config/install/user.role.administrator.yml b/core/profiles/demo_umami/config/install/user.role.administrator.yml
new file mode 100644
index 0000000..e5453b7
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/user.role.administrator.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: { }
+id: administrator
+label: Administrator
+weight: 2
+is_admin: true
+permissions: { }
diff --git a/core/profiles/demo_umami/config/install/views.view.articles_aside.yml b/core/profiles/demo_umami/config/install/views.view.articles_aside.yml
new file mode 100644
index 0000000..ec99768
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/views.view.articles_aside.yml
@@ -0,0 +1,215 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_small
+ - node.type.article
+ module:
+ - node
+ - user
+id: articles_aside
+label: 'Articles aside'
+module: views
+description: ''
+tag: ''
+base_table: node_field_data
+base_field: nid
+core: 8.x
+display:
+ default:
+ display_plugin: default
+ id: default
+ display_title: Master
+ position: 0
+ display_options:
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ query:
+ type: views_query
+ options:
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_comment: ''
+ query_tags: { }
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ type: some
+ options:
+ items_per_page: 3
+ offset: 0
+ style:
+ type: default
+ row:
+ type: 'entity:node'
+ options:
+ relationship: none
+ view_mode: highlighted_small
+ fields:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ entity_type: node
+ entity_field: title
+ label: ''
+ alter:
+ alter_text: false
+ make_link: false
+ absolute: false
+ trim: false
+ word_boundary: false
+ ellipsis: false
+ strip_tags: false
+ html: false
+ hide_empty: false
+ empty_zero: false
+ settings:
+ link_to_entity: true
+ plugin_id: field
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exclude: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ filters:
+ status:
+ value: '1'
+ table: node_field_data
+ field: status
+ plugin_id: boolean
+ entity_type: node
+ entity_field: status
+ id: status
+ expose:
+ operator: ''
+ group: 1
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ value:
+ article: article
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ sorts:
+ created:
+ id: created
+ table: node_field_data
+ field: created
+ order: DESC
+ entity_type: node
+ entity_field: created
+ plugin_id: date
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exposed: false
+ expose:
+ label: ''
+ granularity: second
+ title: 'More featured articles'
+ header: { }
+ footer: { }
+ empty: { }
+ relationships: { }
+ arguments:
+ nid:
+ id: nid
+ table: node_field_data
+ field: nid
+ relationship: none
+ group_type: group
+ admin_label: ''
+ default_action: default
+ exception:
+ value: all
+ title_enable: false
+ title: All
+ title_enable: false
+ title: ''
+ default_argument_type: node
+ default_argument_options: { }
+ default_argument_skip_url: false
+ summary_options:
+ base_path: ''
+ count: true
+ items_per_page: 25
+ override: false
+ summary:
+ sort_order: asc
+ number_of_records: 0
+ format: default_summary
+ specify_validation: false
+ validate:
+ type: none
+ fail: 'not found'
+ validate_options: { }
+ break_phrase: false
+ not: true
+ entity_type: node
+ entity_field: nid
+ plugin_id: node_nid
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_1:
+ display_plugin: block
+ id: block_1
+ display_title: Block
+ position: 1
+ display_options:
+ display_extenders: { }
+ block_description: 'Articles aside'
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
diff --git a/core/profiles/demo_umami/config/install/views.view.featured_articles.yml b/core/profiles/demo_umami/config/install/views.view.featured_articles.yml
new file mode 100644
index 0000000..86cbc2a
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/views.view.featured_articles.yml
@@ -0,0 +1,203 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_small
+ - node.type.article
+ - system.menu.main
+ module:
+ - node
+ - user
+id: featured_articles
+label: 'Featured Articles'
+module: views
+description: 'A view to create a list of featured articles from the Umami website.'
+tag: ''
+base_table: node_field_data
+base_field: nid
+core: 8.x
+display:
+ default:
+ display_plugin: default
+ id: default
+ display_title: Master
+ position: 0
+ display_options:
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ query:
+ type: views_query
+ options:
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_comment: ''
+ query_tags: { }
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ type: mini
+ options:
+ items_per_page: 9
+ offset: 0
+ id: 0
+ total_pages: null
+ expose:
+ items_per_page: false
+ items_per_page_label: 'Items per page'
+ items_per_page_options: '5, 10, 25, 50'
+ items_per_page_options_all: false
+ items_per_page_options_all_label: '- All -'
+ offset: false
+ offset_label: Offset
+ tags:
+ previous: ‹‹
+ next: ››
+ style:
+ type: default
+ row:
+ type: 'entity:node'
+ options:
+ relationship: none
+ view_mode: highlighted_small
+ fields:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ entity_type: node
+ entity_field: title
+ label: ''
+ alter:
+ alter_text: false
+ make_link: false
+ absolute: false
+ trim: false
+ word_boundary: false
+ ellipsis: false
+ strip_tags: false
+ html: false
+ hide_empty: false
+ empty_zero: false
+ settings:
+ link_to_entity: true
+ plugin_id: field
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exclude: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ filters:
+ status:
+ value: '1'
+ table: node_field_data
+ field: status
+ plugin_id: boolean
+ entity_type: node
+ entity_field: status
+ id: status
+ expose:
+ operator: ''
+ group: 1
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ value:
+ article: article
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ sorts:
+ created:
+ id: created
+ table: node_field_data
+ field: created
+ order: DESC
+ entity_type: node
+ entity_field: created
+ plugin_id: date
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exposed: false
+ expose:
+ label: ''
+ granularity: second
+ title: Articles
+ header: { }
+ footer: { }
+ empty: { }
+ relationships: { }
+ arguments: { }
+ display_extenders: { }
+ css_class: grid--3
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ page_1:
+ display_plugin: page
+ id: page_1
+ display_title: Page
+ position: 1
+ display_options:
+ display_extenders: { }
+ path: articles
+ menu:
+ type: normal
+ title: Articles
+ description: ''
+ expanded: false
+ parent: ''
+ weight: 20
+ context: '0'
+ menu_name: main
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
diff --git a/core/profiles/demo_umami/config/install/views.view.frontpage.yml b/core/profiles/demo_umami/config/install/views.view.frontpage.yml
new file mode 100644
index 0000000..cb1054a
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/views.view.frontpage.yml
@@ -0,0 +1,343 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_bottom
+ - core.entity_view_mode.node.rss
+ - node.type.recipe
+ module:
+ - node
+ - user
+id: frontpage
+label: Frontpage
+module: node
+description: 'All content promoted to the front page.'
+tag: default
+base_table: node_field_data
+base_field: nid
+core: 8.x
+display:
+ default:
+ display_options:
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ empty:
+ area_text_custom:
+ admin_label: ''
+ content: 'No front page content has been created yet.'
+ empty: true
+ field: area_text_custom
+ group_type: group
+ id: area_text_custom
+ label: ''
+ relationship: none
+ table: views
+ tokenize: false
+ plugin_id: text_custom
+ node_listing_empty:
+ admin_label: ''
+ empty: true
+ field: node_listing_empty
+ group_type: group
+ id: node_listing_empty
+ label: ''
+ relationship: none
+ table: node
+ plugin_id: node_listing_empty
+ entity_type: node
+ title:
+ id: title
+ table: views
+ field: title
+ relationship: none
+ group_type: group
+ admin_label: ''
+ label: ''
+ empty: true
+ title: 'Welcome to [site:name]'
+ plugin_id: title
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ filters:
+ promote:
+ admin_label: ''
+ expose:
+ description: ''
+ identifier: ''
+ label: ''
+ multiple: false
+ operator: ''
+ operator_id: ''
+ remember: false
+ remember_roles:
+ authenticated: authenticated
+ required: false
+ use_operator: false
+ exposed: false
+ field: promote
+ group: 1
+ group_info:
+ default_group: All
+ default_group_multiple: { }
+ description: ''
+ group_items: { }
+ identifier: ''
+ label: ''
+ multiple: false
+ optional: true
+ remember: false
+ widget: select
+ group_type: group
+ id: promote
+ is_grouped: false
+ operator: '='
+ relationship: none
+ table: node_field_data
+ value: '1'
+ plugin_id: boolean
+ entity_type: node
+ entity_field: promote
+ status:
+ expose:
+ operator: ''
+ field: status
+ group: 1
+ id: status
+ table: node_field_data
+ value: '1'
+ plugin_id: boolean
+ entity_type: node
+ entity_field: status
+ langcode:
+ id: langcode
+ table: node_field_data
+ field: langcode
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: in
+ value:
+ '***LANGUAGE_language_content***': '***LANGUAGE_language_content***'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ plugin_id: language
+ entity_type: node
+ entity_field: langcode
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: in
+ value:
+ recipe: recipe
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ pager:
+ type: some
+ options:
+ items_per_page: 4
+ offset: 0
+ query:
+ type: views_query
+ options:
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_comment: ''
+ query_tags: { }
+ row:
+ type: 'entity:node'
+ options:
+ relationship: none
+ view_mode: highlighted_bottom
+ sorts:
+ sticky:
+ admin_label: ''
+ expose:
+ label: ''
+ exposed: false
+ field: sticky
+ group_type: group
+ id: sticky
+ order: DESC
+ relationship: none
+ table: node_field_data
+ plugin_id: boolean
+ entity_type: node
+ entity_field: sticky
+ created:
+ field: created
+ id: created
+ order: DESC
+ table: node_field_data
+ plugin_id: date
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exposed: false
+ expose:
+ label: ''
+ granularity: second
+ entity_type: node
+ entity_field: created
+ style:
+ type: default
+ options:
+ grouping: { }
+ row_class: ''
+ default_row_class: true
+ uses_fields: false
+ title: Recipes
+ header:
+ area:
+ id: area
+ table: views
+ field: area
+ relationship: none
+ group_type: group
+ admin_label: ''
+ empty: false
+ tokenize: false
+ content:
+ value: '<h2 class="text-align-center">Explore recipes across every type of occasion, ingredient, and skill level.</h2>'
+ format: full_html
+ plugin_id: text
+ footer: { }
+ relationships: { }
+ fields: { }
+ arguments: { }
+ display_extenders: { }
+ display_plugin: default
+ display_title: Master
+ id: default
+ position: 0
+ cache_metadata:
+ contexts:
+ - 'languages:language_interface'
+ - 'user.node_grants:view'
+ - user.permissions
+ max-age: -1
+ tags: { }
+ feed_1:
+ display_plugin: feed
+ id: feed_1
+ display_title: Feed
+ position: 2
+ display_options:
+ sitename_title: true
+ path: rss.xml
+ displays:
+ page_1: page_1
+ default: ''
+ pager:
+ type: some
+ options:
+ items_per_page: 10
+ offset: 0
+ style:
+ type: rss
+ options:
+ description: ''
+ grouping: { }
+ uses_fields: false
+ row:
+ type: node_rss
+ options:
+ relationship: none
+ view_mode: rss
+ display_extenders: { }
+ enabled: false
+ cache_metadata:
+ contexts:
+ - 'languages:language_interface'
+ - 'user.node_grants:view'
+ - user.permissions
+ max-age: -1
+ tags: { }
+ page_1:
+ display_options:
+ path: node
+ display_extenders: { }
+ css_class: grid--2
+ defaults:
+ css_class: false
+ display_plugin: page
+ display_title: Page
+ id: page_1
+ position: 1
+ cache_metadata:
+ contexts:
+ - 'languages:language_interface'
+ - 'user.node_grants:view'
+ - user.permissions
+ max-age: -1
+ tags: { }
diff --git a/core/profiles/demo_umami/config/install/views.view.promoted_items.yml b/core/profiles/demo_umami/config/install/views.view.promoted_items.yml
new file mode 100644
index 0000000..ed877d0
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/views.view.promoted_items.yml
@@ -0,0 +1,481 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_medium
+ - core.entity_view_mode.node.highlighted_top
+ - node.type.article
+ - node.type.recipe
+ module:
+ - node
+ - user
+id: promoted_items
+label: 'Promoted Items'
+module: views
+description: 'A view to list the items promoted to the top of the homepage.'
+tag: ''
+base_table: node_field_data
+base_field: nid
+core: 8.x
+display:
+ default:
+ display_plugin: default
+ id: default
+ display_title: Master
+ position: 0
+ display_options:
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ query:
+ type: views_query
+ options:
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_comment: ''
+ query_tags: { }
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ type: some
+ options:
+ items_per_page: 1
+ offset: 0
+ style:
+ type: default
+ row:
+ type: 'entity:node'
+ options:
+ relationship: none
+ view_mode: highlighted_top
+ fields:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ entity_type: node
+ entity_field: title
+ label: ''
+ alter:
+ alter_text: false
+ make_link: false
+ absolute: false
+ trim: false
+ word_boundary: false
+ ellipsis: false
+ strip_tags: false
+ html: false
+ hide_empty: false
+ empty_zero: false
+ settings:
+ link_to_entity: true
+ plugin_id: field
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exclude: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ filters:
+ status:
+ value: '1'
+ table: node_field_data
+ field: status
+ plugin_id: boolean
+ entity_type: node
+ entity_field: status
+ id: status
+ expose:
+ operator: ''
+ group: 1
+ promote:
+ id: promote
+ table: node_field_data
+ field: promote
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: node
+ entity_field: promote
+ plugin_id: boolean
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: in
+ value:
+ article: article
+ recipe: recipe
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ sorts:
+ created:
+ id: created
+ table: node_field_data
+ field: created
+ order: DESC
+ entity_type: node
+ entity_field: created
+ plugin_id: date
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exposed: false
+ expose:
+ label: ''
+ granularity: second
+ title: 'Promoted Items Double'
+ header: { }
+ footer: { }
+ empty: { }
+ relationships: { }
+ arguments: { }
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ attachment_1:
+ display_plugin: attachment
+ id: attachment_1
+ display_title: 'Attachment: Promoted Items Double'
+ position: 3
+ display_options:
+ display_extenders: { }
+ displays:
+ block_1: block_1
+ attachment_position: after
+ style:
+ type: default
+ options: { }
+ defaults:
+ style: false
+ row: false
+ css_class: false
+ filters: false
+ filter_groups: false
+ row:
+ type: 'entity:node'
+ options:
+ relationship: none
+ view_mode: highlighted_medium
+ pager:
+ type: some
+ options:
+ items_per_page: 2
+ offset: 0
+ display_description: ''
+ css_class: view-promoted-items--double
+ filters:
+ status:
+ value: '1'
+ table: node_field_data
+ field: status
+ plugin_id: boolean
+ entity_type: node
+ entity_field: status
+ id: status
+ expose:
+ operator: ''
+ group: 1
+ promote:
+ id: promote
+ table: node_field_data
+ field: promote
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: node
+ entity_field: promote
+ plugin_id: boolean
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: in
+ value:
+ recipe: recipe
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ filter_groups:
+ operator: AND
+ groups:
+ 1: AND
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_1:
+ display_plugin: block
+ id: block_1
+ display_title: 'Block: Promoted Items - Single'
+ position: 1
+ display_options:
+ display_extenders: { }
+ display_description: ''
+ css_class: 'container view-promoted-items--single'
+ defaults:
+ css_class: false
+ filters: false
+ filter_groups: false
+ filters:
+ status:
+ value: '1'
+ table: node_field_data
+ field: status
+ plugin_id: boolean
+ entity_type: node
+ entity_field: status
+ id: status
+ expose:
+ operator: ''
+ group: 1
+ promote:
+ id: promote
+ table: node_field_data
+ field: promote
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: node
+ entity_field: promote
+ plugin_id: boolean
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: in
+ value:
+ article: article
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ filter_groups:
+ operator: AND
+ groups:
+ 1: AND
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
diff --git a/core/profiles/demo_umami/config/install/views.view.recipes.yml b/core/profiles/demo_umami/config/install/views.view.recipes.yml
new file mode 100644
index 0000000..99c1b7f
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/views.view.recipes.yml
@@ -0,0 +1,203 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_small
+ - node.type.recipe
+ - system.menu.main
+ module:
+ - node
+ - user
+id: recipes
+label: Recipes
+module: views
+description: 'Recipes listing'
+tag: ''
+base_table: node_field_data
+base_field: nid
+core: 8.x
+display:
+ default:
+ display_plugin: default
+ id: default
+ display_title: Master
+ position: 0
+ display_options:
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ query:
+ type: views_query
+ options:
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_comment: ''
+ query_tags: { }
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ type: mini
+ options:
+ items_per_page: 12
+ offset: 0
+ id: 0
+ total_pages: null
+ tags:
+ previous: ‹‹
+ next: ››
+ expose:
+ items_per_page: false
+ items_per_page_label: 'Items per page'
+ items_per_page_options: '5, 10, 25, 50'
+ items_per_page_options_all: false
+ items_per_page_options_all_label: '- All -'
+ offset: false
+ offset_label: Offset
+ style:
+ type: default
+ row:
+ type: 'entity:node'
+ options:
+ relationship: none
+ view_mode: highlighted_small
+ fields:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ entity_type: node
+ entity_field: title
+ label: ''
+ alter:
+ alter_text: false
+ make_link: false
+ absolute: false
+ trim: false
+ word_boundary: false
+ ellipsis: false
+ strip_tags: false
+ html: false
+ hide_empty: false
+ empty_zero: false
+ settings:
+ link_to_entity: true
+ plugin_id: field
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exclude: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ filters:
+ status:
+ value: '1'
+ table: node_field_data
+ field: status
+ plugin_id: boolean
+ entity_type: node
+ entity_field: status
+ id: status
+ expose:
+ operator: ''
+ group: 1
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ value:
+ recipe: recipe
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ sorts:
+ created:
+ id: created
+ table: node_field_data
+ field: created
+ order: DESC
+ entity_type: node
+ entity_field: created
+ plugin_id: date
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exposed: false
+ expose:
+ label: ''
+ granularity: second
+ title: Recipes
+ header: { }
+ footer: { }
+ empty: { }
+ relationships: { }
+ arguments: { }
+ display_extenders: { }
+ css_class: grid--4
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ page_1:
+ display_plugin: page
+ id: page_1
+ display_title: Page
+ position: 1
+ display_options:
+ display_extenders: { }
+ path: recipes
+ menu:
+ type: normal
+ title: Recipes
+ description: ''
+ expanded: false
+ parent: ''
+ weight: 30
+ context: '0'
+ menu_name: main
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
diff --git a/core/profiles/demo_umami/config/install/views.view.taxonomy_term.yml b/core/profiles/demo_umami/config/install/views.view.taxonomy_term.yml
new file mode 100644
index 0000000..642ef8c
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/views.view.taxonomy_term.yml
@@ -0,0 +1,314 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.highlighted_small
+ module:
+ - node
+ - taxonomy
+ - user
+id: taxonomy_term
+label: 'Taxonomy term'
+module: taxonomy
+description: 'Content belonging to a certain taxonomy term.'
+tag: default
+base_table: node_field_data
+base_field: nid
+core: '8'
+display:
+ default:
+ id: default
+ display_title: Master
+ display_plugin: default
+ position: 0
+ display_options:
+ query:
+ type: views_query
+ options:
+ query_comment: ''
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_tags: { }
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ type: mini
+ options:
+ items_per_page: 12
+ offset: 0
+ id: 0
+ total_pages: 0
+ tags:
+ previous: ‹‹
+ next: ››
+ expose:
+ items_per_page: false
+ items_per_page_label: 'Items per page'
+ items_per_page_options: '5, 10, 25, 50'
+ items_per_page_options_all: false
+ items_per_page_options_all_label: '- All -'
+ offset: false
+ offset_label: Offset
+ sorts:
+ sticky:
+ id: sticky
+ table: taxonomy_index
+ field: sticky
+ order: DESC
+ plugin_id: standard
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exposed: false
+ expose:
+ label: ''
+ created:
+ id: created
+ table: taxonomy_index
+ field: created
+ order: DESC
+ plugin_id: date
+ relationship: none
+ group_type: group
+ admin_label: ''
+ exposed: false
+ expose:
+ label: ''
+ granularity: second
+ arguments:
+ tid:
+ id: tid
+ table: taxonomy_index
+ field: tid
+ relationship: none
+ group_type: group
+ admin_label: ''
+ default_action: 'not found'
+ exception:
+ value: ''
+ title_enable: false
+ title: All
+ title_enable: true
+ title: '{{ arguments.tid }}'
+ default_argument_type: fixed
+ default_argument_options:
+ argument: ''
+ default_argument_skip_url: false
+ summary_options:
+ base_path: ''
+ count: true
+ items_per_page: 25
+ override: false
+ summary:
+ sort_order: asc
+ number_of_records: 0
+ format: default_summary
+ specify_validation: true
+ validate:
+ type: 'entity:taxonomy_term'
+ fail: 'not found'
+ validate_options:
+ access: true
+ operation: view
+ multiple: 0
+ bundles: { }
+ break_phrase: false
+ add_table: false
+ require_value: false
+ reduce_duplicates: false
+ plugin_id: taxonomy_index_tid
+ filters:
+ langcode:
+ id: langcode
+ table: node_field_data
+ field: langcode
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: in
+ value:
+ '***LANGUAGE_language_content***': '***LANGUAGE_language_content***'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ plugin_id: language
+ entity_type: node
+ entity_field: langcode
+ status:
+ id: status
+ table: taxonomy_index
+ field: status
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ plugin_id: boolean
+ style:
+ type: default
+ options:
+ grouping: { }
+ row_class: ''
+ default_row_class: true
+ uses_fields: false
+ row:
+ type: 'entity:node'
+ options:
+ relationship: none
+ view_mode: highlighted_small
+ header:
+ entity_taxonomy_term:
+ id: entity_taxonomy_term
+ table: views
+ field: entity_taxonomy_term
+ relationship: none
+ group_type: group
+ admin_label: ''
+ empty: true
+ tokenize: true
+ target: '{{ raw_arguments.tid }}'
+ view_mode: full
+ bypass_access: false
+ plugin_id: entity
+ footer: { }
+ empty: { }
+ relationships: { }
+ fields: { }
+ display_extenders: { }
+ link_url: ''
+ link_display: page_1
+ css_class: grid--4
+ cache_metadata:
+ contexts:
+ - 'languages:language_interface'
+ - url
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ max-age: -1
+ tags: { }
+ feed_1:
+ id: feed_1
+ display_title: Feed
+ display_plugin: feed
+ position: 2
+ display_options:
+ query:
+ type: views_query
+ options: { }
+ pager:
+ type: some
+ options:
+ items_per_page: 10
+ offset: 0
+ path: taxonomy/term/%/feed
+ displays:
+ page_1: page_1
+ default: '0'
+ style:
+ type: rss
+ options:
+ description: ''
+ grouping: { }
+ uses_fields: false
+ row:
+ type: node_rss
+ options:
+ relationship: none
+ view_mode: default
+ display_extenders: { }
+ enabled: false
+ cache_metadata:
+ contexts:
+ - 'languages:language_interface'
+ - url
+ - 'user.node_grants:view'
+ - user.permissions
+ max-age: -1
+ tags: { }
+ page_1:
+ id: page_1
+ display_title: Page
+ display_plugin: page
+ position: 1
+ display_options:
+ query:
+ type: views_query
+ options: { }
+ path: taxonomy/term/%
+ display_extenders: { }
+ cache_metadata:
+ contexts:
+ - 'languages:language_interface'
+ - url
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ max-age: -1
+ tags: { }
diff --git a/core/profiles/demo_umami/config/optional/block.block.umami_banner_recipes.yml b/core/profiles/demo_umami/config/optional/block.block.umami_banner_recipes.yml
new file mode 100644
index 0000000..4a5a0bd
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/block.block.umami_banner_recipes.yml
@@ -0,0 +1,33 @@
+langcode: en
+status: true
+dependencies:
+ content:
+ - 'block_content:banner_block:4c7d58a3-a45d-412d-9068-259c57e40541'
+ enforced:
+ module:
+ - demo_umami_content
+ module:
+ - block_content
+ - system
+ theme:
+ - umami
+id: umami_banner_recipes
+theme: umami
+region: banner_top
+weight: -10
+provider: null
+plugin: 'block_content:4c7d58a3-a45d-412d-9068-259c57e40541'
+settings:
+ id: 'block_content:4c7d58a3-a45d-412d-9068-259c57e40541'
+ label: 'Umami Recipes Banner'
+ provider: block_content
+ label_display: '0'
+ status: true
+ info: ''
+ view_mode: full
+visibility:
+ request_path:
+ id: request_path
+ pages: "/recipes\r\n<front>"
+ negate: false
+ context_mapping: { }
diff --git a/core/profiles/demo_umami/config/optional/block.block.umami_disclaimer.yml b/core/profiles/demo_umami/config/optional/block.block.umami_disclaimer.yml
new file mode 100644
index 0000000..747a287
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/block.block.umami_disclaimer.yml
@@ -0,0 +1,25 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - demo_umami
+ theme:
+ - umami
+id: umami_disclaimer
+theme: umami
+region: bottom
+weight: 10
+provider: null
+plugin: umami_disclaimer
+settings:
+ id: umami_disclaimer
+ label: 'Umami disclaimer'
+ provider: demo_umami
+ label_display: '0'
+ umami_disclaimer:
+ value: '<strong>Umami Magazine & Umami Publications</strong> is a fictional magazine and publisher for illustrative purposes only.'
+ format: basic_html
+ umami_copyright:
+ value: '&copy; 2018 Terms & Conditions'
+ format: basic_html
+visibility: { }
diff --git a/core/profiles/demo_umami/config/optional/block.block.umami_footer_promo.yml b/core/profiles/demo_umami/config/optional/block.block.umami_footer_promo.yml
new file mode 100644
index 0000000..a85ebdb
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/block.block.umami_footer_promo.yml
@@ -0,0 +1,23 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - demo_umami
+ theme:
+ - umami
+id: umami_footer_promo
+theme: umami
+region: footer
+weight: -1
+provider: null
+plugin: umami_footer_promo
+settings:
+ id: umami_footer_promo
+ label: 'Umami Footer promo'
+ provider: demo_umami
+ label_display: '0'
+ promo_title: 'Umami Food Magazine'
+ promo_text: 'Skills and know-how. Magazine exclusive articles, recipes and plenty of reasons to get your copy today.'
+ findmore_url: '/about-umami'
+ findmore_text: 'Find out more'
+visibility: { }
diff --git a/core/profiles/demo_umami/config/optional/image.style.max_1300x1300.yml b/core/profiles/demo_umami/config/optional/image.style.max_1300x1300.yml
new file mode 100644
index 0000000..28aad5a
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/image.style.max_1300x1300.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ enforced:
+ module:
+ - responsive_image
+name: max_1300x1300
+label: 'Max 1300x1300'
+effects:
+ 04caae9a-fa3e-4ea6-ae09-9c26aec7d308:
+ uuid: 04caae9a-fa3e-4ea6-ae09-9c26aec7d308
+ id: image_scale
+ weight: 1
+ data:
+ width: 1300
+ height: 1300
+ upscale: false
diff --git a/core/profiles/demo_umami/config/optional/image.style.max_2600x2600.yml b/core/profiles/demo_umami/config/optional/image.style.max_2600x2600.yml
new file mode 100644
index 0000000..ace3a8a
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/image.style.max_2600x2600.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ enforced:
+ module:
+ - responsive_image
+name: max_2600x2600
+label: 'Max 2600x2600'
+effects:
+ 9b311dd1-0351-45a1-9500-cd069e4670cb:
+ uuid: 9b311dd1-0351-45a1-9500-cd069e4670cb
+ id: image_scale
+ weight: 3
+ data:
+ width: 2600
+ height: 2600
+ upscale: false
diff --git a/core/profiles/demo_umami/config/optional/image.style.max_325x325.yml b/core/profiles/demo_umami/config/optional/image.style.max_325x325.yml
new file mode 100644
index 0000000..6a2289e
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/image.style.max_325x325.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ enforced:
+ module:
+ - responsive_image
+name: max_325x325
+label: 'Max 325x325'
+effects:
+ cb842cc8-682f-42a6-bd05-5a1ac726f0d8:
+ uuid: cb842cc8-682f-42a6-bd05-5a1ac726f0d8
+ id: image_scale
+ weight: 1
+ data:
+ width: 325
+ height: 325
+ upscale: false
diff --git a/core/profiles/demo_umami/config/optional/image.style.max_650x650.yml b/core/profiles/demo_umami/config/optional/image.style.max_650x650.yml
new file mode 100644
index 0000000..9aa0fb5
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/image.style.max_650x650.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ enforced:
+ module:
+ - responsive_image
+name: max_650x650
+label: 'Max 650x650'
+effects:
+ 949c201a-77f5-48f6-ba00-be91eb1aad47:
+ uuid: 949c201a-77f5-48f6-ba00-be91eb1aad47
+ id: image_scale
+ weight: 1
+ data:
+ width: 650
+ height: 650
+ upscale: false
diff --git a/core/profiles/demo_umami/config/optional/responsive_image.styles.narrow.yml b/core/profiles/demo_umami/config/optional/responsive_image.styles.narrow.yml
new file mode 100644
index 0000000..8f24267
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/responsive_image.styles.narrow.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - image.style.max_1300x1300
+ - image.style.max_325x325
+ - image.style.max_650x650
+id: narrow
+label: Narrow
+image_style_mappings:
+ -
+ breakpoint_id: responsive_image.viewport_sizing
+ multiplier: 1x
+ image_mapping_type: sizes
+ image_mapping:
+ sizes: '(min-width: 1290px) 325px, (min-width: 851px) 25vw, (min-width: 560px) 50vw, 100vw'
+ sizes_image_styles:
+ - max_1300x1300
+ - max_650x650
+ - max_325x325
+breakpoint_group: responsive_image
+fallback_image_style: max_325x325
diff --git a/core/profiles/demo_umami/config/optional/responsive_image.styles.wide.yml b/core/profiles/demo_umami/config/optional/responsive_image.styles.wide.yml
new file mode 100644
index 0000000..f689ba8
--- /dev/null
+++ b/core/profiles/demo_umami/config/optional/responsive_image.styles.wide.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - image.style.max_1300x1300
+ - image.style.max_2600x2600
+ - image.style.max_325x325
+ - image.style.max_650x650
+id: wide
+label: Wide
+image_style_mappings:
+ -
+ breakpoint_id: responsive_image.viewport_sizing
+ multiplier: 1x
+ image_mapping_type: sizes
+ image_mapping:
+ sizes: '(min-width: 1290px) 1290px, 100vw'
+ sizes_image_styles:
+ - max_2600x2600
+ - max_1300x1300
+ - max_650x650
+ - max_325x325
+breakpoint_group: responsive_image
+fallback_image_style: max_325x325
diff --git a/core/profiles/demo_umami/config/schema/demo_umami.schema.yml b/core/profiles/demo_umami/config/schema/demo_umami.schema.yml
new file mode 100644
index 0000000..49e2129
--- /dev/null
+++ b/core/profiles/demo_umami/config/schema/demo_umami.schema.yml
@@ -0,0 +1,31 @@
+block.settings.umami_disclaimer:
+ type: block_settings
+ label: 'Disclaimer block'
+ mapping:
+ umami_disclaimer:
+ type: text_format
+ label: 'Disclaimer'
+ umami_copyright:
+ type: text_format
+ label: 'Copyright'
+
+block.settings.umami_footer_promo:
+ type: block_settings
+ label: 'Footer promo block'
+ mapping:
+ promo_title:
+ type: string
+ label: 'Promo title'
+ promo_text:
+ type: string
+ label: 'Promo text'
+ findmore_url:
+ type: string
+ label: 'Find more URL'
+ findmore_text:
+ type: string
+ label: 'Find more text'
+
+block.settings.umami_recipes_banner_temp:
+ type: block_settings
+ label: 'Banner'
diff --git a/core/profiles/demo_umami/css/toolbar-warning.css b/core/profiles/demo_umami/css/toolbar-warning.css
new file mode 100644
index 0000000..163d3c6
--- /dev/null
+++ b/core/profiles/demo_umami/css/toolbar-warning.css
@@ -0,0 +1,32 @@
+/**
+ * @file
+ * Styling for toolbar warning message.
+ */
+
+.toolbar-warning {
+ margin: 0.5em 0;
+ padding: 0.5em 2em 0.5em 2.3333em;
+ background: url(../../../../core/misc/icons/e29700/warning.svg) no-repeat center center transparent;
+ background-size: auto 20px;
+ text-indent: -1000px;
+ overflow: hidden;
+}
+
+.toolbar-warning:hover {
+ color: #000;
+}
+
+@media only screen and (min-width: 40em) {
+ .toolbar-warning {
+ padding-right: 1em;
+ border-radius: 4px;
+ border-color: #f4daa6;
+ background-color: #fdf8ed;
+ background-position: 0.5em center;
+ background-size: auto 18px;
+ text-indent: 0;
+ text-decoration: none;
+ font-weight: bold;
+ color: #000;
+ }
+}
diff --git a/core/profiles/demo_umami/demo_umami.info.yml b/core/profiles/demo_umami/demo_umami.info.yml
new file mode 100644
index 0000000..aa9367e
--- /dev/null
+++ b/core/profiles/demo_umami/demo_umami.info.yml
@@ -0,0 +1,44 @@
+name: Umami Demo - <strong>Experimental</strong>
+type: profile
+description: 'Install with the <i>Umami</i> food magazine demonstration website, a sample Drupal website that shows off some of the features of what is possible with Drupal "Out of the Box".<br><div role="contentinfo" aria-label="Warning message" class="messages messages--warning">Warning: this is a sample website, you should not use it as the basis for your website.</div>'
+version: VERSION
+core: 8.x
+dependencies:
+ - node
+ - history
+ - big_pipe
+ - block
+ - breakpoint
+ - ckeditor
+ - color
+ - config
+ - contextual
+ - contact
+ - menu_link_content
+ - datetime
+ - block_content
+ - quickedit
+ - editor
+ - help
+ - image
+ - menu_ui
+ - options
+ - path
+ - page_cache
+ - dynamic_page_cache
+ - taxonomy
+ - dblog
+ - search
+ - shortcut
+ - toolbar
+ - field_ui
+ - file
+ - rdf
+ - views
+ - views_ui
+ - tour
+ - automated_cron
+ - responsive_image
+themes:
+ - seven
+ - umami
diff --git a/core/profiles/demo_umami/demo_umami.install b/core/profiles/demo_umami/demo_umami.install
new file mode 100644
index 0000000..b3c1bfe
--- /dev/null
+++ b/core/profiles/demo_umami/demo_umami.install
@@ -0,0 +1,106 @@
+<?php
+
+/**
+ * @file
+ * Install, update and uninstall functions for the demo_umami installation profile.
+ */
+
+use Drupal\user\Entity\User;
+use Drupal\user\RoleInterface;
+use Drupal\shortcut\Entity\Shortcut;
+
+/**
+ * Implements hook_requirements().
+ */
+function demo_umami_requirements($phase) {
+ $requirements = [];
+ if ($phase == 'runtime') {
+ $demo_umami_installed_drupal = \Drupal::state()->get('demo_umami_drupal_version');
+
+ $requirements['experimental_profile_used'] = [
+ 'title' => t('Experimental profile used'),
+ 'value' => \Drupal::VERSION,
+ 'description' => t('Demo Umami is an experimental profile to be used for demonstration purposes only, and should not be used for a production/live site. To start building a new site, you should re-install Drupal and choose another profile, for example "Standard".'),
+ 'severity' => REQUIREMENT_WARNING,
+ ];
+
+ // Check if Drupal version has changed since demo_umami was installed.
+ if ($demo_umami_installed_drupal != \Drupal::VERSION) {
+ $requirements['demo_umami_drupal_version'] = [
+ 'title' => t('Demo Umami Drupal Version'),
+ 'value' => \Drupal::VERSION,
+ 'description' => t('Drupal has been updated since this demo was installed, which could cause issues with this site. It is recommended that you re-install the demo to evaluate the latest changes.'),
+ 'severity' => REQUIREMENT_ERROR,
+ ];
+ }
+ }
+ return $requirements;
+}
+
+/**
+ * Implements hook_install().
+ *
+ * Perform actions to set up the site for this profile.
+ *
+ * @see system_install()
+ */
+function demo_umami_install() {
+ // Set front page to "node".
+ \Drupal::configFactory()->getEditable('system.site')->set('page.front', '/node')->save(TRUE);
+
+ // Allow visitor account creation with administrative approval.
+ $user_settings = \Drupal::configFactory()->getEditable('user.settings');
+ $user_settings->set('register', USER_REGISTER_ADMINISTRATORS_ONLY)->save(TRUE);
+
+ // Assign user 1 the "administrator" role.
+ $user = User::load(1);
+ $user->roles[] = 'administrator';
+ $user->save();
+
+ // We install some menu links, so we have to rebuild the router, to ensure the
+ // menu links are valid.
+ \Drupal::service('router.builder')->rebuildIfNeeded();
+
+ // Enable the Contact link in the footer menu.
+ /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */
+ $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
+ $menu_link_manager->updateDefinition('contact.site_page', ['enabled' => TRUE]);
+
+ user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
+ user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['access site-wide contact form']);
+
+ // Allow authenticated users to use shortcuts.
+ user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['access shortcuts']);
+
+ // Populate the default shortcut set.
+ $shortcut = Shortcut::create([
+ 'shortcut_set' => 'default',
+ 'title' => t('Add content'),
+ 'weight' => -20,
+ 'link' => ['uri' => 'internal:/node/add'],
+ ]);
+ $shortcut->save();
+
+ $shortcut = Shortcut::create([
+ 'shortcut_set' => 'default',
+ 'title' => t('All content'),
+ 'weight' => -19,
+ 'link' => ['uri' => 'internal:/admin/content'],
+ ]);
+ $shortcut->save();
+
+ // Allow all users to use search.
+ user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['search content']);
+ user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['search content']);
+
+ // Enable the admin theme.
+ \Drupal::configFactory()->getEditable('node.settings')->set('use_admin_theme', TRUE)->save(TRUE);
+
+ // Enable the demo content module. This can't be specified as a dependency
+ // in the demo_umami.info.yml file, as it requires configuration provided by
+ // the profile (fields etc.).
+ \Drupal::service('module_installer')->install(['demo_umami_content'], TRUE);
+
+ // Store the version of Drupal installed.
+ \Drupal::state()->set('demo_umami_drupal_version', \Drupal::VERSION);
+}
diff --git a/core/profiles/demo_umami/demo_umami.libraries.yml b/core/profiles/demo_umami/demo_umami.libraries.yml
new file mode 100644
index 0000000..14ead3f
--- /dev/null
+++ b/core/profiles/demo_umami/demo_umami.libraries.yml
@@ -0,0 +1,4 @@
+toolbar-warning:
+ css:
+ component:
+ css/toolbar-warning.css: {}
diff --git a/core/profiles/demo_umami/demo_umami.links.menu.yml b/core/profiles/demo_umami/demo_umami.links.menu.yml
new file mode 100644
index 0000000..2278b21
--- /dev/null
+++ b/core/profiles/demo_umami/demo_umami.links.menu.yml
@@ -0,0 +1,4 @@
+standard.front_page:
+ title: 'Home'
+ route_name: '<front>'
+ menu_name: main
diff --git a/core/profiles/demo_umami/demo_umami.profile b/core/profiles/demo_umami/demo_umami.profile
new file mode 100644
index 0000000..02a5853
--- /dev/null
+++ b/core/profiles/demo_umami/demo_umami.profile
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * @file
+ * Enables modules and site configuration for a demo_umami site installation.
+ */
+
+use Drupal\contact\Entity\ContactForm;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Implements hook_form_FORM_ID_alter() for install_configure_form().
+ *
+ * Allows the profile to alter the site configuration form.
+ */
+function demo_umami_form_install_configure_form_alter(&$form, FormStateInterface $form_state) {
+ $form['site_information']['site_name']['#default_value'] = 'Umami Food Magazine';
+ $form['#submit'][] = 'demo_umami_form_install_configure_submit';
+}
+
+/**
+ * Submission handler to sync the contact.form.feedback recipient.
+ */
+function demo_umami_form_install_configure_submit($form, FormStateInterface $form_state) {
+ $site_mail = $form_state->getValue('site_mail');
+ ContactForm::load('feedback')->setRecipients([$site_mail])->trustData()->save();
+}
+
+/**
+ * Implements hook_toolbar().
+ */
+function demo_umami_toolbar() {
+ // Add a warning about using an experimental profile.
+ // @todo: This can be removed once a generic warning for experimental profiles has been introduced.
+ // @see https://www.drupal.org/project/drupal/issues/2934374
+ $items['experimental-profile-warning'] = [
+ '#type' => 'toolbar_item',
+ 'tab' => [
+ '#type' => 'inline_template',
+ '#template' => '<a class="toolbar-warning" href="{{ more_info_link }}">This installation is for demonstration purposes only.</a>',
+ '#context' => [
+ 'more_info_link' => 'https://www.drupal.org/project/drupal/issues/2829101',
+ ],
+ '#attached' => [
+ 'library' => ['demo_umami/toolbar-warning'],
+ ],
+ ],
+ '#weight' => 999,
+ ];
+ return $items;
+}
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt b/core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt
new file mode 100644
index 0000000..ba9479a
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt
@@ -0,0 +1,23 @@
+Creative Commons Attribution-ShareAlike 4.0 International License
+================================================================================
+
+The following image files:
+
+chocolate-brownie-umami.jpg by Keith Jay
+heritage-carrots.jpg by Keith Jay
+home-grown-herbs.jpg by Keith Jay
+mediterranean-quiche-umami.jpg by Keith Jay
+mushrooms-umami.jpg by Keith Jay
+pineapple-placeholder-10.jpg by Keith Jay
+pizza-umami.jpg by Keith Jay
+supermarket-savvy-umami.jpg by Keith Jay
+thai-green-curry-umami.jpg by Keith Jay
+veggie-pasta-bake-hero-umami.jpg by Keith Jay
+veggie-pasta-bake-umami.jpg by Keith Jay
+victoria-sponge-umami.jpg by Keith Jay
+watercress-soup-umami.jpg by Keith Jay
+
+are all licensed under a http://creativecommons.org/licenses/by-sa/4.0/ Creative
+Commons Attribution-ShareAlike 4.0 International License.
+
+================================================================================
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/articles.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/articles.csv
new file mode 100644
index 0000000..7b24c5f
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/articles.csv
@@ -0,0 +1,91 @@
+title,body,author,slug,image,alt,tags
+Give it a go and grow your own herbs,"There&rsquo;s nothing like having your own supply of fresh herbs, readily available and close at hand to use whilst cooking. Whether you have a large allotment or a small kitchen window sill, there’s always enough room for something home grown.
+
+<h2>Outdoors</h2>
+
+<h3>Mint</h3>
+
+Mint is a great plant to grow as its hardy and can grow in almost any soil. Mint can go totally wild though, so keep it contained in a pot or it might spread and take over your whole garden or allotment.
+
+<h3>Sage</h3>
+
+Like mint, sage is another prolific growing plant and will take over your garden if you let it. Highly aromatic, the sage plant can be planted in a pot or flower bed in well drained soil. The best way to store the herb is to sun dry the leaves and store in a cool, dark cupboard in a sealed container.
+
+<h3>Rosemary</h3>
+
+Rosemary plants grow into lovely shrubs. Easily grown from cuttings, rosemary plants do not like freezing temperatures so keep pots or planted bushes near the home to shelter them from the cold. It grows well in pots as it likes dry soil, but can survive well in the ground too. If pruning rosemary to encourage it into a better shape, save the branches and hang them upside down to preserve the flavour and use in food.&nbsp;
+
+<h2>Indoors</h2>
+
+<h3>Basil</h3>
+
+Perfect in sunny spot on a kitchen window sill. Basil is an annual plant, so will die off in the autumn, so it’s a good idea to harvest it in the summer if you have an abundance and dry it. Picked basil stays fresh longer if it is placed in water (like fresh flowers). A great way to store basil is to make it into pesto!
+
+<h3>Chives</h3>
+
+A versatile herb, chives can grow well indoors. Ensure the plant is watered well, and gets plenty of light. Remember to regularly trim the chives. This prevents the flowers from developing and encourages new growth.
+
+<h3>Coriander (Cilantro)</h3>
+
+Coriander can grow indoors, but unlike the other herbs, it doesn't like full sun in the middle of the day. If you have a south facing kitchen window, this isn't the place for it. Although not as thirsty as basil, coriander doesn't like dry soil so don’t forget to water it! Cut coriander is best stored in the fridge.",Holly Foat,articles/give-it-a-go-and-grow-your-own-herbs,home-grown-herbs.jpg,"Fresh cut herbs including mint, parsley, thyme and dill","Grow your own,Seasonal,Herbs"
+The real deal for supermarket savvy shopping,"This may not surprise you - but your supermarket is a hot bed of marketing mayhem, designed to improve their profit and to encourage the consumer to spend more than they intended. The tricks that all supermarkets employ are sometimes sensible ploys that any retailer should do to improve sales - but some may be more subtle and less obvious than you might think.
+
+With consumer awareness articles and documentaries frequently picking up on this topic, it&rsquo;s likely the case that retailers find it harder to get away with the more obvious ploys. We are becoming ever more savvy consumers and there&rsquo;s probably not a great deal that gets past us. But here&rsquo;s a few retail tricks to keep in mind when you are rushing around the weekly supermarket stock-up.
+
+<h2>Lost essentials</h2>
+
+The layout of your supermarket may make sense to you when you have shopped there for a while, but for newcomers, trying to find essentials, it may make very little sense at all. Some supermarkets have noted that people come to their store to buy milk, bread or eggs and that by hiding these essentials in the far reaches of the store, they encourage the newcomer to wander the aisles - picking up other items as they go.
+
+Sure, this can be great for nudging the memory on essentials you might otherwise forget, but for saving the pennies it&rsquo;s tough to stick to grabbing only the things you came for and the supermarkets know it!
+
+<blockquote>
+Our tip: Make your shopping list before leaving the house, checking what you need and sticking to that list. You could be amazed by what you&rsquo;ll save over time.
+</blockquote>
+
+<h2>Nonsensical multibuys</h2>
+
+Buy one, get one free; two for &pound;2 and meal deals. They all seem like a great deal. But in some cases these are loss leaders that are positioned to encourage you to take up the deal and buy other stuff while you are there. In other cases, deals for multi-buy or discounts on specific pack sizes might seem like a bargain, until you compare the pricing like-for-like on similar brands or with pack sizes for the same brand. These deals can mean you end up paying less but is it less for something you don&rsquo;t really need and in some cases you can end up paying more for the item. Remember, the supermarkets know you are often in a hurry and might not have the time to take in the full picture.
+
+<blockquote>
+Our tip: Don&rsquo;t be rushed, take the time to read the small print. The large print will draw you in but if you read the label small print, you should find the price per 100 grams or per litre and you&rsquo;ll be surprised how often the headline deals are actually more expensive than just buying a different package type or size of the product.
+</blockquote>
+
+<h2>Understanding our shopping habits</h2>
+
+The cheapest products in a supermarket are almost always positioned on the bottom of the shelving where you&rsquo;ll need to bend over to pick it up. You also may not be able to easily read the price ticket. Most people will shop on the middle rows because it is easier and often quicker. These are where the highest profit items are kept and they are the ones the supermarkets want you to buy.
+
+The layout, the music, the colours and the product types are all decided based on principles laid down by industry experts on people - psychologists and behavioural experts who know how we think. And so the savvy shopper will certainly be able to take advantage of great deals in their weekly shop, but it takes a little time and effort just to be more aware of what we are being encouraged to reach for in the aisles.",Megan Collins Quinlan,articles/the-real-deal-for-supermarket-savvy-shopping,supermarket-savvy-umami.jpg,Products presented on supermarket shelving.,"Supermarkets,Shopping"
+The umami guide to our favourite mushrooms,"We think mushrooms are one of the most enjoyable ingredients to cook with. There are plenty of edible varieties to try, each with their own distinctive shape, size and taste. And with curious names such as chanterelle, the gypsy, horn of plenty or hen of the woods, who wouldn't want to know more about cooking with the mighty mushroom?
+
+One of the best things about mushrooms is their versatility. They can be fried, roasted, grilled, steamed or even cooked in the microwave, and they can be served as the main ingredient for a dish, or simply added as part of the mix. This makes mushrooms an ideal choice for creating absolutely delicious vegetarian dishes.
+
+So let's take a look at some of our favourite types of mushroom. You might not have tried cooking with them before but don't let that put you off. With their delicious, distinctive flavours you can easily transform soups, starters, sauces and create amazing pasta or stir-fry dishes.
+
+Try the lovely <strong>shiitake</strong>. Used in Asian cooking, these can be purchased dried and rehydrated for a strong, deep flavour. Or buy fresh and add to soups and stir-fries. Not only does this mushroom have an intense flavour, it looks lovely too. The deep brown and smooth shapes will provide texture to your meal. In their dried form and rehydrated, these are the perfect addition for a deep and flavourful stock for a risotto.
+
+The gorgeous sunny <strong>chanterelle</strong> with its yellow flesh has a fruity flavour - but it is worth mentioning that there are many lookalikes out there and care should be taken to ensure you're eating the right ones. These look great in an omelette or an asian soup to complement the yellow tones.
+
+The brown <strong>morel</strong> offers a meaty and distinctive flavour and you'll probably love how extraordinary they look in a meal. The morel is a more popular mushroom during the spring, when their availability is high.
+
+For delicacy try the <strong>enoki</strong> with its tiny white heads that grow in a bunch. These can even be eaten raw in salads. Finally, you can choose the popular <strong>oyster</strong> mushroom. They are named thus because they look nothing like a mushroom and resemble the innards of an oyster and their sweet flavour is delicious.",Umami,articles/the-umami-guide-to-our-favourite-mushrooms,mushrooms-umami.jpg,A delightful selection of mushroom varieties laid out on a simple wooden plate.,"Mushrooms,Vegetarian"
+Let's hear it for carrots,"Let's hear it for the humble carrot! This sweet and healthy &lsquo;everyday&rsquo; veg packs it all in. Great flavour, fantastic colour, and if you're one for believing the old story, they can even help you to see better in the dark.
+
+Who doesn't love cooking with this super versatile root veg? We roast them, boil them, blend them into soups and grate them into salads. The humble carrot has to be one of our favourite veg choices and it's been grown for thousands of years. But back then you were more likely to find a purple, red, yellow or white carrot and not the orange one we are all so familiar with today.
+
+<h2>So what happened? When did orange become the preferred colour?</h2>
+
+It was the Dutch during the 17th century who cultivated and made popular the orange variety, most likely because of its brilliant colour and higher levels of beta carotene. And it has also been suggested that they were cultivated in tribute to William of Orange, who led the struggle during the Dutch battle for independence.
+
+For whatever reason, the orange variety has stuck but look out for the &lsquo;heritage&rsquo; varieties at farmers markets and grocers, their mix of purple, yellow, orange and white are especially appealing to cook with and look absolutely great served as a side dish.
+
+<h2>Nutrition</h2>
+
+Carrots are rich in beta carotene which your body converts into vitamin A. It's often tricky to know whether cooking vegetables will enhance or reduce their nutritious value and unfortunately there's no simple rule. But in the case of carrots, nutrition is enhanced by consuming them cooked. In fact, it only takes 100 grams of carrots to get more than your daily value of vitamin A.
+
+<h2>Get them at their best</h2>
+
+Young carrots, harvested when they are small have an especially sweet flavour and they are absolutely delicious. To cook them you can skip the peeling, give them a good wash and pop them in the steamer for just a few minutes. Carrots will taste the best when they are fresh, so make sure they are firm and bright in colour when buying.
+
+<h2>And that thing about carrots helping you see more in the dark?</h2>
+
+Of course it's a myth. During World War II the U.K. Ministry of Food promoted carrots as a super healthy veg that would improve your ability to see during the blackouts and as an explanation for the succesfull night missions of UK fighter pilots. In reality, the only truth in the connection between carrots and improved eye sight is that vitamin A does indeed help to maintain vision.",Umami,articles/lets-hear-it-for-carrots,heritage-carrots.jpg,"Purple, orange, yellow and white heritage carrots.","Carrots,Vegetarian,Healthy" \ No newline at end of file
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/chocolate-brownie-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/chocolate-brownie-umami.jpg
new file mode 100644
index 0000000..94fc918
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/chocolate-brownie-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/heritage-carrots.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/heritage-carrots.jpg
new file mode 100644
index 0000000..c17324c
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/heritage-carrots.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/home-grown-herbs.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/home-grown-herbs.jpg
new file mode 100644
index 0000000..8136fec
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/home-grown-herbs.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mediterranean-quiche-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mediterranean-quiche-umami.jpg
new file mode 100644
index 0000000..96133b7
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mediterranean-quiche-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mushrooms-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mushrooms-umami.jpg
new file mode 100644
index 0000000..bde3a02
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/mushrooms-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pineapple-placeholder-10.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pineapple-placeholder-10.jpg
new file mode 100644
index 0000000..aebdc5d
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pineapple-placeholder-10.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pizza-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pizza-umami.jpg
new file mode 100644
index 0000000..ce8164f
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/pizza-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/supermarket-savvy-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/supermarket-savvy-umami.jpg
new file mode 100644
index 0000000..ac104f3
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/supermarket-savvy-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/thai-green-curry-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/thai-green-curry-umami.jpg
new file mode 100644
index 0000000..b12141c
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/thai-green-curry-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-hero-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-hero-umami.jpg
new file mode 100644
index 0000000..4b1bc41
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-hero-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-umami.jpg
new file mode 100644
index 0000000..88ccb39
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/veggie-pasta-bake-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/victoria-sponge-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/victoria-sponge-umami.jpg
new file mode 100644
index 0000000..224d106
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/victoria-sponge-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/watercress-soup-umami.jpg b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/watercress-soup-umami.jpg
new file mode 100644
index 0000000..d33dbbf
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/watercress-soup-umami.jpg
Binary files differ
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/pages.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/pages.csv
new file mode 100644
index 0000000..5050922
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/pages.csv
@@ -0,0 +1,2 @@
+title,body,author,slug
+About Umami,"<p>Umami is a fictional food magazine that has been created to demonstrate how you might build a Drupal site using functionality provided 'out of the box'.</p><p>For more information visit <a href='https://www.drupal.org/project/ideas/issues/2847582'>https://www.drupal.org/project/ideas/issues/2847582</a>.</p>",Samuel Adamson,about-umami \ No newline at end of file
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv
new file mode 100644
index 0000000..4b0c5fd
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv
@@ -0,0 +1,8 @@
+title,image,alt,summary,author,recipe_category,preparation_time,cooking_time,total_time,difficulty,ingredients,recipe_instruction,number_of_servings,tags,slug
+Deep mediterranean quiche,mediterranean-quiche-umami.jpg,"A delicious deep layered Mediterranean quiche, sliced.",An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.,Umami,Main course,40,30,70,medium,"For the pastry:,280g plain flour,140g butter,Cold water,For the filling:,1 onion (chopped),2 cloves of garlic (chopped),Half courgette (chopped),450ml soya milk,500g grated parmesan,2 eggs,200g sun dried tomatoes,100g feta","<ol><li>Preheat the oven to 200C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.</li><li>Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.</li><li>Whilst the pastry is cooling, gently cook the onions, garlic and courgette.</li><li>In a large bowl, add the soya milk, half the parmesan, and the eggs. Gently mix.</li><li>Once the pastry is cooked, spread the onions, garlic and sun dried tomatoes over the base and pour the eggs mix over. Sprinkle the remaining parmesan and careful lay the feta over the top. Bake for 30 minutes or until golden brown.</li></ol>",8,"Pastry,Egg",recipes/deep-mediterranean-quiche
+Vegan chocolate brownies,chocolate-brownie-umami.jpg,A plate with a vegan chocolate brownie covered in dark vegan chocolate,These sumptuous brownies should be gooey on the inside and crisp on the outside. A perfect indulgence!,Umami,Snack,20,20,40,,"170g self-raising flour, 3 tablespoons of cocoa powder, 170g of caster sugar, 5 tablespoons of vegetable oil, 1 teaspoon vanilla extract, A pinch of salt, 230ml soy milk","<ol><li>Preheat the oven to 180C and grease a 8 inch cake tin.</li><li>Sift the flour and cocoa powder into a bowl and add the sugar and salt. </li><li>Add the oil, a little at time, mixing well to avoid lumps. Add the soy milk and vanilla extract and mix thoroughly.</li><li>Gently pour into the cake tin and spread out until even. Bake for about 15 minutes and check with a knife (the knife should come out clean when inserted into the brownies 2cm from the edge).</li><li>Allow to cool in the tin for a few minutes before cooling on a wire rack.</li></ol>",8,,recipes/vegan-chocolate-brownies
+Super easy vegetarian pasta bake,veggie-pasta-bake-umami.jpg,Cheesy pasta dish with vegetarian sausages and topped with Mozzarella,A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.,Umami,Main course,5,20,25,easy,"400g wholewheat pasta, 1 chopped onion, 2 cloves of garlic, 1 pack of vegetarian sausages, 1 tin of chopped tomatoes, 50g of sliced sun dried tomatoes, Pinch of sugar, 3 tablespoons of red pesto, 50g cheddar cheese, Basil or mixed herbs, 100g mozzarella","<ol><li>In a large pan, boil the pasta in plenty of water until cooked.</li><li>Whilst the pasta is cooking, gently fry the onions and garlic in a little oil until soft and the onion looks clear.</li><li>Add the vegetarian sausages. Once browned, remove and chop into chunky bites.</li><li>Pop the sausages back into the pan and add the tomatoes, sugar, pesto and sun dried tomatoes. Season to taste. Simmer until most of the water from the chopped tomatoes has gone.</li><li>Drain the pasta and add to the pan with the sausages and tomatoes. Stir in half of the cheddar and transfer to a shallow dish. Sprinkle with the rest of the cheddar and dot the sliced mozzarella over the top.</li><li>Grill for 10 minutes or the cheese as melted and started to brown. Serve with basil leaves.</li></ol>",4,"Vegetarian,Pasta,Baked",recipes/super-easy-vegetarian-pasta-bake
+Watercress soup,watercress-soup-umami.jpg,Light and simply presented watercress soup with a sprig of coriander to finish,"A wonderfully simple and light soup, making the most of seasonal, local produce. ",Umami,Starter,10,20,30,easy,"3 bunches of watercress,3 potatoes,3 onions,2 leeks,800ml stock,5 tablespoons of crème fraîche","<ol><li>Prepare the vegetables by peeling and chopping the potatoes, finely chopping the onions, leeks and garlic.</li><li>Heat a little oil in a pan and add the chopped vegetables, gently cooking them for about 5 minutes.</li><li>Add the vegetable stock to the same pan and turn up the heat until simmering, adding the watercress after about 10 minutes. Cook until all the vegetables are soft and easily mashed.</li><li>Liquidize the soup either with a hand blender or in a mixer, until smooth.</li><li>If the soup has cooled too much whilst being liquidized, stir in the crème fraîche and reheat before serving (otherwise serve straight away). Season to taste.</li></ol>",4,"Soup,Vegetarian",recipes/watercress-soup
+Victoria sponge cake,victoria-sponge-umami.jpg,"A classic, uncut Victoria sponge with a deep filling of butter cream and jam","A traditional Victoria sponge cake, perfect for any afternoon with a cup of tea.",Umami,Desert,20,20,40,easy,"225g butter or margarine,225g caster sugar,225g self-raising flour,4 eggs,1 level teaspoon of baking powder,3 tablespoons of jam for the filling,Icing sugar to dust the top,Cream to serve","<ol><li>Preheat the oven to 180C and grease two 8 inch cake tins.</li><li>In a large bowl, mix the butter and sugar together, then add the eggs, flour and baking powder.</li><li>Spread the mix evenly between the 2 cake tins.</li><li>Place both tins in the middle of the preheated oven for 20 minutes, before checking with a knife. When the knife comes out clean, its ready!</li><li>Allow to cool in the tins before moving them onto a cooling rack.</li><li>Add the jam, stack, dust with icing sugar and serve with a big dollop of cream. Enjoy!</li></ol>",10,Cake,recipes/victoria-sponge-cake
+Gluten free pizza,pizza-umami.jpg,"Olives, basil and mozzarella top a gluten free pizza base","A gorgeous and simple gluten free pizza, with deliciously indulgent mozzeralla and Parma ham. Can easily be vegetarian by leaving out the ham.",Umami,Main course,15,15,30,,"400g gluten free flour, 125ml warm water, 125ml milk, 1 sachet of dried yeast, 2 teaspoons of sugar, 1 teaspoons of salt, 2 tablespoons olive oil, 4 tablespoons of tomato puree, 1 clove of garlic, Some fresh basil, 200g of mozzarella, 100g rocket, 5 slices of Parma ham","<ol><li>Preheat the oven to 220C. Mix the some of the milk and water in a jug, and add the yeast and sugar, then set aside.</li><li>In a bowl, mix the flour, salt and oil. Slowly add the liquid from the jug and form into a dough. </li><li>Break the dough in half and shape into two pizza bases. Set aside for about 15 minutes, whilst making the topping.</li><li>Spread the tomato puree over the pizza bases, chop the basil and rocket and sprinkle over the tomato. Lay the chopped Parma ham on top and add thick slices of mozzarella across the pizza.</li><li>Cook in the oven directly on the top shelf (with a tray underneath) for 10-12 minutes until the mozzarella is bubbling. Season with salt and pepper and serve.</li></ol>",4,,recipes/gluten-free-pizza
+Thai green curry,thai-green-curry-umami.jpg,"A traditional bowl of creamy, aromatic Thai green curry with chunks of chicken and a small bowl of jasmine rice.",A quick and easy version of the classic Thai green curry. Perfect for a midweek meal!,Umami,Main course,10,15,25,,"400g coconut milk, 400g chicken or tofu, 1 tablespoon of Thai green curry paste, 1 clove of garlic, 2 teaspoons of fish sauce, 400g mushrooms, 200g green beans, Fresh coriander leaves, Jasmine rice","<ol><li>In a large wok, brown the chicken until golden, then turn the heat down and gently cook the garlic. Add the chopped green beans and stir.</li><li>Add the coconut milk, green curry paste and fish sauce. Mix well and slowly simmer.</li><li>Add the chopped mushrooms and simmer until the chicken (or tofu) is cooked.</li><li>Serve with jasmine rice and a sprinkle of coriander.</li></ol>",4,,recipes/thai-green-curry \ No newline at end of file
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.info.yml b/core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.info.yml
new file mode 100644
index 0000000..32f0038
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.info.yml
@@ -0,0 +1,15 @@
+name: 'Umami demo: Content'
+description: Imports the content for the Umami demo.
+type: module
+core: 8.x
+package: 'Core (Experimental)'
+dependencies:
+ - field
+ - file
+ - image
+ - node
+ - options
+ - path
+ - taxonomy
+ - text
+ - user
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.install b/core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.install
new file mode 100644
index 0000000..99ea0d1
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/demo_umami_content.install
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @file
+ * Install, update and uninstall functions for the module.
+ */
+
+use Drupal\demo_umami_content\InstallHelper;
+
+/**
+ * Implements hook_install().
+ */
+function demo_umami_content_install() {
+ if (!\Drupal::service('config.installer')->isSyncing()) {
+ \Drupal::classResolver()->getInstanceFromDefinition(InstallHelper::class)->importContent();
+ }
+}
+
+/**
+ * Implements hook_uninstall().
+ */
+function demo_umami_content_uninstall() {
+ if (!\Drupal::service('config.installer')->isSyncing()) {
+ \Drupal::classResolver()->getInstanceFromDefinition(InstallHelper::class)->deleteImportedContent();
+ }
+}
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php b/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php
new file mode 100644
index 0000000..d3c55b4
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php
@@ -0,0 +1,451 @@
+<?php
+
+namespace Drupal\demo_umami_content;
+
+use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Path\AliasManagerInterface;
+use Drupal\Core\State\StateInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Component\Utility\Html;
+
+/**
+ * Defines a helper class for importing default content.
+ *
+ * @internal
+ * This code is only for use by the Umami demo: Content module.
+ */
+class InstallHelper implements ContainerInjectionInterface {
+
+ /**
+ * The path alias manager.
+ *
+ * @var \Drupal\Core\Path\AliasManagerInterface
+ */
+ protected $aliasManager;
+
+ /**
+ * Entity type manager.
+ *
+ * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+ */
+ protected $entityTypeManager;
+
+ /**
+ * Module handler.
+ *
+ * @var \Drupal\Core\Extension\ModuleHandlerInterface
+ */
+ protected $moduleHandler;
+
+ /**
+ * State.
+ *
+ * @var \Drupal\Core\State\StateInterface
+ */
+ protected $state;
+
+ /**
+ * Constructs a new InstallHelper object.
+ *
+ * @param \Drupal\Core\Path\AliasManagerInterface $aliasManager
+ * The path alias manager.
+ * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
+ * Entity type manager.
+ * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler
+ * Module handler.
+ * @param \Drupal\Core\State\StateInterface $state
+ * State service.
+ */
+ public function __construct(AliasManagerInterface $aliasManager, EntityTypeManagerInterface $entityTypeManager, ModuleHandlerInterface $moduleHandler, StateInterface $state) {
+ $this->aliasManager = $aliasManager;
+ $this->entityTypeManager = $entityTypeManager;
+ $this->moduleHandler = $moduleHandler;
+ $this->state = $state;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function create(ContainerInterface $container) {
+ return new static(
+ $container->get('path.alias_manager'),
+ $container->get('entity_type.manager'),
+ $container->get('module_handler'),
+ $container->get('state')
+ );
+ }
+
+ /**
+ * Imports default contents.
+ */
+ public function importContent() {
+ $this->importArticles()
+ ->importRecipes()
+ ->importPages()
+ ->importBlockContent();
+ }
+
+ /**
+ * Imports articles.
+ *
+ * @return $this
+ */
+ protected function importArticles() {
+ $module_path = $this->moduleHandler->getModule('demo_umami_content')
+ ->getPath();
+ if (($handle = fopen($module_path . '/default_content/articles.csv', "r")) !== FALSE) {
+ $uuids = [];
+ $header = fgetcsv($handle);
+ while (($data = fgetcsv($handle)) !== FALSE) {
+ $data = array_combine($header, $data);
+ // Prepare content.
+ $values = [
+ 'type' => 'article',
+ 'title' => $data['title'],
+ ];
+ // Fields mapping starts.
+ // Set Body Field.
+ if (!empty($data['body'])) {
+ $values['body'] = [['value' => $data['body'], 'format' => 'basic_html']];
+ }
+ // Set node alias if exists.
+ if (!empty($data['slug'])) {
+ $values['path'] = [['alias' => '/' . $data['slug']]];
+ }
+ // Set field_tags if exists.
+ if (!empty($data['tags'])) {
+ $values['field_tags'] = [];
+ $tags = explode(',', $data['tags']);
+ foreach ($tags as $term) {
+ $values['field_tags'][] = ['target_id' => $this->getTerm($term)];
+ }
+ }
+ // Set article author.
+ if (!empty($data['author'])) {
+ $values['uid'] = $this->getUser($data['author']);
+ }
+ // Set Image field.
+ if (!empty($data['image'])) {
+ $path = $module_path . '/default_content/images/' . $data['image'];
+ $values['field_image'] = [
+ 'target_id' => $this->createFileEntity($path),
+ 'alt' => $data['alt'],
+ ];
+ }
+
+ // Create Node.
+ $node = $this->entityTypeManager->getStorage('node')->create($values);
+ $node->save();
+ $uuids[$node->uuid()] = 'node';
+ }
+ $this->storeCreatedContentUuids($uuids);
+ fclose($handle);
+ }
+ return $this;
+ }
+
+ /**
+ * Imports recipes.
+ *
+ * @return $this
+ */
+ protected function importRecipes() {
+ $module_path = $this->moduleHandler->getModule('demo_umami_content')->getPath();
+
+ if (($handle = fopen($module_path . '/default_content/recipes.csv', "r")) !== FALSE) {
+ $header = fgetcsv($handle);
+ $uuids = [];
+ while (($data = fgetcsv($handle)) !== FALSE) {
+ $data = array_combine($header, $data);
+ $values = [
+ 'type' => 'recipe',
+ // Title field.
+ 'title' => $data['title'],
+ ];
+ // Set article author.
+ if (!empty($data['author'])) {
+ $values['uid'] = $this->getUser($data['author']);
+ $values['field_author'] = $values['uid'];
+ }
+ // Set node alias if exists.
+ if (!empty($data['slug'])) {
+ $values['path'] = [['alias' => '/' . $data['slug']]];
+ }
+ // Set field_image field.
+ if (!empty($data['image'])) {
+ $image_path = $module_path . '/default_content/images/' . $data['image'];
+ $values['field_image'] = [
+ 'target_id' => $this->createFileEntity($image_path),
+ 'alt' => $data['alt'],
+ ];
+ }
+ // Set field_summary Field.
+ if (!empty($data['summary'])) {
+ $values['field_summary'] = [['value' => $data['summary'], 'format' => 'basic_html']];
+ }
+ // Set field_recipe_category if exists.
+ if (!empty($data['recipe_category'])) {
+ $values['field_recipe_category'] = [];
+ $tags = array_filter(explode(',', $data['recipe_category']));
+ foreach ($tags as $term) {
+ $values['field_recipe_category'][] = ['target_id' => $this->getTerm($term, 'recipe_category')];
+ }
+ }
+ // Set field_preparation_time Field.
+ if (!empty($data['preparation_time'])) {
+ $values['field_preparation_time'] = [['value' => $data['preparation_time']]];
+ }
+ // Set field_cooking_time Field.
+ if (!empty($data['cooking_time'])) {
+ $values['field_cooking_time'] = [['value' => $data['cooking_time']]];
+ }
+ // Set field_difficulty Field.
+ if (!empty($data['difficulty'])) {
+ $values['field_difficulty'] = $data['difficulty'];
+ }
+ // Set field_number_of_servings Field.
+ if (!empty($data['number_of_servings'])) {
+ $values['field_number_of_servings'] = [['value' => $data['number_of_servings']]];
+ }
+ // Set field_ingredients Field.
+ if (!empty($data['ingredients'])) {
+ $ingredients = explode(',', $data['ingredients']);
+ $values['field_ingredients'] = [];
+ foreach ($ingredients as $ingredient) {
+ $values['field_ingredients'][] = ['value' => $ingredient];
+ }
+ }
+ // Set field_recipe_instruction Field.
+ if (!empty($data['recipe_instruction'])) {
+ $values['field_recipe_instruction'] = [['value' => $data['recipe_instruction'], 'format' => 'basic_html']];
+ }
+ // Set field_tags if exists.
+ if (!empty($data['tags'])) {
+ $values['field_tags'] = [];
+ $tags = array_filter(explode(',', $data['tags']));
+ foreach ($tags as $term) {
+ $values['field_tags'][] = ['target_id' => $this->getTerm($term)];
+ }
+ }
+
+ $node = $this->entityTypeManager->getStorage('node')->create($values);
+ $node->save();
+ $uuids[$node->uuid()] = 'node';
+ }
+ $this->storeCreatedContentUuids($uuids);
+ fclose($handle);
+ }
+ return $this;
+ }
+
+ /**
+ * Imports pages.
+ *
+ * @return $this
+ */
+ protected function importPages() {
+ if (($handle = fopen($this->moduleHandler->getModule('demo_umami_content')->getPath() . '/default_content/pages.csv', "r")) !== FALSE) {
+ $headers = fgetcsv($handle);
+ $uuids = [];
+ while (($data = fgetcsv($handle)) !== FALSE) {
+ $data = array_combine($headers, $data);
+
+ // Prepare content.
+ $values = [
+ 'type' => 'page',
+ 'title' => $data['title'],
+ ];
+ // Fields mapping starts.
+ // Set Body Field.
+ if (!empty($data['body'])) {
+ $values['body'] = [['value' => $data['body'], 'format' => 'basic_html']];
+ }
+ // Set node alias if exists.
+ if (!empty($data['slug'])) {
+ $values['path'] = [['alias' => '/' . $data['slug']]];
+ }
+ // Set article author.
+ if (!empty($data['author'])) {
+ $values['uid'] = $this->getUser($data['author']);
+ }
+
+ // Create Node.
+ $node = $this->entityTypeManager->getStorage('node')->create($values);
+ $node->save();
+ $uuids[$node->uuid()] = 'node';
+ }
+ $this->storeCreatedContentUuids($uuids);
+ fclose($handle);
+ }
+ return $this;
+ }
+
+ /**
+ * Imports block content entities.
+ *
+ * @return $this
+ */
+ protected function importBlockContent() {
+ $module_path = $this->moduleHandler->getModule('demo_umami_content')->getPath();
+ $block_content_entities = [
+ 'umami_recipes_banner' => [
+ 'uuid' => '4c7d58a3-a45d-412d-9068-259c57e40541',
+ 'info' => 'Umami Recipes Banner',
+ 'type' => 'banner_block',
+ 'field_title' => [
+ 'value' => 'Super easy vegetarian pasta bake',
+ ],
+ 'field_content_link' => [
+ 'uri' => 'internal:' . call_user_func(function () {
+ $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => 'Super easy vegetarian pasta bake']);
+ $node = reset($nodes);
+ return $this->aliasManager->getAliasByPath('/node/' . $node->id());
+ }),
+ 'title' => 'Super easy vegetarian pasta bake',
+ ],
+ 'field_summary' => [
+ 'value' => 'A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.',
+ ],
+ 'field_banner_image' => [
+ 'target_id' => $this->createFileEntity($module_path . '/default_content/images/veggie-pasta-bake-hero-umami.jpg'),
+ ],
+ ],
+ ];
+
+ // Create block content.
+ foreach ($block_content_entities as $values) {
+ $block_content = $this->entityTypeManager->getStorage('block_content')->create($values);
+ $block_content->save();
+ $this->storeCreatedContentUuids([$block_content->uuid() => 'block_content']);
+ }
+ return $this;
+ }
+
+ /**
+ * Deletes any content imported by this module.
+ *
+ * @return $this
+ */
+ public function deleteImportedContent() {
+ $uuids = $this->state->get('demo_umami_content_uuids', []);
+ $by_entity_type = array_reduce(array_keys($uuids), function ($carry, $uuid) use ($uuids) {
+ $entity_type_id = $uuids[$uuid];
+ $carry[$entity_type_id][] = $uuid;
+ return $carry;
+ }, []);
+ foreach ($by_entity_type as $entity_type_id => $entity_uuids) {
+ $storage = $this->entityTypeManager->getStorage($entity_type_id);
+ $entities = $storage->loadByProperties(['uuid' => $entity_uuids]);
+ $storage->delete($entities);
+ }
+ return $this;
+ }
+
+ /**
+ * Looks up a user by name, if it is missing the user is created.
+ *
+ * @param string $name
+ * Username.
+ *
+ * @return int
+ * User ID.
+ */
+ protected function getUser($name) {
+ $user_storage = $this->entityTypeManager->getStorage('user');
+ $users = $user_storage->loadByProperties(['name' => $name]);;
+ if (empty($users)) {
+ // Creating user without any email/password.
+ $user = $user_storage->create([
+ 'name' => $name,
+ 'status' => 1,
+ ]);
+ $user->enforceIsNew();
+ $user->save();
+ $this->storeCreatedContentUuids([$user->uuid() => 'user']);
+ return $user->id();
+ }
+ $user = reset($users);
+ return $user->id();
+ }
+
+ /**
+ * Looks up a term by name, if it is missing the term is created.
+ *
+ * @param string $term_name
+ * Term name.
+ * @param string $vocabulary_id
+ * Vocabulary ID.
+ *
+ * @return int
+ * Term ID.
+ */
+ protected function getTerm($term_name, $vocabulary_id = 'tags') {
+ $term_name = trim($term_name);
+ $term_storage = $this->entityTypeManager->getStorage('taxonomy_term');
+ $terms = $term_storage->loadByProperties([
+ 'name' => $term_name,
+ 'vid' => $vocabulary_id,
+ ]);
+ if (!$terms) {
+ $term = $term_storage->create([
+ 'name' => $term_name,
+ 'vid' => $vocabulary_id,
+ 'path' => ['alias' => '/' . Html::getClass($vocabulary_id) . '/' . Html::getClass($term_name)],
+ ]);
+ $term->save();
+ $this->storeCreatedContentUuids([$term->uuid() => 'taxonomy_term']);
+ return $term->id();
+ }
+ $term = reset($terms);
+ return $term->id();
+ }
+
+ /**
+ * Creates a file entity based on an image path.
+ *
+ * @param string $path
+ * Image path.
+ *
+ * @return int
+ * File ID.
+ */
+ protected function createFileEntity($path) {
+ $uri = $this->fileUnmanagedCopy($path);
+ $file = $this->entityTypeManager->getStorage('file')->create([
+ 'uri' => $uri,
+ 'status' => 1,
+ ]);
+ $file->save();
+ $this->storeCreatedContentUuids([$file->uuid() => 'file']);
+ return $file->id();
+ }
+
+ /**
+ * Stores record of content entities created by this import.
+ *
+ * @param array $uuids
+ * Array of UUIDs where the key is the UUID and the value is the entity
+ * type.
+ */
+ protected function storeCreatedContentUuids(array $uuids) {
+ $uuids = $this->state->get('demo_umami_content_uuids', []) + $uuids;
+ $this->state->set('demo_umami_content_uuids', $uuids);
+ }
+
+ /**
+ * Wrapper around file_unmanaged_copy().
+ *
+ * @param string $path
+ * Path to image.
+ *
+ * @return string|false
+ * The path to the new file, or FALSE in the event of an error.
+ */
+ protected function fileUnmanagedCopy($path) {
+ $filename = basename($path);
+ return file_unmanaged_copy($path, 'public://' . $filename, FILE_EXISTS_REPLACE);
+ }
+
+}
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php b/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php
new file mode 100644
index 0000000..76a5d7c
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php
@@ -0,0 +1,112 @@
+<?php
+
+namespace Drupal\Tests\demo_umami_content\Functional;
+
+use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests that uninstalling default content removes created content.
+ *
+ * @group demo_umami_content
+ */
+class UninstallDefaultContentTest extends BrowserTestBase {
+
+ /**
+ * {@inheritdoc}
+ */
+ protected $profile = 'demo_umami';
+
+ /**
+ * Tests uninstalling content removes created entities.
+ */
+ public function testReinstall() {
+ $module_installer = $this->container->get('module_installer');
+
+ // Test imported blocks on profile install.
+ $block_storage = $this->container->get('entity_type.manager')->getStorage('block_content');
+ $this->assertImportedCustomBlock($block_storage);
+
+ // Test imported nodes on profile install.
+ $node_storage = $this->container->get('entity_type.manager')->getStorage('node');
+ $this->assertRecipesImported($node_storage);
+
+ $count = $node_storage->getQuery()
+ ->condition('type', 'article')
+ ->count()
+ ->execute();
+ $this->assertGreaterThan(0, $count);
+
+ // Uninstall the module.
+ $module_installer->uninstall(['demo_umami_content']);
+
+ // Reset storage cache.
+ $block_storage->resetCache();
+ $node_storage->resetCache();
+
+ // Assert the removal of blocks on uninstall.
+ $count = $block_storage->getQuery()
+ ->condition('type', 'banner_block')
+ ->count()
+ ->execute();
+ $this->assertEquals(0, $count);
+ $this->assertNull($this->container->get('entity_type.manager')->getStorage('block')->load('umami_banner_recipes'));
+
+ // Assert the removal of nodes on uninstall.
+ $count = $node_storage->getQuery()
+ ->condition('type', 'article')
+ ->count()
+ ->execute();
+ $this->assertEquals(0, $count);
+
+ $count = $node_storage->getQuery()
+ ->condition('type', 'recipe')
+ ->count()
+ ->execute();
+ $this->assertEquals(0, $count);
+
+ // Re-install and assert imported content.
+ $module_installer->install(['demo_umami_content']);
+ $this->assertRecipesImported($node_storage);
+ $this->assertImportedCustomBlock($block_storage);
+
+ }
+
+ /**
+ * Assert recipes are imported.
+ *
+ * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage
+ * Node storage.
+ */
+ protected function assertRecipesImported(EntityStorageInterface $node_storage) {
+ $count = $node_storage->getQuery()
+ ->condition('type', 'recipe')
+ ->count()
+ ->execute();
+ $this->assertGreaterThan(0, $count);
+ $nodes = $node_storage->loadByProperties(['title' => 'Gluten free pizza']);
+ $this->assertCount(1, $nodes);
+ }
+
+ /**
+ * Assert block content are imported.
+ *
+ * @param \Drupal\Core\Entity\EntityStorageInterface $block_storage
+ * Block storage.
+ */
+ protected function assertImportedCustomBlock(EntityStorageInterface $block_storage) {
+ // Verify that block is placed.
+ $assert = $this->assertSession();
+ $this->drupalGet('/recipes');
+ $assert->pageTextContains('Super easy vegetarian pasta bake');
+
+ $count = $block_storage->getQuery()
+ ->condition('type', 'banner_block')
+ ->count()
+ ->execute();
+ $this->assertGreaterThan(0, $count);
+ $block = $block_storage->loadByProperties(['uuid' => '4c7d58a3-a45d-412d-9068-259c57e40541']);
+ $this->assertCount(1, $block);
+ }
+
+}
diff --git a/core/profiles/demo_umami/src/Plugin/Block/UmamiDisclaimer.php b/core/profiles/demo_umami/src/Plugin/Block/UmamiDisclaimer.php
new file mode 100644
index 0000000..3ecd3aa
--- /dev/null
+++ b/core/profiles/demo_umami/src/Plugin/Block/UmamiDisclaimer.php
@@ -0,0 +1,88 @@
+<?php
+
+namespace Drupal\demo_umami\Plugin\Block;
+
+use Drupal\Core\Block\BlockBase;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Provides a 'Umami disclaimer' block.
+ *
+ * @Block(
+ * id = "umami_disclaimer",
+ * admin_label = @Translation("Umami disclaimer")
+ * )
+ *
+ * @internal
+ * This code is only for use by the Umami demo profile.
+ */
+class UmamiDisclaimer extends BlockBase {
+
+ /**
+ * {@inheritdoc}
+ */
+ public function defaultConfiguration() {
+ return [
+ 'label_display' => FALSE,
+ 'umami_disclaimer' => [
+ 'value' => '',
+ 'format' => '',
+ ],
+ 'umami_copyright' => [
+ 'value' => '',
+ 'format' => '',
+ ],
+ ] + parent::defaultConfiguration();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function build() {
+ $disclaimer_markup = check_markup($this->configuration['umami_disclaimer']['value'], $this->configuration['umami_disclaimer']['format']);
+ $copyright_markup = check_markup($this->configuration['umami_copyright']['value'], $this->configuration['umami_copyright']['format']);
+
+ return [
+ '#type' => 'inline_template',
+ '#template' => '<span class="umami-disclaimer">{{ disclaimer }}</span><span class="umami-copyright">{{ copyright }}</span>',
+ '#context' => [
+ 'disclaimer' => $disclaimer_markup,
+ 'copyright' => $copyright_markup,
+ ],
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function blockForm($form, FormStateInterface $form_state) {
+ $form = parent::blockForm($form, $form_state);
+
+ $form['umami_disclaimer'] = [
+ '#type' => 'text_format',
+ '#title' => $this->t('Umami Disclaimer'),
+ '#default_value' => $this->configuration['umami_disclaimer']['value'],
+ '#format' => $this->configuration['umami_disclaimer']['format'],
+ ];
+
+ $form['umami_copyright'] = [
+ '#type' => 'text_format',
+ '#title' => $this->t('Umami Copyright Text'),
+ '#default_value' => $this->configuration['umami_copyright']['value'],
+ '#format' => $this->configuration['umami_copyright']['format'],
+ ];
+
+ return $form;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function blockSubmit($form, FormStateInterface $form_state) {
+ parent::blockSubmit($form, $form_state);
+
+ $this->configuration['umami_disclaimer'] = $form_state->getValue('umami_disclaimer');
+ $this->configuration['umami_copyright'] = $form_state->getValue('umami_copyright');
+ }
+
+}
diff --git a/core/profiles/demo_umami/src/Plugin/Block/UmamiFooterPromo.php b/core/profiles/demo_umami/src/Plugin/Block/UmamiFooterPromo.php
new file mode 100644
index 0000000..8ae90dc
--- /dev/null
+++ b/core/profiles/demo_umami/src/Plugin/Block/UmamiFooterPromo.php
@@ -0,0 +1,104 @@
+<?php
+
+namespace Drupal\demo_umami\Plugin\Block;
+
+use Drupal\Core\Block\BlockBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Render\Element\PathElement;
+
+/**
+ * Provides a 'Promo banner' block for footer.
+ *
+ * @Block(
+ * id = "umami_footer_promo",
+ * admin_label = @Translation("Umami Bundle")
+ * )
+ *
+ * @internal
+ * This code is only for use by the Umami demo profile.
+ */
+class UmamiFooterPromo extends BlockBase {
+
+ /**
+ * {@inheritdoc}
+ */
+ public function defaultConfiguration() {
+ return [
+ 'label_display' => FALSE,
+ 'promo_title' => '',
+ 'promo_text' => '',
+ 'findmore_url' => '',
+ 'findmore_text' => '',
+ ] + parent::defaultConfiguration();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function build() {
+ return [
+ '#type' => 'inline_template',
+ '#template' => '<h2 class="footer-promo__title">{{ promo_title }}</h2><p class="footer-promo__text">{{ promo_text }} {% if findmore_url %} <a href="{{ findmore_url }}">{{ findmore_text }}</a> {% endif %}</p>',
+ '#context' => [
+ 'promo_title' => $this->configuration['promo_title'],
+ 'promo_text' => $this->configuration['promo_text'],
+ 'findmore_url' => $this->configuration['findmore_url'],
+ 'findmore_text' => $this->configuration['findmore_text'],
+ ],
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function blockForm($form, FormStateInterface $form_state) {
+ $form = parent::blockForm($form, $form_state);
+
+ $form['promo_title'] = [
+ '#type' => 'textfield',
+ '#title' => $this->t('Promo Title'),
+ '#default_value' => $this->configuration['promo_title'],
+ ];
+
+ $form['promo_text'] = [
+ '#type' => 'textarea',
+ '#title' => $this->t('Promo Text'),
+ '#default_value' => $this->configuration['promo_text'],
+ ];
+
+ $form['findmore'] = [
+ '#type' => 'fieldset',
+ '#title' => $this->t('Find more'),
+ ];
+
+ $form['findmore']['url'] = [
+ '#type' => 'path',
+ '#convert_path' => PathElement::CONVERT_NONE,
+ '#validate_path' => FALSE,
+ '#title' => $this->t('URL'),
+ '#default_value' => $this->configuration['findmore_url'],
+ '#description' => $this->t('Enter an relative or absolute url. Eg: /about-umami or https://www.drupal.org'),
+ ];
+
+ $form['findmore']['text'] = [
+ '#type' => 'textfield',
+ '#title' => $this->t('Text'),
+ '#default_value' => $this->configuration['findmore_text'],
+ ];
+
+ return $form;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function blockSubmit($form, FormStateInterface $form_state) {
+ parent::blockSubmit($form, $form_state);
+
+ $this->configuration['promo_title'] = $form_state->getValue('promo_title');
+ $this->configuration['promo_text'] = $form_state->getValue('promo_text');
+ $this->configuration['findmore_url'] = $form_state->getValue(['findmore', 'url']);
+ $this->configuration['findmore_text'] = $form_state->getValue(['findmore', 'text']);
+ }
+
+}
diff --git a/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php
new file mode 100644
index 0000000..a9380d6
--- /dev/null
+++ b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php
@@ -0,0 +1,113 @@
+<?php
+
+namespace Drupal\Tests\demo_umami\Functional;
+
+use Drupal\Core\Config\FileStorage;
+use Drupal\Core\Config\InstallStorage;
+use Drupal\Core\Config\StorageInterface;
+use Drupal\KernelTests\AssertConfigTrait;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests demo_umami profile.
+ *
+ * @group demo_umami
+ */
+class DemoUmamiProfileTest extends BrowserTestBase {
+ use AssertConfigTrait;
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function installParameters() {
+ $parameters = parent::installParameters();
+ $parameters['forms']['install_configure_form']['site_mail'] = 'admin@example.com';
+ return $parameters;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected $profile = 'demo_umami';
+
+ /**
+ * Tests demo_umami profile warnings shown on Status Page.
+ */
+ public function testWarningsOnStatusPage() {
+ $account = $this->drupalCreateUser(['administer site configuration']);
+ $this->drupalLogin($account);
+
+ // Check the requirements warning for using an experimental profile.
+ $this->drupalGet('admin/reports/status');
+ $this->assertSession()->pageTextContains('Demo Umami is an experimental profile to be used for demonstration purposes only, and should not be used for a production/live site. To start building a new site, you should re-install Drupal and choose another profile, for example "Standard".');
+
+ // Check the requirements error for the version of Drupal being updated.
+ // Change the stored installed version of Drupal.
+ \Drupal::state()->set('demo_umami_drupal_version', \Drupal::VERSION . '1');
+ $this->drupalGet('admin/reports/status');
+ $this->assertSession()->pageTextContains('Drupal has been updated since this demo was installed, which could cause issues with this site. It is recommended that you re-install the demo to evaluate the latest changes.');
+ }
+
+ /**
+ * Tests the profile supplied configuration is the same after installation.
+ */
+ public function testConfig() {
+ // Just connect directly to the config table so we don't need to worry about
+ // the cache layer.
+ $active_config_storage = $this->container->get('config.storage');
+
+ $default_config_storage = new FileStorage(drupal_get_path('profile', 'demo_umami') . '/' . InstallStorage::CONFIG_INSTALL_DIRECTORY, InstallStorage::DEFAULT_COLLECTION);
+ $this->assertDefaultConfig($default_config_storage, $active_config_storage);
+
+ $default_config_storage = new FileStorage(drupal_get_path('profile', 'demo_umami') . '/' . InstallStorage::CONFIG_OPTIONAL_DIRECTORY, InstallStorage::DEFAULT_COLLECTION);
+ $this->assertDefaultConfig($default_config_storage, $active_config_storage);
+ }
+
+ /**
+ * Asserts that the default configuration matches active configuration.
+ *
+ * @param \Drupal\Core\Config\StorageInterface $default_config_storage
+ * The default configuration storage to check.
+ * @param \Drupal\Core\Config\StorageInterface $active_config_storage
+ * The active configuration storage.
+ */
+ protected function assertDefaultConfig(StorageInterface $default_config_storage, StorageInterface $active_config_storage) {
+ /** @var \Drupal\Core\Config\ConfigManagerInterface $config_manager */
+ $config_manager = $this->container->get('config.manager');
+
+ foreach ($default_config_storage->listAll() as $config_name) {
+ if ($active_config_storage->exists($config_name)) {
+ $result = $config_manager->diff($default_config_storage, $active_config_storage, $config_name);
+ $this->assertConfigDiff($result, $config_name, [
+ // The filter.format.*:roles key is a special install key.
+ 'filter.format.basic_html' => ['roles:', ' - authenticated'],
+ 'filter.format.full_html' => ['roles:', ' - administrator'],
+ 'filter.format.restricted_html' => ['roles:', ' - anonymous'],
+ ]);
+ }
+ else {
+ $this->fail("$config_name has not been installed");
+ }
+ }
+ }
+
+ /**
+ * Tests the successful editing of nodes by admin.
+ */
+ public function testEditNodesByAdmin() {
+ $account = $this->drupalCreateUser(['administer nodes', 'edit any recipe content']);
+ $this->drupalLogin($account);
+ $webassert = $this->assertSession();
+
+ // Check that admin is able to edit the node.
+ $nodes = $this->container->get('entity_type.manager')
+ ->getStorage('node')
+ ->loadByProperties(['title' => 'Deep mediterranean quiche']);
+ $node = reset($nodes);
+ $this->drupalGet($node->toUrl('edit-form'));
+ $webassert->statusCodeEquals('200');
+ $this->submitForm([], "Save");
+ $webassert->pageTextContains('Recipe Deep mediterranean quiche has been updated.');
+ }
+
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/base.css b/core/profiles/demo_umami/themes/umami/css/base.css
new file mode 100644
index 0000000..a8ef6a2
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/base.css
@@ -0,0 +1,225 @@
+/**
+ * @file
+ * This is the base CSS file, for styling elements.
+ */
+
+html {
+ box-sizing: border-box;
+}
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+ margin-top: 0; /* This allows us to ensure that items side-by-side line up nicely. */
+}
+
+a {
+ color: #00836D;
+ text-decoration: underline;
+}
+a:hover,
+a:focus {
+ background-color: #e6eee0;
+ color: #444444;
+ text-decoration: none;
+}
+
+body {
+ background: #fbf5ee;
+ color: #464646;
+ font-family: 'Open Sans', Verdana, sans-serif;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ margin: 0;
+}
+
+blockquote {
+ background: #f4f2e9;
+ margin-bottom: 1.28rem;
+ padding: 3rem;
+}
+blockquote > * {
+ color: #000;
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.266rem;
+ font-weight: 400;
+ line-height: 1.5;
+}
+blockquote a {
+ /* Tweak default link colour to improve contrast for accessibility */
+ color: #057d6d;
+}
+blockquote a:hover,
+blockquote a:focus {
+ background-color: #fdfcf9;
+}
+
+button,
+.button,
+[type='button'],
+[type='reset'],
+[type='submit'] {
+ background-color: #00836d;
+ border: 3px solid #00836d;
+ border-radius: 4px;
+ color: #fff;
+ cursor: pointer;
+ display: inline-block;
+ padding: 0.4em 1.5em;
+ text-align: center;
+ text-decoration: none;
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.2rem;
+ font-weight: 400;
+ font-weight: normal;
+ transition: background-color 0.5s ease;
+}
+button:hover,
+button:active,
+button:focus,
+.button:hover,
+.button:active,
+.button:focus {
+ background-color: #e6eee0;
+ border: 3px solid #00836d;
+ color: #000000;
+ text-decoration: none;
+ transition: background-color 0.5s ease;
+}
+button[disabled]:hover,
+button[disabled]:active,
+button[disabled]:focus,
+button[disabled],
+.button[disabled]:hover,
+.button[disabled]:active,
+.button[disabled]:focus,
+.button[disabled] {
+ background: #767775;
+ color: #464646;
+ cursor: default;
+}
+
+h1 {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.424rem; /* +3 based on 1.125 modular scale (major second) */
+ font-weight: 400;
+ line-height: 1.2;
+ margin: 0 0 1.07rem 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ h1 {
+ font-size: 2.369rem;
+ }
+}
+
+h2 {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.266rem; /* +2 based on 1.125 modular scale (major second) */
+ font-weight: 400;
+ line-height: 1.2;
+ margin: 0 0 0.7rem 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ h2 {
+ font-size: 1.77rem;
+ }
+}
+
+h3 {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.125rem;/* +1 based on 1.125 modular scale (major second) */
+ font-weight: 400;
+ line-height: 1.2;
+ margin: 0 0 0.96rem 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ h3 {
+ font-size: 1.5rem;
+ }
+}
+
+h4 {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.2;
+ margin: 0 0 1.28rem 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ h4 {
+ font-size: 1.33rem;
+ }
+}
+
+h5 {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 0.889rem; /* -1 based on 1.125 modular scale (major second) */
+ font-weight: 700;
+ line-height: 1.2;
+ margin: 0 0 1.28rem 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ h5 {
+ font-size: 1.25rem;
+ font-weight: 400;
+ }
+}
+
+h6 {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 0.79rem; /* -1 based on 1.125 modular scale (major second) */
+ font-weight: 700;
+ line-height: 1.2;
+ margin: 0 0 1.28rem 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ h6 {
+ font-size: 1rem;
+ font-weight: 400;
+ }
+}
+
+img {
+ height: auto;
+ max-width: 100%;
+}
+
+input {
+ border: 2px solid #767775;
+ color: #000;
+ margin: 0.25rem 0;
+ min-width: 100%;
+ max-width: 100%;
+ font-size: 1rem;
+ padding: 0.8rem 0.4rem;
+}
+
+label {
+ color: #464646;
+ display: block;
+ font-size: 1rem;
+ font-weight: bold;
+ margin: 0.25rem 0;
+}
+
+ul,
+ol {
+ margin-bottom: 1.28rem;
+}
+ol ol,
+ol ul,
+ul ul,
+ul ol {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+
+p {
+ margin-bottom: 1.28rem;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/articles-aside/articles-aside.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/articles-aside/articles-aside.css
new file mode 100644
index 0000000..9a71cbb
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/articles-aside/articles-aside.css
@@ -0,0 +1,12 @@
+/**
+ * @file
+ * This file is used to style the 'Articles Aside' view.
+ */
+
+.block-views-blockarticles-aside-block-1 > .block__title {
+ margin: 0 0 1.562rem;
+}
+
+.block-views-blockarticles-aside-block-1 .views-row {
+ margin-bottom: 1.562rem;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/banner/banner.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/banner/banner.css
new file mode 100644
index 0000000..4dfaad8
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/banner/banner.css
@@ -0,0 +1,82 @@
+/**
+ * @file
+ * This file is used to style the banner block.
+ */
+
+.cover-image {
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
+.block-banner-block {
+ background-size: 0 0;
+ background-position: 0 0;
+}
+
+.block-banner-block .summary {
+ margin: 1em;
+}
+
+.block-banner-block .field--name-field-title {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.424rem;
+ font-weight: 400;
+ margin: 0 0 1.07em 0;
+}
+
+.block-banner-block .field--name-field-summary {
+ margin-bottom: 1.28em;
+}
+
+.block-banner-block .field--name-field-content-link a {
+ display: inline-block;
+ padding: 0.5em 1.5em 0.4em;
+ border: 0;
+ border-radius: 4px;
+ background-color: #E84265;
+ color: #fff;
+ cursor: pointer;
+ text-align: center;
+ text-decoration: none;
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.2rem;
+ font-weight: 400;
+ font-weight: normal;
+ transition: background-color 0.5s ease;
+}
+
+.block-banner-block .field--name-field-content-link a:focus,
+.block-banner-block .field--name-field-content-link a:hover {
+ background-color: #00836D;
+ color: #fff;
+ text-decoration: underline;
+}
+
+/* 768px */
+@media screen and (min-width: 48rem) { /* 768px */
+ .block-banner-block {
+ background-size: cover;
+ background-position: left center;
+ /* Image ratio 7:3 */
+ }
+
+ .block-banner-block .block-inner {
+ max-width: 1200px;
+ margin: 0 auto;
+ display: flex;
+ padding: 0 1em;
+ min-height: 43vw;
+ align-items: center;
+ }
+
+ .block-banner-block .summary {
+ margin: 0;
+ flex: 0 0 30%;
+ color: #ffffff;
+ }
+
+ .block-banner-block .field--name-field-banner-image {
+ display: none;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/branding/branding.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/branding/branding.css
new file mode 100644
index 0000000..7337752
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/branding/branding.css
@@ -0,0 +1,34 @@
+/**
+ * @file
+ * This file is used to style the branding block.
+ */
+
+.block-system-branding-block {
+ flex: 0 1 40%;
+ order: 2;
+ text-align: center;
+}
+
+@media screen and (min-width: 48em) {
+ .block-system-branding-block {
+ flex: 0 1 220px;
+ order: 3;
+ margin: 2.5rem 0;
+ text-align: left;
+ }
+}
+.site-logo {
+ display: inline-block;
+ width: 100%;
+ max-width: 205px;
+ background-color: inherit;
+}
+.site-logo:hover {
+ background-color: inherit;
+}
+
+.site-logo svg {
+ width: 100%;
+ max-width: 205px;
+ height: auto;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/footer-promo/footer-promo.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/footer-promo/footer-promo.css
new file mode 100644
index 0000000..394c139
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/footer-promo/footer-promo.css
@@ -0,0 +1,54 @@
+/**
+ * @file
+ * This file is used to style the Footer promo block.
+ */
+
+.footer-promo {
+ padding-top: 250px;
+ background: url('../../../../images/png/umami-bundle.png') no-repeat center top;
+}
+
+.footer-promo__title {
+ font-size: 1.5rem;
+ font-weight: normal;
+}
+
+.footer-promo__text a {
+ background-color: inherit;
+ clear: left;
+ display: block;
+ color: #fff;
+ font-weight: bold;
+ text-decoration: none;
+}
+
+.footer-promo__text a:active,
+.footer-promo__text a:focus,
+.footer-promo__text a:hover {
+ background-color: transparent;
+ text-decoration: underline;
+}
+
+.footer-promo__text a:after {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ content: '';
+ background: url('../../../../images/svg/pointer--white.svg') no-repeat center center;
+ vertical-align: middle;
+}
+
+@media screen and (min-width: 60rem) {
+ .footer-promo {
+ flex-basis: 60%;
+ height: 200px;
+ padding-top: 0;
+ padding-left: 280px;
+ background-position: left top;
+ font-size: 0.9rem;
+ }
+
+ .footer-promo__title {
+ padding-top: 2rem;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/page-title/page-title.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/page-title/page-title.css
new file mode 100644
index 0000000..aac82bf
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/page-title/page-title.css
@@ -0,0 +1,17 @@
+/**
+ * @file
+ * This file is used to style the page title block.
+ *
+ * Note: This only styles the page title block itself. We do not use this block
+ * node pages (the titles are printed in the node.html.twig template), so
+ * styling for that will be in other files such as full.css.
+ */
+
+.is-front .block-page-title-block {
+ margin: 1rem 0;
+}
+
+.block-page-title-block {
+ margin: 1rem 0 3rem;
+ text-align: center;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/quicklinks/quicklinks.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/quicklinks/quicklinks.css
new file mode 100644
index 0000000..d9fe06b
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/quicklinks/quicklinks.css
@@ -0,0 +1,83 @@
+/**
+ * @file
+ * This file is used to style the Quick Links block.
+ */
+
+.quicklinks {
+ background-color: #fff;
+}
+
+@media screen and (min-width: 60rem) { /* 960px */
+ .quicklinks {
+ padding: 2rem 0;
+ }
+}
+
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .quicklinks__content {
+ display: flex;
+ flex-wrap: wrap;
+ }
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .quicklinks__content {
+ flex-wrap: nowrap;
+ }
+}
+
+.quicklinks__col {
+ position: relative;
+ min-height: 9rem;
+ padding: 1.5rem 0.25rem;
+ text-align: center;
+}
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .quicklinks__col {
+ flex-basis: 50%;
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+ }
+}
+
+.quicklinks__col::after {
+ position: absolute;
+ display: block;
+ bottom: 0;
+ right: 10%;
+ height: 1px;
+ width: 80%;
+ content: '';
+ background-color: #E6EEE0;
+}
+.quicklinks__col:last-child::after {
+ display: none;
+}
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .quicklinks__col:nth-child(3)::after {
+ display: none;
+ }
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .quicklinks__col::after {
+ position: absolute;
+ display: block;
+ top: 0;
+ right: 0;
+ height: 100%;
+ width: 1px;
+ content: '';
+ background-color: #E6EEE0;
+ }
+ .quicklinks__col:nth-child(3)::after {
+ display: block;
+ }
+}
+
+.quicklinks__img {
+ margin-bottom: 1rem;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/search/search-results.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/search/search-results.css
new file mode 100644
index 0000000..06c1963
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/search/search-results.css
@@ -0,0 +1,108 @@
+/**
+ * @file
+ * Stylesheet for results generated by the Search module.
+ */
+
+.search-form {
+ display: flex;
+ align-items: flex-end;
+ flex-wrap: wrap;
+ margin: 0 0 1rem;
+}
+
+.search-form #edit-basic {
+ background: #fff;
+ border: 1px solid #fcece7;
+ padding: 1.28rem;
+ margin: 0 1rem 1rem 0;
+}
+.search-form #edit-basic {
+ display: flex;
+ align-items: flex-end;
+}
+.search-form .form-type-search {
+ margin: 0;
+ padding: 0;
+}
+.search-form .form-type-search label {
+ display: inline-block;
+ margin: 0 0 1ex;
+ padding: 0;
+}
+.search-form .button {
+ min-width: 0;
+ position: relative;
+ z-index: 1;
+}
+.search-form #edit-basic .button {
+ width: 80px;
+ height: 35px;
+ margin-left: -80px;
+}
+
+.search-form .search-help-link {
+ padding: 1.28rem;
+ margin: 0 1rem 1rem 0;
+}
+
+.search-form #edit-advanced {
+ background: #fff;
+ border: 1px solid #fcece7;
+ padding: 1.28rem;
+ margin: 0 1rem 1rem 0;
+}
+.search-form .search-advanced {
+ width: 100%;
+}
+.search-form .search-advanced .details-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ padding: 1rem;
+}
+.search-form .search-advanced .details-wrapper fieldset {
+ width: 28%;
+ margin: 0 0 1rem;
+ padding: 1rem;
+}
+.search-form .search-advanced .action {
+ width: 100%;
+}
+
+.search-form .search-advanced .form-text {
+ margin: 0;
+ padding: 0.5em 2.25em 0.5em 2.25em;
+ border: 1px solid #dbdbdb;
+ min-width: calc(100% - 80px);
+}
+
+/*
+ Search results
+*/
+.search-results {
+ margin: 0 14px 28px;
+ padding: 0;
+ list-style: none;
+}
+/* 77em == the max width of .container + 1em either side */
+@media screen and (min-width: 77em) {
+ .search-results {
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
+
+.search-results li {
+ background: #fff;
+ border: 1px solid #fcece7;
+ padding: 1.28rem;
+ margin: 0 0 1rem 0;
+}
+
+.search-results .search-result__snippet {
+ margin-bottom: 0;
+}
+.search-results .search-result__info {
+ margin-top: 1.28rem;
+ margin-bottom: 0;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/blocks/search/search.css b/core/profiles/demo_umami/themes/umami/css/components/blocks/search/search.css
new file mode 100644
index 0000000..360f629
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/blocks/search/search.css
@@ -0,0 +1,106 @@
+/**
+ * @file
+ * This file is used to style the search block.
+ */
+
+.search-form + h2 {
+ margin: 0 14px 1rem;
+}
+
+.search-block-form {
+ display: none;
+}
+
+@media screen and (min-width: 48em) {
+ .search-block-form {
+ flex: 0 1 50%;
+ order: 1;
+ display: block;
+ border-bottom: 1px solid #E6EEE0;
+ }
+}
+
+.search-block-form form {
+ display: flex;
+ margin-top: 1.3rem;
+ margin-bottom: 1.2rem;
+}
+
+.search-iconwrap {
+ flex: 0 1 30%;
+ order: 3;
+ display: flex;
+ justify-content: flex-end;
+ padding-right: 1rem;
+}
+
+@media screen and (min-width: 48em) {
+ .search-iconwrap {
+ display: none;
+ }
+}
+
+/* Search icon for mobile */
+.search-link {
+ width: 40px;
+ height: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ /* Centres the icon when focused/hovered */
+ padding-right: 7px;
+ margin-right: -7px;
+}
+.search-link svg {
+ display: block;
+ width: 26px;
+ height: auto;
+}
+
+/* Search input */
+.form-type-search {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.form-search {
+ width: 26em;
+ max-width: calc(100vw - 6.25em);
+ height: auto;
+ margin: 0;
+ padding: 0.5em 6.25em 0.5em 2.25em;
+ border: 1px solid #dbdbdb;
+ border-right: none;
+ border-radius: 3px;
+ font-size: 0.875rem;
+ line-height: normal;
+ background: url(../../../../images/svg/search.svg) no-repeat 0.5em center #fff;
+ background-size: 1.5em;
+ color: #464646;
+}
+.form-search:focus {
+ outline: none;
+ box-shadow: 0 0 1px 1px #d62e5f;
+}
+
+.form-search::placeholder {
+ opacity: 1;
+}
+.form-type-search .form-search {
+ box-sizing: border-box; /* Override input[type="search"] of normalize.css */
+}
+
+/* Search submit */
+.search-block-form .form-actions {
+ margin-top: 0;
+ margin-bottom: 0;
+ width: 80px;
+ margin-left: -80px;
+ position: relative;
+ z-index: 1;
+}
+.search-block-form .form-submit,
+.search-form .form-submit {
+ /* Take off the border radius on the left side as it bumps into the search field */
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content-types/article/article.css b/core/profiles/demo_umami/themes/umami/css/components/content-types/article/article.css
new file mode 100644
index 0000000..77baa19
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content-types/article/article.css
@@ -0,0 +1,25 @@
+/**
+ * @file
+ * This file is used to style the article content type using the 'full' view mode.
+ */
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-article.node--view-mode-full .node__header {
+ padding-right: 2.75rem;
+ }
+}
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-article.node--view-mode-full .node__content {
+ padding: 0 2.75rem 2.4rem 10.2rem;
+ }
+}
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-article.node--view-mode-full .field--name-field-image {
+ margin-left: -12.6rem;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content-types/recipe/recipe.css b/core/profiles/demo_umami/themes/umami/css/components/content-types/recipe/recipe.css
new file mode 100644
index 0000000..43de426
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content-types/recipe/recipe.css
@@ -0,0 +1,227 @@
+/**
+ * @file
+ * This file is used to style the recipe using the 'full' view mode.
+ */
+
+.node--type-recipe.node--view-mode-full .field--name-field-recipe-category {
+ flex: 0 0 100%;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .field--name-field-recipe-category {
+ flex: 0 1 auto;
+ margin-right: 1em;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--top {
+ margin-bottom: 2.369em;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--top {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ }
+}
+
+/* Override the recipe's img margin-bottom on larger displays */
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--top .field--name-field-image img {
+ margin-bottom: 0;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--top-first,
+.node--type-recipe.node--view-mode-full .layout__region--top-second {
+ flex: 0 0 calc(50% - 1rem);
+}
+
+/* Recipe meta */
+.node--type-recipe.node--view-mode-full .layout__region--top-second {
+ display: flex;
+ flex-direction: column;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ /* Recipe meta */
+ .node--type-recipe.node--view-mode-full .layout__region--top-second {
+ align-self: center;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: center;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--top-second > .recipe-meta {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ margin-bottom: 1em;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--top-second > .recipe-meta {
+ align-items: center;
+ flex: 0 0 40%;
+ flex-direction: column;
+ margin-bottom: 2em;
+ text-align: center;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--top-second > .field--name-field-summary {
+ flex-basis: 100%;
+ text-align: left;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--top-second > .field--name-field-summary {
+ flex-basis: 90%;
+ text-align: center;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--top-second svg {
+ flex: 0 0 26px;
+ height: 26px;
+ margin-bottom: 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--top-second svg {
+ flex: 0 0 auto;
+ height: 47px;
+ margin-bottom: 0.889em;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--top-second .field {
+ flex: 1 0 auto;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--top-second .field {
+ flex: 0 0 100%;
+ }
+}
+.node--type-recipe.node--view-mode-full .layout__region--top-second .field .field__label,
+.node--type-recipe.node--view-mode-full .layout__region--top-second .field .field__item {
+ display: inline-block;
+ padding-left: 0.5em;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--top-second .field .field__label,
+ .node--type-recipe.node--view-mode-full .layout__region--top-second .field .field__item {
+ display: block;
+ }
+}
+.node--type-recipe.node--view-mode-full .layout__region--top .field__label {
+ font-family: 'Open Sans', Verdana, sans-serif;
+ font-size: 1rem;
+ line-height: 1.5;
+ margin: 0;
+ font-weight: 700;
+}
+
+/* Recipe instructions */
+.node--type-recipe.node--view-mode-full .layout__region--bottom {
+ background-color: #f4f2e9;
+ border: 1px solid #e6eee0;
+ margin: 0 -1.266em;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--bottom {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin: 0;
+ }
+}
+.node--type-recipe.node--view-mode-full .layout__region--bottom > h2 {
+ flex: 0 0 100%;
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.424em;
+ font-weight: 400;
+ line-height: 1.2;
+ padding: 1.266rem 1.266rem 1em 1.266rem;
+ text-align: left;
+ margin: 0;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--bottom > h2 {
+ font-size: 2.369rem;
+ padding: 1.2em;
+ text-align: center;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--bottom-first {
+ padding: 0 1.266em 1.266em 1.266em;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--bottom-first {
+ flex: 0 0 33%;
+ padding: 0 2.369em 2.369em 2.369em;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--bottom-second {
+ padding: 0 1.266em 1.266em 1.266em;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--bottom-second {
+ flex: 0 0 67%;
+ padding: 0 2.369em 2.369em 2.369em;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .layout__region--bottom .field__label {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.266rem;
+ font-weight: 400;
+ line-height: 1.2;
+ padding: 0 0 0.6em 0;
+ margin: 0 0 1em 0;
+ border-bottom: 1px solid #EEC2CB;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--type-recipe.node--view-mode-full .layout__region--bottom .field__label {
+ font-size: 1.77rem;
+ margin: 0 0 1.5em 0;
+ }
+}
+
+.node--type-recipe.node--view-mode-full .field--name-field-ingredients .field__item {
+ border-bottom: 1px solid #eec2cb;
+ padding: 0 0 0.6em 0;
+ margin: 0 0 0.6em 0;
+}
+.node--type-recipe.node--view-mode-full .field--name-field-recipe-instruction ol {
+ margin-left: 0;
+ padding-left: 0;
+ list-style-type: none;
+}
+.node--type-recipe.node--view-mode-full .field--name-field-recipe-instruction ol > li {
+ counter-increment: step-counter;
+ padding: 0 0 0.6em 2.5em;
+ min-height: 1.5em;
+ list-style: none;
+ position: relative;
+}
+.node--type-recipe.node--view-mode-full .field--name-field-recipe-instruction ol > li::before {
+ content: counter(step-counter);
+ color: #cc2a00;
+ font-size: 1.5rem;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content/full/node-full.css b/core/profiles/demo_umami/themes/umami/css/components/content/full/node-full.css
new file mode 100644
index 0000000..5d8c6cf
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content/full/node-full.css
@@ -0,0 +1,72 @@
+/**
+ * @file
+ * This file is used to style the 'full' view mode.
+ */
+.node--view-mode-full {
+ background-color: #ffffff;
+ border-bottom: 1px solid #fcece7;
+ border-left: none;
+ border-right: none;
+ border-top: 1px solid #fcece7;
+ margin: 0 auto 2.37rem;
+ padding: 1.266rem;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--view-mode-full {
+ border-left: 1px solid #fcece7;
+ border-right: 1px solid #fcece7;
+ padding: 2.37rem;
+ }
+}
+
+.node--view-mode-full > .node__header {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.node--view-mode-full .page-title {
+ flex: 0 0 100%;
+}
+
+.node--view-mode-full .node__submitted {
+ flex: 0 0 100%;
+ font-size: 0.889em;
+ margin-bottom: 1.2em;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--view-mode-full .node__submitted {
+ flex: 0 1 auto;
+ margin-right: 2rem;
+ }
+}
+.node--view-mode-full .by-author::after {
+ content: "•";
+ font-size: 2em;
+ vertical-align: middle;
+ display: inline-block;
+ margin: 0 0.25ex;
+ color: #7CBE8C;
+}
+
+.node--view-mode-full .field--name-field-tags {
+ flex: 0 0 100%;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--view-mode-full .field--name-field-tags {
+ flex: 0 1 auto;
+ margin-left: auto;
+ }
+}
+
+.node--view-mode-full .field--name-field-image {
+ margin-bottom: 1.184rem;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .node--view-mode-full .field--name-field-image {
+ margin-bottom: 2.369rem;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-bottom/highlighted-bottom.css b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-bottom/highlighted-bottom.css
new file mode 100644
index 0000000..a7eb84f
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-bottom/highlighted-bottom.css
@@ -0,0 +1,51 @@
+/**
+ * @file
+ * This file is used to style the 'highlighted-bottom' view mode.
+ */
+
+.node--view-mode-highlighted-bottom {
+ border: 1px solid #fcece7;
+ width: 100%;
+}
+
+.node--view-mode-highlighted-bottom .node__meta {
+ padding: 1.5rem;
+}
+
+.node--view-mode-highlighted-bottom .node__title {
+ font-weight: normal;
+ margin-bottom: 1rem;
+}
+
+.node--view-mode-highlighted-bottom .field--name-title {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.424rem;
+ font-weight: 400;
+}
+
+.node--view-mode-highlighted-bottom .node__title .node__link {
+ background-color: inherit;
+ color: #000;
+ text-decoration: none;
+}
+
+.node--view-mode-highlighted-bottom .node__title .node__link:focus,
+.node--view-mode-highlighted-bottom .node__title .node__link:hover {
+ color: #000;
+ text-decoration: underline;
+}
+
+.node--view-mode-highlighted-bottom .node__link .field--name-title {
+ color: #000;
+ text-decoration: none;
+}
+
+.node--view-mode-highlighted-bottom .field--name-field-image img {
+ width: 100%;
+}
+
+.node--view-mode-highlighted-bottom .field--name-field-difficulty {
+ color: #5f635d;
+ font-size: 0.889rem;
+ margin-bottom: 0.5rem;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-medium/highlighted-medium.css b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-medium/highlighted-medium.css
new file mode 100644
index 0000000..bfbb16d
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-medium/highlighted-medium.css
@@ -0,0 +1,59 @@
+/**
+ * @file
+ * This file is used to style the 'highlighted-medium' view mode.
+ */
+
+.node--view-mode-highlighted-medium {
+ border: 1px solid #fcece7;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.node--view-mode-highlighted-medium .node__meta {
+ padding: 1rem 1.5rem 0 1.5rem;
+}
+
+.node--view-mode-highlighted-medium .read-more {
+ margin-top: auto;
+ padding: 0 1.5rem 1.5rem 1.5rem;
+}
+
+.node--view-mode-highlighted-medium .node__title {
+ font-weight: normal;
+ margin-bottom: 1rem;
+}
+
+.node--view-mode-highlighted-medium .field--name-title {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.424rem;
+ font-weight: 400;
+}
+
+.node--view-mode-highlighted-medium .node__title .node__link {
+ color: #000;
+ text-decoration: none;
+ background-color: inherit;
+}
+
+.node--view-mode-highlighted-medium .node__title .node__link:focus,
+.node--view-mode-highlighted-medium .node__title .node__link:hover {
+ color: #000;
+ text-decoration: underline;
+}
+
+.node--view-mode-highlighted-medium .node__link .field--name-title {
+ color: #000;
+ text-decoration: none;
+}
+
+.node--view-mode-highlighted-medium .field--name-field-image img {
+ display: block;
+ width: 100%;
+}
+
+.node--view-mode-highlighted-medium .field--name-field-difficulty {
+ color: #5f635d;
+ font-size: 0.889rem;
+ margin-bottom: 0.5rem;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-small/highlighted-small.css b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-small/highlighted-small.css
new file mode 100644
index 0000000..2a0d11d
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-small/highlighted-small.css
@@ -0,0 +1,59 @@
+/**
+ * @file
+ * This file is used to style the 'highlighted-small' view mode.
+ */
+
+.node--view-mode-highlighted-small {
+ border: 1px solid #fcece7;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.node--view-mode-highlighted-small .node__meta {
+ padding: 1rem 1.5rem 0 1.5rem;
+}
+
+.node--view-mode-highlighted-small .read-more {
+ margin-top: auto;
+ padding: 0 1.5rem 1.5rem 1.5rem;
+}
+
+.node--view-mode-highlighted-small .node__title {
+ font-weight: normal;
+ margin-bottom: 1rem;
+}
+
+.node--view-mode-highlighted-small .field--name-title {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.424rem;
+ font-weight: 400;
+}
+
+.node--view-mode-highlighted-small .node__title .node__link {
+ color: #000;
+ text-decoration: none;
+ background-color: inherit;
+}
+
+.node--view-mode-highlighted-small .node__title .node__link:focus,
+.node--view-mode-highlighted-small .node__title .node__link:hover {
+ color: #000;
+ text-decoration: underline;
+}
+
+.node--view-mode-highlighted-small .node__link .field--name-title {
+ color: #000;
+ text-decoration: none;
+}
+
+.node--view-mode-highlighted-small .field--name-field-image img {
+ display: block;
+ width: 100%;
+}
+
+.node--view-mode-highlighted-small .field--name-field-difficulty {
+ color: #5f635d;
+ font-size: 0.889rem;
+ margin-bottom: 0.5rem;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-top/highlighted-top.css b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-top/highlighted-top.css
new file mode 100644
index 0000000..1811aa3
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content/highlighted-top/highlighted-top.css
@@ -0,0 +1,80 @@
+/**
+ * @file
+ * This file is used to style the 'highlighted-top' view mode.
+ */
+
+.node--view-mode-highlighted-top {
+ border: 1px solid #fcece7;
+ width: 100%;
+}
+
+/* Tweaks to the layout when promoted */
+/* Custom */
+@media screen and (min-width: 40rem) { /* 640px */
+ .view-promoted-items--single .node--view-mode-highlighted-top {
+ display: flex;
+ }
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single .node--view-mode-highlighted-top {
+ flex-direction: column;
+ }
+}
+
+/* Custom */
+@media screen and (min-width: 40rem) { /* 640px */
+ .view-promoted-items--single .node--view-mode-highlighted-top .node__content {
+ flex: 1 0 50%;
+ }
+}
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single .node--view-mode-highlighted-top .node__meta {
+ order: -1;
+ }
+}
+
+.node--view-mode-highlighted-top .node__meta {
+ padding: 1.5rem;
+}
+
+.node--view-mode-highlighted-top .node__title {
+ font-weight: normal;
+ margin-bottom: 1rem;
+}
+
+.node--view-mode-highlighted-top .field--name-title {
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.424rem;
+ font-weight: 400;
+}
+
+.node--view-mode-highlighted-top .node__title .node__link {
+ color: #000;
+ text-decoration: none;
+ background-color: inherit;
+}
+
+.node--view-mode-highlighted-top .node__title .node__link:focus,
+.node--view-mode-highlighted-top .node__title .node__link:hover {
+ color: #000;
+ text-decoration: underline;
+}
+
+.node--view-mode-highlighted-top .node__link .field--name-title {
+ color: #000;
+ text-decoration: none;
+}
+
+.node--view-mode-highlighted-top .field--name-field-image img {
+ display: block;
+ width: 100%;
+}
+
+.node--view-mode-highlighted-top .field--name-field-difficulty {
+ color: #5f635d;
+ font-size: 0.889rem;
+ margin-bottom: 0.5rem;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/content/node.css b/core/profiles/demo_umami/themes/umami/css/components/content/node.css
new file mode 100644
index 0000000..230f740
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/content/node.css
@@ -0,0 +1,9 @@
+/**
+ * @file
+ * This file is used to high-level node styling. Individual view modes or
+ * content types may override this.
+ */
+
+.node {
+ background: #fff;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/fields/label-items.css b/core/profiles/demo_umami/themes/umami/css/components/fields/label-items.css
new file mode 100644
index 0000000..d8e8b99
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/fields/label-items.css
@@ -0,0 +1,24 @@
+/**
+ * @file
+ * This file is used to style fields with class 'label-items' eg: Recipe
+ * category
+ */
+.label-items {
+ margin-bottom: 1.2em;
+ font-size: 0.889rem;
+}
+
+.label-items .field__label,
+.label-items .field__items,
+.label-items .field__item {
+ display: inline;
+}
+
+.label-items .field__label,
+.label-items .field__item {
+ margin-right: 0.6rem;
+}
+
+.label-items .field__label {
+ font-weight: normal;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/forms/buttons.css b/core/profiles/demo_umami/themes/umami/css/components/forms/buttons.css
new file mode 100644
index 0000000..d820341
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/forms/buttons.css
@@ -0,0 +1,27 @@
+/**
+ * @file
+ * This file is used to style form buttons generically, with overrides per form
+ */
+.form-actions {
+ display: inline-flex;
+}
+
+.form-actions .button {
+ margin-left: 1em;
+}
+.form-actions .button:first-child {
+ margin-left: 0;
+}
+
+.form-submit {
+ padding: 0.6em 1.25em 0.4em;
+ margin: 0;
+ border: 1px solid #dbdbdb;
+ font-size: 0.875rem;
+ background-color: #fff;
+ color: #000;
+}
+.form-submit:hover,
+.form-submit:focus {
+ padding: calc(0.6em - 2px) calc(1.25em - 2px) calc(0.4em - 2px) calc(1.25em - 2px);
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/forms/contact.css b/core/profiles/demo_umami/themes/umami/css/components/forms/contact.css
new file mode 100644
index 0000000..5ba7810
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/forms/contact.css
@@ -0,0 +1,46 @@
+/**
+ * @file
+ * This file is used to style the contact form.
+ */
+
+.contact-form {
+ margin: auto auto 1rem;
+ max-width: 600px;
+}
+
+@media screen and (min-width: 30rem) { /* 480px */
+ .contact-form {
+ margin-bottom: 2rem;
+ }
+}
+
+@media screen and (min-width: 60rem) { /* 960px */
+ .contact-form {
+ margin-bottom: 3rem;
+ }
+}
+.contact-form .form-item-copy {
+ margin-bottom: 0;
+}
+.contact-form .form-item-copy .form-checkbox {
+ margin: 0 5px 0 0;
+ min-width: auto;
+}
+.contact-form .form-actions {
+ display: block;
+}
+
+@media screen and (min-width: 30rem) { /* 480px */
+ .contact-form .form-actions {
+ display: inline-flex;
+ }
+}
+.contact-form .form-actions .button {
+ margin-left: 0;
+}
+
+@media screen and (min-width: 30rem) { /* 480px */
+ .contact-form .form-actions .button {
+ margin-left: 1em;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/messages/messages.css b/core/profiles/demo_umami/themes/umami/css/components/messages/messages.css
new file mode 100644
index 0000000..d7a4f04
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/messages/messages.css
@@ -0,0 +1,56 @@
+/**
+ * @file
+ * Styles for system messages.
+ */
+
+.messages {
+ padding: 20px;
+ color: inherit;
+ word-wrap: break-word;
+ overflow-wrap: break-word;
+}
+[dir="rtl"] .messages {
+ background-position: right 10px top 17px;
+ text-align: right;
+}
+.messages + .messages {
+ margin-top: 1.538em;
+}
+.messages__content {
+ background: no-repeat 0 center;
+}
+.messages--status {
+ background-color: #e6eee0;
+}
+.messages--status .messages__content {
+ background-image: url(/core/misc/icons/73b355/check.svg);
+}
+.messages--warning {
+ background-color: #fcf1d4;
+}
+.messages--warning .messages__content {
+ background-image: url(/core/misc/icons/e29700/warning.svg);
+}
+.messages--error {
+ background-color: #f9e6eb;
+}
+.messages--error .messages__content {
+ background-image: url(/core/misc/icons/e32700/error.svg);
+}
+.messages--error .error {
+ color: inherit;
+}
+.messages a {
+ color: #cc2a00;
+}
+.messages__list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+.messages__item {
+ margin-left: 24px;
+}
+.messages__item + .messages__item {
+ margin-top: 0.769em;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/breadcrumbs/breadcrumbs.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/breadcrumbs/breadcrumbs.css
new file mode 100644
index 0000000..f04578f
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/breadcrumbs/breadcrumbs.css
@@ -0,0 +1,14 @@
+/**
+ * @file
+ * This file is used to style the breadcrumbs.
+ */
+.breadcrumb {
+ padding: 0.79rem 1.266rem;
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .breadcrumb {
+ padding-left: 2.37rem;
+ padding-right: 2.37rem;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-account/menu-account.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-account/menu-account.css
new file mode 100644
index 0000000..eadd7dc
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-account/menu-account.css
@@ -0,0 +1,35 @@
+/**
+ * @file
+ * This file is used to style the account menu.
+ */
+
+.menu--account {
+ display: none;
+}
+
+@media screen and (min-width: 48em) {
+ .menu--account {
+ flex: 0 1 50%;
+ order: 2;
+ display: block;
+ border-bottom: 1px solid #E6EEE0;
+ text-align: right;
+ }
+}
+
+.menu-account {
+ display: inline-flex;
+ margin: 1.6em 0;
+ padding: 0;
+ line-height: 1.5;
+ list-style-type: none;
+}
+.menu-account__item + .menu-account__item {
+ margin-left: 1em;
+}
+.menu-account__link,
+.menu-account__link:hover {
+ color: inherit;
+ text-decoration: none;
+ background-color: inherit;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-footer/menu-footer.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-footer/menu-footer.css
new file mode 100644
index 0000000..9749c93
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-footer/menu-footer.css
@@ -0,0 +1,41 @@
+/**
+ * @file
+ * This file is used to style the main menu.
+ */
+
+.menu-footer {
+ padding: 0;
+}
+
+.menu-footer__title {
+ font-size: 1.5rem;
+ font-weight: normal;
+}
+
+.menu-footer__item {
+ list-style: none;
+}
+
+.menu-footer .menu-footer__link {
+ background-color: transparent;
+ text-decoration: none;
+ font-weight: bold;
+ color: #ffffff;
+}
+
+.menu-footer .menu-footer__link:active,
+.menu-footer .menu-footer__link:focus,
+.menu-footer .menu-footer__link:hover {
+ background-color: transparent;
+ text-decoration: underline;
+}
+
+@media screen and (min-width: 60rem) {
+ .menu-footer__title {
+ padding-top: 2rem;
+ }
+
+ .menu-footer-wrapper {
+ flex-basis: 25%;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-main/menu-main.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-main/menu-main.css
new file mode 100644
index 0000000..e88b095
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/menu-main/menu-main.css
@@ -0,0 +1,124 @@
+/**
+ * @file
+ * This file is used to style the main menu.
+ */
+
+.menu-main {
+ color: #000;
+ margin: 0;
+ list-style-type: none;
+ font-family: 'Scope One', Georgia, serif;
+ font-size: 1.266rem;
+ font-weight: 400;
+ line-height: 1.2;
+ max-height: 0;
+ overflow: hidden;
+ padding: 0;
+ transition: max-height 0.5s ease-in;
+}
+.menu-main--active {
+ /**
+ * An exact max-height value must be set to make possible to animate the menu display.
+ * It my not be much larger than the content because that would break the animation.
+ * See: https://css-tricks.com/using-css-transitions-auto-dimensions/
+ */
+ max-height: 18.75rem;
+ overflow-y: auto;
+}
+.menu-main-toggle {
+ width: 41px;
+ height: 41px;
+ line-height: 1;
+ /* the padding, margin & transparent border means the hamburger doesn't move on focus/hover */
+ padding: 0 6px;
+ margin-left: -9px;
+ border: 3px solid transparent;
+ border-radius: 0;
+ text-align: left;
+ background-color: transparent;
+}
+.menu-main-toggle:hover {
+ background-color: transparent;
+}
+.menu-main-toggle svg {
+ display: block;
+}
+.menu-main__item {
+ margin-top: 0.8em;
+ text-align: center;
+}
+.menu-main__link {
+ background-color: inherit;
+ display: inline-block;
+ padding-bottom: 0.15em;
+ text-decoration: none;
+ border-bottom: solid 0.15em transparent;
+ color: inherit;
+ transition: all 0.2s;
+}
+.menu-main__link:hover,
+.menu-main__link.is-active:hover,
+.menu-main__link:focus {
+ background-color: inherit;
+ text-decoration: none;
+ border-bottom-color: rgba(255, 97, 56, 0.3);
+ color: #ff6138;
+}
+.menu-main__link:active,
+.menu-main__link.is-active {
+ text-decoration: none;
+ border-bottom-color: #ff6138;
+}
+
+@media screen and (min-width: 48em) {
+ .menu-main {
+ display: flex;
+ justify-content: flex-end;
+ flex-wrap: wrap;
+ max-height: initial;
+ overflow: auto;
+ }
+ .menu-main-toggle {
+ display: none;
+ }
+ .menu-main__item {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+ .menu-main__item + .menu-main__item {
+ margin-left: 2.5em;
+ }
+}
+
+.menu-main-togglewrap {
+ flex: 0 1 30%;
+ order: 1;
+ padding-left: 1rem;
+}
+
+@media screen and (min-width: 48em) {
+ .menu-main-togglewrap {
+ display: none;
+ }
+}
+
+.menu-main__wrapper {
+ order: 4;
+ flex: 0 1 100%;
+ text-align: center;
+}
+
+@media screen and (min-width: 48em) {
+ .menu-main__wrapper {
+ order: 4;
+ flex: 0 1 calc(100% - 220px);
+ text-align: right;
+ }
+}
+
+@media screen and (min-width: 48em) {
+ .menu-main {
+ display: flex;
+ justify-content: flex-end;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/more-link/more-link.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/more-link/more-link.css
new file mode 100644
index 0000000..331b225
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/more-link/more-link.css
@@ -0,0 +1,32 @@
+/**
+ * @file
+ * This file is used to style the more link.
+ */
+
+.read-more__link {
+ background-color: inherit;
+ position: relative;
+ display: inline-block;
+ padding-right: 20px;
+ text-decoration: none;
+ text-transform: uppercase;
+}
+
+.read-more__link:focus,
+.read-more__link:hover {
+ text-decoration: underline;
+}
+
+.read-more__link:before {
+ position: absolute;
+ top: 50%;
+ right: 0;
+ width: 14px;
+ height: 14px;
+ margin-top: -7px;
+ content: '';
+ background-image: url('../../../../images/svg/pointer.svg');
+ background-repeat: no-repeat;
+ background-position: 0 0;
+ background-size: contain;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css
new file mode 100644
index 0000000..f23e160
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Styles for the skip link.
+ */
+
+.skip-link {
+ left: 50%;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%);
+ z-index: 50;
+ background: #444;
+ background: rgba(0, 0, 0, 0.6);
+ padding: 1px 10px 2px;
+ border-radius: 0 0 10px 10px;
+ border: 1px solid #444;
+ border-top-width: 0;
+ outline: 0;
+}
+.skip-link.visually-hidden.focusable:focus {
+ position: absolute !important;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css
new file mode 100644
index 0000000..79cc119
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/tabs/tabs.css
@@ -0,0 +1,35 @@
+/**
+ * @file
+ * Visual styles for tabs.
+ */
+
+.layout-tabs {
+ background-color: #79bd8f;
+}
+.tabs.primary {
+ display: flex;
+ list-style: none;
+ margin: 0 0 0.5em;
+ padding: 0;
+}
+.tabs .tab {
+ margin: 0;
+ background-color: #e6eee0;
+}
+.tabs .tab.is-active {
+ background-color: #fff;
+}
+.tabs a {
+ display: block;
+ padding: 0.75rem 1rem;
+ background-color: inherit;
+ color: inherit;
+ text-decoration: none;
+}
+.tabs a.is-active {
+ background-color: inherit;
+}
+.tabs a:focus,
+.tabs a:hover {
+ background-color: #fff;
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/regions/bottom/bottom.css b/core/profiles/demo_umami/themes/umami/css/components/regions/bottom/bottom.css
new file mode 100644
index 0000000..19ca321
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/regions/bottom/bottom.css
@@ -0,0 +1,42 @@
+/**
+ * @file
+ * This file is used to style the bottom region.
+ */
+
+.layout-bottom {
+ background: #fff;
+ padding: 2rem 1rem;
+ overflow: hidden;
+}
+
+.umami-disclaimer,
+.umami-copyright {
+ display: block;
+ text-align: center;
+ margin-bottom: 1rem;
+ font-size: 0.94rem;
+}
+
+@media screen and (min-width: 75rem) {
+ .layout-bottom {
+ padding: 3rem 0;
+ }
+
+ .umami-disclaimer,
+ .umami-copyright {
+ margin-bottom: 0;
+ }
+
+ .umami-disclaimer {
+ float: left;
+ max-width: 40%;
+ text-align: left;
+ margin-left: 0.5rem;
+ }
+
+ .umami-copyright {
+ float: right;
+ width: 25%;
+ text-align: left;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/regions/footer/footer.css b/core/profiles/demo_umami/themes/umami/css/components/regions/footer/footer.css
new file mode 100644
index 0000000..421f09e
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/regions/footer/footer.css
@@ -0,0 +1,27 @@
+/**
+ * @file
+ * This file is used to style the footer.
+ *
+ * It styles the footer as a global component; it does not style individual
+ * footer items, such as a menu, which are styled by their own CSS files.
+ */
+
+.footer {
+ padding: 2rem 1rem;
+ background-color: #5f635d;
+ color: #fff;
+ text-align: center;
+ font-size: 0.9rem;
+}
+
+@media screen and (min-width: 60rem) {
+ .footer {
+ padding: 1rem 1rem 0;
+ text-align: left;
+ }
+
+ .region-footer {
+ display: flex;
+ justify-content: space-between;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/regions/header/header.css b/core/profiles/demo_umami/themes/umami/css/components/regions/header/header.css
new file mode 100644
index 0000000..35f75c4
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/regions/header/header.css
@@ -0,0 +1,32 @@
+/**
+ * @file
+ * This file is used to style the header.
+ *
+ * It styles the header as a global component; it does not style individual
+ * header items, such as a menu, which are styled by their own CSS files.
+ */
+
+.layout-header {
+ background: #fff;
+ padding: 0;
+}
+
+.region-header {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ padding: 0.75rem 0;
+}
+
+@media screen and (min-width: 48em) {
+ .region-header {
+ padding: 0 1rem;
+ }
+}
+
+/* 77em == the max width of .container + 1em either side */
+@media screen and (min-width: 77em) {
+ .region-header {
+ padding: 0;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/views/frontpage.css b/core/profiles/demo_umami/themes/umami/css/components/views/frontpage.css
new file mode 100644
index 0000000..e89338e
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/views/frontpage.css
@@ -0,0 +1,23 @@
+/**
+ * @file
+ * This file is used to style the 'Frontpage' view.
+ */
+
+.view-frontpage .view-header {
+ padding: 0 1.266rem;
+ margin-bottom: 2rem;
+}
+
+@media screen and (min-width: 30em) {
+ .view-frontpage .view-header {
+ margin-bottom: 3rem;
+ }
+}
+
+@media screen and (min-width: 60em) {
+ .view-frontpage .view-header {
+ margin-bottom: 4rem;
+ padding-left: 2.37rem;
+ padding-right: 2.37rem;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/components/views/promoted-items.css b/core/profiles/demo_umami/themes/umami/css/components/views/promoted-items.css
new file mode 100644
index 0000000..b81adae
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/components/views/promoted-items.css
@@ -0,0 +1,116 @@
+/**
+ * @file
+ * This file is used to style the 'Promoted Items' view.
+ */
+
+.block-views-blockpromoted-items-block-1 {
+ margin-top: 1rem;
+}
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .block-views-blockpromoted-items-block-1 {
+ margin-top: 2rem;
+ }
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .block-views-blockpromoted-items-block-1 {
+ margin-top: 3rem;
+ }
+}
+
+.view-promoted-items--single {
+ padding: 1rem 14px 2rem;
+}
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .view-promoted-items--single {
+ padding-top: 2rem;
+ padding-bottom: 3rem;
+ }
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single {
+ display: flex;
+ }
+}
+/* 77em == the max width of .container + 1em either side */
+@media screen and (min-width: 77em) {
+ .view-promoted-items--single {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single > .view-content {
+ flex: 0 0 50%;
+ margin-right: 14px;
+ display: flex;
+ }
+}
+
+.view-promoted-items--single > .view-content .views-row {
+ margin-bottom: 14px;
+}
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .view-promoted-items--single > .view-content .views-row {
+ margin-bottom: 28px;
+ display: flex;
+ }
+}
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single > .view-content .views-row {
+ margin-bottom: 0;
+ }
+}
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single > .attachment-after {
+ margin-left: 14px;
+ display: flex;
+ }
+}
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single .attachment-after .views-element-container {
+ display: flex;
+ }
+}
+
+/* Large */
+@media screen and (min-width: 60rem) { /* 960px */
+ .view-promoted-items--single .attachment-after .view-promoted-items--double {
+ display: flex;
+ }
+}
+
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .view-promoted-items--double {
+ overflow-x: hidden;
+ }
+}
+
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .view-promoted-items--double .view-content {
+ display: flex;
+ margin: 0 -14px;
+ }
+}
+
+/* Small */
+@media screen and (min-width: 30rem) { /* 480px */
+ .view-promoted-items--double .views-row {
+ display: flex;
+ margin: 0 14px;
+ width: calc(50% - 28px);
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/layout/grid-2.css b/core/profiles/demo_umami/themes/umami/css/layout/grid-2.css
new file mode 100644
index 0000000..0efe459
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/layout/grid-2.css
@@ -0,0 +1,34 @@
+/**
+ * @file
+ * This file is used to create a 3 column grid layout.
+ */
+
+.grid--2 .views-row {
+ margin-bottom: 28px;
+ padding: 0 14px;
+}
+
+@media screen and (min-width: 30em) {
+ .grid--2 {
+ overflow-x: hidden;
+ }
+ .grid--2 .view-content {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0;
+ }
+ .grid--2 .views-row {
+ display: flex;
+ flex: 0 0 calc(50% - 28px);
+ margin: 0 14px 28px;
+ padding: 0;
+ }
+}
+
+/* 77em == the max width of .container + 1em either side */
+@media screen and (min-width: 77em) {
+ .grid--2 .view-content {
+ margin-left: -14px;
+ margin-right: -14px;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/layout/grid-3.css b/core/profiles/demo_umami/themes/umami/css/layout/grid-3.css
new file mode 100644
index 0000000..6c881a7
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/layout/grid-3.css
@@ -0,0 +1,40 @@
+/**
+ * @file
+ * This file is used to create a 3 column grid layout.
+ */
+
+.grid--3 .views-row {
+ margin-bottom: 28px;
+ padding: 0 14px;
+}
+
+@media screen and (min-width: 30em) {
+ .grid--3 {
+ overflow-x: hidden;
+ }
+ .grid--3 .view-content {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0;
+ }
+ .grid--3 .views-row {
+ display: flex;
+ flex: 0 0 calc(50% - 28px);
+ margin: 0 14px 28px;
+ padding: 0;
+ }
+}
+
+@media screen and (min-width: 60em) {
+ .grid--3 .views-row {
+ flex: 0 0 calc(33% - 28px);
+ }
+}
+
+/* 77em == the max width of .container + 1em either side */
+@media screen and (min-width: 77em) {
+ .grid--3 .view-content {
+ margin-left: -14px;
+ margin-right: -14px;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/layout/grid-4.css b/core/profiles/demo_umami/themes/umami/css/layout/grid-4.css
new file mode 100644
index 0000000..dd0d1e8
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/layout/grid-4.css
@@ -0,0 +1,41 @@
+/**
+ * @file
+ * This file is used to create a 4 column grid layout.
+ */
+
+.grid--4 .views-row {
+ margin-bottom: 28px;
+ padding: 0 14px;
+}
+
+@media screen and (min-width: 30em) {
+ .grid--4 {
+ overflow-x: hidden;
+ }
+ .grid--4 .view-content {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0;
+ }
+
+ .grid--4 .views-row {
+ display: flex;
+ flex: 0 0 calc(50% - 28px);
+ margin: 0 14px 28px;
+ padding: 0;
+ }
+}
+
+@media screen and (min-width: 60em) {
+ .grid--4 .views-row {
+ flex: 0 0 calc(25% - 28px);
+ }
+}
+
+/* 77em == the max width of .container + 1em either side */
+@media screen and (min-width: 77em) {
+ .grid--4 .view-content {
+ margin-left: -14px;
+ margin-right: -14px;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/layout/layout-2-col.css b/core/profiles/demo_umami/themes/umami/css/layout/layout-2-col.css
new file mode 100644
index 0000000..64203d6
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/layout/layout-2-col.css
@@ -0,0 +1,19 @@
+/**
+ * @file
+ * This file is used to create the layout when the theme has 2 columns.
+ */
+.layout-sidebar {
+ margin: 0 1.562rem;
+}
+
+@media screen and (min-width: 60em) {
+ .two-columns .main {
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .layout-sidebar {
+ min-width: 300px;
+ width: 25%;
+ }
+}
diff --git a/core/profiles/demo_umami/themes/umami/css/layout/layout.css b/core/profiles/demo_umami/themes/umami/css/layout/layout.css
new file mode 100644
index 0000000..090e6c8
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/css/layout/layout.css
@@ -0,0 +1,12 @@
+/**
+ * @file
+ * This file is used to create generic layout styles.
+ *
+ * More specific layout items may be found within their respective files, e.g.
+ * the layout for two columns is in the layout-2-cols.css file.
+ */
+
+.container {
+ max-width: 1200px;
+ margin: auto;
+}
diff --git a/core/profiles/demo_umami/themes/umami/images/png/umami-bundle.png b/core/profiles/demo_umami/themes/umami/images/png/umami-bundle.png
new file mode 100644
index 0000000..e1bed35
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/png/umami-bundle.png
Binary files differ
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/cake.svg b/core/profiles/demo_umami/themes/umami/images/svg/cake.svg
new file mode 100644
index 0000000..2909909
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/cake.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="54" height="40"><title>Cake</title><path fill="#79BD8F" d="M51.814 21.368h-3.473c-.292-4.01-.292-12.136-.292-12.136A1.033 1.033 0 0 0 47.04 8.17s-7.676-1.164-18.554-1.26a4.337 4.337 0 0 0 1.245-1.757c.777-2.028-.028-4.22-1.792-4.899-1.765-.677-3.832.417-4.61 2.445-.603 1.577-.248 3.249.77 4.237C14.217 7.124 7.44 8.175 7.44 8.175a.817.817 0 0 0-.775.61.896.896 0 0 0-.07.35s0 7.779-.286 12.239H2.15c-1.184 0-2.143.96-2.143 2.143v15.297a1.1 1.1 0 0 0 1.1 1.1h51.311c.866 0 1.569-.702 1.569-1.568v-14.8a2.178 2.178 0 0 0-2.174-2.178zM25.942 3.698c.092-.253.249-.476.454-.648.195-.158.411-.232.538-.184.126.048.198.224.224.291a1.44 1.44 0 0 1-.046.988 1.521 1.521 0 0 1-.454.648c-.195.158-.41.232-.537.184-.203-.079-.43-.626-.179-1.28zm1.12 6.007a142.87 142.87 0 0 1 18.193 1.05c.01 1.804.03 7.649.124 10.531l-.013.015a.5.5 0 0 1-.189.07h-2.044c-.862-.461-.401-2.426-.477-3.567-.05-.753-.036-2.918-1.009-3.176-.917-.242-1.2 2.314-1.26 2.663-.26 1.525.504 4.078-1.345 4.082-1.654 0-1.184-1.579-1.29-3.025-.084-1.15.36-7.365-2.181-6.446-1.527.553-1.618 4.531-1.905 5.883-.187.886-.37 3.154-1.12 3.585h-2.007c-1.474-1.14-.212-10.84-3.524-10.067-2.074.484-1.345 6.282-1.569 7.71-.193 1.189-.312 2.017-1.369 2.353h-1.232c-.215-.15-.36-.408-.525-.747-.422-.877.243-5.728-1.385-5.45-.793.134-.874 2.508-.94 3.024-.154 1.232.225 3.099-.873 3.17h-.288c-1.916-.106-1.85-2.651-2.523-5.078-.353-1.27-1.055-2.562-1.868-2.637-1.215-.112-1.558 2.28-1.867 3.607-.285 1.233.176 3.413-.897 3.787-.918.32-1.86.32-2.34.32.056-3.058.079-9.192.087-10.643-.004.012 7.074-.949 17.642-1.014h-.005zM8.614 29.366c-.659-2.826-1.714-2.12-2.179.435-.25 1.376-.281 6.124-1.422 6.859-.405.255-.866.409-1.344.448h-.602a2.107 2.107 0 0 1-.238-.034s0-1.726-.02-4.01v-8.895H51.19v12.945s-1.161-.02-1.743-.312c-1.12-.56-2.859-3.02-3.446-4.917-.43-1.39-2.269-5.72-3.671-2.961-.667 1.312-1.002 10.002-3.236 7.645-.91-.961-.828-4.145-1.13-5.445-.27-1.165-.46-2.838-1.009-3.876-.66-1.238-2.016-1.965-2.871-.323-.896 1.714.326 9.4-1.67 10.19h-.337c-1.271-.585-.683-8.333-2.142-8.955-2.128-.91-.248 9.497-3.282 7.439-2.98-2.023-1.1-6.834-3.054-9.397-2.327-3.056-3.3 4.513-3.575 6.087-.234 1.344-.575 4.718-2.087 3.753-1.129-.72-1.764-4.908-2.066-6.187-.306-1.299-.544-4.93-2.504-4.399-1.331.359-1.405 1.643-1.496 2.866-.178 2.373-.2 4.981-.699 7.299-.419 1.948-1.58 1.391-1.85-.066l-.71-6.189z"/></svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/chefs-hat.svg b/core/profiles/demo_umami/themes/umami/images/svg/chefs-hat.svg
new file mode 100644
index 0000000..37ec93d
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/chefs-hat.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="55" height="43"><title>Chefs hat</title><path d="M46.6 13.2c-2.3-4.3-8-8.1-15.2-9.5-1.3-.3-2.6-.4-3.9-.5C25.3 1.8 22.8.9 20.2.4 10.6-1.4 1.7 3.3.3 10.9c-1 5.4 2 10.7 7.2 14.1v15.5c0 1.3 1.1 2.4 2.4 2.4h30.9c1.3 0 2.4-1.1 2.4-2.4V29.3v.4c5.5.6 10.1-1.1 11.3-4.6 1.5-3.9-2-8.9-7.9-11.9zm-6.1 27.1H10.2V25.6h30.4v14.7zm11.6-16.1c-.6 1.8-3.2 2.9-6.7 2.9-.7 0-1.4 0-2.1-.1v-1.7c0-1.3-1.1-2.4-2.4-2.4h-3.6c.1-.9.3-1.7.6-2.6l-2.1-.7c-.4 1.1-.9 2.2-1.5 3.2h-5c-.5-1-.9-2.1-1.2-3.2l-1.2.4c0 .9-.1 1.8-.2 2.8h-5.5c-.2-1.1-.4-2.2-.4-3.4h-1.4c-.3 1.7-.6 2.6-1 3.4h-1.8c-.9-.6-1.7-1.4-2.4-2.2 0 0-3.1-2.8-4.1-9.9 0-.2-1 0-1 0-.1.3-.2.7-.2 1-.8 4 .7 8 3.7 11.1H9.9c-.2 0-.4 0-.6.1-1.4-.8-2.7-1.9-3.8-3.1-2.2-2.6-3.2-5.6-2.6-8.4.5-2.4 2-4.5 4.3-6.1 2.4-1.6 5.6-2.5 8.9-2.5 1.2 0 2.4.1 3.6.3 4 .8 7.6 2.7 10 5.5 1.5 1.7 2.4 3.7 2.7 5.6h2.7c-.3-2.8-1.6-5.4-3.6-7.7 4.2.9 7.9 2.7 10.5 5.1 1.3 1.3 3.5 3.8 3 6.6.8.5 1.6 1.1 2.4 1.5.3-.9.4-1.8.4-2.7 1.1.7 2 1.6 2.9 2.6 1.3 1.7 1.8 3.4 1.4 4.6z" fill="#e84265"/></svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/difficulty.svg b/core/profiles/demo_umami/themes/umami/images/svg/difficulty.svg
new file mode 100644
index 0000000..810f483
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/difficulty.svg
@@ -0,0 +1,9 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
+ <defs>
+ <style>
+ .cls-1{fill:#00836d;}
+ </style>
+ </defs>
+ <path class="cls-1" d="M299.29 118.57c-120.29 0-217.86 97.61-217.86 217.86a215.64 215.64 0 0 0 48.81 137.22 13.8 13.8 0 0 0 19.76 2.12c5.66-5 7.07-14.15 2.12-19.81a187.92 187.92 0 0 1-20.51-31.83l45.27-18.39a14.12 14.12 0 1 0-10.61-26.17l-46 18.39c-5-14.15-8.49-29-9.2-44.56h48.1a14.15 14.15 0 0 0 0-28.29h-48.74a165.28 165.28 0 0 1 8.49-46l43.85 18.39c2.12.71 3.54 1.41 5.66 1.41a14 14 0 0 0 12.73-8.49 14.36 14.36 0 0 0-7.78-18.39l-43.85-18.39A204.84 204.84 0 0 1 155 214.77l32.54 32.54a13.68 13.68 0 0 0 19.81 0 13.68 13.68 0 0 0 0-19.81l-33.24-33.24A211.56 211.56 0 0 1 213 167.38l17.68 42.44c2.12 5.66 7.78 8.49 13.44 8.49 2.12 0 3.54 0 5.66-1.41a15.46 15.46 0 0 0 3.54-2.12c-1.41 12-2.83 30.42-2.83 58 0 33.24.71 74.27 3.54 86.29a49.32 49.32 0 0 0 48.1 38.2 54.6 54.6 0 0 0 10.61-1.41c26.88-5.66 43.85-31.83 38.2-58-2.12-12-18.39-49.51-31.83-79.22-12.73-28.29-21.22-45.27-27.59-55.17 2.12 2.12 5.66 2.83 8.49 2.83a14.19 14.19 0 0 0 14.15-14.15v-44.58a202.27 202.27 0 0 1 46.68 9.2l-17.68 42.44a14.36 14.36 0 0 0 7.78 18.39c2.12.71 3.54 1.41 5.66 1.41a14 14 0 0 0 12.73-8.49L387 168.08a182.4 182.4 0 0 1 38.2 26.17L392 227.5a13.68 13.68 0 0 0 0 19.81 13.68 13.68 0 0 0 19.81 0l32.54-32.54c9.9 12 19.1 25.46 25.46 39.61l-43.85 18.39a14.36 14.36 0 0 0-7.78 18.39c2.12 5.66 7.78 8.49 13.44 8.49 2.12 0 3.54 0 5.66-1.41l43.85-17.68a233 233 0 0 1 8.49 45.27h-48.1a14.15 14.15 0 0 0 0 28.29h48.1a199.17 199.17 0 0 1-9.9 45.27l-45.27-19.1a14.12 14.12 0 0 0-10.61 26.17l44.56 18.39a207.78 207.78 0 0 1-21.93 33.24 13.8 13.8 0 0 0 2.12 19.81c2.83 2.12 5.66 3.54 9.2 3.54a12.73 12.73 0 0 0 10.61-5 217.33 217.33 0 0 0 50.22-139.34c-.76-120.92-99.08-218.53-219.33-218.53zm24 226.35a20.66 20.66 0 0 1-16.27 24c-11.32 2.12-22.63-5-24.76-15.56-2.12-12-3.54-71.44-2.12-110.34 16.32 35.41 40.37 90.58 43.2 101.9zM271.71 188.6h-2.83c-5 .71-8.49 2.83-11.32 9.9l-17.68-42.44a196.33 196.33 0 0 1 46-9.2v46c0 1.41 0 2.83.71 3.54-7.1-7.8-10.59-7.8-14.88-7.8z"/>
+ <circle class="cls-1" cx="300.24" cy="339.59" r="9.2" transform="rotate(-11.9 300.247 339.58)"/>
+</svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/health.svg b/core/profiles/demo_umami/themes/umami/images/svg/health.svg
new file mode 100644
index 0000000..744bd0e
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/health.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="58" height="46"><title>Health icon</title><path fill="#FF6138" d="M57.289 17.156a2.877 2.877 0 0 0-2.774-2.782l-.398-.005c-.926 0-3.497.09-6.677.71-.57-4.31-1.722-7.37-1.818-7.615A2.87 2.87 0 0 0 44.05 5.85a2.856 2.856 0 0 0-2.25.024c-.21.094-2.524 1.14-5.41 3.178-2.53-4.828-5.457-7.94-5.671-8.166a2.861 2.861 0 0 0-4.14 0c-.215.225-3.145 3.341-5.676 8.175-2.88-2.033-5.196-3.095-5.405-3.188a2.856 2.856 0 0 0-2.25-.024 2.87 2.87 0 0 0-1.574 1.613c-.094.244-1.247 3.304-1.815 7.616-3.181-.622-5.752-.71-6.679-.71l-.399.005a2.878 2.878 0 0 0-2.774 2.782c-.017.538-.322 13.286 7.581 21.216 7.22 7.244 18.55 7.61 20.748 7.61l.294-.003c.006 0 .012.004.017.004.006 0 .012-.004.018-.004l.294.004c2.198 0 13.528-.367 20.748-7.61 7.904-7.93 7.6-20.678 7.583-21.217zm-14.336-8.65s1.148 3.015 1.672 7.247a30.146 30.146 0 0 0-5.096 1.93 31.547 31.547 0 0 0-1.894-5.977c2.926-2.126 5.318-3.2 5.318-3.2zm-28.61 0s2.391 1.068 5.32 3.195a31.58 31.58 0 0 0-1.9 5.999 30.24 30.24 0 0 0-5.094-1.942c.524-4.233 1.673-7.253 1.673-7.253zM9.612 36.34C2.496 29.199 2.87 17.247 2.87 17.247s.108-.003.308-.003c1.502 0 8.192.24 14.12 3.444a25.421 25.421 0 0 0-.108 2.303c0 8.847 4.785 16.32 7.527 19.88-4.107-.49-10.571-1.986-15.103-6.531zm19.098 6.7c-.057-.018-.11-.035-.181-.06-1.008-1.103-8.477-9.628-8.477-19.989 0-11.11 8.594-20.118 8.594-20.118s8.595 9.007 8.595 20.118c0 10.661-7.892 19.362-8.532 20.05zm18.971-6.7c-4.53 4.545-10.995 6.04-15.103 6.53 2.741-3.559 7.527-11.032 7.527-19.879 0-.785-.04-1.557-.11-2.317 5.928-3.202 12.621-3.43 14.121-3.43.2 0 .309.002.309.002s.373 11.953-6.744 19.094z"/></svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/knife.svg b/core/profiles/demo_umami/themes/umami/images/svg/knife.svg
new file mode 100644
index 0000000..3cee4ae
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/knife.svg
@@ -0,0 +1,9 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
+ <defs>
+ <style>
+ .cls-1{fill:#ff6138;}
+ </style>
+ </defs>
+ <path class="cls-1" d="M540.13 125.81C530 105.45 504.5 85.08 479 85.08a41.47 41.47 0 0 0-9.46.73c-7.27 1.45-26.91 5.82-136.73 130.92h-.73c-8.73 0-13.82 0-145.46 138.19C122.66 420.37 60.11 488 59.38 488.74a14.55 14.55 0 0 0 8 24 122.6 122.6 0 0 0 24 2.18c69.09 0 152.73-53.82 210.92-98.91 39.27-30.55 113.46-96.73 115.64-114.19.73-6.55-2.18-13.82-9.46-23.27L487 181.81h3.64c14.55 0 34.91-3.64 47.28-19.64 8.08-9.45 8.76-23.27 2.21-36.36zM102.29 485.1c85.1-90.91 203.65-215.28 230.56-237.83 13.82 8.73 45.09 37.82 53.82 50.91C361.94 330.91 207 474.92 102.29 485.1zM515.4 144.72c-5.82 7.27-18.91 8-24.73 8a45.59 45.59 0 0 1-8-.73c-5.09-.73-10.18 1.45-13.82 5.09l-78.55 96.73a246.41 246.41 0 0 0-30.55-25.46c93.83-104.72 114.2-113.45 115.65-114.18 9.46-2.18 25.46 6.55 34.18 18.91 5.82 6.55 5.82 10.92 5.82 11.64z"/>
+ <circle class="cls-1" cx="483.4" cy="135.26" r="9.46"/>
+</svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/learn-to-cook.svg b/core/profiles/demo_umami/themes/umami/images/svg/learn-to-cook.svg
new file mode 100644
index 0000000..af0ffea
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/learn-to-cook.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="42" height="46"><title>Learn to cook icon</title><g fill="#00A388"><path d="M15.175 36.263l4.786 2.394a1.45 1.45 0 0 0 1.297 0l4.786-2.394a1.45 1.45 0 0 0 .802-1.298v-7.181c0-.801-.65-1.45-1.45-1.45h-9.573c-.8 0-1.45.649-1.45 1.45v7.181c0 .55.31 1.052.802 1.298zm2.099-7.029h6.671v4.835l-3.335 1.668-3.336-1.668v-4.835z"/><path d="M39.753 19.151h-8.166V8.632a1.451 1.451 0 0 0-1.45-1.451h-2.1C27.9 3.198 24.622 0 20.61 0c-4.014 0-7.292 3.199-7.427 7.18h-2.1c-.801.001-1.45.65-1.45 1.452V19.15H1.464a1.45 1.45 0 0 0 0 2.902h3.261L3.722 42.149a3.63 3.63 0 0 0 .997 2.71 3.627 3.627 0 0 0 2.656 1.132h26.468a3.628 3.628 0 0 0 2.656-1.132 3.63 3.63 0 0 0 .997-2.71l-1.004-20.097h3.261a1.45 1.45 0 0 0 0-2.902v.001zM20.61 2.901a4.539 4.539 0 0 1 4.524 4.28h-9.049a4.538 4.538 0 0 1 4.525-4.28zm-8.077 7.182h16.153v9.067H12.533v-9.067zM34.6 42.294a.755.755 0 0 1-.202.565.755.755 0 0 1-.554.23H7.375a.753.753 0 0 1-.554-.23.756.756 0 0 1-.202-.565L7.63 22.053h25.958L34.6 42.294z"/></g></svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/menu-icon.svg b/core/profiles/demo_umami/themes/umami/images/svg/menu-icon.svg
new file mode 100644
index 0000000..f716c07
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/menu-icon.svg
@@ -0,0 +1 @@
+<svg width="23" height="23" viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-labelledby="menu-toggle-title menu-toggle-desc"><title id="menu-toggle-title">Menu toggle icon</title><desc id="menu-toggle-desc">Hamburger icon for menu toggle.</desc><use xlink:href="#a" fill="#5F635D"/><use xlink:href="#a" transform="translate(0 18)" fill="#5F635D"/><use xlink:href="#a" transform="translate(0 9)" fill="#5F635D"/><defs><path id="a" fill-rule="evenodd" d="M0 0h23v5H0V0z"/></defs></svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/pointer--white.svg b/core/profiles/demo_umami/themes/umami/images/svg/pointer--white.svg
new file mode 100644
index 0000000..2b7a842
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/pointer--white.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="7" height="14" viewBox="0 0 7 14"><path fill="#FFF" d="M4.326 6.71L.09 10.95v2.296L6.62 6.71.09.178v2.296"/></svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/pointer.svg b/core/profiles/demo_umami/themes/umami/images/svg/pointer.svg
new file mode 100644
index 0000000..8ac898b
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/pointer.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><title>Pointer icon</title><path fill="none" d="M159.19 117.37v365.26L341.82 300 159.19 117.37z"/><path fill="#00836D" d="M341.82 300L159.19 482.63v98.99L440.81 300 159.19 18.38v98.99L341.82 300z"/></svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/search.svg b/core/profiles/demo_umami/themes/umami/images/svg/search.svg
new file mode 100644
index 0000000..fee44a3
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/search.svg
@@ -0,0 +1,12 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
+ <defs>
+ <style>
+ .cls-1{fill:none;}.cls-2{fill:#d93760;}
+ </style>
+ </defs>
+ <path class="cls-1" d="M228.37 348.78L110.23 466.92l22.86 22.84 118.12-118.14a165.77 165.77 0 0 1-22.84-22.84zm127.38-236.35a131.82 131.82 0 0 0 0 263.65 131.82 131.82 0 0 0 0-263.64zm-85.83 117.66a12.91 12.91 0 1 1 12.91-12.91 12.91 12.91 0 0 1-12.91 12.91zm28.43-31.3A22.61 22.61 0 1 1 321 176.18a22.61 22.61 0 0 1-22.65 22.61zM344 167.72a12.93 12.93 0 1 1 13-12.93 12.93 12.93 0 0 1-13 12.93z"/>
+ <path class="cls-2" d="M355.75 79.47a164.81 164.81 0 0 0-144.5 244 38.93 38.93 0 0 0-11 7.73L90.9 440.58a39 39 0 0 0 0 55.15l13.37 13.37a39 39 0 0 0 55.17 0l109.33-109.34a38.85 38.85 0 0 0 7.74-11 164.78 164.78 0 1 0 79.24-309.29zM133.09 489.76l-22.86-22.84 118.14-118.14a165.77 165.77 0 0 0 22.84 22.84zm222.66-113.69a131.82 131.82 0 1 1 131.81-131.83 131.81 131.81 0 0 1-131.84 131.84z"/>
+ <circle class="cls-2" cx="298.35" cy="176.18" r="22.61"/>
+ <circle class="cls-2" cx="344.05" cy="154.79" r="12.93"/>
+ <circle class="cls-2" cx="269.92" cy="217.18" r="12.91"/>
+</svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/serves.svg b/core/profiles/demo_umami/themes/umami/images/svg/serves.svg
new file mode 100644
index 0000000..7436af2
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/serves.svg
@@ -0,0 +1,9 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
+ <defs>
+ <style>
+ .cls-1{fill:#00836d;}
+ </style>
+ </defs>
+ <path class="cls-1" d="M307.75 141c-85.1 0-154.84 73.58-154.84 163.8S222 468.6 307.75 468.6c85.1 0 154.2-73.58 154.2-163.8 0-90.86-69.11-163.8-154.2-163.8zm0 301.36c-71 0-129.25-62.06-129.25-138.2S236.09 166 307.75 166c71 0 128.61 62.06 128.61 138.2s-57.59 138.16-128.61 138.16z"/>
+ <path class="cls-1" d="M307.75 187.71c-60.14 0-109.41 52.47-109.41 116.45s49.26 116.45 109.41 116.45 109.41-52.47 109.41-116.45-49.27-116.45-109.41-116.45zm0 207.31c-46.07 0-83.82-40.95-83.82-90.86s37.75-90.86 83.82-90.86 83.82 40.95 83.82 90.86c0 50.55-37.76 90.84-83.82 90.84zM549 297.76l.64-160a13.36 13.36 0 0 0-5.12-10.24q-4.8-3.84-11.52-1.92c-1.92.64-46.07 14.08-46.07 92.78 0 37.11 2.56 64.62 6.4 79.34a23.65 23.65 0 0 0-3.84 13.44v139.52c0 13.44 10.88 24.31 23.67 24.31h14.72c13.44 0 23.67-10.88 23.67-24.31V310.56c1.25-4.48-.03-8.96-2.55-12.8zM524 166l-.64 119.65h-5.76c-1.92-8.32-4.48-28.15-4.48-67.82.01-25 5.13-41.64 10.88-51.83zm3.2 283.45h-10.87V311.84h10.88zm-400.53-323.8a12.83 12.83 0 0 0-12.8 12.8v46.71h-7v-46.72a12.8 12.8 0 0 0-25.59 0v46.71h-7.71v-46.71a12.8 12.8 0 0 0-25.59 0v59.5a3.85 3.85 0 0 0 .64 2.56v.64c0 .64.64 1.28.64 1.92v.64l20.47 34.55a25.13 25.13 0 0 0-7 17.92v194.51c0 13.44 10.88 24.31 23.67 24.31h14.72c13.44 0 23.67-10.88 23.67-24.31V255.53a25.66 25.66 0 0 0-7.68-17.92l19.83-33.27v-.64a2.35 2.35 0 0 0 .64-1.92v-.64c0-.64.64-1.92.64-2.56v-60.14c1.25-7.04-4.51-12.79-11.55-12.79zm-23 85.1L93.4 228l-10.23-17.26zM88.28 449.4v-190c1.92.64 3.2 1.28 5.12 1.28a18.68 18.68 0 0 0 5.76-1.28v190z"/>
+</svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/spoon.svg b/core/profiles/demo_umami/themes/umami/images/svg/spoon.svg
new file mode 100644
index 0000000..d157d75
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/spoon.svg
@@ -0,0 +1,9 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
+ <defs>
+ <style>
+ .cls-1{fill:#00836d;}
+ </style>
+ </defs>
+ <path class="cls-1" d="M530.54 77.22A45.8 45.8 0 0 0 498 63.52a35 35 0 0 0-7 .62l-3.4.72L319 233.5c-41.06 41.06-57.95 51.2-63.48 53.67-1.29.1-2.57.21-3.84.35-48.87 5.25-110.46 39.85-139.5 68.89-44.95 44.95-50.31 112.73-11.94 151.09 16.57 16.57 39.53 25.7 64.64 25.7 31 0 62.52-13.72 86.44-37.64 29-29 63.64-90.64 68.89-139.51.14-1.27.25-2.55.35-3.84 2.47-5.53 12.61-22.42 53.68-63.48l169.1-169.1.44-4.11c.13-.92 2.29-22.78-13.24-38.3zM353.53 268c-32.89 32.89-53 57.19-59.71 72.24l-2.09 4.68-.38 5.11c-.07 1-.16 2-.27 2.92-4.42 41.15-34.84 96.25-60.47 121.88-18.46 18.46-42.41 29.05-65.71 29.05-17.28 0-32.88-6.08-43.91-17.11-12.39-12.39-18.34-30.16-16.77-50 1.71-21.62 11.91-42.78 28.72-59.59 25.63-25.63 80.73-56 121.9-60.47 1-.1 1.93-.19 2.91-.27l5.1-.38 4.67-2.09c15-6.73 39.36-26.82 72.25-59.71L500.89 93.1a16.81 16.81 0 0 1 8.92 4.9 17.56 17.56 0 0 1 4.41 9.37z"/>
+ <path class="cls-1" d="M162.92 473.79c.82-3.72 1.74-7.41 2.52-11.13-6.23-.26-11.2-2.18-14.77-5.75-4.37-4.37-6.38-11.27-5.66-19.43.89-10 5.54-20.12 13.17-28.75-2.78-2.58-5.56-5.16-8.06-8-1.88-2.13-3.63-4.55-5.55-6.77-11.26 12.13-18.15 26.85-19.47 41.75-1.26 14.16 2.8 26.71 11.44 35.35 7.79 7.79 17.26 10.61 25.12 11.4a84.11 84.11 0 0 1 1.26-8.67z"/>
+</svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/timer.svg b/core/profiles/demo_umami/themes/umami/images/svg/timer.svg
new file mode 100644
index 0000000..9c9f4ed
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/timer.svg
@@ -0,0 +1,11 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
+ <defs>
+ <style>
+ .cls-1{fill:none;}.cls-2{fill:#ff6138;}
+ </style>
+ </defs>
+ <path class="cls-1" d="M299.32 388.92c-1.35 2.7-2 4.73-2.7 6.08-3.38 7.43-5.4 12.83-7.43 16.88h20.94c-2-3.38-4.05-8.1-6.75-14.18-1.38-3.38-2.7-6.08-4.06-8.78zM196.67 276.81a13.51 13.51 0 0 1 27 0v32.42h33.09v-32.42a13.51 13.51 0 1 1 27 0v32.42h32.42v-32.42a13.51 13.51 0 1 1 27 0v32.42h32.42v-32.42a13.51 13.51 0 0 1 27 0v32.42h33.09C424.26 212.66 352 118.11 299.32 118.11c-51.33 0-124.26 95.9-136.42 191.12h33.77z"/>
+ <path class="cls-1" d="M388.47 336.24H160.88c.68 110.75 71.59 150.6 138.44 150.6s137.77-39.17 137.09-150.6zm-47.95 93.2c-4.73 9.45-12.83 9.45-39.17 9.45h-8.1c-20.26 0-30.39 0-34.44-10.13-2.7-6.75-2-10.13 13.51-44.57 13.51-30.39 16.88-36.47 27-36.47s13.51 6.08 29.71 38.49c13.52 29.05 14.87 35.79 11.49 43.23z"/>
+ <path class="cls-2" d="M299.32 91.1c-75.64 0-164.78 132.37-164.78 243.8 0 108.73 64.83 179 165.46 179s165.46-70.23 165.46-179C464.78 220.76 377 91.1 299.32 91.1zm0 27c52.68 0 124.94 94.55 136.42 191.12h-33.09v-32.41a13.51 13.51 0 0 0-27 0v32.42h-32.43v-32.42a13.51 13.51 0 1 0-27 0v32.42h-32.43v-32.42a13.51 13.51 0 1 0-27 0v32.42h-33.1v-32.42a13.51 13.51 0 0 0-27 0v32.42h-33.78C175.06 214 248 118.11 299.32 118.11zm0 368.73c-66.86 0-137.77-39.84-138.44-150.6h275.54c.67 111.44-70.24 150.61-137.1 150.61z"/>
+ <path class="cls-2" d="M299.32 347.72c-10.13 0-13.51 6.08-27 36.47-15.54 34.44-16.22 37.81-13.52 44.57 4.05 10.13 14.18 10.13 34.44 10.13h8.1c26.34 0 34.44 0 39.17-9.45 3.38-7.43 2-14.18-11.48-43.22-16.2-32.42-19.58-38.5-29.71-38.5zm1.35 64.16h-11.48c2-4.05 4.05-9.45 7.43-16.88.68-1.35 1.35-3.38 2.7-6.08 1.35 2.7 2.7 5.4 4.05 8.78 2.7 6.08 4.73 10.81 6.75 14.18z"/>
+</svg>
diff --git a/core/profiles/demo_umami/themes/umami/images/svg/whisk.svg b/core/profiles/demo_umami/themes/umami/images/svg/whisk.svg
new file mode 100644
index 0000000..f741913
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/images/svg/whisk.svg
@@ -0,0 +1,10 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
+ <defs>
+ <style>
+ .cls-1{fill:none;}.cls-2{fill:#ff6138;}
+ </style>
+ </defs>
+ <path class="cls-1" d="M138.46 352.44c36.32-36.32 132-110.9 193-141.23-19.77 1.83-47.76 9.25-84.91 25.65-60.13 26.54-115.82 64.1-137.69 86a107.32 107.32 0 0 0-24 114.92c7.14-26.62 25.88-57.62 53.6-85.34zm92.35 92.35c-27.72 27.72-58.72 46.43-85.32 53.57a107.32 107.32 0 0 0 114.92-24c21.87-21.87 59.44-77.57 86-137.69 16.39-37.14 23.82-65.13 25.65-84.91-30.35 61.02-104.93 156.71-141.25 193.03z"/>
+ <path class="cls-1" d="M307.73 312.67C324.9 288 339 265.42 348.49 247.35a196.46 196.46 0 0 0 10.65-23.24 196.62 196.62 0 0 0-23.24 10.65c-18.06 9.49-40.65 23.59-65.32 40.76-49 34.16-95.41 72.73-115.86 93.17-45.55 45.55-57.77 93.79-45.86 105.7 5.61 5.61 19.45 5.66 36.11.13 22.44-7.45 47.81-24.21 69.59-46 20.44-20.43 59.01-66.8 93.17-115.85zm65.064-120.5L482 82.963l18.286 18.285L391.08 210.454z"/>
+ <path class="cls-2" d="M513.16 81.6l-10.39-10.38a29.38 29.38 0 0 0-41.55 0L344.59 187.86c-74.44-2.51-210 76.7-252 118.72a130.16 130.16 0 0 0 184.08 184.07c42-42 121.23-177.55 118.72-252L513.16 120.9a27.78 27.78 0 0 0 0-39.3zm-404.3 392.79c-11.91-11.91.3-60.14 45.86-105.7 20.45-20.45 66.81-59 115.86-93.17 24.67-17.18 47.26-31.27 65.32-40.76a196.62 196.62 0 0 1 23.24-10.65 196.46 196.46 0 0 1-10.65 23.24C339 265.42 324.9 288 307.73 312.67c-34.16 49-72.73 95.41-93.17 115.86-21.78 21.78-47.14 38.54-69.59 46-16.67 5.52-30.5 5.47-36.11-.14zm0-151.55c21.87-21.87 77.56-59.44 137.69-86 37.14-16.39 65.13-23.82 84.91-25.65-61 30.33-156.68 104.91-193 141.23-27.72 27.74-46.46 58.74-53.57 85.34a107.32 107.32 0 0 1 23.97-114.92zm151.55 151.55a107.32 107.32 0 0 1-114.92 24c26.6-7.15 57.6-25.85 85.32-53.57 36.32-36.32 110.9-132 141.23-193-1.83 19.77-9.25 47.76-25.65 84.91-26.54 60.1-64.1 115.79-85.98 137.66zm130.67-263.93l-18.29-18.29L482 83l18.29 18.29z"/>
+</svg>
diff --git a/core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.es6.js b/core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.es6.js
new file mode 100644
index 0000000..bd78190
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.es6.js
@@ -0,0 +1,17 @@
+/**
+ * @file
+ * This file is used to add any javascript that is needed for the main menu.
+ */
+
+ (function () {
+ const toggler = document.querySelector('[data-drupal-selector="menu-main-toggle"]');
+ const menu = document.querySelector('[data-drupal-selector="menu-main"]');
+
+ function toggleMenu() {
+ toggler.classList.toggle('menu-main-toggle--active');
+ menu.classList.toggle('menu-main--active');
+ return false;
+ }
+
+ toggler.addEventListener('click', toggleMenu);
+ }());
diff --git a/core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.js b/core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.js
new file mode 100644
index 0000000..0705b50
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/js/components/navigation/menu-main/menu-main.js
@@ -0,0 +1,19 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
+
+(function () {
+ var toggler = document.querySelector('[data-drupal-selector="menu-main-toggle"]');
+ var menu = document.querySelector('[data-drupal-selector="menu-main"]');
+
+ function toggleMenu() {
+ toggler.classList.toggle('menu-main-toggle--active');
+ menu.classList.toggle('menu-main--active');
+ return false;
+ }
+
+ toggler.addEventListener('click', toggleMenu);
+})(); \ No newline at end of file
diff --git a/core/profiles/demo_umami/themes/umami/logo.svg b/core/profiles/demo_umami/themes/umami/logo.svg
new file mode 100644
index 0000000..54d5b38
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/logo.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="711px" height="206px" viewBox="0 0 711 206" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>umami logo</title>
+ <defs></defs>
+ <g id="Styleguide" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="Design-Styleguide:-v1" transform="translate(-88.000000, -8204.000000)" fill="#FF6138">
+ <g id="umami-logo" transform="translate(88.000000, 8204.000000)">
+ <path d="M143.424795,85.9083818 C129.642125,110.825795 109.76532,124.600688 92.9001511,124.600688 C78.7277405,124.600688 66.6103295,115.261166 61.5082617,95.2479041 C55.6267114,120.489856 40.8519734,129 28.8408554,129 C13.7826692,129 0,103.036849 0,81.7614897 C0,67.3375171 6.37758474,55.2934999 22.9593051,55.2934999 C25.5284674,55.3253524 28.0896912,55.5908482 30.6124068,56.0868184 C29.8290884,62.0649952 29.4031324,68.0860615 29.3368898,74.1167842 C29.3368898,95.3921438 33.4114578,115.405406 43.1195591,115.405406 C49.4971438,115.405406 56.9022283,99.3226763 58.6737796,74.6576832 L58.6737796,71.05169 C58.6737796,59.3682722 71.9249835,53.0217242 81.8811019,53.0217242 C84.9450064,52.8527293 87.983069,53.6730528 90.5617033,55.3656198 C89.7792503,61.3438869 89.3532981,67.3648997 89.2861864,73.3955856 C89.2861864,94.6709452 95.9117883,111.294574 107.639458,111.294574 C115.540577,111.294574 125.99273,103.758048 138.251865,85.3314229 C141.492128,80.0722839 144.39182,74.603601 146.932466,68.960214 L151.786517,70.2583715 C149.554362,75.0904023 146.649018,80.4633321 143.424795,85.9083818 Z" id="Shape" fill-rule="nonzero"></path>
+ <path d="M205.435445,131 C195.417404,131 188.251474,104.798958 186.968024,81.9496309 C180.550773,99.3208858 173.883963,122.963092 169.498842,128.801563 C167.044875,129.781581 164.43629,130.306542 161.798141,130.351281 C145.362849,130.351281 133.811798,89.6261398 133.811798,76.2913591 C133.811798,62.9565784 141.512499,48 159.73036,48 C163.64755,48.0215167 167.54004,48.6287564 171.281411,49.8019974 C167.067214,67.3000205 164.913195,85.240158 164.864161,103.24924 C164.864161,106.636995 164.864161,119.070777 166.64673,119.070777 C166.89629,119.070777 167.14585,118.566218 167.680621,117.773339 C174.810899,104.294399 180.515122,82.4902301 186.932373,68.4706904 C187.716703,56.0008684 191.567054,49.0091185 197.984304,49.0091185 C202.333774,49.0091185 208.002346,52.1085541 214.918716,59.1363439 C212.850935,67.4255319 211.353577,94.9600521 211.353577,107.934433 C211.353577,112.331307 211.353577,114.926183 211.852696,114.926183 L214.419596,107.718194 C224.687197,78.6699957 225.721088,54.2709509 254.990881,54.2709509 C259.039821,54.2460584 263.052547,55.0426442 266.791492,56.6135475 C266.791492,59.4607034 266.541932,62.0555797 266.541932,64.6504559 C266.541932,96.2935302 275.276523,111.502388 287.576254,111.502388 C297.059524,111.502388 308.361016,102.672601 319.912067,85.5536257 C323.173185,80.2978145 326.090937,74.8321151 328.646658,69.1914894 L333.530899,70.4889275 C331.103505,75.9726419 328.266978,81.2617467 325.045867,86.3104646 C309.894026,109.664351 289.394475,124.981329 271.889641,124.981329 C254.384807,124.981329 239.268617,109.159792 236.452157,69.6960486 C226.434116,83.7155884 219.268186,117.953539 213.100495,126.026487 C210.319686,129.342162 207.752786,131 205.435445,131 Z" id="Shape" fill-rule="nonzero"></path>
+ <path d="M375.677768,106.555325 C371.333029,98.7816097 369.03108,90.0635618 368.980918,81.1927062 C368.980918,68.0182346 374.925716,57.098218 388.820786,57.098218 C397.344051,57.098218 401.462435,63.1922918 401.462435,71.5408206 C400.714315,82.5219254 396.480446,92.9949527 389.357967,101.482801 C392.187117,109.091587 396.305502,114.657273 402.751668,114.657273 C413.495279,114.657273 427.820094,103.737257 441.679352,82.9539992 C444.95446,77.8165049 447.885334,72.4743134 450.453302,66.9614588 L455.359551,68.2295897 C452.921095,73.589375 450.071792,78.7589978 446.836286,83.6937422 C430.864117,107.78823 412.528354,122.442188 398.633284,122.442188 C390.889853,121.991804 383.774419,118.103488 379.294784,111.87443 C368.583414,120.944997 354.930757,125.954396 340.796844,126 C318.378509,126 308.566011,113.31869 308.566011,97.8193121 C308.566011,72.949855 333.634437,41 372.526309,41 C383.26992,41 389.537027,45.2975549 389.537027,49.1019478 C389.537027,51.8847907 386.170695,54.4210526 378.793416,55.1960215 C376.465633,47.5872358 370.556647,46.5656859 364.468601,46.5656859 C348.747117,46.5656859 339.185303,69.3920431 339.185303,88.4140075 C339.185303,101.870286 344.091552,113.283465 354.906787,113.283465 C362.404685,113.415351 369.72666,111.043616 375.677768,106.555325 L375.677768,106.555325 Z M387.280868,93.8740157 C392.375255,86.4125119 395.320564,77.7333841 395.804133,68.7579776 C395.804133,63.4388728 394.264216,59.8810609 390.6472,59.8810609 C387.030184,59.8810609 385.740951,67.7364277 385.740951,77.4939909 C385.757175,82.9915083 386.29671,88.4754541 387.352492,93.8740157 L387.280868,93.8740157 Z" id="Shape" fill-rule="nonzero"></path>
+ <path d="M511.00567,131 C500.987629,131 493.821699,104.798958 492.538249,81.9496309 C486.120998,99.3208858 479.454188,122.963092 475.069066,128.801563 C472.615099,129.781581 470.006515,130.306542 467.368366,130.351281 C450.933074,130.351281 439.382022,89.6261398 439.382022,76.2913591 C439.382022,62.9565784 447.082723,48 465.300585,48 C469.217775,48.0215167 473.110265,48.6287564 476.851636,49.8019974 C472.637439,67.3000205 470.48342,85.240158 470.434385,103.24924 C470.434385,106.636995 470.434385,119.070777 472.216955,119.070777 C472.466515,119.070777 472.716075,118.566218 473.250845,117.773339 C480.381124,104.294399 486.085347,82.4902301 492.502597,68.4706904 C493.286928,56.0008684 497.137278,49.0091185 503.554529,49.0091185 C507.903999,49.0091185 513.57257,52.1085541 520.488941,59.1363439 C518.42116,67.4255319 516.923801,94.9600521 516.923801,107.934433 C516.923801,112.331307 516.923801,114.926183 517.422921,114.926183 L519.989821,107.718194 C530.257422,78.6699957 531.291312,54.2709509 560.561106,54.2709509 C564.610046,54.2460584 568.622772,55.0426442 572.361717,56.6135475 C572.361717,59.4607034 572.112157,62.0555797 572.112157,64.6504559 C572.112157,96.2935302 580.846748,111.502388 593.146479,111.502388 C602.629749,111.502388 613.93124,102.672601 625.482292,85.5536257 C628.74341,80.2978145 631.661162,74.8321151 634.216883,69.1914894 L639.101124,70.4889275 C636.67373,75.9726419 633.837203,81.2617467 630.616092,86.3104646 C615.46425,109.664351 594.9647,124.981329 577.459866,124.981329 C559.955032,124.981329 544.838842,109.159792 542.022382,69.6960486 C532.00434,83.7155884 524.83841,117.953539 518.67072,126.026487 C515.889911,129.342162 513.323011,131 511.00567,131 Z" id="Shape" fill-rule="nonzero"></path>
+ <path d="M702.476315,85.6203886 C688.150794,111.168122 666.877395,126 649.364445,126 C631.851495,126 617.132022,110.67136 617.132022,75.6496761 C617.132022,64.1531963 630.526385,57.9081949 640.590063,57.9081949 C643.687069,57.7419039 646.757953,58.549102 649.364445,60.2145874 C648.572664,66.0971117 648.142106,72.0218393 648.075148,77.9560687 C648.075148,98.1458744 654.02024,112.197128 664.836008,112.197128 C673.073183,112.197128 683.924765,104.284427 697.319127,84.8752464 C700.594397,79.7002551 703.525415,74.3190727 706.093509,68.7659814 L711,70.0433681 C708.672103,74.9754999 705.592116,80.2624613 702.476315,85.6203886 Z M633.104979,25.0509716 C626.407797,25.0509716 620.21201,21.5026753 620.21201,13.8028724 C620.21201,4.86116587 628.449184,0 636.184966,0 C642.882147,0 649.077935,3.54829625 649.077935,11.2480991 C649.113749,20.2252887 640.84076,25.0864545 633.104979,25.0864545 L633.104979,25.0509716 Z" id="Shape" fill-rule="nonzero"></path>
+ <path d="M289.937809,205.25139 C289.559731,204.855571 289.370695,204.330688 289.370695,203.676727 L289.370695,171.254158 C289.370695,170.634615 289.568324,170.135547 289.963587,169.756938 C290.35885,169.378328 290.882995,169.189026 291.536038,169.189026 L310.302343,169.189026 C310.921016,169.189026 311.402198,169.34391 311.745905,169.653681 C312.089612,169.963452 312.261463,170.410893 312.261463,170.996017 C312.261463,171.546721 312.089612,171.976953 311.745905,172.286724 C311.402198,172.596495 310.921016,172.751379 310.302343,172.751379 L293.546714,172.751379 L293.546714,185.297054 L309.271227,185.297054 C309.8899,185.297054 310.371082,185.451937 310.714789,185.761709 C311.058496,186.07148 311.230347,186.518921 311.230347,187.104044 C311.230347,187.654749 311.058496,188.08498 310.714789,188.394752 C310.371082,188.704523 309.8899,188.859406 309.271227,188.859406 L293.546714,188.859406 L293.546714,203.676727 C293.546714,204.330688 293.36627,204.855571 293.005378,205.25139 C292.644486,205.647209 292.137526,205.845115 291.484482,205.845115 C290.831439,205.845115 290.315887,205.647209 289.937809,205.25139 Z M324.505961,203.728355 C322.014086,202.213918 320.097948,200.06276 318.757491,197.274818 C317.417034,194.486876 316.746816,191.199908 316.746816,187.413814 C316.746816,183.593301 317.408442,180.280519 318.731713,177.475368 C320.054985,174.670216 321.96253,172.519059 324.454405,171.021831 C326.946281,169.524603 329.893523,168.776 333.296222,168.776 C336.698921,168.776 339.646163,169.524603 342.138039,171.021831 C344.629914,172.519059 346.537459,174.670216 347.860731,177.475368 C349.184002,180.280519 349.845628,183.576092 349.845628,187.362186 C349.845628,191.14828 349.17541,194.443853 347.834953,197.249004 C346.494496,200.054155 344.578358,202.213918 342.086483,203.728355 C339.594608,205.242793 336.66455,206 333.296222,206 C329.927894,206 326.997836,205.242793 324.505961,203.728355 Z M342.292706,198.488083 C344.440874,195.889446 345.514942,192.180851 345.514942,187.362186 C345.514942,182.543521 344.449467,178.84353 342.318484,176.262103 C340.187501,173.680675 337.18011,172.389981 333.296222,172.389981 C329.446704,172.389981 326.447906,173.68928 324.299738,176.287917 C322.15157,178.886554 321.077502,182.57794 321.077502,187.362186 C321.077502,192.146432 322.15157,195.846422 324.299738,198.462269 C326.447906,201.078116 329.446704,202.386019 333.296222,202.386019 C337.14574,202.386019 340.144538,201.08672 342.292706,198.488083 Z M363.894579,203.728355 C361.402704,202.213918 359.486566,200.06276 358.146109,197.274818 C356.805652,194.486876 356.135434,191.199908 356.135434,187.413814 C356.135434,183.593301 356.79706,180.280519 358.120331,177.475368 C359.443603,174.670216 361.351148,172.519059 363.843023,171.021831 C366.334898,169.524603 369.282141,168.776 372.68484,168.776 C376.087538,168.776 379.034781,169.524603 381.526656,171.021831 C384.018532,172.519059 385.926077,174.670216 387.249348,177.475368 C388.57262,180.280519 389.234246,183.576092 389.234246,187.362186 C389.234246,191.14828 388.564027,194.443853 387.22357,197.249004 C385.883113,200.054155 383.966976,202.213918 381.475101,203.728355 C378.983225,205.242793 376.053168,206 372.68484,206 C369.316512,206 366.386454,205.242793 363.894579,203.728355 Z M381.681324,198.488083 C383.829492,195.889446 384.90356,192.180851 384.90356,187.362186 C384.90356,182.543521 383.838085,178.84353 381.707102,176.262103 C379.576119,173.680675 376.568728,172.389981 372.68484,172.389981 C368.835322,172.389981 365.836524,173.68928 363.688356,176.287917 C361.540187,178.886554 360.466119,182.57794 360.466119,187.362186 C360.466119,192.146432 361.540187,195.846422 363.688356,198.462269 C365.836524,201.078116 368.835322,202.386019 372.68484,202.386019 C376.534357,202.386019 379.533155,201.08672 381.681324,198.488083 Z M397.457393,205.019062 C397.06213,204.640453 396.864502,204.141385 396.864502,203.521842 L396.864502,171.254158 C396.864502,170.634615 397.06213,170.135547 397.457393,169.756938 C397.852656,169.378328 398.376801,169.189026 399.029845,169.189026 L409.083222,169.189026 C414.891869,169.189026 419.38577,170.763674 422.565059,173.913015 C425.744348,177.062357 427.333969,181.545369 427.333969,187.362186 C427.333969,193.179003 425.735756,197.670619 422.539281,200.837171 C419.342807,204.003722 414.857499,205.586974 409.083222,205.586974 L399.029845,205.586974 C398.376801,205.586974 397.852656,205.397672 397.457393,205.019062 Z M408.825443,201.972993 C418.243013,201.972993 422.951728,197.102773 422.951728,187.362186 C422.951728,177.656018 418.243013,172.803007 408.825443,172.803007 L401.092076,172.803007 L401.092076,201.972993 L408.825443,201.972993 Z M482.060432,169.52461 C482.421324,169.920429 482.601768,170.445312 482.601768,171.099273 L482.601768,203.779983 C482.601768,204.399526 482.429917,204.898595 482.08621,205.277204 C481.742503,205.655813 481.261321,205.845115 480.642648,205.845115 C480.023976,205.845115 479.559978,205.655813 479.250642,205.277204 C478.941306,204.898595 478.78664,204.399526 478.78664,203.779983 L478.78664,177.397925 L467.599035,198.875295 C467.117845,199.873447 466.413257,200.372516 465.485248,200.372516 C464.59161,200.372516 463.887021,199.873447 463.371461,198.875295 L452.1323,177.656067 L452.1323,203.779983 C452.1323,204.399526 451.969042,204.898595 451.64252,205.277204 C451.315999,205.655813 450.843409,205.845115 450.224736,205.845115 C449.606064,205.845115 449.124881,205.655813 448.781175,205.277204 C448.437468,204.898595 448.265617,204.399526 448.265617,203.779983 L448.265617,171.099273 C448.265617,170.445312 448.454653,169.920429 448.83273,169.52461 C449.210808,169.128791 449.726361,168.930885 450.379404,168.930885 C451.238671,168.930885 451.926075,169.429953 452.441635,170.428105 L465.536804,195.571085 L478.477305,170.428105 C478.752271,169.877401 479.05301,169.490193 479.379531,169.266469 C479.706053,169.042745 480.092717,168.930885 480.539537,168.930885 C481.19258,168.930885 481.69954,169.128791 482.060432,169.52461 Z M523.124613,204.038125 C523.124613,204.55441 522.926984,204.984642 522.531721,205.328832 C522.136458,205.673023 521.663868,205.845115 521.113937,205.845115 C520.25467,205.845115 519.653192,205.432093 519.309485,204.606036 L515.649024,196.242252 L496.212494,196.242252 L492.500478,204.606036 C492.156771,205.432093 491.555293,205.845115 490.696026,205.845115 C490.146095,205.845115 489.664912,205.664418 489.252464,205.303018 C488.840015,204.941618 488.633794,204.502782 488.633794,203.986497 C488.633794,203.711144 488.702535,203.435796 488.840017,203.160444 L503.584971,170.324849 C503.791195,169.842982 504.100527,169.481588 504.512975,169.240655 C504.925424,168.999721 505.372236,168.879257 505.853426,168.879257 C506.368986,168.879257 506.832983,169.008326 507.245432,169.266469 C507.65788,169.524612 507.967212,169.877401 508.173436,170.324849 L522.91839,203.160444 C523.055872,203.435796 523.124613,203.728354 523.124613,204.038125 Z M497.759168,192.731528 L514.102351,192.731528 L505.904981,174.196971 L497.759168,192.731528 Z M557.38343,187.104044 C557.709952,187.413816 557.87321,187.844047 557.87321,188.394752 L557.87321,201.250197 C557.87321,202.076254 557.744322,202.695787 557.486542,203.108816 C557.228762,203.521844 556.756172,203.84882 556.068758,204.089753 C554.69393,204.674877 553.026976,205.139527 551.067847,205.483717 C549.108717,205.827907 547.149617,206 545.190488,206 C541.581565,206 538.471064,205.260002 535.858891,203.779983 C533.246718,202.299965 531.244655,200.166017 529.852642,197.378075 C528.460629,194.590133 527.764633,191.251537 527.764633,187.362186 C527.764633,183.541673 528.452037,180.237495 529.826864,177.449553 C531.201692,174.661612 533.177977,172.519059 535.755779,171.021831 C538.333581,169.524603 541.358157,168.776 544.829597,168.776 C547.235546,168.776 549.469607,169.145999 551.531849,169.886008 C553.59409,170.626018 555.329784,171.684387 556.738983,173.061148 C557.323285,173.646272 557.615431,174.248596 557.615431,174.868139 C557.615431,175.350005 557.47795,175.771632 557.202985,176.133032 C556.928019,176.494432 556.584318,176.675129 556.171869,176.675129 C555.759421,176.675129 555.278238,176.468618 554.728307,176.055589 C552.941031,174.678828 551.325633,173.723714 549.882064,173.190219 C548.438495,172.656724 546.771541,172.389981 544.881153,172.389981 C540.79104,172.389981 537.654762,173.680675 535.472223,176.262103 C533.289684,178.84353 532.19843,182.543521 532.19843,187.362186 C532.19843,192.284108 533.306869,196.027122 535.523778,198.59134 C537.740688,201.155558 540.997263,202.437648 545.293599,202.437648 C548.490074,202.437648 551.394354,201.955788 554.006526,200.992055 L554.006526,189.943601 L546.479382,189.943601 C545.89508,189.943601 545.431083,189.788717 545.087376,189.478946 C544.743669,189.169175 544.571818,188.773362 544.571818,188.291495 C544.571818,187.77521 544.743669,187.370792 545.087376,187.07823 C545.431083,186.785668 545.89508,186.63939 546.479382,186.63939 L556.120313,186.63939 C556.635874,186.63939 557.056909,186.794273 557.38343,187.104044 Z M597.932053,204.038125 C597.932053,204.55441 597.734424,204.984642 597.339162,205.328832 C596.943899,205.673023 596.471309,205.845115 595.921377,205.845115 C595.06211,205.845115 594.460632,205.432093 594.116925,204.606036 L590.456465,196.242252 L571.019935,196.242252 L567.307918,204.606036 C566.964211,205.432093 566.362733,205.845115 565.503466,205.845115 C564.953535,205.845115 564.472352,205.664418 564.059904,205.303018 C563.647456,204.941618 563.441235,204.502782 563.441235,203.986497 C563.441235,203.711144 563.509975,203.435796 563.647458,203.160444 L578.392411,170.324849 C578.598636,169.842982 578.907967,169.481588 579.320416,169.240655 C579.732864,168.999721 580.179676,168.879257 580.660866,168.879257 C581.176426,168.879257 581.640424,169.008326 582.052872,169.266469 C582.46532,169.524612 582.774652,169.877401 582.980876,170.324849 L597.72583,203.160444 C597.863313,203.435796 597.932053,203.728354 597.932053,204.038125 Z M572.566608,192.731528 L588.909791,192.731528 L580.712422,174.196971 L572.566608,192.731528 Z M627.834407,202.489276 C628.178114,202.799047 628.349965,203.229279 628.349965,203.779983 C628.349965,204.365107 628.178114,204.812548 627.834407,205.122319 C627.4907,205.43209 627.009517,205.586974 626.390845,205.586974 L603.34541,205.586974 C602.726738,205.586974 602.236963,205.414881 601.87607,205.070691 C601.515178,204.7265 601.334735,204.296269 601.334735,203.779983 C601.334735,203.263698 601.523771,202.730211 601.901848,202.179506 L622.524161,172.751379 L603.34541,172.751379 C602.726738,172.751379 602.245555,172.596495 601.901848,172.286724 C601.558141,171.976953 601.38629,171.546721 601.38629,170.996017 C601.38629,170.410893 601.558141,169.963452 601.901848,169.653681 C602.245555,169.34391 602.726738,169.189026 603.34541,169.189026 L625.823731,169.189026 C626.442404,169.189026 626.932179,169.361119 627.293071,169.705309 C627.653963,170.0495 627.834407,170.479731 627.834407,170.996017 C627.834407,171.477883 627.645371,171.994161 627.267293,172.544865 L606.593424,202.024621 L626.390845,202.024621 C627.009517,202.024621 627.4907,202.179505 627.834407,202.489276 Z M634.897549,205.25139 C634.519471,204.855571 634.330435,204.330688 634.330435,203.676727 L634.330435,171.099273 C634.330435,170.445312 634.519471,169.920429 634.897549,169.52461 C635.275627,169.128791 635.791179,168.930885 636.444222,168.930885 C637.097266,168.930885 637.612818,169.128791 637.990896,169.52461 C638.368974,169.920429 638.55801,170.445312 638.55801,171.099273 L638.55801,203.676727 C638.55801,204.330688 638.368974,204.855571 637.990896,205.25139 C637.612818,205.647209 637.097266,205.845115 636.444222,205.845115 C635.791179,205.845115 635.275627,205.647209 634.897549,205.25139 Z M676.142175,169.52461 C676.485882,169.920429 676.657733,170.445312 676.657733,171.099273 L676.657733,203.676727 C676.657733,204.330688 676.477289,204.855571 676.116397,205.25139 C675.755505,205.647209 675.248545,205.845115 674.595501,205.845115 C673.942458,205.845115 673.37535,205.552558 672.894161,204.967434 L651.498511,176.313731 L651.498511,203.676727 C651.498511,204.330688 651.318067,204.855571 650.957175,205.25139 C650.596283,205.647209 650.106508,205.845115 649.487835,205.845115 C648.869163,205.845115 648.38798,205.647209 648.044273,205.25139 C647.700567,204.855571 647.528716,204.330688 647.528716,203.676727 L647.528716,171.099273 C647.528716,170.445312 647.709159,169.920429 648.070051,169.52461 C648.430944,169.128791 648.937904,168.930885 649.590947,168.930885 C650.278361,168.930885 650.862654,169.223442 651.343844,169.808566 L672.687937,198.462269 L672.687937,171.099273 C672.687937,170.445312 672.868381,169.920429 673.229273,169.52461 C673.590165,169.128791 674.07994,168.930885 674.698613,168.930885 C675.317285,168.930885 675.798468,169.128791 676.142175,169.52461 Z M686.22133,205.019062 C685.826067,204.640453 685.628439,204.141385 685.628439,203.521842 L685.628439,171.254158 C685.628439,170.634615 685.826067,170.135547 686.22133,169.756938 C686.616593,169.378328 687.140739,169.189026 687.793782,169.189026 L707.075644,169.189026 C707.694317,169.189026 708.175499,169.34391 708.519206,169.653681 C708.862913,169.963452 709.034764,170.393684 709.034764,170.944388 C709.034764,171.495093 708.862913,171.925324 708.519206,172.235096 C708.175499,172.544867 707.694317,172.69975 707.075644,172.69975 L689.804457,172.69975 L689.804457,185.348682 L706.044529,185.348682 C706.663201,185.348682 707.144384,185.503566 707.488091,185.813337 C707.831798,186.123108 708.003648,186.55334 708.003648,187.104044 C708.003648,187.654749 707.831798,188.08498 707.488091,188.394752 C707.144384,188.704523 706.663201,188.859406 706.044529,188.859406 L689.804457,188.859406 L689.804457,202.07625 L707.075644,202.07625 C707.694317,202.07625 708.175499,202.222528 708.519206,202.51509 C708.862913,202.807652 709.034764,203.246488 709.034764,203.831612 C709.034764,204.382316 708.862913,204.812548 708.519206,205.122319 C708.175499,205.43209 707.694317,205.586974 707.075644,205.586974 L687.793782,205.586974 C687.140739,205.586974 686.616593,205.397672 686.22133,205.019062 Z" id="FOOD-MAGAZINE-Copy" fill-rule="evenodd"></path>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/core/profiles/demo_umami/themes/umami/screenshot.png b/core/profiles/demo_umami/themes/umami/screenshot.png
new file mode 100644
index 0000000..aeb699e
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/screenshot.png
Binary files differ
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig
new file mode 100644
index 0000000..9429667
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig
@@ -0,0 +1,52 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+{%
+ set classes = [
+ 'block',
+ 'block-' ~ configuration.provider|clean_class,
+ 'block-' ~ plugin_id|clean_class,
+ 'block-banner-block',
+ 'cover-image',
+ ]
+%}
+
+<div{{ attributes.addClass(classes) }} style="background-image: url({{ file_url(content.field_banner_image.0['#item'].entity.uri.value) }})">
+ <div class="block-inner">
+ {{ title_prefix }}
+ {% if label %}
+ <h2{{ title_attributes }}>{{ label }}</h2>
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {{ content.field_banner_image }}
+ <div class="summary">
+ {{ content }}
+ </div>
+ {% endblock %}
+ </div>
+</div>
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/branding/block--system-branding-block.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/branding/block--system-branding-block.html.twig
new file mode 100644
index 0000000..6887b8b
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/branding/block--system-branding-block.html.twig
@@ -0,0 +1,30 @@
+{% extends "block.html.twig" %}
+{#
+/**
+ * @file
+ * Theme override for a branding block.
+ *
+ * Each branding element variable (logo, name, slogan) is only available if
+ * enabled in the block configuration.
+ *
+ * Available variables:
+ * - site_logo: Logo for site as defined in Appearance or theme settings.
+ * - site_name: Name for site as defined in Site information settings.
+ * - site_slogan: Slogan for site as defined in Site information settings.
+ */
+#}
+{% block content %}
+ {% if site_logo %}
+ <a href="{{ path('<front>') }}" title="{{ 'Home'|t }}" rel="home" class="site-logo">
+ <img src="{{ site_logo }}" alt="{{ 'Home'|t }}" />
+ </a>
+ {% endif %}
+ {% if site_name %}
+ <div class="site-name visually-hidden">
+ <a href="{{ path('<front>') }}" title="{{ 'Home'|t }}" rel="home">{{ site_name }}</a>
+ </div>
+ {% endif %}
+ {% if site_slogan %}
+ <div class="site-slogan visually-hidden">{{ site_slogan }}</div>
+ {% endif %}
+{% endblock %}
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/footer/block--umami-footer-promo.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/footer/block--umami-footer-promo.html.twig
new file mode 100644
index 0000000..884298f
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/footer/block--umami-footer-promo.html.twig
@@ -0,0 +1,8 @@
+{% extends "block.html.twig" %}
+{#
+/**
+ * @file
+ * Theme override for Umami footer Promo block.
+ */
+#}
+{% set attributes = attributes.addClass('footer-promo') %}
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/messages/status-messages.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/messages/status-messages.html.twig
new file mode 100644
index 0000000..f393015
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/messages/status-messages.html.twig
@@ -0,0 +1,57 @@
+{#
+/**
+ * @file
+ * Theme override for status messages.
+ *
+ * Displays status, error, and warning messages, grouped by type.
+ *
+ * An invisible heading identifies the messages for assistive technology.
+ * Sighted users see a colored box. See http://www.w3.org/TR/WCAG-TECHS/H69.html
+ * for info.
+ *
+ * Add an ARIA label to the contentinfo area so that assistive technology
+ * user agents will better describe this landmark.
+ *
+ * Available variables:
+ * - message_list: List of messages to be displayed, grouped by type.
+ * - status_headings: List of all status types.
+ * - display: (optional) May have a value of 'status' or 'error' when only
+ * displaying messages of that specific type.
+ * - attributes: HTML attributes for the element, including:
+ * - class: HTML classes.
+ */
+#}
+{% block messages %}
+{% for type, messages in message_list %}
+ {%
+ set classes = [
+ 'messages',
+ 'messages--' ~ type,
+ ]
+ %}
+ <div role="contentinfo" aria-label="{{ status_headings[type] }}"{{ attributes.addClass(classes)|without('role', 'aria-label') }}>
+ <div class="messages__content container">
+ {% if type == 'error' %}
+ <div role="alert">
+ {% endif %}
+ {% if status_headings[type] %}
+ <h2 class="visually-hidden">{{ status_headings[type] }}</h2>
+ {% endif %}
+ {% if messages|length > 1 %}
+ <ul class="messages__list">
+ {% for message in messages %}
+ <li class="messages__item">{{ message }}</li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ <span class="messages__item">{{ messages|first }}</span>
+ {% endif %}
+ {% if type == 'error' %}
+ </div>
+ {% endif %}
+ </div>
+ </div>
+ {# Remove type specific classes. #}
+ {% set attributes = attributes.removeClass(classes) %}
+{% endfor %}
+{% endblock messages %}
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--system-menu-block--footer.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--system-menu-block--footer.html.twig
new file mode 100644
index 0000000..ecadc9bf
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--system-menu-block--footer.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Theme override for Menu footer block.
+ */
+#}
+{%
+ set classes = [
+ 'block',
+ 'block-' ~ configuration.provider|clean_class,
+ 'block-' ~ plugin_id|clean_class,
+ 'menu-footer-wrapper',
+ ]
+%}
+{% set title_classes = ['menu-footer__title'] %}
+<div{{ attributes.addClass(classes) }}>
+ {{ title_prefix }}
+ {% if label %}
+ <h2{{ title_attributes.addClass(title_classes) }}>{{ label }}</h2>
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {{ content }}
+ {% endblock %}
+</div>
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig
new file mode 100644
index 0000000..51174d4
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig
@@ -0,0 +1,61 @@
+{#
+/**
+ * @file
+ * Theme override for a menu block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: HTML attributes for the containing element.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: HTML attributes for the title element.
+ * - content_attributes: HTML attributes for the content element.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * Headings should be used on navigation menus that consistently appear on
+ * multiple pages. When this menu block's label is configured to not be
+ * displayed, it is automatically made invisible using the 'visually-hidden' CSS
+ * class, which still keeps it visible for screen-readers and assistive
+ * technology. Headings allow screen-reader and keyboard only users to navigate
+ * to or skip the links.
+ * See http://juicystudio.com/article/screen-readers-display-none.php and
+ * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information.
+ */
+#}
+{%
+ set classes = [
+ 'block',
+ 'block-menu',
+ 'navigation',
+ 'menu-' ~ derivative_plugin_id|clean_class ~ '__wrapper',
+ ]
+%}
+
+<div class="menu-main-togglewrap">
+ <button type="button" name="menu_toggle" class="menu-main-toggle" data-drupal-selector="menu-main-toggle" aria-label="Toggle the menu">{% include active_theme_path() ~ '/images/svg/menu-icon.svg' %}</button>
+</div>
+
+{% set heading_id = attributes.id ~ '-menu'|clean_id %}
+<nav role="navigation" aria-labelledby="{{ heading_id }}"{{ attributes.addClass(classes)|without('role', 'aria-labelledby') }}>
+ {# Label. If not displayed, we still provide it for screen readers. #}
+ {% if not configuration.label_display %}
+ {% set title_attributes = title_attributes.addClass('visually-hidden') %}
+ {% endif %}
+ {{ title_prefix }}
+ <h2{{ title_attributes.setAttribute('id', heading_id) }}>{{ configuration.label }}</h2>
+ {{ title_suffix }}
+
+ {# Menu. #}
+ {% block content %}
+ {{ content }}
+ {% endblock %}
+</nav>
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/navigation/breadcrumb.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/navigation/breadcrumb.html.twig
new file mode 100644
index 0000000..a5d40a3
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/navigation/breadcrumb.html.twig
@@ -0,0 +1,30 @@
+{#
+/**
+ * @file
+ * Theme override for a breadcrumb trail.
+ *
+ * Available variables:
+ * - breadcrumb: Breadcrumb trail items.
+ */
+#}
+{% if breadcrumb %}
+ <nav class="breadcrumb" role="navigation" aria-labelledby="system-breadcrumb">
+ <h2 id="system-breadcrumb" class="visually-hidden">{{ 'Breadcrumb'|t }}</h2>
+ <ol>
+ {% for item in breadcrumb %}
+ <li>
+ {% if item.url %}
+ <a href="{{ item.url }}">{{ item.text }}</a>
+ {% else %}
+ {{ item.text }}
+ {% endif %}
+ </li>
+ {% endfor %}
+ {#
+ Once the breadcrumb loop completes, we add the current page title.
+ This variable is created in umami.theme.
+ #}
+ <li> {{ current_page_title }}</li>
+ </ol>
+ </nav>
+{% endif %}
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu--main.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu--main.html.twig
new file mode 100644
index 0000000..0c12b12
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu--main.html.twig
@@ -0,0 +1,85 @@
+{#
+/**
+ * @file
+ * Theme override to display the main menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see http://twig.sensiolabs.org/doc/tags/macro.html
+
+ 1. We use menu_name (see above) to create a CSS class name from it.
+ See https://www.drupal.org/node/2649076
+#}
+{{ menus.menu_links(items, attributes, 0, menu_name) }} {# 1. #}
+
+{% macro menu_links(items, attributes, menu_level, menu_name) %} {# 1. #}
+ {% import _self as menus %}
+ {# 1. #}
+ {%
+ set menu_classes = [
+ 'menu-' ~ menu_name|clean_class,
+ ]
+ %}
+ {# 1. #}
+ {%
+ set submenu_classes = [
+ 'menu-' ~ menu_name|clean_class ~ '__submenu',
+ ]
+ %}
+ {% if items %}
+ {% if menu_level == 0 %}
+ <ul{{ attributes.addClass(menu_classes).setAttribute('data-drupal-selector','menu-main') }}> {# 1. #}
+ {% else %}
+ <ul{{ attributes.removeClass(menu_classes).addClass(submenu_classes) }}> {# 1. #}
+ {% endif %}
+ {% for item in items %}
+ {# 1. #}
+ {%
+ set item_classes = [
+ 'menu-' ~ menu_name|clean_class ~ '__item',
+ item.is_expanded ? 'menu-' ~ menu_name|clean_class ~ '__item--expanded',
+ item.is_collapsed ? 'menu-' ~ menu_name|clean_class ~ '__item--collapsed',
+ item.in_active_trail ? 'menu-' ~ menu_name|clean_class ~ '__item--active-trail',
+ ]
+ %}
+ {# 1. #}
+ {%
+ set link_classes = [
+ 'menu-' ~ menu_name|clean_class ~ '__link',
+ ]
+ %}
+ <li{{ item.attributes.addClass(item_classes) }}>{# 1. #}
+ {# 1. #}
+ {{
+ link(
+ item.title,
+ item.url,
+ item.attributes.removeClass(item_classes).addClass(link_classes)
+ )
+ }}
+ {% if item.below %}
+ {{ menus.menu_links(item.below, attributes, menu_level + 1, menu_name) }} {# 1. #}
+ {% endif %}
+ </li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+{% endmacro %}
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu-local-task.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu-local-task.html.twig
new file mode 100644
index 0000000..567c331
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu-local-task.html.twig
@@ -0,0 +1,17 @@
+{#
+/**
+ * @file
+ * Theme override for a local task link.
+ *
+ * Available variables:
+ * - attributes: HTML attributes for the wrapper element.
+ * - is_active: Whether the task item is an active tab.
+ * - link: A rendered link element.
+ *
+ * Note: This template renders the content for each task item in
+ * menu-local-tasks.html.twig.
+ *
+ * @see template_preprocess_menu_local_task()
+ */
+#}
+<li{{ attributes.addClass('tab', is_active ? 'is-active') }}>{{ link }}</li>
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu.html.twig
new file mode 100644
index 0000000..8202518
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/navigation/menu.html.twig
@@ -0,0 +1,85 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see http://twig.sensiolabs.org/doc/tags/macro.html
+
+ 1. We use menu_name (see above) to create a CSS class name from it.
+ See https://www.drupal.org/node/2649076
+#}
+{{ menus.menu_links(items, attributes, 0, menu_name) }} {# 1. #}
+
+{% macro menu_links(items, attributes, menu_level, menu_name) %} {# 1. #}
+ {% import _self as menus %}
+ {# 1. #}
+ {%
+ set menu_classes = [
+ 'menu-' ~ menu_name|clean_class,
+ ]
+ %}
+ {# 1. #}
+ {%
+ set submenu_classes = [
+ 'menu-' ~ menu_name|clean_class ~ '__submenu',
+ ]
+ %}
+ {% if items %}
+ {% if menu_level == 0 %}
+ <ul{{ attributes.addClass(menu_classes) }}> {# 1. #}
+ {% else %}
+ <ul{{ attributes.removeClass(menu_classes).addClass(submenu_classes) }}> {# 1. #}
+ {% endif %}
+ {% for item in items %}
+ {# 1. #}
+ {%
+ set item_classes = [
+ 'menu-' ~ menu_name|clean_class ~ '__item',
+ item.is_expanded ? 'menu-' ~ menu_name|clean_class ~ '__item--expanded',
+ item.is_collapsed ? 'menu-' ~ menu_name|clean_class ~ '__item--collapsed',
+ item.in_active_trail ? 'menu-' ~ menu_name|clean_class ~ '__item--active-trail',
+ ]
+ %}
+ {# 1. #}
+ {%
+ set link_classes = [
+ 'menu-' ~ menu_name|clean_class ~ '__link',
+ ]
+ %}
+ <li{{ item.attributes.addClass(item_classes) }}>{# 1. #}
+ {# 1. #}
+ {{
+ link(
+ item.title,
+ item.url,
+ item.attributes.removeClass(item_classes).addClass(link_classes)
+ )
+ }}
+ {% if item.below %}
+ {{ menus.menu_links(item.below, attributes, menu_level + 1, menu_name) }} {# 1. #}
+ {% endif %}
+ </li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+{% endmacro %}
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/quicklinks/block--umami-quick-links.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/quicklinks/block--umami-quick-links.html.twig
new file mode 100644
index 0000000..deb0c35
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/quicklinks/block--umami-quick-links.html.twig
@@ -0,0 +1,11 @@
+{% extends "block.html.twig" %}
+{#
+/**
+ * @file
+ * Theme override for Umami footer Promo block.
+ */
+#}
+{% block content %}
+ {{ attach_library('umami/quicklinks') }}
+ {{ content }}
+{% endblock %}
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig
new file mode 100644
index 0000000..391b464
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig
@@ -0,0 +1,52 @@
+{#
+/**
+ * @file
+ * Theme override for the search form block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values, including:
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: A list HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template. Includes:
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ * @see search_preprocess_block()
+ */
+#}
+{%
+ set classes = [
+ 'block',
+ 'block-search',
+ 'container-inline',
+ ]
+%}
+
+<div class="search-iconwrap">
+ <a class="search-link" title="{{ 'Go to the search page'|t }}" href="{{ path('search.view') }}">
+ {% include active_theme_path() ~ '/images/svg/search.svg' %}
+ </a>
+</div>
+
+<div{{ attributes.addClass(classes) }}>
+ {{ title_prefix }}
+ {% if label %}
+ <h2{{ title_attributes.addClass('visually-hidden') }}>{{ label }}</h2>
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {{ content }}
+ {% endblock %}
+</div>
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/search/input--search.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/search/input--search.html.twig
new file mode 100644
index 0000000..f93702f
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/components/search/input--search.html.twig
@@ -0,0 +1,18 @@
+{#
+/**
+ * @file
+ * Theme override for an 'input' #type form element.
+ *
+ * Available variables:
+ * - attributes: A list of HTML attributes for the input element.
+ * - children: Optional additional rendered elements.
+ *
+ * @see template_preprocess_input()
+ */
+#}
+
+{%
+ set placeholder_text = 'Search by keyword, ingredient, dish'
+%}
+
+<input{{ attributes.setAttribute('placeholder', placeholder_text) }} />{{ children }}
diff --git a/core/profiles/demo_umami/themes/umami/templates/content/node--article--full.html.twig b/core/profiles/demo_umami/themes/umami/templates/content/node--article--full.html.twig
new file mode 100644
index 0000000..69b3a7c
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/content/node--article--full.html.twig
@@ -0,0 +1,102 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{% set created_date = node.getCreatedTime|format_date('umami_dates') %}
+{{ attach_library('classy/node') }}
+<article{{ attributes.addClass(classes) }}>
+
+ {{ title_prefix }}
+ <header class="node__header">
+ <h1 class="page-title">
+ {{ label }}
+ </h1>
+ {% if display_submitted %}
+ <div{{ author_attributes.addClass('node__submitted') }}>
+ {% trans %}<span class="by-author">by {{ author_name }}</span> {{ created_date }}{% endtrans %}
+ {{ metadata }}
+ </div>
+ {% endif %}
+ {{ content.field_tags }}
+ </header>
+ {{ title_suffix }}
+
+ <div{{ content_attributes.addClass('node__content') }}>
+ {{ content|without('field_tags') }}
+ </div>
+
+</article>
diff --git a/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-bottom.html.twig b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-bottom.html.twig
new file mode 100644
index 0000000..b8a1245
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-bottom.html.twig
@@ -0,0 +1,107 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{{ attach_library('classy/node') }}
+{{ attach_library('umami/view-mode-highlighted-bottom') }}
+
+<article{{ attributes.addClass(classes) }}>
+
+ <div{{ content_attributes.addClass('node__content') }}>
+ {{ content.field_image }}
+ </div>
+
+ <div class="node__meta">
+
+ {{ content.field_difficulty }}
+
+ {{ title_prefix }}
+
+ {% if not page %}
+ <h2{{ title_attributes.addClass('node__title') }}>
+ <a class="node__link" href="{{ url }}" rel="bookmark">{{ label }}</a>
+ </h2>
+ {% endif %}
+ {{ title_suffix }}
+
+ <div class="read-more">
+ <a class="read-more__link" href="{{ url }}">{{ 'View'|t }} {{ node.bundle }}</a>
+ </div>
+
+ </div>
+
+</article>
diff --git a/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-medium.html.twig b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-medium.html.twig
new file mode 100644
index 0000000..2c6c91a
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-medium.html.twig
@@ -0,0 +1,105 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{{ attach_library('classy/node') }}
+{{ attach_library('umami/view-mode-highlighted-medium') }}
+
+<article{{ attributes.addClass(classes) }}>
+
+ <div{{ content_attributes.addClass('node__content') }}>
+ {{ content.field_image }}
+ </div>
+
+ <div class="node__meta">
+
+ {{ content.field_difficulty }}
+
+ {{ title_prefix }}
+ {% if not page %}
+ <h2{{ title_attributes.addClass('node__title') }}>
+ <a class="node__link" href="{{ url }}" rel="bookmark">{{ label }}</a>
+ </h2>
+ {% endif %}
+ {{ title_suffix }}
+
+ </div>
+ <div class="read-more">
+ <a class="read-more__link" href="{{ url }}">{{ 'View'|t }} {{ node.bundle }}</a>
+ </div>
+
+</article>
diff --git a/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-small.html.twig b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-small.html.twig
new file mode 100644
index 0000000..faa0d70
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-small.html.twig
@@ -0,0 +1,105 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{{ attach_library('classy/node') }}
+{{ attach_library('umami/view-mode-highlighted-small') }}
+
+<article{{ attributes.addClass(classes) }}>
+
+ <div{{ content_attributes.addClass('node__content') }}>
+ {{ content.field_image }}
+ </div>
+
+ <div class="node__meta">
+
+ {{ content.field_difficulty }}
+
+ {{ title_prefix }}
+ {% if not page %}
+ <h2{{ title_attributes.addClass('node__title') }}>
+ <a class="node__link" href="{{ url }}" rel="bookmark">{{ label }}</a>
+ </h2>
+ {% endif %}
+ {{ title_suffix }}
+
+ </div>
+ <div class="read-more">
+ <a class="read-more__link" href="{{ url }}">{{ 'View'|t }} {{ node.bundle }}</a>
+ </div>
+
+</article>
diff --git a/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-top.html.twig b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-top.html.twig
new file mode 100644
index 0000000..72186f8
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/content/node--highlighted-top.html.twig
@@ -0,0 +1,107 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{{ attach_library('classy/node') }}
+{{ attach_library('umami/view-mode-highlighted-top') }}
+
+<article{{ attributes.addClass(classes) }}>
+
+ <div{{ content_attributes.addClass('node__content') }}>
+ {{ content.field_image }}
+ </div>
+
+ <div class="node__meta">
+
+ {{ content.field_difficulty }}
+
+ {{ title_prefix }}
+
+ {% if not page %}
+ <h2{{ title_attributes.addClass('node__title') }}>
+ <a class="node__link" href="{{ url }}" rel="bookmark">{{ label }}</a>
+ </h2>
+ {% endif %}
+ {{ title_suffix }}
+
+ <div class="read-more">
+ <a class="read-more__link" href="{{ url }}">{{ 'View'|t }} {{ node.bundle }}</a>
+ </div>
+
+ </div>
+
+</article>
diff --git a/core/profiles/demo_umami/themes/umami/templates/content/node--recipe--full.html.twig b/core/profiles/demo_umami/themes/umami/templates/content/node--recipe--full.html.twig
new file mode 100644
index 0000000..7387170
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/content/node--recipe--full.html.twig
@@ -0,0 +1,133 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ */
+#}
+{%
+set classes = [
+'node',
+'node--type-' ~ node.bundle|clean_class,
+node.isPromoted() ? 'node--promoted',
+node.isSticky() ? 'node--sticky',
+not node.isPublished() ? 'node--unpublished',
+view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+]
+%}
+{{ attach_library('classy/node') }}
+<article{{ attributes.addClass(classes) }}>
+
+ {{ title_prefix }}
+ <header class="node__header">
+ <h1 class="page-title">
+ {{ label }}
+ </h1>
+ {% if display_submitted %}
+ <div{{ author_attributes.addClass('node__submitted') }}>
+ {% trans %}<span class="by-author">by {{ author_name }}</span> {{ created_date }}{% endtrans %}
+ {{ metadata }}
+ </div>
+ {% endif %}
+ {{ content.field_recipe_category }}
+ {{ content.field_tags }}
+ </header>
+ {{ title_suffix }}
+
+ <div{{ content_attributes.addClass('node__content') }}>
+ <div class="layout__region--top">
+ <div class="layout__region layout__region--top-first">
+ {{ content.field_image }}
+ </div>
+ <div class="layout__region layout__region--top-second">
+ <div class="recipe-meta">
+ <svg xmlns="http://www.w3.org/2000/svg" width="71" height="62.6" viewBox="0 0 71 62.6"><title>Preparation icon</title><g fill="#FF6138"><path d="M68.5 7.4c-1.4-2.8-4.9-5.6-8.4-5.6-.4 0-.9 0-1.3.1-1 .2-3.7.8-18.8 18h-.1c-1.2 0-1.9 0-20 19-8.8 9-17.4 18.3-17.5 18.4-.5.5-.7 1.3-.4 2 .2.7.8 1.2 1.5 1.3 1 .2 2.1.3 3.3.3 9.5 0 21-7.4 29-13.6 5.4-4.2 15.6-13.3 15.9-15.7.1-.9-.3-1.9-1.3-3.2l10.8-13.3h.5c2 0 4.8-.5 6.5-2.7 1.1-1.3 1.2-3.2.3-5zM8.3 56.8C20 44.3 36.3 27.2 40 24.1c1.9 1.2 6.2 5.2 7.4 7C44 35.6 22.7 55.4 8.3 56.8zM65.1 10c-.8 1-2.6 1.1-3.4 1.1-.6 0-1.1-.1-1.1-.1-.7-.1-1.4.2-1.9.7L47.9 25c-1.3-1.3-2.8-2.5-4.2-3.5C56.6 7.1 59.4 5.9 59.6 5.8c1.3-.3 3.5.9 4.7 2.6.8.9.8 1.5.8 1.6z"/><circle cx="60.7" cy="8.7" r="1.3"/></g></svg>
+ {{ content.field_preparation_time }}
+ </div>
+ <div class="recipe-meta">
+ <svg xmlns="http://www.w3.org/2000/svg" width="54.5" height="67.6" viewBox="0 0 54.5 67.6"><title>Cooking icon</title><g fill="#FF6138"><path d="M27.2 2.5C16 2.5 2.8 22.1 2.8 38.6c0 16.1 9.6 26.5 24.5 26.5s24.5-10.4 24.5-26.5C51.7 21.7 38.7 2.5 27.2 2.5zm0 4c7.8 0 18.5 14 20.2 28.3h-4.9V30c0-1.1-.9-2-2-2s-2 .9-2 2v4.8h-4.8V30c0-1.1-.9-2-2-2s-2 .9-2 2v4.8h-4.8V30c0-1.1-.9-2-2-2s-2 .9-2 2v4.8H16V30c0-1.1-.9-2-2-2s-2 .9-2 2v4.8H7C8.8 20.7 19.6 6.5 27.2 6.5zm0 54.6c-9.9 0-20.4-5.9-20.5-22.3H47.5c.1 16.5-10.4 22.3-20.3 22.3z"/><path d="M27.2 40.5c-1.5 0-2 .9-4 5.4-2.3 5.1-2.4 5.6-2 6.6.6 1.5 2.1 1.5 5.1 1.5h1.2c3.9 0 5.1 0 5.8-1.4.5-1.1.3-2.1-1.7-6.4-2.4-4.8-2.9-5.7-4.4-5.7zm.2 9.5h-1.7c.3-.6.6-1.4 1.1-2.5.1-.2.2-.5.4-.9.2.4.4.8.6 1.3.4.9.7 1.6 1 2.1h-1.4z"/></g></svg>
+ {{ content.field_cooking_time }}
+ </div>
+ <div class="recipe-meta">
+ <svg xmlns="http://www.w3.org/2000/svg" width="82.5" height="61.3" viewBox="0 0 82.5 61.3"><title>Serves icon</title><g fill="#6D6E71"><path d="M42.4 5.8c-13.3 0-24.2 11.5-24.2 25.6C18.2 45.5 29 57 42.4 57c13.3 0 24.1-11.5 24.1-25.6 0-14.2-10.8-25.6-24.1-25.6zm0 47.1c-11.1 0-20.2-9.7-20.2-21.6 0-11.9 9-21.6 20.2-21.6 11.1 0 20.1 9.7 20.1 21.6 0 11.9-9 21.6-20.1 21.6z"/><path d="M42.4 13.1c-9.4 0-17.1 8.2-17.1 18.2S33 49.5 42.4 49.5s17.1-8.2 17.1-18.2-7.7-18.2-17.1-18.2zm0 32.4c-7.2 0-13.1-6.4-13.1-14.2 0-7.8 5.9-14.2 13.1-14.2 7.2 0 13.1 6.4 13.1 14.2 0 7.9-5.9 14.2-13.1 14.2zM80.1 30.3l.1-25c0-.6-.3-1.2-.8-1.6-.5-.4-1.1-.5-1.8-.3-.3.1-7.2 2.2-7.2 14.5 0 5.8.4 10.1 1 12.4-.4.6-.6 1.3-.6 2.1v21.8c0 2.1 1.7 3.8 3.7 3.8h2.3c2.1 0 3.7-1.7 3.7-3.8V32.3c.2-.7 0-1.4-.4-2zM76.2 9.7l-.1 18.7h-.9c-.3-1.3-.7-4.4-.7-10.6 0-3.9.8-6.5 1.7-8.1zm.5 44.3H75V32.5h1.7V54zM14.1 3.4c-1.1 0-2 .9-2 2v7.3H11V5.4c0-1.1-.9-2-2-2s-2 .9-2 2v7.3H5.8V5.4c0-1.1-.9-2-2-2s-2 .9-2 2v9.3c0 .1 0 .3.1.4v.1c0 .1.1.2.1.3v.1L5.2 21c-.7.7-1.1 1.7-1.1 2.8v30.4c0 2.1 1.7 3.8 3.7 3.8h2.3c2.1 0 3.7-1.7 3.7-3.8V23.7c0-1.1-.5-2.1-1.2-2.8l3.1-5.2v-.1c.1-.1.1-.2.1-.3v-.1c0-.1.1-.3.1-.4V5.4c.2-1.1-.7-2-1.8-2zm-3.6 13.3l-1.6 2.7-1.6-2.7h3.2zM8.1 54V24.3c.3.1.5.2.8.2.3 0 .6-.1.9-.2V54H8.1z"/></g></svg>
+ {{ content.field_number_of_servings }}
+ </div>
+ <div class="recipe-meta">
+ <svg xmlns="http://www.w3.org/2000/svg" width="66.9" height="56.3" viewBox="0 0 66.9 56.3"><title>Difficulty icon</title><g fill="#00A388"><path d="M33.4 2.5c-17 0-30.8 13.8-30.8 30.8 0 7.1 2.4 13.9 6.9 19.4.7.9 2 1 2.8.3s1-2 .3-2.8c-1.1-1.4-2.1-2.9-2.9-4.5l6.4-2.6c1-.4 1.5-1.6 1.1-2.6-.4-1-1.6-1.5-2.6-1.1L8.1 42c-.7-2-1.2-4.1-1.3-6.3h6.8c1.1 0 2-.9 2-2s-.9-2-2-2H6.7c.1-2.3.5-4.4 1.2-6.5l6.2 2.6c.3.1.5.2.8.2.8 0 1.5-.5 1.8-1.2.4-1-.1-2.2-1.1-2.6l-6.2-2.6c1-2 2.2-3.8 3.6-5.5l4.6 4.6c.4.4.9.6 1.4.6s1-.2 1.4-.6c.8-.8.8-2 0-2.8l-4.7-4.7c1.7-1.5 3.5-2.7 5.5-3.8l2.5 6c.3.8 1.1 1.2 1.9 1.2.3 0 .5 0 .8-.2.2-.1.4-.2.5-.3-.2 1.7-.4 4.3-.4 8.2 0 4.7.1 10.5.5 12.2.7 3.1 3.5 5.4 6.8 5.4.5 0 1-.1 1.5-.2 3.8-.8 6.2-4.5 5.4-8.2-.3-1.7-2.6-7-4.5-11.2-1.8-4-3-6.4-3.9-7.8.3.3.8.4 1.2.4 1.1 0 2-.9 2-2V6.6c2.3.2 4.5.6 6.6 1.3l-2.5 6c-.4 1 .1 2.2 1.1 2.6.3.1.5.2.8.2.8 0 1.5-.5 1.8-1.2l2.5-6c2 1 3.8 2.3 5.4 3.7l-4.7 4.7c-.8.8-.8 2 0 2.8.4.4.9.6 1.4.6s1-.2 1.4-.6l4.6-4.6c1.4 1.7 2.7 3.6 3.6 5.6l-6.2 2.6c-1 .4-1.5 1.6-1.1 2.6.3.8 1.1 1.2 1.9 1.2.3 0 .5 0 .8-.2l6.2-2.5c.6 2 1 4.2 1.2 6.4h-6.8c-1.1 0-2 .9-2 2s.9 2 2 2h6.8c-.2 2.2-.7 4.3-1.4 6.4l-6.4-2.7c-1-.4-2.2.1-2.6 1.1-.4 1 .1 2.2 1.1 2.6l6.3 2.6c-.9 1.7-1.9 3.2-3.1 4.7-.7.8-.6 2.1.3 2.8.4.3.8.5 1.3.5.6 0 1.1-.2 1.5-.7 4.6-5.5 7.1-12.5 7.1-19.7-.1-17.1-14-30.9-31-30.9zm3.4 32c.3 1.5-.7 3.1-2.3 3.4-1.6.3-3.2-.7-3.5-2.2-.3-1.7-.5-10.1-.3-15.6 2.3 5 5.7 12.8 6.1 14.4zm-7.3-22.1h-.4c-.7.1-1.2.4-1.6 1.4l-2.5-6c2.1-.7 4.2-1.1 6.5-1.3V13c0 .2 0 .4.1.5-1-1.1-1.5-1.1-2.1-1.1z"/><ellipse cx="33.5" cy="33.8" transform="rotate(78.1 33.55 33.795)" rx="1.3" ry="1.3"/></g></svg>
+ {{ content.field_difficulty }}
+ </div>
+ {{ content.field_summary }}
+ </div>
+ </div>
+ <div class="layout__region--bottom">
+ <h2>{{ "What you'll need and how to make this dish"|t }}</h2>
+ <div class="layout__region layout__region--bottom-first">
+ {{ content.field_ingredients }}
+ </div>
+ <div class="layout__region layout__region--bottom-second">
+ {{ content.field_recipe_instruction }}
+ </div>
+ </div>
+ </div>
+</article>
diff --git a/core/profiles/demo_umami/themes/umami/templates/content/node.html.twig b/core/profiles/demo_umami/themes/umami/templates/content/node.html.twig
new file mode 100644
index 0000000..56b20c3
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/content/node.html.twig
@@ -0,0 +1,118 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{% set created_date = node.getCreatedTime|format_date('umami_dates') %}
+{{ attach_library('classy/node') }}
+
+<article{{ attributes.addClass(classes) }}>
+
+ {{ title_prefix }}
+ {% if page %}
+ <header class="node__header">
+ <h1 class="page-title">
+ {{ label }}
+ </h1>
+ {% if display_submitted %}
+ <div{{ author_attributes.addClass('node__submitted') }}>
+ {% trans %}<span class="by-author">by {{ author_name }}</span> {{ created_date }}{% endtrans %}
+ {{ metadata }}
+ </div>
+ {% endif %}
+ </header>
+ {% else %}
+ <h2{{ title_attributes }}>
+ <a href="{{ url }}" rel="bookmark">{{ label }}</a>
+ </h2>
+ {% endif %}
+ {{ title_suffix }}
+
+ {% if display_submitted %}
+ <footer class="node__meta">
+ {{ author_picture }}
+ <div{{ author_attributes.addClass('node__submitted') }}>
+ {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
+ {{ metadata }}
+ </div>
+ </footer>
+ {% endif %}
+
+ <div{{ content_attributes.addClass('node__content') }}>
+ {{ content }}
+ </div>
+
+</article>
diff --git a/core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig b/core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig
new file mode 100644
index 0000000..220efec
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/templates/layout/page.html.twig
@@ -0,0 +1,132 @@
+{#
+/**
+ * @file
+ * Theme override to display a single page.
+ *
+ * The doctype, html, head and body tags are not in this template. Instead they
+ * can be found in the html.html.twig template in this directory.
+ *
+ * Available variables:
+ *
+ * General utility variables:
+ * - base_path: The base URL path of the Drupal installation. Will usually be
+ * "/" unless you have installed Drupal in a sub-directory.
+ * - is_front: A flag indicating if the current page is the front page.
+ * - logged_in: A flag indicating if the user is registered and signed in.
+ * - is_admin: A flag indicating if the user has permission to access
+ * administration pages.
+ *
+ * Site identity:
+ * - front_page: The URL of the front page. Use this instead of base_path when
+ * linking to the front page. This includes the language domain or prefix.
+ *
+ * Page content (in order of occurrence in the default page.html.twig):
+ * - node: Fully loaded node, if there is an automatically-loaded node
+ * associated with the page and the node ID is the second argument in the
+ * page's path (e.g. node/12345 and node/12345/revisions, but not
+ * comment/reply/12345).
+ *
+ * Regions:
+ * - page.header: Items for the header region.
+ * - page.primary_menu: Items for the primary menu region.
+ * - page.secondary_menu: Items for the secondary menu region.
+ * - page.highlighted: Items for the highlighted content region.
+ * - page.help: Dynamic help text, mostly for admin pages.
+ * - page.content: The main content of the current page.
+ * - page.sidebar_first: Items for the first sidebar.
+ * - page.sidebar_second: Items for the second sidebar.
+ * - page.footer: Items for the footer region.
+ * - page.breadcrumb: Items for the breadcrumb region.
+ *
+ * @see template_preprocess_page()
+ * @see html.html.twig
+ */
+#}
+<div class="layout-container">
+
+ {% if page.header|render|striptags|trim is not empty %}
+ <header class="layout-header" role="banner">
+ <div class="container">
+ {{ page.header }}
+ </div>
+ </header>
+ {% endif %}
+
+
+ <div class="layout-highlighted">
+ {{ page.highlighted }}
+ </div>
+
+
+ {% if page.tabs|render|striptags|trim is not empty %}
+ <div class="layout-tabs">
+ <div class="container">
+ {{ page.tabs }}
+ </div>
+ </div>
+ {% endif %}
+
+ {% if page.banner_top|render|striptags|trim is not empty %}
+ <div class="layout-banner-top">
+ {{ page.banner_top }}
+ </div>
+ {% endif %}
+
+ {% if page.breadcrumbs|render|striptags|trim is not empty %}
+ <div class="layout-breadcrumbs">
+ <div class="container">
+ {{ page.breadcrumbs }}
+ </div>
+ </div>
+ {% endif %}
+
+ {% if not node %}
+ {% if page.page_title|render|striptags|trim is not empty %}
+ <div class="layout-page-title">
+ {% if is_front %}
+ <div class="is-front container">
+ {{ page.page_title }}
+ </div>
+ {% else %}
+ <div class="container">
+ {{ page.page_title }}
+ </div>
+ {% endif %}
+ </div>
+ {% endif %}
+ {% endif %}
+
+ <main role="main" class="main container">
+
+ <div class="layout-content">
+ <a id="main-content" tabindex="-1"></a>{# link is in html.html.twig #}
+ {{ page.content }}
+ </div>{# /.layout-content #}
+
+ {% if page.sidebar|render|striptags|trim is not empty %}
+ <aside class="layout-sidebar" role="complementary">
+ {{ page.sidebar }}
+ </aside>
+ {% endif %}
+
+ </main>
+
+ {% if page.footer|render|striptags|trim is not empty %}
+ <div class="layout-footer">
+ <footer class="footer" role="contentinfo">
+ <div class="container">
+ {{ page.footer }}
+ </div>
+ </footer>
+ </div>
+ {% endif %}
+
+ {% if page.bottom|render|striptags|trim is not empty %}
+ <div class="layout-bottom">
+ <div class="container">
+ {{ page.bottom }}
+ </div>
+ </div>
+ {% endif %}
+
+</div>{# /.layout-container #}
diff --git a/core/profiles/demo_umami/themes/umami/umami.breakpoints.yml b/core/profiles/demo_umami/themes/umami/umami.breakpoints.yml
new file mode 100644
index 0000000..3c3d2bc
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/umami.breakpoints.yml
@@ -0,0 +1,21 @@
+umami.mobile:
+ label: mobile
+ mediaQuery: ''
+ weight: 0
+ multipliers:
+ - 1x
+ - 2x
+umami.narrow:
+ label: narrow
+ mediaQuery: 'all and (min-width: 768px)'
+ weight: 1
+ multipliers:
+ - 1x
+ - 2x
+umami.wide:
+ label: wide
+ mediaQuery: 'all and (min-width: 960px)'
+ weight: 2
+ multipliers:
+ - 1x
+ - 2x
diff --git a/core/profiles/demo_umami/themes/umami/umami.info.yml b/core/profiles/demo_umami/themes/umami/umami.info.yml
new file mode 100644
index 0000000..3a70cc6
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/umami.info.yml
@@ -0,0 +1,27 @@
+name: Umami
+type: theme
+base theme: classy
+description: 'The theme used for the out of the box initiative.'
+core: 8.x
+hidden: true
+libraries:
+ - umami/global
+ - umami/messages
+ - umami/webfonts
+
+libraries-override:
+ classy/messages: false
+
+regions:
+ header: Header
+ highlighted: Highlighted
+ tabs: Tabs
+ banner_top: 'Banner Top'
+ breadcrumbs: Breadcrumbs
+ page_title: 'Page Title'
+ content: Content
+ sidebar: Sidebar
+ footer: Footer
+ bottom: Bottom
+ page_top: 'Page top' # Needed by Drupal Core
+ page_bottom: 'Page bottom' # Needed by Drupal Core
diff --git a/core/profiles/demo_umami/themes/umami/umami.libraries.yml b/core/profiles/demo_umami/themes/umami/umami.libraries.yml
new file mode 100644
index 0000000..c4379fb
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/umami.libraries.yml
@@ -0,0 +1,91 @@
+global:
+ version: VERSION
+ css:
+ component:
+ css/base.css: {}
+ css/components/blocks/banner/banner.css: {}
+ css/components/blocks/branding/branding.css: {}
+ css/components/blocks/page-title/page-title.css: {}
+ css/components/blocks/footer-promo/footer-promo.css: {}
+ css/components/blocks/search/search.css: {}
+ css/components/blocks/search/search-results.css: {}
+ css/components/blocks/articles-aside/articles-aside.css: {}
+ css/components/forms/contact.css: {}
+ css/components/content/node.css: {}
+ css/components/content/full/node-full.css: {}
+ css/components/content-types/article/article.css: {}
+ css/components/content-types/recipe/recipe.css: {}
+ css/components/fields/label-items.css: {}
+ css/components/forms/buttons.css: {}
+ css/components/views/promoted-items.css: {}
+ css/components/views/frontpage.css: {}
+ css/components/navigation/menu-footer/menu-footer.css: {}
+ css/components/navigation/menu-main/menu-main.css: {}
+ css/components/navigation/menu-account/menu-account.css: {}
+ css/components/navigation/skip-link/skip-link.css: {}
+ css/components/navigation/tabs/tabs.css: {}
+ css/components/navigation/breadcrumbs/breadcrumbs.css: {}
+ css/components/regions/bottom/bottom.css: {}
+ css/components/regions/footer/footer.css: {}
+ css/components/regions/header/header.css: {}
+ layout:
+ css/layout/grid-2.css: {}
+ css/layout/grid-3.css: {}
+ css/layout/grid-4.css: {}
+ css/layout/layout.css: {}
+ js:
+ js/components/navigation/menu-main/menu-main.js: {}
+
+messages:
+ css:
+ component:
+ css/components/messages/messages.css: { weight: -10 }
+
+more-link:
+ css:
+ theme:
+ css/components/navigation/more-link/more-link.css: { weight: -10 }
+
+quicklinks:
+ css:
+ theme:
+ css/components/blocks/quicklinks/quicklinks.css: {}
+
+two-columns:
+ css:
+ layout:
+ css/layout/layout-2-col.css: {}
+
+
+webfonts:
+ css:
+ theme:
+ 'https://fonts.googleapis.com/css?family=Open+Sans|Scope+One': { type: external, minified: true }
+
+view-mode-highlighted-bottom:
+ css:
+ theme:
+ css/components/content/highlighted-bottom/highlighted-bottom.css: {}
+ dependencies:
+ - umami/more-link
+
+view-mode-highlighted-small:
+ css:
+ theme:
+ css/components/content/highlighted-small/highlighted-small.css: {}
+ dependencies:
+ - umami/more-link
+
+view-mode-highlighted-medium:
+ css:
+ theme:
+ css/components/content/highlighted-medium/highlighted-medium.css: {}
+ dependencies:
+ - umami/more-link
+
+view-mode-highlighted-top:
+ css:
+ theme:
+ css/components/content/highlighted-top/highlighted-top.css: {}
+ dependencies:
+ - umami/more-link
diff --git a/core/profiles/demo_umami/themes/umami/umami.theme b/core/profiles/demo_umami/themes/umami/umami.theme
new file mode 100644
index 0000000..6982954
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/umami.theme
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Functions to support theming in the Umami theme.
+ */
+
+use Symfony\Cmf\Component\Routing\RouteObjectInterface;
+
+/**
+ * Implements hook_preprocess_HOOK() for HTML document templates.
+ *
+ * Adds body classes if certain regions have content.
+ */
+function umami_preprocess_html(&$variables) {
+ // Add a sidebar class if the sidebar has content in it.
+ if (!empty($variables['page']['sidebar'])) {
+ $variables['attributes']['class'][] = 'two-columns';
+ $variables['#attached']['library'][] = 'umami/two-columns';
+ }
+ else {
+ $variables['attributes']['class'][] = 'one-column';
+ }
+}
+
+/**
+ * Implements hook_preprocess_field().
+ */
+function umami_preprocess_field(&$variables, $hook) {
+ $element = $variables['element'];
+ // Add class to label and items fields to be styled using the meta styles.
+ if (isset($element['#field_name'])) {
+ if (
+ $element['#field_name'] == 'field_recipe_category' ||
+ $element['#field_name'] == 'field_tags' ||
+ $element['#field_name'] == 'field_difficulty') {
+ $variables['attributes']['class'] = 'label-items';
+ }
+ }
+}
+
+/**
+ * Implements hook_preprocess_block().
+ */
+function umami_preprocess_block(&$vars) {
+ $vars['title_attributes']['class'][] = 'block__title';
+}
+
+/**
+ * Implements hook_theme_suggestions_HOOK_alter() for form templates.
+ */
+function umami_theme_suggestions_block_alter(array &$suggestions, array $variables) {
+ // Block suggestions for custom block bundles.
+ if (isset($variables['elements']['content']['#block_content'])) {
+ array_splice($suggestions, 1, 0, 'block__bundle__' . $variables['elements']['content']['#block_content']->bundle());
+ }
+}
+
+/**
+ * Implements hook_preprocess_breadcrumb().
+ */
+function umami_preprocess_breadcrumb(&$variables) {
+ // We are creating a variable for the Current Page Title, to allow us to print
+ // it after the breadcrumbs loop has run.
+ $request = \Drupal::request();
+ if ($route = $request->attributes->get(RouteObjectInterface::ROUTE_OBJECT)) {
+ // Search page titles aren't resolved using the title_resolver service - it
+ // will always return 'Search' instead of 'Search for [term]', which would
+ // give us a breadcrumb of Home >> Search >> Search.
+ // @see https://www.drupal.org/project/drupal/issues/2359901
+ // @see https://www.drupal.org/project/drupal/issues/2403359
+ if (($entity = $request->attributes->get('entity')) && $entity->getEntityTypeId() === 'search_page') {
+ $variables['current_page_title'] = $entity->getPlugin()->suggestedTitle();
+ }
+ else {
+ $variables['current_page_title'] = \Drupal::service('title_resolver')->getTitle($request, $route);
+ }
+ }
+ // Since we are printing the 'Current Page Title', add the URL cache context.
+ // If we don't, then we might end up with something like
+ // "Home > Articles" on the Recipes page, which should read "Home > Recipes".
+ $variables['#cache']['contexts'][] = 'url';
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Asset/ResolvedLibraryDefinitionsFilesMatchTest.php b/core/tests/Drupal/KernelTests/Core/Asset/ResolvedLibraryDefinitionsFilesMatchTest.php
index 4836e16..2131a35 100644
--- a/core/tests/Drupal/KernelTests/Core/Asset/ResolvedLibraryDefinitionsFilesMatchTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Asset/ResolvedLibraryDefinitionsFilesMatchTest.php
@@ -108,6 +108,10 @@ class ResolvedLibraryDefinitionsFilesMatchTest extends KernelTestBase {
}
return TRUE;
});
+ // Remove demo_umami_content module as its install hook creates content
+ // that relies on the presence of entity tables and various other elements
+ // not present in a kernel test.
+ unset($all_modules['demo_umami_content']);
$this->allModules = array_keys($all_modules);
$this->allModules[] = 'system';
sort($this->allModules);