Website: remove /imagine pages (#18073)

Changes:
- Removed /imagine pages
This commit is contained in:
Eric 2024-04-04 19:18:38 -05:00 committed by GitHub
parent 505084f790
commit bb932c4659
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 0 additions and 3069 deletions

View file

@ -1,78 +0,0 @@
module.exports = {
friendlyName: 'Deliver launch party signup',
description: 'Delivers a form submission to a Zapier webhook when someone RSVPs to our MDM launch party.',
inputs: {
emailAddress: {
required: true,
type: 'string',
description: 'The email address provided when a user submitted the launch party waitlist form.',
example: 'hermione@hogwarts.edu'
},
firstName: {
required: true,
type: 'string',
description: 'The first name provided when a user submitted the launch party waitlist form',
},
lastName: {
required: true,
type: 'string',
description: 'The last name provided when a user submitted the launch party waitlist form',
},
jobTitle: {
type: 'string',
description: 'The job title provided when a user submitted the launch party waitlist form',
},
phoneNumber: {
type: 'string',
description: 'The phone number provided when a user submitted the launch party waitlist form',
},
},
exits: {
success: {
description: 'The message was sent successfully.'
}
},
fn: async function({emailAddress, firstName, lastName, jobTitle, phoneNumber}) {
if(!sails.config.custom.zapierSandboxWebhookSecret) {
throw new Error('Message not delivered: zapierSandboxWebhookSecret needs to be configured in sails.config.custom.');
}
// Send a POST request to Zapier
await sails.helpers.http.post(
'https://hooks.zapier.com/hooks/catch/3627242/33kdpw0/',
{
'firstName': firstName,
'lastName': lastName,
'emailAddress': emailAddress,
'jobTitle': jobTitle,
'phoneNumber': phoneNumber,
'webhookSecret': sails.config.custom.zapierSandboxWebhookSecret
}
)
.timeout(5000)
.tolerate(['non200Response', 'requestFailed', {name: 'TimeoutError'}], (err)=>{
// Note that Zapier responds with a 2xx status code even if something goes wrong, so just because this message is not logged doesn't mean everything is hunky dory. More info: https://github.com/fleetdm/fleet/pull/6380#issuecomment-1204395762
sails.log.warn(`When a user submitted the launch party waitlist form, an error occurred while sending a request to Zapier. Raw error: ${require('util').inspect(err)}`);
return;
});
}
};

View file

@ -1,33 +0,0 @@
module.exports = {
friendlyName: 'View defcon 31',
description: 'Display "Defcon 31" page.',
exits: {
success: {
viewTemplatePath: 'pages/imagine/defcon-31'
},
badConfig: { responseType: 'badConfig' },
},
fn: async function () {
if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.testimonials) || !sails.config.builtStaticContent.compiledPagePartialsAppPath) {
throw {badConfig: 'builtStaticContent.testimonials'};
}
// Get testimonials for the <scrolalble-tweets> component.
let testimonialsForScrollableTweets = sails.config.builtStaticContent.testimonials;
// Respond with view.
return {
testimonialsForScrollableTweets,
};
}
};

View file

@ -1,33 +0,0 @@
module.exports = {
friendlyName: 'View higher education',
description: 'Display "Higher education" page.',
exits: {
success: {
viewTemplatePath: 'pages/imagine/higher-education'
},
badConfig: { responseType: 'badConfig' },
},
fn: async function () {
if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.testimonials) || !sails.config.builtStaticContent.compiledPagePartialsAppPath) {
throw {badConfig: 'builtStaticContent.testimonials'};
}
// Get testimonials for the <scrolalble-tweets> component.
let testimonialsForScrollableTweets = sails.config.builtStaticContent.testimonials;
// Respond with view.
return {
testimonialsForScrollableTweets,
};
}
};

View file

@ -1,29 +0,0 @@
module.exports = {
friendlyName: 'View jamf alternative',
description: 'Display "Jamf alternative" page.',
exits: {
success: {
viewTemplatePath: 'pages/imagine/jamf-alternative'
}
},
fn: async function () {
// Get testimonials for the <scrolalble-tweets> component.
let testimonialsForScrollableTweets = sails.config.builtStaticContent.testimonials;
// Respond with view.
return {
testimonialsForScrollableTweets,
};
}
};

View file

@ -1,65 +0,0 @@
module.exports = {
friendlyName: 'View launch party',
description: 'Display "Launch party" page.',
inputs: {
showForm: {
type: 'boolean',
description: 'An optional boolean that if provided with other',
defaultsTo: false
},
emailAddress: {
type: 'string',
description: 'If provided, this value will be used to prefill the emailAddress field in the waitlist form'
},
firstName: {
type: 'string',
description: 'If provided, this value will be used to prefill the first name field in the waitlist form'
},
lastName: {
type: 'string',
description: 'If provided, this value will be used to prefill the last name field in the waitlist form'
}
},
exits: {
success: {
viewTemplatePath: 'pages/imagine/launch-party'
}
},
fn: async function ({showForm, emailAddress, firstName, lastName}) {
// If form inputs are provided via query string we'll prefill the inputs in the waitlist form. (e.g., A user is coming to this page from a personalized link in an email)
let formDataToPrefill = {};
if(emailAddress){// Email address will always be provided if a user is coming here from an email link.
formDataToPrefill.emailAddress = emailAddress;
}
// If the first name provided is not '?' or Outreach's first name template, we'll prefill the first name in the waitlist form.
if(firstName && firstName !== '?' && firstName !== '{{first_name}}') {
formDataToPrefill.firstName = firstName;
}
// If the last name provided is not '?' or Outreach's last name template, we'll prefill the last name in the waitlist form.
if(lastName && lastName !== '?' && lastName !== '{{last_name}}') {
formDataToPrefill.lastName = lastName;
}
// Respond with view.
return {
showForm,
formDataToPrefill,
};
}
};

View file

@ -1,34 +0,0 @@
module.exports = {
friendlyName: 'View rapid 7 alternative',
description: 'Display "Rapid 7 alternative" page.',
exits: {
success: {
viewTemplatePath: 'pages/imagine/rapid-7-alternative'
},
badConfig: { responseType: 'badConfig' },
},
fn: async function () {
if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.testimonials) || !sails.config.builtStaticContent.compiledPagePartialsAppPath) {
throw {badConfig: 'builtStaticContent.testimonials'};
}
// Get testimonials for the <scrolalble-tweets> component.
let testimonialsForScrollableTweets = sails.config.builtStaticContent.testimonials;
// Respond with view.
return {
testimonialsForScrollableTweets,
};
}
};

View file

@ -1,33 +0,0 @@
module.exports = {
friendlyName: 'View unused software',
description: 'Display "Unused software" page.',
exits: {
success: {
viewTemplatePath: 'pages/imagine/unused-software'
},
badConfig: { responseType: 'badConfig' },
},
fn: async function () {
if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.testimonials) || !sails.config.builtStaticContent.compiledPagePartialsAppPath) {
throw {badConfig: 'builtStaticContent.testimonials'};
}
// Get testimonials for the <scrolalble-tweets> component.
let testimonialsForScrollableTweets = sails.config.builtStaticContent.testimonials;
// Respond with view.
return {
testimonialsForScrollableTweets,
};
}
};

View file

@ -1,25 +0,0 @@
parasails.registerPage('defcon-31', {
// ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗
// ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
// ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
data: {
//…
},
// ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
// ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣
// ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝
beforeMount: function() {
//…
},
mounted: async function() {
//…
},
// ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
// ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
methods: {
//…
}
});

View file

@ -1,25 +0,0 @@
parasails.registerPage('higher-education', {
// ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗
// ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
// ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
data: {
//…
},
// ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
// ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣
// ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝
beforeMount: function() {
//…
},
mounted: async function() {
//…
},
// ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
// ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
methods: {
//…
}
});

View file

@ -1,25 +0,0 @@
parasails.registerPage('jamf-alternative', {
// ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗
// ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
// ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
data: {
//…
},
// ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
// ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣
// ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝
beforeMount: function() {
//…
},
mounted: async function() {
//…
},
// ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
// ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
methods: {
//…
}
});

View file

@ -1,74 +0,0 @@
parasails.registerPage('launch-party', {
// ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗
// ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
// ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
data: {
formData: { /* … */ },
// For tracking client-side validation errors in our form.
// > Has property set to `true` for each invalid property in `formData`.
formErrors: { /* … */ },
// Form rules
formRules: {
firstName: {required: true },
lastName: {required: true },
emailAddress: {required: true, isEmail: true},
},
cloudError: '',
// Syncing / loading state
syncing: false,
showSignupFormSuccess: false,
// Modal
modal: '',
showAlternateWaitlistText: false,
},
// ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
// ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣
// ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝
beforeMount: function() {
//…
},
mounted: async function() {
if(this.showForm) {
this.modal = 'happy-hour-waitlist';
if(!_.isEmpty(this.formDataToPrefill)){
// If the user came here via a personalized link in an email, we'll prefill the form with the user information (if provided)
this.formData = this.formDataToPrefill;
this.showAlternateWaitlistText = true;
}
}
},
// ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
// ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
methods: {
clickOpenModal: function() {
this.modal = 'happy-hour-waitlist';
},
closeModal: async function () {
this.modal = '';
await this._resetForms();
},
typeClearOneFormError: async function(field) {
if(this.formErrors[field]){
this.formErrors = _.omit(this.formErrors, field);
}
},
submittedForm: function() {
this.showSignupFormSuccess = true;
},
_resetForms: async function() {
this.cloudError = '';
this.formData = {};
this.formErrors = {};
await this.forceRender();
},
}
});

