Skip to content

Commit

Permalink
Add solutions section
Browse files Browse the repository at this point in the history
  • Loading branch information
“yndira-flowforge” committed Feb 22, 2024
1 parent 029e7e1 commit 08c457f
Show file tree
Hide file tree
Showing 9 changed files with 192 additions and 26 deletions.
12 changes: 6 additions & 6 deletions src/_data/mainFeatures.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[{
"id": "feature1",
"buttonText": "LOW-CODE NODE-RED",
"buttonTextMobile": "LOW-CODE",
"buttonText": "Low-code Node-RED",
"buttonTextMobile": "Low-code",
"title": "Low-code Node-RED",
"imageFolder": "./images/features/",
"imageFile": "feature-low-code-nr.png",
Expand All @@ -25,8 +25,8 @@
},
{
"id": "feature3",
"buttonText": "DATA SHARING & STORAGE",
"buttonTextMobile": "DATA",
"buttonText": "Data sharing and storage",
"buttonTextMobile": "Data",
"title": "Data sharing and storage",
"imageFolder": "./images/pictograms/",
"imageFile": "feature-data-sharing.png",
Expand All @@ -40,8 +40,8 @@
},
{
"id": "feature4",
"buttonText": "EDGE MANAGEMENT",
"buttonTextMobile": "EDGE",
"buttonText": "Edge Management",
"buttonTextMobile": "Edge",
"title": "Remote device management at the edge",
"imageFolder": "./images/pictograms/",
"imageFile": "edge_red.png",
Expand Down
47 changes: 47 additions & 0 deletions src/_data/solutions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
[{
"id": "solution1",
"buttonText": "Manufacturing",
"buttonTextMobile": "Manufacturing",
"title": "FlowFuse allows teams to automate their manufacturing process through customized, reliable applications.",
"imageFile": "manufacturing.png",
"imageAlt": " a manufacturing floor plant.",
"content": "FlowFuse streamlines manufacturing automation, from production monitoring to supply chain management.",
"list": [
"Hardware & Sensor Integration",
"Integrate OT and IT Data",
"Intuitive OT Data visualization",
"Automate Event Triggers"
],
"url": "manufacturing"
},
{
"id": "solution2",
"buttonText": "Device Management",
"buttonTextMobile": "Devices",
"title": "FlowFuse simplifies the management of deployments to edge devices in manufacturing, from equipment to PLCs",
"imageFile": "device_management.png",
"imageAlt": " a plant worker holding a laptop controling a machine.",
"content": "Our platform ensures secure and reliable handling of large-scale deployments, overcoming the challenges of extensive device management.",
"list": [
"Scalable Device Management",
"Effortless Data Streaming",
"Rapid Security Deployment",
"Remote Troubleshooting"
],
"url": "device-management"
},
{
"id": "solution3",
"buttonText": "Data Integration",
"buttonTextMobile": "Data",
"title": "FlowFuse allows anyone to collect data from multiple sources, apply it, update it, store it, and transmit it to a new service",
"imageFile": "home_data_integration.png",
"imageAlt": " data sharing and storage.",
"content": "Data integration can be a challenging task, especially when dealing with multiple data formats, protocols, and sources. Node-RED is the Data Integration Solution and FlowFuse improves data integration",
"list": [
"Collaborative Development",
"Managed Node-RED Service",
"Software Delivery Pipelines"
],
"url": "data-integration"
}]
2 changes: 1 addition & 1 deletion src/_includes/feature_lists/main-features.njk
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class="flex flex-wrap md:justify-between flex-row justify-center mt-4 md:mt-8 mb-3 mb:6 md:mb-6">
<div class="flex flex-wrap md:justify-between gap-3 md:gap-0 flex-row justify-center mt-4 md:mt-8 mb-3 mb:6 md:mb-6">
{%- for f in mainFeatures -%}
<button class="feature-button align-baseline" data-section="{{ f.id }}">
<span class="hidden md:inline">{{ f.buttonText }}</span>
Expand Down
96 changes: 96 additions & 0 deletions src/_includes/solutions.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
<div class="flex flex-wrap flex-row gap-2 justify-center sm:justify-start sm:gap-6 mt-2 sm:mt-8 mb-6">
{%- for s in solutions -%}
<button class="solution-button align-baseline" data-section="{{ s.id }}">
<span class="hidden sm:inline">{{ s.buttonText }}</span>
<span class="inline sm:hidden">{{ s.buttonTextMobile }}</span>
</button>
{%- endfor -%}
</div>
<div class="flex flex-col flex-wrap content-center justify-center sm:min-h-[450px] transition duration-1000">
{%- for s in solutions -%}
<div class="solution active sm:text-left" id="{{ s.id }}">
<div class="m-auto max-w-screen-lg">
<div class="max-w-[410px] sm:max-w-none mx-auto sm:grid justify-center items-center" style="grid-template-columns: 40% auto;">
{% set imageFolder = './images/home/' %}
<div class="max-h-[300px] sm:max-h-full ff-image-cover scale ff-image-rounded w-full h-full mb-4 sm:mb-0">
<a href="/solutions/{{ s.url }}/">
{% set imageSrc = [imageFolder, s.imageFile] | join %}
{% set imageDescription = ["Image depicting", s.imageAlt] | join %}
{% image imageSrc, imageDescription, [410] %}
</a>
</div>
<div class="content-center justify-center sm:pl-6 flex-1">
<h3 class="flex items-center text-center justify-center sm:text-left sm:justify-start">
<div class="flex flex-col leading-8 text-xl mb-3 text-gray-600">
{{ s.title }}
</div>
</h3>
<p class="font-light">
{{ s.content }}
</p>
<div class="prose">
<ul>
{% if s.list %}
{%- for item in s.list -%}
<li class="font-light">{{ item }}</li>
{%- endfor -%}
{% endif %}
</ul>
</div>
<a href="/solutions/{{ s.url }}/" class="w-full text-right flex flex-row items-center gap-1 mt-6 justify-end sm:justify-start">
Learn more
{% include "components/icons/arrow-long-right.svg" %}
</a>
</div>
</div>
</div>
</div>
{%- endfor -%}
</div>

<script>
const solutionButtons = document.querySelectorAll('.solution-button');
const solutions = document.querySelectorAll('.solution');
let currentIndex = 0;
let autoPlayInterval;
function activateSection(index) {
// Hide all sections
solutions.forEach(solution => {
solution.classList.remove('active');
});
// Show the selected section
solutions[index].classList.add('active');
solutionButtons.forEach((button, i) => {
if (i === index) {
button.classList.add('active');
} else {
button.classList.remove('active');
}
});
}
function startAutoPlay() {
autoPlayInterval = setInterval(() => {
currentIndex = (currentIndex + 1) % solutions.length;
activateSection(currentIndex);
}, 10000); // Auto play every 10 seconds
}
function stopAutoPlay() {
clearInterval(autoPlayInterval);
}
solutionButtons.forEach((button, index) => {
button.addEventListener('click', () => {
activateSection(index);
currentIndex = index;
stopAutoPlay();
});
});
activateSection(currentIndex);
startAutoPlay();
</script>
46 changes: 30 additions & 16 deletions src/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -677,28 +677,42 @@ h4:hover .header-anchor {
.features-card{
@apply flex flex-wrap flex-col justify-between h-full bg-gray-50 rounded-3xl px-5 pb-5;
}

.feature-button {
background-color: none;
color: theme(colors.gray.800);
text-transform: uppercase;
.feature-button,
.solution-button {
background-color: transparent;
color: theme(colors.gray.500);
text-transform: capitalize;
display: inline-block;
padding: 8px 12px;
font-weight: 600;
padding: 8px 18px;
font-weight: 300;
border: 2px solid theme(colors.gray.200);
border-radius: 24px;
}

.feature-button.active {
background-color: theme(colors.blue.800);
color: white;
.feature-button.active,
.solution-button.active {
background-color: theme(colors.gray.200);
color: theme(colors.gray.800);
border: 2px solid theme(colors.gray.300);
}

.feature {
display: none;
}
.feature,
.solution {
transition: opacity 0.7s ease, transform 0.7s ease;
opacity: 0;
visibility: hidden;
position: absolute;
width: 100%;
transform: translateX(20px);
}

.feature.active {
display: block;
}
.feature.active,
.solution.active {
opacity: 1;
visibility: visible;
position: relative;
transform: translateX(0);
}
/*
Footer
*/
Expand Down
Binary file added src/images/home/device_management.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/images/home/home_data_integration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/images/home/manufacturing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 12 additions & 3 deletions src/index.njk
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,15 @@ hubspot:
{% include "social-proof.njk" %}
</div>
</div>
<!--Solutions-->
<div class="w-full pt-20 pb-8 md:px-0">
<div class="sm:max-w-screen-lg mx-auto">
<div class="mb-10 md:mb-12">
<h2 class="text-center w-full md:text-left font-medium">See how FlowFuse <span class="text-red-600">powers industries</span></h2>
</div>
{% include "solutions.njk" %}
</div>
</div>
</div>
<div class="about w-full ff-bg-light pt-10">
<!-- FlowFuse Benefits -->
Expand Down Expand Up @@ -129,7 +138,7 @@ hubspot:
<div class="pb-2 md:pb-0">
<a href="/blog/">
<div class="sm:max-h-none md:min-w-[40%] max-w-[448px] ff-image-cover ff-image-rounded scale mx-auto mb-4 aspect-video">
{% image "./images/home/blog.png", "Image of hands typing on laptop working on Node-RED flows", [357] %}
{% image "./images/home/blog.png", "Image of hands typing on laptop working on Node-RED flows", [448] %}
</div>
</a>
<h4 class="text-xl font-bold pb-3">Latest on the blog</h4>
Expand All @@ -154,7 +163,7 @@ hubspot:
<div class="pb-2 md:pb-0">
<a href="{{ item.url }}">
<div class="sm:max-h-none md:min-w-[40%] max-w-[448px] ff-image-cover ff-image-rounded scale mx-auto mb-4 aspect-video">
{% image "./images/home/webinar.png", "Image of hands typing on laptop working on Node-RED flows", [357] %}
{% image "./images/home/webinar.png", "Image of hands typing on laptop working on Node-RED flows", [448] %}
</div>
</a>
<h4 class="text-xl font-bold pb-3">{% if item.date | isFutureDate %}Upcoming{% else %}Latest{% endif %} Webinar</h4>
Expand All @@ -176,7 +185,7 @@ hubspot:
<div class="w-full my-2 grid grid-cols-1">
<div class="pb-2 md:pb-0">
<div class="sm:max-h-none md:min-w-[40%] max-w-[448px] ff-image-cover ff-image-rounded mx-auto mb-4 aspect-video">
{% image "./images/home/newsletter.png", "Image of hands typing on laptop working on Node-RED flows", [357] %}
{% image "./images/home/newsletter.png", "Image of hands typing on laptop working on Node-RED flows", [448] %}
</div>
<h4 class="text-xl font-bold pb-3">Newsletter</h4>
<h5 class="font-bold pb-3 pt-2">Sign up for our monthly email updates</h5>
Expand Down

0 comments on commit 08c457f

Please sign in to comment.