Skip to content

Commit

Permalink
add enterprise
Browse files Browse the repository at this point in the history
  • Loading branch information
KishiTheMechanic committed Oct 29, 2023
1 parent 7b64035 commit 0f07e62
Show file tree
Hide file tree
Showing 9 changed files with 187 additions and 42 deletions.
15 changes: 15 additions & 0 deletions public/locales/en/enterprise.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"EnterpriseSupportFormRow": {
"title": "Start with Solana Validator",
"description": "Initiate a Solana blockchain validator with an unprecedented operational efficiency using solv. It's also ideal for operating multiple validators. Feel free to consult with the solv team.",
"meritTitle1": "Technical Support Chat",
"meritDescription1": "Encountered an error? If an error occurs during operation, you can consult with the solv team. The solv team will assist you extensively while ensuring you grasp the key points concerning Solana validator operation.",
"meritTitle2": "Operate Multiple Validators",
"meritDescription2": "Utilize solv to launch and maintain multiple validators with utmost operational efficiency. Build a routine that enables maintenance at nearly zero cost.",
"meritTitle3": "Considering Implementing solv?",
"meritDescription3": "The solv development team provides full support for implementation. Even if you are already operating a Solana validator, transitioning to solv can reduce validator operational costs and enhance operational efficiency.",
"cardTitle": "Enterprise Support",
"cardButton": "Contact",
"detail": "Details on Discord"
}
}
15 changes: 15 additions & 0 deletions public/locales/ja/enterprise.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"EnterpriseSupportFormRow": {
"title": "Solana バリデーターを始めましょう",
"description": "今までにない運用効率でSolanaブロックチェーンのバリデーターを開始できます。solvは複数バリデーター運用にも最適です。ぜひsolvチームにご相談ください。",
"meritTitle1": "技術サポートチャット",
"meritDescription1": "エラーが出てしまいましたか?もし運用中にエラーが出てしまった場合も、solvチームに相談することができます。Solanaバリデーター運用に関して要点を抑えながらsolvチームが幅広くお手伝いします。",
"meritTitle2": "複数のバリデーターを運用",
"meritDescription2": "solvを活用して、複数のバリデーター運用も最大の運用効率で立ち上げ・メンテナンスすることが可能です。ほぼゼロコストでメンテナンスを可能にするルーティンを構築します。",
"meritTitle3": "solvの導入をお考えですか?",
"meritDescription3": "solv開発チームが導入をフルサポートします。すでにSolanaバリデーターを運用している方でもsolvに移行することで、バリデーター運用コストを削減し、運用効率を高めることができます。",
"cardTitle": "エンタープライズサポート",
"cardButton": "お問い合わせ",
"detail": "詳細はDiscordにて"
}
}
37 changes: 0 additions & 37 deletions src/components/common/atoms/LogoHorizontalLink copy.tsx

This file was deleted.

7 changes: 2 additions & 5 deletions src/components/pages/common/LatitudeCouponRow.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import YouTubeEmbed from '@/components/utils/YouTubeEmbed'
import { useCallback, useMemo, useState } from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'next-i18next'
import clsx from 'clsx'

import Image from 'next/image'
import { Button } from '@/components/common/atoms/Button'
import { copyToClipboard } from '@/utils/userAction'

