diff --git a/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php b/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php
index 4ca4bc1e2dc..fe3329ec281 100644
--- a/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php
+++ b/vendor/magento/module-catalog-widget/Block/Product/ProductsList.php
@@ -1,7 +1,7 @@
 <?php
 /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
+ * Copyright 2014 Adobe
+ * All Rights Reserved.
  */
 
 namespace Magento\CatalogWidget\Block\Product;
@@ -11,11 +11,14 @@ use Magento\Catalog\Block\Product\AbstractProduct;
 use Magento\Catalog\Block\Product\Context;
 use Magento\Catalog\Block\Product\Widget\Html\Pager;
 use Magento\Catalog\Model\Product;
+use Magento\Catalog\Model\Product\Attribute\Source\Status as ProductStatus;
 use Magento\Catalog\Model\Product\Visibility;
 use Magento\Catalog\Model\ResourceModel\Product\Collection;
 use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
 use Magento\Catalog\Pricing\Price\FinalPrice;
+use Magento\Catalog\ViewModel\Product\OptionsData;
 use Magento\CatalogWidget\Model\Rule;
+use Magento\CatalogWidget\Model\Rule\Condition\Product\CategoryConditionProcessor;
 use Magento\Framework\App\ActionInterface;
 use Magento\Framework\App\Http\Context as HttpContext;
 use Magento\Framework\App\ObjectManager;
@@ -130,6 +133,16 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
      */
     private $categoryRepository;
 
+    /**
+     * @var OptionsData
+     */
+    private OptionsData $optionsData;
+
+    /**
+     * @var CategoryConditionProcessor
+     */
+    private CategoryConditionProcessor $categoryConditionProcessor;
+
     /**
      * @param Context $context
      * @param CollectionFactory $productCollectionFactory
@@ -143,6 +156,8 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
      * @param LayoutFactory|null $layoutFactory
      * @param EncoderInterface|null $urlEncoder
      * @param CategoryRepositoryInterface|null $categoryRepository
+     * @param OptionsData|null $optionsData
+     * @param CategoryConditionProcessor|null $categoryConditionProcessor
      *
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
@@ -155,10 +170,12 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
         Rule $rule,
         Conditions $conditionsHelper,
         array $data = [],
-        Json $json = null,
-        LayoutFactory $layoutFactory = null,
-        EncoderInterface $urlEncoder = null,
-        CategoryRepositoryInterface $categoryRepository = null
+        ?Json $json = null,
+        ?LayoutFactory $layoutFactory = null,
+        ?EncoderInterface $urlEncoder = null,
+        ?CategoryRepositoryInterface $categoryRepository = null,
+        ?OptionsData $optionsData = null,
+        ?CategoryConditionProcessor $categoryConditionProcessor = null
     ) {
         $this->productCollectionFactory = $productCollectionFactory;
         $this->catalogProductVisibility = $catalogProductVisibility;
@@ -171,6 +188,9 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
         $this->urlEncoder = $urlEncoder ?: ObjectManager::getInstance()->get(EncoderInterface::class);
         $this->categoryRepository = $categoryRepository ?? ObjectManager::getInstance()
                 ->get(CategoryRepositoryInterface::class);
+        $this->optionsData = $optionsData ?: ObjectManager::getInstance()->get(OptionsData::class);
+        $this->categoryConditionProcessor = $categoryConditionProcessor ?: ObjectManager::getInstance()
+                ->get(CategoryConditionProcessor::class);
         parent::__construct(
             $context,
             $data
@@ -301,11 +321,23 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
             'action' => $url,
             'data' => [
                 'product' => $product->getEntityId(),
+                'options' => $this->optionsData->getOptionsData($product),
                 ActionInterface::PARAM_NAME_URL_ENCODED => $this->urlEncoder->encode($url),
             ]
         ];
     }
 
+    /**
+     * Return product options
+     *
+     * @param Product $product
+     * @return array
+     */
+    public function getOptionsData(Product $product): array
+    {
+        return $this->optionsData->getOptionsData($product);
+    }
+
     /**
      * @inheritdoc
      */
