diff --git a/app/assets/images/ico-soil.svg b/app/assets/images/ico-soil.svg new file mode 100644 index 0000000..35dccce --- /dev/null +++ b/app/assets/images/ico-soil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 52b622e..49e8de9 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -267,6 +267,10 @@ main { --clr-action: var(--clr-white); } +.stage { + --clr-bg: var(--clr-sand-light); + --clr-action: var(--clr-white); +} .hero-container, .carousel { @@ -278,7 +282,7 @@ main { display: grid; grid-template: 1fr / 1fr; - & img { + & img, video { grid-area: 1 / 1; width: 100%; height: 100%; @@ -287,11 +291,32 @@ main { min-height: 0; } + & article { + grid-area: 1 / 1; + place-self: start start; + z-index: 1; + } + + &:has(video) { + color: var(--clr-white); + + & h2 { + text-align: left; + margin-top: 1em; + } + } + + & svg { grid-area: 1 / 1; place-self: end end; fill: var(--clr-bg, var(--clr-green)); } + + & .hero-link { + grid-area: 1 / 1; + z-index: 2; + } } .cta { @@ -358,4 +383,33 @@ main { background-color: var(--clr-black); } } +} + +.stage-header { + background-color: var(--clr-bg); + padding: 1rem; + display: flex; + gap: 0.5rem; + align-items: center; + + & h1 { + font: var(--td-base); + margin: 0; + } +} + +.stage-icon { + width: 2.5rem; + aspect-ratio: 1; + background-color: var(--clr-green); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; +} + +.stage-progress { + font: var(--td-s); + text-transform: uppercase; + font-weight: 700; } \ No newline at end of file diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 51470ea..bf2e03e 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -16,6 +16,16 @@ class SiteController < ApplicationController end + def intro + @node = root_node&.children&.intro&.first + end + + + def stage + @node = root_node&.children&.stage&.first + end + + private def root_node diff --git a/app/javascript/application.js b/app/javascript/application.js index 21741f6..9057320 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -3,11 +3,13 @@ import { Application } from "@hotwired/stimulus" import LanguageMenuController from "language_menu_controller" import CarouselController from "carousel_controller" +import IntroController from "intro_controller" const application = Application.start() application.register("language-menu", LanguageMenuController) application.register("carousel", CarouselController) +application.register("intro", IntroController) // Configure Stimulus development experience application.debug = false diff --git a/app/javascript/intro_controller.js b/app/javascript/intro_controller.js new file mode 100644 index 0000000..905c44d --- /dev/null +++ b/app/javascript/intro_controller.js @@ -0,0 +1,17 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + static targets = ["video", "link"] + + connect() { + this.videoTarget.addEventListener("ended", this.followLink) + } + + disconnect() { + this.videoTarget.removeEventListener("ended", this.followLink) + } + + followLink = () => { + this.linkTarget.click() + } +} diff --git a/app/models/node.rb b/app/models/node.rb index 3f1a59c..28b43e1 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -27,7 +27,9 @@ class Node < ApplicationRecord enum :template, { start: 0, - facts: 1 + facts: 1, + intro: 2, + stage: 3 } def available_templates @@ -35,7 +37,7 @@ class Node < ApplicationRecord case depth when 1 - [ :facts ] + [ :facts, :intro, :stage ] when 2 [] else diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 186fa0b..c503512 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -17,7 +17,7 @@ <%= stylesheet_link_tag "reset", "application" %> - <%= frontend_javascript_importmap_tags %w[application @hotwired/turbo-rails @hotwired/stimulus language_menu_controller carousel_controller] %> + <%= frontend_javascript_importmap_tags %w[application @hotwired/turbo-rails @hotwired/stimulus language_menu_controller carousel_controller intro_controller] %>
<%= content_for :header %> diff --git a/app/views/site/facts.html.erb b/app/views/site/facts.html.erb index acfde73..f9ca869 100644 --- a/app/views/site/facts.html.erb +++ b/app/views/site/facts.html.erb @@ -28,6 +28,6 @@