diff --git a/vendor/magento/module-persistent/Block/Header/RememberMeInit.php b/vendor/magento/module-persistent/Block/Header/RememberMeInit.php
new file mode 100644
index 0000000000000..e0601ddc76c6a
--- /dev/null
+++ b/vendor/magento/module-persistent/Block/Header/RememberMeInit.php
@@ -0,0 +1,64 @@
+serializer = $serializer ?: ObjectManager::getInstance()
+ ->get(JsonHexTag::class);
+ $this->checkoutConfigProvider = $checkoutConfigProvider ?: ObjectManager::getInstance()
+ ->get(CheckoutConfigProvider::class);
+ }
+
+ /**
+ * Retrieve serialized config.
+ *
+ * @return string|bool
+ */
+ private function getSerializedCheckoutConfig(): string|bool
+ {
+ return $this->serializer->serialize($this->checkoutConfigProvider->getConfig());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function toHtml()
+ {
+ $html = parent::toHtml();
+ $serializedConfig = $this->getSerializedCheckoutConfig();
+ $jsString = '';
+
+ $html .= $jsString;
+ return $html;
+ }
+}
diff --git a/vendor/magento/module-persistent/Observer/AddPersistentRememberMeInitObserver.php b/vendor/magento/module-persistent/Observer/AddPersistentRememberMeInitObserver.php
new file mode 100644
index 0000000000000..b9e9f3adb75ad
--- /dev/null
+++ b/vendor/magento/module-persistent/Observer/AddPersistentRememberMeInitObserver.php
@@ -0,0 +1,53 @@
+customerSession->isLoggedIn()
+ || !$this->persistentData->isEnabled()
+ || !$this->persistentData->isRememberMeEnabled()
+ ) {
+ return $this;
+ }
+
+ /** @var \Magento\Framework\View\Layout $layout */
+ $layout = $observer->getEvent()->getData('layout');
+ $layout->getUpdate()->addHandle('remember_me');
+ return $this;
+ }
+}
diff --git a/vendor/magento/module-persistent/Plugin/AddPersistentRememberMeInitPlugin.php b/vendor/magento/module-persistent/Plugin/AddPersistentRememberMeInitPlugin.php
new file mode 100644
index 0000000000000..63d746ca266a0
--- /dev/null
+++ b/vendor/magento/module-persistent/Plugin/AddPersistentRememberMeInitPlugin.php
@@ -0,0 +1,57 @@
+customerSession->isLoggedIn()
+ && $this->persistentData->isEnabled()
+ && $this->persistentData->isRememberMeEnabled()
+ ) {
+ if ($subject->getBlock('head.additional') &&
+ !$subject->getBlock('persistent_initial_configs')) {
+ $subject->addBlock(
+ RememberMeInit::class,
+ 'persistent_initial_configs'
+ );
+ $subject->addOutputElement('persistent_initial_configs');
+ }
+ }
+ }
+}
diff --git a/vendor/magento/module-persistent/etc/frontend/di.xml b/vendor/magento/module-persistent/etc/frontend/di.xml
index 498b59b7e4c45..7f7de75a449f6 100644
--- a/vendor/magento/module-persistent/etc/frontend/di.xml
+++ b/vendor/magento/module-persistent/etc/frontend/di.xml
@@ -1,8 +1,8 @@
@@ -18,6 +18,7 @@
type="Magento\Persistent\Model\Layout\DepersonalizePlugin"
sortOrder="10"
/>
+
diff --git a/vendor/magento/module-persistent/etc/frontend/events.xml b/vendor/magento/module-persistent/etc/frontend/events.xml
index 1241a1bc4780d..73c24078a8041 100644
--- a/vendor/magento/module-persistent/etc/frontend/events.xml
+++ b/vendor/magento/module-persistent/etc/frontend/events.xml
@@ -1,9 +1,9 @@
@@ -25,8 +25,12 @@
+
+
+
+
diff --git a/vendor/magento/module-persistent/view/frontend/layout/checkout_index_index.xml b/vendor/magento/module-persistent/view/frontend/layout/checkout_index_index.xml
new file mode 100644
index 0000000000000..4cdf6f1174550
--- /dev/null
+++ b/vendor/magento/module-persistent/view/frontend/layout/checkout_index_index.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+ -
+
-
+
-
+
-
+
-
+
-
+
- Magento_Persistent/js/view/remember-me
+ - additional-login-form-fields
+
+
+
+ -
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- Magento_Persistent/js/view/remember-me
+ - additional-login-form-fields
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/magento/module-persistent/view/frontend/layout/remember_me.xml b/vendor/magento/module-persistent/view/frontend/layout/remember_me.xml
new file mode 100644
index 0000000000000..aff54047db797
--- /dev/null
+++ b/vendor/magento/module-persistent/view/frontend/layout/remember_me.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ -
+
-
+
-
+
-
+
- Magento_Persistent/js/view/remember-me-default
+ - additional-login-form-fields
+
+
+
+
+
+
+
+
+
diff --git a/vendor/magento/module-persistent/view/frontend/web/js/remember-me-config.js b/vendor/magento/module-persistent/view/frontend/web/js/remember-me-config.js
new file mode 100644
index 0000000000000..3961f1110de9b
--- /dev/null
+++ b/vendor/magento/module-persistent/view/frontend/web/js/remember-me-config.js
@@ -0,0 +1,26 @@
+/**
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
+ */
+
+define(
+ [
+ 'ko',
+ 'uiComponent'
+ ],
+ function (ko, Component) {
+ 'use strict';
+
+ return Component.extend({
+ dataScope: 'global',
+ config: {},
+
+ /** @inheritdoc */
+ initialize: function () {
+ this._super();
+
+ window.rememberMeConfig = this.config;
+ }
+ });
+ }
+);
diff --git a/vendor/magento/module-persistent/view/frontend/web/js/view/remember-me-default.js b/vendor/magento/module-persistent/view/frontend/web/js/view/remember-me-default.js
new file mode 100644
index 0000000000000..5a91f451cb5bf
--- /dev/null
+++ b/vendor/magento/module-persistent/view/frontend/web/js/view/remember-me-default.js
@@ -0,0 +1,52 @@
+/**
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
+ */
+
+define(
+ [
+ 'ko',
+ 'uiComponent',
+ 'Magento_Customer/js/customer-data'
+ ],
+ function (ko, Component, customerData) {
+ 'use strict';
+
+ return Component.extend({
+ defaults: {
+ template: 'Magento_Persistent/remember-me'
+ },
+ dataScope: 'global',
+ isRememberMeCheckboxVisible: ko.observable(false),
+ isRememberMeCheckboxChecked: ko.observable(false),
+
+ /** @inheritdoc */
+ initialize: function () {
+ this._super();
+
+ this.showElement();
+ },
+
+ /**
+ * Show remember me checkbox on certain conditions
+ */
+ showElement: function () {
+ let cart = customerData.get('cart'),
+ persistenceConfig = window.rememberMeConfig.persistenceConfig;
+
+ if (cart().isGuestCheckoutAllowed !== false) {
+ persistenceConfig.isRememberMeCheckboxVisible = false;
+ } else {
+ cart.subscribe(function (cartData) {
+ if (cartData.isGuestCheckoutAllowed !== false) {
+ persistenceConfig.isRememberMeCheckboxVisible = false;
+ }
+ }, this);
+ }
+
+ this.isRememberMeCheckboxChecked = ko.observable(persistenceConfig.isRememberMeCheckboxChecked);
+ this.isRememberMeCheckboxVisible = ko.observable(persistenceConfig.isRememberMeCheckboxVisible);
+ }
+ });
+ }
+);
diff --git a/vendor/magento/module-persistent/view/frontend/web/js/view/remember-me.js b/vendor/magento/module-persistent/view/frontend/web/js/view/remember-me.js
new file mode 100644
index 0000000000000..a4a63f5114f39
--- /dev/null
+++ b/vendor/magento/module-persistent/view/frontend/web/js/view/remember-me.js
@@ -0,0 +1,24 @@
+/**
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
+ */
+
+define(
+ [
+ 'ko',
+ 'uiComponent'
+ ],
+ function (ko, Component) {
+ 'use strict';
+
+ let persistenceConfig = window.checkoutConfig.persistenceConfig;
+
+ return Component.extend({
+ defaults: {
+ template: 'Magento_Persistent/remember-me'
+ },
+ isRememberMeCheckboxVisible: ko.observable(persistenceConfig.isRememberMeCheckboxVisible),
+ isRememberMeCheckboxChecked: ko.observable(persistenceConfig.isRememberMeCheckboxChecked)
+ });
+ }
+);