@@ -350,6 +382,7 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
          */
         $collection = $this->_addProductAttributesAndPrices($collection)
             ->addStoreFilter()
+            ->addAttributeToFilter(Product::STATUS, ProductStatus::STATUS_ENABLED)
             ->addAttributeToSort('entity_id', 'desc')
             ->setPageSize($this->getPageSize())
             ->setCurPage($this->getRequest()->getParam($this->getData('page_var_name'), 1));
@@ -367,34 +400,6 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
         return $collection;
     }
 
-    /**
-     * Update conditions if the category is an anchor category
-     *
-     * @param array $condition
-     * @return array
-     */
-    private function updateAnchorCategoryConditions(array $condition): array
-    {
-        if (array_key_exists('value', $condition)) {
-            $categoryId = $condition['value'];
-
-            try {
-                $category = $this->categoryRepository->get($categoryId, $this->_storeManager->getStore()->getId());
-            } catch (NoSuchEntityException $e) {
-                return $condition;
-            }
-
-            $children = $category->getIsAnchor() ? $category->getChildren(true) : [];
-            if ($children) {
-                $children = explode(',', $children);
-                $condition['operator'] = "()";
-                $condition['value'] = array_merge([$categoryId], $children);
-            }
-        }
-
-        return $condition;
-    }
-
     /**
      * Get conditions
      *
@@ -417,7 +422,10 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
                 }
 
                 if ($condition['attribute'] == 'category_ids') {
-                    $conditions[$key] = $this->updateAnchorCategoryConditions($condition);
+                    $conditions[$key] = $this->categoryConditionProcessor->process(
+                        $condition,
+                        $this->_storeManager->getStore()->getId()
+                    );
                 }
             }
         }
@@ -600,4 +608,12 @@ class ProductsList extends AbstractProduct implements BlockInterface, IdentityIn
     {
         return $this->conditionsHelper->decode(htmlspecialchars_decode($encodedConditions));
     }
+
+    /**
+     * @inheritdoc
+     */
+    protected function _afterToHtml($html)
+    {
+        return trim($html);
+    }
 }
diff --git a/vendor/magento/module-catalog-widget/Model/Rule/Condition/Product/CategoryConditionProcessor.php b/vendor/magento/module-catalog-widget/Model/Rule/Condition/Product/CategoryConditionProcessor.php
new file mode 100644
index 00000000000..ab47a672f99
--- /dev/null
+++ b/vendor/magento/module-catalog-widget/Model/Rule/Condition/Product/CategoryConditionProcessor.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Copyright 2025 Adobe
+ * All Rights Reserved.
+ */
+
+declare(strict_types=1);
+
+namespace Magento\CatalogWidget\Model\Rule\Condition\Product;
+
+use Magento\Catalog\Api\CategoryRepositoryInterface;
+use Magento\Framework\Exception\NoSuchEntityException;
+
+/**
+ * Process category condition to include child categories if the category is anchor
+ */
+class CategoryConditionProcessor
+{
+    /**
+     * @param CategoryRepositoryInterface $categoryRepository
+     */
+    public function __construct(
+        private readonly CategoryRepositoryInterface $categoryRepository
+    ) {
+    }
+
+    /**
+     * Process category condition to include child categories if the category is anchor
+     *
+     * @param array $condition
+     * @param int|null $storeId
+     * @return array
+     */
+    public function process(array $condition, ?int $storeId = null): array
+    {
+        if (!empty($condition['value'])) {
+            $condition['value'] = $this->getCategoriesWithChildren(
+                !is_array($condition['value']) ? $this->toArray((string) $condition['value']) : $condition['value'],
+                $storeId
+            );
+        }
+        return $condition;
+    }
+
+    /**
+     * Get category IDs including children of anchor categories
+     *
+     * @param array $categoryIds
+     * @param int|null $storeId
+     * @return array
+     */
+    private function getCategoriesWithChildren(array $categoryIds, ?int $storeId = null): array
+    {
+        $allCategoryIds = [];
+        foreach ($categoryIds as $categoryId) {
+            try {
+                $category = $this->categoryRepository->get($categoryId, $storeId);
+            } catch (NoSuchEntityException $e) {
+                continue;
+            }
+
+            $allCategoryIds[] = $categoryId;
+            $children = $category->getIsAnchor() ? $category->getChildren(true) : '';
+            if ($children) {
+                array_push($allCategoryIds, ...$this->toArray((string) $children));
+            }
+        }
+
+        return $allCategoryIds;
+    }
+
+    /**
+     * Convert comma or semicolon separated string to array
+     *
+     * @param string $value
+     * @return array
+     */
+    private function toArray(string $value): array
+    {
+        return $value ? preg_split('#\s*[,;]\s*#', $value, -1, PREG_SPLIT_NO_EMPTY) : [];
+    }
+}
diff --git a/vendor/magento/module-catalog-widget/view/frontend/templates/product/widget/content/grid.phtml b/vendor/magento/module-catalog-widget/view/frontend/templates/product/widget/content/grid.phtml
index 78797f295c1..ed12241d623 100644
--- a/vendor/magento/module-catalog-widget/view/frontend/templates/product/widget/content/grid.phtml
+++ b/vendor/magento/module-catalog-widget/view/frontend/templates/product/widget/content/grid.phtml
@@ -74,6 +74,12 @@ use Magento\Wishlist\Helper\Data;
                                                     <?php if ($_item->isSaleable()): ?>
                                                         <?php $postParams = $block->getAddToCartPostParams($_item); ?>
                                                         <form data-role="tocart-form" data-product-sku="<?= $escaper->escapeHtml($_item->getSku()) ?>" action="<?= $escaper->escapeUrl($postParams['action']) ?>" method="post">
