Skip to content

Commit

Permalink
feat(landing): pivot to polish landing and new strategy
Browse files Browse the repository at this point in the history
  • Loading branch information
anteqkois committed Jul 23, 2024
1 parent dc201fb commit b7d75a4
Show file tree
Hide file tree
Showing 49 changed files with 944 additions and 365 deletions.
6 changes: 3 additions & 3 deletions apps/web/app/(landing)/components/AutomationWondering.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const points = [

export const AutomationWondering = () => {
return (
<section className="w-full flex pl-[15%] pb-10 xl:pb-32 md:pt-20 2xl:pt-24" id="automatyzacje">
<section className="w-full flex pb-10 xl:pb-16 md:pt-16 2xl:pt-12" id="automatyzacje">
<div className="flex flex-col relative">
<Heading className="pb-10">
Czy automatyzacja jest dla Ciebie ?
Expand All @@ -24,14 +24,14 @@ export const AutomationWondering = () => {
<div className="text-2xl mt-4">W niemal 100% jeśli:</div>
<ul>
{points.map((e) => (
<li key={e} className="flex items-start gap-2 text-xl mt-4">
<li key={e} className="flex items-start gap-2 text-sm md:text-xl mt-4">
<Icons.Power className="text-primary/90 pt-1" size={'md'} />
<span dangerouslySetInnerHTML={{ __html: e }} />
</li>
))}
</ul>
<div
className="w-4/5 h-4/6 inline-block rotate-1 bg-primary/40 absolute bottom-[10%] left-[40%] -translate-x-1/2 blur-[120px] -z-10 shadow"
className="w-4/5 h-4/6 inline-block rotate-1 bg-primary/20 absolute bottom-[10%] left-[40%] -translate-x-1/2 blur-[120px] -z-10 shadow"
style={{ animation: 'shadow-slide infinite 4s linear alternate' }}
/>
<div className="text-1xl mt-12">
Expand Down
75 changes: 56 additions & 19 deletions apps/web/app/(landing)/components/Automations.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Icons } from '@linkerry/ui-components/server'
import { Card, CardDescription, CardTitle, Icons } from '@linkerry/ui-components/server'
import { HTMLAttributes } from 'react'
import { Heading } from './Heading'
import { Underscore } from './Underscore'
Expand Down Expand Up @@ -46,7 +46,6 @@ export interface AutomationsProps extends HTMLAttributes<HTMLElement> {}
// }
// }


// // ---------------------------------
// // Other properties for the demo, not related to
// // the underlined text
Expand Down Expand Up @@ -74,34 +73,72 @@ export interface AutomationsProps extends HTMLAttributes<HTMLElement> {}
// }

const automations = [
'Obsługe klienta',
'Marketing i sprzedaż',
'Administracja',
'Zarządzanie danymi',
'Statystyki, raporty, zamówienia',
'Przekazywanie danych',
'Rektrutacje i HR',
'Oraz wiele więcej...',
{
title: 'Obsługe klienta',
description:
'Zautomatyzujemy procesy związane z obsługą klienta, takie jak odpowiadanie na zapytania, zarządzanie zgłoszeniami i monitorowanie satysfakcji klientów. Dzięki automatyzacji skrócisz czas reakcji i poprawisz jakość obsługi.',
},
{
title: 'Marketing i sprzedaż',
description:
'Automatyzacja kampanii marketingowych i procesów sprzedażowych pozwoli Ci skuteczniej docierać do klientów, personalizować komunikację oraz śledzić efektywność działań. Zwiększ sprzedaż i zaangażowanie klientów dzięki inteligentnym narzędziom.',
},
{
title: 'Administracja',
description:
'Uprościmy zarządzanie codziennymi zadaniami administracyjnymi, takimi jak fakturowanie, korespondencja i zarządzanie dokumentami. Automatyzacja tych procesów pozwoli zaoszczędzić czas i zredukować ryzyko błędów.',
},
{
title: 'Zarządzanie danymi',
description:
'Zautomatyzujemy gromadzenie, przetwarzanie i analizę danych, co pozwoli Ci podejmować lepsze decyzje biznesowe. Dzięki automatyzacji będziesz mieć zawsze aktualne i dokładne informacje na wyciągnięcie ręki.',
},
{
title: 'Statystyki, raporty, zamówienia',
description:
'Automatyzacja generowania raportów i analiz statystycznych ułatwi śledzenie kluczowych wskaźników wydajności. Zarządzanie zamówieniami stanie się prostsze i bardziej efektywne dzięki automatycznym powiadomieniom i aktualizacjom.',
},
{
title: 'Przekazywanie danych',
description:
'Umożliwimy automatyczne przekazywanie danych pomiędzy różnymi systemami i platformami, eliminując potrzebę ręcznego wprowadzania informacji. To rozwiązanie zapewni spójność i integralność danych w Twojej organizacji.',
},
{
title: 'Rektrutacje i HR',
description:
'Automatyzacja procesów rekrutacyjnych i zarządzania zasobami ludzkimi przyspieszy wyszukiwanie kandydatów, monitorowanie aplikacji i zarządzanie dokumentacją pracowniczą. Dzięki temu Twoja firma będzie mogła szybciej reagować na potrzeby kadrowe.',
},
{
title: 'Oraz wiele więcej...',
description:
'Nasze rozwiązania automatyzacyjne obejmują wiele innych obszarów działalności. Skontaktuj się z nami, aby dowiedzieć się, jak możemy zoptymalizować Twoje unikalne procesy i wyzwania biznesowe.',
},
]

export const Automations = () => {
return (
<section className="w-full flex pl-[15%] pb-10 xl:pb-32 md:pt-20 2xl:pt-36" id="automatyzacje">
<section className="w-full flex pb-10 xl:pb-16 md:pt-10 2xl:pt-20" id="automatyzacje">
<div className="flex flex-col relative">
<Heading className="pb-10">
Możesz zautomatyzować
{/* Możemy dla Ciebie zautomatyzować */}
Zautomatyzujemy dla Ciebie
<Underscore />
</Heading>
<ul>
<div className="grid grid-cols-12 gap-4">
{automations.map((e) => (
<li key={e} className="flex items-start gap-2 text-xl mt-4">
<Icons.Power className="text-primary/90 pt-1" size={'md'} />
<span dangerouslySetInnerHTML={{ __html: e }} />
</li>
<Card key={e.title} className="col-span-6 md:col-span-3">
<CardTitle className='px-4 pt-5'>
<p className="flex items-start text-primary-text font-bold gap-2 text-xl lg:text-2xl">
<Icons.Power className="pt-1" size={'md'} />
<span dangerouslySetInnerHTML={{ __html: e.title }} />
</p>
</CardTitle>
<CardDescription className='text-sm md:text-base p-5 text-background-page'>{e.description}</CardDescription>
</Card>
))}
</ul>
</div>
<div
className="w-4/5 h-4/6 inline-block rotate-1 bg-primary/40 absolute bottom-[10%] left-[40%] -translate-x-1/2 blur-[120px] -z-10 shadow"
className="w-full h-4/6 inline-block rotate-1 bg-primary/30 absolute bottom-[10%] left-[45%] -translate-x-1/2 blur-[120px] -z-10 shadow"
style={{ animation: 'shadow-slide infinite 4s linear alternate' }}
/>
</div>
Expand Down
72 changes: 72 additions & 0 deletions apps/web/app/(landing)/components/Companies.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
'use client'

import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@linkerry/ui-components/client'
import { cn } from '@linkerry/ui-components/utils'
import { HTMLAttributes } from 'react'
import { useBodyClass } from '../../../shared/hooks/useBodyClass'
import './connectorLogos.css'

const companyNamesToShow = [
'active-campaign',
'airtable',
'discord',
'excel',
'github',
'google',
'instagram',
'jira',
'linkedIn',
'mailchimp',
'microsoft',
'mysql',
'notion',
'openai',
'sendgrid',
'shopify',
'slack',
'stripe',
'youtube',
'zendesk',
]

export interface CompanyLogoProps extends HTMLAttributes<HTMLElement> {
companyName: string
}

const CompanyLogo = ({ companyName }: CompanyLogoProps) => {
return (
<TooltipProvider delayDuration={0}>
<Tooltip>
<TooltipTrigger>
{/* <Image width={50} height={50} className='bg-slate-50 aspect-square p-1' key={companyName} src={`/images/landing/companies/${companyName}.svg`} alt={companyName} /> */}
<img className="inline-block h-20 object-contain" src={`/images/landing/companies/${companyName}.svg`} alt={companyName} />
</TooltipTrigger>
<TooltipContent>
<p>{companyName}</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
)
}

export interface CompaniesImagesProps extends HTMLAttributes<HTMLElement> {}

export const CompaniesImages = ({ className, ...rest }: CompaniesImagesProps) => {
// the connectors image are overlfow X axies, so after mount, add class to body
useBodyClass('overflow-x-hidden')

return (
<section className={cn('scroll-container', className)} {...rest}>
<div className="carousel-primary bg-purple-200">
{companyNamesToShow.map((companyName) => (
<CompanyLogo key={companyName} companyName={companyName} />
))}
</div>
<div className="carousel-primary carousel-secondary bg-purple-200">
{companyNamesToShow.map((companyName) => (
<CompanyLogo key={companyName} companyName={companyName} />
))}
</div>
</section>
)
}
26 changes: 26 additions & 0 deletions apps/web/app/(landing)/components/CompaniesHeroImage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use client'

import { useTheme } from 'next-themes'
import Image from 'next/image'
import { useEffect, useState } from 'react'

export const CompaniesHeroImage = () => {
const { theme } = useTheme()
const [key, setKey] = useState<string>('default')

useEffect(() => {
setKey(theme ?? '')
}, [theme])

return (
<Image
className="brightness-[0.9] hover:brightness-100 dark:brightness-[0.6] dark:hover:brightness-100"
objectFit="contain"
key={key}
src={theme === 'light' ? '/images/landing/companies/companies-light.svg' : '/images/landing/companies/companies-dark.svg'}
width={2880}
height={1800}
alt="Some of avaible apps"
/>
)
}
66 changes: 11 additions & 55 deletions apps/web/app/(landing)/components/FooterPL.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,71 +5,22 @@ export const FooterPL = () => {
<footer id="footer">
<hr className="w-11/12 mx-auto" />

<section className="container py-20 grid grid-cols-3 md:grid-cols-4 xl:grid-cols-6 gap-x-2 gap-y-2 md:gap-x-12 md:gap-y-8">
<div className="col-span-full xl:col-span-2">
<section className="container py-20 grid grid-cols-2 gap-4 md:grid-cols-3 md:pl-40 md:gap-x-12 md:gap-y-8 xl:pl-60">
<div className="col-span-full md:col-span-1">
<a rel="noreferrer noopener" target="_blank" href="/" className="font-bold text-xl flex gap-2 items-center">
<Icons.Logo />
Linkerry
</a>
<a rel="noreferrer noopener" target="_blank" href="https://legal.maxdata.app/company.pdf" className="mt-3 underline underline-offset-3">
Maxdata App LTD
</a>
</div>

{/* <div className="flex flex-col gap-2">
<h3 className="font-bold text-lg">Follow US</h3>
<div>
<a rel="noreferrer noopener" target="_blank" href="https://x.com/linkerry_ai" className="opacity-60 hover:opacity-100">
Twitter
</a>
</div>
</div> */}

{/* <div className="flex flex-col gap-2">
<h3 className="font-bold text-lg">Platforms</h3>
<div>
<a rel="noreferrer noopener" target="_blank" href="#" className="opacity-60 hover:opacity-100">
Web
</a>
</div>
<div>
<a rel="noreferrer noopener" target="_blank" href="#" className="opacity-60 hover:opacity-100">
Mobile
</a>
</div>
<div>
<a rel="noreferrer noopener" target="_blank" href="#" className="opacity-60 hover:opacity-100">
Desktop
</a>
</div>
</div> */}

<div className="flex flex-col gap-2">
<h3 className="font-bold text-lg">Dokumenty</h3>
{/* <div>
<a rel="noreferrer noopener" href="#connectors" className="opacity-60 hover:opacity-100">
Connectors
</a>
</div>
<div>
<a rel="noreferrer noopener" href="#pricing" className="opacity-60 hover:opacity-100">
Pricing
</a>
</div>

<div>
<a rel="noreferrer noopener" target="_blank" href="/road-map" className="opacity-60 hover:opacity-100">
Road Map
</a>
</div> */}

<div>
<a
rel="noreferrer noopener"
target="_blank"
href="/docs/linkerry_regulamin_treści_cyfrowe.pdf"
className="opacity-60 hover:opacity-100"
>
<a rel="noreferrer noopener" target="_blank" href="/docs/linkerry_regulamin_treści_cyfrowe.pdf" className="opacity-60 hover:opacity-100">
Regulamin
</a>
</div>
Expand Down Expand Up @@ -100,6 +51,11 @@ export const FooterPL = () => {
E-mail
</a>
</div>
<div>
<a rel="noreferrer noopener" target="_blank" href="mailto:[email protected]" className="opacity-60 hover:opacity-100">
CEO
</a>
</div>
</div>
</section>

Expand Down
2 changes: 1 addition & 1 deletion apps/web/app/(landing)/components/Heading.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ export interface HeadingProps extends HTMLAttributes<HTMLElement> {}
export const Heading = ({ children, className }: HeadingProps) => {
return (
// <h2 className={cn('text-center text-4xl lg:text-5xl font-semibold transition-colors text-muted-foreground', className)}>{children}</h2>
<h2 className={cn('text-center text-4xl lg:text-5xl font-semibold transition-colors', className)}>{children}</h2>
<h2 className={cn('text-center text-4xl lg:text-5xl font-extrabold transition-colors', className)}>{children}</h2>
)
}
Loading

0 comments on commit b7d75a4

Please sign in to comment.