View file

@ -1,25 +0,0 @@
parasails.registerPage('rapid-7-alternative', {
// ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗
// ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
// ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
data: {
//…
},
// ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
// ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣
// ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝
beforeMount: function() {
//…
},
mounted: async function() {
//…
},
// ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
// ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
methods: {
//…
}
});

View file

@ -1,25 +0,0 @@
parasails.registerPage('unused-software', {
// ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗
// ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
// ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
data: {
//…
},
// ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
// ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣
// ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝
beforeMount: function() {
//…
},
mounted: async function() {
//…
},
// ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
// ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
methods: {
//…
}
});

View file

@ -78,11 +78,3 @@
@import 'pages/try-fleet/explore-data.less';
@import 'pages/start.less';
// Imagine = landing pages for Marketing
@import 'pages/imagine/launch-party.less';
@import 'pages/imagine/unused-software.less';
@import 'pages/imagine/higher-education.less';
@import 'pages/imagine/rapid-7-alternative.less';
@import 'pages/imagine/defcon-31.less';
@import 'pages/imagine/jamf-alternative.less';

View file

@ -1,356 +0,0 @@
#defcon-31 {
h1 {
font-weight: 800;
font-size: 64px;
line-height: 76px;
}
h2 {
font-weight: 800;
font-size: 32px;
line-height: 38px;
margin-bottom: 40px;
}
h3 {
font-weight: 800;
font-size: 24px;
line-height: 32px;
}
h4 {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 400;
font-size: 18px;
line-height: 24px;
color: @core-fleet-black-75;
margin-bottom: 4px;
}
p {
font-size: 16px;
line-height: 24px;
}
[purpose='hero'] {
background-image: url('/images/defcon-hero.png');
height: 530px;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
width: 100%;
margin-bottom: 40px;
border-radius: 8px;
}
[purpose='hero-background'] {
background: linear-gradient(180deg, #E8F1F7 3.37%, #FFFFFF 60%);
padding-top: 120px;
padding-bottom: 40px;
}
[purpose='hero-container'] {
max-width: 1200px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 940px;
padding: 0 40px;
h1 {
margin-bottom: 32px;
}
p {
font-size: 18px;
line-height: 27px;
max-width: 640px;
margin: 0 auto 32px;
}
}
[purpose='button-row'] {
a {
font-weight: 700;
font-size: 16px;
line-height: 24px;
}
[purpose='cta-button'] {
cursor: pointer;
margin-right: 32px;
background: @core-vibrant-red;
border-radius: 8px;
padding-left: 32px;
padding-right: 32px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
color: #FFF;
position: relative;
text-decoration: none;
}
[purpose='cta-button']::before {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
opacity: 1;
content: ' ';
position: absolute;
top: 0;
left: -5px;
width: 50%;
height: 100%;
transform: skew(-10deg);
transition: left 0.5s ease-in, opacity 0.50s ease-in, width 0.5s ease-in;
}
[purpose='cta-button']:hover:before {
opacity: 0;
left: 160px;
width: 110%;
}
[purpose='animated-arrow-button-red'] {
display: inline;
padding-right: 40px;
cursor: pointer;
position: relative;
width: fit-content;
min-width: 125px;
font-weight: bold;
user-select: none;
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
color: @core-fleet-black;
text-decoration: none;
&:after {
content: url('/images/arrow-right-red-16x16@2x.png');
transform: scale(0.5);
position: absolute;
top: -5px;
left: 80%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity: 0; */
}
&:hover:after {
left: 82%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity:1; */
}
}
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
padding-bottom: 120px;
}
[purpose='feature'] {
margin-top: 120px;
max-width: 960px;
h3 {
margin-bottom: 24px;
}
div {
max-width: 480px;
}
}
[purpose='feature-image'] {
img {
max-height: 300px;
}
}
[purpose='large-feature-image'] {
img {
max-height: 250px;
}
}
[purpose='checklists'] {
margin-top: 40px;
margin-bottom: 80px;
}
[purpose='checklist'] {
p {
padding-left: 28px;
text-indent: -28px;
}
p::before {
content: ' ';
background-image: url('/images/icon-checkmark-circle.svg');
background-size: 16px 16px;
display: inline-block;
position: relative;
top: 2px;
margin-right: 12px;
width: 16px;
height: 16px;
}
}
[purpose='tweets-container'] {
padding-top: 120px;
padding-bottom: 120px;
}
[purpose='bottom-gradient'] {
background: linear-gradient(180deg, #FFFFFF 0%, #E9F4F4 100%);
}
[purpose='bottom-cloud-city-banner'] {
background: linear-gradient(180deg, #E9F4F4 0%, #FFFFFF 100%);
img {
width: 100%;
}
}
@media (min-width: 1200px) {
[purpose='page-container'] {
padding-left: 120px;
padding-right: 120px;
}
}
@media (max-width: 1200px) {
[purpose='logos'] {
height: 58px;
margin-left: auto;
margin-right: auto;
img {
margin-top: 23.5px;
margin-bottom: 23.5px;
padding-left: 25px;
padding-right: 25px;
}
[purpose='snowflake-logo'] {
height: 21px;
}
[purpose='wayfair-logo'] {
height: 23px;
}
[purpose='uber-logo'] {
height: 20px;
}
[purpose='atlassian-logo'] {
height: 16px;
}
[purpose='segment-logo'] {
height: 22px;
}
}
}
@media (max-width: 991px) {
[purpose='button-row'] {
margin-right: auto;
margin-left: auto;
}
[purpose='hero-background'] {
padding-top: 120px;
padding-bottom: 80px;
padding-left: 0px;
padding-right: 0px;
}
[purpose='logos'] {
height: 58px;
margin-left: 20px;
margin-right: 20px;
img {
margin-top: 17.5px;
margin-bottom: 17.5px;
padding-left: 10px;
padding-right: 10px;
}
}
}
@media (max-width: 768px) {
h1 {
font-size: 48px;
line-height: 54px;
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
}
[purpose='checklists'] {
margin-bottom: 40px;
}
[purpose='feature'] {
margin-top: 80px;
}
[purpose='feature-image'], [purpose='large-feature-image'] {
margin-bottom: 40px;
img {
max-height: 100%;
max-width: 100%;
}
}
[purpose='hero-background'] {
padding-top: 60px;
padding-bottom: 60px;
padding-left: 20px;
padding-right: 20px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 480px;
}
[purpose='tweets-container'] {
padding-top: 80px;
padding-bottom: 80px;
padding-left: 40px;
padding-right: 40px;
}
[purpose='logos'] {
height: auto;
}
}
@media (max-width: 575px) {
[purpose='button-row'] {
max-width: 100%;
[purpose='cta-button'] {
margin-right: 0px;
width: 100%;
margin-bottom: 24px;
}
}
[purpose='feature'] {
margin-top: 60px;
}
[purpose='page-container'] {
padding-left: 20px;
padding-right: 20px;
}
[purpose='tweets-container'] {
padding-left: 20px;
padding-right: 20px;
}
[parasails-component='scrollable-tweets'] [purpose='tweets'] {
margin-top: 40px;
}
}
}

View file

@ -1,347 +0,0 @@
#higher-education {
h1 {
font-weight: 800;
font-size: 64px;
line-height: 76px;
}
h2 {
font-weight: 800;
font-size: 32px;
line-height: 38px;
margin-bottom: 40px;
}
h3 {
font-weight: 800;
font-size: 24px;
line-height: 32px;
}
h4 {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 400;
font-size: 18px;
line-height: 24px;
color: @core-fleet-black-75;
margin-bottom: 4px;
}
p {
font-size: 16px;
line-height: 24px;
}
[purpose='hero-background'] {
background: linear-gradient(180deg, #E8F1F7 3.37%, #FFFFFF 60%);
padding-top: 120px;
padding-bottom: 40px;
}
[purpose='hero-container'] {
max-width: 1200px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 940px;
padding: 0 40px;
h1 {
margin-bottom: 32px;
}
p {
font-size: 18px;
line-height: 27px;
max-width: 640px;
margin: 0 auto 32px;
}
}
[purpose='button-row'] {
a {
font-weight: 700;
font-size: 16px;
line-height: 24px;
}
[purpose='cta-button'] {
cursor: pointer;
margin-right: 32px;
background: @core-vibrant-red;
border-radius: 8px;
padding-left: 32px;
padding-right: 32px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
color: #FFF;
position: relative;
text-decoration: none;
}
[purpose='cta-button']::before {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
opacity: 1;
content: ' ';
position: absolute;
top: 0;
left: -5px;
width: 50%;
height: 100%;
transform: skew(-10deg);
transition: left 0.5s ease-in, opacity 0.50s ease-in, width 0.5s ease-in;
}
[purpose='cta-button']:hover:before {
opacity: 0;
left: 160px;
width: 110%;
}
[purpose='animated-arrow-button-red'] {
display: inline;
padding-right: 40px;
cursor: pointer;
position: relative;
width: fit-content;
min-width: 125px;
font-weight: bold;
user-select: none;
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
color: @core-fleet-black;
text-decoration: none;
&:after {
content: url('/images/arrow-right-red-16x16@2x.png');
transform: scale(0.5);
position: absolute;
top: -5px;
left: 80%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity: 0; */
}
&:hover:after {
left: 82%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity:1; */
}
}
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
padding-bottom: 120px;
}
[purpose='feature'] {
margin-top: 120px;
max-width: 960px;
h3 {
margin-bottom: 24px;
}
div {
max-width: 480px;
}
}
[purpose='feature-image'] {
img {
max-height: 300px;
}
}
[purpose='large-feature-image'] {
img {
max-height: 250px;
}
}
[purpose='checklists'] {
margin-top: 40px;
margin-bottom: 80px;
}
[purpose='checklist'] {
p {
padding-left: 28px;
text-indent: -28px;
}
p::before {
content: ' ';
background-image: url('/images/icon-checkmark-circle.svg');
background-size: 16px 16px;
display: inline-block;
position: relative;
top: 2px;
margin-right: 12px;
width: 16px;
height: 16px;
}
}
[purpose='tweets-container'] {
padding-top: 120px;
padding-bottom: 120px;
}
[purpose='bottom-gradient'] {
background: linear-gradient(180deg, #FFFFFF 0%, #E9F4F4 100%);
}
[purpose='bottom-cloud-city-banner'] {
background: linear-gradient(180deg, #E9F4F4 0%, #FFFFFF 100%);
img {
width: 100%;
}
}
@media (min-width: 1200px) {
[purpose='page-container'] {
padding-left: 120px;
padding-right: 120px;
}
}
@media (max-width: 1200px) {
[purpose='logos'] {
height: 58px;
margin-left: auto;
margin-right: auto;
img {
margin-top: 23.5px;
margin-bottom: 23.5px;
padding-left: 25px;
padding-right: 25px;
}
[purpose='snowflake-logo'] {
height: 21px;
}
[purpose='wayfair-logo'] {
height: 23px;
}
[purpose='uber-logo'] {
height: 20px;
}
[purpose='atlassian-logo'] {
height: 16px;
}
[purpose='segment-logo'] {
height: 22px;
}
}
}
@media (max-width: 991px) {
[purpose='button-row'] {
margin-right: auto;
margin-left: auto;
}
[purpose='hero-background'] {
padding-top: 120px;
padding-bottom: 80px;
padding-left: 0px;
padding-right: 0px;
}
[purpose='logos'] {
height: 58px;
margin-left: 20px;
margin-right: 20px;
img {
margin-top: 17.5px;
margin-bottom: 17.5px;
padding-left: 10px;
padding-right: 10px;
}
}
}
@media (max-width: 768px) {
h1 {
font-size: 48px;
line-height: 54px;
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
}
[purpose='checklists'] {
margin-bottom: 40px;
}
[purpose='feature'] {
margin-top: 80px;
}
[purpose='feature-image'], [purpose='large-feature-image'] {
margin-bottom: 40px;
img {
max-height: 100%;
max-width: 100%;
}
}
[purpose='hero-background'] {
padding-top: 60px;
padding-bottom: 60px;
padding-left: 20px;
padding-right: 20px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 480px;
}
[purpose='tweets-container'] {
padding-top: 80px;
padding-bottom: 80px;
padding-left: 40px;
padding-right: 40px;
}
[purpose='logos'] {
height: auto;
}
}
@media (max-width: 575px) {
[purpose='button-row'] {
max-width: 100%;
[purpose='cta-button'] {
margin-right: 0px;
width: 100%;
margin-bottom: 24px;
}
}
[purpose='feature'] {
margin-top: 60px;
}
[purpose='page-container'] {
padding-left: 20px;
padding-right: 20px;
}
[purpose='tweets-container'] {
padding-left: 20px;
padding-right: 20px;
}
[parasails-component='scrollable-tweets'] [purpose='tweets'] {
margin-top: 40px;
}
}
}

View file

@ -1,347 +0,0 @@
#jamf-alternative {
h1 {
font-weight: 800;
font-size: 64px;
line-height: 76px;
}
h2 {
font-weight: 800;
font-size: 32px;
line-height: 38px;
margin-bottom: 40px;
}
h3 {
font-weight: 800;
font-size: 24px;
line-height: 32px;
}
h4 {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 400;
font-size: 18px;
line-height: 24px;
color: @core-fleet-black-75;
margin-bottom: 4px;
}
p {
font-size: 16px;
line-height: 24px;
}
[purpose='hero-background'] {
background: linear-gradient(180deg, #E8F1F7 3.37%, #FFFFFF 60%);
padding-top: 120px;
padding-bottom: 40px;
}
[purpose='hero-container'] {
max-width: 1200px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 940px;
padding: 0 40px;
h1 {
margin-bottom: 32px;
}
p {
font-size: 18px;
line-height: 27px;
max-width: 640px;
margin: 0 auto 32px;
}
}
[purpose='button-row'] {
a {
font-weight: 700;
font-size: 16px;
line-height: 24px;
}
[purpose='cta-button'] {
cursor: pointer;
margin-right: 32px;
background: @core-vibrant-red;
border-radius: 8px;
padding-left: 32px;
padding-right: 32px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
color: #FFF;
position: relative;
text-decoration: none;
}
[purpose='cta-button']::before {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
opacity: 1;
content: ' ';
position: absolute;
top: 0;
left: -5px;
width: 50%;
height: 100%;
transform: skew(-10deg);
transition: left 0.5s ease-in, opacity 0.50s ease-in, width 0.5s ease-in;
}
[purpose='cta-button']:hover:before {
opacity: 0;
left: 160px;
width: 110%;
}
[purpose='animated-arrow-button-red'] {
display: inline;
padding-right: 40px;
cursor: pointer;
position: relative;
width: fit-content;
min-width: 125px;
font-weight: bold;
user-select: none;
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
color: @core-fleet-black;
text-decoration: none;
&:after {
content: url('/images/arrow-right-red-16x16@2x.png');
transform: scale(0.5);
position: absolute;
top: -5px;
left: 80%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity: 0; */
}
&:hover:after {
left: 82%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity:1; */
}
}
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
padding-bottom: 120px;
}
[purpose='feature'] {
margin-top: 120px;
max-width: 960px;
h3 {
margin-bottom: 24px;
}
div {
max-width: 480px;
}
}
[purpose='feature-image'] {
img {
max-height: 300px;
}
}
[purpose='large-feature-image'] {
img {
max-height: 250px;
}
}
[purpose='checklists'] {
margin-top: 40px;
margin-bottom: 80px;
}
[purpose='checklist'] {
p {
padding-left: 28px;
text-indent: -28px;
}
p::before {
content: ' ';
background-image: url('/images/icon-checkmark-circle.svg');
background-size: 16px 16px;
display: inline-block;
position: relative;
top: 2px;
margin-right: 12px;
width: 16px;
height: 16px;
}
}
[purpose='tweets-container'] {
padding-top: 120px;
padding-bottom: 120px;
}
[purpose='bottom-gradient'] {
background: linear-gradient(180deg, #FFFFFF 0%, #E9F4F4 100%);
}
[purpose='bottom-cloud-city-banner'] {
background: linear-gradient(180deg, #E9F4F4 0%, #FFFFFF 100%);
img {
width: 100%;
}
}
@media (min-width: 1200px) {
[purpose='page-container'] {
padding-left: 120px;
padding-right: 120px;
}
}
@media (max-width: 1200px) {
[purpose='logos'] {
height: 58px;
margin-left: auto;
margin-right: auto;
img {
margin-top: 23.5px;
margin-bottom: 23.5px;
padding-left: 25px;
padding-right: 25px;
}
[purpose='snowflake-logo'] {
height: 21px;
}
[purpose='wayfair-logo'] {
height: 23px;
}
[purpose='uber-logo'] {
height: 20px;
}
[purpose='atlassian-logo'] {
height: 16px;
}
[purpose='segment-logo'] {
height: 22px;
}
}
}
@media (max-width: 991px) {
[purpose='button-row'] {
margin-right: auto;
margin-left: auto;
}
[purpose='hero-background'] {
padding-top: 120px;
padding-bottom: 80px;
padding-left: 0px;
padding-right: 0px;
}
[purpose='logos'] {
height: 58px;
margin-left: 20px;
margin-right: 20px;
img {
margin-top: 17.5px;
margin-bottom: 17.5px;
padding-left: 10px;
padding-right: 10px;
}
}
}
@media (max-width: 768px) {
h1 {
font-size: 48px;
line-height: 54px;
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
}
[purpose='checklists'] {
margin-bottom: 40px;
}
[purpose='feature'] {
margin-top: 80px;
}
[purpose='feature-image'], [purpose='large-feature-image'] {
margin-bottom: 40px;
img {
max-height: 100%;
max-width: 100%;
}
}
[purpose='hero-background'] {
padding-top: 60px;
padding-bottom: 60px;
padding-left: 20px;
padding-right: 20px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 480px;
}
[purpose='tweets-container'] {
padding-top: 80px;
padding-bottom: 80px;
padding-left: 40px;
padding-right: 40px;
}
[purpose='logos'] {
height: auto;
}
}
@media (max-width: 575px) {
[purpose='button-row'] {
max-width: 100%;
[purpose='cta-button'] {
margin-right: 0px;
width: 100%;
margin-bottom: 24px;
}
}
[purpose='feature'] {
margin-top: 60px;
}
[purpose='page-container'] {
padding-left: 20px;
padding-right: 20px;
}
[purpose='tweets-container'] {
padding-left: 20px;
padding-right: 20px;
}
[parasails-component='scrollable-tweets'] [purpose='tweets'] {
margin-top: 40px;
}
}
}

View file

@ -1,192 +0,0 @@
#launch-party {
padding-top: 60px;
padding-left: 40px;
padding-right: 40px;
max-width: 760px;
margin-left: auto;
margin-right: auto;
overflow-x: hidden;
h1 {
font-weight: 800;
font-size: 36px;
line-height: 40px;
margin-bottom: 12px;
}
h2 {
font-weight: 800;
font-size: 24px;
line-height: 34px;
}
p {
margin-bottom: 0;
font-size: 16px;
line-height: 24px;
color: #515774;
}
[purpose='map-container'] {
width: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
align-content: center;
align-items: center;
border-radius: 8px;
}
[purpose='meet-the-team'] {
width: 100%;
img {
width: 210px;
}
}
[purpose='hero-text'] {
max-width: 420px;
p {
font-size: 18px;
}
}
[purpose='hero'] {
background-image: url('/images/rsa-map-hero-680x480@2x.png');
height: 530px;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
width: 100%;
margin-bottom: 40px;
border-radius: 8px;
}
[purpose='rsa-cta'] {
background: #F9FAFC;
padding: 16px 24px;
width: 100%;
border: 1px solid #E2E4EA;
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: 40px;
text-align: center;
p {
font-weight: 700;
color: #515774;
}
}
[purpose='cta-button'] {
cursor: pointer;
font-size: 18px;
font-weight: 700;
margin-right: 32px;
background: @core-vibrant-red;
border-radius: 8px;
padding-left: 32px;
padding-right: 32px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
color: #FFF;
position: relative;
max-width: 420px;
width: 100%;
}
[purpose='cta-button']::before {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
opacity: 1;
content: ' ';
position: absolute;
top: 0;
left: -5px;
width: 60%;
height: 100%;
transform: skew(-10deg);
transition: left 0.5s ease-in, opacity 0.50s ease-in, width 0.5s ease-in;
}
[purpose='cta-button']:hover:before {
opacity: 0;
left: 160px;
width: 110%;
}
[purpose='section'] {
margin-bottom: 40px;
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
[purpose='checklist'] {
margin-bottom: 40px;
p {
padding-left: 28px;
text-indent: -28px;
margin-bottom: 16px;
}
p::before {
content: ' ';
background-image: url('/images/icon-checkmark-circle.svg');
background-size: 16px 16px;
display: inline-block;
position: relative;
top: 2px;
margin-right: 12px;
width: 16px;
height: 16px;
}
}
[purpose='modal-dialog'] {
padding-left: 15px;
padding-right: 15px;
max-width: 100%;
}
[purpose='modal-content'] {
margin-top: 40px;
padding-top: 80px;
padding-left: 80px;
padding-right: 80px;
padding-bottom: 120px;
margin-right: auto;
margin-left: auto;
max-width: 680px;
width: 100%;
}
[purpose='modal-form'] {
input {
border-radius: 6px;
height: 48px;
}
label {
font-weight: 700;
}
width: 100%;
}
[purpose='submit-button'] {
border-radius: 8px;
}
@media(max-width: 756px) {
[purpose='modal-content'] {
padding: 40px;
}
}
@media(max-width: 575px) {
padding-left: 20px;
padding-right: 20px;
[purpose='hero'] {
background-image: url('/images/rsa-map-hero-small-335x480@2x.png');
background-size: cover;
}
}
@media(max-width: 459px) {
[purpose='meet-the-team'] {
img:first-of-type {
margin-top: 24px;
}
}
}
@media(max-width: 375px) {
[purpose='modal-content'] {
padding: 40px 20px 40px 20px;
}
h1 {
font-size: 28px;
}
}
}

View file

@ -1,347 +0,0 @@
#rapid-7-alternative {
h1 {
font-weight: 800;
font-size: 64px;
line-height: 76px;
}
h2 {
font-weight: 800;
font-size: 32px;
line-height: 38px;
margin-bottom: 40px;
}
h3 {
font-weight: 800;
font-size: 24px;
line-height: 32px;
}
h4 {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 400;
font-size: 18px;
line-height: 24px;
color: @core-fleet-black-75;
margin-bottom: 4px;
}
p {
font-size: 16px;
line-height: 24px;
}
[purpose='hero-background'] {
background: linear-gradient(180deg, #E8F1F7 3.37%, #FFFFFF 60%);
padding-top: 120px;
padding-bottom: 40px;
}
[purpose='hero-container'] {
max-width: 1200px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 940px;
padding: 0 40px;
h1 {
margin-bottom: 32px;
}
p {
font-size: 18px;
line-height: 27px;
max-width: 640px;
margin: 0 auto 32px;
}
}
[purpose='button-row'] {
a {
font-weight: 700;
font-size: 16px;
line-height: 24px;
}
[purpose='cta-button'] {
cursor: pointer;
margin-right: 32px;
background: @core-vibrant-red;
border-radius: 8px;
padding-left: 32px;
padding-right: 32px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
color: #FFF;
position: relative;
text-decoration: none;
}
[purpose='cta-button']::before {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
opacity: 1;
content: ' ';
position: absolute;
top: 0;
left: -5px;
width: 50%;
height: 100%;
transform: skew(-10deg);
transition: left 0.5s ease-in, opacity 0.50s ease-in, width 0.5s ease-in;
}
[purpose='cta-button']:hover:before {
opacity: 0;
left: 160px;
width: 110%;
}
[purpose='animated-arrow-button-red'] {
display: inline;
padding-right: 40px;
cursor: pointer;
position: relative;
width: fit-content;
min-width: 125px;
font-weight: bold;
user-select: none;
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
color: @core-fleet-black;
text-decoration: none;
&:after {
content: url('/images/arrow-right-red-16x16@2x.png');
transform: scale(0.5);
position: absolute;
top: -5px;
left: 80%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity: 0; */
}
&:hover:after {
left: 82%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity:1; */
}
}
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
padding-bottom: 120px;
}
[purpose='feature'] {
margin-top: 120px;
max-width: 960px;
h3 {
margin-bottom: 24px;
}
div {
max-width: 480px;
}
}
[purpose='feature-image'] {
img {
max-height: 300px;
}
}
[purpose='large-feature-image'] {
img {
max-height: 250px;
}
}
[purpose='checklists'] {
margin-top: 40px;
margin-bottom: 80px;
}
[purpose='checklist'] {
p {
padding-left: 28px;
text-indent: -28px;
}
p::before {
content: ' ';
background-image: url('/images/icon-checkmark-circle.svg');
background-size: 16px 16px;
display: inline-block;
position: relative;
top: 2px;
margin-right: 12px;
width: 16px;
height: 16px;
}
}
[purpose='tweets-container'] {
padding-top: 120px;
padding-bottom: 120px;
}
[purpose='bottom-gradient'] {
background: linear-gradient(180deg, #FFFFFF 0%, #E9F4F4 100%);
}
[purpose='bottom-cloud-city-banner'] {
background: linear-gradient(180deg, #E9F4F4 0%, #FFFFFF 100%);
img {
width: 100%;
}
}
@media (min-width: 1200px) {
[purpose='page-container'] {
padding-left: 120px;
padding-right: 120px;
}
}
@media (max-width: 1200px) {
[purpose='logos'] {
height: 58px;
margin-left: auto;
margin-right: auto;
img {
margin-top: 23.5px;
margin-bottom: 23.5px;
padding-left: 25px;
padding-right: 25px;
}
[purpose='snowflake-logo'] {
height: 21px;
}
[purpose='wayfair-logo'] {
height: 23px;
}
[purpose='uber-logo'] {
height: 20px;
}
[purpose='atlassian-logo'] {
height: 16px;
}
[purpose='segment-logo'] {
height: 22px;
}
}
}
@media (max-width: 991px) {
[purpose='button-row'] {
margin-right: auto;
margin-left: auto;
}
[purpose='hero-background'] {
padding-top: 120px;
padding-bottom: 80px;
padding-left: 0px;
padding-right: 0px;
}
[purpose='logos'] {
height: 58px;
margin-left: 20px;
margin-right: 20px;
img {
margin-top: 17.5px;
margin-bottom: 17.5px;
padding-left: 10px;
padding-right: 10px;
}
}
}
@media (max-width: 768px) {
h1 {
font-size: 48px;
line-height: 54px;
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
}
[purpose='checklists'] {
margin-bottom: 40px;
}
[purpose='feature'] {
margin-top: 80px;
}
[purpose='feature-image'], [purpose='large-feature-image'] {
margin-bottom: 40px;
img {
max-height: 100%;
max-width: 100%;
}
}
[purpose='hero-background'] {
padding-top: 60px;
padding-bottom: 60px;
padding-left: 20px;
padding-right: 20px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 480px;
}
[purpose='tweets-container'] {
padding-top: 80px;
padding-bottom: 80px;
padding-left: 40px;
padding-right: 40px;
}
[purpose='logos'] {
height: auto;
}
}
@media (max-width: 575px) {
[purpose='button-row'] {
max-width: 100%;
[purpose='cta-button'] {
margin-right: 0px;
width: 100%;
margin-bottom: 24px;
}
}
[purpose='feature'] {
margin-top: 60px;
}
[purpose='page-container'] {
padding-left: 20px;
padding-right: 20px;
}
[purpose='tweets-container'] {
padding-left: 20px;
padding-right: 20px;
}
[parasails-component='scrollable-tweets'] [purpose='tweets'] {
margin-top: 40px;
}
}
}

View file

@ -1,367 +0,0 @@
#unused-software {
h1 {
font-weight: 800;
font-size: 64px;
line-height: 76px;
}
h2 {
font-weight: 800;
font-size: 32px;
line-height: 38px;
margin-bottom: 40px;
}
h3 {
font-weight: 800;
font-size: 24px;
line-height: 32px;
}
h4 {
color: @core-fleet-black-75;
font-weight: 500;
font-size: 18px;
line-height: 24px;
/* Text gradient */
background: linear-gradient(90deg, #FF5C83 0%, #6A67FE 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-fill-color: transparent;
display: inline-block;
/* End text gradient */
}
p {
font-size: 16px;
line-height: 24px;
}
[purpose='hero-background'] {
background: linear-gradient(180deg, #E8F1F7 3.37%, #FFFFFF 60%);
padding-top: 120px;
padding-bottom: 40px;
}
[purpose='hero-container'] {
max-width: 1200px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 940px;
padding: 0 40px;
h1 {
margin-bottom: 32px;
}
p {
font-size: 18px;
line-height: 27px;
max-width: 640px;
margin: 0 auto 32px;
}
}
[purpose='button-row'] {
a {
font-weight: 700;
font-size: 16px;
line-height: 24px;
}
[purpose='cta-button'] {
cursor: pointer;
margin-right: 32px;
background: @core-vibrant-red;
border-radius: 8px;
padding-left: 32px;
padding-right: 32px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
color: #FFF;
position: relative;
text-decoration: none;
}
[purpose='cta-button']::before {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
opacity: 1;
content: ' ';
position: absolute;
top: 0;
left: -5px;
width: 50%;
height: 100%;
transform: skew(-10deg);
transition: left 0.5s ease-in, opacity 0.50s ease-in, width 0.5s ease-in;
}
[purpose='cta-button']:hover:before {
opacity: 0;
left: 160px;
width: 110%;
}
[purpose='animated-arrow-button-red'] {
display: inline;
padding-right: 40px;
cursor: pointer;
position: relative;
width: fit-content;
min-width: 125px;
font-weight: bold;
user-select: none;
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
color: @core-fleet-black;
text-decoration: none;
&:after {
content: url('/images/arrow-right-red-16x16@2x.png');
transform: scale(0.5);
position: absolute;
top: -5px;
left: 80%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity: 0; */
}
&:hover:after {
left: 82%; // <--- here
transition: 0.2s ease-in-out;
-o-transition: 0.2s ease-in-out;
-ms-transition: 0.2s ease-in-out;
-moz-transition: 0.2s ease-in-out;
-webkit-transition: 0.2s ease-in-out;
/* opacity:1; */
}
}
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
padding-bottom: 120px;
}
[purpose='feature'] {
margin-top: 120px;
max-width: 960px;
h3 {
margin-bottom: 24px;
}
div {
max-width: 480px;
}
}
[purpose='feature-image'] {
height: 100%;
img {
max-height: 300px;
}
}
[purpose='checklists'] {
margin-top: 40px;
margin-bottom: 80px;
}
[purpose='checklist'] {
p {
padding-left: 28px;
text-indent: -28px;
}
p::before {
content: ' ';
background-image: url('/images/icon-checkmark-circle.svg');
background-size: 16px 16px;
display: inline-block;
position: relative;
top: 2px;
margin-right: 12px;
width: 16px;
height: 16px;
}
}
[purpose='tweets-container'] {
padding-top: 120px;
padding-bottom: 120px;
background-color: @ui-off-white;
}
[purpose='logos'] {
height: 80px;
max-width: 1200px;
margin-left: auto;
margin-right: auto;
img {
margin-top: 23.5px;
margin-bottom: 23.5px;
padding-left: 35px;
padding-right: 35px;
}
[purpose='snowflake-logo'] {
height: 30px;
}
[purpose='wayfair-logo'] {
height: 33px;
}
[purpose='uber-logo'] {
height: 29px;
}
[purpose='atlassian-logo'] {
height: 22px;
}
[purpose='segment-logo'] {
height: 32px;
}
}
@media (min-width: 1200px) {
[purpose='page-container'] {
padding-left: 120px;
padding-right: 120px;
}
}
@media (max-width: 1200px) {
[purpose='logos'] {
height: 58px;
margin-left: auto;
margin-right: auto;
img {
margin-top: 23.5px;
margin-bottom: 23.5px;
padding-left: 25px;
padding-right: 25px;
}
[purpose='snowflake-logo'] {
height: 21px;
}
[purpose='wayfair-logo'] {
height: 23px;
}
[purpose='uber-logo'] {
height: 20px;
}
[purpose='atlassian-logo'] {
height: 16px;
}
[purpose='segment-logo'] {
height: 22px;
}
}
}
@media (max-width: 991px) {
[purpose='button-row'] {
margin-right: auto;
margin-left: auto;
}
[purpose='hero-background'] {
padding-top: 120px;
padding-bottom: 80px;
padding-left: 0px;
padding-right: 0px;
}
[purpose='logos'] {
height: 58px;
margin-left: 20px;
margin-right: 20px;
img {
margin-top: 17.5px;
margin-bottom: 17.5px;
padding-left: 10px;
padding-right: 10px;
}
}
}
@media (max-width: 768px) {
h1 {
font-size: 48px;
line-height: 54px;
}
[purpose='page-container'] {
padding-left: 40px;
padding-right: 40px;
}
[purpose='checklists'] {
margin-bottom: 40px;
}
[purpose='feature'] {
margin-top: 80px;
}
[purpose='feature-image'] {
margin-bottom: 40px;
img {
max-height: 100%;
max-width: 100%;
}
}
[purpose='hero-background'] {
padding-top: 60px;
padding-bottom: 60px;
padding-left: 20px;
padding-right: 20px;
}
[purpose='hero-text'] {
text-align: center;
max-width: 480px;
}
[purpose='tweets-container'] {
padding-top: 80px;
padding-bottom: 80px;
padding-left: 40px;
padding-right: 40px;
}
[purpose='logos'] {
height: auto;
}
}
@media (max-width: 575px) {
[purpose='button-row'] {
max-width: 100%;
[purpose='cta-button'] {
margin-right: 0px;
width: 100%;
margin-bottom: 24px;
}
}
[purpose='feature'] {
margin-top: 60px;
}
[purpose='page-container'] {
padding-left: 20px;
padding-right: 20px;
}
[purpose='tweets-container'] {
padding-left: 20px;
padding-right: 20px;
}
[parasails-component='scrollable-tweets'] [purpose='tweets'] {
margin-top: 40px;
}
}
}

View file

@ -287,40 +287,6 @@ module.exports.routes = {
}
},
// ╦╔╦╗╔═╗╔═╗╦╔╗╔╔═╗ ┌─┬ ┌─┐┌┐┌┌┬┐┬┌┐┌┌─┐ ┌─┐┌─┐┌─┐┌─┐┌─┐─┐
// ║║║║╠═╣║ ╦║║║║║╣ │ │ ├─┤│││ │││││││ ┬ ├─┘├─┤│ ┬├┤ └─┐ │
// ╩╩ ╩╩ ╩╚═╝╩╝╚╝╚═╝ └─┴─┘┴ ┴┘└┘─┴┘┴┘└┘└─┘ ┴ ┴ ┴└─┘└─┘└─┘─┘
'GET /imagine/unused-software': { action: 'imagine/view-unused-software' },
'GET /imagine/higher-education': {
action: 'imagine/view-higher-education',
locals: {
pageTitleForMeta: 'Fleet for higher education',
pageDescriptionForMeta: 'Automate security workflows in a single application by creating or installing policies to identify which devices comply with your security guidelines.',
}
},
'GET /imagine/rapid-7-alternative': {
action: 'imagine/view-rapid-7-alternative',
locals: {
pageTitleForMeta: 'An open-source alternative to Rapid7',
pageDescriptionForMeta: 'Simplify vulnerability management with Fleet, an open-source platform with superior visibility.',
}
},
'GET /imagine/defcon-31': {
action: 'imagine/view-defcon-31',
locals: {
pageTitleForMeta: 'Fleet at DefCon 31',
pageDescriptionForMeta: 'Find Fleet at DefCon and get a custom tee shirt.',
}
},
'GET /imagine/jamf-alternative': {
action: 'imagine/view-jamf-alternative',
locals: {
pageTitleForMeta: 'An open-source alternative to Jamf',
pageDescriptionForMeta: 'Simplify vulnerability management with Fleet, an open-source platform with superior visibility.',
}
},
// ╦ ╔═╗╔═╗╔═╗╔═╗╦ ╦ ╦═╗╔═╗╔╦╗╦╦═╗╔═╗╔═╗╔╦╗╔═╗
// ║ ║╣ ║ ╦╠═╣║ ╚╦╝ ╠╦╝║╣ ║║║╠╦╝║╣ ║ ║ ╚═╗
// ╩═╝╚═╝╚═╝╩ ╩╚═╝ ╩ ╩╚═╚═╝═╩╝╩╩╚═╚═╝╚═╝ ╩ ╚═╝

View file

@ -1,71 +0,0 @@
<div id="defcon-31" v-cloak>
<div class="container mx-auto d-flex flex-column align-items-center px-0">
<div purpose="hero">
<div purpose="hero-text" class="text-center mx-auto">
</div>
</div>
<div purpose="section">
<h2 class="mb-4">Grab drinks with the Fleet technical team</h2>
<div purpose="meet-the-team" class="d-flex flex-row justify-content-md-between justify-content-around flex-wrap">
<img alt="Alex Mitchell - CRO & Software Engineer" class="mb-4" style="height: 223px;" src="/images/defcon-alex.png">
<img alt="Zach Wasserman - Co-founder of Fleet & Co-creator, osquery" style="height: 223px;" class="mb-4" src="/images/defcon-zach.png">
<img alt="Jarod Reyes - VP of Marketing & Software Engineer" class="mb-4" style="height: 223px;"src="/images/defcon-jarod.png">
</div>
</div>
<div purpose="section">
<h2>Fleet happy hour at Beer Park</h2>
<div purpose="map-container">
<a href="https://goo.gl/maps/L8qvpWVZJG6pExPS6" target="_blank"><img alt="A map showing the location of Beer Park" style="width: 680px;" src="/images/defcon-beerpark-map.png"></a>
</div>
<div class="mb-4 text-center">
<i class="mb-2">Easy walking distance from DefCon & Black Hat</i>
</div>
</div>
<div purpose="rsa-cta">
<h3>Join us at Beer Park</h3>
<p class="mb-2"><strong>Aug 9, 2023 | 7 - 9pm PT</strong></p>
<a class="mx-auto" purpose="cta-button" href="https://docs.google.com/forms/d/e/1FAIpQLSe2dookASezAFNnW5oRTuEDTmq9RHzdc3avz0bNZ_TSkMkjkQ/viewform?vc=0&c=0&w=1&flr=0">RSVP here</a>
</div>
<hr>
<div purpose="rsa-cta">
<img alt="An illustration of the room where Fleet's workshop will be" style="width: 680px;" src="/images/defcon-event-floor.png">
<h2 class="text-center">Fleet Workshop at Wall of Sheep</h2>
<p class="mb-2 text-center" ><strong>Aug 10-12, 2023 | 9am - 8pm PT</strong></p>
<p class="mb-2 text-center">In the "Wall of Sheep" <a href="https://www.wallofsheep.com/">Packet-Hacking Village</a> at Caesar's Forum.</p>
</div>
<h2 class="text-center mb-4">The future and present rely on your ability to decode the mess in the machines. </h2>
<br>
<h3>The lore</h3>
<p>In the year 2057, Earth was shrouded in a cloudy opaque darkness, not by the forces of nature but by an artificial plague. Words lost their meanings, syntax tangled like a complex web, and conversations turned into garbled chaos. The culprit? Advanced AI bots, an unfathomable force that had manipulated the global linguistic network, turning our life's lexicon into a cryptic enigma.</p>
<p>This was no ordinary darkness. It was an intangible blight, a dark nebula woven from chaotic words and scrambled semantics. Entire societies were locked in incomprehension. Economies collapsed as contracts became gibberish, international diplomacy failed as treaties turned into nonsensical paragraphs. Even simple, everyday communication became impossible.</p>
<p>In this time of despair, emerged an unlikely hero, Jules Morse.</p>
<p>Your job as our hero Jules, is to plunge into the depths of these machines under your stewardship and find the words that were hidden there by past oracles, those who would show us the way out of this miasma.</p>
<h3 class="text-center mb-4">What you'll learn:</h3>
<div purpose="checklist" class="mx-auto">
<p>Learn how to use Fleet</p>
<p>Learn how to query machines using osquery</p>
<p>Learn how to break queries</p>
<p>Learn how to spot vulnerabilities in hosts</p>
<p>Learn how to find active processies on machines by user</p>
<p>Discover env variables on a remote machine</p>
<p>Inspect user activity remotely</p>
<p>Inspect installed software remotely</p>
</div>
<br>
<h3 class="text-center mb-4">See you in Vegas!</h3>
<br>
<div style="display: inline-flex; padding-bottom: 40px">
<a href="https://fleetdm.com"><img style="height: 20px; width: 20px; margin-right: 24px;" alt="Fleet logo" src="/images/logo-fleet-20x20@2x.png"></a>
<a href="https://twitter.com/fleetctl"><img style="height: 20px; width: 24px; margin-right: 24px;" alt="Follow Fleet on Twitter" src="/images/logo-twitter-50x44@2x.png"></a>
<a href="https://fleetdm.com/slack"><img style="height: 20px; width: 20px;" alt="Join the osquery Slack community" src="/images/logo-slack-24x24@2x.png"></a>
</div>
</div>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>

View file

@ -1,100 +0,0 @@
<div id="higher-education" v-cloak>
<div purpose="hero-background" class="container-lg d-flex justify-content-center">
<div purpose="hero-container" class="d-flex flex-column align-items-center">
<div purpose="hero-text">
<h4 class="mb-2">Visibility and compliance in a single platform</h4>
<h1>Higher education meets simplified security</h1>
<p>Automate security workflows in a single application by creating or installing policies to identify which devices comply with your security guidelines.</p>
<div purpose="button-row" class="d-flex flex-sm-row flex-column justify-content-center align-items-center">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
</div>
</div>
<div purpose="page-container" class="container-lg">
<div purpose="feature" class="d-flex flex-md-row flex-column-reverse justify-content-between mx-auto align-items-center">
<div class="d-flex flex-column">
<h3>Out-of-the-box CIS benchmark policies</h3>
<p>Colleges are often subject to strict regulatory compliance requirements. With Center for Internet Security (CIS) compliance policies in Fleet, cybersecurity best practices are at your fingertips.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Out-of-the-box policies for Mac, Windows, and Linux.</p>
<p>Fleet will keep these policies updated for you.</p>
<p>Identify which devices are failing the most so you can prioritize your work.</p>
</div>
</div>
<div purpose="feature-image" class="ml-md-5">
<img alt="higher-education feature image" src="/images/compliance-feature-image-1-360x323@2x.png">
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column justify-content-between mx-auto align-items-center">
<div purpose="feature-image" class="mr-md-5">
<img alt="higher-education feature image" src="/images/compliance-feature-image-2-320x237@2x.png">
</div>
<div class="d-flex flex-column">
<h3>Asset management</h3>
<p>Colleges have a large number of devices on their network, including laptops, desktops, servers, and mobile devices. Fleet and osquery can help colleges track these devices and ensure that they are properly managed.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Troubleshoot issues with detailed configuration and performance details in real time on any operating system.</p>
<p>Easily manage any amount of software applications in your fleet with visibility into installed applications and their vulnerabilities.</p>
<p>Save money on software licensing fees by identifying underutilized devices and applications with an unused software report.</p>
</div>
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column-reverse justify-content-between mx-auto align-items-center">
<div class="d-flex flex-column">
<h3>Automations in response to failing policies</h3>
<p>Fleet Premium comes out-of-the-box ready for audits. Integrate with the security tools and services in your stack. Get answers immediately, even when youre not looking.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Configurable scan intervals for policies.</p>
<p>Trigger webhooks and integrate with Jira, Zendesk, or Tines.</p>
<p>Encourage end-user self-remediation with Fleet Desktop.</p>
</div>
</div>
<div purpose="feature-image" class="ml-md-5">
<img alt="higher-education feature image" src="/images/compliance-feature-image-3-398x250@2x.png">
</div>
</div>
<div purpose="button-row" style="margin-top: 60px;" class="d-flex flex-sm-row flex-column justify-content-center align-items-center mx-auto">
<a purpose="cta-button" href="/contact">Talk to us</a>
<a purpose="animated-arrow-button-red" href="/register">Try it out</a>
</div>
</div>
<div purpose="bottom-gradient">
<div purpose="tweets-container" class="container-fluid px-md-0 pb-0 d-flex flex-column justify-content-center">
<div purpose="section-heading" style="max-width: 720px" class="mx-auto text-center">
<h4>Dont know osquery?</h4>
<h2>Dedicated support from osquery experts</h2>
<p>Osquery is the open-source agent that powers Fleet. And we have the most osquery experts around. Well help you realize the potential of this tool for your organization.</p>
</div>
</div>
<scrollable-tweets :testimonials="testimonialsForScrollableTweets"></scrollable-tweets>
<div purpose="page-container" class="pb-0 container">
<div purpose="bottom-cta" class="text-center">
<h4>Open-source device management</h4>
<h1>Think for yourself</h1>
<div purpose="button-row" style="margin-top: 60px;" class="d-flex flex-sm-row flex-column justify-content-center align-items-center mx-auto">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
</div>
</div>
<div class="d-flex flex-column" purpose="bottom-cloud-city-banner">
<img alt="A glass city floating on top of fluffy white clouds" class="d-none d-lg-flex" src="/images/homepage-cloud-city-banner-lg-1600x375@2x.png">
<img alt="A glass city floating on top of fluffy white clouds" class="d-none d-md-flex d-lg-none" src="/images/homepage-cloud-city-banner-md-990x375@2x.png">
<img alt="A glass city floating on top of fluffy white clouds" class="d-flex d-md-none" src="/images/homepage-cloud-city-banner-sm-375x168@2x.png">
</div>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>

View file

@ -1,74 +0,0 @@
<div id="jamf-alternative" v-cloak>
<div purpose="hero-background" class="container-lg d-flex justify-content-center">
<div purpose="hero-container" class="d-flex flex-column align-items-center">
<div purpose="hero-text">
<h4 class="mb-2">Device management built for IT, security approved</h4>
<h1>Fleet brings GitOps to MDM</h1>
<p>Bringh-your-own MDM. Enjoy enterprise-ready open-source MDM and leverage the best of DevOps and GitOps inside a full-featured Macbook MDM.</p>
<div purpose="button-row" class="d-flex flex-sm-row flex-column justify-content-center align-items-center">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
</div>
</div>
<div purpose="page-container" class="container-lg">
<div purpose="feature" class="d-flex flex-md-row flex-column-reverse justify-content-between mx-auto align-items-center">
<div class="d-flex flex-column">
<h3>Finally a transparent and open-source MDM.</h3>
<p>Don't waste money buying new Protection plans from your MDM provider.</p>
</div>
<div purpose="feature-image" class="ml-md-5">
<img alt="A Fleet orb scanning a Laptop" src="/images/device-management-realtime-visibility-320x294@2x.png">
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column justify-content-between mx-auto align-items-center">
<div purpose="feature-image" class="mr-md-5">
<img alt="A bento box featuring all the tools Fleet can bring together" src="/images/device-management-bento-logos-320x295@2x.png">
</div>
<div class="d-flex flex-column">
<h3>JAMF and Intune are never perfect out of the box, so why not bring your own MDM?</h3>
<p>A transparent and programmable MDM to build the solution that's best for your team.</p>
</div>
</div>
<div purpose="button-row" style="margin-top: 60px;" class="d-flex flex-sm-row flex-column justify-content-center align-items-center mx-auto">
<a purpose="cta-button" href="/contact">Talk to us</a>
<a purpose="animated-arrow-button-red" href="/register">Try it out</a>
</div>
</div>
<div purpose="bottom-gradient">
<div purpose="tweets-container" class="container-fluid px-md-0 pb-0 d-flex flex-column justify-content-center">
<div purpose="section-heading" style="max-width: 720px" class="mx-auto text-center">
<h4>Dont know osquery?</h4>
<h2>Dedicated support from osquery experts</h2>
<p>Osquery is the open-source agent that powers Fleet. And we have the most osquery experts around. Well help you realize the potential of this tool for your organization.</p>
</div>
</div>
<scrollable-tweets :testimonials="testimonialsForScrollableTweets"></scrollable-tweets>
<div purpose="page-container" class="pb-0 container">
<div purpose="bottom-cta" class="text-center">
<h4>Open-source device management</h4>
<h1>Lighter than air</h1>
<div purpose="button-row" style="margin-top: 60px;" class="d-flex flex-sm-row flex-column justify-content-center align-items-center mx-auto">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
</div>
</div>
<div class="d-flex flex-column" purpose="bottom-cloud-city-banner">
<img alt="A glass city floating on top of fluffy white clouds" class="d-none d-lg-flex" src="/images/homepage-cloud-city-banner-lg-1600x375@2x.png">
<img alt="A glass city floating on top of fluffy white clouds" class="d-none d-md-flex d-lg-none" src="/images/homepage-cloud-city-banner-md-990x375@2x.png">
<img alt="A glass city floating on top of fluffy white clouds" class="d-flex d-md-none" src="/images/homepage-cloud-city-banner-sm-375x168@2x.png">
</div>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>

View file

@ -1,109 +0,0 @@
<div id="launch-party" v-cloak>
<div class="container mx-auto d-flex flex-column align-items-center px-0">
<div purpose="hero">
<div purpose="hero-text" class="text-center mx-auto">
<h1>The path to a better<br> MDM starts here</h1>
<p>Introducing an MDM your security team will love</p>
</div>
</div>
<div purpose="rsa-cta">
<h2>Launch party at Press Club</h2>
<p class="mb-2"><strong>April 27, 2023 | 5 - 8pm PT</strong></p>
<a class="mx-auto" purpose="cta-button" @click="clickOpenModal()">Join the wait list</a>
</div>
<h2 class="text-center mb-4">Join us in celebrating Fleets new MDM features</h2>
<div purpose="checklist" class="mx-auto">
<p>Report on disk encryption status</p>
<p>User-initiated device enrollment</p>
<p>Remotely enforce OS settings</p>
<p>Zero-touch device setup</p>
<p>Remotely update OS version</p>
<p>Low-level MDM commands</p>
<p>Keep OS up to date through reminders</p>
<p>Encrypt computer hard disks</p>
<p>Manage queued MDM commands</p>
<p>Remotely lock and wipe computers</p>
<p>Trigger a workflow based on a failing policy</p>
<p>Update apps on computers</p>
</div>
<div purpose="section">
<h2 class="mb-4">Enjoy drinks and talk to the Fleet team</h2>
<div purpose="meet-the-team" class="d-flex flex-row justify-content-md-between justify-content-around flex-wrap">
<img alt="Mike McNeil - Co-founder, CEO Fleet" class="mb-4" style="height: 223px;" src="/images/rsa-team-mike-210x223@2x.png">
<img alt="Zach Wasserman - Co-founder of Fleet & Co-creator, osquery" style="height: 242px;" class="mb-4" src="/images/rsa-team-zach-210x242@2x.png">
<img alt="Reid Christian - General Partner, CRV" class="mb-4" style="height: 223px;"src="/images/rsa-team-reid-210x223@2x.png">
</div>
</div>
<div purpose="section">
<div class="mb-4 text-center">
<h2 class="mb-2">Easy walking distance from RSA</h2>
</div>
<div purpose="map-container">
<a href="https://goo.gl/maps/YHD5S3fJcYz46r1h6" target="_blank"><img alt="A map showing the location of Press Club" style="width: 680px;" src="/images/rsa-static-map-681x342@2x.png"></a>
</div>
</div>
<div purpose="rsa-cta">
<h2>Launch party at Press Club</h2>
<p class="mb-2"><strong>April 27, 2023 | 5 - 8pm PT</strong></p>
<a class="mx-auto" purpose="cta-button" @click="clickOpenModal()">Join the wait list</a>
</div>
<hr>
<div style="display: inline-flex; padding-bottom: 40px">
<a href="https://fleetdm.com"><img style="height: 20px; width: 20px; margin-right: 24px;" alt="Fleet logo" src="/images/logo-fleet-20x20@2x.png"></a>
<a href="https://twitter.com/fleetctl"><img style="height: 20px; width: 24px; margin-right: 24px;" alt="Follow Fleet on Twitter" src="/images/logo-twitter-50x44@2x.png"></a>
<a href="https://fleetdm.com/slack"><img style="height: 20px; width: 20px;" alt="Join the osquery Slack community" src="/images/logo-slack-24x24@2x.png"></a>
</div>
</div>
<modal v-if="modal === 'happy-hour-waitlist'" @close="closeModal()" data-backdrop="false" v-cloak purpose="modal">
<div class="d-flex flex-column justify-content-around align-items-center" purpose="modal-container">
<div class="modal-header" v-if="!showSignupFormSuccess">
<h1>Join us at Fleets MDM<br> launch party</h1>
</div>
<div purpose="modal-form" class="pt-5" v-if="!showSignupFormSuccess">
<ajax-form action="deliverLaunchPartySignup" :syncing.sync="syncing" :cloud-error.sync="cloudError" :form-data="formData" :form-rules="formRules" :form-errors.sync="formErrors" @submitted="submittedForm()">
<div class="d-flex flex-md-row flex-column">
<div class="form-group pr-0 pr-md-3 w-100">
<label for="firstName">First Name <span class="text-danger">*</span></label>
<input class="form-control" id="firstName" :class="[formErrors.firstName ? 'is-invalid' : '']" v-model.trim="formData.firstName" @input="typeClearOneFormError('firstName')" focus-first>
<div class="invalid-feedback" v-if="formErrors.firstName">Please enter your first name.</div>
</div>
<div class="form-group w-100">
<label for="lastName">Last Name <span class="text-danger">*</span></label>
<input class="form-control" id="lastName" :class="[formErrors.lastName ? 'is-invalid' : '']" v-model.trim="formData.lastName" @input="typeClearOneFormError('lastName')">
<div class="invalid-feedback" v-if="formErrors.lastName">Please enter your last name.</div>
</div>
</div>
<div class="form-group">
<label for="emailAddress">Work Email <span class="text-danger">*</span></label>
<input class="form-control" id="emailAddress" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" @input="typeClearOneFormError('emailAddress')">
<div class="invalid-feedback" v-if="formErrors.emailAddress">This doesnt appear to be a valid email address</div>
</div>
<div class="form-group">
<label for="phoneNumber">Phone</label>
<input class="form-control" id="phoneNumber" :class="[formErrors.phoneNumber ? 'is-invalid' : '']" v-model.trim="formData.phoneNumber" @input="typeClearOneFormError('phoneNumber')">
<div class="invalid-feedback" v-if="formErrors.phoneNumber">This doesnt appear to be a valid email address</div>
</div>
<div class="form-group">
<label for="jobTitle">Job title</label>
<input class="form-control" id="jobTitle" :class="[formErrors.jobTitle ? 'is-invalid' : '']" v-model.trim="formData.jobTitle" placeholder="E.g., Client Platform Engineer" @input="typeClearOneFormError('jobTitle')">
<div class="invalid-feedback" v-if="formErrors.jobTitle">Please enter your job title.
</div>
</div>
<cloud-error v-if="cloudError"></cloud-error>
<div class="border-0 justify-content-center">
<ajax-button purpose="submit-button" spinner="true" type="submit" :syncing="syncing" class="btn btn-sm btn-block btn-primary">
<span v-if="!showAlternateWaitlistText">Join the wait list</span>
<span v-else>RSVP</span>
</ajax-button>
</div>
</ajax-form>
</div>
<div purpose="modal-form" class="text-center" v-else>
<h3>You're all set!</h3>
<p>A Fleet team member will reach out via email with more information.</p>
</div>
</div>
</modal>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>

View file

@ -1,115 +0,0 @@
<div id="rapid-7-alternative" v-cloak>
<div purpose="hero-background" class="container-lg d-flex justify-content-center">
<div purpose="hero-container" class="d-flex flex-column align-items-center">
<div purpose="hero-text">
<h4 class="mb-2">A Rapid7 alternative for agent-based vulnerability management</h4>
<h1>Simplify vulnerability management</h1>
<p>Fleet, an open-source security platform, empowers you to take control of vulnerability management for your organization. Designed with modern DevOps practices in mind, Fleet offers superior visibility, rapid response capabilities, and seamless integration with your existing workflows.</p>
<div purpose="button-row" class="d-flex flex-sm-row flex-column justify-content-center align-items-center">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
</div>
</div>
<div purpose="page-container" class="container-lg">
<div purpose="feature" class="d-flex flex-md-row flex-column-reverse justify-content-between mx-auto align-items-center">
<div class="d-flex flex-column">
<h3>Open source advantage</h3>
<p>Fleet is built on the belief that the best software is open and transparent. Being open-source allows for continuous innovation and adaptability in an ever-evolving threat landscape. Transparency in operation means you'll always know what your vulnerability management tool is doing.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Global developer community fosters early vulnerability detection.</p>
<p>Transparent operations for enhanced trust.</p>
<p>Avoid vendor lock-ins with open source.</p>
</div>
</div>
<div purpose="feature-image" class="ml-md-5">
<img alt="rapid-7-alternative feature image" src="/images/osquery-management-feature-image-2-400x286@2x.png">
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column justify-content-between mx-auto align-items-center">
<div purpose="feature-image" class="mr-md-5">
<img alt="rapid-7-alternative feature image" src="/images/mdm-feature-image-3-360x300@2x.png">
</div>
<div class="d-flex flex-column">
<h3>Superior visibility and response</h3>
<p>Fleet enables high-frequency querying, providing real-time visibility into your infrastructure's vulnerabilities. Fleet's flexible open-source nature allows for faster response times and remediation, by allowing you to surface alerts where your team is already looking.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Real-time visibility into infrastructure vulnerabilities.</p>
<p>Faster response and remediation times.</p>
<p>Mitigate threats more immediately than Rapid7.</p>
</div>
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column-reverse justify-content-between mx-auto align-items-center">
<div class="d-flex flex-column">
<h3>Flexibility and extensibility</h3>
<p>Fleet's open-source architecture offers unmatched flexibility. With Fleet, developers can pipe data to platforms they are already using and generate reports in familiar environments. Whether you want to integrate with a specific IT service management tool or push osquery data into a SIEM of your choice, Fleet enables it all. In comparison, Rapid7 operates within a more confined ecosystem, limiting your options and flexibility.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Pipe data to platforms your team uses.</p>
<p>Integrates seamlessly with IT service tools</p>
<p>Open-source unlocks boundless functional possibilities.</p>
</div>
</div>
<div purpose="feature-image" class="ml-md-5">
<img alt="rapid-7-alternative feature image" src="/images/device-management-bento-logos-320x295@2x.png">
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column justify-content-between mx-auto align-items-center">
<div purpose="feature-image" class="mr-md-5">
<img alt="rapid-7-alternative feature image" src="/images/compliance-feature-image-1-360x323@2x.png">
</div>
<div class="d-flex flex-column">
<h3>Value-driven alternative</h3>
<p>Despite offering advanced features and capabilities, Fleet remains an economically sound alternative to Rapid7. As we believe in delivering value without imposing exorbitant costs, Fleet emerges as a choice that respects your budget constraints without compromising on performance and functionality.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Advanced features at an economical cost.</p>
<p>Affordable solution with no feature compromise.</p>
<p>Powerful vulnerability management that respects budgets.</p>
</div>
</div>
</div>
<div purpose="button-row" style="margin-top: 60px;" class="d-flex flex-sm-row flex-column justify-content-center align-items-center mx-auto">
<a purpose="cta-button" href="/contact">Talk to us</a>
<a purpose="animated-arrow-button-red" href="/register">Try it out</a>
</div>
</div>
<div purpose="bottom-gradient">
<div purpose="tweets-container" class="container-fluid px-md-0 pb-0 d-flex flex-column justify-content-center">
<div purpose="section-heading" style="max-width: 720px" class="mx-auto text-center">
<h4>Dont know osquery?</h4>
<h2>Dedicated support from osquery experts</h2>
<p>Osquery is the open-source agent that powers Fleet. And we have the most osquery experts around. Well help you realize the potential of this tool for your organization.</p>
</div>
</div>
<scrollable-tweets :testimonials="testimonialsForScrollableTweets"></scrollable-tweets>
<div purpose="page-container" class="pb-0 container">
<div purpose="bottom-cta" class="text-center">
<h4>Open-source device management</h4>
<h1>Lighter than air</h1>
<div purpose="button-row" style="margin-top: 60px;" class="d-flex flex-sm-row flex-column justify-content-center align-items-center mx-auto">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
</div>
</div>
<div class="d-flex flex-column" purpose="bottom-cloud-city-banner">
<img alt="A glass city floating on top of fluffy white clouds" class="d-none d-lg-flex" src="/images/homepage-cloud-city-banner-lg-1600x375@2x.png">
<img alt="A glass city floating on top of fluffy white clouds" class="d-none d-md-flex d-lg-none" src="/images/homepage-cloud-city-banner-md-990x375@2x.png">
<img alt="A glass city floating on top of fluffy white clouds" class="d-flex d-md-none" src="/images/homepage-cloud-city-banner-sm-375x168@2x.png">
</div>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>

View file

@ -1,98 +0,0 @@
<div id="unused-software" v-cloak>
<div purpose="hero-background" class="container-lg d-flex justify-content-center">
<div purpose="hero-container" class="d-flex flex-column align-items-center">
<div purpose="hero-text">
<h4 class="mb-2">Harness the power of Fleet's superior visibility</h4>
<h1>Discover unused software licenses and optimize your IT budget</h1>
<p>Fleet, the leading open-source, flexible device management solution, offers unprecedented visibility into your IT infrastructure, making it the ideal tool to discover and manage unused software licenses. This capability is essential to unlocking more IT budget, enhancing security, and ultimately improving the employee experience.</p>
<div purpose="button-row" class="d-flex flex-sm-row flex-column justify-content-center align-items-center">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
</div>
</div>
<div purpose="page-container" class="container-lg">
<div purpose="feature" class="d-flex flex-md-row flex-column-reverse justify-content-between mx-auto align-items-center">
<div class="d-flex flex-column">
<h3>Unmatched visibility</h3>
<p>Fleet gives real-time visibility into your infrastructure, offering detailed views of installed software via high-frequency querying. An open-source solution, it promises unparalleled operational transparency.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Real-time view of all software installations.</p>
<p>Open-source transparency ensures you know what's happening.</p>
<p>An MDM that can check that your profiles are accurate</p>
</div>
</div>
<div purpose="feature-image" class="mx-md-5">
<img alt="unused-software feature image" src="/images/feature-vulnerable-software-440x277.png">
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column justify-content-between mx-auto align-items-center">
<div purpose="feature-image" class="mx-md-5">
<img alt="unused-software feature image" src="/images/compliance-feature-image-1-360x323@2x.png">
</div>
<div class="d-flex flex-column">
<h3>Optimizing IT budgets</h3>
<p>Fleet swiftly identifies unused software licenses, allowing you to optimize your IT budget by only paying for what you use. It's a cost-effective solution, promising both immediate and long-term financial benefits.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Identify unused licenses for budget optimization.</p>
<p>Unlock budget by discovering how many empty seats you are paying for</p>
<p>Create scheduled queries that give you a daily snapshot of software</p>
</div>
</div>
</div>
<div purpose="feature" class="d-flex flex-md-row flex-column-reverse justify-content-between mx-auto align-items-center">
<div class="d-flex flex-column">
<h3>Enhancing employee experience</h3>
<p>Fleet helps streamline your software environment by detecting unused applications, creating a clutter-free and productive tech experience for your team, thus boosting job satisfaction.</p>
<div purpose="checklist" class="flex-column d-flex">
<p>Say yes to more software by reducing overspend</p>
<p>Streamline software environment for better productivity.</p>
<p>Eliminate unnecessary clutter to enhance job satisfaction.</p>
</div>
</div>
<div purpose="feature-image" class="mx-md-5">
<img alt="feature image C" src="/images/mdm-feature-image-1-344x288@2x.png">
</div>
</div>
<div purpose="button-row" style="margin-top: 60px;" class="d-flex flex-sm-row flex-column justify-content-center align-items-center mx-auto">
<a purpose="cta-button" href="/register">Start now</a>
<a purpose="animated-arrow-button-red" href="/contact">Talk to us</a>
</div>
</div>
<div purpose="tweets-container" class="container-fluid px-md-0 pb-0 d-flex flex-column justify-content-center">
<div purpose="section-heading" style="max-width: 720px" class="mx-auto text-center">
<h4>Dont know osquery?</h4>
<h2>Dedicated support from osquery experts</h2>
<p>Osquery is the open-source agent that powers Fleet. And we have the most osquery experts around. Well help you realize the potential of this tool for your organization.</p>
</div>
</div>
<div style="background-color: #F9FAFC;">
<scrollable-tweets :testimonials="testimonialsForScrollableTweets"></scrollable-tweets>
</div>
<div purpose="tweets-container" class="container-fluid px-md-0 d-flex pt-0 flex-column justify-content-center">
<div purpose="logos" class="d-flex flex-wrap justify-content-center align-items-center">
<img alt="The Snowflake logo" purpose="snowflake-logo" src="/images/logo-snowflake-muted-151x30@2x.png">
<img alt="The Wayfair logo" purpose="wayfair-logo" src="/images/logo-wayfair-muted-150x33@2x.png">
<img alt="The Uber logo" purpose="uber-logo" src="/images/logo-uber-muted-84x29@2x.png">
<img alt="The Atlassian logo" purpose="atlassian-logo" src="/images/logo-atlassian-muted-172x22@2x.png">
<img alt="The Twilio Segment logo" purpose="segment-logo" src="/images/logo-segment-muted-150x34@2x.png">
</div>
</div>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>