diff --git a/vendor/magento/module-catalog/Controller/Adminhtml/Product/Attribute/Save.php b/vendor/magento/module-catalog/Controller/Adminhtml/Product/Attribute/Save.php
index d443f399360a..a8479b4dbeb1 100644
--- a/vendor/magento/module-catalog/Controller/Adminhtml/Product/Attribute/Save.php
+++ b/vendor/magento/module-catalog/Controller/Adminhtml/Product/Attribute/Save.php
@@ -1,8 +1,8 @@
 <?php
 /**
  *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
  */
 
 namespace Magento\Catalog\Controller\Adminhtml\Product\Attribute;
@@ -269,6 +269,21 @@ public function execute()
 
             unset($data['entity_type_id']);
 
+            if (array_key_exists('reset_is-default_option', $data) && $data['reset_is-default_option']) {
+                unset($data['reset_is-default_option']);
+                $data['default_value'] = null;
+            } elseif (isset($data['default'])) {
+                $defaultOptions = [];
+                foreach ($data['default'] as $defaultValue) {
+                    if ((int)$defaultValue > 0) {
+                        $defaultOptions[] = $defaultValue;
+                    }
+                }
+                if (!empty($defaultOptions)) {
+                    $data['default_value'] = implode(",", $defaultOptions);
+                }
+            }
+
             $model->addData($data);
 
             if (!$attributeId) {
diff --git a/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml b/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml
index 8dde7013763d..31812f86e86c 100644
--- a/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml
+++ b/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml
@@ -1,12 +1,13 @@
 <?php
 /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
  */
 use Magento\Catalog\Helper\Data;
 
 /** @var \Magento\Backend\Block\Template $block */
 /** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
+/** @var $escaper \Magento\Framework\Escaper */
 ?>
 
 <?php
@@ -234,7 +235,7 @@ script;
         elseif ($one == '_scope'):
             $scriptString .= 'scopeVisibility = false;';
         else:
-            $scriptString .= "setRowVisibility('" . $block->escapeJs($one) . "', false);";
+            $scriptString .= "setRowVisibility('" . $escaper->escapeJs($one) . "', false);";
         endif;
     endforeach;
     $scriptString .= <<<script
@@ -259,7 +260,7 @@ script;
     setRowVisibility('default_value_yesno', defaultValueYesnoVisibility);
     setRowVisibility('is_global', scopeVisibility);
 
-    var elems = document.getElementsByName('default[]');
+    var elems = document.querySelectorAll('input[name^="default["]');
     for (var i = 0; i < elems.length; i++) {
         elems[i].type = optionDefaultInputType;
     }
diff --git a/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml b/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml
index 7ae3a2ade655..b6ad9d8ac143 100644
--- a/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml
+++ b/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml
@@ -38,6 +38,7 @@ $stores = $block->getStoresSortedBySortOrder();
                 <th colspan="<?= (int)$storetotal ?>" class="validation">
                     <input type="hidden" class="required-dropdown-attribute-entry" name="dropdown_attribute_validation"/>
                     <input type="hidden" class="required-dropdown-attribute-unique" name="dropdown_attribute_validation_unique"/>
+                    <input type="hidden" name="reset_is-default_option"/>
                 </th>
             </tr>
             <tr>
@@ -48,6 +49,12 @@ $stores = $block->getStoresSortedBySortOrder();
                                 type="button" class="action- scalable add">
                             <span><?= $block->escapeHtml(__('Add Option')) ?></span>
                         </button>
+
+                        <button id="reset_default_options_option_button"
+                                title="<?= $block->escapeHtml(__('Reset Is Default')) ?>"
+                                type="button" class="action- scalable reset">
+                            <span><?= $block->escapeHtml(__('Reset Is Default')) ?></span>
+                        </button>
                     <?php endif; ?>
                 </th>
             </tr>
@@ -66,7 +73,7 @@ $stores = $block->getStoresSortedBySortOrder();
                 <input data-role="order" type="hidden" name="option[order][<%- data.id %>]"  value="<%- data.sort_order %>" <?php if ($block->getReadOnly() || $block->canManageOptionDefaultOnly()) :?> disabled="disabled"<?php endif; ?>/>
             </td>
             <td class="col-default control-table-actions-cell">
-                <input class="input-radio" type="<%- data.intype %>" name="default[]" value="<%- data.id %>" <%- data.checked %><?php if ($block->getReadOnly()) :?>disabled="disabled"<?php endif;?>/>
+                <input class="input-radio" type="<%- data.intype %>" name="default[<% if (data.intype === 'checkbox') { %><%- data.id %><% } %>]" value="<%- data.id %>" <%- data.checked %><?php if ($block->getReadOnly()):?>disabled="disabled"<?php endif;?>/>
             </td>
             <?php foreach ($stores as $_store) :?>
             <td class="col-<%- data.id %>"><input name="option[value][<%- data.id %>][<?= (int) $_store->getId() ?>]" value="<%- data.store<?= /* @noEscape */ (int) $_store->getId() ?> %>" class="input-text<?php if ($_store->getId() == \Magento\Store\Model\Store::DEFAULT_STORE_ID) :?> required-option required-unique<?php endif; ?>" type="text" <?php if ($block->getReadOnly() || $block->canManageOptionDefaultOnly()) :?> disabled="disabled"<?php endif;?>/></td>
diff --git a/vendor/magento/module-catalog/view/adminhtml/web/js/options.js b/vendor/magento/module-catalog/view/adminhtml/web/js/options.js
index 7adc0dcfdf40..cc5c7ea7ef4b 100644
--- a/vendor/magento/module-catalog/view/adminhtml/web/js/options.js
+++ b/vendor/magento/module-catalog/view/adminhtml/web/js/options.js
@@ -1,6 +1,6 @@
 /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
  */
 
 /* eslint-disable no-undef */
@@ -94,6 +94,11 @@ define([
                         element.remove();
                     }
                 },
+                reset: function () {
+                    jQuery('input[name^="default["]').prop('checked', false);
+                    jQuery('input[name="reset_is-default_option"]').val(1);
+                },
+
                 updateItemsCountField: function () {
                     $('option-count-check').value = this.totalItems > 0 ? '1' : '';
                 },
@@ -106,6 +111,9 @@ define([
                 bindRemoveButtons: function () {
                     jQuery('#swatch-visual-options-panel').on('click', '.delete-option', this.remove.bind(this));
                 },
+                bindDefaultOptionChanges: function () {
+                    jQuery('#swatch-visual-options-panel').on('change', '.delete-option', this.remove.bind(this));
+                },
                 render: function () {
                     Element.insert($$('[data-role=options-container]')[0], this.elements);
                     this.elements = '';
@@ -151,6 +159,15 @@ define([
         if ($('add_new_option_button')) {
             Event.observe('add_new_option_button', 'click', attributeOption.add.bind(attributeOption, {}, true));
         }
+
+        if ($('reset_default_options_option_button')) {
+            Event.observe(
+                'reset_default_options_option_button',
+                'click',
+                attributeOption.reset.bind(attributeOption, true)
+            );
+        }
+
         $('manage-options-panel').on('click', '.delete-option', function (event) {
             attributeOption.remove(event);
         });
@@ -164,6 +181,7 @@ define([
             jQuery('body').trigger('processStart');
             attributeOption.renderWithDelay(config.attributesData, 0, 100, 300);
             attributeOption.bindRemoveButtons();
+            attributeOption.bindDefaultOptionChanges();
         });
 
         if (config.isSortable) {
diff --git a/vendor/magento/module-eav/Model/ResourceModel/Entity/Attribute.php b/vendor/magento/module-eav/Model/ResourceModel/Entity/Attribute.php
index b11e88b4e121..b170a16b6af2 100644
--- a/vendor/magento/module-eav/Model/ResourceModel/Entity/Attribute.php
+++ b/vendor/magento/module-eav/Model/ResourceModel/Entity/Attribute.php
@@ -1,7 +1,7 @@
 <?php
 /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
  */
 
 namespace Magento\Eav\Model\ResourceModel\Entity;
@@ -232,6 +232,7 @@ protected function _beforeDelete(AbstractModel $attribute)
      *
      * @param EntityAttribute|AbstractModel $object
      * @return $this
+     * @throws LocalizedException
      */
     protected function _afterSave(AbstractModel $object)
     {
@@ -255,6 +256,7 @@ protected function _afterSave(AbstractModel $object)
      * @param AbstractModel|DataObject $object
      * @return $this
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     * @throws \Exception
      * @since 100.0.7
      */
     protected function _afterDelete(AbstractModel $object)
@@ -383,6 +385,7 @@ public function saveInSetIncluding(
      *
      * @param EntityAttribute|AbstractModel $object
      * @return $this
+     * @throws LocalizedException
      */
     protected function _saveOption(AbstractModel $object)
     {
@@ -400,7 +403,7 @@ protected function _saveOption(AbstractModel $object)
         }
 
         if ($object->getDefaultValue()) {
-            $defaultValue[] = $object->getDefaultValue();
+            $defaultValue = array_unique(array_merge($defaultValue, explode(",", $object->getDefaultValue())));
         }
 
         $this->_saveDefaultValue($object, $defaultValue);
@@ -413,6 +416,7 @@ protected function _saveOption(AbstractModel $object)
      * @param EntityAttribute|AbstractModel $object
      * @param array $option
      * @return array
+     * @throws LocalizedException
      */
     protected function _processAttributeOptions($object, $option)
     {
@@ -472,6 +476,7 @@ protected function _updateDefaultValue($object, $optionId, $intOptionId, &$defau
      * @param AbstractModel $object
      * @param array $defaultValue
      * @return void
+     * @throws LocalizedException
      */
     protected function _saveDefaultValue($object, $defaultValue)
     {
@@ -649,6 +654,7 @@ public function getAttributeCodesByFrontendType($frontendType)
      * @param AbstractAttribute $attribute
      * @param int $storeId
      * @return Select
+     * @throws LocalizedException
      */
     public function getFlatUpdateSelect(AbstractAttribute $attribute, $storeId)
     {
@@ -784,6 +790,7 @@ public function getStoreLabelsByAttributeId($attributeId)
      *
      * @param array $attributeIds
      * @return array
+     * @throws LocalizedException
      */
     public function getValidAttributeIds($attributeIds)
     {
diff --git a/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/text.phtml b/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/text.phtml
index 2841b1861f84..9e00ae9d9919 100644
--- a/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/text.phtml
+++ b/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/text.phtml
@@ -35,6 +35,7 @@ $stores = $block->getStoresSortedBySortOrder();
                 <th colspan="<?= (int)$colTotal ?>">
                     <input type="hidden" class="required-text-swatch-entry" name="text_swatch_validation"/>
                     <input type="hidden" class="required-text-swatch-unique" name="text_swatch_validation_unique"/>
+                    <input type="hidden" name="reset_is-default_option"/>
                 </th>
             </tr>
             <tr>
@@ -45,6 +46,12 @@ $stores = $block->getStoresSortedBySortOrder();
                                 type="button" class="action- scalable add">
                             <span><?= $block->escapeHtml(__('Add Swatch')) ?></span>
                         </button>
+
+                        <button id="reset_reset_default_swatch_text_option_button"
+                                title="<?= $block->escapeHtml(__('Reset Is Default')) ?>"
+                                type="button" class="action- scalable reset">
+                            <span><?= $block->escapeHtml(__('Reset Is Default')) ?></span>
+                        </button>
                     <?php endif; ?>
                 </th>
             </tr>
diff --git a/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/visual.phtml b/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/visual.phtml
index ef9659de7ff6..182713cbe1e4 100644
--- a/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/visual.phtml
+++ b/vendor/magento/module-swatches/view/adminhtml/templates/catalog/product/attribute/visual.phtml
@@ -35,6 +35,7 @@ $stores = $block->getStoresSortedBySortOrder();
                 <th colspan="<?= (int)$colTotal ?>">
                     <input type="hidden" class="required-visual-swatch-entry" name="visual_swatch_validation"/>
                     <input type="hidden" class="required-visual-swatch-unique" name="visual_swatch_validation_unique"/>
+                    <input type="hidden" name="reset_is-default_option"/>
                 </th>
             </tr>
             <tr>
@@ -45,6 +46,12 @@ $stores = $block->getStoresSortedBySortOrder();
                                 type="button" class="action- scalable add">
                             <span><?= $block->escapeHtml(__('Add Swatch')) ?></span>
                         </button>
+
+                        <button id="reset_default_swatch_visual_option_button"
+                                title="<?= $block->escapeHtml(__('Reset Is Default')) ?>"
+                                type="button" class="action- scalable reset">
+                            <span><?= $block->escapeHtml(__('Reset Is Default')) ?></span>
+                        </button>
                     <?php endif; ?>
                 </th>
             </tr>
diff --git a/vendor/magento/module-swatches/view/adminhtml/web/js/text.js b/vendor/magento/module-swatches/view/adminhtml/web/js/text.js
index c2d923df1953..15d36367e908 100644
--- a/vendor/magento/module-swatches/view/adminhtml/web/js/text.js
+++ b/vendor/magento/module-swatches/view/adminhtml/web/js/text.js
@@ -98,6 +98,15 @@ define([
                     }
                 },
 
+                /**
+                 * Reset Is Default option
+                 *
+                 */
+                reset: function () {
+                    jQuery('input[name="defaulttext[]"]').prop('checked',false);
+                    jQuery('input[name="reset_is-default_option"]').val(1);
+                },
+
                 /**
                  * Update items count field
                  */
@@ -179,6 +188,14 @@ define([
                 swatchTextOption.add.bind(swatchTextOption, true)
             );
         }
+
+        if ($('reset_reset_default_swatch_text_option_button')) {
+            Event.observe(
+                'reset_reset_default_swatch_text_option_button',
+                'click',
+                swatchTextOption.reset.bind(swatchTextOption, true)
+            );
+        }
         jQuery('#swatch-text-options-panel').on('render', function () {
             swatchTextOption.ignoreValidate();
 
diff --git a/vendor/magento/module-swatches/view/adminhtml/web/js/visual.js b/vendor/magento/module-swatches/view/adminhtml/web/js/visual.js
index a70d2782eda5..a5bd7f22107b 100644
--- a/vendor/magento/module-swatches/view/adminhtml/web/js/visual.js
+++ b/vendor/magento/module-swatches/view/adminhtml/web/js/visual.js
@@ -147,6 +147,15 @@ define([
                     }
                 },
 
+                /**
+                 * Reset Is Default option
+                 *
+                 */
+                reset: function () {
+                    jQuery('input[name="defaultvisual[]"]').prop('checked', false);
+                    jQuery('input[name="reset_is-default_option"]').val(1);
+                },
+
                 /**
                  * Update items count field
                  */
@@ -229,6 +238,14 @@ define([
             );
         }
 
+        if ($('reset_default_swatch_visual_option_button')) {
+            Event.observe(
+                'reset_default_swatch_visual_option_button',
+                'click',
+                swatchVisualOption.reset.bind(swatchVisualOption, true)
+            );
+        }
+
         jQuery('#swatch-visual-options-panel').on('render', function () {
             swatchVisualOption.ignoreValidate();
 
@@ -319,7 +336,7 @@ define([
                     }).appendTo($('body'));
 
                     this.iframe = $('<iframe></iframe>', {
-                        id:  'upload_iframe',
+                        id: 'upload_iframe',
                         name: 'upload_iframe'
                     }).appendTo(this.wrapper);
 
