hello: Redesign landing page.

Co-authored-by: Vlad Korobov <terpimost@gmail.com>
Co-authored-by: Alya Abbott <alya@zulip.com>
This commit is contained in:
Aman Agrawal 2024-05-23 08:59:10 +00:00 committed by Tim Abbott
parent 355f05ffbc
commit bb6e6ecaa5
14 changed files with 536 additions and 800 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 503 KiB

After

Width:  |  Height:  |  Size: 447 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 KiB

After

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 485 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -18,58 +18,49 @@
</div> </div>
<div class="screen-1"> <div class="screen-1">
<h1>Organized team&nbsp;chat</h1> <h1>Organized team&nbsp;chat</h1>
<div class='h1-subheader'>
The calmer, more efficient way to work.
</div>
<div class='appshot-1'> <div class='appshot-1'>
<picture> <picture>
<!-- dark theme is only with webp images, since webp support was at the same time or earlier than prefers-color-scheme https://caniuse.com/?search=prefers-color-scheme https://caniuse.com/webp --> <!-- dark theme is only with webp images, since webp support was at the same time or earlier than prefers-color-scheme https://caniuse.com/?search=prefers-color-scheme https://caniuse.com/webp -->
<source class='appshot-1__img' <source class='appshot-1__img'
type="image/webp" type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-1-dark-1x.webp') }}, srcset="{{ static('images/landing-page/hello/generated/screen-1-dark-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-1-dark-2x.webp') }} 2x, {{ static('images/landing-page/hello/generated/screen-1-dark-2x.webp') }} 2x"
{{ static('images/landing-page/hello/generated/screen-1-dark-3x.webp') }} 3x"
media="(min-width: 941px) and (prefers-color-scheme: dark)"/> media="(min-width: 941px) and (prefers-color-scheme: dark)"/>
<source class='appshot-1__img' <source class='appshot-1__img'
type="image/webp" type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-dark-1x.webp') }}, srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-dark-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-1-mobile-dark-2x.webp') }} 2x, {{ static('images/landing-page/hello/generated/screen-1-mobile-dark-2x.webp') }} 2x"
{{ static('images/landing-page/hello/generated/screen-1-mobile-dark-3x.webp') }} 3x"
media="(max-width: 940px) and (prefers-color-scheme: dark)"/> media="(max-width: 940px) and (prefers-color-scheme: dark)"/>
<source class='appshot-1__img' <source width="1095" height="496" class='appshot-1__img'
type="image/webp" type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-1-1x.webp') }}, srcset="{{ static('images/landing-page/hello/generated/screen-1-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-1-2x.webp') }} 2x, {{ static('images/landing-page/hello/generated/screen-1-2x.webp') }} 2x"
{{ static('images/landing-page/hello/generated/screen-1-3x.webp') }} 3x"
media="(min-width: 941px)"/> media="(min-width: 941px)"/>
<source class='appshot-1__img' <source class='appshot-1__img'
type="image/webp" type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-1x.webp') }}, srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-1-mobile-2x.webp') }} 2x, {{ static('images/landing-page/hello/generated/screen-1-mobile-2x.webp') }} 2x"
{{ static('images/landing-page/hello/generated/screen-1-mobile-3x.webp') }} 3x"
media="(max-width: 940px)"/> media="(max-width: 940px)"/>
<source class='appshot-1__img' <source class='appshot-1__img'
srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-1x.jpg') }}, srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-1x.jpg') }},
{{ static('images/landing-page/hello/generated/screen-1-mobile-2x.jpg') }} 2x, {{ static('images/landing-page/hello/generated/screen-1-mobile-2x.jpg') }} 2x"
{{ static('images/landing-page/hello/generated/screen-1-mobile-3x.jpg') }} 3x"
media="(max-width: 940px)"/> media="(max-width: 940px)"/>
<img alt="" class='appshot-1__img' src="{{ static('images/landing-page/hello/generated/screen-1-1x.jpg') }}" <img alt="" width="1095" height="496" class='appshot-1__img' src="{{ static('images/landing-page/hello/generated/screen-1-1x.jpg') }}"
srcset="{{ static('images/landing-page/hello/generated/screen-1-1x.jpg') }}, srcset="{{ static('images/landing-page/hello/generated/screen-1-1x.jpg') }},
{{ static('images/landing-page/hello/generated/screen-1-2x.jpg') }} 2x, {{ static('images/landing-page/hello/generated/screen-1-2x.jpg') }} 2x"/>
{{ static('images/landing-page/hello/generated/screen-1-3x.jpg') }} 3x"/>
</picture> </picture>
<div class="cta-buttons"> <div class="cta-buttons">
<a href="/try-zulip/"> <a href="/try-zulip/">
<i class="background-activity-icon"></i>
See it in use See it in use
<div class="cta-desc">in an open organization</div>
</a> </a>
<a href="/new/"> <a href="/new/">
<i class="visibility-icon"></i>
Create organization Create organization
<div class="cta-desc">in 1 minute for free</div>
</a> </a>
<a href="/request-demo/"> <a href="/request-demo/">
<i class="add-box-icon"></i>
Get a demo Get a demo
<div class="cta-desc">request a call</div>
</a> </a>
</div> </div>
</div> </div>
@ -86,63 +77,40 @@
<div class="screen-2__container"> <div class="screen-2__container">
<div class="screen-2__content"> <div class="screen-2__content">
<h2 class="screen-2__header">What makes Zulip different</h2> <h2 class="screen-2__header">What makes Zulip different</h2>
<div class="screen-2__desc screen-description"> <div class="screen-2__desc">
<p> <p>
People often tell us that traditional team chat tools (Slack, Microsoft Teams, etc.) feel chaotic and stressful. People often tell us that traditional team chat tools (Slack, Microsoft Teams, etc.) feel chaotic and stressful.
</p> </p>
<p> <p>
Zulip is designed around <strong>conversations</strong> that are labeled with topics, to make communication feel <a href="/why-zulip/">organized and efficient</a>. Its easy to get an overview of what conversations are happening, and to read one conversation at a time. Zulip is designed around conversations that are labeled with topics, to make communication <a href="/why-zulip/">organized and efficient</a>. Its easy to get an overview of what conversations are happening, and to read one conversation at a time.
</p> </p>
</div> </div>
<div class="quote"> <a class="quote" href="/case-studies/idrift/">
<div class="quote__text"> <div class="quote__text">
Zulip&rsquo;s <strong>threading model</strong> makes it so&nbsp;much easier to <strong>manage my&nbsp;team</strong>… As&nbsp;a&nbsp;leader, <strong>in&nbsp;just a&nbsp;few minutes</strong> I&nbsp;can get an&nbsp;overview over what&rsquo;s going on and see where my&nbsp;attention is&nbsp;needed. Zulip&rsquo;s <strong>threading model</strong> makes it so&nbsp;much easier to <strong>manage my team</strong>… As a&nbsp;leader, <strong>in&nbsp;just a&nbsp;few minutes</strong> I can get an overview over what&rsquo;s going on and see where my&nbsp;attention is&nbsp;needed.
<div class="quote__text-tail"></div>
</div> </div>
<div class="quote__source"> <div class="quote__source">
<a href="/case-studies/idrift/">Case study with Case study with <strong>Gaute Lund</strong>, <i>co-founder of iDrift AS</i>
<strong>Gaute Lund</strong></a>,
<i>co-founder of iDrift AS</i>
</div> </div>
</div> </a>
</div> </div>
<div class="appshot-2"> <div class="appshot-2">
<picture> <picture>
<!-- dark theme is only with webp images, since webp support was at the same time or earlier than prefers-color-scheme https://caniuse.com/?search=prefers-color-scheme https://caniuse.com/webp --> <!-- dark theme is only with webp images, since webp support was at the same time or earlier than prefers-color-scheme https://caniuse.com/?search=prefers-color-scheme https://caniuse.com/webp -->
<source class='appshot-2__img' <!-- we only have mobile images here -->
type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-2-dark-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-2-dark-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-2-dark-3x.webp') }} 3x"
media="(min-width: 941px) and (prefers-color-scheme: dark)"/>
<source class='appshot-2__img' <source class='appshot-2__img'
type="image/webp" type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-2-mobile-dark-1x.webp') }}, srcset="{{ static('images/landing-page/hello/generated/screen-2-mobile-dark-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-2-mobile-dark-2x.webp') }} 2x, {{ static('images/landing-page/hello/generated/screen-2-mobile-dark-2x.webp') }} 2x"
{{ static('images/landing-page/hello/generated/screen-2-mobile-dark-3x.webp') }} 3x" media="(prefers-color-scheme: dark)"/>
media="(max-width: 940px) and (prefers-color-scheme: dark)"/>
<source class='appshot-2__img'
type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-2-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-2-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-2-3x.webp') }} 3x"
media="(min-width: 941px)"/>
<source class='appshot-2__img' <source class='appshot-2__img'
type="image/webp" type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-2-mobile-1x.webp') }}, srcset="{{ static('images/landing-page/hello/generated/screen-2-mobile-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-2-mobile-2x.webp') }} 2x, {{ static('images/landing-page/hello/generated/screen-2-mobile-2x.webp') }} 2x"/>
{{ static('images/landing-page/hello/generated/screen-2-mobile-3x.webp') }} 3x"
media="(max-width: 940px)"/>
<source class='appshot-2__img'
srcset="{{ static('images/landing-page/hello/generated/screen-2-mobile-1x.jpg') }},
{{ static('images/landing-page/hello/generated/screen-2-mobile-2x.jpg') }} 2x,
{{ static('images/landing-page/hello/generated/screen-2-mobile-3x.jpg') }} 3x"
media="(max-width: 940px)"/>
<img alt="" class='appshot-2__img' <img alt="" class='appshot-2__img'
src="{{ static('images/landing-page/hello/generated/screen-2-1x.jpg') }}" src="{{ static('images/landing-page/hello/generated/screen-2-mobile-1x.jpg') }}"
srcset="{{ static('images/landing-page/hello/generated/screen-2-1x.jpg') }}, srcset="{{ static('images/landing-page/hello/generated/screen-2-mobile-1x.jpg') }},
{{ static('images/landing-page/hello/generated/screen-2-2x.jpg') }} 2x, {{ static('images/landing-page/hello/generated/screen-2-mobile-2x.jpg') }} 2x"/>
{{ static('images/landing-page/hello/generated/screen-2-3x.jpg') }} 3x"/>
</picture> </picture>
</div> </div>
</div> </div>
@ -150,206 +118,134 @@
<div class="screen-3"> <div class="screen-3">
<div class="screen-3__container"> <div class="screen-3__container">
<div class="screen-3__content"> <div class="screen-3__content">
<h2 class="screen-3__header">Collaboration at scale</h2> <h2 class="screen-3__header">Zulip transforms how work gets done.</h2>
<div class="screen-3__desc screen-description"> <div class="screen-3__subtitle">Check out these case studies to see the impact.</div>
Zulip helps teams of&nbsp;all sizes be <em>more productive</em> together, from a&nbsp;few friends hacking on&nbsp;a&nbsp;new idea, to&nbsp;<em>globally distributed</em> organizations with hundreds of&nbsp;people tackling the world&rsquo;s hardest problems. <div class='screen-3__quotes'>
<a class="quote" href="/case-studies/asciidoctor/">
<div class="quote__text">
<h4>Less stress</h4>
With Zulip, I can <strong>manage hundreds of participants</strong> across two communities extremely efficiently, and I dont feel stressed.
</div>
<div class="quote__source">
<strong>Dan Allen</strong>, <i>Asciidoctor open-source project lead</i>
</div>
</a>
<a class="quote" href="/case-studies/rust/">
<div class="quote__text">
<h4>Faster decisions</h4>
Zulip lets us move faster, connect with each other better, and have interactive technical discussions that are <strong>organized, recorded, and welcoming</strong>.
</div>
<div class="quote__source">
<strong>Josh Triplett</strong>, <i>Rust Language team co-lead</i>
</div>
</a>
<a class="quote" href="/case-studies/idrift/">
<div class="quote__text">
<h4>Leaders are informed</h4>
Using Zulip significantly <strong>increases the size of the team</strong> for which a manager can meaningfully know whats going on.
</div>
<div class="quote__source">
<strong>Gaute Lund</strong>, <i>co-founder of iDrift AS</i>
</div>
</a>
<a class="quote" href="/case-studies/tum/">
<div class="quote__text">
<h4>Scalable communication</h4>
Zulip has the <strong>best user experience</strong> of all the chat apps Ive tried… It is the only app that makes hundreds of conversations manageable.
</div>
<div class="quote__source">
<strong>Tobias Lasser</strong>, <i>Technical University of Munich</i>
</div>
</a>
<a class="quote" href="/case-studies/atolio/">
<div class="quote__text">
<h4>Uninterrupted focus</h4>
In Zulip, its super <strong>easy to find</strong> things 24 hours later if you werent online when a discussion happened.
</div>
<div class="quote__source">
<strong>Gareth Watts</strong>, <i>co-founder and CTO of Atolio</i>
</div>
</a>
<a class="quote" href="/case-studies/gut-contact/">
<div class="quote__text">
<h4>Easy to use software</h4>
The software must be as simple as possible. Thats why we love Zulip.
</div>
<div class="quote__source">
<strong>Erik Dittert</strong>, <i>Head of IT at GUT contact</i>
</div>
</a>
</div> </div>
<div class="quote">
<div class="quote__text">
Zulip has the <strong>best user experience</strong> of&nbsp;all the chat apps I&rsquo;ve tried… It&nbsp;is&nbsp;the only app that makes hundreds of&nbsp;conversations <strong>manageable</strong>.
<div class="quote__text-tail"></div>
</div>
<div class="quote__source">
<a href="/case-studies/tum/">Case study with
<strong>Tobias Lasser</strong></a>,
<i>Technical University of
Munich</i>
</div>
</div>
</div>
<div class="appshot-3">
<picture>
<!-- dark theme -->
<source class='appshot-3-1__img'
type="image/webp"
media='(prefers-color-scheme: dark)'
srcset="{{ static('images/landing-page/hello/generated/screen-3-1-dark-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-3-1-dark-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-3-1-dark-3x.webp') }} 3x"/>
<source class='appshot-3-1__img'
type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-3-1-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-3-1-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-3-1-3x.webp') }} 3x"/>
<img alt="" class='appshot-3-1__img'
src="{{ static('images/landing-page/hello/generated/screen-3-1-1x.jpg') }}"
srcset="{{ static('images/landing-page/hello/generated/screen-3-1-1x.jpg') }},
{{ static('images/landing-page/hello/generated/screen-3-1-2x.jpg') }} 2x,
{{ static('images/landing-page/hello/generated/screen-3-1-3x.jpg') }} 3x"/>
</picture>
<picture>
<!-- dark theme -->
<source class='appshot-3-2__img'
type="image/webp"
media='(prefers-color-scheme: dark)'
srcset="{{ static('images/landing-page/hello/generated/screen-3-2-dark-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-3-2-dark-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-3-2-dark-3x.webp') }} 3x"/>
<source class='appshot-3-2__img'
type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-3-2-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-3-2-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-3-2-3x.webp') }} 3x"/>
<img alt="" class='appshot-3-2__img'
src="{{ static('images/landing-page/hello/generated/screen-3-2-1x.jpg') }}"
srcset="{{ static('images/landing-page/hello/generated/screen-3-2-1x.jpg') }},
{{ static('images/landing-page/hello/generated/screen-3-2-2x.jpg') }} 2x,
{{ static('images/landing-page/hello/generated/screen-3-2-3x.jpg') }} 3x"/>
</picture>
</div> </div>
</div> </div>
</div> </div>
<div class="screen-4"> <div class="screen-4">
<div class="screen-4__container"> <div class="screen-4__container">
<div class="screen-4__content"> <div class="screen-4__content">
<h2 class="screen-4__header">Enterprise ready</h2> <img alt="" class='switch-diagram' loading="lazy" width="400" height="358"
<div class="screen-4__desc screen-description"> src="{{ static('images/landing-page/hello/switch-diagram.png') }}"
/>
<div class="screen-4__desc">
<h2 class="screen-4__header">Switching to Zulip isnt hard.</h2>
<p> <p>
Take charge of&nbsp;your mission-critical communications with Zulip&rsquo;s reliable <a href="/for/open-source/">100% free and open-source software</a>, with no&nbsp;vendor lock-in. You can count on&nbsp;our industry-leading <a href="/security/">security practices</a> to&nbsp;keep your data safe. Zulip offers a convenient cloud solution, with <a href="/features/">features</a> to make your users and IT team happy. Import your data and integrations <a href="/help/import-from-slack">from Slack</a> and other products.
</p> </p>
<h3>Your data is yours!</h3>
<p> <p>
When you <a href="/self-hosting/">self-host Zulip</a>, you get all the features of&nbsp;our cloud offering, plus ultimate control and compliance. For ultimate control and <a href="/help/gdpr-compliance">compliance</a>, <a href="/self-hosting/">self-host</a> Zulips 100% <a href="https://github.com/zulip/zulip#readme">open-source</a> software, with easy <a href="https://zulip.readthedocs.io/en/stable/production/install.html">installation</a> and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade.html">upgrades</a>.
</p> </p>
</div> </div>
<div class="screen-4__tags">
<a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">SAML authentication</a>
<a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#synchronizing-data">LDAP sync</a>
<a href="/help/export-your-organization">Import & export tools</a>
<a href="/help/roles-and-permissions">Fine-grained permissions</a>
<a href="https://zulip.readthedocs.io/en/stable/production/settings.html">Extensive configuration</a>
<a href="/integrations/">100s of integrations</a>
<a href="/integrations/doc/slack_incoming">Slack-compatible webhooks</a>
<a href="/help/gdpr-compliance">GDPR compliance</a>
<a href="/help/message-retention-policy">Retention policies</a>
</div>
</div>
<div class="appshot-4">
<picture>
<!-- dark theme -->
<source class='appshot-4__img'
type="image/webp"
media='(prefers-color-scheme: dark)'
srcset="{{ static('images/landing-page/hello/generated/screen-4-dark-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-4-dark-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-4-dark-3x.webp') }} 3x"/>
<source class='appshot-4__img'
type="image/webp"
srcset="{{ static('images/landing-page/hello/generated/screen-4-1x.webp') }},
{{ static('images/landing-page/hello/generated/screen-4-2x.webp') }} 2x,
{{ static('images/landing-page/hello/generated/screen-4-3x.webp') }} 3x"/>
<img alt="" class='appshot-4__img'
src="{{ static('images/landing-page/hello/generated/screen-4-1x.jpg') }}"
srcset="{{ static('images/landing-page/hello/generated/screen-4-1x.jpg') }},
{{ static('images/landing-page/hello/generated/screen-4-2x.jpg') }} 2x,
{{ static('images/landing-page/hello/generated/screen-4-3x.jpg') }} 3x"/>
</picture>
</div> </div>
</div> </div>
<div class="badges">
<a class="badge-getapp" href="https://www.getapp.com/collaboration-software/web-collaboration/category-leaders/">
<img alt="" src="https://capterra.s3.amazonaws.com/assets/images/gdm-badges/ga-category_leaders-2023.png"/>
</a>
<a class="badge-capterra" href="https://www.capterra.com/p/197945/Zulip/">
<img alt="" src="{{ static('images/landing-page/hello/capterra-2023.png') }}"/>
</a>
</div>
</div> </div>
<div class="screen-5"> <div class="screen-5">
<div class="screen-5__container"> <div class="screen-5__container">
<h2 class="screen-5__header"> <h2 class="screen-5__header">Curious to learn more?</h2>
Learn how Zulip can help your organization! <div class="screen-5__subtitle">Dive into our detailed guide for organizations like yours.</div>
</h2> <div class="screen-5__cards">
<div class='screen-5__quotes'> <a href="/for/business/" class="card">
<div class="quote"> <div class="card__text">
<div class="quote__text"> <h4 class="right-arrow-icon">Business</h4>
<div class="quote__text-industry"> Organizations from small businesses to enterprises communicate more efficiently.
<a href="/for/business/">Business</a>
<span class="quote__text-industry-icon quote-business-icon"></span>
</div>
Zulip is everything Slack is, but its <strong>smarter</strong> and more powerful.
<div class="quote__text-tail"></div>
</div> </div>
<div class="quote__source">
<a href="https://www.theregister.com/2021/07/28/zulip_open_source_chat_collaboration_software/">Review in <strong>The Register</strong></a>
</div>
</div>
<div class="quote">
<div class="quote__text">
<div class="quote__text-industry">
<a href="/for/open-source/">Open source</a>
<span class="quote__text-industry-icon quote-open-source-icon"></span>
</div>
Rust development would not be <strong>moving at the pace</strong> that it has been without Zulip.
<div class="quote__text-tail"></div>
</div>
<div class="quote__source">
<a href="https://www.rust-lang.org/governance/teams/lang"><strong>Josh Triplett</strong></a>,<i class="quote__source-title">Rust Language team co-lead</i>
</div>
</div>
<div class="quote">
<div class="quote__text">
<div class="quote__text-industry">
<a href="/for/education/">Education</a>
<span class="quote__text-industry-icon quote-education-icon"></span>
</div>
Zulips topics have made it much easier for me to keep things <strong>coherent</strong>.
<div class="quote__text-tail">
</div>
</div>
<div class="quote__source">
<a href="/case-studies/ucsd/"><strong>Kiran S. Kedlaya</strong></a>,<i class="quote__source-title">Professor of Mathematics at UCSD</i>
</div>
</div>
<div class="quote">
<div class="quote__text">
<div class="quote__text-industry">
<a href="/for/research/">Research</a>
<span class="quote__text-industry-icon quote-research-icon"></span>
</div>
The excellent LaTeX rendering and clever threading make it far <strong>superior to email</strong> and Slack.
<div class="quote__text-tail">
</div>
</div>
<div class="quote__source">
<a href="https://twitter.com/TomGur/status/1294322062274842624"><strong>Tom Gur</strong></a>,<i class="quote__source-title">Associate Professor at Warwick</i>
</div>
</div>
<div class="quote">
<div class="quote__text">
<div class="quote__text-industry">
<a href="/for/events/">Events</a>
<span class="quote__text-industry-icon quote-events-icon"></span>
</div>
With Zulip, questions or ideas were <strong>spread openly</strong>.
<div class="quote__text-tail"></div>
</div>
<div class="quote__source">
<a href="https://perso.univ-rennes1.fr/christophe.ritzenthaler/"><strong>Christophe Ritzenthaler</strong></a>,<i class="quote__source-title">Executive Director of CIMPA</i>
</div>
</div>
<div class="quote">
<div class="quote__text">
<div class="quote__text-industry">
<a href="/for/communities/">Communities</a>
<span class="quote__text-industry-icon quote-communities-icon"></span>
</div>
No other tool has a user experience that <strong>scales</strong> to a community of our size.
<div class="quote__text-tail">
</div>
</div>
<div class="quote__source">
<a href="/case-studies/recurse-center/"><strong>Nick Bergson-Shilcock</strong></a>,<i class="quote__source-title">CEO of Recurse Center</i>
</div>
</div>
</div>
<div class="screen-5__badges">
<a class="screen-5__badge-getapp" href="https://www.getapp.com/collaboration-software/web-collaboration/category-leaders/">
<img alt="" src="https://capterra.s3.amazonaws.com/assets/images/gdm-badges/ga-category_leaders-2023.png"/>
</a> </a>
<a class="screen-5__badge-capterra" href="https://www.capterra.com/p/197945/Zulip/"> <a href="/for/research/" class="card">
<img alt="" src="{{ static('images/landing-page/hello/capterra-2023.png') }}"/> <div class="card__text">
<h4 class="right-arrow-icon">Research</h4>
For your group, lab, department or scientific field.
</div>
</a>
<a href="/for/education/" class="card">
<div class="card__text">
<h4 class="right-arrow-icon">Education</h4>
Communication hub for classes, in-person or online.
</div>
</a>
<a href="/for/open-source/" class="card">
<div class="card__text">
<h4 class="right-arrow-icon">Open-source</h4>
Grow and engage your community.
</div>
</a>
<a href="/for/communities/" class="card">
<div class="card__text">
<h4 class="right-arrow-icon">Non-profits, Governments</h4>
Free or highly-discounted plans are available for most non-business uses.
</div>
</a>
<a href="/for/events/" class="card">
<div class="card__text">
<h4 class="right-arrow-icon">Events and conferences</h4>
For organizers and attendees at your conference, workshop, or hackathon.
</div>
</a> </a>
</div> </div>
</div> </div>