export default function LatitudeCouponRow() {
const { t, i18n } = useTranslation()
const isJapanese = useMemo(() => i18n.language === 'ja', [i18n])
const { t } = useTranslation()

const [copyText1, setCopyText1] = useState('common:copy')

Expand Down
110 changes: 110 additions & 0 deletions src/components/pages/enterprise/EnterpriseSupportFormRow.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
import {
ChatBubbleLeftEllipsisIcon,
RocketLaunchIcon,
WrenchScrewdriverIcon,
} from '@heroicons/react/24/outline'
import { useTranslation } from 'next-i18next'

import { useMemo } from 'react'
import siteConfig from '@/config/site'
import LogoHorizontalLink from '@/components/common/atoms/LogoHorizontalLink'

const merits = [
{
title: 'enterprise:EnterpriseSupportFormRow.meritTitle1',
description: 'enterprise:EnterpriseSupportFormRow.meritDescription1',
icon: ChatBubbleLeftEllipsisIcon,
},
{
title: 'enterprise:EnterpriseSupportFormRow.meritTitle2',
description: 'enterprise:EnterpriseSupportFormRow.meritDescription2',
icon: WrenchScrewdriverIcon,
},
{
title: 'enterprise:EnterpriseSupportFormRow.meritTitle3',
description: 'enterprise:EnterpriseSupportFormRow.meritDescription3',
icon: RocketLaunchIcon,
},
]

export default function EnterpriseSupportFormRow() {
const { t, i18n } = useTranslation()
const isJapanese = useMemo(() => i18n.language === 'ja', [i18n])

return (
<>
<div className="py-24 sm:py-32">
<div className="mx-auto max-w-7xl px-6 lg:px-8">
<div className="mx-auto max-w-3xl lg:text-center">
<span className="inline-flex items-center gap-x-1.5 px-2 py-1 text-xs font-medium text-gray-900 ring-1 ring-inset ring-gray-200 dark:text-white">
<svg
className="h-1.5 w-1.5 fill-green-500"
viewBox="0 0 6 6"
aria-hidden="true"
>
<circle cx={3} cy={3} r={3} />
</svg>
Support
</span>
<p className="mt-3 text-3xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-4xl">
{t('enterprise:EnterpriseSupportFormRow.title')}
</p>
<p className="mt-6 text-lg leading-8 text-gray-600 dark:text-gray-300">
{t('enterprise:EnterpriseSupportFormRow.description')}
</p>
</div>
<div className="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-4xl">
<div className="grid max-w-xl grid-cols-1 gap-x-16 gap-y-16 lg:max-w-none lg:grid-cols-5 lg:gap-y-16">
<dl className="col-span-1 grid grid-cols-1 gap-y-10 lg:col-span-3">
{merits.map((item) => (
<div key={item.title} className="relative pl-16">
<dt className="text-base font-semibold leading-7 text-gray-900 dark:text-white">
<div className="absolute left-0 top-0 flex h-10 w-10 items-center justify-center bg-gray-50 text-gray-600 ring-1 ring-inset ring-gray-500/10 dark:bg-gray-800">
<item.icon
className="h-6 w-6 text-gray-600 dark:text-gray-200"
aria-hidden="true"
/>
</div>
{t(item.title)}
</dt>
<dd className="mt-2 text-base leading-7 text-gray-600 dark:text-gray-300">
{t(item.description)}
</dd>
</div>
))}
</dl>
<div className="col-span-1 h-full w-full bg-gray-50 p-8 shadow-md ring-1 ring-gray-200 dark:bg-gray-800 dark:ring-gray-600 lg:col-span-2">
<div className="flex h-full w-full flex-col items-center justify-center">
<div className="w-24">
<LogoHorizontalLink />
</div>
<p className="mt-6 text-center font-bold">
{t('enterprise:EnterpriseSupportFormRow.cardTitle')}
</p>
<p className="mt-2 text-center text-sm font-light">
by Epics DAO
</p>
<p className="mt-4 text-center text-sm">
{t('enterprise:EnterpriseSupportFormRow.detail')}
</p>
<a
href={
isJapanese
? siteConfig.enterpriseFormJA
: siteConfig.enterpriseFormEN
}
className="mt-4 bg-gray-900 px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-gray-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-600 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-200"
rel="noreferrer"
target="_blank"
>
{t('enterprise:EnterpriseSupportFormRow.cardButton')}
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</>
)
}
8 changes: 8 additions & 0 deletions src/config/navs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ export const defaultMainNav = [
name: 'common:navs.defaultMainNav.quickstart',
href: '/doc/quickstart/latitude',
},
{
name: 'common:navs.defaultMainNav.enterprise',
href: '/enterprise',
},
{
name: 'common:navs.defaultMainNav.news',
href: '/news/',
Expand All @@ -42,6 +46,10 @@ export const commonFooterNav = [
name: 'common:navs.commonFooterNav.quickstart',
href: '/doc/quickstart/latitude',
},
{
name: 'common:navs.commonFooterNav.enterprise',
href: '/enterprise',
},
{
name: 'common:navs.commonFooterNav.news',
href: '/news/',
Expand Down
2 changes: 2 additions & 0 deletions src/config/site.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ const siteConfig = {
discordInvitationLink: 'https://discord.gg/GmHYfyRamx',
contactFormJA: 'https://forms.gle/A9ysqtqhTgmcukMD9',
contactFormEN: 'https://forms.gle/GbDcSm4bcQanSK3s8',
enterpriseFormJA: 'https://discord.gg/7B9UfM7P6f',
enterpriseFormEN: 'https://discord.gg/vYfqTcH3dt',
downloadPressKitsJA:
'https://storage.googleapis.com/elsoul-holdings/elsoul-labo/PressKits/2023-08-03/ELSOUL%20LABO%20B.V.%20%E3%83%95%E3%82%9A%E3%83%AC%E3%82%B9%E3%82%AD%E3%83%83%E3%83%88.zip',
downloadPressKitsEN:
Expand Down
33 changes: 33 additions & 0 deletions src/pages/[locale]/enterprise.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { ReactElement } from 'react'
import DefaultLayout from '@/layouts/default/DefaultLayout'
import siteConfig from '@/config/site'
import { getStaticPaths, makeStaticProps } from '@/lib/getStatic'
import EnterpriseSupportFormRow from '@/components/pages/enterprise/EnterpriseSupportFormRow'

const seo = {
pathname: '/enterprise',
title: {
ja: 'solv エンタープライズサポート',
en: 'solv Enterprise Support',
},
description: {
ja: siteConfig.descriptionJA,
en: siteConfig.descriptionEN,
},
img: null,
}

const getStaticProps = makeStaticProps(['common', 'enterprise'], seo)
export { getStaticPaths, getStaticProps }

export default function Enterprise() {
return (
<>
<EnterpriseSupportFormRow />
</>
)
}

Enterprise.getLayout = function getLayout(page: ReactElement) {
return <DefaultLayout>{page}</DefaultLayout>
}
2 changes: 2 additions & 0 deletions src/pages/enterprise.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import Redirect from '@/components/routing/Redirect'
export default Redirect

0 comments on commit 0f07e62

Please sign in to comment.