commit e1ca7467101998d992f28a1cb4a7e5b9277de829 Author: zojgame Date: Wed Mar 6 12:52:30 2024 +0500 first diff --git a/graff.tsx b/graff.tsx new file mode 100644 index 0000000..4d23c0d --- /dev/null +++ b/graff.tsx @@ -0,0 +1,428 @@ +import { + Body, + Button, + Container, + Column, + Head, + Hr, + Html, + Img, + Link, + Preview, + Row, + Section, + Text, +} from "@react-email/components"; +import { Tailwind } from "@react-email/tailwind"; +import * as React from "react"; + +const baseUrl = "https://files.graff.tech/mail2"; + +function GraffEmail() { + return ( + + + Интерактивный инструмент продаж для застройщиков + + + +
+ + + Интерактивный инструмент продаж для застройщиков + + + Помогаем бизнесу эффективно демонстрировать свой объект. +
+ Продавать больше и быстрее. +
+ +
+ +
+ +
+ +
+ + Функциональные
возможности +
+ + Интерактивная презентация увлекает покупателей и предоставляет + актуальную информацию о жилом комплексе. +
+ Отвечает на интересующие вопросы, показывает особенности + и преимущества объекта. +
+ + + + Вся инфраструктура на одном экране + + + + + Виртуальный тур по жилому комплексу + + + + + Конфигуратор интерьера + + + + + Параметрический поиск квартир + + + + + Интеграция с CRM-системой + + + + + Любой рендер за несколько секунд + + + + + Формирование вишлиста + + + + + Отправка коммерческого предложения + + + + + Экскурсия в виртуальной реальности + +
+ +
+ + Эффективность инструмента продаж в цифрах + + + За 10 лет работы с застройщиками, реализовали 21 проект +
и собрали подробную статистику +
+
+ 18% + + увеличения конверсии +
+ из консультации в бронирование +
+ +
+ 12% + + увеличения конверсии +
+ из бронирования в продажу +
+ +
+ x2 + + сокращает время +
+ реализации проекта +
+
+
+ + Graff.estate stream – демонстрация жилого комплекса в браузере + + + Высокий уровень графики и полное погружение покупателя в процесс + выбора квартиры. Местоположение и устройство значения не имеют. +
+ Нужен только интернет. +
+
+ + + +
+ +
+ +
+ + Победители BuildUP 2023 в номинации IT + + + + в 2023 году наш продукт для застройщиков graff.estate был + признан лучшим в категории IT на Акселераторе технологических + стартапов от лидеров в строительстве и девелопменте Build UP от + Фонда «Сколково» + +
+ +
+ + Реализованные проекты + + + + ЖК «Айвазовский City» + + + Россия, Тюмень + + + + МФК «Re:volution towers» + + + Россия, Екатеринбург + +
+ +
+ + Отзывы наших клиентов + + + + ЖК «Авторский квартал Машаров» + + + Россия, Тюмень + + + + + ЖК «Айвазовский City» + + + Россия, Тюмень + +
+ +
+ + География проектов + + + Россия + + ОАЭ, Абу-Даби + +
+ +
+ + Наши клиенты в девелопменте + +
+ + {Array.from({ length: 30 }).map((_, index) => ( + + ))} + +
+
+ +
+ +
+ Контакты + + + info@graff.tech + + + + + 8 800 770 00 76 + + + + + graff.estate + + +
+
+
+ Социальные сети + + + Telegram + + + + + VK + + + + + YouTube + + +
+
+
+
+
+
+ + + + © 2023 GRAFF interactive. +
+ Все права защищены +
+
+ +
+ + ); +} + +export default GraffEmail; diff --git a/notion-magic-link.tsx b/notion-magic-link.tsx new file mode 100644 index 0000000..7386794 --- /dev/null +++ b/notion-magic-link.tsx @@ -0,0 +1,150 @@ +import { + Body, + Container, + Head, + Heading, + Html, + Img, + Link, + Preview, + Text, +} from "@react-email/components"; +import * as React from "react"; + +interface NotionMagicLinkEmailProps { + loginCode?: string; +} + +const baseUrl = process.env.VERCEL_URL + ? `https://${process.env.VERCEL_URL}` + : ""; + +export const NotionMagicLinkEmail = ({ + loginCode, +}: NotionMagicLinkEmailProps) => ( + + + Log in with this magic link + + + Login + + Click here to log in with this magic link + + + Or, copy and paste this temporary login code: + + {loginCode} + + If you didn't try to login, you can safely ignore this email. + + + Hint: You can set a permanent password in Settings & members → My + account. + + Notion's Logo + + + Notion.so + + , the all-in-one-workspace +
+ for your notes, tasks, wikis, and databases. +
+
+ + +); + +NotionMagicLinkEmail.PreviewProps = { + loginCode: "sparo-ndigo-amurt-secan", +} as NotionMagicLinkEmailProps; + +export default NotionMagicLinkEmail; + +const main = { + backgroundColor: "#ffffff", +}; + +const container = { + paddingLeft: "12px", + paddingRight: "12px", + margin: "0 auto", +}; + +const h1 = { + color: "#333", + fontFamily: + "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", + fontSize: "24px", + fontWeight: "bold", + margin: "40px 0", + padding: "0", +}; + +const link = { + color: "#2754C5", + fontFamily: + "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", + fontSize: "14px", + textDecoration: "underline", +}; + +const text = { + color: "#333", + fontFamily: + "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", + fontSize: "14px", + margin: "24px 0", +}; + +const footer = { + color: "#898989", + fontFamily: + "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", + fontSize: "12px", + lineHeight: "22px", + marginTop: "12px", + marginBottom: "24px", +}; + +const code = { + display: "inline-block", + padding: "16px 4.5%", + width: "90.5%", + backgroundColor: "#f4f4f4", + borderRadius: "5px", + border: "1px solid #eee", + color: "#333", +}; diff --git a/plaid-verify-identity.tsx b/plaid-verify-identity.tsx new file mode 100644 index 0000000..877162d --- /dev/null +++ b/plaid-verify-identity.tsx @@ -0,0 +1,158 @@ +import { + Body, + Container, + Head, + Heading, + Html, + Img, + Link, + Section, + Text, +} from "@react-email/components"; +import * as React from "react"; + +interface PlaidVerifyIdentityEmailProps { + validationCode?: string; +} + +const baseUrl = process.env.VERCEL_URL + ? `https://${process.env.VERCEL_URL}` + : ""; + +export const PlaidVerifyIdentityEmail = ({ + validationCode, +}: PlaidVerifyIdentityEmailProps) => ( + + + + + Plaid + Verify Your Identity + + Enter the following code to finish linking Venmo. + +
+ {validationCode} +
+ Not expecting this email? + + Contact{" "} + + login@plaid.com + {" "} + if you did not request this code. + +
+ Securely powered by Plaid. + + +); + +PlaidVerifyIdentityEmail.PreviewProps = { + validationCode: "144833", +} as PlaidVerifyIdentityEmailProps; + +export default PlaidVerifyIdentityEmail; + +const main = { + backgroundColor: "#ffffff", + fontFamily: "HelveticaNeue,Helvetica,Arial,sans-serif", +}; + +const container = { + backgroundColor: "#ffffff", + border: "1px solid #eee", + borderRadius: "5px", + boxShadow: "0 5px 10px rgba(20,50,70,.2)", + marginTop: "20px", + maxWidth: "360px", + margin: "0 auto", + padding: "68px 0 130px", +}; + +const logo = { + margin: "0 auto", +}; + +const tertiary = { + color: "#0a85ea", + fontSize: "11px", + fontWeight: 700, + fontFamily: "HelveticaNeue,Helvetica,Arial,sans-serif", + height: "16px", + letterSpacing: "0", + lineHeight: "16px", + margin: "16px 8px 8px 8px", + textTransform: "uppercase" as const, + textAlign: "center" as const, +}; + +const secondary = { + color: "#000", + display: "inline-block", + fontFamily: "HelveticaNeue-Medium,Helvetica,Arial,sans-serif", + fontSize: "20px", + fontWeight: 500, + lineHeight: "24px", + marginBottom: "0", + marginTop: "0", + textAlign: "center" as const, +}; + +const codeContainer = { + background: "rgba(0,0,0,.05)", + borderRadius: "4px", + margin: "16px auto 14px", + verticalAlign: "middle", + width: "280px", +}; + +const code = { + color: "#000", + display: "inline-block", + fontFamily: "HelveticaNeue-Bold", + fontSize: "32px", + fontWeight: 700, + letterSpacing: "6px", + lineHeight: "40px", + paddingBottom: "8px", + paddingTop: "8px", + margin: "0 auto", + width: "100%", + textAlign: "center" as const, +}; + +const paragraph = { + color: "#444", + fontSize: "15px", + fontFamily: "HelveticaNeue,Helvetica,Arial,sans-serif", + letterSpacing: "0", + lineHeight: "23px", + padding: "0 40px", + margin: "0", + textAlign: "center" as const, +}; + +const link = { + color: "#444", + textDecoration: "underline", +}; + +const footer = { + color: "#000", + fontSize: "12px", + fontWeight: 800, + letterSpacing: "0", + lineHeight: "23px", + margin: "0", + marginTop: "20px", + fontFamily: "HelveticaNeue,Helvetica,Arial,sans-serif", + textAlign: "center" as const, + textTransform: "uppercase" as const, +}; diff --git a/static/images/clients/1.png b/static/images/clients/1.png new file mode 100644 index 0000000..e1d3b9b Binary files /dev/null and b/static/images/clients/1.png differ diff --git a/static/images/clients/10.png b/static/images/clients/10.png new file mode 100644 index 0000000..6ae49e7 Binary files /dev/null and b/static/images/clients/10.png differ diff --git a/static/images/clients/11.png b/static/images/clients/11.png new file mode 100644 index 0000000..7a52a07 Binary files /dev/null and b/static/images/clients/11.png differ diff --git a/static/images/clients/12.png b/static/images/clients/12.png new file mode 100644 index 0000000..cff2364 Binary files /dev/null and b/static/images/clients/12.png differ diff --git a/static/images/clients/13.png b/static/images/clients/13.png new file mode 100644 index 0000000..b7ce385 Binary files /dev/null and b/static/images/clients/13.png differ diff --git a/static/images/clients/14.png b/static/images/clients/14.png new file mode 100644 index 0000000..6d24326 Binary files /dev/null and b/static/images/clients/14.png differ diff --git a/static/images/clients/15.png b/static/images/clients/15.png new file mode 100644 index 0000000..da80e74 Binary files /dev/null and b/static/images/clients/15.png differ diff --git a/static/images/clients/16.png b/static/images/clients/16.png new file mode 100644 index 0000000..a1447d4 Binary files /dev/null and b/static/images/clients/16.png differ diff --git a/static/images/clients/17.png b/static/images/clients/17.png new file mode 100644 index 0000000..9c9b750 Binary files /dev/null and b/static/images/clients/17.png differ diff --git a/static/images/clients/18.png b/static/images/clients/18.png new file mode 100644 index 0000000..8e9ceba Binary files /dev/null and b/static/images/clients/18.png differ diff --git a/static/images/clients/19.png b/static/images/clients/19.png new file mode 100644 index 0000000..58d9ca3 Binary files /dev/null and b/static/images/clients/19.png differ diff --git a/static/images/clients/2.png b/static/images/clients/2.png new file mode 100644 index 0000000..291b70d Binary files /dev/null and b/static/images/clients/2.png differ diff --git a/static/images/clients/20.png b/static/images/clients/20.png new file mode 100644 index 0000000..8b6b904 Binary files /dev/null and b/static/images/clients/20.png differ diff --git a/static/images/clients/21.png b/static/images/clients/21.png new file mode 100644 index 0000000..e36329e Binary files /dev/null and b/static/images/clients/21.png differ diff --git a/static/images/clients/22.png b/static/images/clients/22.png new file mode 100644 index 0000000..534f14b Binary files /dev/null and b/static/images/clients/22.png differ diff --git a/static/images/clients/23.png b/static/images/clients/23.png new file mode 100644 index 0000000..40bfb9c Binary files /dev/null and b/static/images/clients/23.png differ diff --git a/static/images/clients/24.png b/static/images/clients/24.png new file mode 100644 index 0000000..60e7fcc Binary files /dev/null and b/static/images/clients/24.png differ diff --git a/static/images/clients/25.png b/static/images/clients/25.png new file mode 100644 index 0000000..877d821 Binary files /dev/null and b/static/images/clients/25.png differ diff --git a/static/images/clients/26.png b/static/images/clients/26.png new file mode 100644 index 0000000..a99fac6 Binary files /dev/null and b/static/images/clients/26.png differ diff --git a/static/images/clients/27.png b/static/images/clients/27.png new file mode 100644 index 0000000..763b0f4 Binary files /dev/null and b/static/images/clients/27.png differ diff --git a/static/images/clients/28.png b/static/images/clients/28.png new file mode 100644 index 0000000..d09c520 Binary files /dev/null and b/static/images/clients/28.png differ diff --git a/static/images/clients/29.png b/static/images/clients/29.png new file mode 100644 index 0000000..0f70c17 Binary files /dev/null and b/static/images/clients/29.png differ diff --git a/static/images/clients/3.png b/static/images/clients/3.png new file mode 100644 index 0000000..c9da019 Binary files /dev/null and b/static/images/clients/3.png differ diff --git a/static/images/clients/30.png b/static/images/clients/30.png new file mode 100644 index 0000000..4d5937b Binary files /dev/null and b/static/images/clients/30.png differ diff --git a/static/images/clients/4.png b/static/images/clients/4.png new file mode 100644 index 0000000..6d7176b Binary files /dev/null and b/static/images/clients/4.png differ diff --git a/static/images/clients/5.png b/static/images/clients/5.png new file mode 100644 index 0000000..dac1a73 Binary files /dev/null and b/static/images/clients/5.png differ diff --git a/static/images/clients/6.png b/static/images/clients/6.png new file mode 100644 index 0000000..d7f3964 Binary files /dev/null and b/static/images/clients/6.png differ diff --git a/static/images/clients/7.png b/static/images/clients/7.png new file mode 100644 index 0000000..f6bbe5e Binary files /dev/null and b/static/images/clients/7.png differ diff --git a/static/images/clients/8.png b/static/images/clients/8.png new file mode 100644 index 0000000..b28ca65 Binary files /dev/null and b/static/images/clients/8.png differ diff --git a/static/images/clients/9.png b/static/images/clients/9.png new file mode 100644 index 0000000..847b8c2 Binary files /dev/null and b/static/images/clients/9.png differ diff --git a/static/images/clients_table.png b/static/images/clients_table.png new file mode 100644 index 0000000..32a6d92 Binary files /dev/null and b/static/images/clients_table.png differ diff --git a/static/images/contact.png b/static/images/contact.png new file mode 100644 index 0000000..cbf58db Binary files /dev/null and b/static/images/contact.png differ diff --git a/static/images/geography.png b/static/images/geography.png new file mode 100644 index 0000000..6a5542b Binary files /dev/null and b/static/images/geography.png differ diff --git a/static/images/geography/abu_dhabi.png b/static/images/geography/abu_dhabi.png new file mode 100644 index 0000000..40f8847 Binary files /dev/null and b/static/images/geography/abu_dhabi.png differ diff --git a/static/images/geography/russia.png b/static/images/geography/russia.png new file mode 100644 index 0000000..fce17a0 Binary files /dev/null and b/static/images/geography/russia.png differ diff --git a/static/images/possibilities.png b/static/images/possibilities.png new file mode 100644 index 0000000..eb0283c Binary files /dev/null and b/static/images/possibilities.png differ diff --git a/static/images/projects/aivaz.png b/static/images/projects/aivaz.png new file mode 100644 index 0000000..ccaf749 Binary files /dev/null and b/static/images/projects/aivaz.png differ diff --git a/static/images/projects/revolution.png b/static/images/projects/revolution.png new file mode 100644 index 0000000..8241ee9 Binary files /dev/null and b/static/images/projects/revolution.png differ diff --git a/static/images/reviews.png b/static/images/reviews.png new file mode 100644 index 0000000..3ba8357 Binary files /dev/null and b/static/images/reviews.png differ diff --git a/static/images/reviews/1.png b/static/images/reviews/1.png new file mode 100644 index 0000000..bab97d5 Binary files /dev/null and b/static/images/reviews/1.png differ diff --git a/static/images/reviews/2.png b/static/images/reviews/2.png new file mode 100644 index 0000000..e1f1e65 Binary files /dev/null and b/static/images/reviews/2.png differ diff --git a/static/images/winners_buildUp.png b/static/images/winners_buildUp.png new file mode 100644 index 0000000..03df635 Binary files /dev/null and b/static/images/winners_buildUp.png differ diff --git a/static/images/winners_buildUp_image.png b/static/images/winners_buildUp_image.png new file mode 100644 index 0000000..1c6c357 Binary files /dev/null and b/static/images/winners_buildUp_image.png differ diff --git a/static/notion-logo.png b/static/notion-logo.png new file mode 100644 index 0000000..57cddee Binary files /dev/null and b/static/notion-logo.png differ diff --git a/static/plaid-logo.png b/static/plaid-logo.png new file mode 100644 index 0000000..ce9d08c Binary files /dev/null and b/static/plaid-logo.png differ diff --git a/static/plaid.png b/static/plaid.png new file mode 100644 index 0000000..ce9d08c Binary files /dev/null and b/static/plaid.png differ diff --git a/static/stripe-logo.png b/static/stripe-logo.png new file mode 100644 index 0000000..af4c771 Binary files /dev/null and b/static/stripe-logo.png differ diff --git a/static/vercel-arrow.png b/static/vercel-arrow.png new file mode 100644 index 0000000..018f64d Binary files /dev/null and b/static/vercel-arrow.png differ diff --git a/static/vercel-logo.png b/static/vercel-logo.png new file mode 100644 index 0000000..5b97094 Binary files /dev/null and b/static/vercel-logo.png differ diff --git a/static/vercel-team.png b/static/vercel-team.png new file mode 100644 index 0000000..d3de7d9 Binary files /dev/null and b/static/vercel-team.png differ diff --git a/static/vercel-user.png b/static/vercel-user.png new file mode 100644 index 0000000..81beac6 Binary files /dev/null and b/static/vercel-user.png differ diff --git a/stripe-welcome.tsx b/stripe-welcome.tsx new file mode 100644 index 0000000..17a41b8 --- /dev/null +++ b/stripe-welcome.tsx @@ -0,0 +1,152 @@ +import { + Body, + Button, + Container, + Head, + Hr, + Html, + Img, + Link, + Preview, + Section, + Text, +} from "@react-email/components"; +import * as React from "react"; + +const baseUrl = process.env.VERCEL_URL + ? `https://${process.env.VERCEL_URL}` + : ""; + +export const StripeWelcomeEmail = () => ( + + + You're now ready to make live transactions with Stripe! + + +
+ Stripe +
+ + Thanks for submitting your account information. You're now ready to + make live transactions with Stripe! + + + You can view your payments and a variety of other information about + your account right from your dashboard. + + +
+ + If you haven't finished your integration, you might find our{" "} + + docs + {" "} + handy. + + + Once you're ready to start accepting payments, you'll just need to + use your live{" "} + + API keys + {" "} + instead of your test API keys. Your account can simultaneously be + used for both test and live requests, so you can continue testing + while accepting live payments. Check out our{" "} + + tutorial about account basics + + . + + + Finally, we've put together a{" "} + + quick checklist + {" "} + to ensure your website conforms to card network standards. + + + We'll be here to help you with any step along the way. You can find + answers to most questions and get in touch with us on our{" "} + + support site + + . + + — The Stripe team +
+ + Stripe, 354 Oyster Point Blvd, South San Francisco, CA 94080 + +
+
+ + +); + +export default StripeWelcomeEmail; + +const main = { + backgroundColor: "#f6f9fc", + fontFamily: + '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif', +}; + +const container = { + backgroundColor: "#ffffff", + margin: "0 auto", + padding: "20px 0 48px", + marginBottom: "64px", +}; + +const box = { + padding: "0 48px", +}; + +const hr = { + borderColor: "#e6ebf1", + margin: "20px 0", +}; + +const paragraph = { + color: "#525f7f", + + fontSize: "16px", + lineHeight: "24px", + textAlign: "left" as const, +}; + +const anchor = { + color: "#556cd6", +}; + +const button = { + backgroundColor: "#656ee8", + borderRadius: "5px", + color: "#fff", + fontSize: "16px", + fontWeight: "bold", + textDecoration: "none", + textAlign: "center" as const, + display: "block", + width: "100%", + padding: "10px", +}; + +const footer = { + color: "#8898aa", + fontSize: "12px", + lineHeight: "16px", +}; diff --git a/vercel-invite-user.tsx b/vercel-invite-user.tsx new file mode 100644 index 0000000..f30691a --- /dev/null +++ b/vercel-invite-user.tsx @@ -0,0 +1,154 @@ +import { + Body, + Button, + Container, + Column, + Head, + Heading, + Hr, + Html, + Img, + Link, + Preview, + Row, + Section, + Text, +} from "@react-email/components"; +import { Tailwind } from "@react-email/tailwind"; +import * as React from "react"; + +interface VercelInviteUserEmailProps { + username?: string; + userImage?: string; + invitedByUsername?: string; + invitedByEmail?: string; + teamName?: string; + teamImage?: string; + inviteLink?: string; + inviteFromIp?: string; + inviteFromLocation?: string; +} + +const baseUrl = process.env.VERCEL_URL + ? `https://${process.env.VERCEL_URL}` + : ""; + +export const VercelInviteUserEmail = ({ + username, + userImage, + invitedByUsername, + invitedByEmail, + teamName, + teamImage, + inviteLink, + inviteFromIp, + inviteFromLocation, +}: VercelInviteUserEmailProps) => { + const previewText = `Join ${invitedByUsername} on Vercel`; + + return ( + + + {previewText} + + + +
+ Vercel +
+ + Join {teamName} on Vercel + + + Hello {username}, + + + {invitedByUsername} ( + + {invitedByEmail} + + ) has invited you to the {teamName} team on{" "} + Vercel. + +
+ + + + + + invited you to + + + + + +
+
+ +
+ + or copy and paste this URL into your browser:{" "} + + {inviteLink} + + +
+ + This invitation was intended for{" "} + {username}. This invite was + sent from {inviteFromIp}{" "} + located in{" "} + {inviteFromLocation}. If you + were not expecting this invitation, you can ignore this email. If + you are concerned about your account's safety, please reply to + this email to get in touch with us. + +
+ +
+ + ); +}; + +VercelInviteUserEmail.PreviewProps = { + username: "alanturing", + userImage: `${baseUrl}/static/vercel-user.png`, + invitedByUsername: "Alan", + invitedByEmail: "alan.turing@example.com", + teamName: "Enigma", + teamImage: `${baseUrl}/static/vercel-team.png`, + inviteLink: "https://vercel.com/teams/invite/foo", + inviteFromIp: "204.13.186.218", + inviteFromLocation: "São Paulo, Brazil", +} as VercelInviteUserEmailProps; + +export default VercelInviteUserEmail;