+ *
+ * @internal
+ */
+final class Php80
+{
+ public static function fdiv(float $dividend, float $divisor): float
+ {
+ return @($dividend / $divisor);
+ }
+
+ public static function get_debug_type($value): string
+ {
+ switch (true) {
+ case null === $value: return 'null';
+ case \is_bool($value): return 'bool';
+ case \is_string($value): return 'string';
+ case \is_array($value): return 'array';
+ case \is_int($value): return 'int';
+ case \is_float($value): return 'float';
+ case \is_object($value): break;
+ case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class';
+ default:
+ if (null === $type = @get_resource_type($value)) {
+ return 'unknown';
+ }
+
+ if ('Unknown' === $type) {
+ $type = 'closed';
+ }
+
+ return "resource ($type)";
+ }
+
+ $class = \get_class($value);
+
+ if (false === strpos($class, '@')) {
+ return $class;
+ }
+
+ return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous';
+ }
+
+ public static function get_resource_id($res): int
+ {
+ if (!\is_resource($res) && null === @get_resource_type($res)) {
+ throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res)));
+ }
+
+ return (int) $res;
+ }
+
+ public static function preg_last_error_msg(): string
+ {
+ switch (preg_last_error()) {
+ case \PREG_INTERNAL_ERROR:
+ return 'Internal error';
+ case \PREG_BAD_UTF8_ERROR:
+ return 'Malformed UTF-8 characters, possibly incorrectly encoded';
+ case \PREG_BAD_UTF8_OFFSET_ERROR:
+ return 'The offset did not correspond to the beginning of a valid UTF-8 code point';
+ case \PREG_BACKTRACK_LIMIT_ERROR:
+ return 'Backtrack limit exhausted';
+ case \PREG_RECURSION_LIMIT_ERROR:
+ return 'Recursion limit exhausted';
+ case \PREG_JIT_STACKLIMIT_ERROR:
+ return 'JIT stack limit exhausted';
+ case \PREG_NO_ERROR:
+ return 'No error';
+ default:
+ return 'Unknown error';
+ }
+ }
+
+ public static function str_contains(string $haystack, string $needle): bool
+ {
+ return '' === $needle || false !== strpos($haystack, $needle);
+ }
+
+ public static function str_starts_with(string $haystack, string $needle): bool
+ {
+ return 0 === strncmp($haystack, $needle, \strlen($needle));
+ }
+
+ public static function str_ends_with(string $haystack, string $needle): bool
+ {
+ if ('' === $needle || $needle === $haystack) {
+ return true;
+ }
+
+ if ('' === $haystack) {
+ return false;
+ }
+
+ $needleLength = \strlen($needle);
+
+ return $needleLength <= \strlen($haystack) && 0 === substr_compare($haystack, $needle, -$needleLength);
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/PhpToken.php b/modules/inpostizi/vendor/symfony/polyfill-php80/PhpToken.php
new file mode 100644
index 00000000..fe6e6910
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/PhpToken.php
@@ -0,0 +1,103 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php80;
+
+/**
+ * @author Fedonyuk Anton
+ *
+ * @internal
+ */
+class PhpToken implements \Stringable
+{
+ /**
+ * @var int
+ */
+ public $id;
+
+ /**
+ * @var string
+ */
+ public $text;
+
+ /**
+ * @var int
+ */
+ public $line;
+
+ /**
+ * @var int
+ */
+ public $pos;
+
+ public function __construct(int $id, string $text, int $line = -1, int $position = -1)
+ {
+ $this->id = $id;
+ $this->text = $text;
+ $this->line = $line;
+ $this->pos = $position;
+ }
+
+ public function getTokenName(): ?string
+ {
+ if ('UNKNOWN' === $name = token_name($this->id)) {
+ $name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text;
+ }
+
+ return $name;
+ }
+
+ /**
+ * @param int|string|array $kind
+ */
+ public function is($kind): bool
+ {
+ foreach ((array) $kind as $value) {
+ if (\in_array($value, [$this->id, $this->text], true)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public function isIgnorable(): bool
+ {
+ return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true);
+ }
+
+ public function __toString(): string
+ {
+ return (string) $this->text;
+ }
+
+ /**
+ * @return static[]
+ */
+ public static function tokenize(string $code, int $flags = 0): array
+ {
+ $line = 1;
+ $position = 0;
+ $tokens = token_get_all($code, $flags);
+ foreach ($tokens as $index => $token) {
+ if (\is_string($token)) {
+ $id = \ord($token);
+ $text = $token;
+ } else {
+ [$id, $text, $line] = $token;
+ }
+ $tokens[$index] = new static($id, $text, $line, $position);
+ $position += \strlen($text);
+ }
+
+ return $tokens;
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/README.md b/modules/inpostizi/vendor/symfony/polyfill-php80/README.md
new file mode 100644
index 00000000..3816c559
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/README.md
@@ -0,0 +1,25 @@
+Symfony Polyfill / Php80
+========================
+
+This component provides features added to PHP 8.0 core:
+
+- [`Stringable`](https://php.net/stringable) interface
+- [`fdiv`](https://php.net/fdiv)
+- [`ValueError`](https://php.net/valueerror) class
+- [`UnhandledMatchError`](https://php.net/unhandledmatcherror) class
+- `FILTER_VALIDATE_BOOL` constant
+- [`get_debug_type`](https://php.net/get_debug_type)
+- [`PhpToken`](https://php.net/phptoken) class
+- [`preg_last_error_msg`](https://php.net/preg_last_error_msg)
+- [`str_contains`](https://php.net/str_contains)
+- [`str_starts_with`](https://php.net/str_starts_with)
+- [`str_ends_with`](https://php.net/str_ends_with)
+- [`get_resource_id`](https://php.net/get_resource_id)
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
new file mode 100644
index 00000000..2b955423
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
@@ -0,0 +1,31 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+#[Attribute(Attribute::TARGET_CLASS)]
+final class Attribute
+{
+ public const TARGET_CLASS = 1;
+ public const TARGET_FUNCTION = 2;
+ public const TARGET_METHOD = 4;
+ public const TARGET_PROPERTY = 8;
+ public const TARGET_CLASS_CONSTANT = 16;
+ public const TARGET_PARAMETER = 32;
+ public const TARGET_ALL = 63;
+ public const IS_REPEATABLE = 64;
+
+ /** @var int */
+ public $flags;
+
+ public function __construct(int $flags = self::TARGET_ALL)
+ {
+ $this->flags = $flags;
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php
new file mode 100644
index 00000000..bd1212f6
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php
@@ -0,0 +1,16 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000 && extension_loaded('tokenizer')) {
+ class PhpToken extends Symfony\Polyfill\Php80\PhpToken
+ {
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
new file mode 100644
index 00000000..7c62d750
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
@@ -0,0 +1,20 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000) {
+ interface Stringable
+ {
+ /**
+ * @return string
+ */
+ public function __toString();
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
new file mode 100644
index 00000000..01c6c6c8
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
@@ -0,0 +1,16 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000) {
+ class UnhandledMatchError extends Error
+ {
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
new file mode 100644
index 00000000..783dbc28
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
@@ -0,0 +1,16 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000) {
+ class ValueError extends Error
+ {
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/bootstrap.php b/modules/inpostizi/vendor/symfony/polyfill-php80/bootstrap.php
new file mode 100644
index 00000000..e5f7dbc1
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/bootstrap.php
@@ -0,0 +1,42 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Php80 as p;
+
+if (\PHP_VERSION_ID >= 80000) {
+ return;
+}
+
+if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) {
+ define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN);
+}
+
+if (!function_exists('fdiv')) {
+ function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); }
+}
+if (!function_exists('preg_last_error_msg')) {
+ function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); }
+}
+if (!function_exists('str_contains')) {
+ function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); }
+}
+if (!function_exists('str_starts_with')) {
+ function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); }
+}
+if (!function_exists('str_ends_with')) {
+ function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); }
+}
+if (!function_exists('get_debug_type')) {
+ function get_debug_type($value): string { return p\Php80::get_debug_type($value); }
+}
+if (!function_exists('get_resource_id')) {
+ function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); }
+}
diff --git a/modules/inpostizi/vendor/symfony/polyfill-php80/composer.json b/modules/inpostizi/vendor/symfony/polyfill-php80/composer.json
new file mode 100644
index 00000000..46ccde20
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/polyfill-php80/composer.json
@@ -0,0 +1,37 @@
+{
+ "name": "symfony/polyfill-php80",
+ "type": "library",
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "keywords": ["polyfill", "shim", "compatibility", "portable"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.1"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Php80\\": "" },
+ "files": [ "bootstrap.php" ],
+ "classmap": [ "Resources/stubs" ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/.gitignore b/modules/inpostizi/vendor/symfony/service-contracts/.gitignore
new file mode 100644
index 00000000..c49a5d8d
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/LICENSE b/modules/inpostizi/vendor/symfony/service-contracts/LICENSE
new file mode 100644
index 00000000..74cdc2db
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-2022 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/README.md b/modules/inpostizi/vendor/symfony/service-contracts/README.md
new file mode 100644
index 00000000..41e054a1
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/README.md
@@ -0,0 +1,9 @@
+Symfony Service Contracts
+=========================
+
+A set of abstractions extracted out of the Symfony components.
+
+Can be used to build on semantics that the Symfony components proved useful - and
+that already have battle tested implementations.
+
+See https://github.com/symfony/contracts/blob/main/README.md for more information.
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/ResetInterface.php b/modules/inpostizi/vendor/symfony/service-contracts/ResetInterface.php
new file mode 100644
index 00000000..1af1075e
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/ResetInterface.php
@@ -0,0 +1,30 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+/**
+ * Provides a way to reset an object to its initial state.
+ *
+ * When calling the "reset()" method on an object, it should be put back to its
+ * initial state. This usually means clearing any internal buffers and forwarding
+ * the call to internal dependencies. All properties of the object should be put
+ * back to the same state it had when it was first ready to use.
+ *
+ * This method could be called, for example, to recycle objects that are used as
+ * services, so that they can be used to handle several requests in the same
+ * process loop (note that we advise making your services stateless instead of
+ * implementing this interface when possible.)
+ */
+interface ResetInterface
+{
+ public function reset();
+}
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/ServiceLocatorTrait.php b/modules/inpostizi/vendor/symfony/service-contracts/ServiceLocatorTrait.php
new file mode 100644
index 00000000..da797edc
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/ServiceLocatorTrait.php
@@ -0,0 +1,128 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
+
+// Help opcache.preload discover always-needed symbols
+class_exists(ContainerExceptionInterface::class);
+class_exists(NotFoundExceptionInterface::class);
+
+/**
+ * A trait to help implement ServiceProviderInterface.
+ *
+ * @author Robin Chalas
+ * @author Nicolas Grekas
+ */
+trait ServiceLocatorTrait
+{
+ private $factories;
+ private $loading = [];
+ private $providedTypes;
+
+ /**
+ * @param callable[] $factories
+ */
+ public function __construct(array $factories)
+ {
+ $this->factories = $factories;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function has($id)
+ {
+ return isset($this->factories[$id]);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return mixed
+ */
+ public function get($id)
+ {
+ if (!isset($this->factories[$id])) {
+ throw $this->createNotFoundException($id);
+ }
+
+ if (isset($this->loading[$id])) {
+ $ids = array_values($this->loading);
+ $ids = \array_slice($this->loading, array_search($id, $ids));
+ $ids[] = $id;
+
+ throw $this->createCircularReferenceException($id, $ids);
+ }
+
+ $this->loading[$id] = $id;
+ try {
+ return $this->factories[$id]($this);
+ } finally {
+ unset($this->loading[$id]);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getProvidedServices(): array
+ {
+ if (null === $this->providedTypes) {
+ $this->providedTypes = [];
+
+ foreach ($this->factories as $name => $factory) {
+ if (!\is_callable($factory)) {
+ $this->providedTypes[$name] = '?';
+ } else {
+ $type = (new \ReflectionFunction($factory))->getReturnType();
+
+ $this->providedTypes[$name] = $type ? ($type->allowsNull() ? '?' : '').($type instanceof \ReflectionNamedType ? $type->getName() : $type) : '?';
+ }
+ }
+ }
+
+ return $this->providedTypes;
+ }
+
+ private function createNotFoundException(string $id): NotFoundExceptionInterface
+ {
+ if (!$alternatives = array_keys($this->factories)) {
+ $message = 'is empty...';
+ } else {
+ $last = array_pop($alternatives);
+ if ($alternatives) {
+ $message = sprintf('only knows about the "%s" and "%s" services.', implode('", "', $alternatives), $last);
+ } else {
+ $message = sprintf('only knows about the "%s" service.', $last);
+ }
+ }
+
+ if ($this->loading) {
+ $message = sprintf('The service "%s" has a dependency on a non-existent service "%s". This locator %s', end($this->loading), $id, $message);
+ } else {
+ $message = sprintf('Service "%s" not found: the current service locator %s', $id, $message);
+ }
+
+ return new class($message) extends \InvalidArgumentException implements NotFoundExceptionInterface {
+ };
+ }
+
+ private function createCircularReferenceException(string $id, array $path): ContainerExceptionInterface
+ {
+ return new class(sprintf('Circular reference detected for service "%s", path: "%s".', $id, implode(' -> ', $path))) extends \RuntimeException implements ContainerExceptionInterface {
+ };
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/ServiceProviderInterface.php b/modules/inpostizi/vendor/symfony/service-contracts/ServiceProviderInterface.php
new file mode 100644
index 00000000..c60ad0bd
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/ServiceProviderInterface.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+use Psr\Container\ContainerInterface;
+
+/**
+ * A ServiceProviderInterface exposes the identifiers and the types of services provided by a container.
+ *
+ * @author Nicolas Grekas
+ * @author Mateusz Sip
+ */
+interface ServiceProviderInterface extends ContainerInterface
+{
+ /**
+ * Returns an associative array of service types keyed by the identifiers provided by the current container.
+ *
+ * Examples:
+ *
+ * * ['logger' => 'Psr\Log\LoggerInterface'] means the object provides a service named "logger" that implements Psr\Log\LoggerInterface
+ * * ['foo' => '?'] means the container provides service name "foo" of unspecified type
+ * * ['bar' => '?Bar\Baz'] means the container provides a service "bar" of type Bar\Baz|null
+ *
+ * @return string[] The provided service types, keyed by service names
+ */
+ public function getProvidedServices(): array;
+}
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/ServiceSubscriberInterface.php b/modules/inpostizi/vendor/symfony/service-contracts/ServiceSubscriberInterface.php
new file mode 100644
index 00000000..098ab908
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/ServiceSubscriberInterface.php
@@ -0,0 +1,53 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+/**
+ * A ServiceSubscriber exposes its dependencies via the static {@link getSubscribedServices} method.
+ *
+ * The getSubscribedServices method returns an array of service types required by such instances,
+ * optionally keyed by the service names used internally. Service types that start with an interrogation
+ * mark "?" are optional, while the other ones are mandatory service dependencies.
+ *
+ * The injected service locators SHOULD NOT allow access to any other services not specified by the method.
+ *
+ * It is expected that ServiceSubscriber instances consume PSR-11-based service locators internally.
+ * This interface does not dictate any injection method for these service locators, although constructor
+ * injection is recommended.
+ *
+ * @author Nicolas Grekas
+ */
+interface ServiceSubscriberInterface
+{
+ /**
+ * Returns an array of service types required by such instances, optionally keyed by the service names used internally.
+ *
+ * For mandatory dependencies:
+ *
+ * * ['logger' => 'Psr\Log\LoggerInterface'] means the objects use the "logger" name
+ * internally to fetch a service which must implement Psr\Log\LoggerInterface.
+ * * ['loggers' => 'Psr\Log\LoggerInterface[]'] means the objects use the "loggers" name
+ * internally to fetch an iterable of Psr\Log\LoggerInterface instances.
+ * * ['Psr\Log\LoggerInterface'] is a shortcut for
+ * * ['Psr\Log\LoggerInterface' => 'Psr\Log\LoggerInterface']
+ *
+ * otherwise:
+ *
+ * * ['logger' => '?Psr\Log\LoggerInterface'] denotes an optional dependency
+ * * ['loggers' => '?Psr\Log\LoggerInterface[]'] denotes an optional iterable dependency
+ * * ['?Psr\Log\LoggerInterface'] is a shortcut for
+ * * ['Psr\Log\LoggerInterface' => '?Psr\Log\LoggerInterface']
+ *
+ * @return string[] The required service types, optionally keyed by service names
+ */
+ public static function getSubscribedServices();
+}
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/ServiceSubscriberTrait.php b/modules/inpostizi/vendor/symfony/service-contracts/ServiceSubscriberTrait.php
new file mode 100644
index 00000000..48c610ab
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/ServiceSubscriberTrait.php
@@ -0,0 +1,72 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+use Psr\Container\ContainerInterface;
+
+/**
+ * Implementation of ServiceSubscriberInterface that determines subscribed services from
+ * private method return types. Service ids are available as "ClassName::methodName".
+ *
+ * @author Kevin Bond
+ */
+trait ServiceSubscriberTrait
+{
+ /** @var ContainerInterface */
+ protected $container;
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function getSubscribedServices(): array
+ {
+ $services = method_exists(get_parent_class(self::class) ?: '', __FUNCTION__) ? parent::getSubscribedServices() : [];
+
+ foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
+ if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
+ continue;
+ }
+
+ if (self::class !== $method->getDeclaringClass()->name) {
+ continue;
+ }
+
+ if (!($returnType = $method->getReturnType()) instanceof \ReflectionNamedType) {
+ continue;
+ }
+
+ if ($returnType->isBuiltin()) {
+ continue;
+ }
+
+ $services[self::class.'::'.$method->name] = '?'.$returnType->getName();
+ }
+
+ return $services;
+ }
+
+ /**
+ * @required
+ *
+ * @return ContainerInterface|null
+ */
+ public function setContainer(ContainerInterface $container)
+ {
+ $this->container = $container;
+
+ if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) {
+ return parent::setContainer($container);
+ }
+
+ return null;
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php b/modules/inpostizi/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php
new file mode 100644
index 00000000..2a1b565f
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php
@@ -0,0 +1,95 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service\Test;
+
+use PHPUnit\Framework\TestCase;
+use Psr\Container\ContainerInterface;
+use Symfony\Contracts\Service\ServiceLocatorTrait;
+
+abstract class ServiceLocatorTest extends TestCase
+{
+ /**
+ * @return ContainerInterface
+ */
+ protected function getServiceLocator(array $factories)
+ {
+ return new class($factories) implements ContainerInterface {
+ use ServiceLocatorTrait;
+ };
+ }
+
+ public function testHas()
+ {
+ $locator = $this->getServiceLocator([
+ 'foo' => function () { return 'bar'; },
+ 'bar' => function () { return 'baz'; },
+ function () { return 'dummy'; },
+ ]);
+
+ $this->assertTrue($locator->has('foo'));
+ $this->assertTrue($locator->has('bar'));
+ $this->assertFalse($locator->has('dummy'));
+ }
+
+ public function testGet()
+ {
+ $locator = $this->getServiceLocator([
+ 'foo' => function () { return 'bar'; },
+ 'bar' => function () { return 'baz'; },
+ ]);
+
+ $this->assertSame('bar', $locator->get('foo'));
+ $this->assertSame('baz', $locator->get('bar'));
+ }
+
+ public function testGetDoesNotMemoize()
+ {
+ $i = 0;
+ $locator = $this->getServiceLocator([
+ 'foo' => function () use (&$i) {
+ ++$i;
+
+ return 'bar';
+ },
+ ]);
+
+ $this->assertSame('bar', $locator->get('foo'));
+ $this->assertSame('bar', $locator->get('foo'));
+ $this->assertSame(2, $i);
+ }
+
+ public function testThrowsOnUndefinedInternalService()
+ {
+ if (!$this->getExpectedException()) {
+ $this->expectException(\Psr\Container\NotFoundExceptionInterface::class);
+ $this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.');
+ }
+ $locator = $this->getServiceLocator([
+ 'foo' => function () use (&$locator) { return $locator->get('bar'); },
+ ]);
+
+ $locator->get('foo');
+ }
+
+ public function testThrowsOnCircularReference()
+ {
+ $this->expectException(\Psr\Container\ContainerExceptionInterface::class);
+ $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".');
+ $locator = $this->getServiceLocator([
+ 'foo' => function () use (&$locator) { return $locator->get('bar'); },
+ 'bar' => function () use (&$locator) { return $locator->get('baz'); },
+ 'baz' => function () use (&$locator) { return $locator->get('bar'); },
+ ]);
+
+ $locator->get('foo');
+ }
+}
diff --git a/modules/inpostizi/vendor/symfony/service-contracts/composer.json b/modules/inpostizi/vendor/symfony/service-contracts/composer.json
new file mode 100644
index 00000000..e3bf920c
--- /dev/null
+++ b/modules/inpostizi/vendor/symfony/service-contracts/composer.json
@@ -0,0 +1,38 @@
+{
+ "name": "symfony/service-contracts",
+ "type": "library",
+ "description": "Generic abstractions related to writing services",
+ "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.1.3",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Contracts\\Service\\": "" }
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ }
+}
diff --git a/modules/inpostizi/views/css/admin/admin-legacy.css b/modules/inpostizi/views/css/admin/admin-legacy.css
new file mode 100644
index 00000000..438b0d87
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/admin-legacy.css
@@ -0,0 +1,3 @@
+.ps-switch{position:relative;display:inline-block;min-width:8.125rem;margin-top:3px;font-size:.813rem;background-color:#eff1f2;border-radius:1px;text-align:center}.ps-switch input{position:absolute;opacity:0}.ps-switch input:disabled+label{cursor:not-allowed}.ps-switch input:disabled:checked+label{background-color:#bbcdd2}.ps-switch label{position:relative;z-index:2;float:left;width:50%;height:100%;padding:.231em .769em;margin:0;vertical-align:middle;text-align:center;text-transform:uppercase;color:#bbcdd2;font-weight:400;cursor:pointer;transition:color .2s ease-out;font-size:12px}.content-div .ps-switch input:checked+label{color:#fff}.content-div .ps-switch>.slide-button{position:absolute;top:0;left:0;padding:0;z-index:1;width:50%;height:100%;color:#fff;background-color:#c05c67;transition:all .3s ease-out}.content-div .ps-switch input:last-of-type:checked~.slide-button{background-color:#2eacce;left:50%}.content-div .ps-switch.ps-switch-sm{min-width:6.25rem;font-size:.75rem}.content-div .ps-switch.ps-switch-lg{font-size:1rem}.content-div .d-none{display:none}.content-div .d-flex{display:flex}.row-flex,.content-div .row{display:flex;flex-wrap:wrap}.row-flex:after,.content-div .row:after,.row-flex:before,.content-div .row:before{display:none}.col{flex:1 1 0;width:auto;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.no-gutters{margin-left:0;margin-right:0}.no-gutters>*{padding-left:0;padding-right:0}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-0.25rem !important}.mt-n1,.my-n1{margin-top:-0.25rem !important}.mr-n1,.mx-n1{margin-right:-0.25rem !important}.mb-n1,.my-n1{margin-bottom:-0.25rem !important}.ml-n1,.mx-n1{margin-left:-0.25rem !important}.m-n2{margin:-0.5rem !important}.mt-n2,.my-n2{margin-top:-0.5rem !important}.mr-n2,.mx-n2{margin-right:-0.5rem !important}.mb-n2,.my-n2{margin-bottom:-0.5rem !important}.ml-n2,.mx-n2{margin-left:-0.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-right-0{border-right:0 !important}.border{border:1px solid #dbe6e9 !important}.border-top{border-top:1px solid #dbe6e9 !important}.border-bottom{border-bottom:1px solid #dbe6e9 !important}.border-left{border-left:1px solid #dbe6e9 !important}.border-right{border-right:1px solid #dbe6e9 !important}.float-right{float:right !important}.float-left{float:left !important}.float-none{float:none !important}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.align-items-center{align-items:center}.align-items-end{align-items:end}.align-items-baseline{align-items:baseline}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-end{justify-content:flex-end}.justify-content-start{justify-content:flex-start}.content-div .control-label,.content-div .form-control-label,.content-div .form-group .control-label,.content-div .form-group .form-control-label{padding-top:0;padding-right:0;padding-left:0;color:#363a41}.content-div .h4,.content-div h4{color:#363a41}.content-div .form-group{margin-bottom:1rem}.content-div .form-group::after{content:"";clear:both;display:table}.content-div .input-group .input-group-addon{color:#6c868e;border-left:1px solid #bbcdd2}.form-group.has-error .form-control{border-color:#c05c67}.form-group.has-error .help-block{color:#c05c67;font-size:12px;margin-top:5px;display:block}.help-box{flex-shrink:0;flex-grow:0}.custom-checkbox{position:relative;display:flex}.custom-checkbox .custom-control-input{margin-right:10px}.custom-checkbox .custom-control-input:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%}.custom-checkbox .custom-control-label{margin:0}.inpostizi-checkboxes-options .custom-control{padding:10px}.card-header{display:flex;align-items:center}.card-header .material-icons{margin-right:10px}.table{font-size:13px}.table td,.table thead th{padding:10px;border:0;color:#363a41}.table thead{border:0;border-bottom:2px solid #25b9d7}.table tbody{border:0}.table tbody tr{border-bottom:1px solid #eceeef}.table .label{font-size:12px}.table .btn-group{display:flex;justify-content:flex-end}.table .btn{padding:5px;display:block}.label{white-space:normal}
+
+/*# sourceMappingURL=admin-legacy.css.map*/
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/admin/admin-legacy.css.map b/modules/inpostizi/views/css/admin/admin-legacy.css.map
new file mode 100644
index 00000000..3f8c4844
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/admin-legacy.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"css/admin/admin-legacy.css","mappings":"AACA,WACE,kBACA,qBACA,mBACA,eACA,kBACA,yBACA,kBACA,kBAGF,iBACE,kBACA,UAGF,gCACE,mBAGF,wCACE,yBAGF,iBACE,kBACA,UACA,WACA,UACA,YACA,sBACA,SACA,sBACA,kBACA,yBACA,cACA,gBACA,eACA,8BACA,eAKA,4CACE,WAGF,sCACE,kBACA,MACA,OACA,UACA,UACA,UACA,YACA,WACA,yBACA,4BAGF,iEACE,yBACA,SAGF,qCACE,kBACA,iBAGF,qCACE,eCxEF,qBACE,aAGF,qBACE,aCNJ,4BACE,aACA,eAEA,kFAEE,aAQJ,KACE,WACA,WACA,eAGF,UACE,cACA,WACA,eAGF,YACE,cACA,eAEA,cACE,eACA,gBC9BA,yBACA,YAEE,wBAEF,YAEE,0BAEF,YAEE,2BAEF,YAEE,yBAfF,8BACA,YAEE,6BAEF,YAEE,+BAEF,YAEE,gCAEF,YAEE,8BAfF,6BACA,YAEE,4BAEF,YAEE,8BAEF,YAEE,+BAEF,YAEE,6BAfF,4BACA,YAEE,2BAEF,YAEE,6BAEF,YAEE,8BAEF,YAEE,4BAfF,8BACA,YAEE,6BAEF,YAEE,+BAEF,YAEE,gCAEF,YAEE,8BAfF,4BACA,YAEE,2BAEF,YAEE,6BAEF,YAEE,8BAEF,YAEE,4BAfF,0BACA,YAEE,yBAEF,YAEE,2BAEF,YAEE,4BAEF,YAEE,0BAfF,+BACA,YAEE,8BAEF,YAEE,gCAEF,YAEE,iCAEF,YAEE,+BAfF,8BACA,YAEE,6BAEF,YAEE,+BAEF,YAEE,gCAEF,YAEE,8BAfF,6BACA,YAEE,4BAEF,YAEE,8BAEF,YAEE,+BAEF,YAEE,6BAfF,+BACA,YAEE,8BAEF,YAEE,gCAEF,YAEE,iCAEF,YAEE,+BAfF,6BACA,YAEE,4BAEF,YAEE,8BAEF,YAEE,+BAEF,YAEE,6BAQF,iCACA,cAEE,+BAEF,cAEE,iCAEF,cAEE,kCAEF,cAEE,gCAfF,gCACA,cAEE,8BAEF,cAEE,gCAEF,cAEE,iCAEF,cAEE,+BAfF,8BACA,cAEE,4BAEF,cAEE,8BAEF,cAEE,+BAEF,cAEE,6BAfF,gCACA,cAEE,8BAEF,cAEE,gCAEF,cAEE,iCAEF,cAEE,+BAfF,8BACA,cAEE,4BAEF,cAEE,8BAEF,cAEE,+BAEF,cAEE,6BAMN,+BACA,kBAEE,2BAEF,kBAEE,6BAEF,kBAEE,8BAEF,kBAEE,4BC5DF,UACE,oBAGF,cACE,wBAGF,iBACE,2BAGF,eACE,yBAGF,gBACE,0BAGF,QACE,oCAGF,YACE,wCAGF,eACE,2CAGF,aACE,yCAGF,cACE,0CCtCF,aACE,uBAGF,YACE,sBAGF,YACE,sBAGF,WACE,gBAGF,YACE,iBAGF,aACE,kBAGF,oBACE,mBAGF,iBACE,gBAGF,sBACE,qBAGF,wBACE,uBAGF,yBACE,8BAGF,wBACE,6BAGF,qBACE,yBAGF,uBACE,2BCnDA,kJAGE,cACA,gBACA,eACA,cAGF,iCACE,cCVF,yBACE,mBAEA,gCACE,WACA,WACA,cAIJ,6CACE,cACA,8BAKF,oCACE,qBAGF,kCACE,cACA,eACA,eACA,cAIJ,UACE,cACA,YAGF,iBACE,kBACA,aAEA,uCACE,kBAEA,8CACE,WACA,kBACA,OACA,MACA,WACA,YAIJ,uCACE,SAIJ,8CACE,aC1DF,aACE,aACA,mBAEA,6BACE,kBCNJ,OACE,eAEA,0BAEE,aACA,SACA,cAGF,aACE,SACA,gCAGF,aACE,SAEA,gBACE,gCAIJ,cACE,eAGF,kBACE,aACA,yBAGF,YACE,YACA,cClCJ,OACE,mB","sources":["webpack://inpost-pay/./src/css/admin-legacy/components/form/_ps-switch.scss","webpack://inpost-pay/./src/css/admin-legacy/override/backwards-compatibility/_display.scss","webpack://inpost-pay/./src/css/admin-legacy/override/backwards-compatibility/_grid.scss","webpack://inpost-pay/./src/css/admin-legacy/override/backwards-compatibility/_spacing.scss","webpack://inpost-pay/./src/css/admin-legacy/override/backwards-compatibility/_border.scss","webpack://inpost-pay/./src/css/admin-legacy/override/backwards-compatibility/_utils.scss","webpack://inpost-pay/./src/css/admin-legacy/override/_typography.scss","webpack://inpost-pay/./src/css/admin-legacy/override/_form.scss","webpack://inpost-pay/./src/css/admin-legacy/override/_card.scss","webpack://inpost-pay/./src/css/admin-legacy/override/_table.scss","webpack://inpost-pay/./src/css/admin-legacy/override/_label.scss"],"sourcesContent":["\n.ps-switch {\n position: relative;\n display: inline-block;\n min-width: 8.125rem;\n margin-top: 3px;\n font-size: .813rem;\n background-color: #eff1f2;\n border-radius: 1px;\n text-align: center\n}\n\n.ps-switch input {\n position: absolute;\n opacity: 0\n}\n\n.ps-switch input:disabled+label {\n cursor: not-allowed\n}\n\n.ps-switch input:disabled:checked+label {\n background-color: #bbcdd2\n}\n\n.ps-switch label {\n position: relative;\n z-index: 2;\n float: left;\n width: 50%;\n height: 100%;\n padding: .231em .769em;\n margin: 0;\n vertical-align: middle;\n text-align: center;\n text-transform: uppercase;\n color: #bbcdd2;\n font-weight: 400;\n cursor: pointer;\n transition: color .2s ease-out;\n font-size: 12px;\n}\n\n.content-div {\n\n .ps-switch input:checked + label {\n color: #fff\n }\n\n .ps-switch > .slide-button {\n position: absolute;\n top: 0;\n left: 0;\n padding: 0;\n z-index: 1;\n width: 50%;\n height: 100%;\n color: #fff;\n background-color: #c05c67;\n transition: all .3s ease-out\n }\n\n .ps-switch input:last-of-type:checked ~ .slide-button {\n background-color: #2eacce;\n left: 50%\n }\n\n .ps-switch.ps-switch-sm {\n min-width: 6.25rem;\n font-size: .75rem\n }\n\n .ps-switch.ps-switch-lg {\n font-size: 1rem\n }\n\n}\n",".content-div {\n .d-none {\n display: none;\n }\n\n .d-flex {\n display: flex;\n }\n}\n",".row-flex {\n display: flex;\n flex-wrap: wrap;\n\n &:after,\n &:before {\n display: none;\n }\n}\n\n.content-div .row {\n @extend .row-flex;\n}\n\n.col {\n flex: 1 1 0;\n width: auto;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.no-gutters {\n margin-left: 0;\n margin-right: 0;\n\n > * {\n padding-left: 0;\n padding-right: 0;\n }\n}\n","@each $prop, $abbrev in (margin: m, padding: p) {\n @each $size, $length in $spacers {\n .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\n .#{$abbrev}t-#{$size},\n .#{$abbrev}y-#{$size} {\n #{$prop}-top: $length !important;\n }\n .#{$abbrev}r-#{$size},\n .#{$abbrev}x-#{$size} {\n #{$prop}-right: $length !important;\n }\n .#{$abbrev}b-#{$size},\n .#{$abbrev}y-#{$size} {\n #{$prop}-bottom: $length !important;\n }\n .#{$abbrev}l-#{$size},\n .#{$abbrev}x-#{$size} {\n #{$prop}-left: $length !important;\n }\n }\n}\n\n// Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)\n@each $size, $length in $spacers {\n @if $size != 0 {\n .m-n#{$size} { margin: -$length !important; }\n .mt-n#{$size},\n .my-n#{$size} {\n margin-top: -$length !important;\n }\n .mr-n#{$size},\n .mx-n#{$size} {\n margin-right: -$length !important;\n }\n .mb-n#{$size},\n .my-n#{$size} {\n margin-bottom: -$length !important;\n }\n .ml-n#{$size},\n .mx-n#{$size} {\n margin-left: -$length !important;\n }\n }\n}\n\n// Some special margin utils\n.m-auto { margin: auto !important; }\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n","\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border {\n border: 1px solid $border-color !important;\n}\n\n.border-top {\n border-top: 1px solid $border-color !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid $border-color !important;\n}\n\n.border-left {\n border-left: 1px solid $border-color !important;\n}\n\n.border-right {\n border-right: 1px solid $border-color !important;\n}\n",".float-right {\n float: right !important;\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-right {\n text-align: right;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-items-center {\n align-items: center;\n}\n\n.align-items-end {\n align-items: end;\n}\n\n.align-items-baseline {\n align-items: baseline;\n}\n\n.justify-content-center {\n justify-content: center;\n}\n\n.justify-content-between {\n justify-content: space-between;\n}\n\n.justify-content-around {\n justify-content: space-around;\n}\n\n.justify-content-end {\n justify-content: flex-end;\n}\n\n.justify-content-start {\n justify-content: flex-start;\n}\n","\n.content-div {\n .control-label, .form-control-label,\n .form-group .control-label,\n .form-group .form-control-label {\n padding-top: 0;\n padding-right: 0;\n padding-left: 0;\n color: #363a41;\n }\n\n .h4, h4 {\n color: #363a41;\n }\n\n}\n","\n.content-div {\n .form-group {\n margin-bottom: 1rem;\n\n &::after {\n content: \"\";\n clear: both;\n display: table;\n }\n }\n\n .input-group .input-group-addon {\n color: #6c868e;\n border-left: 1px solid #bbcdd2;\n }\n}\n\n.form-group.has-error {\n .form-control {\n border-color: #c05c67;\n }\n\n .help-block {\n color: #c05c67;\n font-size: 12px;\n margin-top: 5px;\n display: block;\n }\n}\n\n.help-box {\n flex-shrink: 0;\n flex-grow: 0;\n}\n\n.custom-checkbox {\n position: relative;\n display: flex;\n\n .custom-control-input {\n margin-right: 10px;\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n }\n }\n\n .custom-control-label {\n margin: 0;\n }\n}\n\n.inpostizi-checkboxes-options .custom-control {\n padding: 10px;\n}\n","\n.card-header {\n display: flex;\n align-items: center;\n\n .material-icons {\n margin-right: 10px;\n }\n}\n",".table {\n font-size: 13px;\n\n td,\n thead th {\n padding: 10px;\n border: 0;\n color: #363a41;\n }\n\n thead {\n border: 0;\n border-bottom: 2px solid #25b9d7;\n }\n\n tbody {\n border: 0;\n\n tr {\n border-bottom: 1px solid #eceeef;\n }\n }\n\n .label {\n font-size: 12px;\n }\n\n .btn-group {\n display: flex;\n justify-content: flex-end;\n }\n\n .btn {\n padding: 5px;\n display: block;\n }\n}\n",".label {\n white-space: normal;\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/admin/admin.css b/modules/inpostizi/views/css/admin/admin.css
new file mode 100644
index 00000000..1926cdaa
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/admin.css
@@ -0,0 +1,3 @@
+.card-body+.card-body{border-top:1px solid #dbe6e9}.inpostizi-checkboxes .form-group [class*=col-]{padding-left:0;padding-right:0}.col-form-label.w-auto{width:auto}.inpostizi-input--w-sm{max-width:200px}.inpost-izi-switch{width:100%;padding:5px 0}.inpost-izi-switch label{margin:0;font-size:12px}.inpostizi-checkboxes-options{overflow-y:auto;max-height:50vh}.inpostizi-checkboxes-options .custom-control{padding:10px 10px 10px 35px;border-bottom:1px solid #dbe6e9}.inpostizi-checkboxes-options .custom-control-label{display:block}
+
+/*# sourceMappingURL=admin.css.map*/
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/admin/admin.css.map b/modules/inpostizi/views/css/admin/admin.css.map
new file mode 100644
index 00000000..c050d78c
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/admin.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"css/admin/admin.css","mappings":"AACA,sBACE,6BCCE,gDACE,eACA,gBAKN,uBACE,WCTA,uBACE,gBCFJ,mBACE,WACA,cAEA,yBACE,SACA,eCNJ,8BACE,gBACA,gBAEA,8CACE,4BAEA,gCAGF,oDACE,c","sources":["webpack://inpost-pay/./src/css/admin/override/_bootstrap.scss","webpack://inpost-pay/./src/css/admin/components/form/_misc.scss","webpack://inpost-pay/./src/css/admin/components/form/_input.scss","webpack://inpost-pay/./src/css/admin/components/form/_switch.scss","webpack://inpost-pay/./src/css/admin/components/form/_inpostizi-checkboxes-options.scss"],"sourcesContent":["\n.card-body + .card-body {\n border-top: 1px solid $border-color;\n}\n","\n.inpostizi-checkboxes {\n .form-group {\n [class*=\"col-\"] {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.col-form-label.w-auto {\n width: auto;\n}\n","\n.inpostizi-input {\n &--w-sm {\n max-width: 200px;\n }\n}\n","\n.inpost-izi-switch {\n width: 100%;\n padding: 5px 0;\n\n label {\n margin: 0;\n font-size: 12px;\n }\n}\n","\n.inpostizi-checkboxes-options {\n overflow-y: auto;\n max-height: 50vh;\n\n .custom-control {\n padding: 10px 10px 10px 35px;\n\n border-bottom: 1px solid $border-color;\n }\n\n .custom-control-label {\n display: block;\n }\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/admin/consents.css b/modules/inpostizi/views/css/admin/consents.css
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/consents.css
@@ -0,0 +1 @@
+
diff --git a/modules/inpostizi/views/css/admin/gui.css b/modules/inpostizi/views/css/admin/gui.css
new file mode 100644
index 00000000..0338c1b1
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/gui.css
@@ -0,0 +1,3 @@
+.inpostizi-btn-preview__content{padding:20px 30px}.inpostizi-btn-preview__content--light{border:1px solid #dbe6e9;background:#f8f8f8}.inpostizi-btn-preview__content--dark{border:1px solid #606060;background:#6e6e6e}.inpostizi-material-choice-tree-container{padding:.625rem;border:1px solid #999}.inpostizi-material-choice-tree-container .choice-tree-actions{margin-bottom:10px;border-bottom:.063rem solid #999}.inpostizi-material-choice-tree-container ul.choice-tree{padding:0;margin:0}.inpostizi-material-choice-tree-container ul.choice-tree li{list-style:none;background:no-repeat 0 3px;background-size:12px 12px}.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox,.inpostizi-material-choice-tree-container ul.choice-tree li .radio{padding-top:0;padding-left:20px}.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox i.md-checkbox-control::before{width:16px;height:16px;margin-top:3px}.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox input[type=checkbox]:checked+i.md-checkbox-control::after,.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox input[type=checkbox]:indeterminate+i.md-checkbox-control::after{top:5px;left:3px;width:11px;height:7px}.inpostizi-material-choice-tree-container ul.choice-tree li ul{padding-left:1rem}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed,.inpostizi-material-choice-tree-container ul.choice-tree .expanded{position:relative;background:none}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.checkbox,.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.radio,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.checkbox,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.radio{cursor:pointer}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.radio::before,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.radio::before{position:absolute;top:-0.25rem;left:-0.1rem;font-family:"Material Icons",Arial,Helvetica,sans-serif;font-size:1.25rem;color:#6c868e;cursor:pointer}.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.radio::before{content:""}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>ul{display:none}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.radio::before{content:""}
+
+/*# sourceMappingURL=gui.css.map*/
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/admin/gui.css.map b/modules/inpostizi/views/css/admin/gui.css.map
new file mode 100644
index 00000000..763eee8a
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/gui.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"css/admin/gui.css","mappings":"AAAA,gCCGE,iBACE,wCAEA,wBACE,mBCLS,uCDSX,wBACE,mBCTS,2CCHf,eACE,sBACA,gEAEA,kBACE,iCACA,0DAGF,SACE,SACA,6DAEA,eACE,2BACA,0BACA,0IAEA,aAEE,kBACA,qGAME,UACE,YACA,eACA,uQAQE,OAEE,SACA,WACA,WACA,gEAOV,iBACE,wIAIJ,iBAEE,gBACA,iTAEA,cAEE,iVAEA,iBACE,aACA,aACA,wDACA,kBACA,cD/DK,eCiEL,wKAQF,WACE,wEAOJ,YACE,0KAKA,WACE,C","sources":["webpack://inpost-pay/./src/css/gui.scss","webpack://inpost-pay/./src/css/gui/components/_inpostizi-btn-preview.scss","webpack://inpost-pay/./src/css/abstract/variables/_colors.scss","webpack://inpost-pay/./src/css/gui/components/form/_material_choice_tree.scss"],"sourcesContent":[".inpostizi-btn-preview__content{padding:20px 30px}.inpostizi-btn-preview__content--light{border:1px solid #dbe6e9;background:#f8f8f8}.inpostizi-btn-preview__content--dark{border:1px solid #606060;background:#6e6e6e}.inpostizi-material-choice-tree-container{padding:.625rem;border:1px solid #999}.inpostizi-material-choice-tree-container .choice-tree-actions{margin-bottom:10px;border-bottom:.063rem solid #999}.inpostizi-material-choice-tree-container ul.choice-tree{padding:0;margin:0}.inpostizi-material-choice-tree-container ul.choice-tree li{list-style:none;background:no-repeat 0 3px;background-size:12px 12px}.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox,.inpostizi-material-choice-tree-container ul.choice-tree li .radio{padding-top:0;padding-left:20px}.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox i.md-checkbox-control::before{width:16px;height:16px;margin-top:3px}.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox input[type=checkbox]:checked+i.md-checkbox-control::after,.inpostizi-material-choice-tree-container ul.choice-tree li .checkbox input[type=checkbox]:indeterminate+i.md-checkbox-control::after{top:5px;left:3px;width:11px;height:7px}.inpostizi-material-choice-tree-container ul.choice-tree li ul{padding-left:1rem}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed,.inpostizi-material-choice-tree-container ul.choice-tree .expanded{position:relative;background:none}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.checkbox,.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.radio,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.checkbox,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.radio{cursor:pointer}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.radio::before,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.radio::before{position:absolute;top:-0.25rem;left:-0.1rem;font-family:\"Material Icons\",Arial,Helvetica,sans-serif;font-size:1.25rem;color:#6c868e;cursor:pointer}.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .expanded>.radio::before{content:\"\"}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>ul{display:none}.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.checkbox::before,.inpostizi-material-choice-tree-container ul.choice-tree .collapsed>.radio::before{content:\"\"}","\n.inpostizi-btn-preview {\n\n &__content {\n padding: 20px 30px;\n\n &--light {\n border: 1px solid $border-color;\n background: $gray-200;\n }\n\n &--dark {\n border: 1px solid $gray-600;\n background: $gray-500;\n }\n }\n}\n","\n$border-color: #dbe6e9;\n$gray-200: #F8F8F8;\n$gray-500: #6e6e6e;\n$gray-600: #606060;\n$gray-light: lighten(#000, 60%);\n$gray-medium: #6c868e;\n",".inpostizi-material-choice-tree-container {\n padding: 0.625rem;\n border: 1px solid $gray-light;\n\n .choice-tree-actions {\n margin-bottom: 10px;\n border-bottom: 0.063rem solid $gray-light;\n }\n\n ul.choice-tree {\n padding: 0;\n margin: 0;\n\n li {\n list-style: none;\n background: no-repeat 0 3px;\n background-size: 12px 12px;\n\n .checkbox,\n .radio {\n padding-top: 0;\n padding-left: 20px;\n }\n\n .checkbox {\n i.md-checkbox-control {\n // make material checkbox smaller\n &::before {\n width: 16px;\n height: 16px;\n margin-top: 3px;\n }\n }\n\n input[type=\"checkbox\"] {\n &:checked,\n &:indeterminate {\n + i.md-checkbox-control {\n &::after {\n // make material checkmark smaller\n top: 5px;\n left: 3px;\n width: 11px;\n height: 7px;\n }\n }\n }\n }\n }\n\n ul {\n padding-left: 1rem;\n }\n }\n\n .collapsed,\n .expanded {\n position: relative;\n background: none;\n\n > .checkbox,\n > .radio {\n cursor: pointer;\n\n &::before {\n position: absolute;\n top: -0.25rem;\n left: -0.1rem;\n font-family: \"Material Icons\", Arial, Helvetica, sans-serif;\n font-size: 1.25rem;\n color: $gray-medium;\n cursor: pointer;\n }\n }\n }\n\n .expanded {\n > .checkbox,\n > .radio {\n &::before {\n content: \"\\E313\";\n }\n }\n }\n\n .collapsed {\n // hide inner tree when item is collapsed\n > ul {\n display: none;\n }\n\n > .checkbox,\n > .radio {\n &::before {\n content: \"\\E5CC\";\n }\n }\n }\n }\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/admin/hot-products.css b/modules/inpostizi/views/css/admin/hot-products.css
new file mode 100644
index 00000000..dce31567
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/hot-products.css
@@ -0,0 +1,3 @@
+.ts-control{border:1px solid #d0d0d0;padding:8px 8px;width:100%;overflow:hidden;position:relative;z-index:1;box-sizing:border-box;box-shadow:none;border-radius:3px;display:flex;flex-wrap:wrap}.ts-wrapper.multi.has-items .ts-control{padding:calc(8px - 2px - 0) 8px calc(8px - 2px - 3px - 0)}.full .ts-control{background-color:#fff}.disabled .ts-control,.disabled .ts-control *{cursor:default !important}.focus .ts-control{box-shadow:none}.ts-control>*{vertical-align:baseline;display:inline-block}.ts-wrapper.multi .ts-control>div{cursor:pointer;margin:0 3px 3px 0;padding:2px 6px;background:#f2f2f2;color:#303030;border:0 solid #d0d0d0}.ts-wrapper.multi .ts-control>div.active{background:#e8e8e8;color:#303030;border:0 solid #cacaca}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{color:#7d7d7d;background:#fff;border:0 solid #fff}.ts-control>input{flex:1 1 auto;min-width:7rem;display:inline-block !important;padding:0 !important;min-height:0 !important;max-height:none !important;max-width:100% !important;margin:0 !important;text-indent:0 !important;border:0 none !important;background:none !important;line-height:inherit !important;-webkit-user-select:auto !important;-moz-user-select:auto !important;user-select:auto !important;box-shadow:none !important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:none !important}.has-items .ts-control>input{margin:0 4px !important}.ts-control.rtl{text-align:right}.ts-control.rtl.single .ts-control:after{left:15px;right:auto}.ts-control.rtl .ts-control>input{margin:0 4px 0 -2px !important}.disabled .ts-control{opacity:.5;background-color:#fafafa}.input-hidden .ts-control>input{opacity:0;position:absolute;left:-10000px}.ts-dropdown{position:absolute;top:100%;left:0;width:100%;z-index:10;border:1px solid #d0d0d0;background:#fff;margin:.25rem 0 0;border-top:0 none;box-sizing:border-box;box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:0 0 3px 3px}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:rgba(125,168,208,.2);border-radius:1px}.ts-dropdown .option,.ts-dropdown .optgroup-header,.ts-dropdown .no-results,.ts-dropdown .create{padding:5px 8px}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{opacity:1;cursor:pointer}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.ts-dropdown .optgroup-header{color:#303030;background:#fff;cursor:default}.ts-dropdown .active{background-color:#f5fafd;color:#495c68}.ts-dropdown .active.create{color:#495c68}.ts-dropdown .create{color:rgba(48,48,48,.5)}.ts-dropdown .spinner{display:inline-block;width:30px;height:30px;margin:5px 8px}.ts-dropdown .spinner::after{content:" ";display:block;width:24px;height:24px;margin:3px;border-radius:50%;border:5px solid #d0d0d0;border-color:#d0d0d0 rgba(0,0,0,0) #d0d0d0 rgba(0,0,0,0);animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.ts-dropdown-content{overflow:hidden auto;max-height:200px;scroll-behavior:smooth}.ts-wrapper.plugin-drag_drop .ts-dragging{color:rgba(0,0,0,0) !important}.ts-wrapper.plugin-drag_drop .ts-dragging>*{visibility:hidden !important}.plugin-checkbox_options:not(.rtl) .option input{margin-right:.5rem}.plugin-checkbox_options.rtl .option input{margin-left:.5rem}.plugin-clear_button{--ts-pr-clear-button: 1em}.plugin-clear_button .clear-button{opacity:0;position:absolute;top:50%;transform:translateY(-50%);right:calc(8px - 6px);margin-right:0 !important;background:rgba(0,0,0,0) !important;transition:opacity .5s;cursor:pointer}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{right:max(var(--ts-pr-caret),8px)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{position:relative;padding:10px 8px;border-bottom:1px solid #d0d0d0;background:color-mix(#fff, #d0d0d0, 85%);border-radius:3px 3px 0 0}.ts-wrapper .dropdown-header-close{position:absolute;right:8px;top:50%;color:#303030;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px !important}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input.focus.dropdown-active .ts-control{box-shadow:none;border:1px solid #d0d0d0}.plugin-dropdown_input .dropdown-input{border:1px solid #d0d0d0;border-width:0 0 1px;display:block;padding:8px 8px;box-shadow:none;width:100%;background:rgba(0,0,0,0)}.plugin-dropdown_input .items-placeholder{border:0 none !important;box-shadow:none !important;width:100%}.plugin-dropdown_input.has-items .items-placeholder,.plugin-dropdown_input.dropdown-active .items-placeholder{display:none !important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-moz-placeholder{color:rgba(0,0,0,0)}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:rgba(0,0,0,0)}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;flex-grow:1;flex-basis:0;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.ts-dropdown.plugin-optgroup_columns .optgroup::before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.ts-wrapper.plugin-remove_button .item{display:inline-flex;align-items:center}.ts-wrapper.plugin-remove_button .item .remove{color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:0 6px;border-radius:0 2px 2px 0;box-sizing:border-box}.ts-wrapper.plugin-remove_button .item .remove:hover{background:rgba(0,0,0,.05)}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:none}.ts-wrapper.plugin-remove_button .remove-single{position:absolute;right:0;top:0;font-size:23px}.ts-wrapper.plugin-remove_button:not(.rtl) .item{padding-right:0 !important}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-left:1px solid #d0d0d0;margin-left:6px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-left-color:#cacaca}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-left-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item{padding-left:0 !important}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-right:1px solid #d0d0d0;margin-right:6px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-right-color:#cacaca}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-right-color:#fff}:root{--ts-pr-clear-button: 0px;--ts-pr-caret: 0px;--ts-pr-min: .75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control:not(.rtl){padding-right:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important}.ts-control.rtl{padding-left:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important}.ts-wrapper{position:relative}.ts-dropdown,.ts-control,.ts-control input{color:#303030;font-family:inherit;font-size:13px;line-height:18px}.ts-control,.ts-wrapper.single.input-active .ts-control{background:#fff;cursor:text}.ts-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}
+
+/*# sourceMappingURL=hot-products.css.map*/
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/admin/support.css b/modules/inpostizi/views/css/admin/support.css
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/modules/inpostizi/views/css/admin/support.css
@@ -0,0 +1 @@
+
diff --git a/modules/inpostizi/views/css/front/product.4eeb6b5c5ec8bd44d908.css b/modules/inpostizi/views/css/front/product.4eeb6b5c5ec8bd44d908.css
new file mode 100644
index 00000000..1843786d
--- /dev/null
+++ b/modules/inpostizi/views/css/front/product.4eeb6b5c5ec8bd44d908.css
@@ -0,0 +1 @@
+.product-add-to-cart .product-quantity{flex-wrap:wrap}.product-add-to-cart .product-quantity .inpost-izi-btn-wrapper{width:100%}
\ No newline at end of file
diff --git a/modules/inpostizi/views/css/product.6f69cd7d93f20866f321.css.map b/modules/inpostizi/views/css/product.6f69cd7d93f20866f321.css.map
new file mode 100644
index 00000000..7949821c
--- /dev/null
+++ b/modules/inpostizi/views/css/product.6f69cd7d93f20866f321.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"css/product.6f69cd7d93f20866f321.css","mappings":"AACE,uCACE,eAEA,+DACE,W","sources":["webpack://inpost-pay/./src/css/product.scss"],"sourcesContent":[".product-add-to-cart {\n .product-quantity {\n flex-wrap: wrap;\n\n .inpost-izi-btn-wrapper {\n width: 100%;\n }\n }\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/modules/inpostizi/views/entrypoints.json b/modules/inpostizi/views/entrypoints.json
new file mode 100644
index 00000000..102b32a1
--- /dev/null
+++ b/modules/inpostizi/views/entrypoints.json
@@ -0,0 +1,14 @@
+{
+ "entrypoints": {
+ "v2": {
+ "js": [
+ "../../views/js/front/v2.6af1a84763a244f25b41.js"
+ ]
+ },
+ "product": {
+ "css": [
+ "../../views/css/front/product.4eeb6b5c5ec8bd44d908.css"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/inpostizi/views/img/admin/banner_admin.png b/modules/inpostizi/views/img/admin/banner_admin.png
new file mode 100644
index 00000000..242f512b
Binary files /dev/null and b/modules/inpostizi/views/img/admin/banner_admin.png differ
diff --git a/modules/inpostizi/views/js/admin/admin-legacy.js b/modules/inpostizi/views/js/admin/admin-legacy.js
new file mode 100644
index 00000000..919ea341
--- /dev/null
+++ b/modules/inpostizi/views/js/admin/admin-legacy.js
@@ -0,0 +1 @@
+(()=>{(()=>{var _={};(()=>{"use strict"})()})();})();
diff --git a/modules/inpostizi/views/js/admin/admin.js b/modules/inpostizi/views/js/admin/admin.js
new file mode 100644
index 00000000..ece2ac99
--- /dev/null
+++ b/modules/inpostizi/views/js/admin/admin.js
@@ -0,0 +1,49 @@
+(()=>{(()=>{"use strict";var E={104:u=>{var l=typeof Reflect=="object"?Reflect:null,h=l&&typeof l.apply=="function"?l.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},L;l&&typeof l.ownKeys=="function"?L=l.ownKeys:Object.getOwnPropertySymbols?L=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:L=function(e){return Object.getOwnPropertyNames(e)};function m(n){console&&console.warn&&console.warn(n)}var y=Number.isNaN||function(e){return e!==e};function i(){i.init.call(this)}u.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var _=10;function f(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return _},set:function(n){if(typeof n!="number"||n<0||y(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");_=n}}),i.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},i.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||y(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function c(n){return n._maxListeners===void 0?i.defaultMaxListeners:n._maxListeners}i.prototype.getMaxListeners=function(){return c(this)},i.prototype.emit=function(e){for(var t=[],r=1;r0&&(o=t[0]),o instanceof Error)throw o;var p=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw p.context=o,p}var b=a[e];if(b===void 0)return!1;if(typeof b=="function")h(b,this,t);else for(var j=b.length,M=I(b,j),r=0;r0&&o.length>s&&!o.warned){o.warned=!0;var p=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");p.name="MaxListenersExceededWarning",p.emitter=n,p.type=e,p.count=o.length,m(p)}return n}i.prototype.addListener=function(e,t){return d(this,e,t,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(e,t){return d(this,e,t,!0)};function g(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function w(n,e,t){var r={fired:!1,wrapFn:void 0,target:n,type:e,listener:t},s=g.bind(r);return s.listener=t,r.wrapFn=s,s}i.prototype.once=function(e,t){return f(t),this.on(e,w(this,e,t)),this},i.prototype.prependOnceListener=function(e,t){return f(t),this.prependListener(e,w(this,e,t)),this},i.prototype.removeListener=function(e,t){var r,s,a,o,p;if(f(t),s=this._events,s===void 0)return this;if(r=s[e],r===void 0)return this;if(r===t||r.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(a=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){p=r[o].listener,a=o;break}if(a<0)return this;a===0?r.shift():C(r,a),r.length===1&&(s[e]=r[0]),s.removeListener!==void 0&&this.emit("removeListener",e,p||t)}return this},i.prototype.off=i.prototype.removeListener,i.prototype.removeAllListeners=function(e){var t,r,s;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var a=Object.keys(r),o;for(s=0;s=0;s--)this.removeListener(e,t[s]);return this};function O(n,e,t){var r=n._events;if(r===void 0)return[];var s=r[e];return s===void 0?[]:typeof s=="function"?t?[s.listener||s]:[s]:t?k(s):I(s,s.length)}i.prototype.listeners=function(e){return O(this,e,!0)},i.prototype.rawListeners=function(e){return O(this,e,!1)},i.listenerCount=function(n,e){return typeof n.listenerCount=="function"?n.listenerCount(e):S.call(n,e)},i.prototype.listenerCount=S;function S(n){var e=this._events;if(e!==void 0){var t=e[n];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}i.prototype.eventNames=function(){return this._eventsCount>0?L(this._events):[]};function I(n,e){for(var t=new Array(e),r=0;r{var l=u&&u.__esModule?()=>u.default:()=>u;return v.d(l,{a:l}),l},v.d=(u,l)=>{for(var h in l)v.o(l,h)&&!v.o(u,h)&&Object.defineProperty(u,h,{enumerable:!0,get:l[h]})},v.o=(u,l)=>Object.prototype.hasOwnProperty.call(u,l);var N={};(()=>{var u=v(104),l=v.n(u);/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
+ */const h=new(l()),L=null;/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
+ */const{$:m}=window;class y{constructor(f){const c=f||{};return this.localeItemSelector=c.localeItemSelector||".js-locale-item",this.localeButtonSelector=c.localeButtonSelector||".js-locale-btn",this.localeInputSelector=c.localeInputSelector||".js-locale-input",this.selectedLocale=m(this.localeItemSelector).data("locale"),m("body").on("click",this.localeItemSelector,this.toggleLanguage.bind(this)),h.on("languageSelected",this.toggleInputs.bind(this)),{localeItemSelector:this.localeItemSelector,localeButtonSelector:this.localeButtonSelector,localeInputSelector:this.localeInputSelector,refreshFormInputs:d=>{this.refreshInputs(d)},getSelectedLocale:()=>this.selectedLocale}}refreshInputs(f){this.selectedLocale&&h.emit("languageSelected",{selectedLocale:this.selectedLocale,form:f})}toggleLanguage(f){const c=m(f.target),d=c.closest("form");this.selectedLocale=c.data("locale"),this.refreshInputs(d)}toggleInputs(f){const{form:c}=f;this.selectedLocale=f.selectedLocale;const d=c.find(this.localeButtonSelector),g=d.data("change-language-url");d.text(this.selectedLocale),c.find(this.localeInputSelector).addClass("d-none"),c.find(`${this.localeInputSelector}.js-locale-${this.selectedLocale}`).removeClass("d-none"),g&&this.saveSelectedLanguage(g,this.selectedLocale)}saveSelectedLanguage(f,c){m.post({url:f,data:{language_iso_code:c}})}}const i=y;$(document).ready(()=>{new i;const _=c=>{const d=$(c.currentTarget),g=d.data("target");$(`input[name="${g}"]`).prop("checked",d.prop("checked"))},f=c=>{if(!c.clickEvent)return!0;if($(c.clickEvent.target).closest(".dropdown-menu").length)return!1};$(".js-inpostizi-accept-all-options-checkbox").on("change",_),$('[data-prevent-close-on-inside-click="true"]').on("hide.bs.dropdown",f)})})()})();})();
+
+//# sourceMappingURL=admin.js.map
\ No newline at end of file
diff --git a/modules/inpostizi/views/js/admin/cart-rules.js b/modules/inpostizi/views/js/admin/cart-rules.js
new file mode 100644
index 00000000..c56324eb
--- /dev/null
+++ b/modules/inpostizi/views/js/admin/cart-rules.js
@@ -0,0 +1,3 @@
+(()=>{(()=>{"use strict";var l={};(e=>{document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()})(()=>{const e=document.getElementById("inpostizi_form_tab"),t=document.getElementById("cart_rule_form");e!==null&&t!==null&&t.appendChild(e.content.cloneNode(!0));const n=document.getElementById("inpostizi_nav_link"),o=document.getElementById("cart_rule_link_actions").closest("ul");n!==null&&o!==null&&o.appendChild(n.content.cloneNode(!0))})})();})();
+
+//# sourceMappingURL=cart-rules.js.map
\ No newline at end of file
diff --git a/modules/inpostizi/views/js/admin/consents.js b/modules/inpostizi/views/js/admin/consents.js
new file mode 100644
index 00000000..8b48d600
--- /dev/null
+++ b/modules/inpostizi/views/js/admin/consents.js
@@ -0,0 +1,49 @@
+(()=>{(()=>{"use strict";var V={104:p=>{var f=typeof Reflect=="object"?Reflect:null,y=f&&typeof f.apply=="function"?f.apply:function(e,n,i){return Function.prototype.apply.call(e,n,i)},b;f&&typeof f.ownKeys=="function"?b=f.ownKeys:Object.getOwnPropertySymbols?b=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:b=function(e){return Object.getOwnPropertyNames(e)};function u(s){console&&console.warn&&console.warn(s)}var _=Number.isNaN||function(e){return e!==e};function c(){c.init.call(this)}p.exports=c,c.EventEmitter=c,c.prototype._events=void 0,c.prototype._eventsCount=0,c.prototype._maxListeners=void 0;var I=10;function d(s){if(typeof s!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof s)}Object.defineProperty(c,"defaultMaxListeners",{enumerable:!0,get:function(){return I},set:function(s){if(typeof s!="number"||s<0||_(s))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+s+".");I=s}}),c.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},c.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||_(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function g(s){return s._maxListeners===void 0?c.defaultMaxListeners:s._maxListeners}c.prototype.getMaxListeners=function(){return g(this)},c.prototype.emit=function(e){for(var n=[],i=1;i0&&(l=n[0]),l instanceof Error)throw l;var v=new Error("Unhandled error."+(l?" ("+l.message+")":""));throw v.context=l,v}var C=h[e];if(C===void 0)return!1;if(typeof C=="function")y(C,this,n);else for(var x=C.length,k=W(C,x),i=0;i0&&l.length>a&&!l.warned){l.warned=!0;var v=new Error("Possible EventEmitter memory leak detected. "+l.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");v.name="MaxListenersExceededWarning",v.emitter=s,v.type=e,v.count=l.length,u(v)}return s}c.prototype.addListener=function(e,n){return w(this,e,n,!1)},c.prototype.on=c.prototype.addListener,c.prototype.prependListener=function(e,n){return w(this,e,n,!0)};function O(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function L(s,e,n){var i={fired:!1,wrapFn:void 0,target:s,type:e,listener:n},a=O.bind(i);return a.listener=n,i.wrapFn=a,a}c.prototype.once=function(e,n){return d(n),this.on(e,L(this,e,n)),this},c.prototype.prependOnceListener=function(e,n){return d(n),this.prependListener(e,L(this,e,n)),this},c.prototype.removeListener=function(e,n){var i,a,h,l,v;if(d(n),a=this._events,a===void 0)return this;if(i=a[e],i===void 0)return this;if(i===n||i.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete a[e],a.removeListener&&this.emit("removeListener",e,i.listener||n));else if(typeof i!="function"){for(h=-1,l=i.length-1;l>=0;l--)if(i[l]===n||i[l].listener===n){v=i[l].listener,h=l;break}if(h<0)return this;h===0?i.shift():B(i,h),i.length===1&&(a[e]=i[0]),a.removeListener!==void 0&&this.emit("removeListener",e,v||n)}return this},c.prototype.off=c.prototype.removeListener,c.prototype.removeAllListeners=function(e){var n,i,a;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[e]),this;if(arguments.length===0){var h=Object.keys(i),l;for(a=0;a=0;a--)this.removeListener(e,n[a]);return this};function M(s,e,n){var i=s._events;if(i===void 0)return[];var a=i[e];return a===void 0?[]:typeof a=="function"?n?[a.listener||a]:[a]:n?N(a):W(a,a.length)}c.prototype.listeners=function(e){return M(this,e,!0)},c.prototype.rawListeners=function(e){return M(this,e,!1)},c.listenerCount=function(s,e){return typeof s.listenerCount=="function"?s.listenerCount(e):E.call(s,e)},c.prototype.listenerCount=E;function E(s){var e=this._events;if(e!==void 0){var n=e[s];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}c.prototype.eventNames=function(){return this._eventsCount>0?b(this._events):[]};function W(s,e){for(var n=new Array(e),i=0;i{var f=p&&p.__esModule?()=>p.default:()=>p;return S.d(f,{a:f}),f},S.d=(p,f)=>{for(var y in f)S.o(f,y)&&!S.o(p,y)&&Object.defineProperty(p,y,{enumerable:!0,get:f[y]})},S.o=(p,f)=>Object.prototype.hasOwnProperty.call(p,f);var re={};(()=>{var p=Object.defineProperty,f=(r,t,o)=>t in r?p(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,y=(r,t,o)=>(f(r,typeof t!="symbol"?t+"":t,o),o),b=(r,t,o)=>{if(!t.has(r))throw TypeError("Cannot "+o)},u=(r,t,o)=>(b(r,t,"read from private field"),o?o.call(r):t.get(r)),_=(r,t,o)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,o)},c=(r,t,o,m)=>(b(r,t,"write to private field"),m?m.call(r,o):t.set(r,o),o),I=(r,t,o,m)=>({set _(j){c(r,t,j,o)},get _(){return u(r,t,m)}}),d=(r,t,o)=>(b(r,t,"access private method"),o),g,w,O,L,M,E,W,B,N,s,e,n,i,a,h,l,v,C,x,k;const z="js-collection-entry",A=class{constructor(t){_(this,W),_(this,N),_(this,e),_(this,i),_(this,h),_(this,v),_(this,x),_(this,g,{entries:".js-collection-entries-container",entry:`.${z}`,addEntry:".js-add-collection-entry",removeEntry:".js-remove-collection-entry",maxCountMessage:".js-max-collection-count-message"}),_(this,w,void 0),_(this,O,void 0),_(this,L,void 0),_(this,M,void 0),_(this,E,null),this.wrapper=t,c(this,O,d(this,x,k).call(this,u(this,g).entries)),c(this,L,d(this,v,C).call(this,u(this,g).entry,u(this,O)).length),c(this,w,"maxCount"in this.wrapper.dataset?Number(this.wrapper.dataset.maxCount):null),c(this,M,u(this,L)),c(this,E,d(this,x,k).call(this,u(this,g).addEntry)),d(this,W,B).call(this)}hasMaxEntries(){return u(this,w)!==null&&u(this,L)>=u(this,w)}};g=new WeakMap,w=new WeakMap,O=new WeakMap,L=new WeakMap,M=new WeakMap,E=new WeakMap,W=new WeakSet,B=function(){u(this,E)!==null&&u(this,E).addEventListener("click",()=>d(this,N,s).call(this)),d(this,v,C).call(this,u(this,g).removeEntry).forEach(r=>d(this,e,n).call(this,r)),d(this,h,l).call(this)},N=new WeakSet,s=function(){if(u(this,w)!==null&&u(this,L)>=u(this,w))throw new Error("Cannot add a new collection entry.");const r=document.createElement("div");r.classList.add(z),r.innerHTML=this.wrapper.dataset.prototype.replace(/__name__/g,I(this,M)._++),u(this,O).append(r),++I(this,L)._;const t=r.querySelector(u(this,g).removeEntry);t!==null&&d(this,e,n).call(this,t),d(this,h,l).call(this),this.wrapper.dispatchEvent(new CustomEvent(A.events.entryAdded,{detail:r,bubbles:!0}))},e=new WeakSet,n=function(r){r.addEventListener("click",t=>{d(this,i,a).call(this,t.target)})},i=new WeakSet,a=function(r){const t=r.closest(u(this,g).entry);t.remove(),--I(this,L)._,d(this,h,l).call(this),this.wrapper.dispatchEvent(new CustomEvent(A.events.entryRemoved,{detail:t}))},h=new WeakSet,l=function(){if(u(this,E)===null||u(this,w)===null)return;const r=d(this,x,k).call(this,u(this,g).maxCountMessage);u(this,E).disabled=u(this,L)>=u(this,w),r!==null&&r.classList.toggle("d-none",!u(this,E).disabled)},v=new WeakSet,C=function(r,t=this.wrapper){const o=t.querySelectorAll(r);return Array.from(o).filter(m=>m.closest(A.selector)===this.wrapper)},x=new WeakSet,k=function(r,t=this.wrapper){var o;return(o=d(this,v,C).call(this,r,t).at(0))!=null?o:null},y(A,"selector",".js-collection-form"),y(A,"events",{entryAdded:"collectionEntryAdded",entryRemoved:"collectionEntryRemoved"});let R=A;var D=(r,t,o)=>{if(!t.has(r))throw TypeError("Cannot "+o)},T=(r,t,o)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,o)},X=(r,t,o,m)=>(D(r,t,"write to private field"),m?m.call(r,o):t.set(r,o),o),q=(r,t,o)=>(D(r,t,"access private method"),o),K,U,J,F,G;class Y{constructor(t){T(this,U),T(this,F),T(this,K,void 0),this.wrapper=t,X(this,K,new R(this.wrapper)),q(this,U,J).call(this)}}K=new WeakMap,U=new WeakSet,J=function(){this.wrapper.querySelectorAll(R.selector).forEach(q(this,F,G)),this.wrapper.addEventListener(R.events.entryAdded,r=>{const t=r.detail.querySelector(R.selector);q(this,F,G).call(this,t)})},F=new WeakSet,G=function(r){new R(r)};var Z=S(104),ee=S.n(Z);/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
+ */const Q=new(ee()),se=null;/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
+ */const{$:P}=window;class te{constructor(t){const o=t||{};return this.localeItemSelector=o.localeItemSelector||".js-locale-item",this.localeButtonSelector=o.localeButtonSelector||".js-locale-btn",this.localeInputSelector=o.localeInputSelector||".js-locale-input",this.selectedLocale=P(this.localeItemSelector).data("locale"),P("body").on("click",this.localeItemSelector,this.toggleLanguage.bind(this)),Q.on("languageSelected",this.toggleInputs.bind(this)),{localeItemSelector:this.localeItemSelector,localeButtonSelector:this.localeButtonSelector,localeInputSelector:this.localeInputSelector,refreshFormInputs:m=>{this.refreshInputs(m)},getSelectedLocale:()=>this.selectedLocale}}refreshInputs(t){this.selectedLocale&&Q.emit("languageSelected",{selectedLocale:this.selectedLocale,form:t})}toggleLanguage(t){const o=P(t.target),m=o.closest("form");this.selectedLocale=o.data("locale"),this.refreshInputs(m)}toggleInputs(t){const{form:o}=t;this.selectedLocale=t.selectedLocale;const m=o.find(this.localeButtonSelector),j=m.data("change-language-url");m.text(this.selectedLocale),o.find(this.localeInputSelector).addClass("d-none"),o.find(`${this.localeInputSelector}.js-locale-${this.selectedLocale}`).removeClass("d-none"),j&&this.saveSelectedLanguage(j,this.selectedLocale)}saveSelectedLanguage(t,o){P.post({url:t,data:{language_iso_code:o}})}}const ne=te;$(document).ready(()=>{const r=document.getElementById("consents_configuration_consents");new Y(r),r.addEventListener(R.events.entryAdded,t=>{$(t.detail).find('[data-toggle="popover"]').popover()}),new ne})})()})();})();
+
+//# sourceMappingURL=consents.js.map
\ No newline at end of file
diff --git a/modules/inpostizi/views/js/admin/gui.js b/modules/inpostizi/views/js/admin/gui.js
new file mode 100644
index 00000000..a3fe57ef
--- /dev/null
+++ b/modules/inpostizi/views/js/admin/gui.js
@@ -0,0 +1,26 @@
+(()=>{(()=>{"use strict";var w={};(()=>{const c=i=>{document.readyState==="loading"?document.addEventListener("DOMContentLoaded",i):i()};/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
+ */const{$:s}=window;class p{constructor(n){return this.$container=s(n),this.$container.on("click",".js-input-wrapper",e=>{const t=s(e.currentTarget);this.toggleChildTree(t)}),this.$container.on("click",".js-toggle-choice-tree-action",e=>{const t=s(e.currentTarget);this.toggleTree(t)}),{enableAutoCheckChildren:()=>this.enableAutoCheckChildren(),enableAllInputs:()=>this.enableAllInputs(),disableAllInputs:()=>this.disableAllInputs()}}enableAutoCheckChildren(){this.$container.on("change",'input[type="checkbox"]',n=>{const e=s(n.currentTarget);e.closest("li").find('ul input[type="checkbox"]').prop("checked",e.is(":checked"))})}enableAllInputs(){this.$container.find("input").removeAttr("disabled")}disableAllInputs(){this.$container.find("input").attr("disabled","disabled")}toggleChildTree(n){const e=n.closest("li");if(e.hasClass("expanded")){e.removeClass("expanded").addClass("collapsed");return}e.hasClass("collapsed")&&e.removeClass("collapsed").addClass("expanded")}toggleTree(n){const e=n.closest(".js-choice-tree-container"),t=n.data("action"),o={addClass:{expand:"expanded",collapse:"collapsed"},removeClass:{expand:"collapsed",collapse:"expanded"},nextAction:{expand:"collapse",collapse:"expand"},text:{expand:"collapsed-text",collapse:"expanded-text"},icon:{expand:"collapsed-icon",collapse:"expanded-icon"}};e.find("li").each((x,m)=>{const d=s(m);d.hasClass(o.removeClass[t])&&d.removeClass(o.removeClass[t]).addClass(o.addClass[t])}),n.data("action",o.nextAction[t]),n.find(".material-icons").text(n.data(o.icon[t])),n.find(".js-toggle-text").text(n.data(o.text[t]))}}const a={form:'[name="gui_configuration"]',selects:".js-widget-attribute-provider",previewContents:".js-inpostizi-btn-preview-content"};let l=null;const r=()=>{var i;typeof window.handleInpostIziButtons=="function"&&window.handleInpostIziButtons(),l!==null&&l.refresh(),typeof window.inpostizi_merchant_client_id!="undefined"&&typeof((i=window==null?void 0:window.InPostPayWidget)==null?void 0:i.init)=="function"&&(l=window.InPostPayWidget.init({merchantClientId:window.inpostizi_merchant_client_id}))},h=(i,n)=>{const e=n.getAttribute("data-type"),t=i.querySelector(`${a.previewContents}[data-type="${e}"]`);t&&n.replaceWith(t),r()},u=i=>{const e=new DOMParser().parseFromString(i,"text/html");if(!e)return;document.querySelectorAll(a.previewContents).forEach(o=>{h(e,o)})},C=()=>{const i=document.querySelector(a.form),n=document.querySelectorAll(a.selects),e=()=>{const t=new FormData(i);t.append("gui_configuration[invalid_extra_field]","temporary valid form submission countermeasure"),fetch("",{headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8","x-requested-with":"XMLHttpRequest"},body:new URLSearchParams(t).toString(),method:"POST"}).then(o=>o.text()).then(u)};n.forEach(t=>{t.addEventListener("change",e)})},f=()=>{const i=document.querySelector(".js-choice-tree-container");i!==null&&new p(i).enableAutoCheckChildren()};c(()=>{f(),r()}),c(C)})()})();})();
+
+//# sourceMappingURL=gui.js.map
\ No newline at end of file
diff --git a/modules/inpostizi/views/js/admin/hot-products.js b/modules/inpostizi/views/js/admin/hot-products.js
new file mode 100644
index 00000000..a7a457ce
--- /dev/null
+++ b/modules/inpostizi/views/js/admin/hot-products.js
@@ -0,0 +1,3 @@
+(()=>{var Cn=Object.defineProperty;var xn=(B,F,H)=>F in B?Cn(B,F,{enumerable:!0,configurable:!0,writable:!0,value:H}):B[F]=H;var R=(B,F,H)=>(xn(B,typeof F!="symbol"?F+"":F,H),H);(()=>{"use strict";var B={};(()=>{function F(n,e){n.split(/\s+/).forEach(t=>{e(t)})}class H{constructor(){this._events={}}on(e,t){F(e,i=>{const s=this._events[i]||[];s.push(t),this._events[i]=s})}off(e,t){var i=arguments.length;if(i===0){this._events={};return}F(e,s=>{if(i===1){delete this._events[s];return}const o=this._events[s];o!==void 0&&(o.splice(o.indexOf(t),1),this._events[s]=o)})}trigger(e,...t){var i=this;F(e,s=>{const o=i._events[s];o!==void 0&&o.forEach(r=>{r.apply(i,t)})})}}function He(n){return n.plugins={},class extends n{constructor(){super(...arguments),this.plugins={names:[],settings:{},requested:{},loaded:{}}}static define(e,t){n.plugins[e]={name:e,fn:t}}initializePlugins(e){var t,i;const s=this,o=[];if(Array.isArray(e))e.forEach(r=>{typeof r=="string"?o.push(r):(s.plugins.settings[r.name]=r.options,o.push(r.name))});else if(e)for(t in e)e.hasOwnProperty(t)&&(s.plugins.settings[t]=e[t],o.push(t));for(;i=o.shift();)s.require(i)}loadPlugin(e){var t=this,i=t.plugins,s=n.plugins[e];if(!n.plugins.hasOwnProperty(e))throw new Error('Unable to find "'+e+'" plugin');i.requested[e]=!0,i.loaded[e]=s.fn.apply(t,[t.plugins.settings[e]||{}]),i.names.push(e)}require(e){var t=this,i=t.plugins;if(!t.plugins.loaded.hasOwnProperty(e)){if(i.requested[e])throw new Error('Plugin has circular dependency ("'+e+'")');t.loadPlugin(e)}return i.loaded[e]}}}const Y=n=>(n=n.filter(Boolean),n.length<2?n[0]||"":Ve(n)==1?"["+n.join("")+"]":"(?:"+n.join("|")+")"),pe=n=>{if(!Ne(n))return n.join("");let e="",t=0;const i=()=>{t>1&&(e+="{"+t+"}")};return n.forEach((s,o)=>{if(s===n[o-1]){t++;return}i(),e+=s,t=1}),i(),e},fe=n=>{let e=Array.from(n);return Y(e)},Ne=n=>new Set(n).size!==n.length,z=n=>(n+"").replace(/([\$\(\)\*\+\.\?\[\]\^\{\|\}\\])/gu,"\\$1"),Ve=n=>n.reduce((e,t)=>Math.max(e,Re(t)),0),Re=n=>Array.from(n).length,he=n=>{if(n.length===1)return[[n]];let e=[];const t=n.substring(1);return he(t).forEach(function(s){let o=s.slice(0);o[0]=n.charAt(0)+o[0],e.push(o),o=s.slice(0),o.unshift(n.charAt(0)),e.push(o)}),e},Be=[[0,65535]],Ke="[\u0300-\u036F\xB7\u02BE\u02BC]";let U,ge;const je=3,se={},me={"/":"\u2044\u2215",0:"\u07C0",a:"\u2C65\u0250\u0251",aa:"\uA733",ae:"\xE6\u01FD\u01E3",ao:"\uA735",au:"\uA737",av:"\uA739\uA73B",ay:"\uA73D",b:"\u0180\u0253\u0183",c:"\uA73F\u0188\u023C\u2184",d:"\u0111\u0257\u0256\u1D05\u018C\uABB7\u0501\u0266",e:"\u025B\u01DD\u1D07\u0247",f:"\uA77C\u0192",g:"\u01E5\u0260\uA7A1\u1D79\uA77F\u0262",h:"\u0127\u2C68\u2C76\u0265",i:"\u0268\u0131",j:"\u0249\u0237",k:"\u0199\u2C6A\uA741\uA743\uA745\uA7A3",l:"\u0142\u019A\u026B\u2C61\uA749\uA747\uA781\u026D",m:"\u0271\u026F\u03FB",n:"\uA7A5\u019E\u0272\uA791\u1D0E\u043B\u0509",o:"\xF8\u01FF\u0254\u0275\uA74B\uA74D\u1D11",oe:"\u0153",oi:"\u01A3",oo:"\uA74F",ou:"\u0223",p:"\u01A5\u1D7D\uA751\uA753\uA755\u03C1",q:"\uA757\uA759\u024B",r:"\u024D\u027D\uA75B\uA7A7\uA783",s:"\xDF\u023F\uA7A9\uA785\u0282",t:"\u0167\u01AD\u0288\u2C66\uA787",th:"\xFE",tz:"\uA729",u:"\u0289",v:"\u028B\uA75F\u028C",vy:"\uA761",w:"\u2C73",y:"\u01B4\u024F\u1EFF",z:"\u01B6\u0225\u0240\u2C6C\uA763",hv:"\u0195"};for(let n in me){let e=me[n]||"";for(let t=0;t{U===void 0&&(U=qe(n||Be))},ve=(n,e="NFKD")=>n.normalize(e),Q=n=>Array.from(n).reduce((e,t)=>e+Ue(t),""),Ue=n=>(n=ve(n).toLowerCase().replace(ze,e=>se[e]||""),ve(n,"NFC"));function*Qe(n){for(const[e,t]of n)for(let i=e;i<=t;i++){let s=String.fromCharCode(i),o=Q(s);o!=s.toLowerCase()&&(o.length>je||o.length!=0&&(yield{folded:o,composed:s,code_point:i}))}}const Ge=n=>{const e={},t=(i,s)=>{const o=e[i]||new Set,r=new RegExp("^"+fe(o)+"$","iu");s.match(r)||(o.add(z(s)),e[i]=o)};for(let i of Qe(n))t(i.folded,i.folded),t(i.folded,i.composed);return e},qe=n=>{const e=Ge(n),t={};let i=[];for(let o in e){let r=e[o];r&&(t[o]=fe(r)),o.length>1&&i.push(z(o))}i.sort((o,r)=>r.length-o.length);const s=Y(i);return ge=new RegExp("^"+s,"u"),t},We=(n,e=1)=>{let t=0;return n=n.map(i=>(U[i]&&(t+=i.length),U[i]||i)),t>=e?pe(n):""},Je=(n,e=1)=>(e=Math.max(e,n.length-1),Y(he(n).map(t=>We(t,e)))),_e=(n,e=!0)=>{let t=n.length>1?1:0;return Y(n.map(i=>{let s=[];const o=e?i.length():i.length()-1;for(let r=0;r{for(const t of e){if(t.start!=n.start||t.end!=n.end||t.substrs.join("")!==n.substrs.join(""))continue;let i=n.parts;const s=r=>{for(const l of i){if(l.start===r.start&&l.substr===r.substr)return!1;if(!(r.length==1||l.length==1)&&(r.startl.start||l.startr.start))return!0}return!1};if(!(t.parts.filter(s).length>0))return!0}return!1};class G{constructor(){R(this,"parts");R(this,"substrs");R(this,"start");R(this,"end");this.parts=[],this.substrs=[],this.start=0,this.end=0}add(e){e&&(this.parts.push(e),this.substrs.push(e.substr),this.start=Math.min(e.start,this.start),this.end=Math.max(e.end,this.end))}last(){return this.parts[this.parts.length-1]}length(){return this.parts.length}clone(e,t){let i=new G,s=JSON.parse(JSON.stringify(this.parts)),o=s.pop();for(const c of s)i.add(c);let r=t.substr.substring(0,e-o.start),l=r.length;return i.add({start:o.start,end:o.start+l,length:l,substr:r}),i}}const Ze=n=>{Ye(),n=Q(n);let e="",t=[new G];for(let i=0;i0){c=c.sort((d,u)=>d.length()-u.length());for(let d of c)Xe(d,t)||t.push(d);continue}if(i>0&&a.size==1&&!a.has("3")){e+=_e(t,!1);let d=new G;const u=t[0];u&&d.add(u.last()),t=[d]}}return e+=_e(t,!0),e},et=(n,e)=>{if(n)return n[e]},tt=(n,e)=>{if(n){for(var t,i=e.split(".");(t=i.shift())&&(n=n[t]););return n}},re=(n,e,t)=>{var i,s;return!n||(n=n+"",e.regex==null)||(s=n.search(e.regex),s===-1)?0:(i=e.string.length/n.length,s===0&&(i+=.5),i*t)},oe=(n,e)=>{var t=n[e];if(typeof t=="function")return t;t&&!Array.isArray(t)&&(n[e]=[t])},q=(n,e)=>{if(Array.isArray(n))n.forEach(e);else for(var t in n)n.hasOwnProperty(t)&&e(n[t],t)},nt=(n,e)=>typeof n=="number"&&typeof e=="number"?n>e?1:ne?1:e>n?-1:0);class it{constructor(e,t){R(this,"items");R(this,"settings");this.items=e,this.settings=t||{diacritics:!0}}tokenize(e,t,i){if(!e||!e.length)return[];const s=[],o=e.split(/\s+/);var r;return i&&(r=new RegExp("^("+Object.keys(i).map(z).join("|")+"):(.*)$")),o.forEach(l=>{let c,a=null,d=null;r&&(c=l.match(r))&&(a=c[1],l=c[2]),l.length>0&&(this.settings.diacritics?d=Ze(l)||null:d=z(l),d&&t&&(d="\\b"+d)),s.push({string:l,regex:d?new RegExp(d,"iu"):null,field:a})}),s}getScoreFunction(e,t){var i=this.prepareSearch(e,t);return this._getScoreFunction(i)}_getScoreFunction(e){const t=e.tokens,i=t.length;if(!i)return function(){return 0};const s=e.options.fields,o=e.weights,r=s.length,l=e.getAttrFn;if(!r)return function(){return 1};const c=function(){return r===1?function(a,d){const u=s[0].field;return re(l(d,u),a,o[u]||1)}:function(a,d){var u=0;if(a.field){const f=l(d,a.field);!a.regex&&f?u+=1/r:u+=re(f,a,1)}else q(o,(f,w)=>{u+=re(l(d,w),a,f)});return u/r}}();return i===1?function(a){return c(t[0],a)}:e.options.conjunction==="and"?function(a){var d,u=0;for(let f of t){if(d=c(f,a),d<=0)return 0;u+=d}return u/i}:function(a){var d=0;return q(t,u=>{d+=c(u,a)}),d/i}}getSortFunction(e,t){var i=this.prepareSearch(e,t);return this._getSortFunction(i)}_getSortFunction(e){var t,i=[];const s=this,o=e.options,r=!e.query&&o.sort_empty?o.sort_empty:o.sort;if(typeof r=="function")return r.bind(this);const l=function(a,d){return a==="$score"?d.score:e.getAttrFn(s.items[d.id],a)};if(r)for(let a of r)(e.query||a.field!=="$score")&&i.push(a);if(e.query){t=!0;for(let a of i)if(a.field==="$score"){t=!1;break}t&&i.unshift({field:"$score",direction:"desc"})}else i=i.filter(a=>a.field!=="$score");return i.length?function(a,d){var u,f;for(let w of i)if(f=w.field,u=(w.direction==="desc"?-1:1)*nt(l(f,a),l(f,d)),u)return u;return 0}:null}prepareSearch(e,t){const i={};var s=Object.assign({},t);if(oe(s,"sort"),oe(s,"sort_empty"),s.fields){oe(s,"fields");const o=[];s.fields.forEach(r=>{typeof r=="string"&&(r={field:r,weight:1}),o.push(r),i[r.field]="weight"in r?r.weight:1}),s.fields=o}return{options:s,query:e.toLowerCase().trim(),tokens:this.tokenize(e,s.respect_word_boundaries,i),total:0,items:[],weights:i,getAttrFn:s.nesting?tt:et}}search(e,t){var i=this,s,o;o=this.prepareSearch(e,t),t=o.options,e=o.query;const r=t.score||i._getScoreFunction(o);e.length?q(i.items,(c,a)=>{s=r(c),(t.filter===!1||s>0)&&o.items.push({score:s,id:a})}):q(i.items,(c,a)=>{o.items.push({score:1,id:a})});const l=i._getSortFunction(o);return l&&o.items.sort(l),o.total=o.items.length,typeof t.limit=="number"&&(o.items=o.items.slice(0,t.limit)),o}}const T=n=>typeof n=="undefined"||n===null?null:W(n),W=n=>typeof n=="boolean"?n?"1":"0":n+"",le=n=>(n+"").replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),st=(n,e)=>e>0?window.setTimeout(n,e):(n.call(null),null),rt=(n,e)=>{var t;return function(i,s){var o=this;t&&(o.loading=Math.max(o.loading-1,0),clearTimeout(t)),t=setTimeout(function(){t=null,o.loadedSearches[i]=!0,n.call(o,i,s)},e)}},ye=(n,e,t)=>{var i,s=n.trigger,o={};n.trigger=function(){var r=arguments[0];if(e.indexOf(r)!==-1)o[r]=arguments;else return s.apply(n,arguments)},t.apply(n,[]),n.trigger=s;for(i of e)i in o&&s.apply(n,o[i])},ot=n=>({start:n.selectionStart||0,length:(n.selectionEnd||0)-(n.selectionStart||0)}),C=(n,e=!1)=>{n&&(n.preventDefault(),e&&n.stopPropagation())},L=(n,e,t,i)=>{n.addEventListener(e,t,i)},N=(n,e)=>{if(!e||!e[n])return!1;var t=(e.altKey?1:0)+(e.ctrlKey?1:0)+(e.shiftKey?1:0)+(e.metaKey?1:0);return t===1},ae=(n,e)=>{const t=n.getAttribute("id");return t||(n.setAttribute("id",e),e)},Oe=n=>n.replace(/[\\"']/g,"\\$&"),V=(n,e)=>{e&&n.append(e)},x=(n,e)=>{if(Array.isArray(n))n.forEach(e);else for(var t in n)n.hasOwnProperty(t)&&e(n[t],t)},P=n=>{if(n.jquery)return n[0];if(n instanceof HTMLElement)return n;if(we(n)){var e=document.createElement("template");return e.innerHTML=n.trim(),e.content.firstChild}return document.querySelector(n)},we=n=>typeof n=="string"&&n.indexOf("<")>-1,lt=n=>n.replace(/['"\\]/g,"\\$&"),ce=(n,e)=>{var t=document.createEvent("HTMLEvents");t.initEvent(e,!0,!1),n.dispatchEvent(t)},J=(n,e)=>{Object.assign(n.style,e)},k=(n,...e)=>{var t=be(e);n=Se(n),n.map(i=>{t.map(s=>{i.classList.add(s)})})},M=(n,...e)=>{var t=be(e);n=Se(n),n.map(i=>{t.map(s=>{i.classList.remove(s)})})},be=n=>{var e=[];return x(n,t=>{typeof t=="string"&&(t=t.trim().split(/[\t\n\f\r\s]/)),Array.isArray(t)&&(e=e.concat(t))}),e.filter(Boolean)},Se=n=>(Array.isArray(n)||(n=[n]),n),ue=(n,e,t)=>{if(!(t&&!t.contains(n)))for(;n&&n.matches;){if(n.matches(e))return n;n=n.parentNode}},Ae=(n,e=0)=>e>0?n[n.length-1]:n[0],at=n=>Object.keys(n).length===0,Ce=(n,e)=>{if(!n)return-1;e=e||n.nodeName;for(var t=0;n=n.previousElementSibling;)n.matches(e)&&t++;return t},S=(n,e)=>{x(e,(t,i)=>{t==null?n.removeAttribute(i):n.setAttribute(i,""+t)})},de=(n,e)=>{n.parentNode&&n.parentNode.replaceChild(e,n)},ct=(n,e)=>{if(e===null)return;if(typeof e=="string"){if(!e.length)return;e=new RegExp(e,"i")}const t=o=>{var r=o.data.match(e);if(r&&o.data.length>0){var l=document.createElement("span");l.className="highlight";var c=o.splitText(r.index);c.splitText(r[0].length);var a=c.cloneNode(!0);return l.appendChild(a),de(c,l),1}return 0},i=o=>{o.nodeType===1&&o.childNodes&&!/(script|style)/i.test(o.tagName)&&(o.className!=="highlight"||o.tagName!=="SPAN")&&Array.from(o.childNodes).forEach(r=>{s(r)})},s=o=>o.nodeType===3?t(o):(i(o),0);s(n)},ut=n=>{var e=n.querySelectorAll("span.highlight");Array.prototype.forEach.call(e,function(t){var i=t.parentNode;i.replaceChild(t.firstChild,t),i.normalize()})},dt=65,pt=13,ft=27,ht=37,gt=38,mt=39,vt=40,xe=8,_t=46,Ie=9,X=(typeof navigator=="undefined"?!1:/Mac/.test(navigator.userAgent))?"metaKey":"ctrlKey",Le={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:null,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,shouldOpen:null,maxOptions:50,maxItems:null,hideSelected:null,duplicates:!1,addPrecedence:!1,selectOnTab:!1,preload:null,allowEmptyOption:!1,refreshThrottle:300,loadThrottle:300,loadingClass:"loading",dataAttr:null,optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"ts-wrapper",controlClass:"ts-control",dropdownClass:"ts-dropdown",dropdownContentClass:"ts-dropdown-content",itemClass:"item",optionClass:"option",dropdownParent:null,controlInput:'',copyClassesToDropdown:!1,placeholder:null,hidePlaceholder:null,shouldLoad:function(n){return n.length>0},render:{}};function Ee(n,e){var t=Object.assign({},Le,e),i=t.dataAttr,s=t.labelField,o=t.valueField,r=t.disabledField,l=t.optgroupField,c=t.optgroupLabelField,a=t.optgroupValueField,d=n.tagName.toLowerCase(),u=n.getAttribute("placeholder")||n.getAttribute("data-placeholder");if(!u&&!t.allowEmptyOption){let v=n.querySelector('option[value=""]');v&&(u=v.textContent)}var f={placeholder:u,options:[],optgroups:[],items:[],maxItems:null},w=()=>{var v,b=f.options,y={},h=1;let A=0;var D=m=>{var _=Object.assign({},m.dataset),g=i&&_[i];return typeof g=="string"&&g.length&&(_=Object.assign(_,JSON.parse(g))),_},te=(m,_)=>{var g=T(m.value);if(g!=null&&!(!g&&!t.allowEmptyOption)){if(y.hasOwnProperty(g)){if(_){var I=y[g][l];I?Array.isArray(I)?I.push(_):y[g][l]=[I,_]:y[g][l]=_}}else{var O=D(m);O[s]=O[s]||m.textContent,O[o]=O[o]||g,O[r]=O[r]||m.disabled,O[l]=O[l]||_,O.$option=m,O.$order=O.$order||++A,y[g]=O,b.push(O)}m.selected&&f.items.push(g)}},j=m=>{var _,g;g=D(m),g[c]=g[c]||m.getAttribute("label")||"",g[a]=g[a]||h++,g[r]=g[r]||m.disabled,g.$order=g.$order||++A,f.optgroups.push(g),_=g[a],x(m.children,I=>{te(I,_)})};f.maxItems=n.hasAttribute("multiple")?null:1,x(n.children,m=>{v=m.tagName.toLowerCase(),v==="optgroup"?j(m):v==="option"&&te(m)})},p=()=>{const v=n.getAttribute(i);if(v)f.options=JSON.parse(v),x(f.options,y=>{f.items.push(y[o])});else{var b=n.value.trim()||"";if(!t.allowEmptyOption&&!b.length)return;const y=b.split(t.delimiter);x(y,h=>{const A={};A[s]=h,A[o]=h,f.options.push(A)}),f.items=y}};return d==="select"?w():p(),Object.assign({},Le,f,e)}var ke=0;class E extends He(H){constructor(e,t){super(),this.order=0,this.isOpen=!1,this.isDisabled=!1,this.isReadOnly=!1,this.isInvalid=!1,this.isValid=!0,this.isLocked=!1,this.isFocused=!1,this.isInputHidden=!1,this.isSetup=!1,this.ignoreFocus=!1,this.ignoreHover=!1,this.hasOptions=!1,this.lastValue="",this.caretPos=0,this.loading=0,this.loadedSearches={},this.activeOption=null,this.activeItems=[],this.optgroups={},this.options={},this.userOptions={},this.items=[],this.refreshTimeout=null,ke++;var i,s=P(e);if(s.tomselect)throw new Error("Tom Select already initialized on this element");s.tomselect=this;var o=window.getComputedStyle&&window.getComputedStyle(s,null);i=o.getPropertyValue("direction");const r=Ee(s,t);this.settings=r,this.input=s,this.tabIndex=s.tabIndex||0,this.is_select_tag=s.tagName.toLowerCase()==="select",this.rtl=/rtl/i.test(i),this.inputId=ae(s,"tomselect-"+ke),this.isRequired=s.required,this.sifter=new it(this.options,{diacritics:r.diacritics}),r.mode=r.mode||(r.maxItems===1?"single":"multi"),typeof r.hideSelected!="boolean"&&(r.hideSelected=r.mode==="multi"),typeof r.hidePlaceholder!="boolean"&&(r.hidePlaceholder=r.mode!=="multi");var l=r.createFilter;typeof l!="function"&&(typeof l=="string"&&(l=new RegExp(l)),l instanceof RegExp?r.createFilter=b=>l.test(b):r.createFilter=b=>this.settings.duplicates||!this.options[b]),this.initializePlugins(r.plugins),this.setupCallbacks(),this.setupTemplates();const c=P("
`},preload:!1});n.addEventListener("change",i=>{const s=i.target,o=s.closest("form"),r=new FormData;r.append(s.name,s.value),fetch(o.action,{method:o.method,body:new URLSearchParams(r).toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",charset:"utf-8"}}).then(l=>l.text()).then(l=>new DOMParser().parseFromString(l,"text/html")).then(l=>{e.innerHTML=l.getElementById("combination_choice_wrapper").innerHTML})})},ee=document.getElementById("create_hot_product_productId");ee!==null&&delete ee.dataset.toggle,$(()=>{ee!==null&&bn(ee);const n=$(".js-hot-products-datepicker-input");$.each(n,(e,t)=>{const i=$(t);i.datetimepicker({format:i.data("format")?i.data("format"):"YYYY-MM-DD",sideBySide:!0,icons:{time:"time",date:"date",up:"up",down:"down"}})})})})()})();})();
+
+//# sourceMappingURL=hot-products.js.map
\ No newline at end of file
diff --git a/modules/inpostizi/views/js/admin/support.js b/modules/inpostizi/views/js/admin/support.js
new file mode 100644
index 00000000..434f1cfc
--- /dev/null
+++ b/modules/inpostizi/views/js/admin/support.js
@@ -0,0 +1,3 @@
+(()=>{(()=>{"use strict";var h={};(()=>{const o=e=>{document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()},n={debugSwitch:'[name="advanced_configuration[debugEnabled]"]',form:'[name="advanced_configuration"]'},s=e=>{typeof window.showSuccessMessage=="function"?window.showSuccessMessage(e.message):alert(e.message)},a=e=>{typeof window.showErrorMessage=="function"?window.showErrorMessage(e.message):alert(e.message)},c=e=>{const t=document.querySelector(n.form),d=t.getAttribute("action"),r=new FormData(t);fetch(d,{headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8","x-requested-with":"XMLHttpRequest"},body:new URLSearchParams(r).toString(),method:"POST"}).then(i=>i.json()).then(s).catch(a)};o(()=>{document.querySelectorAll(n.debugSwitch).forEach(t=>{t.addEventListener("change",c)})})})()})();})();
+
+//# sourceMappingURL=support.js.map
\ No newline at end of file
diff --git a/modules/inpostizi/views/js/front/v2.6af1a84763a244f25b41.js b/modules/inpostizi/views/js/front/v2.6af1a84763a244f25b41.js
new file mode 100644
index 00000000..9cdcbc3f
--- /dev/null
+++ b/modules/inpostizi/views/js/front/v2.6af1a84763a244f25b41.js
@@ -0,0 +1 @@
+!function(){"use strict";var e=()=>{const e={merchantClientId:"",basketBindingApiKey:void 0,unboundWidgetClicked:void 0,handleBasketEvent:()=>!1,apiBaseUrl:void 0,webView:!1,language:"pl"};return{setMerchantClientId:t=>{e.merchantClientId=t},setBasketBindingApiKey:t=>{e.basketBindingApiKey=t},setUnboundWidgetClicked:t=>{e.unboundWidgetClicked=t},setHandleBasketEvent:t=>{e.handleBasketEvent=t},setApiBaseUrl:t=>{e.apiBaseUrl=t},setWebView:t=>{e.webView=t},setLanguage:t=>{e.language=t},build:()=>{const t={};for(const n in e)"undefined"!==e[n]&&(t[n]=e[n]);return t}}};var t={orderConfirmationUrl:"inpost/v2/izi/merchant/order/confirmation-url",bindingKey:"inpost/v2/izi/merchant/basket/binding-key"};var n=e=>{const t=new URL(e),n=(e,n)=>{t.searchParams.set(e,n)};return{getURL:()=>t.toString(),addParam:n,addParams:e=>{Object.keys(e).forEach((t=>{n(t,e[t])}))}}};var r=(e,t,r=null,i={})=>{const{addParam:o,addParams:a,getURL:s}=n(e),d={method:t,headers:{"Content-Type":"application/json",...i}};null!==r&&(d.body=JSON.stringify(r));return{getResponse:()=>{const e=d,t=s();return fetch(t,e)},setParams:e=>{a(e)},setParam:(e,t)=>{o(e,t)}}};const i=window.inpostizi_backend_ajax_url;var o=(e,t,o=null,a={})=>{const{addParam:s,getURL:d}=n(i);return s("path",e),r(d(),t,o,a)};var a=async()=>{const{bindingKey:e}=t,{getResponse:n}=o(e,"GET"),r=await n();if(!r.ok&&404!==r.status)throw new Error("Error while fetching binding key");if(404!==r.status)return r.json()};var s=(e=!1)=>!1===e&&null!==window.inpostizi_binding_api_key?window.inpostizi_binding_api_key:!1!==e||window.inpostizi_fetch_binding_key?new Promise(((e,t)=>{a().then((t=>{e(t)})).catch((()=>{t(void 0)}))})):void 0;const d={productPageForm:"#add-to-cart-or-refresh",inpostIziButton:"inpost-izi-button",inpostIziProductButtonWrapper:".js-inpost-izi-product-btn-wrapper",inpostIziAddToCartAlert:".js-inpost-izi-add-to-cart-alert"};var c=()=>void 0!==window.inpost_izi_selectors_map?{...d,...window.inpost_izi_selectors_map}:d;var p=(e,t="success",n="")=>{const r=document.createElement("div");return r.classList.add("alert",`alert-${t}`,"w-100"),"string"==typeof n?r.classList.add(n):Array.isArray(n)&&n.forEach((e=>{r.classList.add(e)})),r.textContent=e,r};var u=e=>{const{inpostIziProductButtonWrapper:t,inpostIziAddToCartAlert:n}=c(),r=p(e.message,"danger",n.replace(".","")),i=document.querySelector(t);if(i){const e=i.querySelector(n);e&&e.remove(),i.prepend(r)}};var w=async e=>{const{getResponse:t,setParams:n}=r(prestashop.urls.pages.cart,"POST",null,{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"});n(e);const i=await t(),o=await i.json();if(o?.hasError&&o?.errors&&Array.isArray(o.errors)){const e=new Error(o.errors.join("\n"));throw setTimeout((()=>{u(e)})),Error("UNDELIVERABLE_PRODUCT")}return prestashop.emit("updateCart",{reason:{idProduct:o.id_product,idProductAttribute:o.id_product_attribute},resp:o}),s()};const l=(e=!1)=>new Promise(((t,n)=>{const r=s(e);r instanceof Promise?r.then((e=>{t(e)})).catch((()=>{n(void 0)})):t(r)}));var h=e=>new Promise(((t,n)=>{if(!e)return void l(!0).then((e=>{t(e)})).catch((e=>{n(e)}));const{productPageForm:r}=c(),i=document.querySelector(r);if(!i)return void n(new Error("Error while adding product to cart: product not found."));const{group:o,...a}=(e=>{const t=new FormData(e),n={},r=[];for(const[e,i]of t.entries())0===e.indexOf("group")?r.push({key:e,value:encodeURIComponent(i)}):n[e]=i;return n.group=r,n})(i),s={add:1,action:"update",ajax:1,...a};o.forEach((e=>{s[e.key]=e.value})),w(s).then((()=>{l(!0).then((e=>{t(e)})).catch((e=>{n(e)}))})).catch((e=>{e instanceof Error&&"UNDELIVERABLE_PRODUCT"===e.message?n(e):n(void 0)}))}));var g=async()=>{const{orderConfirmationUrl:e}=t,{getResponse:n}=o(e,"GET"),r=await n();if(!r.ok)throw new Error("NOK");return r.json()};var f=async e=>{if("basketProductChanged"===e||"basketDeleted"===e)prestashop.emit("updateCart",{reason:{linkAction:"refresh"},resp:{}});else if("orderCreated"===e)try{window.location.href=await g()}catch(e){return!1}return!0};let m;var v=()=>({init:e=>{m=window.InPostPayWidget.init(e)},refresh:()=>{if(void 0===m)throw new Error("Widget is not initialized yet, use init() method first");"function"!=typeof m.rerender?m.refresh():m.rerender()}});var y=()=>({init:()=>{const{init:t,refresh:n}=v(),{setMerchantClientId:r,setBasketBindingApiKey:i,setUnboundWidgetClicked:o,setHandleBasketEvent:a,setLanguage:d,build:c}=e();void 0!==window.prestashop.language.iso_code&&d(window.prestashop.language.iso_code),r(window.inpostizi_merchant_client_id),i(s()),o(h),a(f),t(c()),window.prestashop.on("updatedCart",(()=>n())),window.prestashop.on("updatedProduct",(()=>n()))}});window.prestashop??={},window.prestashop.inpostizi??={},window.prestashop.inpostizi.widget??=v(),"function"!=typeof window.handleInpostIziButtons&&(window.handleInpostIziButtons=window.prestashop.inpostizi.widget.refresh),document.addEventListener("DOMContentLoaded",(()=>{const{init:e}=y();e()}))}();
\ No newline at end of file
diff --git a/modules/inpostizi/views/js/prestashopizi.4993886115875447857a.js b/modules/inpostizi/views/js/prestashopizi.4993886115875447857a.js
new file mode 100644
index 00000000..499c7c7a
--- /dev/null
+++ b/modules/inpostizi/views/js/prestashopizi.4993886115875447857a.js
@@ -0,0 +1,2 @@
+(()=>{(()=>{"use strict";var de={},Y=Object.defineProperty,g=Object.getOwnPropertySymbols,Z=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable,O=(e,n,t)=>n in e?Y(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,S=(e,n)=>{for(var t in n||(n={}))Z.call(n,t)&&O(e,t,n[t]);if(g)for(var t of g(n))tt.call(n,t)&&O(e,t,n[t]);return e};const I={productPageForm:"#add-to-cart-or-refresh",inpostIziButton:"inpost-izi-button",inpostIziProductButtonWrapper:".js-inpost-izi-product-btn-wrapper",inpostIziAddToCartAlert:".js-inpost-izi-add-to-cart-alert"},l=()=>typeof window.inpost_izi_selectors_map!="undefined"?S(S({},I),window.inpost_izi_selectors_map):I,et=e=>{const{inpostIziButton:n}=l();document.querySelectorAll(n).forEach(r=>{r.setAttribute("count",e)})},R={cartBound:!1},H=()=>({getCartBound:()=>R.cartBound,setCartBound:t=>{R.cartBound=t}}),p={basketDeleteBinding:"inpost/v1/izi/merchant/basket/delete/binding",basketPostBinding:"inpost/v1/izi/merchant/basket/post/binding",basketConfirmation:"inpost/v1/izi/merchant/basket/confirmation",orderComplete:"inpost/v1/izi/merchant/order/confirmation/get",basketGetLink:"inpost/v1/izi/merchant/basket/get/link",widgetGet:"inpost/v1/izi/merchant/widget/get"},C=new Map,T=()=>({getEvent:r=>C.get(r),setEvent:(r,s)=>{C.set(r,s)},removeEvent:r=>{C.delete(r)}}),w=()=>{const{orderComplete:e,basketConfirmation:n}=p,{getEvent:t,removeEvent:r}=T(),s=t(e),a=t(n);s&&(s.close(),r(e)),a&&(a.close(),r(n))},k=e=>{const{setCartBound:n,getCartBound:t}=H(),{detail:r=null}=e;r!=null&&r.masked_phone_number||r!=null&&r.basket_linked?n(!0):(r==null?void 0:r.basketLinked)===!1&&n(!1),t()||w()},A=()=>{document.querySelectorAll("inpost-izi-button").forEach(n=>{n.removeEventListener("izi-binding-complete",k),n.addEventListener("izi-binding-complete",k)})},q=()=>{setTimeout(()=>{typeof window.handleInpostIziButtons=="function"&&window.handleInpostIziButtons(),A()},10)},nt=()=>{document.querySelector(".js-cart")!==null&&q()},D=(e=0)=>{const{inpostIziButton:n}=l(),t=new CustomEvent("inpost-update-count",{detail:e});document.querySelectorAll(n).forEach(s=>{s.dispatchEvent(t)})},ot=window.inpostizi_backend_ajax_url,rt=window.inpostizi_cart_ajax_url,G=()=>ot,st=()=>rt,it=e=>e&&typeof e=="object"&&e.constructor===Object,L=e=>{let n=JSON.parse(e);return typeof n=="string"&&(n=L(n)),n},B=L,z=e=>{const n=new URL(e),t=(a,d)=>{n.searchParams.set(a,d)};return{getURL:()=>n.toString(),addParam:t,addParams:a=>{Object.keys(a).forEach(i=>{t(i,a[i])})}}},_=()=>{const e=(window==null?void 0:window.inpostizi_generic_http_error)||"Something went wrong. Please try again later.";return new Error(e)};var at=Object.defineProperty,dt=Object.defineProperties,ct=Object.getOwnPropertyDescriptors,U=Object.getOwnPropertySymbols,ut=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable,j=(e,n,t)=>n in e?at(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,E=(e,n)=>{for(var t in n||(n={}))ut.call(n,t)&&j(e,t,n[t]);if(U)for(var t of U(n))lt.call(n,t)&&j(e,t,n[t]);return e},M=(e,n)=>dt(e,ct(n)),N=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const b=(e,n,t=null,r={})=>{let s={};const{addParam:a,addParams:d,getURL:i}=z(e),o={method:n,headers:E({"Content-Type":"application/json"},r)};t!==null&&(o.body=JSON.stringify(t));const c=()=>o;return{getResponse:()=>N(void 0,null,function*(){return new Promise((f,m)=>N(void 0,null,function*(){try{const v=c(),Q=i();let h=yield fetch(Q,v);if(h.status===405&&["DELETE","PUT"].includes(v.method)&&(h=yield fetch(Q,M(E({},v),{method:"POST",headers:M(E({},v.headers),{"X-HTTP-Method-Override":v.method})}))),h.status===204){f();return}let u=yield h.json();!it(u)&&typeof u=="string"&&(u=B(u)),h.ok?f(u):u!=null&&u.message?m(new Error(u.message)):m(_())}catch(v){if(v instanceof DOMException)return;m(_())}}))}),setParams:f=>{d(f)},setParam:(f,m)=>{a(f,m)}}};var pt=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const vt=()=>pt(void 0,null,function*(){const{getResponse:e}=b(st(),"GET");return yield e()});var ft=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const mt=e=>ft(void 0,null,function*(){var n,t,r,s;let a=((t=(n=e==null?void 0:e.resp)==null?void 0:n.cart)==null?void 0:t.products_count)||null;if(a===null&&(a=((s=(r=window.prestashop)==null?void 0:r.cart)==null?void 0:s.products_count)||null),typeof a=="number")D(a);else try{const{count:d=null}=yield vt();typeof d=="number"&&D(d)}catch(d){console.error(d)}}),$=e=>new DOMParser().parseFromString(e,"text/html").body.children[0],ht=e=>{const{inpostIziProductButtonWrapper:n}=l(),r=$(e).querySelector(n),s=document.querySelector(`${n}[data-hook="displayProductActions"]`);r&&s&&s.replaceWith(r)},wt=e=>{const n=e==null?void 0:e.product_add_to_cart;n&&ht(n),q()},_t=()=>{setTimeout(()=>{const e=document.querySelector(".inpostizi-modal");e&&e.remove()},1)},yt=e=>{_t();const{getCartBound:n}=H();setTimeout(()=>{n()||w()},50)},{getEvent:Pt,setEvent:Ct,removeEvent:Bt}=T(),F=(e,n,t=()=>{})=>{const r=()=>{const{addParam:d,getURL:i}=z(G());return d("path",e),i()},s=()=>{const d=Pt(e);d&&(d.close(),Bt(e))};return{close:s,open:()=>{const d=new EventSource(r()),i=()=>{s(),Ct(e,d),d.removeEventListener("open",i)};d.addEventListener("open",i),d.addEventListener("message",n),d.addEventListener("error",t)}}};function zt(){return new Promise((e,n)=>{const t=d=>{const{data:i=null}=d;if(i){let o;try{o=B(i)}catch(c){return}o!=null&&o.phone_number&&(e(o),a())}},r=d=>{d.target.readyState!==EventSource.CONNECTING&&(n(_()),a())},{open:s,close:a}=F(p.basketConfirmation,t,r);s()})}const W=zt;function Et(){return new Promise((e,n)=>{const t=a=>{const{data:d=null}=a;if(d){let i,o;try{i=B(d)}catch(c){return}if((i==null?void 0:i.action)==="redirect"&&(i!=null&&i.url))o={action:"redirect",redirect:i.url};else if(((i==null?void 0:i.action)==="delete"||(i==null?void 0:i.action)==="refresh")&&(o={action:"refresh"},(i==null?void 0:i.action)==="refresh")){prestashop.emit("updateCart",{reason:{linkAction:"refresh"},resp:{}});return}o&&e(o)}},r=a=>{a.target.readyState!==EventSource.CONNECTING&&(n(_()),close())},{open:s}=F(p.orderComplete,t,r);s()})}const x=Et;var bt=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const gt=()=>new Promise((e,n)=>{setTimeout(()=>{n()},1e3),W().then(t=>{e(t)}).catch(()=>{n()})}),Ot=()=>bt(void 0,null,function*(){let e=null;try{e=yield gt()}catch(n){w();return}if(e!=null&&e.inpost_basket_id&&(e==null?void 0:e.status)==="SUCCESS"){const n=yield x();(n==null?void 0:n.action)==="redirect"&&n.redirect?window.location.href=n.redirect:(n==null?void 0:n.action)==="refresh"&&(window.location=window.location.href)}}),y=(e,n,t=null,r={})=>{const{addParam:s,getURL:a}=z(G());return s("path",e),b(a(),n,t,r)};var St=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const It=(e,n)=>{const{widgetGet:t}=p;return`${t}/${e}/${n}`},Rt=(e,n)=>St(void 0,null,function*(){const t=It(e,n),{getResponse:r,setParam:s}=y(t,"GET");return yield r()});var Ht=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const Tt=(e,n,t)=>Ht(void 0,null,function*(){var r;const{content:s=null}=yield Rt(n,t),{inpostIziButton:a}=l();s&&((r=e.querySelector(a))==null||r.remove(),e.prepend($(s)),typeof window.handleInpostIziButtons=="function"&&window.handleInpostIziButtons())}),kt=()=>{const e=()=>{prestashop.on("updateCart",mt),prestashop.on("updatedCart",nt),prestashop.on("updatedProduct",wt),document.addEventListener("iziModalEventClose",yt),window.addEventListener("beforeunload",w),A()},n=()=>{document.querySelectorAll(l().inpostIziProductButtonWrapper).forEach(s=>{if(s.getAttribute("data-refresh")!=="true")return;const a=parseInt(s.getAttribute("data-id-product"),10),d=s.getAttribute("data-hook");Tt(s,d,a)})};return{init:()=>{var r;(r=prestashop==null?void 0:prestashop.cart)!=null&&r.products_count&&et(prestashop.cart.products_count),Ot(),e(),n()}}},At=(e,n="success",t="")=>{const r=document.createElement("div");return r.classList.add("alert",`alert-${n}`),typeof t=="string"?r.classList.add(t):Array.isArray(t)&&t.forEach(s=>{r.classList.add(s)}),r.textContent=e,r};var qt=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const Dt=e=>{const{inpostIziProductButtonWrapper:n,inpostIziAddToCartAlert:t}=l(),r=At(e.message,"danger",t.replace(".","")),s=document.querySelector(n);if(s){const a=s.querySelector(t);a&&a.remove(),s.prepend(r)}},Gt=e=>qt(void 0,null,function*(){const{getResponse:n,setParams:t}=b(prestashop.urls.pages.cart,"POST",null,{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"});t(e);const r=yield n();if(r!=null&&r.hasError&&(r!=null&&r.errors)&&Array.isArray(r.errors)){const s=new Error(r.errors.join(`
+`));throw setTimeout(()=>{Dt(s),typeof window.handleInpostIziButtons=="function"&&window.handleInpostIziButtons()}),s}prestashop.emit("updateCart",{reason:{idProduct:r.id_product,idProductAttribute:r.id_product_attribute},resp:r})});var Lt=Object.defineProperty,P=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable,V=(e,n,t)=>n in e?Lt(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,Ut=(e,n)=>{for(var t in n||(n={}))J.call(n,t)&&V(e,t,n[t]);if(P)for(var t of P(n))X.call(n,t)&&V(e,t,n[t]);return e},jt=(e,n)=>{var t={};for(var r in e)J.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&P)for(var r of P(e))n.indexOf(r)<0&&X.call(e,r)&&(t[r]=e[r]);return t},Mt=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const Nt=e=>{const n=new FormData(e),t={},r=[];for(let[s,a]of n.entries())name.indexOf("group")===0?r.push({name,value:encodeURIComponent(a)}):t[s]=a;return t.group=r,t};function $t(e){return Mt(this,null,function*(){const{productPageForm:n}=l(),t=document.querySelector(n);if(!t){console.warn("Error while adding product to cart: product not found.");return}const r=Nt(t),{group:s}=r,a=jt(r,["group"]),d=Ut({add:1,action:"update",ajax:1},a);return s.forEach(i=>{d[i.name]=i.value}),yield Gt(d)})}const Ft=$t;var Wt=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});function xt(){return Wt(this,null,function*(){const{getResponse:e}=y(p.basketDeleteBinding,"DELETE");return yield e()})}const Jt=xt,Xt=e=>(window==null?void 0:window.inpostizi_product_page_id_product)===e;function Vt(e){if(!e)return!0;const n=parseInt(e,10);if(Xt(n))return!0;const t=`inpost-izi-button[product-id="${n}"][baskedlinked="true"]`;return document.querySelector(t),!1}const Kt=Vt;var Qt=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});const Yt=(e,n)=>{const{basketPostBinding:t}=p;if(!e&&!n)return t;if(e&&n)return`${t}/${e}/${n}`},K=(e,n,t)=>Qt(void 0,null,function*(){const r=Yt(e,n),{getResponse:s,setParam:a}=y(r,"POST");return a("browser",window.iziGetBrowserData({base64:!0})),a("binding_place",t),yield s()});var Zt=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});function te(e,n="",t="",r="PRODUCT_CARD"){return Zt(this,null,function*(){return yield K(n,t,r)})}const ee=te;var ne=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});function oe(e="",n="",t="PRODUCT_CARD"){return ne(this,null,function*(){return yield K(e,n,t)})}const re=oe;var se=(e,n,t)=>new Promise((r,s)=>{var a=o=>{try{i(t.next(o))}catch(c){s(c)}},d=o=>{try{i(t.throw(o))}catch(c){s(c)}},i=o=>o.done?r(o.value):Promise.resolve(o.value).then(a,d);i((t=t.apply(e,n)).next())});function ie(){return se(this,null,function*(){const{getResponse:e}=y(p.basketGetLink,"GET");return yield e()})}const ae=ie;window.iziAddToCart=Ft,window.iziBindingDelete=Jt,window.iziCanBeBound=Kt,window.iziGetBindingData=ee,window.iziGetIsBound=W,window.iziGetOrderComplete=x,window.iziGetPayData=re,window.iziMobileLink=ae,document.addEventListener("DOMContentLoaded",()=>{kt().init()})})();})();
diff --git a/modules/inpostizi/views/manifest.json b/modules/inpostizi/views/manifest.json
new file mode 100644
index 00000000..1149e382
--- /dev/null
+++ b/modules/inpostizi/views/manifest.json
@@ -0,0 +1,4 @@
+{
+ "v2.js": "js/front/v2.6af1a84763a244f25b41.js",
+ "product.css": "css/front/product.4eeb6b5c5ec8bd44d908.css"
+}
\ No newline at end of file
diff --git a/modules/inpostizi/views/templates/admin/admin_template_translations.tpl b/modules/inpostizi/views/templates/admin/admin_template_translations.tpl
new file mode 100644
index 00000000..eefa24fd
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/admin_template_translations.tpl
@@ -0,0 +1,45 @@
+{l s='Choose a translation for your language' mod='inpostizi'}
+
+{l s='News' mod='inpostizi'}
+{l s='Link to the module' mod='inpostizi'}
+
+{l s='Contact and support' mod='inpostizi'}
+{l s='Technical support - use the contact form' mod='inpostizi'}
+{l s='Contact your sales representative' mod='inpostizi'}
+{l s='FAQ' mod='inpostizi'}
+{l s='Module status' mod='inpostizi'}
+{l s='Download logs and module data' mod='inpostizi'}
+
+{l s='Useful links' mod='inpostizi'}
+{l s='Merchant\'s guide - how to correctly display InPost Pay in your online store' mod='inpostizi'}
+{l s='InPost Pay plugin configuration instructions' mod='inpostizi'}
+{l s='Returns manual' mod='inpostizi'}
+
+{l s='Merchant panel - previewing transactions and handling returns' mod='inpostizi'}
+
+{l s='Button preview' mod='inpostizi'}
+{l s='In order for the widget preview to be displayed, a valid merchant client ID must be provided in the "Configuration" tab.' mod='inpostizi'}
+{l s='Remember to click the \'Save\' button after you finish configuring the button styles' mod='inpostizi'}
+
+{l s='InPost Pay plugin configuration' mod='inpostizi'}
+{l s='Take care of the correct exposure of the InPost Pay service, so that:' mod='inpostizi'}
+{l s='Buyers quickly recognize that when they make a purchase from your store, they can benefit from a fast and secure purchase and delivery service by a company whose services they know and trust, which directly contributes to customers\' purchasing decisions.' mod='inpostizi'}
+{l s='With the correct placement of the widget, you help your customers notice the InPost Pay service, which will allow them to finalize their purchases on your site without having to enter their data, which is especially important for customers who prefer anonymous shopping without logging in.' mod='inpostizi'}
+{l s='Check out Merchant\'s dedicated Guide to the correct implementation of the InPost Pay service. It gathers in one place information on the current branding of InPost Pay, guidelines for the visual implementation of the widget, and best practices worth following when building a positive user experience among online shoppers. You can find Merchant\'s guide in the "useful links" section.' mod='inpostizi'}
+
+{l s='This widget is not configured correctly, correct the values in the form.' mod='inpostizi'}
+
+{l s='Select all options' mod='inpostizi'}
+{l s='Select options from list' mod='inpostizi'}
+
+{l s='Click here' mod='inpostizi'}
+{l s='to go to module documentation and read full instructions on how to configure message format.' mod='inpostizi'}
+
+{* Hot products *}
+{l s='Status' mod='inpostizi'}
+{l s='Active' mod='inpostizi'}
+{l s='Awaiting approval' mod='inpostizi'}
+{l s='Not found in API' mod='inpostizi'}
+{l s='Importable' mod='inpostizi'}
+{l s='Product does not exist or is not available for order' mod='inpostizi'}
+{l s='No products found.' mod='inpostizi'}
diff --git a/modules/inpostizi/views/templates/admin/banner.html.twig b/modules/inpostizi/views/templates/admin/banner.html.twig
new file mode 100644
index 00000000..cca5b00a
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/banner.html.twig
@@ -0,0 +1,2 @@
+
+
diff --git a/modules/inpostizi/views/templates/admin/config/consents.html.twig b/modules/inpostizi/views/templates/admin/config/consents.html.twig
new file mode 100644
index 00000000..03eee29f
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/config/consents.html.twig
@@ -0,0 +1,46 @@
+{% extends '@Modules/inpostizi/views/templates/admin/layout/basic-layout.html.twig' %}
+
+{% form_theme form '@Modules/inpostizi/views/templates/admin/config/form_theme.html.twig' %}
+
+{% block content %}
+
+{%- endblock -%}
+
+{%- block integer_widget -%}
+ {%- set type = type|default('number') -%}
+
+ {{- block('form_widget_simple') -}}
+
+ {% if form.vars.unit is defined %}
+
+ {{ form.vars.unit }}
+
+ {% endif %}
+
+{%- endblock integer_widget -%}
+
+{% block form_label -%}
+ {% if help is defined and help is not null %}
+
+ {% endif %}
+
+ {% if help is defined and help is not null and form.vars.compound %}
+ {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' w-auto')|trim}) %}
+ {% endif %}
+
+ {{- parent() -}}
+
+ {% if help is defined and help is not null %}
+
+ {% endif %}
+
+ {% if help is defined and help is not null %}
+
+ {% endif %}
+{%- endblock form_label %}
+
+{% block checkbox_widget -%}
+
+{% endblock product_restrictions_row %}
+
+{% block choice_widget %}
+ {% if expanded and multiple %}
+
+
+
+ {% set allChecked = true %}
+
+ {% for child in form.children %}
+ {% if child.vars.checked is defined and child.vars.checked is not null %}
+ {% set allChecked = allChecked and child.vars.checked %}
+ {% endif %}
+ {% endfor %}
+
+
+
+ {{ 'Click here'|legacy_trans }}
+
+ {{ 'to go to module documentation and read full instructions on how to configure message format.'|legacy_trans }}
+
+
+
+
+ {{ form_row(messageOptionsForm.message) }}
+
+ {% else %}
+
+ {{ form_row(messageOptionsForm.message) }}
+
+
+
+ {{ 'Click here'|legacy_trans }}
+
+ {{ 'to go to module documentation and read full instructions on how to configure message format.'|legacy_trans }}
+
+
+ {% endif %}
+
diff --git a/modules/inpostizi/views/templates/admin/config/general/order_statuses.html.twig b/modules/inpostizi/views/templates/admin/config/general/order_statuses.html.twig
new file mode 100644
index 00000000..fc858a90
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/config/general/order_statuses.html.twig
@@ -0,0 +1,56 @@
+{% set ordersConfigurationForm = form.ordersConfiguration.statusDescriptionMap %}
+
+
+
+ {{ form_errors(form) }}
+
+ {% set activeName = null %}
+ {% set widgetForms = {} %}
+
+ {% for name, child in form %}
+ {% if child.vars.binding_place is defined %}
+ {% set widgetForms = widgetForms|merge({(name): child}) %}
+ {% if not child.vars.valid and activeName is same as (null) %}
+ {% set activeName = name %}
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+
+ {% if activeName is same as(null) %}
+ {% set activeName = widgetForms|keys|first %}
+ {% endif %}
+
+
+ {% include '@Modules/inpostizi/views/templates/admin/config/gui/config.html.twig' with {
+ form: form.widgetConfiguration,
+ formDisplay: form.displayed,
+ alignmentForm: form.htmlStyles.justifyContent
+ } %}
+
+ {% include '@Modules/inpostizi/views/templates/admin/config/gui/styles.html.twig' with {
+ form: form.htmlStyles,
+ } %}
+
+
+ {% include '@Modules/inpostizi/views/templates/admin/config/gui/preview.html.twig' with {
+ form: form.widgetConfiguration,
+ } %}
+
+
+
diff --git a/modules/inpostizi/views/templates/admin/config/gui/preview.html.twig b/modules/inpostizi/views/templates/admin/config/gui/preview.html.twig
new file mode 100644
index 00000000..2e2481bb
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/config/gui/preview.html.twig
@@ -0,0 +1,24 @@
+
+
+ {{ 'Button preview'|legacy_trans }}
+
+
+
+ {{ 'In order for the widget preview to be displayed, a valid merchant client ID must be provided in the "Configuration" tab.'|legacy_trans }}
+ {{ 'Remember to click the \'Save\' button after you finish configuring the button styles'|legacy_trans }}
+
+
+ {% set btnConfig = form.vars.value %}
+ {% set type = form.vars.name %}
+
+ {% set styleType = btnConfig.darkMode ? 'dark' : 'light' %}
+
+ {% include '@Modules/inpostizi/views/templates/admin/config/gui/preview_btn.html.twig'%}
+
+
diff --git a/modules/inpostizi/views/templates/admin/config/gui/preview_btn.html.twig b/modules/inpostizi/views/templates/admin/config/gui/preview_btn.html.twig
new file mode 100644
index 00000000..23fe3a82
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/config/gui/preview_btn.html.twig
@@ -0,0 +1,6 @@
+
+
diff --git a/modules/inpostizi/views/templates/admin/config/gui/styles.html.twig b/modules/inpostizi/views/templates/admin/config/gui/styles.html.twig
new file mode 100644
index 00000000..47031e7a
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/config/gui/styles.html.twig
@@ -0,0 +1,10 @@
+
+ {% for child in form %}
+ {% if not child.rendered %}
+
+ {% include '@Modules/inpostizi/views/templates/admin/config/support/module_status.html.twig'%}
+ {% include '@Modules/inpostizi/views/templates/admin/config/support/updates.html.twig' %}
+
+
+ {% include '@Modules/inpostizi/views/templates/admin/config/support/how_to.html.twig' %}
+
+
+ {% include '@Modules/inpostizi/views/templates/admin/config/support/troubleshooting.html.twig' %}
+
+ {{ 'Take care of the correct exposure of the InPost Pay service, so that:'|legacy_trans }}
+
+
+
+
+ {{ 'Buyers quickly recognize that when they make a purchase from your store, they can benefit from a fast and secure purchase and delivery service by a company whose services they know and trust, which directly contributes to customers\' purchasing decisions.'|legacy_trans }}
+
+
+ {{ 'With the correct placement of the widget, you help your customers notice the InPost Pay service, which will allow them to finalize their purchases on your site without having to enter their data, which is especially important for customers who prefer anonymous shopping without logging in.'|legacy_trans }}
+
+
+
+
+ {{ 'Check out Merchant\'s dedicated Guide to the correct implementation of the InPost Pay service. It gathers in one place information on the current branding of InPost Pay, guidelines for the visual implementation of the widget, and best practices worth following when building a positive user experience among online shoppers. You can find Merchant\'s guide in the "useful links" section.'|legacy_trans }}
+
+ {% if product.active %}
+ {% include '@Modules/inpostizi/views/templates/admin/hot_products/components/badge.html.twig' with {
+ 'content': 'Active'|legacy_trans,
+ 'state': 'success',
+ 'is_legacy': is_legacy_admin_page
+ }
+ %}
+ {% elseif product.active is same as(false) %}
+ {% include '@Modules/inpostizi/views/templates/admin/hot_products/components/badge.html.twig' with {
+ 'content': 'Awaiting approval'|legacy_trans,
+ 'state': 'info',
+ 'is_legacy': is_legacy_admin_page
+ } %}
+ {% else %}
+ {% include '@Modules/inpostizi/views/templates/admin/hot_products/components/badge.html.twig' with {
+ 'content': 'Not found in API'|legacy_trans,
+ 'state': 'warning',
+ 'is_legacy': is_legacy_admin_page
+ } %} {# TODO: popover with info that export can be retried by item edition? #}
+ {% endif %}
+
+ {% if product.id is same as(null) %}
+ {% if product.importable %}
+ {% include '@Modules/inpostizi/views/templates/admin/hot_products/components/badge.html.twig' with {
+ 'content': 'Importable'|legacy_trans,
+ 'state': 'warning',
+ 'is_legacy': is_legacy_admin_page
+ } %} {# TODO: popover with info that unless imported, API data will not be updated after PS data changes? #}
+ {% else %}
+ {% include '@Modules/inpostizi/views/templates/admin/hot_products/components/badge.html.twig' with {
+ 'content': 'Product does not exist or is not available for order'|legacy_trans,
+ 'state': 'danger',
+ 'is_legacy': is_legacy_admin_page
+ } %}
+ {% endif %}
+ {% endif %}
+
+ {% endif %}
+
+
+
+ {% if product.id is not same as(null) %}
+
+ edit
+
+
+ {% else %}
+ {% if product.importable %}
+
+ {% endif %}
+
+ {% endif %}
+
+
+
+ {% else %}
+
+
+ {{ 'No products found.'|legacy_trans }}
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/modules/inpostizi/views/templates/admin/layout/basic-layout.html.twig b/modules/inpostizi/views/templates/admin/layout/basic-layout.html.twig
new file mode 100644
index 00000000..95a02807
--- /dev/null
+++ b/modules/inpostizi/views/templates/admin/layout/basic-layout.html.twig
@@ -0,0 +1,24 @@
+{% extends '@PrestaShop/Admin/layout.html.twig' %}
+
+{% block content_header %}
+ {{ parent() }}
+
+ {# DISABLED FOR NOW, WE ARE WAITING FOR BANNERS TO COME #}
+{# {% include '@Modules/inpostizi/views/templates/admin/banner.html.twig'%}#}
+{% endblock %}
+
+
+{% block stylesheets %}
+ {{ parent() }}
+
+
+ {% if is_legacy_admin_page %}
+
+ {% endif %}
+{% endblock %}
+
+{% block javascripts %}
+ {{ parent() }}
+
+{% endblock %}
diff --git a/modules/inpostizi/views/templates/front/buttonWidget.tpl b/modules/inpostizi/views/templates/front/buttonWidget.tpl
new file mode 100644
index 00000000..2ba25b37
--- /dev/null
+++ b/modules/inpostizi/views/templates/front/buttonWidget.tpl
@@ -0,0 +1,9 @@
+
+ {$widget|cleanHtml nofilter}
+
+
diff --git a/modules/inpostizi/views/templates/front/productButtonWidget.tpl b/modules/inpostizi/views/templates/front/productButtonWidget.tpl
new file mode 100644
index 00000000..125364e6
--- /dev/null
+++ b/modules/inpostizi/views/templates/front/productButtonWidget.tpl
@@ -0,0 +1,9 @@
+