Website: update /device-management page (#46618)

Closes: https://github.com/fleetdm/fleet/issues/45686

Changes:
- updated layout and content of the /device-management page to match the
latest positioning/wireframes

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added testimonial block with scrollable tweets and responsive brand
logo grid
* Introduced new feature sections: patching, real-time compliance,
change management, transparency, and flexible deployment

* **Updates**
* Full redesign of the device management page: layout, typography,
spacing, responsive behavior, and testimonial/tweet styling
  * Updated hero copy and primary CTA to “Talk to an engineer”

* **Removals**
* Removed desktop/mobile comparison table, legacy feature blocks, video
modal, and swag request form
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Eric
2026-06-02 12:17:51 -05:00
committed by GitHub
parent 880d751b3f
commit 36cbfa2887
24 changed files with 804 additions and 1561 deletions
-12
View File
@@ -62,22 +62,10 @@ module.exports = {
});
}//fi
let showSwagForm = false;
// Due to shipping costs, we'll check the requesting user's cf-ipcountry to see if they're in the US, and their cf-iplongitude header to see if they're in the contiguous US.
if(sails.config.environment === 'production') {
// Log a warning if the cloudflare headers we use are missing in production.
if(!this.req.get('cf-ipcountry') || !this.req.get('cf-iplongitude')) {
sails.log.warn('When a user visted the device management page, the Cloudflare header we use to determine if they are visiting from the contiguous United States is missing.');
}
}
if(this.req.get('cf-ipcountry') === 'US' && this.req.get('cf-iplongitude') > -125) {
showSwagForm = true;
}
// Respond with view.
return {
testimonialsForScrollableTweets,
showSwagForm,
};
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

+4 -42
View File
@@ -3,19 +3,7 @@ parasails.registerPage('device-management-page', {
// ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
// ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
data: {
modal: '',
comparisonMode: 'omnissa',
comparisonModeFriendlyNames: {
jamf: 'Jamf Pro',
sccm: 'SCCM',
omnissa: 'Workspace ONE',
intune: 'Intune',
tanium: 'Tanium',
ansible: 'Ansible',
puppet: 'Puppet',
chef: 'Chef',
patchmypc: 'PatchMyPC'
}
//…
},
// ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
@@ -24,40 +12,14 @@ parasails.registerPage('device-management-page', {
beforeMount: function() {
//…
},
mounted: async function() {
$('[data-toggle="tooltip"]').tooltip({
container: '#device-management-page',
trigger: 'hover',
});
mounted: function() {
//…
},
// ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
// ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
methods: {
clickOpenVideoModal: function(modalName) {
this.modal = modalName;
},
closeModal: function() {
this.modal = undefined;
},
clickSwitchComparisonTableColumn: async function(option){
this.comparisonMode = option;
await setTimeout(()=>{
$('[data-toggle="tooltip"]').tooltip({
container: '#device-management-page',
trigger: 'hover',
});
}, 250);
},
clickSwagRequestCTA: function () {
if(window.gtag !== undefined){
gtag('event','fleet_website__swag_request');
}
if(window.lintrk !== undefined) {
window.lintrk('track', { conversion_id: 18587105 });// eslint-disable-line camelcase
}
this.goto('https://kqphpqst851.typeform.com/to/ZfA3sOu0#from_page=device-managment');
},
//…
}
});
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff