Add revealing effects on components

This commit is contained in:
Moris Zen
2018-09-01 14:14:37 +02:00
parent 204a77fde0
commit 5dc905acab
5 changed files with 433 additions and 380 deletions

View File

@@ -20,6 +20,7 @@
"react-headroom": "^2.2.2", "react-headroom": "^2.2.2",
"react-helmet": "^5.2.0", "react-helmet": "^5.2.0",
"react-responsive-mixin": "^0.4.0", "react-responsive-mixin": "^0.4.0",
"react-reveal": "^1.2.2",
"react-typed": "^1.0.9", "react-typed": "^1.0.9",
"slideout": "^1.0.1", "slideout": "^1.0.1",
"tiny-slider": "^2.8.5", "tiny-slider": "^2.8.5",

View File

@@ -2,6 +2,7 @@ import React from 'react'
import SectionIntro from '../components/SectionIntro' import SectionIntro from '../components/SectionIntro'
import PageIntro from '../components/PageIntro' import PageIntro from '../components/PageIntro'
import Fade from 'react-reveal/fade'
import ContactImage from '../images/saburly-web-agency.jpg' import ContactImage from '../images/saburly-web-agency.jpg'
import Sarajevo from '../images/sarajevo-web-agency.jpg' import Sarajevo from '../images/sarajevo-web-agency.jpg'
@@ -12,6 +13,7 @@ import PageTransition from 'gatsby-plugin-page-transitions'
const ContactPage = () => ( const ContactPage = () => (
<PageTransition> <PageTransition>
<Fade top>
<PageIntro <PageIntro
tiltImage tiltImage
headline="Let's make it happen" headline="Let's make it happen"
@@ -20,9 +22,11 @@ const ContactPage = () => (
image={ContactImage} image={ContactImage}
imgClasses="-mb-12 border-white border-8 rounded" imgClasses="-mb-12 border-white border-8 rounded"
/> />
</Fade>
<section className="container mx-auto my-12 p-4"> <section className="container mx-auto my-12 p-4">
<div className="md:flex"> <div className="md:flex">
<Fade left>
<div className="p-2 text-center"> <div className="p-2 text-center">
<div className="rounded overflow-hidden border-bottom-saburly"> <div className="rounded overflow-hidden border-bottom-saburly">
<img className="w-full" src={Stockholm} alt="Stockholm City" /> <img className="w-full" src={Stockholm} alt="Stockholm City" />
@@ -64,6 +68,8 @@ const ContactPage = () => (
</div> </div>
</div> </div>
</div> </div>
</Fade>
<Fade right>
<div className="p-2 text-center"> <div className="p-2 text-center">
<div className="rounded overflow-hidden border-bottom-saburly"> <div className="rounded overflow-hidden border-bottom-saburly">
<img className="w-full" src={Sarajevo} alt="Sarajevo City" /> <img className="w-full" src={Sarajevo} alt="Sarajevo City" />
@@ -105,10 +111,12 @@ const ContactPage = () => (
</div> </div>
</div> </div>
</div> </div>
</Fade>
</div> </div>
</section> </section>
<div className="bg-saburly-lighter p-8"> <div className="bg-saburly-lighter p-8">
<Fade>
<section className="container lg:flex justify-between mx-auto"> <section className="container lg:flex justify-between mx-auto">
<form <form
action="https://formspree.io/info@saburly.com" action="https://formspree.io/info@saburly.com"
@@ -161,6 +169,7 @@ const ContactPage = () => (
/> />
</div> </div>
</section> </section>
</Fade>
</div> </div>
</PageTransition> </PageTransition>
) )

View File

@@ -8,6 +8,7 @@ import PageIntro from '../components/PageIntro'
import InfoBox from '../components/InfoBox' import InfoBox from '../components/InfoBox'
import Technologies from '../components/Technologies' import Technologies from '../components/Technologies'
import Typed from 'react-typed' import Typed from 'react-typed'
import Fade from 'react-reveal/fade'
import ImgIntro from '../images/web-development-company.svg' import ImgIntro from '../images/web-development-company.svg'
import ImgDesign from '../images/user-experience-design-agency.svg' import ImgDesign from '../images/user-experience-design-agency.svg'
@@ -26,6 +27,7 @@ import PageTransition from 'gatsby-plugin-page-transitions'
const IndexPage = ({ ...props }) => ( const IndexPage = ({ ...props }) => (
<PageTransition> <PageTransition>
<Fade top>
<PageIntro <PageIntro
text="We're a team of experienced, creative and passionate engineers and designers. Our mission is to make you stand out and gain competitive advantages with the help of modern technologies." text="We're a team of experienced, creative and passionate engineers and designers. Our mission is to make you stand out and gain competitive advantages with the help of modern technologies."
image={ImgIntro} image={ImgIntro}
@@ -43,24 +45,30 @@ const IndexPage = ({ ...props }) => (
great<br />digital experiences great<br />digital experiences
</h2> </h2>
</PageIntro> </PageIntro>
</Fade>
<main> <main>
<section className="container mx-auto max-w-lg text-center mt-16 p-4"> <section className="container mx-auto max-w-lg text-center mt-16 p-4">
<Fade top>
<SectionIntro <SectionIntro
h2Classes="text-3xl" h2Classes="text-3xl"
headline="Because beautiful code makes our heart pound" headline="Because beautiful code makes our heart pound"
text="We have a deep passion for cutting edge technologies and incredible user experiences. Our experienced engineers deliver custom end-to-end software solutions daily and can even help you with initial analysis, architecture design, testing and deployments." text="We have a deep passion for cutting edge technologies and incredible user experiences. Our experienced engineers deliver custom end-to-end software solutions daily and can even help you with initial analysis, architecture design, testing and deployments."
/> />
</Fade>
</section> </section>
<section className="bg-saburly relative"> <section className="bg-saburly relative">
<Fade left>
<Service <Service
h2Classes="text-4xl font-light saburly-color" h2Classes="text-4xl font-light saburly-color"
img={ImgDesign} img={ImgDesign}
title="User Experience Design" title="User Experience Design"
text="Our approach is simple: focus on how users might use the product in the best way possible. We offer UX and interface design for all screens and devices. The solutions are usually shaped through iterative processes of research, prototyping and testing." text="Our approach is simple: focus on how users might use the product in the best way possible. We offer UX and interface design for all screens and devices. The solutions are usually shaped through iterative processes of research, prototyping and testing."
/> />
</Fade>
<Fade right>
<Service <Service
reversed reversed
h2Classes="text-4xl font-light saburly-color" h2Classes="text-4xl font-light saburly-color"
@@ -69,7 +77,9 @@ const IndexPage = ({ ...props }) => (
text="We are experts in modern web development using both client-side and server-side technologies. Our talented developers work with popular languages and are always up to speed on the cutting edge trends in web application development. We deliver high-quality, maintainable code on time and know how to balance between cost, time and quality." text="We are experts in modern web development using both client-side and server-side technologies. Our talented developers work with popular languages and are always up to speed on the cutting edge trends in web application development. We deliver high-quality, maintainable code on time and know how to balance between cost, time and quality."
imgClasses="" imgClasses=""
/> />
</Fade>
<Fade left>
<Service <Service
img={ImgMobile} img={ImgMobile}
h2Classes="text-4xl font-light saburly-color" h2Classes="text-4xl font-light saburly-color"
@@ -77,7 +87,9 @@ const IndexPage = ({ ...props }) => (
title="Mobile Apps" title="Mobile Apps"
text="We have what it takes to develop competitive iOS and Android applications using both native languages and hybrid solutions. Solutions for iOS are built with Swift & Objective-C and Android solutions are built with Java & Kotlin. We love using technologies like React Native to build cross-platform native apps." text="We have what it takes to develop competitive iOS and Android applications using both native languages and hybrid solutions. Solutions for iOS are built with Swift & Objective-C and Android solutions are built with Java & Kotlin. We love using technologies like React Native to build cross-platform native apps."
/> />
</Fade>
<Fade>
<div className="py-8 text-center lg:flex justify-center"> <div className="py-8 text-center lg:flex justify-center">
<Button <Button
standard standard
@@ -86,10 +98,12 @@ const IndexPage = ({ ...props }) => (
classes="font-medium rounded-full hover:shadow-md text-grey-darker hover:shadow" classes="font-medium rounded-full hover:shadow-md text-grey-darker hover:shadow"
/> />
</div> </div>
</Fade>
</section> </section>
<section className="bg-saburly-lighter text-center p-4 my-12"> <section className="bg-saburly-lighter text-center p-4 my-12">
<div className="my-8 container mx-auto max-w-lg"> <div className="my-8 container mx-auto max-w-lg">
<Fade>
<SectionIntro <SectionIntro
h2Classes="text-4xl" h2Classes="text-4xl"
headline="Ambitious projects bring great responsibility" headline="Ambitious projects bring great responsibility"
@@ -132,21 +146,27 @@ const IndexPage = ({ ...props }) => (
/> />
</div> </div>
</div> </div>
</Fade>
<Fade>
<Button <Button
filled filled
text="Let's Get In Touch" text="Let's Get In Touch"
url="/contact" url="/contact"
classes="text-white font-medium shadow hover:shadow-md rounded-full mt-2 font-light bg-teal hover:bg-teal-dark" classes="text-white font-medium shadow hover:shadow-md rounded-full mt-2 font-light bg-teal hover:bg-teal-dark"
/> />
</Fade>
</div> </div>
</section> </section>
<section className="text-center p-8 relative"> <section className="text-center p-8 relative">
<Fade>
<SectionIntro <SectionIntro
h2Classes="font-light text-4xl" h2Classes="font-light text-4xl"
headline="But occasionally we have fun & publish" headline="But occasionally we have fun & publish"
/> />
</Fade>
<Fade>
<div className="container mx-auto w-full md:flex md:flex-wrap items-stretch w-full"> <div className="container mx-auto w-full md:flex md:flex-wrap items-stretch w-full">
{props.data.allWordpressPost.edges.map(({ node }) => ( {props.data.allWordpressPost.edges.map(({ node }) => (
<div key={node.id} className="md:w-1/2 p-2"> <div key={node.id} className="md:w-1/2 p-2">
@@ -157,19 +177,23 @@ const IndexPage = ({ ...props }) => (
excerpt={node.excerpt} excerpt={node.excerpt}
image={ image={
node.featured_media node.featured_media
? node.featured_media.localFile.childImageSharp.resolutions ? node.featured_media.localFile.childImageSharp
.resolutions
: undefined : undefined
} }
/> />
</div> </div>
))} ))}
</div> </div>
</Fade>
<Fade>
<Button <Button
standard standard
text="More Posts" text="More Posts"
url="/blog" url="/blog"
classes="mt-2 mb-8 hover:shadow-md rounded-full text-grey-darker" classes="mt-2 mb-8 hover:shadow-md rounded-full text-grey-darker"
/> />
</Fade>
</section> </section>
</main> </main>
</PageTransition> </PageTransition>

View File

@@ -5,6 +5,7 @@ import PageIntro from '../components/PageIntro'
import SectionIntro from '../components/SectionIntro' import SectionIntro from '../components/SectionIntro'
import WorkStyle from '../components/WorkStyle' import WorkStyle from '../components/WorkStyle'
import Technologies from '../components/Technologies' import Technologies from '../components/Technologies'
import Fade from 'react-reveal/fade'
import IntroImage from '../images/agile-practitioners.jpg' import IntroImage from '../images/agile-practitioners.jpg'
import WebdevServices from '../images/custom-software-development.svg' import WebdevServices from '../images/custom-software-development.svg'
@@ -15,6 +16,7 @@ import PageTransition from 'gatsby-plugin-page-transitions'
const ServicesPage = () => ( const ServicesPage = () => (
<PageTransition> <PageTransition>
<Fade top>
<PageIntro <PageIntro
tiltImage tiltImage
buttonClasses="text-white font-normal shadow hover:shadow-md rounded-full mt-4 font-light bg-teal hover:bg-teal-dark mb-20" buttonClasses="text-white font-normal shadow hover:shadow-md rounded-full mt-4 font-light bg-teal hover:bg-teal-dark mb-20"
@@ -23,7 +25,9 @@ const ServicesPage = () => (
image={IntroImage} image={IntroImage}
imgClasses="-mb-12 border-white border-8 rounded-lg" imgClasses="-mb-12 border-white border-8 rounded-lg"
/> />
</Fade>
<section className="px-4 py-16"> <section className="px-4 py-16">
<Fade left>
<div className="container mx-auto"> <div className="container mx-auto">
<div className="lg:flex"> <div className="lg:flex">
<img <img
@@ -31,6 +35,7 @@ const ServicesPage = () => (
className="hidden md:mr-8 lg:block -mt-12" className="hidden md:mr-8 lg:block -mt-12"
alt="User Experience Design Agency" alt="User Experience Design Agency"
/> />
<SectionIntro <SectionIntro
h2Classes="text-4xl md:text-5xl saburly-color font-medium" h2Classes="text-4xl md:text-5xl saburly-color font-medium"
classes="max-w-lg" classes="max-w-lg"
@@ -53,9 +58,10 @@ const ServicesPage = () => (
</h3> </h3>
<p className="font-light leading-normal text-black-light text-lg"> <p className="font-light leading-normal text-black-light text-lg">
Before our designers work on visual details, we start off by Before our designers work on visual details, we start off by
creating a clear understanding of the problem that you're trying creating a clear understanding of the problem that you're
to solve with the project. After collecting and analyzing data, trying to solve with the project. After collecting and
we develop concept that becomes a guideline for the design. analyzing data, we develop concept that becomes a guideline
for the design.
</p> </p>
</div> </div>
<div className="my-4"> <div className="my-4">
@@ -64,21 +70,23 @@ const ServicesPage = () => (
</h3> </h3>
<p className="font-light leading-normal text-black-light text-lg"> <p className="font-light leading-normal text-black-light text-lg">
We love to design pixel-perfect products that are easy to use We love to design pixel-perfect products that are easy to use
and delightful to interact with. From User-Flows, Lo-Fi & Hi-Fi and delightful to interact with. From User-Flows, Lo-Fi &
Wireframes and Prototypes to polished slick end-products, we Hi-Fi Wireframes and Prototypes to polished slick
create digital experiences that stand out. This is done through end-products, we create digital experiences that stand out.
our human-centered UI/UI approach where the main goal is to This is done through our human-centered UI/UI approach where
effectively communicate the functionality of your product to its the main goal is to effectively communicate the functionality
target audience. of your product to its target audience.
</p> </p>
</div> </div>
</SectionIntro> </SectionIntro>
</div> </div>
</div> </div>
</Fade>
</section> </section>
<section className="bg-saburly relative bg-saburly-lighter px-4 py-16"> <section className="bg-saburly relative bg-saburly-lighter px-4 py-16">
<div className="container mx-auto"> <div className="container mx-auto">
<Fade right>
<div className="lg:flex"> <div className="lg:flex">
<div> <div>
<SectionIntro <SectionIntro
@@ -106,20 +114,20 @@ const ServicesPage = () => (
Mobile & desktop apps Mobile & desktop apps
</h3> </h3>
<p className="font-light leading-normal text-lg text-black-light"> <p className="font-light leading-normal text-lg text-black-light">
Building competitive applications these days is challenging, but Building competitive applications these days is challenging,
we believe that we have what it takes for both native languages but we believe that we have what it takes for both native
and hybrid solutions. We love using technologies like React languages and hybrid solutions. We love using technologies
Native and Electron to build cross-platform apps. like React Native and Electron to build cross-platform apps.
</p> </p>
</div> </div>
<div className="my-4"> <div className="my-4">
<h3 className="my-1 text-black text-3xl font-light">DevOps</h3> <h3 className="my-1 text-black text-3xl font-light">DevOps</h3>
<p className="font-light leading-normal text-black-light text-lg"> <p className="font-light leading-normal text-black-light text-lg">
Our DevOps experience comes from working with leading hosting Our DevOps experience comes from working with leading hosting
providers such as AWS and Google Cloud Platform. We offer setups providers such as AWS and Google Cloud Platform. We offer
and automation to support delivery across all our applications. setups and automation to support delivery across all our
We use the most up-to-date tools to enable stable and applications. We use the most up-to-date tools to enable
predictable processes of continuous delivery. stable and predictable processes of continuous delivery.
</p> </p>
</div> </div>
</div> </div>
@@ -129,6 +137,8 @@ const ServicesPage = () => (
alt="Fullstack Web Development Agency" alt="Fullstack Web Development Agency"
/> />
</div> </div>
</Fade>
<Fade bottom>
<div className="p-8 my-4 bg-white border-bottom-saburly"> <div className="p-8 my-4 bg-white border-bottom-saburly">
<h3 className="my-1 text-black text-3xl">Emerging Technologies</h3> <h3 className="my-1 text-black text-3xl">Emerging Technologies</h3>
<p className="font-light leading-normal text-black-light text-lg"> <p className="font-light leading-normal text-black-light text-lg">
@@ -137,17 +147,19 @@ const ServicesPage = () => (
<strong>Machine Learning</strong> and <strong>Blockchain</strong>, <strong>Machine Learning</strong> and <strong>Blockchain</strong>,
pushing the boundaries of user experience across physical and pushing the boundaries of user experience across physical and
digital. Keeping track of emerging technologies is important to us digital. Keeping track of emerging technologies is important to us
so that we can deliver forward-thinking solutions, but we understand so that we can deliver forward-thinking solutions, but we
that technologies as just tools. That's why we're keen on being understand that technologies as just tools. That's why we're keen
framework agnostic and selecting the best tools for your needs. on being framework agnostic and selecting the best tools for your
Below are some of the technologies that we're currently working with needs. Below are some of the technologies that we're currently
on a daily basis. working with on a daily basis.
</p> </p>
<Technologies /> <Technologies />
</div> </div>
</Fade>
</div> </div>
</section> </section>
<Fade>
<div className="px-4 py-16 bg-saburly-fadeout"> <div className="px-4 py-16 bg-saburly-fadeout">
<div className="container mx-auto xl:flex justify-center items-center"> <div className="container mx-auto xl:flex justify-center items-center">
<SectionIntro <SectionIntro
@@ -164,6 +176,7 @@ const ServicesPage = () => (
</div> </div>
<WorkStyle /> <WorkStyle />
</div> </div>
</Fade>
</PageTransition> </PageTransition>
) )

View File

@@ -8119,6 +8119,12 @@ react-responsive-mixin@^0.4.0:
enquire.js "^2.1.1" enquire.js "^2.1.1"
json2mq "^0.2.0" json2mq "^0.2.0"
react-reveal@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/react-reveal/-/react-reveal-1.2.2.tgz#f47fbc44debc4c185ae2163a215a9e822c7adfef"
dependencies:
prop-types "^15.5.10"
react-router-dom@^4.1.1: react-router-dom@^4.1.1:
version "4.3.1" version "4.3.1"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6"