PHP design pattern – Decorator

I try to learn design patterns. First of all I try learn decorator. My code:
Interface
<?php declare(strict_types=1);

interface Product
{
    public function getPrice();

    public function getDescription();
}

BaseProduct class

<?php declare(strict_types=1);

class BaseProduct implements Product
{
    public function getPrice()
    {
        return 20;
    }

    public function getDescription()
    {
        return "This is base product";
    }
}

ProductDecorator

<?php

abstract class ProductDecorator implements Product
{
    protected Product $product;

    public function __construct(Product $product)
    {
        $this->product = $product;
    }

    abstract public function getPrice();

    abstract public function getDescription();
}

SportProductDecorator

<?php declare(strict_types=1);

class SportProductDecorator extends ProductDecorator
{
    public function getPrice()
    {
        return $this->product->getPrice() + 20;
    }

    public function getDescription()
    {
        return "THis is product from Sport category";
    }
}

HomeProductDecorator

    <?php declare(strict_types=1);
    
    class HomeProductDecorator extends ProductDecorator
    {
        public function getPrice()
        {
            return $this->product->getPrice() + 50;
        }
    
        public function getDescription()
        {
            return "This is product from Home category";
        }

}

Is this a well-applied decorator pattern? I’ve seen a lot of tutorials, but a lot of people do it in a completely different way: /