diff --git a/app/Enums/Blocks/BlockType.php b/app/Enums/Blocks/BlockType.php index dbccfa20..a81e9933 100644 --- a/app/Enums/Blocks/BlockType.php +++ b/app/Enums/Blocks/BlockType.php @@ -11,6 +11,7 @@ enum BlockType: string /* List of the content blocks available to the application. */ case HEADER_LOGO = 'header-logo'; case PANEL_LINKS = 'panel-links'; + case PRIVACY_POLICY = 'privacy-policy'; case SECTION_DIVIDER = 'section-divider'; case STACK = 'stack'; case TABS = 'tabs'; @@ -25,6 +26,9 @@ enum BlockType: string public function staticData(): array { return match ($this) { + self::PRIVACY_POLICY => [ + 'html' => view('partials.static-blocks.privacy')->render(), + ], self::STACK => [ 'html' => view('partials.static-blocks.stack', [ 'laravel_version' => (new LaravelVersionFormatterResource)->getValue(), @@ -41,6 +45,7 @@ public function staticData(): array * * @return array{ * label: string, + * description: string, * inputs: array>, * inputsRepeatable: array>, * } @@ -66,6 +71,11 @@ public function schema(): array FormInputType::TEXT->schema('Panel URL', 'url'), ], ], + self::PRIVACY_POLICY => [ + 'label' => 'Privacy Policy', + 'description' => 'Privacy policy for the ' . config('app.name') + . ' website, which covers how this app handles your data.', + ], self::SECTION_DIVIDER => [ 'label' => 'Section Divider', ], @@ -90,6 +100,7 @@ public function schema(): array return [ 'label' => $block_schema['label'] ?? '{unknown}', + 'description' => $block_schema['description'] ?? '', 'inputs' => $block_schema['inputs'] ?? [], 'inputsRepeatable' => $block_schema['inputsRepeatable'] ?? [], ]; diff --git a/app/Enums/Webpages/WebpageStatus.php b/app/Enums/Webpages/WebpageStatus.php new file mode 100644 index 00000000..74886896 --- /dev/null +++ b/app/Enums/Webpages/WebpageStatus.php @@ -0,0 +1,19 @@ + 'Draft', + self::PUBLISHED => 'Published', + }; + } +} diff --git a/app/Enums/Webpages/WebpageTemplate.php b/app/Enums/Webpages/WebpageTemplate.php index deab6569..2fa5e2c1 100644 --- a/app/Enums/Webpages/WebpageTemplate.php +++ b/app/Enums/Webpages/WebpageTemplate.php @@ -14,7 +14,6 @@ enum WebpageTemplate: string case AUTH_REGISTER = 'Auth/AuthRegister'; case PROFILE_DASHBOARD = 'Profile/ProfileDashboard'; case PROFILE_EDIT = 'Profile/ProfileEdit'; - case PUBLIC_INDEX = 'Public/PublicHomepage'; case PUBLIC_CONTENT = 'Public/PublicContent'; case PUBLIC_CONTENT_CONTROLS = 'Public/PublicContentControls'; case PUBLIC_CONTENT_FORMS = 'Public/PublicContentForms'; diff --git a/app/Http/Controllers/Admin/PageController.php b/app/Http/Controllers/Admin/PageController.php index b846b7b3..2f0952fd 100644 --- a/app/Http/Controllers/Admin/PageController.php +++ b/app/Http/Controllers/Admin/PageController.php @@ -6,9 +6,11 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Admin\PageUpdateRequest; use App\Http\Resources\Views\Admin\Pages\CreateEditPageResource; +use App\Http\Resources\Views\Public\Content\PageContentResource; use App\Http\Resources\Views\Public\Metadata\PageMetadataResource; use App\Models\Page; use App\Repositories\Views\AdminViewRepository; +use App\Repositories\Views\PublicViewRepository; use App\Services\Admin\PageAdminService; use Illuminate\Http\RedirectResponse; use Inertia\Response; @@ -16,6 +18,25 @@ final class PageController extends Controller { + /** + * Display the given page's preview. + * + * @throws HttpException + */ + public function show(Page $page): RedirectResponse|Response + { + if (!$page->template) { + abort(404); + } + + return (new PublicViewRepository) + ->getViewDetails( + $page->template, + (new PageContentResource($page))->getItem(), + (new PageMetadataResource)->getItem($page) + ); + } + /** * Display the edit view for the given page. * diff --git a/app/Http/Controllers/Public/PageController.php b/app/Http/Controllers/Public/PageController.php index bb6e0e39..7184aea7 100644 --- a/app/Http/Controllers/Public/PageController.php +++ b/app/Http/Controllers/Public/PageController.php @@ -27,9 +27,10 @@ public function show(Page $page): RedirectResponse|Response return to_route('home'); } - $template = WebpageTemplate::tryFrom($page?->template ?? ''); - - if (!$template) { + if ( + !$page->isPublished() + || !$template = WebpageTemplate::tryFrom($page?->template ?? '') + ) { abort(404); } diff --git a/app/Http/Controllers/Public/PrivacyPolicyController.php b/app/Http/Controllers/Public/PrivacyPolicyController.php index b2fab4e4..faf07fc9 100644 --- a/app/Http/Controllers/Public/PrivacyPolicyController.php +++ b/app/Http/Controllers/Public/PrivacyPolicyController.php @@ -2,26 +2,31 @@ namespace App\Http\Controllers\Public; -use App\Enums\Webpages\WebpageTemplate; use App\Http\Controllers\Controller; -use App\Http\Resources\Views\Public\Content\PageContentResource; -use App\Http\Resources\Views\Public\Metadata\PageMetadataResource; -use App\Models\Page; +use App\Http\Resources\Views\Public\Content\PrivacyPolicyContentResource; use App\Repositories\Views\PublicViewRepository; use Inertia\Response; +use Symfony\Component\HttpKernel\Exception\HttpException; final class PrivacyPolicyController extends Controller { - /** Display the public privacy policy page. */ + /** + * Display the public privacy policy page. + * + * @throws HttpException + */ public function __invoke(): Response { - $page = Page::where('slug', 'privacy')->first() ?? Page::factory()->privacyPage()->make(); - $template = $page?->template ?? WebpageTemplate::PUBLIC_CONTENT->value; + $content_resource = new PrivacyPolicyContentResource; + + if (!$template = $content_resource->getTemplate()) { + abort(404); + } return (new PublicViewRepository)->getViewDetails( - $template, - (new PageContentResource($page))->getItem(), - (new PageMetadataResource)->getItem($page) + $template->value, + $content_resource->getItem(), + $content_resource->getMetaData() ); } } diff --git a/app/Http/Requests/Admin/PageUpdateRequest.php b/app/Http/Requests/Admin/PageUpdateRequest.php index 37323057..9d1dbc55 100644 --- a/app/Http/Requests/Admin/PageUpdateRequest.php +++ b/app/Http/Requests/Admin/PageUpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\Admin; +use App\Enums\Webpages\WebpageStatus; use App\Interfaces\Requests\RequestInterface; use Illuminate\Foundation\Http\FormRequest; @@ -17,10 +18,8 @@ public function rules(): array return [ 'blocks' => ['nullable', 'max:5120'], 'title' => ['required', 'string', 'max:255'], - 'subtitle' => ['nullable', 'string', 'max:255'], - 'content' => ['nullable', 'string', 'max:5120'], - 'metaTitle' => ['nullable', 'string', 'max:255'], 'metaDescription' => ['nullable', 'string', 'max:255'], + 'webpageStatusId' => ['required', 'integer', 'max:' . WebpageStatus::PUBLISHED->value], 'inSitemap' => ['required', 'boolean'], ]; } diff --git a/app/Http/Resources/Views/Admin/Pages/CreateEditPageResource.php b/app/Http/Resources/Views/Admin/Pages/CreateEditPageResource.php index 71b00531..43c066e5 100644 --- a/app/Http/Resources/Views/Admin/Pages/CreateEditPageResource.php +++ b/app/Http/Resources/Views/Admin/Pages/CreateEditPageResource.php @@ -2,6 +2,7 @@ namespace App\Http\Resources\Views\Admin\Pages; +use App\Enums\Webpages\WebpageStatus; use App\Http\Resources\Views\Admin\Blocks\AdminBlocksResource; use App\Interfaces\Resources\Items\PageItemInterface; use App\Models\Page; @@ -19,12 +20,11 @@ final class CreateEditPageResource implements PageItemInterface * data: array|string>, * schema: array{label:string, inputs:array} * }>, - * content: string, - * subtitle: string, * title: string, - * metaTitle: string, * metaDescription: string, * inSitemap: bool, + * slug: string|null, + * webpageStatusId: \Closure, * } */ public function getItem(Page $page): array @@ -32,12 +32,12 @@ public function getItem(Page $page): array return [ 'id' => $page->id, 'blocks' => (new AdminBlocksResource($page->blocks, $page))->getItems(), - 'content' => $page->getContent(), - 'subtitle' => $page->getSubtitle(), 'title' => $page->getTitle(), - 'metaTitle' => $page->getMetaTitle(), 'metaDescription' => $page->getMetaDescription(), 'inSitemap' => $page->isInSitemap(), + 'slug' => $page->slug, + 'webpageStatusId' => fn () => WebpageStatus::tryFrom($page->webpage_status_id ?? 1)?->value + ?? WebpageStatus::DRAFT->value, ]; } } diff --git a/app/Http/Resources/Views/Public/Content/HomepageContentResource.php b/app/Http/Resources/Views/Public/Content/HomepageContentResource.php index f1cac1da..9cc5e933 100644 --- a/app/Http/Resources/Views/Public/Content/HomepageContentResource.php +++ b/app/Http/Resources/Views/Public/Content/HomepageContentResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources\Views\Public\Content; use App\Enums\Blocks\BlockType; +use App\Enums\Webpages\WebpageStatus; use App\Enums\Webpages\WebpageTemplate; use App\Interfaces\Resources\Items\ConstantItemInterface; use App\Models\Block; @@ -17,6 +18,7 @@ public function __construct( if (!$this->page->id) { $this->page = Page::query() ->isHomepage() + ->published() ->with('blocks') ->first() ?? new Page; @@ -35,9 +37,6 @@ public function __construct( * type: string, * data: array|string>, * }>, - * bodytext: string, - * heading: string, - * subheading: string, * } */ public function getItem(): array @@ -55,7 +54,8 @@ public function getTemplate(): ?WebpageTemplate public function setDefaultModel(): void { $this->page = new Page([ - 'template' => WebpageTemplate::PUBLIC_INDEX->value, + 'webpage_status_id' => WebpageStatus::PUBLISHED->value, + 'template' => WebpageTemplate::PUBLIC_CONTENT->value, 'slug' => 'home', 'title' => config('app.name'), 'meta_description' => config('metadata.description'), diff --git a/app/Http/Resources/Views/Public/Content/PageContentResource.php b/app/Http/Resources/Views/Public/Content/PageContentResource.php index 3c40f9b6..43936749 100644 --- a/app/Http/Resources/Views/Public/Content/PageContentResource.php +++ b/app/Http/Resources/Views/Public/Content/PageContentResource.php @@ -21,18 +21,12 @@ public function __construct( * type: string, * data: array|string>, * }>, - * bodytext: string, - * heading: string, - * subheading: string, * } */ public function getItem(): array { return [ 'blocks' => (new BlocksResource)->getItems($this->page->blocks), - 'bodytext' => $this->page->getContent(), - 'heading' => $this->page->getTitle(), - 'subheading' => $this->page->getSubtitle(), ]; } } diff --git a/app/Http/Resources/Views/Public/Content/PrivacyPolicyContentResource.php b/app/Http/Resources/Views/Public/Content/PrivacyPolicyContentResource.php new file mode 100644 index 00000000..5309472d --- /dev/null +++ b/app/Http/Resources/Views/Public/Content/PrivacyPolicyContentResource.php @@ -0,0 +1,102 @@ +page->id) { + $this->page = Page::query() + ->published() + ->where('slug', 'privacy') + ->with('blocks') + ->first() + ?? new Page; + } + + if (!$this->getTemplate()) { + $this->setDefaultModel(); + } + } + + /** + * Get the content array for the site's privacy page. + * + * @return array{ + * blocks: array|string>, + * }>, + * } + */ + public function getItem(): array + { + return (new PageContentResource($this->page))->getItem(); + } + + /** + * Get the meta-data array for the site's privacy page. + * + * @return array{canonical: string, description: string, title: string} + */ + public function getMetaData(): array + { + return (new PageMetadataResource)->getItem($this->page); + } + + /** Get the template for the resource. */ + public function getTemplate(): ?WebpageTemplate + { + return $this->page->getTemplate(); + } + + /** Set the resource's page to the default privacy page model. */ + public function setDefaultModel(): void + { + $this->page = new Page([ + 'webpage_status_id' => WebpageStatus::PUBLISHED->value, + 'template' => WebpageTemplate::PUBLIC_CONTENT->value, + 'slug' => 'privacy', + 'title' => 'Privacy Policy', + 'meta_title' => 'Privacy Policy', + 'meta_description' => 'Privacy policy for the ' . config('app.name') . ' website, which covers how this app handles your data.', + ]); + + $this->page->blocks = collect([ + new Block([ + 'type' => BlockType::WYSIWYG->value, + 'parent_type' => Page::class, + 'parent_id' => $this->page->id, + 'data' => json_encode([ + 'html' => '

PRIVACY POLICY

+

' . config('app.name') . '

', + ]), + ]), + + new Block([ + 'type' => BlockType::SECTION_DIVIDER->value, + 'parent_type' => Page::class, + 'parent_id' => $this->page->id, + ]), + + new Block([ + 'type' => BlockType::PRIVACY_POLICY->value, + 'parent_type' => Page::class, + 'parent_id' => $this->page->id, + ]), + ]); + + $page = Page::factory()->privacyPage()->make(); + } +} diff --git a/app/Http/Resources/Views/Public/Metadata/PageMetadataResource.php b/app/Http/Resources/Views/Public/Metadata/PageMetadataResource.php index ee67079a..2e5da6c9 100644 --- a/app/Http/Resources/Views/Public/Metadata/PageMetadataResource.php +++ b/app/Http/Resources/Views/Public/Metadata/PageMetadataResource.php @@ -17,7 +17,7 @@ public function getItem(Page $page): array return [ 'canonical' => $page->getUrl(), 'description' => $page->getMetaDescription(), - 'title' => $page->getMetaTitle(), + 'title' => $page->getTitle(), ]; } } diff --git a/app/Http/Resources/Views/Public/Summaries/PageSummaryResource.php b/app/Http/Resources/Views/Public/Summaries/PageSummaryResource.php deleted file mode 100644 index c43ea47d..00000000 --- a/app/Http/Resources/Views/Public/Summaries/PageSummaryResource.php +++ /dev/null @@ -1,23 +0,0 @@ - $page->getMetaDescription(), - 'title' => $page->getTitle(), - 'url' => $page->getUrl(), - ]; - } -} diff --git a/app/Models/Page.php b/app/Models/Page.php index 08ac2e5d..ba6d3cbb 100644 --- a/app/Models/Page.php +++ b/app/Models/Page.php @@ -28,11 +28,9 @@ final class Page extends Model * @var array */ protected $fillable = [ + 'webpage_status_id', 'slug', 'title', - 'subtitle', - 'content', - 'meta_title', 'meta_description', 'meta_keywords', 'open_graph_id', @@ -41,12 +39,6 @@ final class Page extends Model 'is_homepage', ]; - /** Get the HTML content string for the page. */ - public function getContent(): string - { - return $this->content ?? ''; - } - /** Get the public URL's path for the page. */ public function getPath(): string { @@ -55,12 +47,6 @@ public function getPath(): string : route('page.show', $this->slug, false); } - /** Get the subtitle for the page. */ - public function getSubtitle(): string - { - return $this->subtitle ?? ''; - } - /** Get the public URL for the page. */ public function getUrl(): string { diff --git a/app/Traits/HasPageView.php b/app/Traits/HasPageView.php index 8911780c..63fec443 100644 --- a/app/Traits/HasPageView.php +++ b/app/Traits/HasPageView.php @@ -2,11 +2,13 @@ namespace App\Traits; +use App\Enums\Webpages\WebpageStatus; use App\Enums\Webpages\WebpageTemplate; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Query\Builder as QueryBuilder; /** + * @method Builder|static published() * @method Builder|static inSitemap() * @method static Builder|static query() */ @@ -26,12 +28,6 @@ public function getMetaKeywords(): string return $this->meta_keywords ?? ''; } - /** Get the meta-title for the resource. */ - public function getMetaTitle(): string - { - return ($this->meta_title && trim($this->meta_title) !== '') ? $this->meta_title : $this->getTitle(); - } - /** Get the webpage template for the resource. */ public function getTemplate(): ?WebpageTemplate { @@ -50,6 +46,12 @@ public function isInSitemap(): bool return $this->in_sitemap ?? false; } + /** Returns true if the item is marked as published. */ + public function isPublished(): bool + { + return $this->webpage_status_id === WebpageStatus::PUBLISHED->value; + } + /** Returns all models that should be in the sitemap (in_sitemap = 1). */ public function scopeInSitemap(Builder|QueryBuilder $query): Builder|QueryBuilder { @@ -57,4 +59,12 @@ public function scopeInSitemap(Builder|QueryBuilder $query): Builder|QueryBuilde $query->where('in_sitemap', 1); }); } + + /** Returns all models that are Published (webpage_status_id = 2). */ + public function scopePublished(Builder|QueryBuilder $query): Builder|QueryBuilder + { + return $query->where(function ($query) { + $query->where('webpage_status_id', WebpageStatus::PUBLISHED->value); + }); + } } diff --git a/composer.json b/composer.json index f9a760e3..eda9bef2 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "php": "8.2.*||8.3.*", "guzzlehttp/guzzle": "^7.8.1", "inertiajs/inertia-laravel": "^1.3", - "laravel/framework": "^11.15", + "laravel/framework": "^11.16", "laravel/tinker": "^2.9.0", "tightenco/ziggy": "^1.8.2" }, diff --git a/composer.lock b/composer.lock index edc48890..16ce58dc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "49f7ea1856eb411443953713f6d87d27", + "content-hash": "4259c6564f1c84080d1f8e1bc3bf8853", "packages": [ { "name": "brick/math", @@ -1128,16 +1128,16 @@ }, { "name": "laravel/framework", - "version": "v11.15.0", + "version": "v11.16.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "ba85f1c019bed59b3c736c9c4502805efd0ba84b" + "reference": "bd4808aaf103ccb5cb4b00bcee46140c070c0ec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/ba85f1c019bed59b3c736c9c4502805efd0ba84b", - "reference": "ba85f1c019bed59b3c736c9c4502805efd0ba84b", + "url": "https://api.github.com/repos/laravel/framework/zipball/bd4808aaf103ccb5cb4b00bcee46140c070c0ec4", + "reference": "bd4808aaf103ccb5cb4b00bcee46140c070c0ec4", "shasum": "" }, "require": { @@ -1330,7 +1330,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-07-09T15:38:12+00:00" + "time": "2024-07-16T14:33:07+00:00" }, { "name": "laravel/prompts", @@ -6863,16 +6863,16 @@ }, { "name": "pestphp/pest", - "version": "v2.34.8", + "version": "v2.34.9", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "e8f122bf47585c06431e0056189ec6bfd6f41f57" + "reference": "ef120125e036bf84c9e46a9e62219702f5b92e16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/e8f122bf47585c06431e0056189ec6bfd6f41f57", - "reference": "e8f122bf47585c06431e0056189ec6bfd6f41f57", + "url": "https://api.github.com/repos/pestphp/pest/zipball/ef120125e036bf84c9e46a9e62219702f5b92e16", + "reference": "ef120125e036bf84c9e46a9e62219702f5b92e16", "shasum": "" }, "require": { @@ -6891,7 +6891,7 @@ }, "require-dev": { "pestphp/pest-dev-tools": "^2.16.0", - "pestphp/pest-plugin-type-coverage": "^2.8.3", + "pestphp/pest-plugin-type-coverage": "^2.8.4", "symfony/process": "^6.4.0|^7.1.1" }, "bin": [ @@ -6955,7 +6955,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.34.8" + "source": "https://github.com/pestphp/pest/tree/v2.34.9" }, "funding": [ { @@ -6967,7 +6967,7 @@ "type": "github" } ], - "time": "2024-06-10T22:02:16+00:00" + "time": "2024-07-11T08:36:26+00:00" }, { "name": "pestphp/pest-plugin", diff --git a/database/factories/PageFactory.php b/database/factories/PageFactory.php index b8cf2e79..5304dc0e 100644 --- a/database/factories/PageFactory.php +++ b/database/factories/PageFactory.php @@ -2,6 +2,8 @@ namespace Database\Factories; +use App\Enums\Blocks\BlockType; +use App\Enums\Webpages\WebpageStatus; use App\Enums\Webpages\WebpageTemplate; use App\Traits\FakesDatabaseValues; use Illuminate\Database\Eloquent\Factories\Factory; @@ -16,18 +18,16 @@ final class PageFactory extends Factory /** * Define the model's default state. * - * @return array + * @return array */ public function definition(): array { $title = $this->getFakeString(); return [ + 'webpage_status_id' => WebpageStatus::PUBLISHED->value, 'slug' => urlencode(str_replace(' ', '-', $title)), 'title' => ucwords($title), - 'subtitle' => null, - 'content' => null, - 'meta_title' => null, 'meta_description' => null, 'meta_keywords' => null, 'open_graph_id' => null, @@ -44,29 +44,25 @@ public function aboutPage(): static ...$attributes, 'slug' => 'about', 'title' => 'About', - 'subtitle' => config('app.name'), - 'content' => '', - 'meta_title' => 'About', 'meta_description' => config('metadata.description'), ])); } + /** Indicate that the model should have draft webpage status. */ + public function draft(): static + { + return $this->state(fn (array $attributes) => array_merge([ + ...$attributes, + 'webpage_status_id' => WebpageStatus::DRAFT->value, + ])); + } + /** Indicate that the model should use faked data with all fields filled. */ public function dummy(): static { - $title = $this->getFakeString(); - return $this->state(fn (array $attributes) => array_merge([ - 'slug' => urlencode(str_replace(' ', '-', $title)), - 'title' => ucwords($title), - 'subtitle' => $this->getFakeString(), - 'content' => $this->getFakeTextHtml(), - 'meta_title' => ucwords($title), - 'meta_description' => $this->getFakeString(20, 30), - 'template' => WebpageTemplate::PUBLIC_CONTENT->value, - 'in_sitemap' => true, - 'is_homepage' => false, ...$attributes, + 'meta_description' => $this->getFakeString(20, 30), ])); } @@ -77,11 +73,7 @@ public function homePage(): static ...$attributes, 'slug' => 'home', 'title' => config('app.name'), - 'subtitle' => config('metadata.description'), - 'content' => '', - 'meta_title' => config('app.name'), 'meta_description' => config('metadata.description'), - 'template' => WebpageTemplate::PUBLIC_INDEX->value, 'in_sitemap' => false, 'is_homepage' => true, ])); @@ -94,10 +86,7 @@ public function privacyPage(): static ...$attributes, 'slug' => 'privacy', 'title' => 'Privacy Policy', - 'subtitle' => config('app.name'), - 'content' => view('partials.body.privacy')->render(), - 'meta_title' => 'Privacy Policy', - 'meta_description' => 'Privacy policy for the ' . config('app.name') . ' website, which covers how this app handles your data.', + 'meta_description' => BlockType::PRIVACY_POLICY->schema()['description'], ])); } } diff --git a/database/migrations/2024_07_16_000000_drop_subtitle_content_meta_title_from_pages.php b/database/migrations/2024_07_16_000000_drop_subtitle_content_meta_title_from_pages.php new file mode 100644 index 00000000..066d5986 --- /dev/null +++ b/database/migrations/2024_07_16_000000_drop_subtitle_content_meta_title_from_pages.php @@ -0,0 +1,52 @@ +dropColumn('subtitle'); + }); + } + + if (Schema::hasColumn('pages', 'content')) { + Schema::table('pages', function (Blueprint $table) { + $table->dropColumn('content'); + }); + } + + if (Schema::hasColumn('pages', 'meta_title')) { + Schema::table('pages', function (Blueprint $table) { + $table->dropColumn('meta_title'); + }); + } + } + + /** Reverse the migrations. */ + public function down(): void + { + if (!Schema::hasColumn('pages', 'subtitle')) { + Schema::table('users', function (Blueprint $table) { + $table->string('subtitle')->nullable()->after('title'); + }); + } + + if (!Schema::hasColumn('pages', 'content')) { + Schema::table('users', function (Blueprint $table) { + $table->text('content')->nullable()->after('subtitle'); + }); + } + + if (!Schema::hasColumn('pages', 'meta_title')) { + Schema::table('users', function (Blueprint $table) { + $table->string('meta_title')->nullable()->after('content'); + }); + } + } +}; diff --git a/database/migrations/2024_07_16_000001_add_webpage_status_id_to_pages.php b/database/migrations/2024_07_16_000001_add_webpage_status_id_to_pages.php new file mode 100644 index 00000000..581f15c4 --- /dev/null +++ b/database/migrations/2024_07_16_000001_add_webpage_status_id_to_pages.php @@ -0,0 +1,28 @@ +integer('webpage_status_id')->nullable()->after('id'); + }); + } + } + + /** Reverse the migrations. */ + public function down(): void + { + if (Schema::hasColumn('pages', 'webpage_status_id')) { + Schema::table('pages', function (Blueprint $table) { + $table->dropColumn('webpage_status_id'); + }); + } + } +}; diff --git a/database/seeders/PageSeeder.php b/database/seeders/PageSeeder.php index 31f7a992..77d28826 100644 --- a/database/seeders/PageSeeder.php +++ b/database/seeders/PageSeeder.php @@ -2,6 +2,8 @@ namespace Database\Seeders; +use App\Enums\Webpages\WebpageStatus; +use App\Enums\Webpages\WebpageTemplate; use App\Models\Block; use App\Models\Page; use Exception; @@ -26,16 +28,14 @@ public function run(): void if ($seeds !== [0]) { foreach ($seeds as $seed) { $page = Page::factory()->create([ + 'webpage_status_id' => $seed['webpage_status_id'] ?? WebpageStatus::PUBLISHED->value, 'slug' => $seed['slug'] ?? null, 'title' => $seed['title'] ?? null, - 'subtitle' => $seed['subtitle'] ?? null, - 'content' => $seed['content'] ?? null, - 'meta_title' => $seed['meta_title'] ?? null, - 'meta_description' => $seed['meta_description'] ?? null, - 'meta_keywords' => $seed['meta_keywords'] ?? null, - 'template' => $seed['template'] ?? null, 'in_sitemap' => $seed['in_sitemap'] ?? 1, 'is_homepage' => $seed['is_homepage'] ?? 0, + 'meta_description' => $seed['meta_description'] ?? null, + 'meta_keywords' => $seed['meta_keywords'] ?? null, + 'template' => $seed['template'] ?? WebpageTemplate::PUBLIC_CONTENT->value, ]); foreach ($seed['blocks'] ?? [] as $display_order => $block) { diff --git a/package-lock.json b/package-lock.json index c7bd4ee4..3259ec0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "@ckeditor/ckeditor5-vue": "^6.0.0", "@vueuse/components": "^10.11.0", "@vueuse/core": "^10.11.0", - "ckeditor5": "^42.0.0" + "ckeditor5": "^42.0.1" }, "devDependencies": { "@inertiajs/vue3": "^1.2.0", @@ -23,8 +23,8 @@ "eslint-plugin-vue": "^9.27.0", "laravel-vite-plugin": "^1.0.5", "postcss": "^8.4.39", - "tailwindcss": "^3.4.4", - "vite": "^5.3.3", + "tailwindcss": "^3.4.6", + "vite": "^5.3.4", "vue": "^3.4.31" }, "engines": { @@ -65,456 +65,456 @@ } }, "node_modules/@ckeditor/ckeditor5-adapter-ckfinder": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-42.0.0.tgz", - "integrity": "sha512-d07ywmOA3ZwqL9tTT1c8oAScqqhA0Az8GC6HqIkPuSaCRKVC55aOLDkmPyACiHFkUkrhmCV9ldkVKoqptxRJVQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-42.0.1.tgz", + "integrity": "sha512-dfyULdo7vQDnFJWZfm0Qv6scW2TVnWLPEVo5r1D9knZbDC4zWFCmr0GeSjMHYKbtstPJzQ1QiVWKMFhWPvOeLg==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-alignment": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-42.0.0.tgz", - "integrity": "sha512-hr1v5shN3D41EhnliLc5Svrg/JfyoKnSgnFLvejTYdd8HCyVqfiedgFCYP/goeSZTaGPpAIPojYdpQwtJON6+Q==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-42.0.1.tgz", + "integrity": "sha512-vy0SyqB1+SQ5ADZyyqZy4I4kD1SEVigFuCA+77IyaL9eDWvwZswwp+YuvnLRe3pZgPhCus1QMbxgbalhxnbhRg==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-autoformat": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-42.0.0.tgz", - "integrity": "sha512-dGMwLPk4Q3Np/dVAOqwVefnS0dRGqARmcnV9lhpeC44mw+1ba3pxpCitxHkZY8epQHkLyhOuacWTPqSqAcB+bQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-42.0.1.tgz", + "integrity": "sha512-jJvtrbgtvbB4gcgWnAXIyHpb51i3dxY84Uwoc1KIRJyBeCX2vSoXKZ9frnQZp1r5r/MZfW0esuqyMHDI9R+TJQ==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-autosave": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-42.0.0.tgz", - "integrity": "sha512-Tqd8xbvjF6WTMl8R0QaCU0IW/TdqR1SlH/qXuLd+D96crCcXArRFdJ+oIjw6eJ436iI1Yp0aHzZb/KAnZ75Jww==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-42.0.1.tgz", + "integrity": "sha512-ogKO/b+Ckj1yJTkuhCUnsVXkgHztKcU8K8zmpN9+nZR+BHqPEsrw7zEYdQm6LQi3tARdEvDvItqehcGDi9MA8Q==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-basic-styles": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-42.0.0.tgz", - "integrity": "sha512-CWMlmdTilDMlMrTA4UzxkSIpxliafcAC6mp2doDkm3MZ1K6+YewHpcxHRuZAsBMYGkmQSLq0YcqdTnDXoICSXA==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-42.0.1.tgz", + "integrity": "sha512-p//VnlaacNeMTOmWdSFQomrTsteXRACkwd8Fr1qTu/m8FT4x8o0S2+UMiIh+H2fkUz9kqfy0lm/BE/RKsBOjng==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-block-quote": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-42.0.0.tgz", - "integrity": "sha512-VBXHHHALhW+iBfyAiQxskV45ozVGuanKRNagVXHPba0QLIEa2JUN75/5RVZVw3qr2BqS1wUKCrbb4qHeF94Otw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-42.0.1.tgz", + "integrity": "sha512-pSh752pye2vp68DAnrUg+Evi1FlxbBK2zUjt2xT92WOrqpow9b1LYdmnZkeJayt271+ot1rowyNEm8v+uOZBHw==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-ckbox": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-42.0.0.tgz", - "integrity": "sha512-QcfLRpherNotB8XxMzHYk+CeAcqNOHan5e+kBN+mOcPkIcsbapt7RPI680YChw/sv/0yY8/5SbvXdcsn+KCFzw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-42.0.1.tgz", + "integrity": "sha512-1URxhD1ejokpsTUyD+s8aoZkejBh84402sfwLTXnF6oF7Fd6XpFwkW7u3kRQVgkP88d+BeT+SXUw9230IODD5w==", "dependencies": { "blurhash": "2.0.5", - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-ckfinder": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-42.0.0.tgz", - "integrity": "sha512-P5hCrP4EPWRdIg7vXh2PjpovWq1SLgfjRCqC+a9hs5q/W3nYc+SIZbawJOV/kr5eq/E1O4e2flehGG7Y22AKVw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-42.0.1.tgz", + "integrity": "sha512-tZx2UNBblgRhJEP+ZylAOsp8DT8lvmpjxnfQWgh9RKhzrH13b4cIjN+7lbDNVLtuniCz0aSR7dHnWBrl9TxUOg==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-clipboard": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-42.0.0.tgz", - "integrity": "sha512-/ajaQ5q0auwNsZEX1rveGQ5lBpeuhWWAVo/Ouv1IJT77G6nFDubqlYcKZEidGne2v1wtIgDK+nddnlxVdX8tvQ==", - "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-engine": "42.0.0", - "@ckeditor/ckeditor5-ui": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0", - "@ckeditor/ckeditor5-widget": "42.0.0", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-42.0.1.tgz", + "integrity": "sha512-+NN8dqdskyrtkjdv5NXZqO1VvKlGvQh1+kC/PqAuBBB/mGNVHBXnUmV3RoIFHBv3C7YolW3ltwjQduz71Ay25A==", + "dependencies": { + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-engine": "42.0.1", + "@ckeditor/ckeditor5-ui": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1", + "@ckeditor/ckeditor5-widget": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-cloud-services": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-42.0.0.tgz", - "integrity": "sha512-PfH3PPB9fkweXSBfHzTbsHP/jEfDmkueGKGVkO7Z/luCASWjtNfQypykkkrDnMRv1PMJmBnK9wheWEGqBoS4kA==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-42.0.1.tgz", + "integrity": "sha512-nzwJKgWR0SFXV1b4pkxnOZelk2aXWxiaAmMrF4jZV8F1pTVsU3/SKxBbqhZxQZFImi9xhAGdka6QrIwEquIq1g==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-code-block": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-42.0.0.tgz", - "integrity": "sha512-RsXWRo6pbI2MsMHE+AE03UqEHgzErj/EO1lQy4vqgNNHqhXWqjMQZo4WSnzboczHRjNi3cNNFIw6r4nqm1Yz9w==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-42.0.1.tgz", + "integrity": "sha512-Ix35lRf/gS0sLPS3QawZYfnyT8TtEwTW0kfg/lhx7z+lTXmjlR7cAVAeIDrP3uQnASEydyIWHkqlzp9le0HjGA==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-core": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-42.0.0.tgz", - "integrity": "sha512-0WZTQM4JD3qobXNTPRMq0o1t+vYRWzkzX0LwoooZVn7NKIqCrYqVsTuV0xsN7qT0vdFNRvA9TYYfinw7j9Y4rw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-42.0.1.tgz", + "integrity": "sha512-a/Lftjxi/jFiBM8l9/VI7qNqiTgGSqed4FGua1RFfE35v6goOsfFhIPkzT9sTXJL5ZDj7Zjrh/RrOc3jKzjdPA==", "dependencies": { - "@ckeditor/ckeditor5-engine": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0", - "@ckeditor/ckeditor5-watchdog": "42.0.0", + "@ckeditor/ckeditor5-engine": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1", + "@ckeditor/ckeditor5-watchdog": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-easy-image": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-42.0.0.tgz", - "integrity": "sha512-Sb0DxfeN/BSq17ITkEoiCNMIqVcpV4JvNzDe7NlYnzmo6zL5HLX8Qd/fQAV44MrTZY8Lifkd4zqFSmSCcCZC2g==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-42.0.1.tgz", + "integrity": "sha512-l+1Pa7K5DzCL6d5+3nwDPYEUxC92pkfRQGn+LDdfjXg3kCyRexP5FasFrRCwuNmZRjws+B8gzLoTS1bRCrWB4A==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-editor-balloon": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-42.0.0.tgz", - "integrity": "sha512-tTszKMob0WO7J3xEIi2GQxtDgY19dUTcGHBqpMRE2bcGTUKeeeqjfJwnNww/kDjYR+e4fmz9U5VRVg8PKQZVqQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-42.0.1.tgz", + "integrity": "sha512-gZ8rFF7NbYUsNfHY4I2QYbHvfoQiGu1puzflZ7vPEiu/q09E8W5TtYwRTaWDXfIwLP4RbpXBKb4xnArThdrFqw==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-editor-classic": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-42.0.0.tgz", - "integrity": "sha512-/Np+DH2AVlkPVk3pkIJxJaJp2x+2GXkvn3wo/5ZFGbVBXI+e9todALoRRg2dB9EVRpv08I3ajzk5k1yl6MFa5w==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-42.0.1.tgz", + "integrity": "sha512-WASM6IXZED1uTvbWtLAgkga9JCVITvWGgDVAJgAYD6+7a5F2iEqxdegoV4duSr0qWhhzFqeRpey8mLrUi9VYwg==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-editor-decoupled": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-42.0.0.tgz", - "integrity": "sha512-bTgtSsu2f7QOMtWXZ2BQvnZ/DHRQE/wL9qN5MBhTbNf7vcayEEo++GJ/3sgLctzL7FxRCY0IqRvSrBf4fLFEZg==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-42.0.1.tgz", + "integrity": "sha512-IR/ymKv813b8lVcFtKA6jGBvSTyc8UMOr/5yTCmvUYGBYjD39wv4QQpj4AClbbVL8CPNxUAToexLxelhjc1cgQ==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-editor-inline": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-42.0.0.tgz", - "integrity": "sha512-JUe8YV59Ek4lornaa5hXQQOFkDxA3l0tp9qVIdkl2WONI1pjtK1aMxWJgeybxRGDHPSJW2Wyu/kNKw2slQP+Jg==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-42.0.1.tgz", + "integrity": "sha512-A2qd/hcKpeIxRubyWLK2TZhPPCvZsDJerySSAzw6fFpAgedlBV2Lz048tV3AJholhwlFsITuaNyna/dTVE6/qg==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-editor-multi-root": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-42.0.0.tgz", - "integrity": "sha512-l/+xnoVIGJeX3qU8CEKdc5RNr0Bbch2t5VNNK+N9An4SrK4ScLESyrKsIoWc4XPOoyhNe1j0luT8Ix35ftDroQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-42.0.1.tgz", + "integrity": "sha512-IDU22zezBwM40/ofeAloHGzbghQxPlKW21h6XYs1RmKJLzq87BuxiZ4KY8hJkg9asdZrw4gU7YS20570QvjBjQ==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-engine": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-42.0.0.tgz", - "integrity": "sha512-9JhZDAu+IAJYD3SCrssrDU9XmEYfu+1XtYKslNlXRweNIf5QlVeZhb3pTjcR/4lbxNuYXc/VSNsFfEjbPKm1/g==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-42.0.1.tgz", + "integrity": "sha512-hI7qVWVYYcfCeJ846Kjbbam4VnYYG93XDcL2SXKcyCgtuiJPiQroL7tvfSKTvBn2KZR2SwpHFfPkm5QXrZP+Xg==", "dependencies": { - "@ckeditor/ckeditor5-utils": "42.0.0", + "@ckeditor/ckeditor5-utils": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-enter": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-42.0.0.tgz", - "integrity": "sha512-HlSMX9jYZ1fob5L5+dJ7dmYxJT2RVzgO95IeMXvbsSMEQ5IC1ZhE8UIcaStNTUZ7SNQzhcX6cqUrPO8Zhh46xw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-42.0.1.tgz", + "integrity": "sha512-HuROcF33ekLzR8Uuc7tkonZqxEcpQ37pkd1Rx7V6JCt60rapm7cpELKl3nxDDyPUh+cWZ2nM6iQh/vsvXZkSKw==", "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-engine": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0" + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-engine": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-essentials": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-42.0.0.tgz", - "integrity": "sha512-DYWrEcraXiw+S9lbAk3UfvOnSe2ActOchk15hTishQKhRBzPqLDWr8bTYy4TwgwaMJg1gW9KK5o19oHLfW0P3A==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-42.0.1.tgz", + "integrity": "sha512-+hjE9KMCIsmajNmWVdUYpx27CogUry1g674VJ6he9QaFqrVsfApihZD98Zgl1QfoDdaCFnBpI9W/PE+2M1veIw==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-find-and-replace": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-42.0.0.tgz", - "integrity": "sha512-WrScnK58umy8LqGpYvQieJd8mgo9yYKVoG0KnDrlj+Q2hZhGqta5jt1CRlYOQLO2QsVg9POt6oioUTiWee60ag==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-42.0.1.tgz", + "integrity": "sha512-GhjbzZIJ6aVfbQyCfru6jGTv1A3tmNcWs/YncSewZFb1Xxgk9EkfPcynB+hG3X8X38bX8ggvbxoicRFGKqzLHg==", "dependencies": { - "@ckeditor/ckeditor5-ui": "42.0.0", - "ckeditor5": "42.0.0", + "@ckeditor/ckeditor5-ui": "42.0.1", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-font": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-font/-/ckeditor5-font-42.0.0.tgz", - "integrity": "sha512-7ds9luaUDdHrmdZ6JKPn82+DkJAJ3Ej5Rdta8xfcnI1kDvGcLPRzwPCHeM5AD8RRqHX28B87U4FaOk9ehOE+Nw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-font/-/ckeditor5-font-42.0.1.tgz", + "integrity": "sha512-5TEbQvvrQn45S+08ancAFFecv8BWvC2L4nIxPKKYikOsFNScE6C5nxrr/Xaa98ZEgHowp48z+yZxLjTDwOZctQ==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-heading": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-42.0.0.tgz", - "integrity": "sha512-KLquk1q0yOjw9rGgq+beigc3uzIk5+5fq1VJCfyeq2qkrLdezWf21Up0h8zCBjJGt4Dw7jodJyMnK4GH3885Xw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-42.0.1.tgz", + "integrity": "sha512-Uf6IlamcgnZn3VkliP4+qWxEFKdaZNGfCntU08oW4b0Wf3i3P7lbBz73ZQ1sUF79QWZVlZiMIuQNL5RjAc93eA==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-highlight": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-42.0.0.tgz", - "integrity": "sha512-aWEv0yHVmzj9JRpXnURWSs64lphei+Bc6PbiecpQJvidjmFSgmVO0pFGtHe+iMmGy7S4TTGnPVEnq4IS0gGdgQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-42.0.1.tgz", + "integrity": "sha512-mUvnfdX6HYa7kbsfDILLCX32Ia4lFDfOQm/mx5gR17hxbv//u55jZESKwvwNwUBoYXzln/hg2ifqoPFTFuC/aA==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-horizontal-line": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-42.0.0.tgz", - "integrity": "sha512-9YIYENX3YM2WXLItD1rqMq+Lqc3daRT4E18C2FXgfrMUQNYDyM5UFzsi6HahjvRe2pbYOx0MwYGvaHgSjBVsCQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-42.0.1.tgz", + "integrity": "sha512-nw99pQ3dgm9G/M88UDtcvVUy3Xb6+baLz1IvanfItgVrH8FFObICFZjNJWxd/H4xtbQzMz1Ty6w8ZocPWja9sg==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-html-embed": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-42.0.0.tgz", - "integrity": "sha512-nh4ROlPU6enn9uOYigOsJHegnZslVs3UYOhLsod2JBOB2spF0AcoqOtk/Oh6SLajDa0iZ+oi1U7iNxXvekcysQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-42.0.1.tgz", + "integrity": "sha512-MEim8XV+75aEnDGRkrft15oURiyVEOvHo9h+7cFeE3hgI9+wjk/V3arHQIAUkZTT3XpRv8LQKjBC1hmXTz7YyA==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-html-support": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-42.0.0.tgz", - "integrity": "sha512-HPwiaz9Ah2BjuS2UgLdYv+APo+k0HJG79M/dgC3rNLX0O3IoWBDBXfcRhWKiGE1FBV3l1jt8eQgnaqsuKC6PIw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-42.0.1.tgz", + "integrity": "sha512-RxWl+RyfBSpa9setDWmtoF3ertzVOmaLi7Aw7xnyn71jV+S3aCMlZphiv7m9KENNy46FOc+Nzct5sScnJ+EpVg==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-image": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-42.0.0.tgz", - "integrity": "sha512-lKq4OuhLDNS4sip4/yl/vGDuOitTCInMYEhvwZXlm6eFem75FTJnL1Co5+zKIVWktWvH2eFqmOGjv2jKrJIVgw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-42.0.1.tgz", + "integrity": "sha512-O1u27JxByLNgZpmwP3up6lh48IU89w/7rMvd9WByQCyZpUPTT2J/4Mvjlimq1AMt61qmzx08TdcfhI+8aRhBvA==", "dependencies": { - "@ckeditor/ckeditor5-ui": "42.0.0", - "ckeditor5": "42.0.0", + "@ckeditor/ckeditor5-ui": "42.0.1", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-indent": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-42.0.0.tgz", - "integrity": "sha512-Ba7cTreIEFoF0mJXRjBZdwgyzSvdmnqtlwMInM/IBIJDo6Vi4zx4svA2G1PvY/hV3UCvCAxzSqQ7s62yQT4KEQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-42.0.1.tgz", + "integrity": "sha512-aT/ui69ncvXFv/9TJqe3TUegppH62b2E9XaQqfwCmm1jZ5BDEG8oYnJI1htnsnmQSOXqye7m5276F+47nrN42w==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-language": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-language/-/ckeditor5-language-42.0.0.tgz", - "integrity": "sha512-x1cFYKtxBz1dhWXZ6DGvegCks7st6N1jFL55kyDgkvZqjsui/aPSvHnrcT6T0UO2sjMwAJh5/be5PXAJJ1yL0g==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-language/-/ckeditor5-language-42.0.1.tgz", + "integrity": "sha512-iWmfEySQqDzNT8VN7qh8yr8tzUjrUwjYuYV2yvggNHPMo66JoRGsJwwZDYcdx1tOzIhcxOtZnQLK3v34k0gNQg==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-link": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-42.0.0.tgz", - "integrity": "sha512-myphicJKjwv1LZ0pFdd1u4VOQieonPoNezRhsrFBkLTqIADgMp3+2PETyls5W8JZnua4sg/724Wa9TPmn9BLAA==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-42.0.1.tgz", + "integrity": "sha512-SaLYdmAknaMgX9ABxafMUmJ7a42IgKZQU58+wwwD+gWmaXt/vmWSCSbe1q6+e49UejnBMC4NCDC6YaQWAiTrIw==", "dependencies": { - "@ckeditor/ckeditor5-ui": "42.0.0", - "ckeditor5": "42.0.0", + "@ckeditor/ckeditor5-ui": "42.0.1", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-list": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-42.0.0.tgz", - "integrity": "sha512-taBQvwlhWmzFGGxOa5QH+XFeFRPke2X+3L/bdp/PJb9ZBX/wuqDL/cECQwDjblbGG8Iu1pDBOZSMG/bIknZjog==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-42.0.1.tgz", + "integrity": "sha512-yEzFuO28msXm8I65lpF/D6eWLDK6ZsWnKsYDcQI45QlsVGxrs9r0t4mJzmHv26lN4p4/2pv5CPM1w1+ovvC6Ww==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-markdown-gfm": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-42.0.0.tgz", - "integrity": "sha512-wtNpAkBiyobHbeLpsnnf9aroSIIjvKYsNxeNqB7P55ZyRN+mLdGQxp2ozPgCIjeb34SaalJ1VtiRnPS+B+NbaQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-42.0.1.tgz", + "integrity": "sha512-P2ihM9c3cVDeCdrVk3JoTmG3ApJZgbYy1Iag1rcoLyVW185nn4H3rkPBVSVFfa1+B9lw0Oe50YcPv67mIWe8VQ==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "marked": "4.0.12", "turndown": "7.2.0", "turndown-plugin-gfm": "1.0.2" } }, "node_modules/@ckeditor/ckeditor5-media-embed": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-42.0.0.tgz", - "integrity": "sha512-cbaTwnnNC8Li497WrArw4BcENQcv+b7FH7Q93bjytQN8vrxZR8+eWfCHbaR8dNewAWLI4/jNp9S64koOMOhUTQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-42.0.1.tgz", + "integrity": "sha512-OnaZb8LdXKS7jyWRSInXFtA/u+t9KcSJAO68MxRnI1bkUdegudaj4JzXX7/ifIocgFTdG+QlG+v40PAUfXYTkQ==", "dependencies": { - "@ckeditor/ckeditor5-ui": "42.0.0", - "ckeditor5": "42.0.0" + "@ckeditor/ckeditor5-ui": "42.0.1", + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-mention": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-42.0.0.tgz", - "integrity": "sha512-6jC5vGfHAeYarmgecw4cWj7u1E4EgFZlQh6Z15WcQ2OeHTiBLh1fGFPM10gKauIYfUsmHfsVFsafGyByFQsZBw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-42.0.1.tgz", + "integrity": "sha512-lrRSMHtbo6kuKzfoUk7D5hb7IQaFnDtTsePk7k7kkg22T0yCzxeJwmd314dAZfcNf5D49izvg1RucpquJ6XS4g==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-minimap": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-42.0.0.tgz", - "integrity": "sha512-cTbZqve6xYh5D4XSecU1AEx5Rl2gRm2U91G3O53GddhuScG9tchmZ2n3kzFz6FkDcYpgWJBLK5uEdSBede+YeQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-42.0.1.tgz", + "integrity": "sha512-OGdFguNeEVUh8pUF0VCAEkbM5QIiQJW9KPWc+wLJyhSMnLV4J9abI1vBalTD/C/obD1g/gKtGu3jhxNk1YMEOg==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-page-break": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-42.0.0.tgz", - "integrity": "sha512-2Bg4cAMBs1RGIMn0CZSnADSG+Zn19u0/qMfxR5Js5AolMjsMFcvfHVHrP7WTPfYKz0S0F9LLWTEjyf3f6PU3Og==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-42.0.1.tgz", + "integrity": "sha512-bCRTEh2giOIidDjjBI+xK8TJ0QvXLtahDEV7MmecAeXu1SAk2FpECl60BUMl+/DQcaK3XGHsLZCMZsSdCXGqbQ==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-paragraph": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-42.0.0.tgz", - "integrity": "sha512-CNEc+YBDD5vysMxzSkCRXNtCeWJH2Drq2ynFc6YAOVXnfAQvpW3PnuwHMUQvS6r1BCk35xEbUpuRLCXxOuoipg==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-42.0.1.tgz", + "integrity": "sha512-rxGX+vnrxUGpTXZQSIO5XBP2Cz8CaYyufLF8Ad4fTpT6VT++BAczI0r2ij5SZLK7iCKQfHBrzz1BvatJmxjr5Q==", "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-ui": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0" + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-ui": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-paste-from-office": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-42.0.0.tgz", - "integrity": "sha512-pfBOovJz+CnXXX4XQLJQTBRWHTnlG7gibzzMnnmK+KIzsjlVOGrl09c2uafQo0QvgNSH0bF6Yhxn6T2CTCWcYw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-42.0.1.tgz", + "integrity": "sha512-OKeWTHPrt7Yjp+rzZomxYmhEqZRQmGy+YGkWCdnfy2CH4ypsQVLI07hZazuZ8ZNVZ+/P7gxD7m+1y6EOj3SC5w==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-remove-format": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-42.0.0.tgz", - "integrity": "sha512-lS/fEoSM2HOhA+Ocve3gwRjlqKhZQx5Rbm3PBzAQJAZosfxCeCLcg2RJb1zGD4mGsY2urWAeRVNNckJObcNM9Q==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-42.0.1.tgz", + "integrity": "sha512-j1VpxnMRqSEDr2nzY/JGjvd+wYFqw2VJrTLA/2hmkH40BhdmCw8+t8AFLUNUPqBE/vGTHbMVvmf4vRhy/nM2Rg==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-restricted-editing": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-42.0.0.tgz", - "integrity": "sha512-5WnyJ+rLbh206Y3XbOxNKxpdNi9X4nE+O/Pk7TLgvkZ2S4UdptplaycXk9mTHZvtRWCs1VLW629WoEoHXPGtxg==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-42.0.1.tgz", + "integrity": "sha512-lgLucIp20Z6P6sUX1sH9fQiqbGQ0t/yBNoMhi340T9ejBjIfRQ2sJyvUelInD5XICrwdU29jPBcGD0VqWBbFBw==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-select-all": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-42.0.0.tgz", - "integrity": "sha512-6tnRtB5TIsgUh6I+lahvIYxsL61M+b0XvLQCPpIiYHn+V6htEESoniz7vVxEgwNXnCuCFoHvO+IpjC6ugd0ESA==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-42.0.1.tgz", + "integrity": "sha512-1PymHaP/0lEoTVrxrNzCY/36QsKqV/mKcXm5zwNwRdLgY8GB2tcu75YthubG8sVHNR893IMG4FYlGS/a1exwIQ==", "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-ui": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0" + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-ui": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-show-blocks": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-42.0.0.tgz", - "integrity": "sha512-ZQ/u1/7fU2ZA57q3i6yTsHSgzAPQ60uK49/R/zQYCQsAzxGXavvQ0qOwbpzaR1O+y942w1n0E5roXyTelTHaPQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-42.0.1.tgz", + "integrity": "sha512-mdmytIO/GslWrCt8Cubt2TsHOogio+/0lTjk76LtPIJn+AUEI4xYhPIZfFOHbxqzjVx2tx9g49Sr+S/SA2Ag9A==", "dependencies": { - "@ckeditor/ckeditor5-ui": "42.0.0", - "ckeditor5": "42.0.0" + "@ckeditor/ckeditor5-ui": "42.0.1", + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-source-editing": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-42.0.0.tgz", - "integrity": "sha512-p2KtKpcX2vuPNA85n5mQRwouEAWGqFpXiblMCdDtp8Ajql1EcGa66edOP8qeyT1CpsJ6PM/sZ86otKKGTFl4yQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-42.0.1.tgz", + "integrity": "sha512-6b5ujT5smdpB+2rZbGM7Isqgevs/any+PsbEtbBT7dc9NkkPI/2YH+o4a5FLf38c7fDxGCV4Ob7kwOPStkNAIA==", "dependencies": { - "@ckeditor/ckeditor5-theme-lark": "42.0.0", - "ckeditor5": "42.0.0" + "@ckeditor/ckeditor5-theme-lark": "42.0.1", + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-special-characters": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-42.0.0.tgz", - "integrity": "sha512-WXKjyCE4AZG0yWRkRI3EvoYU8L+U1Ckz9cdeUEpPC7MFBZT2o28pGDyE8jzjmt51tOIZUNuSnwUCF1+kRn+xKg==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-42.0.1.tgz", + "integrity": "sha512-irWFRCpZODtB1ui3Wm214Es6jxFNDZn/e1mbhGf5DGOGEQCLe8aAJc68FDKI3hl8cQlXxDTSch1RFvUiuNaBIA==", "dependencies": { - "ckeditor5": "42.0.0" + "ckeditor5": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-style": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-style/-/ckeditor5-style-42.0.0.tgz", - "integrity": "sha512-0WaRKAuslHEpmwz+ebQYAwmH047QPt0Kp2XiXxvbVyeSgpmX6c8AzbrkCT11kGCpC1VEdiqg8AkroPQCO+VDnw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-style/-/ckeditor5-style-42.0.1.tgz", + "integrity": "sha512-JVO8Iq9j15iABpHTt24T8KsdDf2KxVFe7gg0ooowlZB7CmmYVCqKBGnnMemqM+aQk3qfXPUgNA1G3v259MHs9g==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-table": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-42.0.0.tgz", - "integrity": "sha512-D3RwXDIsUX8MGUfg2bpcfObF0seYUllqW0aMalPPcpKVwO9Yjh98FXi8CQyrLp7Ig7ef8yFQv6I5y38Gze8Utw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-42.0.1.tgz", + "integrity": "sha512-xITEPFvV05h+sNbs2jqLSUu6UUat5DCoyt9WIbqIYC8hwJrGGAcuwldyfL0e+hrUAbHHkL1K9oRlMmhKuw6OEA==", "dependencies": { - "@ckeditor/ckeditor5-ui": "42.0.0", - "ckeditor5": "42.0.0", + "@ckeditor/ckeditor5-ui": "42.0.1", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-theme-lark": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-42.0.0.tgz", - "integrity": "sha512-G9rda0cxoi2qrTxsUQyOTnj8cH/66ZRPYd2v2cCuWxfjkNELzqjWtl1e9v5cQQvUrxcp7gPCTOtvc3lchdD5tg==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-42.0.1.tgz", + "integrity": "sha512-EZfxuFpBro6VTobQytGkvMQl/H8PymANTQrnICwLEKd81ZM5yJQTeolF/VS+QFlDqx1gXUESNJt8NqFytm1cww==", "dependencies": { - "@ckeditor/ckeditor5-ui": "42.0.0" + "@ckeditor/ckeditor5-ui": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-typing": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-42.0.0.tgz", - "integrity": "sha512-6FDkdEDrWKBnEX+C4qqQ2j5VD26Z+VBr2vtprYtRykRCYpc/n4pbbz9ecjXnJ/E8ftm44nCMcBxbg8HPEjroyw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-42.0.1.tgz", + "integrity": "sha512-gLqp27CiLZe/ycKgJotqQ5Ta1KX3aSlZMYmnHurmOmkvjXB76syM990KlPiDAkff2QyXE1qgg0uKLgT4CbrKNg==", "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-engine": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0", + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-engine": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-ui": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-42.0.0.tgz", - "integrity": "sha512-Z69x9u8UkUP7P1F6u7loUGXqUiNtEXBz+2flXHxBq6JVnGh5rZ3ZtVhWQRaOSAIVp+ub/BwEcwzqq4itI1Tuog==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-42.0.1.tgz", + "integrity": "sha512-3OF/nm/pc8rwH65+GYET5Xj5qk53aVXnBi/DBVRQZBdhuAGlMQuy+7E2WU6vO7G24w1LOJUSPpeBJt/MXs6z2w==", "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0", + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1", "color-convert": "2.0.1", "color-parse": "1.4.2", "lodash-es": "4.17.21", @@ -522,28 +522,28 @@ } }, "node_modules/@ckeditor/ckeditor5-undo": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-42.0.0.tgz", - "integrity": "sha512-7H4hD4k0jmrSk5n1cYKlj2rmuICIwdGFX3WMPv2KuEKI1WYZBE10KLf6bB15EFoMVvBFepX0TjfEVXTO6Ul5rw==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-42.0.1.tgz", + "integrity": "sha512-3tIj7JLtKFMxiJrfZ7IrBXBzBe0dtP+EcztjzgQbndS1PaAldErH3g7z55avwp6R3hum0wFnqgvQRIgSUlYONQ==", "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-engine": "42.0.0", - "@ckeditor/ckeditor5-ui": "42.0.0" + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-engine": "42.0.1", + "@ckeditor/ckeditor5-ui": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-upload": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-42.0.0.tgz", - "integrity": "sha512-UPRre84p6qPyPVhDsfuVh5rNGcaZjSIQhGdqOPfgMWc4QYOKNf7Y7TvW+9xzUVXyHbo2pcvOq6/Ldw6z4zk10g==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-42.0.1.tgz", + "integrity": "sha512-0tn4ltiz0cTmlMPFPpJkDzi5+jVkPbtv9R9OHGDFgDW0uyN93UvnW0xPpoXKn/R/qRJf2gnPK95QlUaeiz33+w==", "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0" + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1" } }, "node_modules/@ckeditor/ckeditor5-utils": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-42.0.0.tgz", - "integrity": "sha512-9f3eAjh7sgYC+Cth0yEHaWBJpPFWWehPa3efAlSjuKl0NhW2mzSU5s9SMRNDS5MJAI+oTIOLP5/SV/pNCbiT3A==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-42.0.1.tgz", + "integrity": "sha512-gJlP8/dCfnmcgq1E30//rd5KU3EetuFx0QQqphuaeUxuJeVhRJlMvva0H/dZOv82uMrTBgspxYsRrkjn7XnVxQ==", "dependencies": { "lodash-es": "4.17.21" } @@ -564,33 +564,33 @@ } }, "node_modules/@ckeditor/ckeditor5-watchdog": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-42.0.0.tgz", - "integrity": "sha512-rNk1GtiIx6KYaE/B4atNOb7QNB916RbFfq4MsOPPVow+64XF3Ljvx14qX1I/da+WH3EbpoBwbJqnIlu7aLa0Ww==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-42.0.1.tgz", + "integrity": "sha512-ROfjUFky3W2u9F+6sXiT1IR9pa/odYAjT9ck/wp5W2dHum5XMIAdF4A6bEwXeBtZnpMo8+tQ1b1OZv78rZ31IA==", "dependencies": { "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-widget": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-42.0.0.tgz", - "integrity": "sha512-HbPQCCwsBfRWSHOM0Qn1MFvlAym1S3XvQzqe7tEPZ577RLSk0H4FEvv6YxpUNjsjujYlDsUK+dF8zVye7Cv7tw==", - "dependencies": { - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-engine": "42.0.0", - "@ckeditor/ckeditor5-enter": "42.0.0", - "@ckeditor/ckeditor5-typing": "42.0.0", - "@ckeditor/ckeditor5-ui": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-42.0.1.tgz", + "integrity": "sha512-hz02QxOFw4HNmDqM6369rCZgEotsmUtHcysC1Ius6XxbPiZHLraagb2wG9Dts/80DRN//1zGbxKG61sTa/5Bog==", + "dependencies": { + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-engine": "42.0.1", + "@ckeditor/ckeditor5-enter": "42.0.1", + "@ckeditor/ckeditor5-typing": "42.0.1", + "@ckeditor/ckeditor5-ui": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1", "lodash-es": "4.17.21" } }, "node_modules/@ckeditor/ckeditor5-word-count": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-42.0.0.tgz", - "integrity": "sha512-+P8Q7hWdkq+sTt2+qAgz+OsOsTTdqluyYgrKRx9DvjLRsF+VmlHwNTaOMqcnU1EWNfFcjevQHoTugmqm+dWquQ==", + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-42.0.1.tgz", + "integrity": "sha512-hTTCMmWTORGLj4f83DeKZC0d8K4JmOJHCCzAQypPIB1qD2n1D6VbweoVsgVOUr5fPsd5QO5jOyor2T2yHyQmyg==", "dependencies": { - "ckeditor5": "42.0.0", + "ckeditor5": "42.0.1", "lodash-es": "4.17.21" } }, @@ -2185,67 +2185,67 @@ } }, "node_modules/ckeditor5": { - "version": "42.0.0", - "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-42.0.0.tgz", - "integrity": "sha512-l/Qdw61+nAhkNfXRzPp3a6W75XGnKBKWlJqEbgMGclgAvaqgWE7MAz9VqQCJSeMK8PjgFH1EcBMPRmG+6W8QRQ==", - "dependencies": { - "@ckeditor/ckeditor5-adapter-ckfinder": "42.0.0", - "@ckeditor/ckeditor5-alignment": "42.0.0", - "@ckeditor/ckeditor5-autoformat": "42.0.0", - "@ckeditor/ckeditor5-autosave": "42.0.0", - "@ckeditor/ckeditor5-basic-styles": "42.0.0", - "@ckeditor/ckeditor5-block-quote": "42.0.0", - "@ckeditor/ckeditor5-ckbox": "42.0.0", - "@ckeditor/ckeditor5-ckfinder": "42.0.0", - "@ckeditor/ckeditor5-clipboard": "42.0.0", - "@ckeditor/ckeditor5-cloud-services": "42.0.0", - "@ckeditor/ckeditor5-code-block": "42.0.0", - "@ckeditor/ckeditor5-core": "42.0.0", - "@ckeditor/ckeditor5-easy-image": "42.0.0", - "@ckeditor/ckeditor5-editor-balloon": "42.0.0", - "@ckeditor/ckeditor5-editor-classic": "42.0.0", - "@ckeditor/ckeditor5-editor-decoupled": "42.0.0", - "@ckeditor/ckeditor5-editor-inline": "42.0.0", - "@ckeditor/ckeditor5-editor-multi-root": "42.0.0", - "@ckeditor/ckeditor5-engine": "42.0.0", - "@ckeditor/ckeditor5-enter": "42.0.0", - "@ckeditor/ckeditor5-essentials": "42.0.0", - "@ckeditor/ckeditor5-find-and-replace": "42.0.0", - "@ckeditor/ckeditor5-font": "42.0.0", - "@ckeditor/ckeditor5-heading": "42.0.0", - "@ckeditor/ckeditor5-highlight": "42.0.0", - "@ckeditor/ckeditor5-horizontal-line": "42.0.0", - "@ckeditor/ckeditor5-html-embed": "42.0.0", - "@ckeditor/ckeditor5-html-support": "42.0.0", - "@ckeditor/ckeditor5-image": "42.0.0", - "@ckeditor/ckeditor5-indent": "42.0.0", - "@ckeditor/ckeditor5-language": "42.0.0", - "@ckeditor/ckeditor5-link": "42.0.0", - "@ckeditor/ckeditor5-list": "42.0.0", - "@ckeditor/ckeditor5-markdown-gfm": "42.0.0", - "@ckeditor/ckeditor5-media-embed": "42.0.0", - "@ckeditor/ckeditor5-mention": "42.0.0", - "@ckeditor/ckeditor5-minimap": "42.0.0", - "@ckeditor/ckeditor5-page-break": "42.0.0", - "@ckeditor/ckeditor5-paragraph": "42.0.0", - "@ckeditor/ckeditor5-paste-from-office": "42.0.0", - "@ckeditor/ckeditor5-remove-format": "42.0.0", - "@ckeditor/ckeditor5-restricted-editing": "42.0.0", - "@ckeditor/ckeditor5-select-all": "42.0.0", - "@ckeditor/ckeditor5-show-blocks": "42.0.0", - "@ckeditor/ckeditor5-source-editing": "42.0.0", - "@ckeditor/ckeditor5-special-characters": "42.0.0", - "@ckeditor/ckeditor5-style": "42.0.0", - "@ckeditor/ckeditor5-table": "42.0.0", - "@ckeditor/ckeditor5-theme-lark": "42.0.0", - "@ckeditor/ckeditor5-typing": "42.0.0", - "@ckeditor/ckeditor5-ui": "42.0.0", - "@ckeditor/ckeditor5-undo": "42.0.0", - "@ckeditor/ckeditor5-upload": "42.0.0", - "@ckeditor/ckeditor5-utils": "42.0.0", - "@ckeditor/ckeditor5-watchdog": "42.0.0", - "@ckeditor/ckeditor5-widget": "42.0.0", - "@ckeditor/ckeditor5-word-count": "42.0.0" + "version": "42.0.1", + "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-42.0.1.tgz", + "integrity": "sha512-qgsv/eP79OKunE76mMyPP1/PPjsBkLUlmb4cR/TA5C6HGsMvrCmYhryIgvdcqnZ0k8OIre1/X50+3VWvMnJ2qQ==", + "dependencies": { + "@ckeditor/ckeditor5-adapter-ckfinder": "42.0.1", + "@ckeditor/ckeditor5-alignment": "42.0.1", + "@ckeditor/ckeditor5-autoformat": "42.0.1", + "@ckeditor/ckeditor5-autosave": "42.0.1", + "@ckeditor/ckeditor5-basic-styles": "42.0.1", + "@ckeditor/ckeditor5-block-quote": "42.0.1", + "@ckeditor/ckeditor5-ckbox": "42.0.1", + "@ckeditor/ckeditor5-ckfinder": "42.0.1", + "@ckeditor/ckeditor5-clipboard": "42.0.1", + "@ckeditor/ckeditor5-cloud-services": "42.0.1", + "@ckeditor/ckeditor5-code-block": "42.0.1", + "@ckeditor/ckeditor5-core": "42.0.1", + "@ckeditor/ckeditor5-easy-image": "42.0.1", + "@ckeditor/ckeditor5-editor-balloon": "42.0.1", + "@ckeditor/ckeditor5-editor-classic": "42.0.1", + "@ckeditor/ckeditor5-editor-decoupled": "42.0.1", + "@ckeditor/ckeditor5-editor-inline": "42.0.1", + "@ckeditor/ckeditor5-editor-multi-root": "42.0.1", + "@ckeditor/ckeditor5-engine": "42.0.1", + "@ckeditor/ckeditor5-enter": "42.0.1", + "@ckeditor/ckeditor5-essentials": "42.0.1", + "@ckeditor/ckeditor5-find-and-replace": "42.0.1", + "@ckeditor/ckeditor5-font": "42.0.1", + "@ckeditor/ckeditor5-heading": "42.0.1", + "@ckeditor/ckeditor5-highlight": "42.0.1", + "@ckeditor/ckeditor5-horizontal-line": "42.0.1", + "@ckeditor/ckeditor5-html-embed": "42.0.1", + "@ckeditor/ckeditor5-html-support": "42.0.1", + "@ckeditor/ckeditor5-image": "42.0.1", + "@ckeditor/ckeditor5-indent": "42.0.1", + "@ckeditor/ckeditor5-language": "42.0.1", + "@ckeditor/ckeditor5-link": "42.0.1", + "@ckeditor/ckeditor5-list": "42.0.1", + "@ckeditor/ckeditor5-markdown-gfm": "42.0.1", + "@ckeditor/ckeditor5-media-embed": "42.0.1", + "@ckeditor/ckeditor5-mention": "42.0.1", + "@ckeditor/ckeditor5-minimap": "42.0.1", + "@ckeditor/ckeditor5-page-break": "42.0.1", + "@ckeditor/ckeditor5-paragraph": "42.0.1", + "@ckeditor/ckeditor5-paste-from-office": "42.0.1", + "@ckeditor/ckeditor5-remove-format": "42.0.1", + "@ckeditor/ckeditor5-restricted-editing": "42.0.1", + "@ckeditor/ckeditor5-select-all": "42.0.1", + "@ckeditor/ckeditor5-show-blocks": "42.0.1", + "@ckeditor/ckeditor5-source-editing": "42.0.1", + "@ckeditor/ckeditor5-special-characters": "42.0.1", + "@ckeditor/ckeditor5-style": "42.0.1", + "@ckeditor/ckeditor5-table": "42.0.1", + "@ckeditor/ckeditor5-theme-lark": "42.0.1", + "@ckeditor/ckeditor5-typing": "42.0.1", + "@ckeditor/ckeditor5-ui": "42.0.1", + "@ckeditor/ckeditor5-undo": "42.0.1", + "@ckeditor/ckeditor5-upload": "42.0.1", + "@ckeditor/ckeditor5-utils": "42.0.1", + "@ckeditor/ckeditor5-watchdog": "42.0.1", + "@ckeditor/ckeditor5-widget": "42.0.1", + "@ckeditor/ckeditor5-word-count": "42.0.1" } }, "node_modules/color-convert": { @@ -5388,9 +5388,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", - "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.6.tgz", + "integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -5663,9 +5663,9 @@ "integrity": "sha512-z2YZusTFC6KnLERx1cgoIRX2CjPRP0W75N+3CC6gbvdX5Ch47rZkEMGO2Xnf+IEmi3RiFLxS18gayMA27iU7Kg==" }, "node_modules/vite": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", - "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz", + "integrity": "sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==", "dev": true, "dependencies": { "esbuild": "^0.21.3", diff --git a/package.json b/package.json index 13ff1458..bdd878d7 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,14 @@ "eslint-plugin-vue": "^9.27.0", "laravel-vite-plugin": "^1.0.5", "postcss": "^8.4.39", - "tailwindcss": "^3.4.4", - "vite": "^5.3.3", + "tailwindcss": "^3.4.6", + "vite": "^5.3.4", "vue": "^3.4.31" }, "dependencies": { "@ckeditor/ckeditor5-vue": "^6.0.0", "@vueuse/components": "^10.11.0", "@vueuse/core": "^10.11.0", - "ckeditor5": "^42.0.0" + "ckeditor5": "^42.0.1" } } diff --git a/phpstan.dist.neon b/phpstan.dist.neon index 21083b3b..7d088842 100644 --- a/phpstan.dist.neon +++ b/phpstan.dist.neon @@ -24,6 +24,10 @@ parameters: message: '#Property App\\Models\\Page::\$blocks is not writable\.#' path: app/Http/Resources/Views/Public/Content/HomepageContentResource.php count: 1 + - # Works despite error, may break if strict types enforced + message: '#Property App\\Models\\Page::\$blocks is not writable\.#' + path: app/Http/Resources/Views/Public/Content/PrivacyPolicyContentResource.php + count: 1 - # From the way the methods are inherited by Pest message: '#Access to an undefined property Pest\\Mixins\\Expectation#' path: tests diff --git a/resources/css/app.css b/resources/css/app.css index 484f8724..fabdfb17 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -2,6 +2,8 @@ @import "tailwindcss/components"; @import "./components/articles"; +@import "./components/articles.page-title"; +@import "./components/articles.small-print"; @import "./components/buttons"; @import "tailwindcss/utilities"; diff --git a/resources/css/components/articles.css b/resources/css/components/articles.css index ce2cd2c1..9ba8ef97 100644 --- a/resources/css/components/articles.css +++ b/resources/css/components/articles.css @@ -1,6 +1,12 @@ +section.app-article { + @apply + leading-relaxed; +} + section.app-article p { @apply - mb-4; + mb-4 + text-justify; } section.app-article p a { @@ -58,11 +64,72 @@ section.app-article p code { } section.app-article ul li i, -section.app-article p i -{ +section.app-article p i { @apply font-semibold - text-gray-900 - dark:text-gray-100 tracking-wide; } + +section.app-article blockquote, +section.app-article q { + @apply + w-full + text-lg + text-gray-800 + dark:text-gray-200 + my-8 + border-l-4 + border-gray-900 + dark:border-gray-300 + px-4 + py-2 + bg-gray-200 + dark:bg-gray-800; +} + +section.app-article blockquote p, +section.app-article q p { + @apply + mb-0; +} + +section.app-article blockquote p i, +section.app-article blockquote ul li i, +section.app-article q p i, +section.app-article q ul li i { + @apply + font-normal + tracking-widest; +} + +section.app-article table { + @apply + table-auto + mb-12 + mx-8; +} + +section.app-article thead { + @apply + mb-2 + border-b + border-gray-900 + pb-2 + dark:border-gray-100; +} + +section.app-article tbody { + @apply + mt-2; +} + +section.app-article tr { + @apply + text-left; +} + +section.app-article td, +section.app-article th { + @apply + p-2; +} diff --git a/resources/css/components/articles.page-title.css b/resources/css/components/articles.page-title.css new file mode 100644 index 00000000..70c9c8ce --- /dev/null +++ b/resources/css/components/articles.page-title.css @@ -0,0 +1,16 @@ +section.app-article h2.text-page-title { + @apply + font-semibold + uppercase + tracking-widest; +} + +section.app-article p.text-page-subtitle { + @apply + pt-2 + font-semibold + italic + text-xs + uppercase + tracking-widest; +} diff --git a/resources/css/components/articles.small-print.css b/resources/css/components/articles.small-print.css new file mode 100644 index 00000000..2df0681c --- /dev/null +++ b/resources/css/components/articles.small-print.css @@ -0,0 +1,27 @@ +section.app-article h3.text-small-print { + @apply + w-full + mt-4 + mb-2 + px-4 + font-semibold + text-xs + uppercase + tracking-widest; +} + +section.app-article p.text-small-print, +section.app-article table.text-small-print, +section.app-article ul.text-small-print { + @apply + text-sm + text-gray-800 + dark:text-gray-200 + px-4 + pb-4; +} + +section.app-article ul.text-small-print li { + @apply + ml-4; +} diff --git a/resources/css/components/buttons.css b/resources/css/components/buttons.css index 594b9a0c..734be84f 100644 --- a/resources/css/components/buttons.css +++ b/resources/css/components/buttons.css @@ -3,6 +3,7 @@ inline-flex items-center justify-center + h-8 my-auto border px-4 diff --git a/resources/js/Components/Blocks/AppBlocks.vue b/resources/js/Components/Blocks/AppBlocks.vue index c6fe3ba0..e7088978 100644 --- a/resources/js/Components/Blocks/AppBlocks.vue +++ b/resources/js/Components/Blocks/AppBlocks.vue @@ -32,7 +32,7 @@ import AppSectionDivider from '@/Components/Sections/AppSectionDivider.vue' diff --git a/resources/js/Components/Blocks/BlockHeaderLogo.vue b/resources/js/Components/Blocks/BlockHeaderLogo.vue index 9574b3a2..5d0dc2b5 100644 --- a/resources/js/Components/Blocks/BlockHeaderLogo.vue +++ b/resources/js/Components/Blocks/BlockHeaderLogo.vue @@ -11,9 +11,9 @@ defineProps({