diff --git a/website/assets/js/pages/landing-pages/autonomous-endpoint-management.page.js b/website/assets/js/pages/landing-pages/autonomous-endpoint-management.page.js index d50e2223a7..fbc2554f79 100644 --- a/website/assets/js/pages/landing-pages/autonomous-endpoint-management.page.js +++ b/website/assets/js/pages/landing-pages/autonomous-endpoint-management.page.js @@ -13,13 +13,36 @@ parasails.registerPage('autonomous-endpoint-management', { //… }, mounted: async function() { - //… + this.animateTicker(); }, // ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗ // ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗ // ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝ methods: { + animateTicker: function() { + setInterval(()=>{ + let currentTickerOption = $('[purpose="ticker-option"].visible'); + if(currentTickerOption) { + if (currentTickerOption.length === 0) { + currentTickerOption = $('[purpose="ticker-option"]').first(); + currentTickerOption.addClass('visible'); + return; + } + // [?]:https://api.jquery.com/nextAll/#nextAll-selector + let nextTickerOption = currentTickerOption.nextAll('[purpose="ticker-option"]').first(); + // If we've reached the end of the list, pick the first option to be the next ticker option + if (nextTickerOption.length === 0) { + nextTickerOption = $('span[purpose="ticker-option"]').first(); + } + currentTickerOption.removeClass('visible').addClass('animating-out'); + nextTickerOption.addClass('visible'); + setTimeout(()=>{ + currentTickerOption.removeClass('animating-out'); + }, 1000);//œ (note this 1000 had better be less than the 1200 below) + }//fi + }, 1200);//œ + }, clickOpenVideoModal: function(modalName) { this.modal = modalName; }, diff --git a/website/assets/styles/pages/landing-pages/autonomous-endpoint-management.less b/website/assets/styles/pages/landing-pages/autonomous-endpoint-management.less index 057c9b7eca..81637f59db 100644 --- a/website/assets/styles/pages/landing-pages/autonomous-endpoint-management.less +++ b/website/assets/styles/pages/landing-pages/autonomous-endpoint-management.less @@ -62,6 +62,31 @@ text-align: center; } } + [purpose='ticker-container'] { + overflow: hidden; + width: fit-content; + white-space: nowrap; + } + [purpose='option-container'] { + height: 57.6px; + } + [purpose='ticker-option'] { + color: @core-fleet-black; + visibility: hidden; + height: 0px; + transform: translateY(75px); + transition: transform 0.3s ease-in-out; + &.visible { + visibility: visible; + position: relative; + transition: transform 0.3s ease-in-out; + transform: translateY(0%); + } + &.animating-out { + visibility: visible; + transform: translateY(-75px); + } + } [purpose='page-hero-text'] { p { .body-l(); @@ -648,6 +673,15 @@ font-size: 32px; } } + [purpose='option-container'] { + height: 38.4px; + } + [purpose='ticker-option'] { + transform: translateY(50px); + &.animating-out { + transform: translateY(-50px); + } + } [purpose='button-row'] { flex-direction: column; align-items: center; diff --git a/website/views/pages/landing-pages/autonomous-endpoint-management.ejs b/website/views/pages/landing-pages/autonomous-endpoint-management.ejs index 9d0eb47a4f..f0d1e29e6e 100644 --- a/website/views/pages/landing-pages/autonomous-endpoint-management.ejs +++ b/website/views/pages/landing-pages/autonomous-endpoint-management.ejs @@ -5,10 +5,28 @@

Autonomous endpoint management

-

Patch at exploit speed

+

+
+
+ Patch + Uninstall + Audit + Offboard + Onboard + Diagnose + Investigate + Fix + Report + Sandbox + Configure + Migrate + Make changes +
+
at machine speed +

-

Auto-patching at machine speed. Humans approve every change.

+

Manage, patch, and secure machines at exploit speed. Humans approve every change.

<%/* Hero CTA buttons - hidden for now, may re-enable later
@@ -230,7 +248,7 @@

Autonomous endpoint management

-

Patch at exploit speed. Without losing sleep.

+

Manage devices like it's 2026