View File

@ -25,6 +25,10 @@ def get_x_size(size: Tuple[float, float], x: int) -> Tuple[int, int]:
def generate_landing_page_images() -> None: def generate_landing_page_images() -> None:
if not os.path.exists(GENERATED_IMAGES_DIR): if not os.path.exists(GENERATED_IMAGES_DIR):
os.mkdir(GENERATED_IMAGES_DIR) os.mkdir(GENERATED_IMAGES_DIR)
else:
# Delete folder contents to avoid stale images between different versions of the script.
for file in os.listdir(GENERATED_IMAGES_DIR):
os.remove(os.path.join(GENERATED_IMAGES_DIR, file))
for image_file_path in glob.glob(f"{ORIGINAL_IMAGES_DIR}/*"): for image_file_path in glob.glob(f"{ORIGINAL_IMAGES_DIR}/*"):
file_name = Path(image_file_path).stem file_name = Path(image_file_path).stem
@ -33,7 +37,6 @@ def generate_landing_page_images() -> None:
size_1x = get_x_size(image.size, 1) size_1x = get_x_size(image.size, 1)
## Generate WEBP images. ## Generate WEBP images.
image.save(f"{GENERATED_IMAGES_DIR}/{file_name}-3x.webp", quality=50)
image_2x = image.resize(size_2x) image_2x = image.resize(size_2x)
image_2x.save(f"{GENERATED_IMAGES_DIR}/{file_name}-2x.webp", quality=50) image_2x.save(f"{GENERATED_IMAGES_DIR}/{file_name}-2x.webp", quality=50)
image_1x = image.resize(size_1x) image_1x = image.resize(size_1x)
@ -42,7 +45,6 @@ def generate_landing_page_images() -> None:
## Generate JPG images. ## Generate JPG images.
# Convert from RGBA to RGB since jpg doesn't support transparency. # Convert from RGBA to RGB since jpg doesn't support transparency.
rgb_image = image.convert("RGB") rgb_image = image.convert("RGB")
rgb_image.save(f"{GENERATED_IMAGES_DIR}/{file_name}-3x.jpg", quality=19, optimize=True)
rgb_image_2x = rgb_image.resize(size_2x) rgb_image_2x = rgb_image.resize(size_2x)
rgb_image_2x.save( rgb_image_2x.save(
f"{GENERATED_IMAGES_DIR}/{file_name}-2x.jpg", quality=50, optimize=True f"{GENERATED_IMAGES_DIR}/{file_name}-2x.jpg", quality=50, optimize=True

File diff suppressed because it is too large Load Diff

View File

@ -5,23 +5,7 @@
before the animation of the logos begins. */ before the animation of the logos begins. */
:root { :root {
--quote-source-icon: url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.08301 17.5H13.083C13.3663 17.5 13.604 17.404 13.796 17.212C13.9873 17.0207 14.083 16.7833 14.083 16.5C14.083 16.2167 13.9873 15.979 13.796 15.787C13.604 15.5957 13.3663 15.5 13.083 15.5H8.08301C7.79967 15.5 7.56201 15.5957 7.37001 15.787C7.17867 15.979 7.08301 16.2167 7.08301 16.5C7.08301 16.7833 7.17867 17.0207 7.37001 17.212C7.56201 17.404 7.79967 17.5 8.08301 17.5ZM8.08301 13.5H16.083C16.3663 13.5 16.6037 13.404 16.795 13.212C16.987 13.0207 17.083 12.7833 17.083 12.5C17.083 12.2167 16.987 11.979 16.795 11.787C16.6037 11.5957 16.3663 11.5 16.083 11.5H8.08301C7.79967 11.5 7.56201 11.5957 7.37001 11.787C7.17867 11.979 7.08301 12.2167 7.08301 12.5C7.08301 12.7833 7.17867 13.0207 7.37001 13.212C7.56201 13.404 7.79967 13.5 8.08301 13.5ZM8.08301 9.5H16.083C16.3663 9.5 16.6037 9.404 16.795 9.212C16.987 9.02067 17.083 8.78333 17.083 8.5C17.083 8.21667 16.987 7.979 16.795 7.787C16.6037 7.59567 16.3663 7.5 16.083 7.5H8.08301C7.79967 7.5 7.56201 7.59567 7.37001 7.787C7.17867 7.979 7.08301 8.21667 7.08301 8.5C7.08301 8.78333 7.17867 9.02067 7.37001 9.212C7.56201 9.404 7.79967 9.5 8.08301 9.5ZM5.08301 21.5C4.53301 21.5 4.06201 21.3043 3.67001 20.913C3.27867 20.521 3.08301 20.05 3.08301 19.5V5.5C3.08301 4.95 3.27867 4.479 3.67001 4.087C4.06201 3.69567 4.53301 3.5 5.08301 3.5H19.083C19.633 3.5 20.104 3.69567 20.496 4.087C20.8873 4.479 21.083 4.95 21.083 5.5V19.5C21.083 20.05 20.8873 20.521 20.496 20.913C20.104 21.3043 19.633 21.5 19.083 21.5H5.08301Z' fill='white'/%3E%3C/svg%3E%0A"); --quote-tail-mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='42' height='37' fill='none' viewBox='0 0 42 37'%3e%3cpath fill='white' d='M0 0h42C-3 .003 7 37 29 37 12 37 0 26 0 0Z'/%3e%3c/svg%3e");
--quote-tail-mask: url("data:image/svg+xml,%3csvg width='44' height='63' viewBox='0 0 44 63' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M43.583 29L0.0830078 0.5C0.0830078 26.5 -3.91699 63 43.583 63C12.083 63 9.08301 29 43.583 29Z' fill='white'/%3e%3c/svg%3e");
}
.background-activity-icon {
background: no-repeat
url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' viewBox='0 0 24 24'%3e%3cpath fill='white' d='m12 14.4 1.22-2.68 2.68-1.22-2.68-1.22L12 6.6l-1.22 2.68L8.1 10.5l2.68 1.22L12 14.4ZM3.5 18c-.4 0-.75-.15-1.05-.45-.3-.3-.45-.65-.45-1.05v-12c0-.4.15-.75.45-1.05.3-.3.65-.45 1.05-.45h17c.4 0 .75.15 1.05.45.3.3.45.65.45 1.05v12c0 .4-.15.75-.45 1.05-.3.3-.65.45-1.05.45h-17Zm-1.75 3a.73.73 0 0 1-.75-.75.73.73 0 0 1 .75-.75h20.5a.73.73 0 0 1 .75.75.73.73 0 0 1-.75.75H1.75Z'/%3e%3c/svg%3e");
}
.visibility-icon {
background: no-repeat
url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' viewBox='0 0 24 24'%3e%3cg clip-path='url(%23a)'%3e%3cpath fill='white' d='M12 4.5C7 4.5 2.73 7.61 1 12a11.83 11.83 0 0 0 22 0c-1.73-4.39-6-7.5-11-7.5ZM12 17a5 5 0 1 1 0-10 5 5 0 0 1 0 10Zm0-8a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='a'%3e%3cpath fill='white' d='M0 0h24v24H0z'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
}
.add-box-icon {
background: no-repeat
url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' viewBox='0 0 24 24'%3e%3cpath fill='white' d='M12 17a.73.73 0 0 0 .75-.75v-3.5h3.5A.73.73 0 0 0 17 12a.73.73 0 0 0-.75-.75h-3.5v-3.5A.73.73 0 0 0 12 7a.73.73 0 0 0-.75.75v3.5h-3.5A.73.73 0 0 0 7 12a.73.73 0 0 0 .75.75h3.5v3.5A.73.73 0 0 0 12 17Zm-7.5 4c-.4 0-.75-.15-1.05-.45-.3-.3-.45-.65-.45-1.05v-15c0-.4.15-.75.45-1.05.3-.3.65-.45 1.05-.45h15c.4 0 .75.15 1.05.45.3.3.45.65.45 1.05v15c0 .4-.15.75-.45 1.05-.3.3-.65.45-1.05.45h-15Z'/%3e%3c/svg%3e");
} }
.client-logos__logo_akamai { .client-logos__logo_akamai {
@ -125,44 +109,9 @@
url("data:image/svg+xml,%3csvg width='77' height='51' viewBox='0 0 77 51' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M14.7596 41.3891C14.7596 43.2858 14.5443 44.8178 14.1137 45.984C13.6831 47.1511 13.071 48.0567 12.2763 48.7018C11.4825 49.3468 10.5301 49.7785 9.41988 49.9968C8.30968 50.2141 7.07446 50.3232 5.71622 50.3232C3.87778 50.3232 2.47093 50.039 1.49565 49.4697C0.519384 48.9004 0.03125 48.218 0.03125 47.4205C0.03125 46.7568 0.303097 46.1973 0.848774 45.7421C1.39445 45.2868 2.12665 45.0597 3.04538 45.0597C3.73491 45.0597 4.28555 45.2445 4.6963 45.6143C5.10804 45.984 5.44834 46.3497 5.71622 46.7096C6.0218 47.1079 6.28075 47.3734 6.49108 47.5061C6.70142 47.6388 6.8929 47.7057 7.06553 47.7057C7.42865 47.7057 7.70645 47.4923 7.89794 47.0656C8.08942 46.6388 8.18467 45.8089 8.18467 44.5759V21.1855L14.7596 19.3929V41.3891ZM24.1234 20.0183V35.0714C24.1234 35.4893 24.2048 35.8827 24.3675 36.2524C24.5302 36.6221 24.7554 36.9407 25.0421 37.2062C25.3299 37.4716 25.6642 37.685 26.0472 37.8463C26.4301 38.0075 26.8419 38.0882 27.2824 38.0882C27.7795 38.0882 28.345 37.8119 29.0335 37.334C30.1239 36.5769 30.7847 36.0567 30.7847 35.4412C30.7847 35.2937 30.7847 20.0183 30.7847 20.0183H37.3308V41.3891H30.7847V39.3969C29.9235 40.1177 29.0047 40.6958 28.0285 41.1324C27.0522 41.569 26.1047 41.7873 25.186 41.7873C24.1145 41.7873 23.1184 41.6113 22.1997 41.2603C21.2809 40.9092 20.4773 40.4304 19.7887 39.8237C19.0992 39.217 18.5585 38.5051 18.1656 37.689C17.7737 36.8738 17.5773 36.0006 17.5773 35.0714V20.0183H24.1234ZM46.5111 41.3891H39.9937V11.4253L46.5111 9.63281V41.3891ZM49.2335 21.1855L55.7797 19.3929V41.3891H49.2335V21.1855ZM69.4573 30.3477C68.8253 30.6142 68.1884 30.922 67.5475 31.273C66.9065 31.624 66.3222 32.0085 65.7963 32.4254C65.2695 32.8423 64.8439 33.2887 64.5184 33.7627C64.193 34.2366 64.0303 34.7302 64.0303 35.2425C64.0303 35.6408 64.0829 36.0252 64.1881 36.3949C64.2932 36.7647 64.442 37.0823 64.6335 37.3478C64.825 37.6132 65.0353 37.8266 65.2655 37.9879C65.4947 38.1491 65.7437 38.2298 66.0116 38.2298C66.5474 38.2298 67.0881 38.0685 67.6338 37.746C68.1794 37.4235 68.7866 37.0164 69.4573 36.5228V30.3477ZM76.0313 41.3891H69.4573V39.6811C69.0932 39.9849 68.739 40.2652 68.3947 40.5208C68.0505 40.7765 67.6625 40.9997 67.2319 41.1895C66.8014 41.3792 66.3182 41.5257 65.7814 41.631C65.2457 41.7352 64.6137 41.7873 63.8874 41.7873C62.8913 41.7873 61.9964 41.6447 61.2027 41.3605C60.408 41.0754 59.7333 40.687 59.1787 40.1934C58.6231 39.7008 58.1975 39.1167 57.9009 38.4431C57.6042 37.7706 57.4554 37.0351 57.4554 36.2386C57.4554 35.4225 57.6131 34.683 57.9296 34.0183C58.2451 33.3546 58.6757 32.7578 59.2214 32.2258C59.7671 31.6948 60.403 31.2209 61.1303 30.803C61.8575 30.3861 62.6383 30.0016 63.4707 29.6506C64.3031 29.2995 65.1693 28.978 66.0692 28.684C66.968 28.39 67.859 28.1098 68.739 27.8443L69.4573 27.6732V25.568C69.4573 24.2022 69.1934 23.2346 68.6676 22.6653C68.1408 22.096 67.4373 21.8118 66.5573 21.8118C65.5235 21.8118 64.8052 22.0586 64.4034 22.5512C64.0015 23.0449 63.8001 23.6417 63.8001 24.3438C63.8001 24.742 63.7575 25.1314 63.6712 25.5109C63.5858 25.8905 63.437 26.2219 63.2267 26.507C63.0163 26.7912 62.7147 27.0193 62.3218 27.1894C61.9299 27.3605 61.4369 27.446 60.8436 27.446C59.9248 27.446 59.1787 27.1845 58.6043 26.6634C58.0298 26.1412 57.7431 25.4824 57.7431 24.685C57.7431 23.9455 57.9961 23.2582 58.5031 22.623C59.0111 21.9868 59.6947 21.4411 60.5568 20.9868C61.418 20.5306 62.4131 20.1707 63.5422 19.9052C64.6712 19.6397 65.8678 19.507 67.1308 19.507C68.6815 19.507 70.0169 19.6446 71.137 19.919C72.2562 20.1943 73.1798 20.5876 73.9071 21.0999C74.6343 21.6122 75.1701 22.2287 75.5143 22.9495C75.8596 23.6702 76.0313 24.4775 76.0313 25.3684V41.3891Z' fill='white'/%3e%3cpath d='M57.2763 13.8954C57.2763 16.329 55.2861 18.3005 52.8315 18.3005C50.376 18.3005 48.3867 16.329 48.3867 13.8954C48.3867 11.4627 50.376 9.49023 52.8315 9.49023C55.2861 9.49023 57.2763 11.4627 57.2763 13.8954Z' fill='white'/%3e%3cpath d='M16.0517 13.8954C16.0517 16.329 14.0615 18.3005 11.6069 18.3005C9.15234 18.3005 7.16211 16.329 7.16211 13.8954C7.16211 11.4627 9.15234 9.49023 11.6069 9.49023C14.0615 9.49023 16.0517 11.4627 16.0517 13.8954Z' fill='white'/%3e%3cpath d='M67.956 13.8954C67.956 16.329 65.9658 18.3005 63.5112 18.3005C61.0566 18.3005 59.0664 16.329 59.0664 13.8954C59.0664 11.4627 61.0566 9.49023 63.5112 9.49023C65.9658 9.49023 67.956 11.4627 67.956 13.8954Z' fill='white'/%3e%3cpath d='M62.6181 4.72837C62.6181 7.16102 60.6279 9.1335 58.1733 9.1335C55.7178 9.1335 53.7285 7.16102 53.7285 4.72837C53.7285 2.29572 55.7178 0.323242 58.1733 0.323242C60.6279 0.323242 62.6181 2.29572 62.6181 4.72837Z' fill='white'/%3e%3c/svg%3e"); url("data:image/svg+xml,%3csvg width='77' height='51' viewBox='0 0 77 51' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M14.7596 41.3891C14.7596 43.2858 14.5443 44.8178 14.1137 45.984C13.6831 47.1511 13.071 48.0567 12.2763 48.7018C11.4825 49.3468 10.5301 49.7785 9.41988 49.9968C8.30968 50.2141 7.07446 50.3232 5.71622 50.3232C3.87778 50.3232 2.47093 50.039 1.49565 49.4697C0.519384 48.9004 0.03125 48.218 0.03125 47.4205C0.03125 46.7568 0.303097 46.1973 0.848774 45.7421C1.39445 45.2868 2.12665 45.0597 3.04538 45.0597C3.73491 45.0597 4.28555 45.2445 4.6963 45.6143C5.10804 45.984 5.44834 46.3497 5.71622 46.7096C6.0218 47.1079 6.28075 47.3734 6.49108 47.5061C6.70142 47.6388 6.8929 47.7057 7.06553 47.7057C7.42865 47.7057 7.70645 47.4923 7.89794 47.0656C8.08942 46.6388 8.18467 45.8089 8.18467 44.5759V21.1855L14.7596 19.3929V41.3891ZM24.1234 20.0183V35.0714C24.1234 35.4893 24.2048 35.8827 24.3675 36.2524C24.5302 36.6221 24.7554 36.9407 25.0421 37.2062C25.3299 37.4716 25.6642 37.685 26.0472 37.8463C26.4301 38.0075 26.8419 38.0882 27.2824 38.0882C27.7795 38.0882 28.345 37.8119 29.0335 37.334C30.1239 36.5769 30.7847 36.0567 30.7847 35.4412C30.7847 35.2937 30.7847 20.0183 30.7847 20.0183H37.3308V41.3891H30.7847V39.3969C29.9235 40.1177 29.0047 40.6958 28.0285 41.1324C27.0522 41.569 26.1047 41.7873 25.186 41.7873C24.1145 41.7873 23.1184 41.6113 22.1997 41.2603C21.2809 40.9092 20.4773 40.4304 19.7887 39.8237C19.0992 39.217 18.5585 38.5051 18.1656 37.689C17.7737 36.8738 17.5773 36.0006 17.5773 35.0714V20.0183H24.1234ZM46.5111 41.3891H39.9937V11.4253L46.5111 9.63281V41.3891ZM49.2335 21.1855L55.7797 19.3929V41.3891H49.2335V21.1855ZM69.4573 30.3477C68.8253 30.6142 68.1884 30.922 67.5475 31.273C66.9065 31.624 66.3222 32.0085 65.7963 32.4254C65.2695 32.8423 64.8439 33.2887 64.5184 33.7627C64.193 34.2366 64.0303 34.7302 64.0303 35.2425C64.0303 35.6408 64.0829 36.0252 64.1881 36.3949C64.2932 36.7647 64.442 37.0823 64.6335 37.3478C64.825 37.6132 65.0353 37.8266 65.2655 37.9879C65.4947 38.1491 65.7437 38.2298 66.0116 38.2298C66.5474 38.2298 67.0881 38.0685 67.6338 37.746C68.1794 37.4235 68.7866 37.0164 69.4573 36.5228V30.3477ZM76.0313 41.3891H69.4573V39.6811C69.0932 39.9849 68.739 40.2652 68.3947 40.5208C68.0505 40.7765 67.6625 40.9997 67.2319 41.1895C66.8014 41.3792 66.3182 41.5257 65.7814 41.631C65.2457 41.7352 64.6137 41.7873 63.8874 41.7873C62.8913 41.7873 61.9964 41.6447 61.2027 41.3605C60.408 41.0754 59.7333 40.687 59.1787 40.1934C58.6231 39.7008 58.1975 39.1167 57.9009 38.4431C57.6042 37.7706 57.4554 37.0351 57.4554 36.2386C57.4554 35.4225 57.6131 34.683 57.9296 34.0183C58.2451 33.3546 58.6757 32.7578 59.2214 32.2258C59.7671 31.6948 60.403 31.2209 61.1303 30.803C61.8575 30.3861 62.6383 30.0016 63.4707 29.6506C64.3031 29.2995 65.1693 28.978 66.0692 28.684C66.968 28.39 67.859 28.1098 68.739 27.8443L69.4573 27.6732V25.568C69.4573 24.2022 69.1934 23.2346 68.6676 22.6653C68.1408 22.096 67.4373 21.8118 66.5573 21.8118C65.5235 21.8118 64.8052 22.0586 64.4034 22.5512C64.0015 23.0449 63.8001 23.6417 63.8001 24.3438C63.8001 24.742 63.7575 25.1314 63.6712 25.5109C63.5858 25.8905 63.437 26.2219 63.2267 26.507C63.0163 26.7912 62.7147 27.0193 62.3218 27.1894C61.9299 27.3605 61.4369 27.446 60.8436 27.446C59.9248 27.446 59.1787 27.1845 58.6043 26.6634C58.0298 26.1412 57.7431 25.4824 57.7431 24.685C57.7431 23.9455 57.9961 23.2582 58.5031 22.623C59.0111 21.9868 59.6947 21.4411 60.5568 20.9868C61.418 20.5306 62.4131 20.1707 63.5422 19.9052C64.6712 19.6397 65.8678 19.507 67.1308 19.507C68.6815 19.507 70.0169 19.6446 71.137 19.919C72.2562 20.1943 73.1798 20.5876 73.9071 21.0999C74.6343 21.6122 75.1701 22.2287 75.5143 22.9495C75.8596 23.6702 76.0313 24.4775 76.0313 25.3684V41.3891Z' fill='white'/%3e%3cpath d='M57.2763 13.8954C57.2763 16.329 55.2861 18.3005 52.8315 18.3005C50.376 18.3005 48.3867 16.329 48.3867 13.8954C48.3867 11.4627 50.376 9.49023 52.8315 9.49023C55.2861 9.49023 57.2763 11.4627 57.2763 13.8954Z' fill='white'/%3e%3cpath d='M16.0517 13.8954C16.0517 16.329 14.0615 18.3005 11.6069 18.3005C9.15234 18.3005 7.16211 16.329 7.16211 13.8954C7.16211 11.4627 9.15234 9.49023 11.6069 9.49023C14.0615 9.49023 16.0517 11.4627 16.0517 13.8954Z' fill='white'/%3e%3cpath d='M67.956 13.8954C67.956 16.329 65.9658 18.3005 63.5112 18.3005C61.0566 18.3005 59.0664 16.329 59.0664 13.8954C59.0664 11.4627 61.0566 9.49023 63.5112 9.49023C65.9658 9.49023 67.956 11.4627 67.956 13.8954Z' fill='white'/%3e%3cpath d='M62.6181 4.72837C62.6181 7.16102 60.6279 9.1335 58.1733 9.1335C55.7178 9.1335 53.7285 7.16102 53.7285 4.72837C53.7285 2.29572 55.7178 0.323242 58.1733 0.323242C60.6279 0.323242 62.6181 2.29572 62.6181 4.72837Z' fill='white'/%3e%3c/svg%3e");
} }
.quote-business-icon { .right-arrow-icon::after {
width: 34px; width: 24px;
height: 34px; height: 24px;
background: no-repeat background: no-repeat
url("data:image/svg+xml, %3Csvg width='34' height='34' viewBox='0 0 34 34' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6 2C3.79086 2 2 3.79086 2 6V28C2 30.2091 3.79086 32 6 32H28C30.2091 32 32 30.2091 32 28V6C32 3.79086 30.2091 2 28 2H6ZM7.50057 27.6858H27.6849V25.3112H8.68788V6.3142H6.31326V26.4985C6.31326 27.1542 6.84484 27.6858 7.50057 27.6858ZM11.0625 20.1535L12.6927 21.7492H12.6939L17.6438 16.9026L20.2891 19.4934C20.743 19.9344 21.4654 19.9344 21.9193 19.4934L27.6849 13.8465L26.0547 12.2508L21.1024 17.0962L18.4583 14.5066C18.0044 14.0655 17.282 14.0655 16.8281 14.5066L11.0625 20.1535Z' fill='hsl(248, 54%, 52%)' /%3E%3C/svg%3E"); url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' viewBox='0 0 24 24'%3e%3cpath fill='white' fill-rule='evenodd' d='M14.2929 5.2929c.3905-.3905 1.0237-.3905 1.4142 0l6 6c.3905.3905.3905 1.0237 0 1.4142l-6 6c-.3905.3905-1.0237.3905-1.4142 0-.3905-.3905-.3905-1.0237 0-1.4142L19.5858 12l-5.2929-5.2929c-.3905-.3905-.3905-1.0237 0-1.4142Z' clip-rule='evenodd'/%3e%3c/svg%3e");
}
.quote-open-source-icon {
width: 34px;
height: 34px;
background: no-repeat
url("data:image/svg+xml,%3Csvg viewBox='0 0 34 34' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17 0C7.61116 0 0 7.61116 0 17C0 26.3888 7.61116 34 17 34C26.3888 34 34 26.3888 34 17C34 7.61116 26.3888 0 17 0ZM19.0457 24.8151V27.5H22.1904C23.2523 27.5 24.1529 27.1269 24.892 26.3808C25.6312 25.6351 26.0007 24.7189 26.0007 23.6322V21.3308C26.0007 20.8194 26.1674 20.3931 26.5007 20.052C26.8341 19.7114 27.2506 19.5411 27.7504 19.5411H28.5V14.4904H27.7504C27.2506 14.4904 26.8341 14.3201 26.5007 13.9795C26.1674 13.6383 26.0007 13.2121 26.0007 12.7007V10.3993C26.0007 9.31253 25.6312 8.39096 24.892 7.63458C24.1529 6.87819 23.2523 6.5 22.1904 6.5H19.0457V9.18493H21.6282C22.1279 9.18493 22.5445 9.35523 22.8778 9.69584C23.2106 10.037 23.377 10.4632 23.377 10.9746V13.276C23.377 14.1285 23.6219 14.8957 24.1117 15.5774C24.6009 16.2591 25.2516 16.6639 26.0637 16.7917V17.0157C25.2721 17.2929 24.6264 17.7724 24.1267 18.4541C23.6269 19.1358 23.377 19.8922 23.377 20.7232V23.0246C23.377 23.5575 23.2106 23.9891 22.8778 24.3195C22.5445 24.6499 22.1279 24.8151 21.6282 24.8151H19.0457ZM9.09222 26.3808C9.82086 27.1269 10.7162 27.5 11.7781 27.5H14.9228V24.8151H12.3718C11.8511 24.8151 11.4293 24.6499 11.1065 24.3195C10.7836 23.9891 10.6222 23.5575 10.6222 23.0246V20.7232C10.6222 19.8922 10.3671 19.1358 9.85684 18.4541C9.34709 17.7724 8.69642 17.2929 7.90481 17.0157V16.7917C8.71691 16.6639 9.37283 16.2591 9.87258 15.5774C10.3723 14.8957 10.6222 14.1285 10.6222 13.276V10.9746C10.6222 10.4632 10.7836 10.037 11.1065 9.69584C11.4293 9.35523 11.8511 9.18493 12.3718 9.18493H14.9228V6.5H11.7781C10.7162 6.5 9.82086 6.87819 9.09222 7.63458C8.36308 8.39096 7.99851 9.31253 7.99851 10.3993V12.7007C7.99851 13.2121 7.82685 13.6383 7.48352 13.9795C7.13969 14.3201 6.72839 14.4904 6.24963 14.4904H5.5V19.5411H6.24963C6.72839 19.5411 7.13969 19.7114 7.48352 20.052C7.82685 20.3931 7.99851 20.8194 7.99851 21.3308V23.6322C7.99851 24.7189 8.36308 25.6351 9.09222 26.3808Z' fill='hsl(248, 54%, 52%)' /%3E%3C/svg%3E");
}
.quote-education-icon {
width: 34px;
height: 34px;
background: no-repeat
url("data:image/svg+xml,%3Csvg viewBox='0 0 34 34' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_690_16408)'%3E%3Cpath d='M5.09691 18.6168V23.0794C5.09691 24.2387 5.73216 25.3186 6.74855 25.8744L14.6891 30.21C15.6419 30.734 16.7854 30.734 17.7382 30.21L25.6788 25.8744C26.6952 25.3186 27.3304 24.2387 27.3304 23.0794V18.6168L17.7382 23.8575C16.7854 24.3816 15.6419 24.3816 14.6891 23.8575L5.09691 18.6168ZM14.6891 3.27568L1.30134 10.581C0.205544 11.1845 0.205544 12.7726 1.30134 13.376L14.6891 20.6813C15.6419 21.2054 16.7854 21.2054 17.7382 20.6813L30.5066 13.7095V23.0953C30.5066 23.9687 31.2213 24.6834 32.0947 24.6834C32.9682 24.6834 33.6828 23.9687 33.6828 23.0953V12.9155C33.6828 12.3279 33.3652 11.8038 32.857 11.518L17.7382 3.27568C16.7854 2.76748 15.6419 2.76748 14.6891 3.27568V3.27568Z' fill='hsl(248, 54%, 52%)' /%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_690_16408'%3E%3Crect width='34' height='34' fill='white' /%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");
}
.quote-research-icon {
width: 34px;
height: 34px;
background: no-repeat
url("data:image/svg+xml, %3Csvg viewBox='0 0 34 35' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M28.9193 26.9631L20.1151 15.1935V8.59738L21.8801 6.31244C22.42 5.60109 21.9424 4.56641 21.0703 4.56641H12.9306C12.0585 4.56641 11.5809 5.60109 12.1207 6.31244L13.8857 8.59738V15.172L5.08155 26.9415C4.00179 28.3642 4.97773 30.4336 6.70119 30.4336H27.2789C29.0231 30.4336 29.999 28.3642 28.9193 26.9631Z' fill='hsl(248, 54%, 52%)' /%3E%3C/svg%3E");
}
.quote-events-icon {
width: 34px;
height: 34px;
background: no-repeat
url("data:image/svg+xml,%3Csvg viewBox='0 0 34 34' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_765_19667)'%3E%3Cpath d='M26.9167 5.66634H25.5V2.83301H22.6667V5.66634H11.3333V2.83301H8.5V5.66634H7.08333C5.51083 5.66634 4.26417 6.94134 4.26417 8.49967L4.25 28.333C4.25 29.8913 5.51083 31.1663 7.08333 31.1663H26.9167C28.475 31.1663 29.75 29.8913 29.75 28.333V8.49967C29.75 6.94134 28.475 5.66634 26.9167 5.66634ZM26.9167 28.333H7.08333V14.1663H26.9167V28.333ZM12.75 19.833H9.91667V16.9997H12.75V19.833ZM18.4167 19.833H15.5833V16.9997H18.4167V19.833ZM24.0833 19.833H21.25V16.9997H24.0833V19.833ZM12.75 25.4997H9.91667V22.6663H12.75V25.4997ZM18.4167 25.4997H15.5833V22.6663H18.4167V25.4997ZM24.0833 25.4997H21.25V22.6663H24.0833V25.4997Z' fill='hsl(248, 54%, 52%)' /%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_765_19667'%3E%3Crect width='34' height='34' fill='white' /%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");
}
.quote-communities-icon {
width: 34px;
height: 34px;
background: no-repeat
url("data:image/svg+xml,%3Csvg viewBox='0 0 40 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 16.25C22.7167 16.25 25.1167 16.9 27.0667 17.75C28.8667 18.55 30 20.35 30 22.3V25H10V22.3167C10 20.35 11.1333 18.55 12.9333 17.7667C14.8833 16.9 17.2833 16.25 20 16.25ZM6.66667 16.6667C8.5 16.6667 10 15.1667 10 13.3333C10 11.5 8.5 10 6.66667 10C4.83333 10 3.33333 11.5 3.33333 13.3333C3.33333 15.1667 4.83333 16.6667 6.66667 16.6667ZM8.55 18.5C7.93333 18.4 7.31667 18.3333 6.66667 18.3333C5.01667 18.3333 3.45 18.6833 2.03333 19.3C0.8 19.8333 0 21.0333 0 22.3833V25H7.5V22.3167C7.5 20.9333 7.88333 19.6333 8.55 18.5ZM33.3333 16.6667C35.1667 16.6667 36.6667 15.1667 36.6667 13.3333C36.6667 11.5 35.1667 10 33.3333 10C31.5 10 30 11.5 30 13.3333C30 15.1667 31.5 16.6667 33.3333 16.6667ZM40 22.3833C40 21.0333 39.2 19.8333 37.9667 19.3C36.55 18.6833 34.9833 18.3333 33.3333 18.3333C32.6833 18.3333 32.0667 18.4 31.45 18.5C32.1167 19.6333 32.5 20.9333 32.5 22.3167V25H40V22.3833ZM20 5C22.7667 5 25 7.23333 25 10C25 12.7667 22.7667 15 20 15C17.2333 15 15 12.7667 15 10C15 7.23333 17.2333 5 20 5Z' fill='hsl(248, 54%, 52%)' /%3E%3C/svg%3E");
} }

View File

@ -254,7 +254,7 @@ class DocPageTest(ZulipTestCase):
# Test the i18n version of one of these pages. # Test the i18n version of one of these pages.
self._test("/en/history/", ["Zulip released as open source!"]) self._test("/en/history/", ["Zulip released as open source!"])
self._test("/values/", ["designed our company"]) self._test("/values/", ["designed our company"])
self._test("/hello/", ["your mission-critical communications with Zulip"]) self._test("/hello/", ["Zulip lets us move faster, connect with each"])
self._test("/communities/", ["Open communities directory"]) self._test("/communities/", ["Open communities directory"])
self._test("/development-community/", ["Zulip development community"]) self._test("/development-community/", ["Zulip development community"])
self._test("/features/", ["Organized team chat solution"]) self._test("/features/", ["Organized team chat solution"])

View File

@ -666,7 +666,7 @@ class HomeTest(ZulipTestCase):
result = self.client_post("/accounts/accept_terms/") result = self.client_post("/accounts/accept_terms/")
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
self.assert_in_response("I agree to the", result) self.assert_in_response("I agree to the", result)
self.assert_in_response("your mission-critical communications with Zulip", result) self.assert_in_response("Zulip lets us move faster, connect with each", result)
def test_accept_terms_of_service(self) -> None: def test_accept_terms_of_service(self) -> None:
self.login("hamlet") self.login("hamlet")
@ -1229,7 +1229,7 @@ class HomeTest(ZulipTestCase):
with patch("zerver.views.home.get_subdomain", return_value=""): with patch("zerver.views.home.get_subdomain", return_value=""):
result = self._get_home_page() result = self._get_home_page()
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
self.assert_in_response("your mission-critical communications with Zulip", result) self.assert_in_response("Zulip lets us move faster, connect with each", result)
with patch("zerver.views.home.get_subdomain", return_value="subdomain"): with patch("zerver.views.home.get_subdomain", return_value="subdomain"):
result = self._get_home_page() result = self._get_home_page()