+                                                            <?php $options = $block->getOptionsData($_item); ?>
+                                                            <?php foreach ($options as $optionItem): ?>
+                                                                <input type="hidden"
+                                                                       name="<?= $escaper->escapeHtml($optionItem['name']) ?>"
+                                                                       value="<?= $escaper->escapeHtml($optionItem['value']) ?>">
+                                                            <?php endforeach; ?>
                                                             <input type="hidden" name="product" value="<?= $escaper->escapeHtmlAttr($postParams['data']['product']) ?>">
                                                             <input type="hidden" name="<?= /* @noEscape */ Action::PARAM_NAME_URL_ENCODED ?>" value="<?= /* @noEscape */ $postParams['data'][Action::PARAM_NAME_URL_ENCODED] ?>">
                                                             <?= $block->getBlockHtml('formkey') ?>
@@ -107,13 +113,13 @@ use Magento\Wishlist\Helper\Data;
                                                 <div class="actions-secondary" data-role="add-to-links">
                                                     <?php if ($this->helper(Data::class)->isAllow() && $showWishlist): ?>
                                                         <a href="#"
-                                                           data-post='<?= /* @noEscape */ $block->getAddToWishlistParams($_item) ?>' class="action towishlist" data-action="add-to-wishlist" title="<?= $block->escapeHtmlAttr(__('Add to Wish List')) ?>">
+                                                           data-post='<?= /* @noEscape */ $block->getAddToWishlistParams($_item) ?>' class="action towishlist" data-action="add-to-wishlist" title="<?= $escaper->escapeHtmlAttr(__('Add to Wish List')) ?>">
                                                             <span><?= $escaper->escapeHtml(__('Add to Wish List')) ?></span>
                                                         </a>
                                                     <?php endif; ?>
                                                     <?php if ($block->getAddToCompareUrl() && $showCompare): ?>
                                                         <?php $compareHelper = $this->helper(Compare::class);?>
-                                                        <a href="#" class="action tocompare" data-post='<?= /* @noEscape */ $compareHelper->getPostDataParams($_item) ?>' title="<?= $block->escapeHtmlAttr(__('Add to Compare')) ?>">
+                                                        <a href="#" class="action tocompare" data-post='<?= /* @noEscape */ $compareHelper->getPostDataParams($_item) ?>' title="<?= $escaper->escapeHtmlAttr(__('Add to Compare')) ?>">
                                                             <span><?= $escaper->escapeHtml(__('Add to Compare')) ?></span>
                                                         </a>
                                                     <?php endif; ?>
