Files
piratepoet/packages/php/email-editor/src/Engine/class-email-styles-schema.php
2024-11-08 14:06:45 +01:00

69 lines
2.4 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\EmailEditor\Engine;
use MailPoet\EmailEditor\Validator\Builder;
class Email_Styles_Schema {
public function getSchema(): array {
$typographyProps = Builder::object([
'fontFamily' => Builder::string()->nullable(),
'fontSize' => Builder::string()->nullable(),
'fontStyle' => Builder::string()->nullable(),
'fontWeight' => Builder::string()->nullable(),
'letterSpacing' => Builder::string()->nullable(),
'lineHeight' => Builder::string()->nullable(),
'textTransform' => Builder::string()->nullable(),
'textDecoration' => Builder::string()->nullable(),
])->nullable();
return Builder::object([
'version' => Builder::integer(),
'styles' => Builder::object([
'spacing' => Builder::object([
'padding' => Builder::object([
'top' => Builder::string(),
'right' => Builder::string(),
'bottom' => Builder::string(),
'left' => Builder::string(),
])->nullable(),
'blockGap' => Builder::string()->nullable(),
])->nullable(),
'color' => Builder::object([
'background' => Builder::string()->nullable(),
'text' => Builder::string()->nullable(),
])->nullable(),
'typography' => $typographyProps,
'elements' => Builder::object([
'heading' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'button' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'link' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'h1' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'h2' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'h3' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'h4' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'h5' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
'h6' => Builder::object([
'typography' => $typographyProps,
])->nullable(),
])->nullable(),
])->nullable(),
])->toArray();
}
}