diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..996a246
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php
deleted file mode 100644
index 7bf18d0..0000000
--- a/app/Actions/Fortify/CreateNewUser.php
+++ /dev/null
@@ -1,40 +0,0 @@
- $input
- */
- public function create(array $input): User
- {
- Validator::make($input, [
- 'name' => ['required', 'string', 'max:255'],
- 'email' => [
- 'required',
- 'string',
- 'email',
- 'max:255',
- Rule::unique(User::class),
- ],
- 'password' => $this->passwordRules(),
- ])->validate();
-
- return User::create([
- 'name' => $input['name'],
- 'email' => $input['email'],
- 'password' => Hash::make($input['password']),
- ]);
- }
-}
diff --git a/app/Actions/Fortify/PasswordValidationRules.php b/app/Actions/Fortify/PasswordValidationRules.php
deleted file mode 100644
index 76b19d3..0000000
--- a/app/Actions/Fortify/PasswordValidationRules.php
+++ /dev/null
@@ -1,18 +0,0 @@
-|string>
- */
- protected function passwordRules(): array
- {
- return ['required', 'string', Password::default(), 'confirmed'];
- }
-}
diff --git a/app/Actions/Fortify/ResetUserPassword.php b/app/Actions/Fortify/ResetUserPassword.php
deleted file mode 100644
index 7a57c50..0000000
--- a/app/Actions/Fortify/ResetUserPassword.php
+++ /dev/null
@@ -1,29 +0,0 @@
- $input
- */
- public function reset(User $user, array $input): void
- {
- Validator::make($input, [
- 'password' => $this->passwordRules(),
- ])->validate();
-
- $user->forceFill([
- 'password' => Hash::make($input['password']),
- ])->save();
- }
-}
diff --git a/app/Console/Commands/GenerateSitemap.php b/app/Console/Commands/GenerateSitemap.php
index 41c2cc5..af71b7a 100644
--- a/app/Console/Commands/GenerateSitemap.php
+++ b/app/Console/Commands/GenerateSitemap.php
@@ -2,24 +2,23 @@
namespace App\Console\Commands;
-use App\Enums\EducationalProgramStatus;
-use App\Enums\PostStatus;
-use App\Models\AcademicJournal;
-use App\Models\AdditionalEducation;
-use App\Models\Department;
-use App\Models\Division;
-use App\Models\EducationalProgram;
-use App\Models\Event;
-use App\Models\Faculty;
-use App\Models\LibraryNews;
-use App\Models\Page;
-use App\Models\Post;
-use App\Models\User;
-use App\Models\VirtualExhibition;
-use Illuminate\Console\Command;
+use App\Containers\AdditionalEducation\Models\AdditionalEducation;
+use App\Containers\AppStructure\Models\Page;
+use App\Containers\Article\Enums\PostStatus;
+use App\Containers\Article\Models\Post;
+use App\Containers\Education\Models\EducationalProgram;
+use App\Containers\Event\Models\Event;
+use App\Containers\InstituteStructure\Models\Department;
+use App\Containers\InstituteStructure\Models\Division;
+use App\Containers\InstituteStructure\Models\Faculty;
+use App\Containers\User\Models\User;
+use App\Ship\Enums\Education\EducationalProgramStatus;
use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
+use Illuminate\Console\Command;
+
+
class GenerateSitemap extends Command
{
diff --git a/app/Console/Commands/RegisterRoutes.php b/app/Console/Commands/RegisterRoutes.php
index ef5cc3c..594516a 100644
--- a/app/Console/Commands/RegisterRoutes.php
+++ b/app/Console/Commands/RegisterRoutes.php
@@ -2,9 +2,10 @@
namespace App\Console\Commands;
-use Illuminate\Console\Command;
+use App\Containers\AppStructure\Models\Page;
use Illuminate\Support\Facades\Route;
-use App\Models\Page;
+use Illuminate\Console\Command;
+
class RegisterRoutes extends Command
diff --git a/app/Http/Resources/AdditionalEducationCategoryPreviewResource.php b/app/Containers/AdditionalEducation/Data/Resources/AdditionalEducationCategoryPreviewResource.php
similarity index 88%
rename from app/Http/Resources/AdditionalEducationCategoryPreviewResource.php
rename to app/Containers/AdditionalEducation/Data/Resources/AdditionalEducationCategoryPreviewResource.php
index 927c82c..96b88e1 100644
--- a/app/Http/Resources/AdditionalEducationCategoryPreviewResource.php
+++ b/app/Containers/AdditionalEducation/Data/Resources/AdditionalEducationCategoryPreviewResource.php
@@ -1,6 +1,6 @@
FormEducation::class,
];
- public function category()
+ public function category(): BelongsTo
{
return $this->belongsTo(AdditionalEducationCategory::class, 'category_id', 'id');
}
- public function seo()
+ public function seo(): MorphOne
{
return $this->morphOne(Seo::class, 'seoable');
}
-
-
}
diff --git a/app/Models/AdditionalEducationCategory.php b/app/Containers/AdditionalEducation/Models/AdditionalEducationCategory.php
similarity index 61%
rename from app/Models/AdditionalEducationCategory.php
rename to app/Containers/AdditionalEducation/Models/AdditionalEducationCategory.php
index 84c5030..71fe0fe 100644
--- a/app/Models/AdditionalEducationCategory.php
+++ b/app/Containers/AdditionalEducation/Models/AdditionalEducationCategory.php
@@ -1,10 +1,12 @@
with(['additionalEducations' => function ($query) {
$query->where('is_active', true);
}]);
}
- public function additionalEducations()
+ public function additionalEducations(): HasMany
{
return $this->hasMany(AdditionalEducation::class, 'category_id', 'id');
}
- public function direction()
+ public function direction(): BelongsTo
{
return $this->belongsTo(DirectionAdditionalEducation::class, 'dir_addit_educat_id', 'id');
}
-
-
}
diff --git a/app/Models/DirectionAdditionalEducation.php b/app/Containers/AdditionalEducation/Models/DirectionAdditionalEducation.php
similarity index 59%
rename from app/Models/DirectionAdditionalEducation.php
rename to app/Containers/AdditionalEducation/Models/DirectionAdditionalEducation.php
index 563b9d0..797ebaf 100644
--- a/app/Models/DirectionAdditionalEducation.php
+++ b/app/Containers/AdditionalEducation/Models/DirectionAdditionalEducation.php
@@ -1,9 +1,10 @@
hasMany(AdditionalEducationCategory::class, 'dir_addit_educat_id', 'id');
}
diff --git a/app/Policies/AdditionalEducationCategoryPolicy.php b/app/Containers/AdditionalEducation/Policies/AdditionalEducationCategoryPolicy.php
similarity index 94%
rename from app/Policies/AdditionalEducationCategoryPolicy.php
rename to app/Containers/AdditionalEducation/Policies/AdditionalEducationCategoryPolicy.php
index 04da077..dbb76fa 100644
--- a/app/Policies/AdditionalEducationCategoryPolicy.php
+++ b/app/Containers/AdditionalEducation/Policies/AdditionalEducationCategoryPolicy.php
@@ -1,9 +1,9 @@
group(function () {
+ Route::get('/additional-education/{slug}', [ClientAdditionalEducationController::class, 'show'])->name('client.additionalEducation.show');
+ Route::get('/additional-education/', [ClientAdditionalEducationController::class, 'index'])->name('client.additionalEducation.index');
+});
+
+
diff --git a/app/Containers/AppStructure/Loaders/AliasesLoader.php b/app/Containers/AppStructure/Loaders/AliasesLoader.php
new file mode 100644
index 0000000..0223bfa
--- /dev/null
+++ b/app/Containers/AppStructure/Loaders/AliasesLoader.php
@@ -0,0 +1,11 @@
+hasMany(SubSection::class);
}
diff --git a/app/Models/Page.php b/app/Containers/AppStructure/Models/Page.php
similarity index 72%
rename from app/Models/Page.php
rename to app/Containers/AppStructure/Models/Page.php
index 274fbb4..bf78c2a 100644
--- a/app/Models/Page.php
+++ b/app/Containers/AppStructure/Models/Page.php
@@ -1,11 +1,12 @@
belongsTo(SubSection::class, 'sub_section_id');
}
- public function seo()
+ public function seo(): MorphOne
{
return $this->morphOne(Seo::class, 'seoable');
}
@@ -27,5 +28,4 @@ class Page extends Model
'content' => 'array',
'settings' => 'array',
];
-
}
diff --git a/app/Models/SubSection.php b/app/Containers/AppStructure/Models/SubSection.php
similarity index 86%
rename from app/Models/SubSection.php
rename to app/Containers/AppStructure/Models/SubSection.php
index fab7dab..cf9aeae 100644
--- a/app/Models/SubSection.php
+++ b/app/Containers/AppStructure/Models/SubSection.php
@@ -1,9 +1,9 @@
orderBy('sort', 'asc')->get());
+ }
+}
diff --git a/app/Containers/AppStructure/UI/API/Routes/api.php b/app/Containers/AppStructure/UI/API/Routes/api.php
new file mode 100644
index 0000000..a8bffa2
--- /dev/null
+++ b/app/Containers/AppStructure/UI/API/Routes/api.php
@@ -0,0 +1,11 @@
+group(function () {
+ Route::get('/getNavigation', [NavigateController::class, 'index'])->name('client.main.navigate');
+});
+
+
diff --git a/app/Containers/AppStructure/UI/API/Transformers/NavigationResource.php b/app/Containers/AppStructure/UI/API/Transformers/NavigationResource.php
new file mode 100644
index 0000000..89ebba3
--- /dev/null
+++ b/app/Containers/AppStructure/UI/API/Transformers/NavigationResource.php
@@ -0,0 +1,23 @@
+
+ */
+ public function toArray($request): array
+ {
+ return [
+ 'id' => $this->id,
+ 'title' => $this->title,
+ 'slug' => $this->slug,
+ 'subSections' => SubSectionNavigateResource::collection($this->whenLoaded('subSections')->sortBy('sort')),
+ ];
+ }
+}
diff --git a/app/Http/Resources/ClientPageNavigateResource.php b/app/Containers/AppStructure/UI/API/Transformers/PageNavigateResource.php
similarity index 63%
rename from app/Http/Resources/ClientPageNavigateResource.php
rename to app/Containers/AppStructure/UI/API/Transformers/PageNavigateResource.php
index 1057cb4..b7480a6 100644
--- a/app/Http/Resources/ClientPageNavigateResource.php
+++ b/app/Containers/AppStructure/UI/API/Transformers/PageNavigateResource.php
@@ -1,18 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Containers/AppStructure/UI/API/Transformers/SubSectionNavigateResource.php b/app/Containers/AppStructure/UI/API/Transformers/SubSectionNavigateResource.php
new file mode 100644
index 0000000..f203598
--- /dev/null
+++ b/app/Containers/AppStructure/UI/API/Transformers/SubSectionNavigateResource.php
@@ -0,0 +1,25 @@
+
+ */
+ public function toArray($request): array
+ {
+ return [
+ 'id' => $this->id,
+ 'title' => $this->title,
+ 'slug' => $this->slug,
+ 'pages' => PageNavigateResource::collection($this->whenLoaded('pages')),
+ ];
+ }
+}
diff --git a/app/Http/Controllers/GenerateSitemapController.php b/app/Containers/AppStructure/UI/CLI/Commands/GenerateSitemap.php
similarity index 83%
rename from app/Http/Controllers/GenerateSitemapController.php
rename to app/Containers/AppStructure/UI/CLI/Commands/GenerateSitemap.php
index cf278cb..e4a0641 100644
--- a/app/Http/Controllers/GenerateSitemapController.php
+++ b/app/Containers/AppStructure/UI/CLI/Commands/GenerateSitemap.php
@@ -1,24 +1,44 @@
writeToFile(public_path('sitemap.xml'));
-
- return 'Sitemap generated successfully!';
}
protected function generatePages(Sitemap $sitemap)
@@ -44,6 +62,10 @@ class GenerateSitemapController extends Controller
$pages = Page::query()
->where('is_visible', true)
->where('code', 200)
+ ->where('path', '!=', null)
+ ->where('is_url', false)
+ ->where('title', '!=', null)
+ ->where('searchable', true)
->get();
$this->addUrlsToSitemap($sitemap, $pages, function($page) {
@@ -198,4 +220,4 @@ class GenerateSitemapController extends Controller
->setPriority($urlData['priority']));
}
}
-}
\ No newline at end of file
+}
diff --git a/app/Containers/AppStructure/UI/CLI/Commands/RegisterRoutes.php b/app/Containers/AppStructure/UI/CLI/Commands/RegisterRoutes.php
new file mode 100644
index 0000000..8061ec6
--- /dev/null
+++ b/app/Containers/AppStructure/UI/CLI/Commands/RegisterRoutes.php
@@ -0,0 +1,53 @@
+uri)->where('is_registered', '=', true)->exists()) {
+ // Если не существует, создаем новую запись
+ Page::create([
+ 'path' => $route->uri,
+ 'is_registered' => true,
+ 'is_url' => false,
+ 'searchable' => false,
+ 'code' => 200,
+ ]);
+
+ $this->info("Маршрут зарегистрирован: " . $route->uri);
+ } else {
+ $this->info("Маршрут уже существует: " . $route->uri);
+ }
+ }
+
+ $this->info('Все маршруты успешно проверены.');
+ }
+}
diff --git a/app/Http/Controllers/PageController.php b/app/Containers/AppStructure/UI/WEB/Controllers/PageController.php
similarity index 54%
rename from app/Http/Controllers/PageController.php
rename to app/Containers/AppStructure/UI/WEB/Controllers/PageController.php
index b22d828..a4a7a8e 100644
--- a/app/Http/Controllers/PageController.php
+++ b/app/Containers/AppStructure/UI/WEB/Controllers/PageController.php
@@ -1,29 +1,17 @@
first();
});
-
if ($page === null) {
abort(404);
}
@@ -45,6 +32,7 @@ class PageController extends Controller
$seo = $this->seoPageProvider->getSeoForModel($page);
+
$page = new PageResource($page);
@@ -52,7 +40,10 @@ class PageController extends Controller
abort($page->code);
}
-
- return Inertia::render('Page', compact('page', 'subSectionPages', 'seo'));
+ return inertia()->render('Page', [
+ 'page' => $page,
+ 'subSectionPages' => $subSectionPages,
+ 'seo' => $seo,
+ ]);
}
}
diff --git a/app/Http/Resources/PageResource.php b/app/Containers/AppStructure/UI/WEB/Transformers/PageResource.php
similarity index 70%
rename from app/Http/Resources/PageResource.php
rename to app/Containers/AppStructure/UI/WEB/Transformers/PageResource.php
index fba6e66..f244157 100644
--- a/app/Http/Resources/PageResource.php
+++ b/app/Containers/AppStructure/UI/WEB/Transformers/PageResource.php
@@ -1,18 +1,18 @@
+ * @param \App\Ship\Requests\Request $request
+ * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
- public function toArray(Request $request): array
+ public function toArray($request)
{
return [
'id' => $this->id,
diff --git a/app/Containers/Article/Actions/ListPostsAction.php b/app/Containers/Article/Actions/ListPostsAction.php
new file mode 100644
index 0000000..a658878
--- /dev/null
+++ b/app/Containers/Article/Actions/ListPostsAction.php
@@ -0,0 +1,39 @@
+getPostsTask->run($filters);
+ $categories = $this->getCategoriesTask->run();
+ $tags = $this->getTagsTask->run();
+ $filtersData = $this->buildFiltersTask->run($filters);
+ $seo = $this->seoPageProvider->getSeoForCurrentPage();
+
+ return [
+ 'posts' => inertia()->deepMerge(fn() => PostListResource::collection($posts->items())),
+ 'posts_pagination' => $posts->toArray(),
+ 'filters' => $filtersData,
+ 'categories' => $categories,
+ 'tags' => $tags,
+ 'seo' => $seo,
+ ];
+ }
+}
\ No newline at end of file
diff --git a/app/Containers/Article/Actions/ViewPostAction.php b/app/Containers/Article/Actions/ViewPostAction.php
new file mode 100644
index 0000000..aeabfd2
--- /dev/null
+++ b/app/Containers/Article/Actions/ViewPostAction.php
@@ -0,0 +1,8 @@
+belongsTo(Category::class);
+ }
+
+ public function author() : BelongsTo
+ {
+ return $this->belongsTo(User::class, 'user_id');
+ }
+
+ public function slide(): MorphOne
+ {
+ return $this->morphOne(Slide::class, 'slidable');
+ }
+
+ protected $casts = [
+ 'content' => 'array',
+ 'authors' => 'array',
+ 'status' => PostStatus::class,
+ 'images' => 'array'
+ ];
+}
diff --git a/app/Models/Tag.php b/app/Containers/Article/Models/Tag.php
similarity index 62%
rename from app/Models/Tag.php
rename to app/Containers/Article/Models/Tag.php
index 6b7af87..27ec426 100644
--- a/app/Models/Tag.php
+++ b/app/Containers/Article/Models/Tag.php
@@ -1,9 +1,9 @@
filterBuilder->reset();
+
+ // 1. Поисковый фильтр
+ $this->filterBuilder->add(
+ key: 'search_filter',
+ type: 'search',
+ value: $filters['search'] ?? null,
+ param: 'search'
+ );
+
+
+ // 2. Категории
+
+ $categoriesContent = [];
+ if (!empty($filters['category'])) {
+ $categoriesSlugs = Arr::wrap($filters['category']);
+ foreach ($categoriesSlugs as $item) {
+ $cacheKey = 'category_content_' . $item;
+ $categoriesContent[$item] = Cache::remember($cacheKey, now()->addHours(1), function () use ($item) {
+ return new CategoryResource(Category::where('slug', $item)->first());
+ });
+ }
+ }
+ $this->filterBuilder->add(
+ key: 'category_filter',
+ type: 'category',
+ value: $categoriesSlugs ?? null,
+ param: 'category',
+ content: $categoriesContent
+ );
+
+
+ // 3. Теги
+
+ $tagsContent = [];
+ if (!empty($filters['tag'])) {
+ $tagsSlugs = Arr::wrap($filters['tag']);
+ foreach ($tagsSlugs as $item) {
+ $cacheKey = 'tag_content_' . $item;
+ $tagsContent[$item] = Cache::remember($cacheKey, now()->addHours(1), function () use ($item) {
+ return new TagResource(DB::table('tags')
+ ->where(DB::raw("JSON_UNQUOTE(JSON_EXTRACT(slug, '$.ru'))"), $item)
+ ->first());
+ });
+ }
+ }
+ $this->filterBuilder->add(
+ key: 'tag_filter',
+ type: 'tag',
+ value: $tagsSlugs ?? null,
+ param: 'tag',
+ content: $tagsContent
+ );
+
+
+ // 4. Сортировка
+ $this->filterBuilder->add(
+ key: 'sortingBy_filter',
+ type: 'sort',
+ value: $filters['sort'] ?? null,
+ param: 'sort'
+ );
+
+
+ return $this->filterBuilder->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Containers/Article/Tasks/GetCategoriesTask.php b/app/Containers/Article/Tasks/GetCategoriesTask.php
new file mode 100644
index 0000000..3b7c1b9
--- /dev/null
+++ b/app/Containers/Article/Tasks/GetCategoriesTask.php
@@ -0,0 +1,18 @@
+addHours(48), function () {
+ return CategoryResource::collection(Category::has('posts')->get());
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/Containers/Article/Tasks/GetPostsTask.php b/app/Containers/Article/Tasks/GetPostsTask.php
new file mode 100644
index 0000000..fc05738
--- /dev/null
+++ b/app/Containers/Article/Tasks/GetPostsTask.php
@@ -0,0 +1,45 @@
+addHours(1), function () use ($filters) {
+ $query = Post::query()
+ ->with('category')
+ ->select('title', 'slug', 'authors', 'category_id', 'preview', 'search_data', 'publish_at')
+ ->where('status', 'published')
+ ->where('publish_at', '<', Carbon::now())
+ ->when(!empty($filters['tag']), function ($query) use ($filters) {
+ if (is_array($filters['tag'])) {
+ return $query->withAnyTags($filters['tag']);
+ }
+
+ $slugsArray = explode(',', $filters['tag']);
+ return $query->withAnyTags($slugsArray);
+ })
+ ->when(!empty($filters['category']), function ($query) use ($filters) {
+ if (is_array($filters['category'])) {
+ $query->whereHas('category', function ($query) use ($filters) {
+ $query->whereIn('slug', $filters['category']);
+ });
+ }
+ })
+ ->when(!empty($filters['search']), function ($query) use ($filters) {
+ $query->whereRaw('LOWER(title) like ?', ["%".strtolower($filters['search'])."%"]);
+ });
+
+ $sort = $filters['sort'] ?? 'desc';
+ return $query->orderBy('publish_at', $sort)->paginate(9)->withQueryString();
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/Containers/Article/Tasks/GetTagsTask.php b/app/Containers/Article/Tasks/GetTagsTask.php
new file mode 100644
index 0000000..ff0f289
--- /dev/null
+++ b/app/Containers/Article/Tasks/GetTagsTask.php
@@ -0,0 +1,25 @@
+addHours(1), function () {
+ $tagIds = DB::table('taggables')
+ ->distinct()
+ ->select('tag_id')
+ ->where('taggable_type', Post::class)
+ ->get()
+ ->pluck('tag_id');
+
+ return Tag::whereIn('id', $tagIds)->get();
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/Containers/Article/UI/WEB/Controllers/IndexPostController.php b/app/Containers/Article/UI/WEB/Controllers/IndexPostController.php
new file mode 100644
index 0000000..3d48f10
--- /dev/null
+++ b/app/Containers/Article/UI/WEB/Controllers/IndexPostController.php
@@ -0,0 +1,23 @@
+only(['search', 'category', 'tag', 'sort', 'page']);
+
+ $data = $this->listPostsAction->run($filters);
+
+ return inertia()->render('Client/Posts/Index', $data);
+ }
+}
\ No newline at end of file
diff --git a/app/Containers/Article/UI/WEB/Controllers/ShowPostController.php b/app/Containers/Article/UI/WEB/Controllers/ShowPostController.php
new file mode 100644
index 0000000..7718a60
--- /dev/null
+++ b/app/Containers/Article/UI/WEB/Controllers/ShowPostController.php
@@ -0,0 +1,40 @@
+value . $slug,
+ now()->addHours(1),
+ fn() => Post::where('slug', $slug)
+ ->where('publish_at', '<', Carbon::now())
+ ->firstOrFail()
+ );
+
+ $seo = Cache::remember(
+ CacheKeys::POST_PREFIX->value . 'seo_' . $slug,
+ now()->addHours(1),
+ fn() => $this->seoPageProvider->getSeoForModel($postData)
+ );
+
+ return inertia()->render('Client/Posts/Show', [
+ 'post' => new PostItemResource($postData),
+ 'seo' => $seo,
+ ]);
+ }
+}
\ No newline at end of file
diff --git a/app/Containers/Article/UI/WEB/Routes/web.php b/app/Containers/Article/UI/WEB/Routes/web.php
new file mode 100644
index 0000000..e176c69
--- /dev/null
+++ b/app/Containers/Article/UI/WEB/Routes/web.php
@@ -0,0 +1,14 @@
+group(function () {
+ Route::get('/news', IndexPostController::class)->name('client.post.index');
+ Route::get('/news/{slug}', ShowPostController::class)->name('client.post.show');
+});
+
+
+
diff --git a/app/Http/Resources/CategoryResource.php b/app/Containers/Article/UI/WEB/Transformers/CategoryResource.php
similarity index 52%
rename from app/Http/Resources/CategoryResource.php
rename to app/Containers/Article/UI/WEB/Transformers/CategoryResource.php
index b9436d2..180dad7 100644
--- a/app/Http/Resources/CategoryResource.php
+++ b/app/Containers/Article/UI/WEB/Transformers/CategoryResource.php
@@ -1,18 +1,21 @@
+ * @param \App\Ship\Requests\Request $request
+ * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/PostResource.php b/app/Containers/Article/UI/WEB/Transformers/PostItemResource.php
similarity index 61%
rename from app/Http/Resources/PostResource.php
rename to app/Containers/Article/UI/WEB/Transformers/PostItemResource.php
index 8031684..f7ec139 100644
--- a/app/Http/Resources/PostResource.php
+++ b/app/Containers/Article/UI/WEB/Transformers/PostItemResource.php
@@ -1,19 +1,19 @@
+ * @param \App\Ship\Requests\Request $request
+ * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
- public function toArray(Request $request): array
+ public function toArray($request)
{
return [
'id' => $this->id,
@@ -22,7 +22,7 @@ class PostResource extends JsonResource
'content' => $this->content,
'is_published' => $this->is_published,
'category' => $this->category,
- 'tags' => ClientTagResource::collection($this->tags()->get()),
+ 'tags' => TagResource::collection($this->tags()->get()),
'authors' => $this->authors,
'gallery' => $this->images,
'reading_time' => $this->reading_time,
diff --git a/app/Http/Resources/ClientPostListResource.php b/app/Containers/Article/UI/WEB/Transformers/PostListResource.php
similarity index 66%
rename from app/Http/Resources/ClientPostListResource.php
rename to app/Containers/Article/UI/WEB/Transformers/PostListResource.php
index a56dfa3..d645ec6 100644
--- a/app/Http/Resources/ClientPostListResource.php
+++ b/app/Containers/Article/UI/WEB/Transformers/PostListResource.php
@@ -1,19 +1,19 @@
+ * @param \App\Ship\Requests\Request $request
+ * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
- public function toArray(Request $request): array
+ public function toArray($request)
{
return [
'id' => $this->id,
diff --git a/app/Containers/Article/UI/WEB/Transformers/TagResource.php b/app/Containers/Article/UI/WEB/Transformers/TagResource.php
new file mode 100644
index 0000000..2e1120e
--- /dev/null
+++ b/app/Containers/Article/UI/WEB/Transformers/TagResource.php
@@ -0,0 +1,26 @@
+ $this->id,
+ 'name' => $this->name,
+ 'slug' => $this->slug,
+ ];
+ }
+}
diff --git a/app/Enums/TypeExam.php b/app/Containers/Education/Enums/TypeExam.php
similarity index 96%
rename from app/Enums/TypeExam.php
rename to app/Containers/Education/Enums/TypeExam.php
index 741a9a4..51daf0f 100644
--- a/app/Enums/TypeExam.php
+++ b/app/Containers/Education/Enums/TypeExam.php
@@ -1,6 +1,6 @@
'array'
];
- public function degrees()
- {
- return $this->hasMany(CampaignDegree::class);
- }
- public function admission_plans()
+ public function admission_plans(): HasMany
{
return $this->hasMany(AdmissionPlan::class, 'admission_campaigns_id', 'id');
}
- public function educationalPrograms()
+ public function educationalPrograms(): HasManyThrough
{
return $this->hasManyThrough(
EducationalProgram::class,
diff --git a/app/Models/AdmissionPlan.php b/app/Containers/Education/Models/AdmissionPlan.php
similarity index 66%
rename from app/Models/AdmissionPlan.php
rename to app/Containers/Education/Models/AdmissionPlan.php
index 5de646e..0396af8 100644
--- a/app/Models/AdmissionPlan.php
+++ b/app/Containers/Education/Models/AdmissionPlan.php
@@ -1,9 +1,10 @@
'array'
];
- public function educationalProgram()
+ public function educationalProgram(): BelongsTo
{
return $this->belongsTo(EducationalProgram::class, 'educational_programs_id', 'id');
}
- public function admissionCampaign()
+ public function admissionCampaign(): BelongsTo
{
return $this->belongsTo(AdmissionCampaign::class, 'admission_campaigns_id', 'id');
}
diff --git a/app/Models/DirectionStudy.php b/app/Containers/Education/Models/DirectionStudy.php
similarity index 72%
rename from app/Models/DirectionStudy.php
rename to app/Containers/Education/Models/DirectionStudy.php
index 92e1fbb..fcc264d 100644
--- a/app/Models/DirectionStudy.php
+++ b/app/Containers/Education/Models/DirectionStudy.php
@@ -1,11 +1,12 @@
LevelEducational::class,
];
- public function degree()
- {
- return $this->belongsTo(CampaignDegree::class, 'campaign_degree_id', 'id');
- }
-
- public function programs()
+ public function programs(): HasMany
{
return $this->hasMany(EducationalProgram::class);
}
- public function scopeWithActivePrograms(Builder $query)
+ public function scopeWithActivePrograms(Builder $query): Builder
{
return $query->with(['programs' => function ($query) {
$query->whereHas('admission_plans.admissionCampaign', function ($q) {
@@ -37,31 +33,31 @@ class DirectionStudy extends Model
}]);
}
- public function scopeWithActiveAdmissionCampaign(Builder $query)
+ public function scopeWithActiveAdmissionCampaign(Builder $query): Builder
{
return $query->whereHas('programs.admission_plans.admissionCampaign', function ($q) {
$q->where('status', 1);
});
}
- public function scopeWithAdmissionCampaignByYear(Builder $query, string $year)
+ public function scopeWithAdmissionCampaignByYear(Builder $query, string $year): Builder
{
return $query->whereHas('programs.admission_plans.admissionCampaign', function ($q) use ($year) {
$q->where('status', 1)->where('academic_year', $year);
});
}
- public function scopeForBachelorLevel(Builder $query)
+ public function scopeForBachelorLevel(Builder $query): Builder
{
return $query->where('lvl_edu', LevelEducational::BACHELOR);
}
- public function scopeForMiddleLevel(Builder $query)
+ public function scopeForMiddleLevel(Builder $query): Builder
{
return $query->whereIn('lvl_edu', [LevelEducational::MIDDLE_LEVEL_SPECIALIST_TRAINING, LevelEducational::PREPARATION_OF_QUALIFIED_WORKERS]);
}
- public function scopeForMasterLevel(Builder $query)
+ public function scopeForMasterLevel(Builder $query): Builder
{
return $query->where('lvl_edu', LevelEducational::MASTER);
}
diff --git a/app/Models/EducationalProgram.php b/app/Containers/Education/Models/EducationalProgram.php
similarity index 52%
rename from app/Models/EducationalProgram.php
rename to app/Containers/Education/Models/EducationalProgram.php
index 1635362..970f531 100644
--- a/app/Models/EducationalProgram.php
+++ b/app/Containers/Education/Models/EducationalProgram.php
@@ -1,14 +1,19 @@
LevelEducational::class,
];
- public function directionStudy()
+ public function directionStudy(): BelongsTo
{
return $this->belongsTo(DirectionStudy::class);
}
- public function departments()
+ public function departments(): BelongsToMany
{
return $this->belongsToMany(Department::class, 'program_department');
}
- public function admission_plans()
+ public function admission_plans(): HasMany
{
return $this->hasMany(AdmissionPlan::class, 'educational_programs_id', 'id');
}
-
- public function seo()
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
}
diff --git a/app/Policies/AdmissionCampaignPolicy.php b/app/Containers/Education/Policies/AdmissionCampaignPolicy.php
similarity index 95%
rename from app/Policies/AdmissionCampaignPolicy.php
rename to app/Containers/Education/Policies/AdmissionCampaignPolicy.php
index 9d1c390..465e2b6 100644
--- a/app/Policies/AdmissionCampaignPolicy.php
+++ b/app/Containers/Education/Policies/AdmissionCampaignPolicy.php
@@ -1,9 +1,9 @@
where('status', 1)->firstOrFail();
+ return $activeCampaign->academic_year;
+ }
+}
diff --git a/app/Http/Controllers/UpdateAdmissionPlansDataApiController.php b/app/Containers/Education/UI/API/Controllers/UpdateAdmissionPlansDataApiController.php
similarity index 84%
rename from app/Http/Controllers/UpdateAdmissionPlansDataApiController.php
rename to app/Containers/Education/UI/API/Controllers/UpdateAdmissionPlansDataApiController.php
index 6e62c22..8210854 100644
--- a/app/Http/Controllers/UpdateAdmissionPlansDataApiController.php
+++ b/app/Containers/Education/UI/API/Controllers/UpdateAdmissionPlansDataApiController.php
@@ -1,7 +1,8 @@
name('academic.year');
+
+Route::middleware(['auth', 'superadmin'])->group(function () {
+ Route::get('/get-edu-program-data', [UpdateEduDataApiController::class, 'index']);
+ Route::get('/get-admission-plans-data', [UpdateAdmissionPlansDataApiController::class, 'index']);
+});
\ No newline at end of file
diff --git a/app/Http/Controllers/ClientProgramController.php b/app/Containers/Education/UI/WEB/Controllers/ClientProgramController.php
similarity index 89%
rename from app/Http/Controllers/ClientProgramController.php
rename to app/Containers/Education/UI/WEB/Controllers/ClientProgramController.php
index eba06ac..0e6a177 100644
--- a/app/Http/Controllers/ClientProgramController.php
+++ b/app/Containers/Education/UI/WEB/Controllers/ClientProgramController.php
@@ -1,26 +1,27 @@
seoPageProvider->getSeoForModel($programModel);
});
- $program = new EducationalProgramFullResource($programModel);
+ $program = new EducationalProgramResource($programModel);
return Inertia::render('Client/Programs/Show', compact('program', 'formsEdu', 'seo'));
}
diff --git a/app/Containers/Education/UI/WEB/Routes/web.php b/app/Containers/Education/UI/WEB/Routes/web.php
new file mode 100644
index 0000000..03e2f25
--- /dev/null
+++ b/app/Containers/Education/UI/WEB/Routes/web.php
@@ -0,0 +1,12 @@
+group(function () {
+ Route::get('/programs/', [ClientProgramController::class, 'index'])->name('client.program.index');
+ Route::get('/program/{slug}', [ClientProgramController::class, 'show'])->name('client.program.show');
+});
+
+
diff --git a/app/Containers/Education/UI/WEB/Transformers/DirectionStudyResource.php b/app/Containers/Education/UI/WEB/Transformers/DirectionStudyResource.php
new file mode 100644
index 0000000..a599898
--- /dev/null
+++ b/app/Containers/Education/UI/WEB/Transformers/DirectionStudyResource.php
@@ -0,0 +1,18 @@
+ $this->id,
+ 'name' => $this->name,
+ 'code' => $this->code,
+ 'programs' => EducationalProgramBasicResource::collection($this->programs),
+ ];
+ }
+}
diff --git a/app/Http/Resources/EducationalProgramResource.php b/app/Containers/Education/UI/WEB/Transformers/EducationalProgramBasicResource.php
similarity index 77%
rename from app/Http/Resources/EducationalProgramResource.php
rename to app/Containers/Education/UI/WEB/Transformers/EducationalProgramBasicResource.php
index 223a483..d3803db 100644
--- a/app/Http/Resources/EducationalProgramResource.php
+++ b/app/Containers/Education/UI/WEB/Transformers/EducationalProgramBasicResource.php
@@ -1,11 +1,11 @@
- */
- public function toArray(Request $request): array
+
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Containers/Event/Loaders/AliasesLoader.php b/app/Containers/Event/Loaders/AliasesLoader.php
new file mode 100644
index 0000000..de27fae
--- /dev/null
+++ b/app/Containers/Event/Loaders/AliasesLoader.php
@@ -0,0 +1,11 @@
+ 'array',
];
- public function seo()
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
public function category() : BelongsTo
{
diff --git a/app/Models/EventCategory.php b/app/Containers/Event/Models/EventCategory.php
similarity index 83%
rename from app/Models/EventCategory.php
rename to app/Containers/Event/Models/EventCategory.php
index 8d42c41..64a8cef 100644
--- a/app/Models/EventCategory.php
+++ b/app/Containers/Event/Models/EventCategory.php
@@ -1,9 +1,9 @@
value . 'categories',
now()->addDay(),
- fn() => ClientEventCategoryResource::collection(EventCategory::has('events')->get())
+ fn() => EventCategoryResource::collection(EventCategory::has('events')->get())
);
$filters = $this->getFilters();
@@ -82,7 +77,7 @@ class ClientEventController extends Controller
}
);
- $event = new ClientEventFullResource($eventModel);
+ $event = new EventResource($eventModel);
return Inertia::render('Client/Events/Show', compact(
@@ -104,7 +99,7 @@ class ClientEventController extends Controller
$categories = Cache::remember(
CacheKeys::EVENTS_PREFIX->value . 'categories',
now()->addDay(),
- fn() => ClientEventCategoryResource::collection(EventCategory::has('events')->get())
+ fn() => EventCategoryResource::collection(EventCategory::has('events')->get())
);
$filters = $this->getFilters();
@@ -149,7 +144,7 @@ class ClientEventController extends Controller
private function getEvents(array $currentDate)
{
- return ClientEventResource::collection(Event::select('title', 'slug', 'event_date_start', 'event_time_start', 'address', 'is_online', 'category_id')
+ return EventPreviewResource::collection(Event::select('title', 'slug', 'event_date_start', 'event_time_start', 'address', 'is_online', 'category_id')
->whereDate('event_date_start', '=', $currentDate['fullDate'])
->with('category')
->when(request()->input('is_online'), function ($query, $value) {
@@ -172,7 +167,7 @@ class ClientEventController extends Controller
private function getEventsArchive()
{
- return ClientEventResource::collection(Event::select('title', 'slug', 'event_date_start', 'event_time_start', 'address', 'is_online', 'category_id')
+ return EventPreviewResource::collection(Event::select('title', 'slug', 'event_date_start', 'event_time_start', 'address', 'is_online', 'category_id')
->whereDate('event_date_start', '<', now())
->with('category')
->when(request()->input('is_online'), function ($query, $value) {
@@ -223,8 +218,6 @@ class ClientEventController extends Controller
// Получаем массив без ключей
-
-
// Извлекаем уникальные даты из событий
return $events->map(function ($event) {
$date = new DateTime($event->event_date_start);
@@ -252,7 +245,7 @@ class ClientEventController extends Controller
$categoriesContent = [];
if (request()->input('category')) {
foreach (request()->input('category') as $item) {
- $categoriesContent[$item] = new ClientEventCategoryResource(EventCategory::where('slug', $item)->first());
+ $categoriesContent[$item] = new EventCategoryResource(EventCategory::where('slug', $item)->first());
}
}
diff --git a/app/Containers/Event/UI/WEB/Routes/web.php b/app/Containers/Event/UI/WEB/Routes/web.php
new file mode 100644
index 0000000..b1e784e
--- /dev/null
+++ b/app/Containers/Event/UI/WEB/Routes/web.php
@@ -0,0 +1,13 @@
+group(function () {
+ Route::get('/events', [ClientEventController::class, 'index'])->name('client.event.index');
+ Route::get('/events/archive', [ClientEventController::class, 'archive'])->name('client.event.archive'); // Доделать builder
+ Route::get('/events/{slug}', [ClientEventController::class, 'show'])->name('client.event.show');
+});
+
+
diff --git a/app/Http/Resources/EventCategoryResource.php b/app/Containers/Event/UI/WEB/Transformers/EventCategoryResource.php
similarity index 57%
rename from app/Http/Resources/EventCategoryResource.php
rename to app/Containers/Event/UI/WEB/Transformers/EventCategoryResource.php
index 5252a05..d48b360 100644
--- a/app/Http/Resources/EventCategoryResource.php
+++ b/app/Containers/Event/UI/WEB/Transformers/EventCategoryResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return parent::toArray($request);
}
diff --git a/app/Http/Resources/ClientEventResource.php b/app/Containers/Event/UI/WEB/Transformers/EventPreviewResource.php
similarity index 73%
rename from app/Http/Resources/ClientEventResource.php
rename to app/Containers/Event/UI/WEB/Transformers/EventPreviewResource.php
index ec3178c..abbcba3 100644
--- a/app/Http/Resources/ClientEventResource.php
+++ b/app/Containers/Event/UI/WEB/Transformers/EventPreviewResource.php
@@ -1,19 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/ClientEventFullResource.php b/app/Containers/Event/UI/WEB/Transformers/EventResource.php
similarity index 71%
rename from app/Http/Resources/ClientEventFullResource.php
rename to app/Containers/Event/UI/WEB/Transformers/EventResource.php
index 680687e..56293d7 100644
--- a/app/Http/Resources/ClientEventFullResource.php
+++ b/app/Containers/Event/UI/WEB/Transformers/EventResource.php
@@ -1,13 +1,11 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/EventThumbnailResource.php b/app/Containers/Event/UI/WEB/Transformers/EventThumbnailResource.php
similarity index 81%
rename from app/Http/Resources/EventThumbnailResource.php
rename to app/Containers/Event/UI/WEB/Transformers/EventThumbnailResource.php
index fec971d..d71c275 100644
--- a/app/Http/Resources/EventThumbnailResource.php
+++ b/app/Containers/Event/UI/WEB/Transformers/EventThumbnailResource.php
@@ -1,10 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Containers/InstituteStructure/Loaders/AliasesLoader.php b/app/Containers/InstituteStructure/Loaders/AliasesLoader.php
new file mode 100644
index 0000000..b3136f0
--- /dev/null
+++ b/app/Containers/InstituteStructure/Loaders/AliasesLoader.php
@@ -0,0 +1,11 @@
+ 'array',
];
- public function seo()
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
-
- public function faculty()
+ public function faculty(): BelongsTo
{
return $this->belongsTo(Faculty::class);
}
- public function workers()
+ public function workers(): BelongsToMany
{
return $this->belongsToMany(User::class, 'workers_departments')->withPivot(['position', 'sort', 'service_email', 'service_phone', 'cabinet']);
}
- public function programs()
+ public function programs(): BelongsToMany
{
return $this->belongsToMany(EducationalProgram::class, 'program_department');
}
- public function teachers()
+ public function teachers(): BelongsToMany
{
return $this->belongsToMany(User::class, 'teachers_departments')->withPivot(['teaching_position', 'sort', 'service_email', 'service_phone', 'cabinet']);
}
diff --git a/app/Models/Division.php b/app/Containers/InstituteStructure/Models/Division.php
similarity index 70%
rename from app/Models/Division.php
rename to app/Containers/InstituteStructure/Models/Division.php
index fca6cd0..051e3c5 100644
--- a/app/Models/Division.php
+++ b/app/Containers/InstituteStructure/Models/Division.php
@@ -1,14 +1,16 @@
'array',
];
- public function seo()
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
-
public function workers()
{
return $this->belongsToMany(User::class, 'division_user')->withPivot(['administrativePosition', 'sort', 'service_email', 'service_phone', 'cabinet']);
diff --git a/app/Models/Faculty.php b/app/Containers/InstituteStructure/Models/Faculty.php
similarity index 54%
rename from app/Models/Faculty.php
rename to app/Containers/InstituteStructure/Models/Faculty.php
index 9ba8eb8..8157531 100644
--- a/app/Models/Faculty.php
+++ b/app/Containers/InstituteStructure/Models/Faculty.php
@@ -1,13 +1,17 @@
'array',
];
- public function seo()
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
-
- public function departments()
+ public function departments(): HasMany
{
return $this->hasMany(Department::class);
}
- public function workers()
+ public function workers(): BelongsToMany
{
return $this->belongsToMany(User::class, 'workers_faculties')->withPivot(['position', 'sort', 'service_email', 'service_phone', 'cabinet'])->whereHas('userDetail');
}
-
-
-
}
diff --git a/app/Policies/DepartmentPolicy.php b/app/Containers/InstituteStructure/Policies/DepartmentPolicy.php
similarity index 94%
rename from app/Policies/DepartmentPolicy.php
rename to app/Containers/InstituteStructure/Policies/DepartmentPolicy.php
index 67cc91d..373a87c 100644
--- a/app/Policies/DepartmentPolicy.php
+++ b/app/Containers/InstituteStructure/Policies/DepartmentPolicy.php
@@ -1,9 +1,9 @@
value . 'active_' . $faculty->id,
now()->addDay(),
function () use ($faculty) {
- return ClientDepartmentPreviewResource::collection(
+ return DepartmentPreviewResource::collection(
Department::query()
->where('is_active', true)
->where('faculty_id', $faculty->id)
@@ -96,12 +95,11 @@ class ClientDepartmentController extends Controller
}
- private function groupProgramsByDirection(Collection $programs)
+ private function groupProgramsByDirection(Collection $programs): Collection
{
// Группируем программы по имени направления
- $grouped = $programs->groupBy(function ($program) {
+ return $programs->groupBy(function ($program) {
return $program->directionStudy->code . " " . $program->directionStudy->name; // Используем имя направления как ключ
});
- return $grouped;
}
}
diff --git a/app/Http/Controllers/ClientDivisionController.php b/app/Containers/InstituteStructure/UI/WEB/Controllers/ClientDivisionController.php
similarity index 79%
rename from app/Http/Controllers/ClientDivisionController.php
rename to app/Containers/InstituteStructure/UI/WEB/Controllers/ClientDivisionController.php
index c0e16af..35873c0 100644
--- a/app/Http/Controllers/ClientDivisionController.php
+++ b/app/Containers/InstituteStructure/UI/WEB/Controllers/ClientDivisionController.php
@@ -1,19 +1,18 @@
value . 'active_list',
now()->addDay(), // Кешируем на 1 день
function () {
- return FacultyResource::collection(
+ return FacultyPreviewResource::collection(
Faculty::query()
->where('is_active', true)
->get()
@@ -44,7 +46,7 @@ class ClientFacultyController extends Controller
CacheKeys::FACULTIES_PREFIX->value . 'active_list',
now()->addDay(),
function () {
- return FacultyResource::collection(
+ return FacultyPreviewResource::collection(
Faculty::query()
->where('is_active', true)
->get()
@@ -59,7 +61,7 @@ class ClientFacultyController extends Controller
function () use ($slug) {
return Faculty::where('slug', $slug)
->where('is_active', true)
- ->with(['departments.faculty', 'workers.userDetail', 'seo'])
+ ->with(['departments.faculty', 'workers', 'seo'])
->firstOrFail();
}
);
@@ -72,7 +74,7 @@ class ClientFacultyController extends Controller
}
);
- $faculty = new FullFacultyResource($faculty);
+ $faculty = new FacultyResource($faculty);
diff --git a/app/Containers/InstituteStructure/UI/WEB/Routes/web.php b/app/Containers/InstituteStructure/UI/WEB/Routes/web.php
new file mode 100644
index 0000000..4759c14
--- /dev/null
+++ b/app/Containers/InstituteStructure/UI/WEB/Routes/web.php
@@ -0,0 +1,21 @@
+group(function () {
+ // Факультеты и кафедры
+ Route::get('/faculties', [ClientFacultyController::class, 'index'])->name('client.faculty.index');
+ Route::get('/faculties/{slug}', [ClientFacultyController::class, 'show'])->name('client.faculty.show');
+ Route::get('/faculties/{facultySlug}/{departmentSlug}', [ClientDepartmentController::class, 'show'])->name('client.department.show');
+
+ // Подразделения института
+ Route::get('/divisions', [ClientDivisionController::class, 'index'])->name('client.division.index');
+ Route::get('/divisions/{slug}', [ClientDivisionController::class, 'show'])->name('client.division.show');
+});
+
+
diff --git a/app/Http/Resources/DepartmentPreviewResource.php b/app/Containers/InstituteStructure/UI/WEB/Transformers/DepartmentPreviewResource.php
similarity index 60%
rename from app/Http/Resources/DepartmentPreviewResource.php
rename to app/Containers/InstituteStructure/UI/WEB/Transformers/DepartmentPreviewResource.php
index a87713e..c2a1ca8 100644
--- a/app/Http/Resources/DepartmentPreviewResource.php
+++ b/app/Containers/InstituteStructure/UI/WEB/Transformers/DepartmentPreviewResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
'title' => $this->title,
- 'faculty' => $this->faculty,
'slug' => $this->slug,
];
}
diff --git a/app/Containers/InstituteStructure/UI/WEB/Transformers/DepartmentResource.php b/app/Containers/InstituteStructure/UI/WEB/Transformers/DepartmentResource.php
new file mode 100644
index 0000000..a7dbba8
--- /dev/null
+++ b/app/Containers/InstituteStructure/UI/WEB/Transformers/DepartmentResource.php
@@ -0,0 +1,29 @@
+
+ */
+ public function toArray($request): array
+ {
+ return [
+ 'id' => $this->id,
+ 'title' => $this->title,
+ 'content' => $this->content,
+ 'faculty' => $this->faculty,
+ 'slug' => $this->slug,
+ 'workers' => PersonDepartmentPreviewResource::collection($this->workers),
+ 'teachers' => PersonDepartmentTeachPreviewResource::collection($this->teachers),
+ ];
+ }
+}
diff --git a/app/Http/Resources/DivisionResource.php b/app/Containers/InstituteStructure/UI/WEB/Transformers/DivisionResource.php
similarity index 52%
rename from app/Http/Resources/DivisionResource.php
rename to app/Containers/InstituteStructure/UI/WEB/Transformers/DivisionResource.php
index 47d95a3..6289d9c 100644
--- a/app/Http/Resources/DivisionResource.php
+++ b/app/Containers/InstituteStructure/UI/WEB/Transformers/DivisionResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
'title' => $this->title,
'slug' => $this->slug,
- 'workers' => ClientPersonDivisionPreviewResource::collection($this->whenLoaded('workers')),
+ 'workers' => PersonDivisionPreviewResource::collection($this->whenLoaded('workers')),
'description' => $this->description,
];
}
diff --git a/app/Http/Resources/FacultyResource.php b/app/Containers/InstituteStructure/UI/WEB/Transformers/FacultyPreviewResource.php
similarity index 60%
rename from app/Http/Resources/FacultyResource.php
rename to app/Containers/InstituteStructure/UI/WEB/Transformers/FacultyPreviewResource.php
index e7589a9..e305bf8 100644
--- a/app/Http/Resources/FacultyResource.php
+++ b/app/Containers/InstituteStructure/UI/WEB/Transformers/FacultyPreviewResource.php
@@ -1,18 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/FullFacultyResource.php b/app/Containers/InstituteStructure/UI/WEB/Transformers/FacultyResource.php
similarity index 55%
rename from app/Http/Resources/FullFacultyResource.php
rename to app/Containers/InstituteStructure/UI/WEB/Transformers/FacultyResource.php
index a6024f5..913f79a 100644
--- a/app/Http/Resources/FullFacultyResource.php
+++ b/app/Containers/InstituteStructure/UI/WEB/Transformers/FacultyResource.php
@@ -1,18 +1,19 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
@@ -20,7 +21,7 @@ class FullFacultyResource extends JsonResource
'content' => $this->content,
'shortTitle' => $this->abbreviation,
'slug' => $this->slug,
- 'workers' => ClientPersonFacultyPreviewResource::collection($this->workers),
+ 'workers' => PersonFacultyPreviewResource::collection($this->workers),
'departments' => DepartmentPreviewResource::collection($this->departments)
];
}
diff --git a/app/Containers/Post/Models/Post.php b/app/Containers/Post/Models/Post.php
deleted file mode 100644
index 9c047bf..0000000
--- a/app/Containers/Post/Models/Post.php
+++ /dev/null
@@ -1,64 +0,0 @@
-id);
- Cache::forget('posts_' . $post->category_id . '_*'); // Очистка кеша для всех постов в категории
- });
-
- static::deleted(function ($post) {
- Cache::forget('post_' . $post->id);
- Cache::forget('posts_' . $post->category_id . '_*'); // Очистка кеша для всех постов в категории
- });
- }
-
- public function category() : BelongsTo
- {
- return $this->belongsTo(Category::class);
- }
-
- public function author() : BelongsTo
- {
- return $this->belongsTo(User::class, 'user_id');
- }
-
- public function seo()
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
-
- public function mainSlider()
- {
- return $this->morphOne(MainSlider::class, 'slidable');
- }
-
- protected $casts = [
- 'content' => 'array',
- 'authors' => 'array',
- 'status' => PostStatus::class,
- 'images' => 'array'
- ];
-}
diff --git a/app/Containers/Schedule/Loaders/AliasesLoader.php b/app/Containers/Schedule/Loaders/AliasesLoader.php
new file mode 100644
index 0000000..51e03a0
--- /dev/null
+++ b/app/Containers/Schedule/Loaders/AliasesLoader.php
@@ -0,0 +1,11 @@
+belongsTo(Faculty::class);
+ }
+ public function schedules(): \Illuminate\Database\Eloquent\Relations\HasMany
+ {
+ return $this->hasMany(Schedule::class);
+ }
+}
diff --git a/app/Models/Schedule.php b/app/Containers/Schedule/Models/Schedule.php
similarity index 70%
rename from app/Models/Schedule.php
rename to app/Containers/Schedule/Models/Schedule.php
index 69fcc1a..ed56f8c 100644
--- a/app/Models/Schedule.php
+++ b/app/Containers/Schedule/Models/Schedule.php
@@ -1,9 +1,10 @@
'array',
];
- public function faculty()
- {
- return $this->belongsTo(Faculty::class);
- }
-
public function educationalGroup(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(EducationalGroup::class);
}
-
-
}
diff --git a/app/Policies/EducationalGroupPolicy.php b/app/Containers/Schedule/Policies/EducationalGroupPolicy.php
similarity index 95%
rename from app/Policies/EducationalGroupPolicy.php
rename to app/Containers/Schedule/Policies/EducationalGroupPolicy.php
index a7e22ce..24ccffa 100644
--- a/app/Policies/EducationalGroupPolicy.php
+++ b/app/Containers/Schedule/Policies/EducationalGroupPolicy.php
@@ -1,9 +1,9 @@
has('schedules')
->when(request()->input('search'), function ($query, $search) {
$query->whereRaw('LOWER(title) like ?', ["%".strtolower($search)."%"]);
@@ -32,11 +29,16 @@ class ClientScheduleController extends Controller
$query->where('education_form_id', FormEducation::fromName($form)->value);
})
-
->with('schedules')
->with('faculty')
+ ->orderBy('faculty_id')
->orderBy('title')
- ->get());
+ ->paginate(10);
+
+ $schedulesPaginate = $educationalGroups->toArray();
+ unset($schedulesPaginate['data']);
+ $educationalGroups = EducationalGroupResource::collection($educationalGroups->items());
+
$schedulesByFaculty = $educationalGroups->groupBy(function ($group) {
return $group->faculty->title;
@@ -44,8 +46,6 @@ class ClientScheduleController extends Controller
$schedulesByFaculty = $schedulesByFaculty->toArray();
-
-
$forms_education = [];
foreach (FormEducation::cases() as $case) {
$forms_education[$case->name] = $case->getLabel();
@@ -71,13 +71,23 @@ class ClientScheduleController extends Controller
$seo = $this->seoPageProvider->getSeoForCurrentPage();
+ return inertia()->render(
+ 'Client/Schedules/Index',
+ [
+ 'filters' => $filters,
+ 'forms_education' => $forms_education,
+ 'schedulesByFaculty' => inertia()->deepMerge(fn() => $schedulesByFaculty),
+ 'schedules_paginator' => $schedulesPaginate,
+ 'seo' => $seo,
+ ]
+ );
+
// Возвращаем данные в представление
- return Inertia::render('Client/Schedules/Index', compact('educationalGroups', 'filters', 'forms_education', 'schedulesByFaculty', 'seo'));
}
- public function show($id)
- {
- $schedule = Schedule::find($id);
- return Inertia::render('Client/Schedules/Show', compact('schedule'));
- }
+// public function show($id)
+// {
+// $schedule = Schedule::find($id);
+// return Inertia::render('Client/Schedules/Show', compact('schedule'));
+// }
}
diff --git a/app/Containers/Schedule/UI/WEB/Routes/web.php b/app/Containers/Schedule/UI/WEB/Routes/web.php
new file mode 100644
index 0000000..bfc756f
--- /dev/null
+++ b/app/Containers/Schedule/UI/WEB/Routes/web.php
@@ -0,0 +1,15 @@
+group(function () {
+ // Расписание занятий
+ Route::get('/schedule', [ClientScheduleController::class, 'index'])->name('client.schedule.index');
+ Route::get('/schedule/{id}', [ClientScheduleController::class, 'show'])->name('client.schedule.show');
+});
+
+
+
diff --git a/app/Containers/Schedule/UI/WEB/Transformers/EducationalGroupResource.php b/app/Containers/Schedule/UI/WEB/Transformers/EducationalGroupResource.php
new file mode 100644
index 0000000..f3675cd
--- /dev/null
+++ b/app/Containers/Schedule/UI/WEB/Transformers/EducationalGroupResource.php
@@ -0,0 +1,25 @@
+
+ */
+ public function toArray($request): array
+ {
+ return [
+ 'id' => $this->id,
+ 'title' => $this->title,
+ 'schedules' => ScheduleGroupResource::collection($this->schedules),
+ 'faculty' => $this->faculty->title,
+ ];
+ }
+}
diff --git a/app/Http/Resources/ClientScheduleSearchResource.php b/app/Containers/Schedule/UI/WEB/Transformers/ScheduleGroupResource.php
similarity index 50%
rename from app/Http/Resources/ClientScheduleSearchResource.php
rename to app/Containers/Schedule/UI/WEB/Transformers/ScheduleGroupResource.php
index 6fee7ae..871d444 100644
--- a/app/Http/Resources/ClientScheduleSearchResource.php
+++ b/app/Containers/Schedule/UI/WEB/Transformers/ScheduleGroupResource.php
@@ -1,18 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Containers/Science/Loaders/AliasesLoader.php b/app/Containers/Science/Loaders/AliasesLoader.php
new file mode 100644
index 0000000..dd90b99
--- /dev/null
+++ b/app/Containers/Science/Loaders/AliasesLoader.php
@@ -0,0 +1,11 @@
+ 'array',
];
- public function journals()
+ public function journals(): HasMany
{
return $this->hasMany(JournalIssue::class);
}
- public function seo()
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
-
public function getSeoDescription(): array
{
return $this->main_info;
diff --git a/app/Models/JournalIssue.php b/app/Containers/Science/Models/JournalIssue.php
similarity index 69%
rename from app/Models/JournalIssue.php
rename to app/Containers/Science/Models/JournalIssue.php
index b1d5023..aeced35 100644
--- a/app/Models/JournalIssue.php
+++ b/app/Containers/Science/Models/JournalIssue.php
@@ -1,9 +1,9 @@
value . 'list',
now()->addWeek(),
function () {
- return ClientAcademicJournalListResource::collection(
+ return AcademicJournalResource::collection(
AcademicJournal::query()->get()
);
}
@@ -52,7 +52,7 @@ class ClientAcademicJournalController extends Controller
}
);
- $journal = new ClientAcademicJournalListResource($journalData);
+ $journal = new AcademicJournalResource($journalData);
diff --git a/app/Containers/Science/UI/WEB/Routes/web.php b/app/Containers/Science/UI/WEB/Routes/web.php
new file mode 100644
index 0000000..47480a0
--- /dev/null
+++ b/app/Containers/Science/UI/WEB/Routes/web.php
@@ -0,0 +1,12 @@
+group(function () {
+ Route::get('/academic-journals/', [ClientAcademicJournalController::class, 'index'])->name('client.academicJournals.index');
+ Route::get('/academic-journals/{slug}', [ClientAcademicJournalController::class, 'show'])->name('client.academicJournals.show');
+});
+
+
diff --git a/app/Http/Resources/ClientContactWidgetResource.php b/app/Containers/Science/UI/WEB/Transformers/AcademicJournalResource.php
similarity index 74%
rename from app/Http/Resources/ClientContactWidgetResource.php
rename to app/Containers/Science/UI/WEB/Transformers/AcademicJournalResource.php
index 1477d59..1868124 100644
--- a/app/Http/Resources/ClientContactWidgetResource.php
+++ b/app/Containers/Science/UI/WEB/Transformers/AcademicJournalResource.php
@@ -1,11 +1,11 @@
getBreadcrumb($html);
+ }
+
+ private function getBreadcrumb(string $html): ?string
+ {
+ $document = new Document($html);
+ $breadcrumbs = $document->first('ol.breadcrumb')?->find('li') ?? [];
+
+ foreach ($breadcrumbs as $index => $breadcrumb) {
+ if ($index === 2) { // Индексация с 0 → третий элемент = 2
+ return $breadcrumb->text();
+ }
+ }
+
+ return null;
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/Containers/Search/Services/CategoryFinderService.php b/app/Containers/Search/Services/CategoryFinderService.php
new file mode 100644
index 0000000..73d962d
--- /dev/null
+++ b/app/Containers/Search/Services/CategoryFinderService.php
@@ -0,0 +1,36 @@
+first('ul.dropdown-menu');
+ $links = $dropdownMenu->find('a');
+ $categories = [];
+
+ foreach ($links as $link) {
+ $category = trim($link->text());
+ $categories[] = $category;
+ }
+
+ return $categories;
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/Containers/Search/Services/HtmlContentExtractorService.php b/app/Containers/Search/Services/HtmlContentExtractorService.php
new file mode 100644
index 0000000..4b72212
--- /dev/null
+++ b/app/Containers/Search/Services/HtmlContentExtractorService.php
@@ -0,0 +1,20 @@
+first('.vikon-content');
+ $breadcrumb = $content->first('.row');
+ $content->firstInDocument('.row')->remove();
+
+ return [$content->html(), $breadcrumb->html()] ?? null;
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/Containers/Search/Services/StaticFileSearch.php b/app/Containers/Search/Services/StaticFileSearch.php
new file mode 100644
index 0000000..ffd9928
--- /dev/null
+++ b/app/Containers/Search/Services/StaticFileSearch.php
@@ -0,0 +1,218 @@
+input('search');
+ $category = $request->input('category');
+ $page = request()->input('page', 1);
+
+
+ if ($query === null) {
+ return [
+ 'data' => []
+ ];
+ }
+
+ try {
+ $index = $this->getIndex();
+ $results = [];
+ $normalizedQuery = $this->normalizeText(Str::lower($query));
+
+ foreach ($index as $filePath => $content) {
+ if (stripos($content['content'], $normalizedQuery) !== false) {
+ $relativePath = str_replace(public_path() . '/', '', $filePath);
+ $results[] = [
+ 'file' => $relativePath,
+ 'content' => $content['title'],
+ 'category' => trim($content['category']),
+ ];
+ }
+ }
+
+ $categories = array_values(array_unique(array_filter(array_column($results, 'category'))));
+
+
+ if ($category !== null) {
+ $results = array_filter($results, function($item) use ($category) {
+ return $item['category'] === $category;
+ });
+
+ // Переиндексировать массив
+ $results = array_values($results);
+ }
+
+
+ return $this->paginateResults($results, $page, $categories);
+ } catch (\Exception $e) {
+ Log::error('Search error: ' . $e->getMessage());
+ return [
+ 'data' => [],
+ 'meta' => [
+ 'current_page' => 1,
+ 'total' => 0,
+ 'per_page' => self::PER_PAGE,
+ 'last_page' => 1
+ ]
+ ];
+ }
+ }
+
+ protected function paginateResults(array $results, int $page, ?array $categories): array
+ {
+ $total = count($results);
+ $lastPage = max(1, ceil($total / self::PER_PAGE));
+ $page = max(1, min($page, $lastPage));
+
+ $offset = ($page - 1) * self::PER_PAGE;
+ $paginatedResults = array_slice($results, $offset, self::PER_PAGE);
+
+ return [
+ 'data' => $paginatedResults,
+ 'meta' => [
+ 'current_page' => $page,
+ 'total' => $total,
+ 'per_page' => self::PER_PAGE,
+ 'last_page' => $lastPage
+ ],
+ 'categories' => $categories
+ ];
+ }
+
+ protected function getIndex(): array
+ {
+ return Cache::remember(self::CACHE_KEY, self::CACHE_TTL, function() {
+ try {
+ $index = [];
+ $directory = public_path(self::FILES_DIR);
+
+ if (!is_dir($directory)) {
+ Log::error("Directory not found: {$directory}");
+ return [];
+ }
+
+ $iterator = new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS),
+ RecursiveIteratorIterator::SELF_FIRST
+ );
+
+ foreach ($iterator as $file) {
+ if ($file->isFile() && $this->isHtmlFile($file)) {
+ $html = file_get_contents($file->getPathname());
+ [$content, $breadcrumb] = app(HtmlContentExtractorService::class)->getContent($html);
+ if ($content !== false) {
+ $breadcrumb = app(BreadcrumbFinderService::class)->isSameCategory($breadcrumb);
+ $text = $this->normalizeText(strip_tags($content));
+ $index[$file->getPathname()] = [
+ 'title' => $this->getFirstH1Content($content),
+ 'content' => $text,
+ 'category' => $breadcrumb ?? null,
+ ];
+ }
+ }
+ }
+
+ return $index;
+ } catch (\Exception $e) {
+ Log::error('Index creation error: ' . $e->getMessage());
+ return [];
+ }
+ });
+ }
+
+ protected function isHtmlFile(\SplFileInfo $file): bool
+ {
+ $extension = strtolower($file->getExtension());
+ return in_array($extension, ['html', 'htm']);
+ }
+
+ protected function normalizeText(string $text): string
+ {
+ $text = html_entity_decode($text, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+ $text = preg_replace('/\s+/u', ' ', $text);
+ $text = trim($text);
+ return Str::lower($text);
+ }
+
+ protected function findMatches(string $content, string $query): array
+ {
+ $matches = [];
+ $offset = 0;
+ $query = Str::lower($query);
+ $content = Str::lower($content);
+ $queryLength = mb_strlen($query, 'UTF-8');
+
+ while (($offset = mb_strpos($content, $query, $offset, 'UTF-8')) !== false) {
+ $start = max(0, $offset - 50);
+ $length = min(150, mb_strlen($content) - $start);
+ $excerpt = mb_substr($content, $start, $length, 'UTF-8');
+
+ $matches[] = str_replace(
+ $query,
+ '[[HIGHLIGHT]]'.$query.'[[/HIGHLIGHT]]',
+ $excerpt
+ );
+
+ $offset += $queryLength;
+ }
+
+ return $matches;
+ }
+
+ public function clearCache(): bool
+ {
+ try {
+ Cache::forget(self::CACHE_KEY);
+ return true;
+ } catch (\Exception $e) {
+ Log::error('Cache clear error: ' . $e->getMessage());
+ return false;
+ }
+ }
+
+ public function rebuildIndex(): array
+ {
+ $this->clearCache();
+ return $this->getIndex();
+ }
+
+ public function getCacheStatus(): array
+ {
+ return [
+ 'exists' => Cache::has(self::CACHE_KEY),
+ 'ttl' => Cache::get(self::CACHE_KEY.'_ttl', null),
+ 'driver' => config('cache.default'),
+ 'path' => public_path(self::FILES_DIR),
+ 'directory_exists' => is_dir(public_path(self::FILES_DIR))
+ ];
+ }
+
+ public function getFirstH1Content(string $content): ?string
+ {
+ try {
+ if (preg_match('/
]*>(.*?)<\/h1>/is', $content, $matches)) {
+ return $this->normalizeText($matches[1]);
+ }
+
+ return null;
+ } catch (\Exception $e) {
+ Log::error('Failed to get H1: ' . $e->getMessage());
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/SearchController.php b/app/Containers/Search/UI/API/Controllers/SearchController.php
similarity index 85%
rename from app/Http/Controllers/SearchController.php
rename to app/Containers/Search/UI/API/Controllers/SearchController.php
index 8cfcbe1..3a0188c 100644
--- a/app/Http/Controllers/SearchController.php
+++ b/app/Containers/Search/UI/API/Controllers/SearchController.php
@@ -1,28 +1,28 @@
ignoreCase(true)
->search("$req");
+
$resourceMap = $this->resourceMap;
$resources = collect($results)->map(function ($result) use ($resourceMap) {
$resourceClass = $resourceMap[get_class($result)] ?? null;
diff --git a/app/Http/Controllers/StaticSearchController.php b/app/Containers/Search/UI/API/Controllers/StaticSearchController.php
similarity index 70%
rename from app/Http/Controllers/StaticSearchController.php
rename to app/Containers/Search/UI/API/Controllers/StaticSearchController.php
index 7398a6a..b712e87 100644
--- a/app/Http/Controllers/StaticSearchController.php
+++ b/app/Containers/Search/UI/API/Controllers/StaticSearchController.php
@@ -1,9 +1,10 @@
name('client.search.index');
+
+Route::get('/static/search', [StaticSearchController::class, 'search'])->name('client.search.static');
+Route::get('/static/categories', [StaticSearchController::class, 'getCategories'])->name('client.categories.static');
diff --git a/app/Http/Resources/AdditionalEducationSearchResource.php b/app/Containers/Search/UI/API/Transformers/AdditionalEducationSearchResource.php
similarity index 66%
rename from app/Http/Resources/AdditionalEducationSearchResource.php
rename to app/Containers/Search/UI/API/Transformers/AdditionalEducationSearchResource.php
index b5c26a0..c8ed194 100644
--- a/app/Http/Resources/AdditionalEducationSearchResource.php
+++ b/app/Containers/Search/UI/API/Transformers/AdditionalEducationSearchResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Containers/Search/UI/API/Transformers/EducationGroupSearchResource.php b/app/Containers/Search/UI/API/Transformers/EducationGroupSearchResource.php
new file mode 100644
index 0000000..9b928e3
--- /dev/null
+++ b/app/Containers/Search/UI/API/Transformers/EducationGroupSearchResource.php
@@ -0,0 +1,24 @@
+
+ */
+ public function toArray($request): array
+ {
+ return [
+ 'id' => $this->id,
+ 'title' => $this->title,
+ 'schedules' => ScheduleGroupResource::collection($this->whenLoaded('schedules')),
+ ];
+ }
+}
diff --git a/app/Http/Resources/EducationalProgramSearchResource.php b/app/Containers/Search/UI/API/Transformers/EducationalProgramSearchResource.php
similarity index 66%
rename from app/Http/Resources/EducationalProgramSearchResource.php
rename to app/Containers/Search/UI/API/Transformers/EducationalProgramSearchResource.php
index 6bcdcc8..2b05218 100644
--- a/app/Http/Resources/EducationalProgramSearchResource.php
+++ b/app/Containers/Search/UI/API/Transformers/EducationalProgramSearchResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/EventSearchResource.php b/app/Containers/Search/UI/API/Transformers/EventSearchResource.php
similarity index 72%
rename from app/Http/Resources/EventSearchResource.php
rename to app/Containers/Search/UI/API/Transformers/EventSearchResource.php
index 8fece5d..d5b3bb0 100644
--- a/app/Http/Resources/EventSearchResource.php
+++ b/app/Containers/Search/UI/API/Transformers/EventSearchResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/FacultySearchResource.php b/app/Containers/Search/UI/API/Transformers/FacultySearchResource.php
similarity index 65%
rename from app/Http/Resources/FacultySearchResource.php
rename to app/Containers/Search/UI/API/Transformers/FacultySearchResource.php
index eccc9ff..473c23e 100644
--- a/app/Http/Resources/FacultySearchResource.php
+++ b/app/Containers/Search/UI/API/Transformers/FacultySearchResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/PageSearchResource.php b/app/Containers/Search/UI/API/Transformers/PageSearchResource.php
similarity index 72%
rename from app/Http/Resources/PageSearchResource.php
rename to app/Containers/Search/UI/API/Transformers/PageSearchResource.php
index 0a2476b..1425f2e 100644
--- a/app/Http/Resources/PageSearchResource.php
+++ b/app/Containers/Search/UI/API/Transformers/PageSearchResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/PostSearchResource.php b/app/Containers/Search/UI/API/Transformers/PostSearchResource.php
similarity index 71%
rename from app/Http/Resources/PostSearchResource.php
rename to app/Containers/Search/UI/API/Transformers/PostSearchResource.php
index c0f9f63..e89608c 100644
--- a/app/Http/Resources/PostSearchResource.php
+++ b/app/Containers/Search/UI/API/Transformers/PostSearchResource.php
@@ -1,10 +1,10 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/UserSearchResource.php b/app/Containers/Search/UI/API/Transformers/UserSearchResource.php
similarity index 65%
rename from app/Http/Resources/UserSearchResource.php
rename to app/Containers/Search/UI/API/Transformers/UserSearchResource.php
index 325b065..6620242 100644
--- a/app/Http/Resources/UserSearchResource.php
+++ b/app/Containers/Search/UI/API/Transformers/UserSearchResource.php
@@ -1,9 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Containers/User/Loaders/AliasesLoader.php b/app/Containers/User/Loaders/AliasesLoader.php
new file mode 100644
index 0000000..089cc84
--- /dev/null
+++ b/app/Containers/User/Loaders/AliasesLoader.php
@@ -0,0 +1,11 @@
+belongsTo(User::class, 'sender_id');
}
- public function receiver()
+ public function receiver(): BelongsTo
{
return $this->belongsTo(User::class, 'receiver_id');
}
diff --git a/app/Models/Invitation.php b/app/Containers/User/Models/Invitation.php
similarity index 83%
rename from app/Models/Invitation.php
rename to app/Containers/User/Models/Invitation.php
index e6568f0..6ca7f94 100644
--- a/app/Models/Invitation.php
+++ b/app/Containers/User/Models/Invitation.php
@@ -1,6 +1,6 @@
'hashed',
];
- public function userDetail()
+ public function userDetail(): HasOne
{
return $this->hasOne(UserDetail::class, 'user_id');
}
- public function departments_work()
+ public function departments_work(): BelongsToMany
{
return $this->belongsToMany(Department::class, 'workers_departments')->withPivot(['position']);
}
- public function departments_teach()
+ public function departments_teach(): BelongsToMany
{
return $this->belongsToMany(Department::class, 'teachers_departments')->withPivot(['teaching_position']);
}
- public function divisions()
+ public function divisions(): BelongsToMany
{
return $this->belongsToMany(Division::class, 'division_user')->withPivot(['administrativePosition']);
}
- public function faculties()
+ public function faculties(): BelongsToMany
{
return $this->belongsToMany(Faculty::class, 'workers_faculties')->withPivot(['position']);
}
// Отношение к отправленным приглашениям
- public function sentInvitations()
+ public function sentInvitations(): HasMany
{
return $this->hasMany(AcceptedInvitation::class, 'sender_id');
}
// Отношение к полученным приглашениям
- public function receivedInvitation()
+ public function receivedInvitation(): HasOne
{
return $this->hasOne(AcceptedInvitation::class, 'receiver_id');
}
@@ -105,15 +109,12 @@ class User extends Authenticatable implements FilamentUser
}
public function canAccessPanel(Panel|\Filament\Panel $panel): bool
{
- switch ($panel->getId()) {
- case "admin":
- return $this->hasRole(Utils::getSuperAdminName());
- case "dashboard":
- return $this->hasRole(config('filament-shield.dashboard_user.name', 'dashboard_user'))
- || $this->hasRole(Utils::getSuperAdminName())
- || $this->hasRole(config('filament-shield.invited_user.name', 'invited_user'));
- default:
- return false;
- }
+ return match ($panel->getId()) {
+ "admin" => $this->hasRole(Utils::getSuperAdminName()),
+ "dashboard" => $this->hasRole(config('filament-shield.dashboard_user.name', 'dashboard_user'))
+ || $this->hasRole(Utils::getSuperAdminName())
+ || $this->hasRole(config('filament-shield.invited_user.name', 'invited_user')),
+ default => false,
+ };
}
}
diff --git a/app/Models/UserDetail.php b/app/Containers/User/Models/UserDetail.php
similarity index 91%
rename from app/Models/UserDetail.php
rename to app/Containers/User/Models/UserDetail.php
index 2419516..8225e11 100644
--- a/app/Models/UserDetail.php
+++ b/app/Containers/User/Models/UserDetail.php
@@ -1,9 +1,9 @@
group(function () {
+
+ Route::get('/login/vk', [VkAuthService::class, 'redirectToProvider'])->name('vk.login');
+ Route::get('/login/vk/callback', [VkAuthService::class, 'handleProviderCallback'])->name('vk.callback');
+ Route::get('/vk-get-token', [VkAuthService::class, 'getToken'])->name('vk.getToken');
+ Route::get('/vk-refresh-token', [VkAuthService::class, 'refresh'])->name('vk.refreshToken');
+ Route::get('/vk-logout', [VkAuthService::class, 'logout'])->name('vk.logout');
+});
\ No newline at end of file
diff --git a/app/Http/Controllers/PersonController.php b/app/Containers/User/UI/WEB/Controllers/PersonController.php
similarity index 66%
rename from app/Http/Controllers/PersonController.php
rename to app/Containers/User/UI/WEB/Controllers/PersonController.php
index af3e20e..c408b6a 100644
--- a/app/Http/Controllers/PersonController.php
+++ b/app/Containers/User/UI/WEB/Controllers/PersonController.php
@@ -1,21 +1,21 @@
value . md5($slug);
$personData = Cache::remember(
CacheKeys::USER_PREFIX->value . $slug,
@@ -31,7 +31,7 @@ class PersonController extends Controller
fn() => $this->seoPageProvider->getSeoForModel($personData)
);
- $person = new ClientFullInfoPersonResource($personData);
+ $person = new FullInfoPersonResource($personData);
diff --git a/app/Containers/User/UI/WEB/Routes/web.php b/app/Containers/User/UI/WEB/Routes/web.php
new file mode 100644
index 0000000..5aa48e3
--- /dev/null
+++ b/app/Containers/User/UI/WEB/Routes/web.php
@@ -0,0 +1,15 @@
+get('invitation/{invitation}/accept', \App\Livewire\AcceptInvitation::class)
+ ->name('invitation.accept');
+
+
+Route::middleware('access-check')->group(function () {
+ Route::get('/persons/{slug}', [PersonController::class, 'show'])->name('client.person.show');
+});
+
diff --git a/app/Containers/User/UI/WEB/Transformers/FullInfoPersonResource.php b/app/Containers/User/UI/WEB/Transformers/FullInfoPersonResource.php
new file mode 100644
index 0000000..05bc07f
--- /dev/null
+++ b/app/Containers/User/UI/WEB/Transformers/FullInfoPersonResource.php
@@ -0,0 +1,26 @@
+
+ */
+ public function toArray($request): array
+ {
+ return [
+ 'id' => $this->id,
+ 'name' => $this->name,
+ 'details' => new PersonDetailResource($this->whenLoaded('userDetail')),
+ 'departments_work' => PersonDepartmentsWorkResource::collection($this->whenLoaded('departments_work')),
+ 'departments_teach' => PersonDepartmentsTeachResource::collection($this->whenLoaded('departments_teach')),
+ 'divisions_works' => PersonDivisionsWorkResource::collection($this->whenLoaded('divisions')),
+ 'faculties_works' => PersonFacultiesWorkResource::collection($this->whenLoaded('faculties'))
+ ];
+ }
+}
diff --git a/app/Http/Resources/ClientPersonDepartmentPreviewResource.php b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentPreviewResource.php
similarity index 72%
rename from app/Http/Resources/ClientPersonDepartmentPreviewResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonDepartmentPreviewResource.php
index 97ffa85..53c7a71 100644
--- a/app/Http/Resources/ClientPersonDepartmentPreviewResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentPreviewResource.php
@@ -1,18 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/ClientPersonDepartmentTeachPreviewResource.php b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentTeachPreviewResource.php
similarity index 72%
rename from app/Http/Resources/ClientPersonDepartmentTeachPreviewResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonDepartmentTeachPreviewResource.php
index 57e31aa..789dcdc 100644
--- a/app/Http/Resources/ClientPersonDepartmentTeachPreviewResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentTeachPreviewResource.php
@@ -1,18 +1,17 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/ClientPersonDepartmentsTeachResource.php b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentsTeachResource.php
similarity index 65%
rename from app/Http/Resources/ClientPersonDepartmentsTeachResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonDepartmentsTeachResource.php
index 5d2c9b7..7e7a372 100644
--- a/app/Http/Resources/ClientPersonDepartmentsTeachResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentsTeachResource.php
@@ -1,18 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id_department' => $this->id,
diff --git a/app/Http/Resources/ClientPersonDepartmentsWorkResource.php b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentsWorkResource.php
similarity index 65%
rename from app/Http/Resources/ClientPersonDepartmentsWorkResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonDepartmentsWorkResource.php
index 43e382d..47252f7 100644
--- a/app/Http/Resources/ClientPersonDepartmentsWorkResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonDepartmentsWorkResource.php
@@ -1,18 +1,19 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id_department' => $this->id,
diff --git a/app/Containers/User/UI/WEB/Transformers/PersonDetailResource.php b/app/Containers/User/UI/WEB/Transformers/PersonDetailResource.php
new file mode 100644
index 0000000..b4fea11
--- /dev/null
+++ b/app/Containers/User/UI/WEB/Transformers/PersonDetailResource.php
@@ -0,0 +1,19 @@
+
+ */
+ public function toArray($request): array
+ {
+ return parent::toArray($request);
+ }
+}
diff --git a/app/Http/Resources/ClientPersonDivisionPreviewResource.php b/app/Containers/User/UI/WEB/Transformers/PersonDivisionPreviewResource.php
similarity index 75%
rename from app/Http/Resources/ClientPersonDivisionPreviewResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonDivisionPreviewResource.php
index 7108aa7..76c108e 100644
--- a/app/Http/Resources/ClientPersonDivisionPreviewResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonDivisionPreviewResource.php
@@ -1,18 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Http/Resources/ClientPersonDivisionsWorkResource.php b/app/Containers/User/UI/WEB/Transformers/PersonDivisionsWorkResource.php
similarity index 60%
rename from app/Http/Resources/ClientPersonDivisionsWorkResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonDivisionsWorkResource.php
index f59fb72..1d1519d 100644
--- a/app/Http/Resources/ClientPersonDivisionsWorkResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonDivisionsWorkResource.php
@@ -1,18 +1,17 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id_division' => $this->id,
diff --git a/app/Http/Resources/ClientPersonFacultiesWorkResource.php b/app/Containers/User/UI/WEB/Transformers/PersonFacultiesWorkResource.php
similarity index 58%
rename from app/Http/Resources/ClientPersonFacultiesWorkResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonFacultiesWorkResource.php
index 4f81b53..9c47909 100644
--- a/app/Http/Resources/ClientPersonFacultiesWorkResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonFacultiesWorkResource.php
@@ -1,18 +1,17 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id_faculty' => $this->id,
diff --git a/app/Http/Resources/ClientPersonFacultyPreviewResource.php b/app/Containers/User/UI/WEB/Transformers/PersonFacultyPreviewResource.php
similarity index 72%
rename from app/Http/Resources/ClientPersonFacultyPreviewResource.php
rename to app/Containers/User/UI/WEB/Transformers/PersonFacultyPreviewResource.php
index 0f85878..339492a 100644
--- a/app/Http/Resources/ClientPersonFacultyPreviewResource.php
+++ b/app/Containers/User/UI/WEB/Transformers/PersonFacultyPreviewResource.php
@@ -1,18 +1,18 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Rules/UniqueJsonField.php b/app/Containers/Widget/Data/Rules/UniqueJsonField.php
similarity index 93%
rename from app/Rules/UniqueJsonField.php
rename to app/Containers/Widget/Data/Rules/UniqueJsonField.php
index fa886ff..0a09bbc 100644
--- a/app/Rules/UniqueJsonField.php
+++ b/app/Containers/Widget/Data/Rules/UniqueJsonField.php
@@ -1,10 +1,8 @@
value . $slug,
now()->addHours(12), // Кешируем на 12 часов
function () use ($slug) {
- return new ClientContactWidgetResource(
+ return new ContactWidgetResource(
ContactWidget::query()
->where('slug', $slug)
->firstOrFail()
diff --git a/app/Http/Controllers/ClientWidgetEducationalProgramController.php b/app/Containers/Widget/UI/API/Controllers/ClientWidgetEducationalProgramController.php
similarity index 68%
rename from app/Http/Controllers/ClientWidgetEducationalProgramController.php
rename to app/Containers/Widget/UI/API/Controllers/ClientWidgetEducationalProgramController.php
index c549b9c..3658e0a 100644
--- a/app/Http/Controllers/ClientWidgetEducationalProgramController.php
+++ b/app/Containers/Widget/UI/API/Controllers/ClientWidgetEducationalProgramController.php
@@ -1,12 +1,12 @@
where('status', CustomFormStatus::PUBLISHED)->where('form_id', $id)->firstOrFail());
+ return new FormResource(CustomForm::query()->where('status', CustomFormStatus::PUBLISHED)->where('form_id', $id)->firstOrFail());
}
public function submit(int $id, Request $request)
diff --git a/app/Http/Controllers/ClientWidgetPageController.php b/app/Containers/Widget/UI/API/Controllers/ClientWidgetPageController.php
similarity index 79%
rename from app/Http/Controllers/ClientWidgetPageController.php
rename to app/Containers/Widget/UI/API/Controllers/ClientWidgetPageController.php
index 1e9b918..dfb0e80 100644
--- a/app/Http/Controllers/ClientWidgetPageController.php
+++ b/app/Containers/Widget/UI/API/Controllers/ClientWidgetPageController.php
@@ -1,11 +1,10 @@
json([
'data' => [
- 'page' => new ClientPageNavigateResource($page),
+ 'page' => new PageNavigateResource($page),
'breadcrumbs' => $breadcrumbs
],
], 200);
diff --git a/app/Http/Controllers/ClientWidgetPageReferenceListController.php b/app/Containers/Widget/UI/API/Controllers/ClientWidgetPageReferenceListController.php
similarity index 67%
rename from app/Http/Controllers/ClientWidgetPageReferenceListController.php
rename to app/Containers/Widget/UI/API/Controllers/ClientWidgetPageReferenceListController.php
index 755c5cf..9902a99 100644
--- a/app/Http/Controllers/ClientWidgetPageReferenceListController.php
+++ b/app/Containers/Widget/UI/API/Controllers/ClientWidgetPageReferenceListController.php
@@ -1,11 +1,11 @@
value . $slug,
now()->addWeek(), // Кешируем на неделю, так как справочники меняются редко
function () use ($slug) {
- return new ClientPageReferenceListResource(
+ return new PageReferenceListResource(
PageReferenceList::query()
->where('slug', $slug)
->firstOrFail()
diff --git a/app/Http/Controllers/ClientWidgetPostController.php b/app/Containers/Widget/UI/API/Controllers/ClientWidgetPostController.php
similarity index 83%
rename from app/Http/Controllers/ClientWidgetPostController.php
rename to app/Containers/Widget/UI/API/Controllers/ClientWidgetPostController.php
index 6779aee..a8b1537 100644
--- a/app/Http/Controllers/ClientWidgetPostController.php
+++ b/app/Containers/Widget/UI/API/Controllers/ClientWidgetPostController.php
@@ -1,12 +1,11 @@
name('client.widget.post.index');
+
+Route::get('/widget/get-posts/{id}', [ClientWidgetPostController::class, 'single'])->name('client.widget.post.single');
+
+Route::get('/widget/get-additional-programs', [ClientWidgetAdditionalEducationalProgramController::class, 'index'])->name('client.widget.additional.program.index');
+
+Route::get('/widget/get-educational-programs', [ClientWidgetEducationalProgramController::class, 'index'])->name('client.widget.educational.program.index');
+
+Route::get('/widget/get-page-resource/{id}', [ClientWidgetPageReferenceListController::class, 'show'])->name('client.widget.page.resource.show');
+
+Route::get('/widget/get-contact-widget/{id}', [ClientWidgetContactController::class, 'show'])->name('client.widget.contact.show');
+
+Route::get('/widget/get-page/{path}', [ClientWidgetPageController::class, 'single'])->name('client.widget.page.single');
+
+Route::get('/widget/get-form/{id}', [ClientWidgetFormController::class, 'single'])->middleware('rate.limited.check')->name('client.widget.form.single');
+
+Route::post('/widget/get-form/{id}/submit', [ClientWidgetFormController::class, 'submit'])->middleware(['rate.limited.counter', 'rate.limited.check', 'form.time.period'])->name('client.widget.form.submit');
+
+Route::get('/widget/get-slider/{slug}', [ClientWidgetSliderController::class, 'show'])->name('client.widget.slider.show');
\ No newline at end of file
diff --git a/app/Containers/Widget/UI/API/Transformers/ContactWidgetResource.php b/app/Containers/Widget/UI/API/Transformers/ContactWidgetResource.php
new file mode 100644
index 0000000..8e3f185
--- /dev/null
+++ b/app/Containers/Widget/UI/API/Transformers/ContactWidgetResource.php
@@ -0,0 +1,18 @@
+
+ */
+ public function toArray($request): array
+ {
+ return parent::toArray($request);
+ }
+}
diff --git a/app/Containers/Widget/UI/API/Transformers/FormResource.php b/app/Containers/Widget/UI/API/Transformers/FormResource.php
new file mode 100644
index 0000000..23292e5
--- /dev/null
+++ b/app/Containers/Widget/UI/API/Transformers/FormResource.php
@@ -0,0 +1,19 @@
+
+ */
+ public function toArray($request): array
+ {
+ return parent::toArray($request);
+ }
+}
diff --git a/app/Containers/Widget/UI/API/Transformers/PageNavigateResource.php b/app/Containers/Widget/UI/API/Transformers/PageNavigateResource.php
new file mode 100644
index 0000000..3de64ae
--- /dev/null
+++ b/app/Containers/Widget/UI/API/Transformers/PageNavigateResource.php
@@ -0,0 +1,26 @@
+
+ */
+ public function toArray($request): array
+ {
+ return [
+ 'id' => $this->id,
+ 'title' => $this->title,
+ 'slug' => $this->slug,
+ 'path' => $this->path,
+ 'is_url' => $this->is_url,
+ 'icon' => $this->icon
+ ];
+ }
+}
diff --git a/app/Containers/Widget/UI/API/Transformers/PageReferenceListResource.php b/app/Containers/Widget/UI/API/Transformers/PageReferenceListResource.php
new file mode 100644
index 0000000..dfbcf35
--- /dev/null
+++ b/app/Containers/Widget/UI/API/Transformers/PageReferenceListResource.php
@@ -0,0 +1,19 @@
+
+ */
+ public function toArray($request): array
+ {
+ return parent::toArray($request);
+ }
+}
diff --git a/app/Http/Resources/PostThumbnailResource.php b/app/Containers/Widget/UI/API/Transformers/PostThumbnailResource.php
similarity index 78%
rename from app/Http/Resources/PostThumbnailResource.php
rename to app/Containers/Widget/UI/API/Transformers/PostThumbnailResource.php
index 068791b..41eb878 100644
--- a/app/Http/Resources/PostThumbnailResource.php
+++ b/app/Containers/Widget/UI/API/Transformers/PostThumbnailResource.php
@@ -1,10 +1,9 @@
*/
- public function toArray(Request $request): array
+ public function toArray($request): array
{
return [
'id' => $this->id,
diff --git a/app/Facades/ByteConverterFacade.php b/app/Facades/ByteConverterFacade.php
deleted file mode 100644
index 649c429..0000000
--- a/app/Facades/ByteConverterFacade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-description('Настройте автоматическую публикацию новости в указанное время')
->collapsible()
->schema([
Grid::make(2)
->schema([
Toggle::make('publish_setting.publish_after')
- ->label('Включить отложенную публикацию')
+ ->label('Включить публикацию по времени')
->inline(false)
->default(false)
+ ->disabled(fn (Forms\Get $get) => $get('publish_setting.publish_at'))
->live()
->helperText('Активируйте для публикации в указанное время'),
DateTimePicker::make('publish_setting.publish_at')
@@ -119,6 +106,13 @@ class PostForm
->required(fn (Forms\Get $get) => $get('publish_setting.publish_after'))
->disabled(fn (Forms\Get $get) => !$get('publish_setting.publish_after'))
->native(true)
+ ->minDate(function (string $context, $state) {
+ if ($context === 'edit' && $state) {
+ return $state;
+ } else {
+ return now()->ceilHour()->subHour();
+ }
+ })
->maxDate(now()->addMonth()),
]),
]),
diff --git a/app/Filament/Components/Forms/UserDetailForm.php b/app/Filament/Components/Forms/UserDetailForm.php
index 19aac0b..a0c6942 100644
--- a/app/Filament/Components/Forms/UserDetailForm.php
+++ b/app/Filament/Components/Forms/UserDetailForm.php
@@ -2,31 +2,11 @@
namespace App\Filament\Components\Forms;
-use App\Enums\CustomFormStatus;
-use App\Enums\PostStatus;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
-use App\Helpers\ByteConverter;
-use App\Models\Category;
-use App\Models\CustomForm;
-use App\Models\Page;
-use App\Models\Post;
use Filament\Forms;
-use Filament\Forms\Components\Builder;
-use Filament\Forms\Components\FileUpload;
-use Filament\Forms\Components\Hidden;
-use Filament\Forms\Components\RichEditor;
-use Filament\Forms\Components\Section;
-use Filament\Forms\Components\Select;
use Filament\Forms\Components\Tabs;
-use Filament\Forms\Components\TextInput;
-use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
use Filament\Resources\Components\Tab;
-use Illuminate\Support\Carbon;
-use Illuminate\Support\Str;
-use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
-use Mohamedsabil83\FilamentFormsTinyeditor\Components\TinyEditor;
-use Symfony\Component\Finder\Finder;
class UserDetailForm
{
diff --git a/app/Filament/Exports/CustomFormExporter.php b/app/Filament/Exports/CustomFormExporter.php
index 50829f9..6c37814 100644
--- a/app/Filament/Exports/CustomFormExporter.php
+++ b/app/Filament/Exports/CustomFormExporter.php
@@ -2,8 +2,7 @@
namespace App\Filament\Exports;
-use App\Models\CustomForm;
-use App\Models\CustomFormResponse;
+use App\Containers\Widget\Models\CustomForm;
use Filament\Actions\Exports\ExportColumn;
use Filament\Actions\Exports\Exporter;
use Filament\Actions\Exports\Models\Export;
diff --git a/app/Filament/Pages/CheckpointSettingsPage.php b/app/Filament/Pages/CheckpointSettingsPage.php
deleted file mode 100644
index d3dc60d..0000000
--- a/app/Filament/Pages/CheckpointSettingsPage.php
+++ /dev/null
@@ -1,103 +0,0 @@
-schema([
- Grid::make()
- ->columns([
- 'default' => 1,
- ])
- ->columnSpan(2)
- ->schema([
- TextInput::make('max_attempts')
- ->required()
- ->integer()
- ->minValue(1)
- ->label('Максимальное количество попыток') // Метка для поля
- ->helperText('Введите максимальное количество попыток входа.') // Подсказка
- ->suffix('попытки'),
- TextInput::make('lockout_duration')
- ->required()
- ->integer()
- ->minValue(1)
- ->label('Продолжительность блокировки (в секундах)') // Метка для поля
- ->helperText('Введите время блокировки в секундах.') // Подсказка
- ->suffix('секунд'),
- ]),
- Grid::make()
- ->schema([
- Section::make()
- ->columns([
- 'default' => 2,
- ])
- ->columnSpan(2)
- ->schema([
- Toggle::make('notify_on_lockout')
- ->live()
- ->columnSpan(2)
- ->default(false)
- ->label('Уведомлять при блокировке'), // Метка для переключателя
- TextInput::make('notification_emails')
- ->required()
- ->email()
- ->hidden(fn (Get $get): bool => ! $get('notify_on_lockout'))
- ->helperText('Введите адреса электронной почты для уведомлений.') // Подсказка
- ->label('Электронная почта для уведомлений'), // Метка для поля
- TextInput::make('notify_after_lockouts')
- ->required()
- ->hidden(fn (Get $get): bool => ! $get('notify_on_lockout'))
- ->label('Уведомлять после блокировок') // Метка для поля
- ->helperText('Введите количество блокировок, после которых отправляется уведомление.') // Подсказка
- ->suffix('блокировок'),
- TextInput::make('notification_time_frame')
- ->required()
- ->hidden(fn (Get $get): bool => ! $get('notify_on_lockout'))
- ->label('Временной интервал уведомлений (в секундах)') // Метка для поля
- ->helperText('Введите временной интервал для уведомлений в секундах.') // Подсказка
- ->suffix('секунд')
- ]),
- ]),
- ]);
- }
-}
\ No newline at end of file
diff --git a/app/Filament/Resources/AcademicJournalResource.php b/app/Filament/Resources/AcademicJournalResource.php
index 6fdb5c9..3342588 100644
--- a/app/Filament/Resources/AcademicJournalResource.php
+++ b/app/Filament/Resources/AcademicJournalResource.php
@@ -2,38 +2,22 @@
namespace App\Filament\Resources;
-use App\Enums\CustomFormStatus;
-use App\Enums\PostStatus;
+
+use App\Containers\Science\Models\AcademicJournal;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
use App\Filament\Resources\AcademicJournalResource\Pages;
-use App\Filament\Resources\AcademicJournalResource\RelationManagers;
use App\Filament\Resources\AcademicJournalResource\RelationManagers\JournalsRelationManager;
-use App\Helpers\ByteConverter;
-use App\Models\AcademicJournal;
-use App\Models\Category;
-use App\Models\CustomForm;
-use App\Models\Page;
-use App\Models\Post;
use Filament\Forms;
use Filament\Forms\Components\Actions\Action;
-use Filament\Forms\Components\Builder;
-use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
-use Filament\Forms\Components\Hidden;
-use Filament\Forms\Components\RichEditor;
use Filament\Forms\Components\Section;
-use Filament\Forms\Components\Select;
use Filament\Forms\Components\Tabs;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
-use Illuminate\Support\Carbon;
use Illuminate\Support\Str;
-use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
-use Mohamedsabil83\FilamentFormsTinyeditor\Components\TinyEditor;
class AcademicJournalResource extends Resource
{
diff --git a/app/Filament/Resources/AcademicJournalResource/Pages/CreateAcademicJournal.php b/app/Filament/Resources/AcademicJournalResource/Pages/CreateAcademicJournal.php
index f7e1a3d..4100e88 100644
--- a/app/Filament/Resources/AcademicJournalResource/Pages/CreateAcademicJournal.php
+++ b/app/Filament/Resources/AcademicJournalResource/Pages/CreateAcademicJournal.php
@@ -4,9 +4,7 @@ namespace App\Filament\Resources\AcademicJournalResource\Pages;
use App\Filament\Resources\AcademicJournalResource;
use App\Services\Filament\Traits\SeoGenerate;
-use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
-use Illuminate\Support\Str;
class CreateAcademicJournal extends CreateRecord
{
diff --git a/app/Filament/Resources/AcademicJournalResource/Pages/EditAcademicJournal.php b/app/Filament/Resources/AcademicJournalResource/Pages/EditAcademicJournal.php
index a849a71..cd0f03e 100644
--- a/app/Filament/Resources/AcademicJournalResource/Pages/EditAcademicJournal.php
+++ b/app/Filament/Resources/AcademicJournalResource/Pages/EditAcademicJournal.php
@@ -6,7 +6,6 @@ use App\Filament\Resources\AcademicJournalResource;
use App\Services\Filament\Traits\SeoGenerate;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
-use Illuminate\Support\Str;
class EditAcademicJournal extends EditRecord
{
diff --git a/app/Filament/Resources/AcademicJournalResource/RelationManagers/JournalsRelationManager.php b/app/Filament/Resources/AcademicJournalResource/RelationManagers/JournalsRelationManager.php
index 4591ec9..f4de947 100644
--- a/app/Filament/Resources/AcademicJournalResource/RelationManagers/JournalsRelationManager.php
+++ b/app/Filament/Resources/AcademicJournalResource/RelationManagers/JournalsRelationManager.php
@@ -2,9 +2,6 @@
namespace App\Filament\Resources\AcademicJournalResource\RelationManagers;
-use App\Models\AcademicJournal;
-use Filament\Forms;
-use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
@@ -13,7 +10,6 @@ use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class JournalsRelationManager extends RelationManager
{
diff --git a/app/Filament/Resources/AcceptedInvitationResource.php b/app/Filament/Resources/AcceptedInvitationResource.php
index 12471ed..bc1b1fa 100644
--- a/app/Filament/Resources/AcceptedInvitationResource.php
+++ b/app/Filament/Resources/AcceptedInvitationResource.php
@@ -2,18 +2,14 @@
namespace App\Filament\Resources;
+use App\Containers\User\Models\AcceptedInvitation;
use App\Filament\Resources\AcceptedInvitationResource\Pages;
-use App\Filament\Resources\AcceptedInvitationResource\RelationManagers;
-use App\Models\AcceptedInvitation;
use BezhanSalleh\FilamentShield\Contracts\HasShieldPermissions;
-use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\TextInputColumn;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class AcceptedInvitationResource extends Resource implements HasShieldPermissions
{
diff --git a/app/Filament/Resources/AcceptedInvitationResource/Pages/ListAcceptedInvitations.php b/app/Filament/Resources/AcceptedInvitationResource/Pages/ListAcceptedInvitations.php
index 0f8e7d3..9039763 100644
--- a/app/Filament/Resources/AcceptedInvitationResource/Pages/ListAcceptedInvitations.php
+++ b/app/Filament/Resources/AcceptedInvitationResource/Pages/ListAcceptedInvitations.php
@@ -2,11 +2,10 @@
namespace App\Filament\Resources\AcceptedInvitationResource\Pages;
+use App\Containers\User\Mails\InvitationMail;
+use App\Containers\User\Models\Invitation;
use App\Filament\Resources\AcceptedInvitationResource;
-use App\Mail\InvitationMail;
-use App\Models\Invitation;
-use App\Models\User;
-use BezhanSalleh\FilamentShield\Contracts\HasShieldPermissions;
+use App\Containers\User\Models\User;
use Filament\Actions;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
diff --git a/app/Filament/Resources/AdditionalEducationCategoryResource.php b/app/Filament/Resources/AdditionalEducationCategoryResource.php
index 15311fa..547c94e 100644
--- a/app/Filament/Resources/AdditionalEducationCategoryResource.php
+++ b/app/Filament/Resources/AdditionalEducationCategoryResource.php
@@ -2,9 +2,9 @@
namespace App\Filament\Resources;
+use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
+use App\Containers\AdditionalEducation\Models\DirectionAdditionalEducation;
use App\Filament\Resources\AdditionalEducationCategoryResource\Pages;
-use App\Models\AdditionalEducationCategory;
-use App\Models\DirectionAdditionalEducation;
use Filament\Forms;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Section;
diff --git a/app/Filament/Resources/AdditionalEducationResource.php b/app/Filament/Resources/AdditionalEducationResource.php
index 22919f7..0902fd4 100644
--- a/app/Filament/Resources/AdditionalEducationResource.php
+++ b/app/Filament/Resources/AdditionalEducationResource.php
@@ -2,11 +2,11 @@
namespace App\Filament\Resources;
-use App\Enums\FormEducation;
+use App\Containers\AdditionalEducation\Models\AdditionalEducation;
+use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
use App\Filament\Resources\AdditionalEducationResource\Pages;
-use App\Models\AdditionalEducation;
-use App\Models\AdditionalEducationCategory;
+use App\Ship\Enums\Education\FormEducation;
use Filament\Forms;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Section;
diff --git a/app/Filament/Resources/AdmissionCampaignResource.php b/app/Filament/Resources/AdmissionCampaignResource.php
index a81c0a0..3a2bce7 100644
--- a/app/Filament/Resources/AdmissionCampaignResource.php
+++ b/app/Filament/Resources/AdmissionCampaignResource.php
@@ -2,11 +2,10 @@
namespace App\Filament\Resources;
-use App\Enums\AdmissionCampaignStatus;
-use App\Enums\LevelEducational;
+use App\Containers\Education\Models\AdmissionCampaign;
use App\Filament\Resources\AdmissionCampaignResource\Pages;
-use App\Models\AdmissionCampaign;
-use Filament\Forms;
+use App\Ship\Enums\Education\AdmissionCampaignStatus;
+use App\Ship\Enums\Education\LevelEducational;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Section;
diff --git a/app/Filament/Resources/AdmissionPlanResource.php b/app/Filament/Resources/AdmissionPlanResource.php
index 8eeb072..97cd693 100644
--- a/app/Filament/Resources/AdmissionPlanResource.php
+++ b/app/Filament/Resources/AdmissionPlanResource.php
@@ -2,14 +2,14 @@
namespace App\Filament\Resources;
-use App\Enums\BudgetEducation;
-use App\Enums\EducationalProgramStatus;
-use App\Enums\FormEducation;
-use App\Enums\TypeExam;
+use App\Containers\Education\Enums\TypeExam;
+use App\Containers\Education\Models\AdmissionCampaign;
+use App\Containers\Education\Models\AdmissionPlan;
+use App\Containers\Education\Models\EducationalProgram;
use App\Filament\Resources\AdmissionPlanResource\Pages;
-use App\Models\AdmissionCampaign;
-use App\Models\AdmissionPlan;
-use App\Models\EducationalProgram;
+use App\Ship\Enums\Education\BudgetEducation;
+use App\Ship\Enums\Education\EducationalProgramStatus;
+use App\Ship\Enums\Education\FormEducation;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
diff --git a/app/Filament/Resources/CategoryResource.php b/app/Filament/Resources/CategoryResource.php
index 6a414c4..4a9ef97 100644
--- a/app/Filament/Resources/CategoryResource.php
+++ b/app/Filament/Resources/CategoryResource.php
@@ -2,9 +2,8 @@
namespace App\Filament\Resources;
+use App\Containers\Article\Models\Category;
use App\Filament\Resources\CategoryResource\Pages;
-use App\Filament\Resources\CategoryResource\RelationManagers;
-use App\Models\Category;
use Filament\Forms;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
@@ -13,8 +12,6 @@ use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Str;
class CategoryResource extends Resource
diff --git a/app/Filament/Resources/ContactWidgetResource.php b/app/Filament/Resources/ContactWidgetResource.php
index 8ff6c40..c407ea5 100644
--- a/app/Filament/Resources/ContactWidgetResource.php
+++ b/app/Filament/Resources/ContactWidgetResource.php
@@ -2,10 +2,8 @@
namespace App\Filament\Resources;
+use App\Containers\Widget\Models\ContactWidget;
use App\Filament\Resources\ContactWidgetResource\Pages;
-use App\Filament\Resources\ContactWidgetResource\RelationManagers;
-use App\Models\ContactWidget;
-use App\Models\Page;
use Filament\Forms;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Tabs;
@@ -16,8 +14,6 @@ use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Str;
class ContactWidgetResource extends Resource
diff --git a/app/Filament/Resources/CustomFormResource.php b/app/Filament/Resources/CustomFormResource.php
index ad93ab1..52467a3 100644
--- a/app/Filament/Resources/CustomFormResource.php
+++ b/app/Filament/Resources/CustomFormResource.php
@@ -2,37 +2,14 @@
namespace App\Filament\Resources;
-use App\Enums\CustomFormStatus;
-use App\Enums\PostStatus;
+use App\Containers\Widget\Models\CustomForm;
use App\Filament\Components\Forms\CustomFormForm;
-use App\Filament\Exports\CustomFormExporter;
use App\Filament\Resources\CustomFormResource\Pages;
-use App\Filament\Resources\CustomFormResource\RelationManagers;
use App\Filament\Resources\CustomFormResource\RelationManagers\ResponsesRelationManager;
-use App\Models\Category;
-use App\Models\CustomForm;
-use App\Models\Page;
-use App\Models\Post;
-use Filament\Forms;
-use Filament\Forms\Components\Builder;
-use Filament\Forms\Components\FileUpload;
-use Filament\Forms\Components\RichEditor;
-use Filament\Forms\Components\Section;
-use Filament\Forms\Components\Select;
-use Filament\Forms\Components\SpatieTagsInput;
-use Filament\Forms\Components\Tabs;
-use Filament\Forms\Components\TextInput;
-use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
-use Filament\Forms\Get;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
-use Illuminate\Support\Carbon;
-use Illuminate\Support\Str;
-use Mohamedsabil83\FilamentFormsTinyeditor\Components\TinyEditor;
-use PhpParser\Node\Stmt\Block;
class CustomFormResource extends Resource
{
diff --git a/app/Filament/Resources/CustomFormResource/RelationManagers/ResponsesRelationManager.php b/app/Filament/Resources/CustomFormResource/RelationManagers/ResponsesRelationManager.php
index 363c166..5e4ceed 100644
--- a/app/Filament/Resources/CustomFormResource/RelationManagers/ResponsesRelationManager.php
+++ b/app/Filament/Resources/CustomFormResource/RelationManagers/ResponsesRelationManager.php
@@ -2,18 +2,12 @@
namespace App\Filament\Resources\CustomFormResource\RelationManagers;
-use App\Filament\Exports\CustomFormExporter;
-use App\Models\CustomFormResponse;
use Filament\Forms;
use Filament\Forms\Form;
-use Filament\Infolists\Components\Section;
use Filament\Infolists\Components\TextEntry;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
-use Filament\Tables\Columns\ViewColumn;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
use pxlrbt\FilamentExcel\Actions\Tables\ExportAction;
use pxlrbt\FilamentExcel\Actions\Tables\ExportBulkAction;
use pxlrbt\FilamentExcel\Columns\Column;
diff --git a/app/Filament/Resources/CustomFormResponseResource.php b/app/Filament/Resources/CustomFormResponseResource.php
index 20f3e4e..ab8f9d7 100644
--- a/app/Filament/Resources/CustomFormResponseResource.php
+++ b/app/Filament/Resources/CustomFormResponseResource.php
@@ -2,16 +2,12 @@
namespace App\Filament\Resources;
+use App\Containers\Widget\Models\CustomFormResponse;
use App\Filament\Resources\CustomFormResponseResource\Pages;
-use App\Filament\Resources\CustomFormResponseResource\RelationManagers;
-use App\Models\CustomFormResponse;
-use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class CustomFormResponseResource extends Resource
{
diff --git a/app/Filament/Resources/DepartmentResource.php b/app/Filament/Resources/DepartmentResource.php
index 0c0421f..6aeddf2 100644
--- a/app/Filament/Resources/DepartmentResource.php
+++ b/app/Filament/Resources/DepartmentResource.php
@@ -2,11 +2,11 @@
namespace App\Filament\Resources;
+use App\Containers\InstituteStructure\Models\Department;
+use App\Containers\InstituteStructure\Models\Faculty;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
use App\Filament\Resources\DepartmentResource\Pages;
use App\Filament\Resources\DepartmentResource\RelationManagers;
-use App\Models\Department;
-use App\Models\Faculty;
use Filament\Forms;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
diff --git a/app/Filament/Resources/DepartmentResource/RelationManagers/ProgramsRelationManager.php b/app/Filament/Resources/DepartmentResource/RelationManagers/ProgramsRelationManager.php
index b09e89e..4108aa3 100644
--- a/app/Filament/Resources/DepartmentResource/RelationManagers/ProgramsRelationManager.php
+++ b/app/Filament/Resources/DepartmentResource/RelationManagers/ProgramsRelationManager.php
@@ -2,7 +2,7 @@
namespace App\Filament\Resources\DepartmentResource\RelationManagers;
-use App\Enums\EducationalProgramStatus;
+use App\Ship\Enums\Education\EducationalProgramStatus;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\RelationManagers\RelationManager;
@@ -10,7 +10,6 @@ use Filament\Tables;
use Filament\Tables\Actions\AttachAction;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class ProgramsRelationManager extends RelationManager
{
diff --git a/app/Filament/Resources/DirectionAdditionalEducationResource.php b/app/Filament/Resources/DirectionAdditionalEducationResource.php
index 152d6e8..84557dc 100644
--- a/app/Filament/Resources/DirectionAdditionalEducationResource.php
+++ b/app/Filament/Resources/DirectionAdditionalEducationResource.php
@@ -2,8 +2,8 @@
namespace App\Filament\Resources;
+use App\Containers\AdditionalEducation\Models\DirectionAdditionalEducation;
use App\Filament\Resources\DirectionAdditionalEducationResource\Pages;
-use App\Models\DirectionAdditionalEducation;
use Filament\Forms;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Section;
diff --git a/app/Filament/Resources/DirectionStudyResource.php b/app/Filament/Resources/DirectionStudyResource.php
index 8041efc..420ca00 100644
--- a/app/Filament/Resources/DirectionStudyResource.php
+++ b/app/Filament/Resources/DirectionStudyResource.php
@@ -2,9 +2,9 @@
namespace App\Filament\Resources;
-use App\Enums\LevelEducational;
+use App\Containers\Education\Models\DirectionStudy;
use App\Filament\Resources\DirectionStudyResource\Pages;
-use App\Models\DirectionStudy;
+use App\Ship\Enums\Education\LevelEducational;
use Filament\Forms;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Section;
diff --git a/app/Filament/Resources/DivisionResource.php b/app/Filament/Resources/DivisionResource.php
index 5ddb5f3..f130f87 100644
--- a/app/Filament/Resources/DivisionResource.php
+++ b/app/Filament/Resources/DivisionResource.php
@@ -2,13 +2,12 @@
namespace App\Filament\Resources;
+use App\Containers\InstituteStructure\Models\Division;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
use App\Filament\Resources\DivisionResource\Pages;
use App\Filament\Resources\DivisionResource\RelationManagers;
-use App\Models\Division;
use Filament\Forms;
use Filament\Forms\Components\Actions\Action;
-use Filament\Forms\Components\Builder;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Tabs;
diff --git a/app/Filament/Resources/EducationalGroupResource.php b/app/Filament/Resources/EducationalGroupResource.php
index fa72cb4..02a6a15 100644
--- a/app/Filament/Resources/EducationalGroupResource.php
+++ b/app/Filament/Resources/EducationalGroupResource.php
@@ -2,11 +2,10 @@
namespace App\Filament\Resources;
-use App\Enums\FormEducation;
+use App\Containers\InstituteStructure\Models\Faculty;
+use App\Containers\Schedule\Models\EducationalGroup;
use App\Filament\Resources\EducationalGroupResource\Pages;
-use App\Models\EducationalGroup;
-use App\Models\Faculty;
-use Filament\Forms;
+use App\Ship\Enums\Education\FormEducation;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
@@ -14,7 +13,6 @@ use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
-use Filament\Tables\Columns\BadgeColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
diff --git a/app/Filament/Resources/EducationalProgramResource.php b/app/Filament/Resources/EducationalProgramResource.php
index f5f17b6..031ed68 100644
--- a/app/Filament/Resources/EducationalProgramResource.php
+++ b/app/Filament/Resources/EducationalProgramResource.php
@@ -2,19 +2,14 @@
namespace App\Filament\Resources;
-use App\Enums\EducationalProgramStatus;
-use App\Enums\LevelEducational;
+use App\Containers\Education\Models\EducationalProgram;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
use App\Filament\Resources\EducationalProgramResource\Pages;
use App\Filament\Resources\EducationalProgramResource\RelationManagers\AdmissionPlansRelationManager;
-use App\Models\EducationalProgram;
-use Filament\Forms;
+use App\Ship\Enums\Education\EducationalProgramStatus;
+use App\Ship\Enums\Education\LevelEducational;
use Filament\Forms\Components\Builder;
-use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
-use Filament\Forms\Components\Hidden;
-use Filament\Forms\Components\RichEditor;
-use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Tabs;
use Filament\Forms\Components\TextInput;
diff --git a/app/Filament/Resources/EducationalProgramResource/Pages/EditEducationalProgram.php b/app/Filament/Resources/EducationalProgramResource/Pages/EditEducationalProgram.php
index 2d9cbc8..608baca 100644
--- a/app/Filament/Resources/EducationalProgramResource/Pages/EditEducationalProgram.php
+++ b/app/Filament/Resources/EducationalProgramResource/Pages/EditEducationalProgram.php
@@ -2,9 +2,7 @@
namespace App\Filament\Resources\EducationalProgramResource\Pages;
-use App\Enums\PostStatus;
use App\Filament\Resources\EducationalProgramResource;
-use Carbon\Carbon;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
use Illuminate\Support\Str;
diff --git a/app/Filament/Resources/EducationalProgramResource/Pages/ListEducationalPrograms.php b/app/Filament/Resources/EducationalProgramResource/Pages/ListEducationalPrograms.php
index d2c4bad..32fea08 100644
--- a/app/Filament/Resources/EducationalProgramResource/Pages/ListEducationalPrograms.php
+++ b/app/Filament/Resources/EducationalProgramResource/Pages/ListEducationalPrograms.php
@@ -2,10 +2,9 @@
namespace App\Filament\Resources\EducationalProgramResource\Pages;
-use App\Enums\EducationalProgramStatus;
-use App\Enums\PostStatus;
+use App\Containers\Education\Models\EducationalProgram;
use App\Filament\Resources\EducationalProgramResource;
-use App\Models\EducationalProgram;
+use App\Ship\Enums\Education\EducationalProgramStatus;
use Filament\Actions;
use Filament\Resources\Components\Tab;
use Filament\Resources\Pages\ListRecords;
diff --git a/app/Filament/Resources/EducationalProgramResource/RelationManagers/AdmissionPlansRelationManager.php b/app/Filament/Resources/EducationalProgramResource/RelationManagers/AdmissionPlansRelationManager.php
index 0f7170b..1510c2d 100644
--- a/app/Filament/Resources/EducationalProgramResource/RelationManagers/AdmissionPlansRelationManager.php
+++ b/app/Filament/Resources/EducationalProgramResource/RelationManagers/AdmissionPlansRelationManager.php
@@ -2,11 +2,9 @@
namespace App\Filament\Resources\EducationalProgramResource\RelationManagers;
-use App\Enums\BudgetEducation;
-use App\Enums\FormEducation;
-use App\Models\AdmissionCampaign;
-use Filament\Forms;
-use Filament\Forms\Components\Grid;
+use App\Containers\Education\Models\AdmissionCampaign;
+use App\Ship\Enums\Education\BudgetEducation;
+use App\Ship\Enums\Education\FormEducation;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
diff --git a/app/Filament/Resources/EventCategoryResource.php b/app/Filament/Resources/EventCategoryResource.php
index 82ee2ed..fed0257 100644
--- a/app/Filament/Resources/EventCategoryResource.php
+++ b/app/Filament/Resources/EventCategoryResource.php
@@ -2,9 +2,8 @@
namespace App\Filament\Resources;
+use App\Containers\Event\Models\EventCategory;
use App\Filament\Resources\EventCategoryResource\Pages;
-use App\Filament\Resources\EventCategoryResource\RelationManagers;
-use App\Models\EventCategory;
use Filament\Forms;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
@@ -12,8 +11,6 @@ use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Str;
class EventCategoryResource extends Resource
diff --git a/app/Filament/Resources/EventResource.php b/app/Filament/Resources/EventResource.php
index 961b1ad..6c82809 100644
--- a/app/Filament/Resources/EventResource.php
+++ b/app/Filament/Resources/EventResource.php
@@ -2,15 +2,14 @@
namespace App\Filament\Resources;
+use App\Containers\Event\Models\Event;
+use App\Containers\Event\Models\EventCategory;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
use App\Filament\Resources\EventResource\Pages;
-use App\Models\Event;
-use App\Models\EventCategory;
use Filament\Forms;
use Filament\Forms\Components\Actions\Action;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Grid;
-use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\SpatieTagsInput;
use Filament\Forms\Components\Tabs;
diff --git a/app/Filament/Resources/FacultyResource.php b/app/Filament/Resources/FacultyResource.php
index 1d7eadd..43ec6cf 100644
--- a/app/Filament/Resources/FacultyResource.php
+++ b/app/Filament/Resources/FacultyResource.php
@@ -2,24 +2,14 @@
namespace App\Filament\Resources;
-use App\Enums\CustomFormStatus;
-use App\Enums\PostStatus;
+use App\Containers\InstituteStructure\Models\Faculty;
use App\Filament\Components\Forms\ItemForm\Pages\ContentBuilderItem;
use App\Filament\Resources\FacultyResource\Pages;
use App\Filament\Resources\FacultyResource\RelationManagers\DepartmentsRelationManager;
use App\Filament\Resources\FacultyResource\RelationManagers\WorkersRelationManager;
-use App\Models\Category;
-use App\Models\CustomForm;
-use App\Models\Faculty;
-use App\Models\Page;
-use App\Models\PageReferenceList;
-use App\Models\Post;
use Filament\Forms;
use Filament\Forms\Components\Actions\Action;
-use Filament\Forms\Components\Builder;
-use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Section;
-use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
diff --git a/app/Filament/Resources/JournalIssueResource.php b/app/Filament/Resources/JournalIssueResource.php
index 18a75a3..7ea67b0 100644
--- a/app/Filament/Resources/JournalIssueResource.php
+++ b/app/Filament/Resources/JournalIssueResource.php
@@ -2,10 +2,9 @@
namespace App\Filament\Resources;
+use App\Containers\Science\Models\AcademicJournal;
+use App\Containers\Science\Models\JournalIssue;
use App\Filament\Resources\JournalIssueResource\Pages;
-use App\Filament\Resources\JournalIssueResource\RelationManagers;
-use App\Models\AcademicJournal;
-use App\Models\JournalIssue;
use Filament\Forms;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Toggle;
@@ -13,8 +12,6 @@ use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class JournalIssueResource extends Resource
{
diff --git a/app/Filament/Resources/MainSectionResource.php b/app/Filament/Resources/MainSectionResource.php
index 2578566..05282f3 100644
--- a/app/Filament/Resources/MainSectionResource.php
+++ b/app/Filament/Resources/MainSectionResource.php
@@ -2,20 +2,15 @@
namespace App\Filament\Resources;
+use App\Containers\AppStructure\Models\MainSection;
use App\Filament\Resources\MainSectionResource\Pages;
use App\Filament\Resources\MainSectionResource\RelationManagers;
-use App\Models\MainSection;
-use App\Models\SubSection;
-use App\Services\Filament\Icon\ArrayToCollectionService;
use Filament\Forms;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Guava\FilamentIconPicker\Forms\IconPicker;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Str;
class MainSectionResource extends Resource
diff --git a/app/Filament/Resources/MainSectionResource/Pages/CreateMainSection.php b/app/Filament/Resources/MainSectionResource/Pages/CreateMainSection.php
index ca14b67..b94fc4e 100644
--- a/app/Filament/Resources/MainSectionResource/Pages/CreateMainSection.php
+++ b/app/Filament/Resources/MainSectionResource/Pages/CreateMainSection.php
@@ -3,9 +3,6 @@
namespace App\Filament\Resources\MainSectionResource\Pages;
use App\Filament\Resources\MainSectionResource;
-use App\Models\MainSection;
-use App\Models\SubSection;
-use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateMainSection extends CreateRecord
diff --git a/app/Filament/Resources/MainSectionResource/Pages/EditMainSection.php b/app/Filament/Resources/MainSectionResource/Pages/EditMainSection.php
index 2859a5e..d4ec230 100644
--- a/app/Filament/Resources/MainSectionResource/Pages/EditMainSection.php
+++ b/app/Filament/Resources/MainSectionResource/Pages/EditMainSection.php
@@ -2,8 +2,8 @@
namespace App\Filament\Resources\MainSectionResource\Pages;
+use App\Containers\AppStructure\Models\SubSection;
use App\Filament\Resources\MainSectionResource;
-use App\Models\SubSection;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
diff --git a/app/Filament/Resources/MainSectionResource/RelationManagers/SubSectionsRelationManager.php b/app/Filament/Resources/MainSectionResource/RelationManagers/SubSectionsRelationManager.php
index 2b9e645..cbf511c 100644
--- a/app/Filament/Resources/MainSectionResource/RelationManagers/SubSectionsRelationManager.php
+++ b/app/Filament/Resources/MainSectionResource/RelationManagers/SubSectionsRelationManager.php
@@ -2,15 +2,13 @@
namespace App\Filament\Resources\MainSectionResource\RelationManagers;
-use App\Models\SubSection;
+use App\Containers\AppStructure\Models\SubSection;
use Filament\Forms;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Str;
class SubSectionsRelationManager extends RelationManager
diff --git a/app/Filament/Resources/PageReferenceListResource.php b/app/Filament/Resources/PageReferenceListResource.php
index 816f733..622d796 100644
--- a/app/Filament/Resources/PageReferenceListResource.php
+++ b/app/Filament/Resources/PageReferenceListResource.php
@@ -2,14 +2,9 @@
namespace App\Filament\Resources;
+use App\Containers\Widget\Models\PageReferenceList;
use App\Filament\Resources\PageReferenceListResource\Pages;
-use App\Filament\Resources\PageReferenceListResource\RelationManagers;
-use App\Models\Event;
-use App\Models\Page;
-use App\Models\PageReferenceList;
-use App\Models\Post;
use Filament\Forms;
-use Filament\Forms\Components\ColorPicker;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Tabs;
@@ -20,8 +15,7 @@ use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
+
use Illuminate\Support\Str;
class PageReferenceListResource extends Resource
diff --git a/app/Filament/Resources/PageResource.php b/app/Filament/Resources/PageResource.php
index 46fbff1..dac4412 100644
--- a/app/Filament/Resources/PageResource.php
+++ b/app/Filament/Resources/PageResource.php
@@ -2,39 +2,15 @@
namespace App\Filament\Resources;
-use App\Enums\CustomFormStatus;
-use App\Enums\PostStatus;
+
+use App\Containers\AppStructure\Models\Page;
use App\Filament\Components\Forms\PageForm;
use App\Filament\Resources\PageResource\Pages;
use App\Filament\Resources\PageResource\RelationManagers\SectionRelationManager;
-use App\Helpers\ByteConverter;
-use App\Models\Category;
-use App\Models\CustomForm;
-use App\Models\MainSection;
-use App\Models\Page;
-use App\Models\Post;
-use App\Models\SubSection;
-use Filament\Forms\Components\Builder;
-use Filament\Forms;
-use Filament\Forms\Components\FileUpload;
-use Filament\Forms\Components\Hidden;
-use Filament\Forms\Components\RichEditor;
-use Filament\Forms\Components\Section;
-use Filament\Forms\Components\Select;
-use Filament\Forms\Components\SpatieTagsInput;
-use Filament\Forms\Components\TextInput;
-use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
-use Illuminate\Support\Carbon;
-use Illuminate\Support\Facades\File;
-use Illuminate\Support\Str;
-use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
-use Mohamedsabil83\FilamentFormsTinyeditor\Components\TinyEditor;
-use Symfony\Component\Finder\Finder;
class PageResource extends Resource
{
diff --git a/app/Filament/Resources/PageResource/Pages/CreatePage.php b/app/Filament/Resources/PageResource/Pages/CreatePage.php
index 68b7e1a..d792193 100644
--- a/app/Filament/Resources/PageResource/Pages/CreatePage.php
+++ b/app/Filament/Resources/PageResource/Pages/CreatePage.php
@@ -2,13 +2,10 @@
namespace App\Filament\Resources\PageResource\Pages;
+use App\Containers\AppStructure\Models\SubSection;
use App\Filament\Resources\PageResource;
-use App\Models\SubSection;
-use App\Services\Filament\Domain\Seo\SeoGeneratorService;
use App\Services\Filament\Traits\SeoGenerate;
-use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
-use Illuminate\Support\Str;
class CreatePage extends CreateRecord
{
diff --git a/app/Filament/Resources/PostResource.php b/app/Filament/Resources/PostResource.php
index c04b28a..e3d9da7 100644
--- a/app/Filament/Resources/PostResource.php
+++ b/app/Filament/Resources/PostResource.php
@@ -2,9 +2,9 @@
namespace App\Filament\Resources;
+use App\Containers\Article\Models\Post;
use App\Filament\Components\Forms\PostForm;
use App\Filament\Resources\PostResource\Pages;
-use App\Models\Post;
use BezhanSalleh\FilamentShield\Contracts\HasShieldPermissions;
use Filament\Forms\Form;
use Filament\Resources\Resource;
diff --git a/app/Filament/Resources/PostResource/Pages/CreatePost.php b/app/Filament/Resources/PostResource/Pages/CreatePost.php
index 9f973bb..16a2cbe 100644
--- a/app/Filament/Resources/PostResource/Pages/CreatePost.php
+++ b/app/Filament/Resources/PostResource/Pages/CreatePost.php
@@ -2,15 +2,13 @@
namespace App\Filament\Resources\PostResource\Pages;
+use App\Containers\Article\Enums\PostStatus;
use App\Dto\MainSliderDTO;
-use App\Enums\PostStatus;
use App\Filament\Resources\PostResource;
use App\Services\Filament\Domain\Posts\PostDataProcessor;
use App\Services\Filament\Domain\Posts\PostNotificationService;
-use App\Services\Filament\Domain\Posts\PostSeoGenerator;
use App\Services\Filament\Domain\Posts\PostSliderService;
use App\Services\Filament\Domain\Posts\VkPostPublisher;
-use App\Services\Filament\Domain\Seo\SeoGeneratorService;
use App\Services\Filament\Traits\SeoGenerate;
use Filament\Resources\Pages\CreateRecord;
@@ -41,7 +39,7 @@ class CreatePost extends CreateRecord
protected function processPostData(array $data): array
{
- return (new PostDataProcessor())->process($data, 'create');
+ return (new PostDataProcessor())->processCreate($data);
}
protected function afterCreate(): void
diff --git a/app/Filament/Resources/PostResource/Pages/EditPost.php b/app/Filament/Resources/PostResource/Pages/EditPost.php
index de31a58..659db04 100644
--- a/app/Filament/Resources/PostResource/Pages/EditPost.php
+++ b/app/Filament/Resources/PostResource/Pages/EditPost.php
@@ -2,13 +2,12 @@
namespace App\Filament\Resources\PostResource\Pages;
+use App\Containers\Article\Enums\PostStatus;
+use App\Containers\Article\Models\Post;
use App\Dto\MainSliderDTO;
-use App\Enums\PostStatus;
use App\Filament\Resources\PostResource;
-use App\Models\Post;
use App\Services\Filament\Domain\Posts\PostDataProcessor;
use App\Services\Filament\Domain\Posts\PostNotificationService;
-use App\Services\Filament\Domain\Posts\PostSeoGenerator;
use App\Services\Filament\Domain\Posts\PostSliderService;
use App\Services\Filament\Domain\Posts\VkPostPublisher;
use App\Services\Filament\Domain\Seo\SeoGeneratorService;
@@ -16,6 +15,7 @@ use App\Services\Filament\Traits\SeoGenerate;
use Carbon\Carbon;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
+use Illuminate\Support\Facades\DB;
class EditPost extends EditRecord
{
@@ -27,8 +27,15 @@ class EditPost extends EditRecord
protected array $slideData;
+
protected function mutateFormDataBeforeFill(array $data): array
{
+ if ($data['publish_at']) {
+ $data['publish_setting']['publish_after'] = true;
+ $data['publish_setting']['publish_at'] = $data['publish_at'];
+ }
+ $data['publication']['vk'] = true;
+ $data['publication']['telegram'] = true;
$post = Post::query()->with(['seo', 'slide'])->find($data['id']);
$data['slide'] = $post->slide ? $post->slide->toArray() : null;
return $data;
@@ -36,6 +43,7 @@ class EditPost extends EditRecord
protected function mutateFormDataBeforeSave(array $data): array
{
+ $data['publish_at'] = $this->record->publish_at;
$this->extractAdditionalData($data);
return $this->processPostData($data);
}
@@ -49,7 +57,7 @@ class EditPost extends EditRecord
protected function processPostData(array $data): array
{
- return (new PostDataProcessor())->process($data, 'edit');
+ return (new PostDataProcessor())->processUpdate($data);
}
protected function afterSave(): void
@@ -97,7 +105,12 @@ class EditPost extends EditRecord
protected function publishToVk(): void
{
- (new VkPostPublisher())->publish($this->publicationAgreements, $this->record);
+ $postRelation = DB::table('posts_vk_posts')->select()->where('post_id', $this->record->id)->first();
+ if($postRelation){
+ (new VkPostPublisher())->update($this->publicationAgreements, $this->record);
+ } else {
+ (new VkPostPublisher())->publish($this->publicationAgreements, $this->record);
+ }
}
protected function getHeaderActions(): array
diff --git a/app/Filament/Resources/PostResource/Pages/ListPosts.php b/app/Filament/Resources/PostResource/Pages/ListPosts.php
index 1702146..03d5657 100644
--- a/app/Filament/Resources/PostResource/Pages/ListPosts.php
+++ b/app/Filament/Resources/PostResource/Pages/ListPosts.php
@@ -2,9 +2,9 @@
namespace App\Filament\Resources\PostResource\Pages;
-use App\Enums\PostStatus;
+use App\Containers\Article\Enums\PostStatus;
+use App\Containers\Article\Models\Post;
use App\Filament\Resources\PostResource;
-use App\Models\Post;
use Filament\Actions;
use Filament\Resources\Components\Tab;
use Filament\Resources\Pages\ListRecords;
diff --git a/app/Filament/Resources/ScheduleResource.php b/app/Filament/Resources/ScheduleResource.php
index 70504d6..53f5775 100644
--- a/app/Filament/Resources/ScheduleResource.php
+++ b/app/Filament/Resources/ScheduleResource.php
@@ -2,21 +2,18 @@
namespace App\Filament\Resources;
-use App\Enums\FormEducation;
+use App\Containers\Schedule\Models\EducationalGroup;
+use App\Containers\Schedule\Models\Schedule;
use App\Filament\Resources\ScheduleResource\Pages;
-use App\Models\EducationalGroup;
-use App\Models\Schedule;
use Filament\Forms;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
-use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
-use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Support\Carbon;
diff --git a/app/Filament/Resources/ScheduleResource/Pages/EditSchedule.php b/app/Filament/Resources/ScheduleResource/Pages/EditSchedule.php
index 7b4ec4d..e3e8a85 100644
--- a/app/Filament/Resources/ScheduleResource/Pages/EditSchedule.php
+++ b/app/Filament/Resources/ScheduleResource/Pages/EditSchedule.php
@@ -3,7 +3,6 @@
namespace App\Filament\Resources\ScheduleResource\Pages;
use App\Filament\Resources\ScheduleResource;
-use App\Models\EducationalGroup;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
diff --git a/app/Filament/Resources/Shield/RoleResource.php b/app/Filament/Resources/Shield/RoleResource.php
index 27bc2aa..73fcd35 100644
--- a/app/Filament/Resources/Shield/RoleResource.php
+++ b/app/Filament/Resources/Shield/RoleResource.php
@@ -137,7 +137,7 @@ class RoleResource extends Resource implements HasShieldPermissions
public static function getModel(): string
{
- return Utils::getRoleModel();
+ return 'App\\Containers\\User\\Models\\Role';
}
public static function getModelLabel(): string
diff --git a/app/Filament/Resources/SlideResource.php b/app/Filament/Resources/SlideResource.php
index fcae4fc..6ad4579 100644
--- a/app/Filament/Resources/SlideResource.php
+++ b/app/Filament/Resources/SlideResource.php
@@ -2,12 +2,11 @@
namespace App\Filament\Resources;
+use App\Containers\AppStructure\Models\Page;
+use App\Containers\Article\Models\Post;
+use App\Containers\Event\Models\Event;
+use App\Containers\Widget\Models\Slide;
use App\Filament\Resources\SlideResource\Pages;
-use App\Models\Event;
-use App\Models\Page;
-use App\Models\Post;
-use App\Models\Slide;
-use App\Models\Slider;
use Filament\Forms;
use Filament\Forms\Components\ColorPicker;
use Filament\Forms\Components\DateTimePicker;
@@ -18,7 +17,6 @@ use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-
use Illuminate\Support\Carbon;
class SlideResource extends Resource
diff --git a/app/Filament/Resources/SliderResource.php b/app/Filament/Resources/SliderResource.php
index 28c13c5..1777620 100644
--- a/app/Filament/Resources/SliderResource.php
+++ b/app/Filament/Resources/SliderResource.php
@@ -2,9 +2,9 @@
namespace App\Filament\Resources;
+use App\Containers\Widget\Models\Slider;
use App\Filament\Resources\SliderResource\Pages;
use App\Filament\Resources\SliderResource\RelationManagers;
-use App\Models\Slider;
use Filament\Forms;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\TextInput;
diff --git a/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php b/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php
index edac4f3..d3b8eae 100644
--- a/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php
+++ b/app/Filament/Resources/SliderResource/RelationManagers/SlidesRelationManager.php
@@ -2,9 +2,9 @@
namespace App\Filament\Resources\SliderResource\RelationManagers;
-use App\Models\Event;
-use App\Models\Page;
-use App\Models\Post;
+use App\Containers\Event\Models\Event;
+use App\Containers\AppStructure\Models\Page;
+use App\Containers\Article\Models\Post;
use Filament\Forms;
use Filament\Forms\Components\ColorPicker;
use Filament\Forms\Components\DateTimePicker;
diff --git a/app/Filament/Resources/SubSectionResource.php b/app/Filament/Resources/SubSectionResource.php
index 6d16b25..d250b20 100644
--- a/app/Filament/Resources/SubSectionResource.php
+++ b/app/Filament/Resources/SubSectionResource.php
@@ -2,18 +2,15 @@
namespace App\Filament\Resources;
+use App\Containers\AppStructure\Models\SubSection;
use App\Filament\Resources\SubSectionResource\Pages;
use App\Filament\Resources\SubSectionResource\RelationManagers;
-use App\Models\Page;
-use App\Models\SubSection;
use Filament\Forms;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Str;
class SubSectionResource extends Resource
diff --git a/app/Filament/Resources/SubSectionResource/Pages/CreateSubSection.php b/app/Filament/Resources/SubSectionResource/Pages/CreateSubSection.php
index 12dc766..b0b02fa 100644
--- a/app/Filament/Resources/SubSectionResource/Pages/CreateSubSection.php
+++ b/app/Filament/Resources/SubSectionResource/Pages/CreateSubSection.php
@@ -3,10 +3,6 @@
namespace App\Filament\Resources\SubSectionResource\Pages;
use App\Filament\Resources\SubSectionResource;
-use App\Models\Page;
-use App\Models\SubSection;
-use Filament\Actions;
-use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
class CreateSubSection extends CreateRecord
diff --git a/app/Filament/Resources/SubSectionResource/Pages/EditSubSection.php b/app/Filament/Resources/SubSectionResource/Pages/EditSubSection.php
index df9651c..e85537c 100644
--- a/app/Filament/Resources/SubSectionResource/Pages/EditSubSection.php
+++ b/app/Filament/Resources/SubSectionResource/Pages/EditSubSection.php
@@ -3,8 +3,7 @@
namespace App\Filament\Resources\SubSectionResource\Pages;
use App\Filament\Resources\SubSectionResource;
-use App\Models\Page;
-use App\Models\SubSection;
+use App\Containers\AppStructure\Models\Page;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
diff --git a/app/Filament/Resources/SubSectionResource/RelationManagers/PagesRelationManager.php b/app/Filament/Resources/SubSectionResource/RelationManagers/PagesRelationManager.php
index fdf2812..b97e2a9 100644
--- a/app/Filament/Resources/SubSectionResource/RelationManagers/PagesRelationManager.php
+++ b/app/Filament/Resources/SubSectionResource/RelationManagers/PagesRelationManager.php
@@ -3,16 +3,12 @@
namespace App\Filament\Resources\SubSectionResource\RelationManagers;
use App\Filament\Components\Forms\PageForm;
-use App\Models\Page;
-use App\Models\SubSection;
+use App\Containers\AppStructure\Models\Page;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
-
class PagesRelationManager extends RelationManager
{
protected static string $relationship = 'pages';
diff --git a/app/Filament/Resources/TagResource.php b/app/Filament/Resources/TagResource.php
index c78a0bf..e56cc0d 100644
--- a/app/Filament/Resources/TagResource.php
+++ b/app/Filament/Resources/TagResource.php
@@ -2,16 +2,12 @@
namespace App\Filament\Resources;
+use App\Containers\Article\Models\Tag;
use App\Filament\Resources\TagResource\Pages;
-use App\Filament\Resources\TagResource\RelationManagers;
-use App\Models\Tag;
-use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class TagResource extends Resource
{
diff --git a/app/Filament/Resources/UrlLinkResource.php b/app/Filament/Resources/UrlLinkResource.php
index 0860f9f..cb2a31d 100644
--- a/app/Filament/Resources/UrlLinkResource.php
+++ b/app/Filament/Resources/UrlLinkResource.php
@@ -2,14 +2,9 @@
namespace App\Filament\Resources;
+use App\Containers\AppStructure\Models\Page;
use App\Filament\Resources\UrlLinkResource\Pages;
-use App\Filament\Resources\UrlLinkResource\RelationManagers;
-use App\Models\Page;
-use App\Models\UrlLink;
use Filament\Forms;
-use Filament\Forms\Components\FileUpload;
-use Filament\Forms\Components\Hidden;
-use Filament\Forms\Components\RichEditor;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
@@ -18,10 +13,6 @@ use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
-use Filament\Forms\Components\Builder;
-
-use Illuminate\Support\Str;
class UrlLinkResource extends Resource
{
diff --git a/app/Filament/Resources/UserDetailResource.php b/app/Filament/Resources/UserDetailResource.php
index 9234b7d..3f1a853 100644
--- a/app/Filament/Resources/UserDetailResource.php
+++ b/app/Filament/Resources/UserDetailResource.php
@@ -2,19 +2,13 @@
namespace App\Filament\Resources;
+use App\Containers\User\Models\UserDetail;
use App\Filament\Components\Forms\UserDetailForm;
use App\Filament\Resources\UserDetailResource\Pages;
-use App\Filament\Resources\UserDetailResource\RelationManagers;
-use App\Models\UserDetail;
-use Filament\Forms;
-use Filament\Forms\Components\Tabs;
use Filament\Forms\Form;
-use Filament\Resources\Components\Tab;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class UserDetailResource extends Resource
{
diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php
index 8bb490d..159c8fa 100644
--- a/app/Filament/Resources/UserResource.php
+++ b/app/Filament/Resources/UserResource.php
@@ -2,20 +2,16 @@
namespace App\Filament\Resources;
+use App\Containers\User\Models\User;
use App\Filament\Resources\UserResource\Pages;
use App\Filament\Resources\UserResource\RelationManagers;
-use App\Models\User;
use BezhanSalleh\FilamentShield\Contracts\HasShieldPermissions;
use Filament\Forms;
use Filament\Forms\Components\Section;
-use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
-use Illuminate\Support\Str;
class UserResource extends Resource implements HasShieldPermissions
{
diff --git a/app/Filament/Resources/UserResource/Pages/CreateUser.php b/app/Filament/Resources/UserResource/Pages/CreateUser.php
index 343dd53..a3bb5c6 100644
--- a/app/Filament/Resources/UserResource/Pages/CreateUser.php
+++ b/app/Filament/Resources/UserResource/Pages/CreateUser.php
@@ -3,7 +3,7 @@
namespace App\Filament\Resources\UserResource\Pages;
use App\Filament\Resources\UserResource;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Support\Str;
diff --git a/app/Filament/Resources/UserResource/Pages/EditUser.php b/app/Filament/Resources/UserResource/Pages/EditUser.php
index ca18f35..21f6f8c 100644
--- a/app/Filament/Resources/UserResource/Pages/EditUser.php
+++ b/app/Filament/Resources/UserResource/Pages/EditUser.php
@@ -2,8 +2,8 @@
namespace App\Filament\Resources\UserResource\Pages;
+use App\Containers\User\Models\User;
use App\Filament\Resources\UserResource;
-use App\Models\User;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
use Illuminate\Support\Str;
diff --git a/app/Filament/Resources/UserResource/Pages/ListUsers.php b/app/Filament/Resources/UserResource/Pages/ListUsers.php
index 6de0892..569b434 100644
--- a/app/Filament/Resources/UserResource/Pages/ListUsers.php
+++ b/app/Filament/Resources/UserResource/Pages/ListUsers.php
@@ -2,10 +2,10 @@
namespace App\Filament\Resources\UserResource\Pages;
+use App\Containers\User\Mails\InvitationMail;
+use App\Containers\User\Models\Invitation;
use App\Filament\Resources\UserResource;
-use App\Mail\InvitationMail;
-use App\Models\Invitation;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Filament\Actions;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
diff --git a/app/Filament/Resources/UserResource/RelationManagers/UserDetailRelationManager.php b/app/Filament/Resources/UserResource/RelationManagers/UserDetailRelationManager.php
index 73899ba..3634324 100644
--- a/app/Filament/Resources/UserResource/RelationManagers/UserDetailRelationManager.php
+++ b/app/Filament/Resources/UserResource/RelationManagers/UserDetailRelationManager.php
@@ -3,15 +3,11 @@
namespace App\Filament\Resources\UserResource\RelationManagers;
use App\Filament\Components\Forms\UserDetailForm;
-use App\Models\User;
-use Filament\Forms;
-use Filament\Forms\Components\Tabs;
+use App\Containers\User\Models\User;
use Filament\Forms\Form;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
class UserDetailRelationManager extends RelationManager
{
diff --git a/app/Http/Controllers/AcademicJournalController.php b/app/Http/Controllers/AcademicJournalController.php
deleted file mode 100644
index a0fca94..0000000
--- a/app/Http/Controllers/AcademicJournalController.php
+++ /dev/null
@@ -1,10 +0,0 @@
-when(request()->input('search'), function ($query, $search) {
- $query->whereRaw("LOWER(first_name || ' ' || last_name) LIKE ?", ["%{$search}%"])
- ->orWhere('email', 'like', "%{$search}%")
- ->orWhere('phone', 'like', "%{$search}%");
- })
- ->orderBy('id', 'desc')
- ->paginate(request()->input('perPage', 9))
- ->withQueryString());
- $filters = request()->input('search');
-
- return Inertia::render('AdminPanel/ApplicantQuestion/Index', compact('applicantQuestions', 'filters'));
- }
-
- public function create()
- {
- return Inertia::render('AdminPanel/ApplicantQuestion/Create');
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- ApplicantQuestion::create($data);
-
- return redirect()->route('admin.applicantQuestion.index');
- }
-}
diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php
index 4c7bd6d..34e0fb1 100644
--- a/app/Http/Controllers/Auth/RegisteredUserController.php
+++ b/app/Http/Controllers/Auth/RegisteredUserController.php
@@ -2,9 +2,8 @@
namespace App\Http\Controllers\Auth;
+use App\Containers\User\Models\User;
use App\Http\Controllers\Controller;
-use App\Models\User;
-use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php
deleted file mode 100644
index 192d089..0000000
--- a/app/Http/Controllers/CategoryController.php
+++ /dev/null
@@ -1,67 +0,0 @@
-when(request()->input('search'), function ($query, $search) {
- $query->where('title', 'like', "%{$search}%")
- ->orWhere('title', 'like', "%{$search}%");
- })
- ->orderBy('id', 'desc')
- ->paginate(request()->input('perPage', 9))
- ->withQueryString());
- $filters = [
- 'search' => request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Categories/Index', compact('categories', 'filters'));
- }
-
- public function create()
- {
- return Inertia::render('AdminPanel/Categories/Create');
- }
-
- public function store(Request $request)
- {
- $data = $request->validate([
- 'title' => 'required|unique:categories|max:50|min:5',
- ]);
- Category::create($data);
- return redirect()->route('admin.category.index');
- }
-
- public function edit(Category $category)
- {
- return Inertia::render('AdminPanel/Categories/Edit', compact('category'));
- }
-
- public function update(Category $category, Request $request)
- {
- $data = $request->validate([
- 'title' => 'required|unique:categories|max:50|min:5',
- ]);
- $category->update($data);
- return redirect()->route('admin.category.index');
- }
-
- public function destroy(string $id)
- {
- $category = Category::find($id);
- $category->delete();
-
- return redirect()->route('admin.category.index');
- }
-
-}
diff --git a/app/Http/Controllers/ClientExternalVacancyController.php b/app/Http/Controllers/ClientExternalVacancyController.php
deleted file mode 100644
index 58a3c98..0000000
--- a/app/Http/Controllers/ClientExternalVacancyController.php
+++ /dev/null
@@ -1,10 +0,0 @@
-where('is_active', true)
- ->orderBy('id', 'desc')
- ->paginate(6));
- return Inertia::render('Client/Library-news/Index', compact('posts'));
- }
-
- public function show(string $slug)
- {
- $post = new ClientLibraryPostListResource(LibraryNews::query()->where('slug', $slug)->firstOrFail());
- return Inertia::render('Client/Library-news/Show', compact('post'));
- }
-}
diff --git a/app/Http/Controllers/ClientPostController.php b/app/Http/Controllers/ClientPostController.php
deleted file mode 100644
index 7f5d46b..0000000
--- a/app/Http/Controllers/ClientPostController.php
+++ /dev/null
@@ -1,158 +0,0 @@
-addHours(), function () {
- return DB::table('taggables')
- ->distinct()
- ->select('tag_id')
- ->where('taggable_type', Post::class)
- ->get()
- ->pluck('tag_id');
- });
-
- $tags = Cache::remember('tags', now()->addHours(1), function () use ($tagIds) {
- return \Spatie\Tags\Tag::whereIn('id', $tagIds)->get();
- });
-
- $cacheKey = 'posts_' . md5(serialize($request->all()));
- $posts = Cache::remember($cacheKey, now()->addHours(1), function () use ($request) {
- return ClientPostListResource::collection(Post::query()
- ->with('category')
- ->select('title', 'slug', 'authors', 'category_id', 'preview', 'search_data', 'publish_at')
- ->where('status', '=', 'published')
- ->where('publish_at', '<', Carbon::now())
- ->when($request->input('search'), function ($query, $search) {
- $query->whereRaw('LOWER(title) like ?', ["%".strtolower($search)."%"]);
- })
- ->when($request->input('category'), function ($query) use ($request) {
- $slugs = $request->input('category');
- if (is_array($slugs)) {
- $query->whereHas('category', function ($query) use ($slugs) {
- $query->whereIn('slug', $slugs);
- });
- }
- })
- ->when($request->input('tag'), function ($query, $slugs) {
- if (is_array($slugs)) {
- return $query->withAnyTags($slugs);
- }
-
- $slugsArray = explode(',', $slugs);
- return $query->withAnyTags($slugsArray);
- })
- ->orderBy('publish_at', $request->input('sort', 'desc'))
- ->paginate(9)
- ->withQueryString()
- );
- });
-
-
- $categories = Cache::remember('categories', now()->addHours(48), function () {
- return CategoryResource::collection(Category::has('posts')->get());
- });
-
- $categoriesContent = [];
- if ($request->input('category')) {
- foreach ($request->input('category') as $item) {
- $cacheKey = 'category_content_' . $item;
- $categoriesContent[$item] = Cache::remember($cacheKey, now()->addHours(1), function () use ($item) {
- return new CategoryResource(Category::where('slug', $item)->first());
- });
- }
- }
-
- // Кешируем контент тегов
- $tagsContent = [];
- if ($request->input('tag')) {
- foreach ($request->input('tag') as $item) {
- $cacheKey = 'tag_content_' . $item;
- $tagsContent[$item] = Cache::remember($cacheKey, now()->addHours(1), function () use ($item) {
- return new ClientTagResource(DB::table('tags')
- ->where(DB::raw("JSON_UNQUOTE(JSON_EXTRACT(slug, '$.ru'))"), $item)
- ->first());
- });
- }
- }
-
- $filters = [
- 'search_filter' => [
- 'type' => 'search',
- 'value' => $request->input('search'),
- 'param' => 'search'
- ],
- 'category_filter' => [
- 'type' => 'category',
- 'value' => $request->input('category'),
- 'param' => 'category',
- 'content' => $categoriesContent,
- ],
- 'tag_filter' => [
- 'type' => 'tag',
- 'value' => $request->input('tag'),
- 'param' => 'tag',
- 'content' => $tagsContent
- ],
- 'sortingBy_filter' => [
- 'type' => 'sort',
- 'value' => $request->input('sort'),
- 'param' => 'sort',
- ],
- ];
-
- $seo = $this->seoPageProvider->getSeoForCurrentPage();
-
- return Inertia::render('Client/Posts/Index', compact('filters', 'posts', 'categories', 'tags', 'seo'));
- }
-
- public function show(Request $request, $slug): \Inertia\Response
- {
- $postData = Cache::remember(
- CacheKeys::POST_PREFIX->value . $slug,
- now()->addHours(1),
- fn() => Post::where('slug', $slug)
- ->where('publish_at', '<', Carbon::now())
- ->firstOrFail()
- );
-
- $seo = Cache::remember(
- CacheKeys::POST_PREFIX->value . 'seo_' . $slug,
- now()->addHours(1),
- fn() => $this->seoPageProvider->getSeoForModel($postData)
- );
-
- $post = new PostResource($postData);
-
-
- // Возвращаем ответ с использованием кешированных данных
- return Inertia::render('Client/Posts/Show', compact('post', 'seo'));
- }
-
-
-}
diff --git a/app/Http/Controllers/ClientVacantPositionController.php b/app/Http/Controllers/ClientVacantPositionController.php
deleted file mode 100644
index fe6f480..0000000
--- a/app/Http/Controllers/ClientVacantPositionController.php
+++ /dev/null
@@ -1,10 +0,0 @@
-where('is_active', true)
- ->orderBy('id', 'desc')
- ->paginate(6));
- return Inertia::render('Client/Library-exhibitions/Index', compact('exhibitions'));
- }
-
- public function show(string $slug)
- {
- $exhibition = new ClientVirtualExhibitionListResource(VirtualExhibition::query()->where('slug', $slug)->firstOrFail());
- return Inertia::render('Client/Library-exhibitions/Show', compact('exhibition'));
- }
-}
diff --git a/app/Http/Controllers/DepartmentController.php b/app/Http/Controllers/DepartmentController.php
deleted file mode 100644
index 04148b9..0000000
--- a/app/Http/Controllers/DepartmentController.php
+++ /dev/null
@@ -1,54 +0,0 @@
- request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Departments/Index', compact('departments', 'filters'));
- }
-
- public function create()
- {
- $faculties = FacultyResource::collection(Faculty::all());
- return Inertia::render('AdminPanel/Departments/Create', compact('faculties'));
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- Department::firstOrCreate($data);
- return redirect()->route('admin.department.index');
- }
-
- public function edit(Department $department)
- {
- return Inertia::render('AdminPanel/Departments/Edit', compact('department'));
- }
-
- public function update(UpdateRequest $request, Department $department)
- {
- $data = $request->validated();
- $department->update($data);
- return redirect()->route('admin.department.index');
- }
-
- public function destroy(Department $department)
- {
- $department->delete();
- }
-}
diff --git a/app/Http/Controllers/DivisionController.php b/app/Http/Controllers/DivisionController.php
deleted file mode 100644
index f4c66b1..0000000
--- a/app/Http/Controllers/DivisionController.php
+++ /dev/null
@@ -1,66 +0,0 @@
-when(request()->input('search'), function ($query, $search) {
- $query->where('title', 'like', "%{$search}%");
- })
- ->orderBy('id', 'desc')
- ->paginate(request()->input('perPage', 9))
- ->withQueryString());
- $filters = [
- 'search' => request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Divisions/Index', compact('divisions', 'filters'));
- }
-
- public function create()
- {
- return Inertia::render('AdminPanel/Divisions/Create');
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- $data['description'] = json_encode($data['description']);
- Division::create($data);
- return redirect()->route('admin.division.index');
- }
-
- public function edit(Division $division)
- {
- $division = new DivisionResource($division);
- $users = UserResource::collection(User::all());
- return Inertia::render('AdminPanel/Divisions/Edit', compact('division', 'users'));
- }
-
- public function update(Division $division, UpdateRequest $request)
- {
- $data = $request->validated();
- $data['description'] = json_encode($data['description']);
- $division->update($data);
- return redirect()->route('admin.division.index');
- }
-
- public function destroy(string $id)
- {
- $category = Division::find($id);
- $category->delete();
-
- return redirect()->route('admin.division.index');
- }
-}
diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php
deleted file mode 100644
index 6e59fa6..0000000
--- a/app/Http/Controllers/EventController.php
+++ /dev/null
@@ -1,62 +0,0 @@
-when(request()->input('search'), function ($query, $search) {
- $query->where('title', 'like', "%{$search}%");
- })
- ->orderBy('id', 'desc')
- ->paginate(request()->input('perPage', 9))
- ->withQueryString());
- $filters = [
- 'search' => request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Posts/Index', compact('events', 'filters'));
- }
-
- public function create()
- {
- return Inertia::render('AdminPanel/Posts/Create');
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- $data['content'] = json_encode($data['content']);
- Event::create($data);
- return redirect()->route('admin.event.index');
- }
-
- public function edit(Event $event)
- {
- $event = new EventResource($event);
- return Inertia::render('AdminPanel/Posts/Edit', compact('event'));
- }
-
- public function update(Event $event, UpdateRequest $request)
- {
- $data = $request->validated();
- $data['content'] = json_encode($data['content']);
- $event->update($data);
- return redirect()->route('admin.event.index');
- }
-
-
- public function destroy(Event $event)
- {
- $event->delete();
- return redirect()->route('admin.event.index');
- }
-}
diff --git a/app/Http/Controllers/FacultyController.php b/app/Http/Controllers/FacultyController.php
deleted file mode 100644
index 4aaa488..0000000
--- a/app/Http/Controllers/FacultyController.php
+++ /dev/null
@@ -1,52 +0,0 @@
- request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Faculties/Index', compact('faculties', 'filters'));
- }
-
- public function create()
- {
- return Inertia::render('AdminPanel/Faculties/Create');
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- Faculty::firstOrCreate($data);
- return redirect()->route('admin.faculty.index');
- }
-
- public function edit(Faculty $faculty)
- {
- return Inertia::render('AdminPanel/Faculties/Edit', compact('faculty'));
- }
-
- public function update(UpdateRequest $request, Faculty $faculty)
- {
- $data = $request->validated();
- $faculty->update($data);
- return redirect()->route('admin.faculty.index');
- }
-
- public function destroy(Faculty $faculty)
- {
- $faculty->delete();
- }
-
-}
diff --git a/app/Http/Controllers/FileUploadController.php b/app/Http/Controllers/FileUploadController.php
deleted file mode 100644
index 33ae37d..0000000
--- a/app/Http/Controllers/FileUploadController.php
+++ /dev/null
@@ -1,37 +0,0 @@
-hasFile('file')) {
- $file = $request->file('file');
-
- if ($file->isValid()) {
- // Генерируем уникальное имя файла
- $filename = md5(Carbon::now() . '_' . $file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
-
- // Сохраняем файл в папку public/files
- $path = Storage::disk('public')->putFileAs('/files', $file, $filename);
-
- // Генерируем полный URL к загруженному файлу с использованием функции asset
- $fileUrl = '/storage/' . $path;
-
- // Возвращаем JSON-ответ с заданным форматом
- return response()->json([
- 'success' => 1,
- 'file' => [
- 'url' => $fileUrl,
- ],
- ]);
- }
- }
- return response()->json(['error' => 'File upload failed'], 400);
- }
-}
diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php
deleted file mode 100644
index 24da08c..0000000
--- a/app/Http/Controllers/ImageController.php
+++ /dev/null
@@ -1,36 +0,0 @@
-hasFile('image')) {
- $image = $request->file('image');
- // Генерируем уникальное имя файла, чтобы избежать конфликтов
- $filename = md5(Carbon::now() . '_' . $image->getClientOriginalName()) . '.' . $image->getClientOriginalExtension();
- // Сохраняем изображение в директорию public
- ImageTool::configure(['driver' => 'imagick']);
- ImageTool::make($image)
- ->resize(1200, null, function ($constraint) {
- $constraint->aspectRatio();
- $constraint->upsize();
- })
- ->save(storage_path('app/public/images/' . $filename));
- $path = "/storage/images/" . $filename;
- // Генерируем URL для доступа к изображению
- return response()->json(['success' => 1, 'file' => ['url' => $path]]);
- }
-
- return response()->json(['error' => 'Image upload failed']);
- }
-
-
-}
diff --git a/app/Http/Controllers/ImportUserController.php b/app/Http/Controllers/ImportUserController.php
deleted file mode 100644
index a0d6c3b..0000000
--- a/app/Http/Controllers/ImportUserController.php
+++ /dev/null
@@ -1,57 +0,0 @@
-whereHas('userDetail')->with('userDetail')->get();
- }
-
- public function test()
- {
- $response = Http::get('http://crawdad-fresh-bream.ngrok-free.app/api/import/users/')->object();
- foreach ($response as $user) {
- $userDetail = $user->user_detail;
- unset($user->user_detail);
- $user = User::create([
- 'name' => $user->name,
- 'slug' => $user->slug,
- 'email' => $user->email,
- 'email_verified_at' => $user->email_verified_at,
- 'password' => Md5(Str::random(15)),
- 'remember_token' => null,
- 'created_at' => $user->created_at,
- 'updated_at' => $user->updated_at,
- ]);
- $user->userDetail()->create([
- 'user_id' => $user->id,
- 'is_only_worker' => $userDetail->is_only_worker,
- 'photo' => $userDetail->photo,
- 'academicTitle' => $userDetail->academicTitle,
- 'AcademicDegree' => $userDetail->AcademicDegree,
- 'education' => $userDetail->education,
- 'awards' => $userDetail->awards,
- 'professDisciplines' => $userDetail->professDisciplines,
- 'professionalRetraining' => $userDetail->professionalRetraining,
- 'professionalDevelopment' => $userDetail->professionalDevelopment,
- 'workExperience' => $userDetail->workExperience,
- 'attendedConferences' => $userDetail->attendedConferences,
- 'participationScienceProjects' => $userDetail->participationScienceProjects,
- 'publications' => $userDetail->publications,
- 'contactEmail' => $userDetail->contactEmail,
- 'contactPhone' => $userDetail->contactPhone,
- 'search_data' => $userDetail->search_data,
- 'other' => $userDetail->other,
- 'created_at' => $userDetail->created_at,
- 'updated_at' => $userDetail->updated_at,
- ]);
- }
- }
-}
diff --git a/app/Http/Controllers/LinkToolController.php b/app/Http/Controllers/LinkToolController.php
deleted file mode 100644
index 9f39fbf..0000000
--- a/app/Http/Controllers/LinkToolController.php
+++ /dev/null
@@ -1,81 +0,0 @@
-input('url') == \route('client.person.show', ['userDetail' => substr($request->input('url'), -1)])) {
- $userDetail = UserDetail::find(substr($request->input('url'), -1));
- return response()->json([
- 'success' => 1,
- 'link' => Str($request->input('url')),
- 'meta' => [
- 'title' => $userDetail->surname . ' '. $userDetail->name . ' '. $userDetail->middleName,
- 'description' => $userDetail->administrativePosition,
- 'image' => [
- 'url' => $userDetail->photo
- ],
- 'type' => 'person',
- 'data' => new UserDetailResource($userDetail),
- ]
- ]);
- }
- if ($request->input('url') == \route('client.post.show', ['slug' => $this->getSlugFromUrl($request->input('url')) ])) {
- $post = Post::query()->where('slug', '=', $this->getSlugFromUrl($request->input('url')))->first();
- $content = json_decode($post->content);
- foreach ($content->blocks as $data) {
- if ($data->type === 'paragraph') {
- return response()->json([
- 'success' => 1,
- 'link' => Str($request->input('url')),
- 'meta' => [
- 'title' => $post->title,
- 'description' => $data->data->text,
- 'type' => 'post',
- 'data' => new PostResource($post),
- ]
- ]);
- }
- }
- }
-
- if ($request->input('url') == \route('client.student.show', ['student' => substr($request->input('url'), -1)])) {
- $student = Student::find(substr($request->input('url'), -1));
- return response()->json([
- 'success' => 1,
- 'link' => Str($request->input('url')),
- 'meta' => [
- 'title' => $student->surname . ' '. $student->name . ' '. $student->middleName,
- 'description' => $student->position,
- 'image' => [
- 'url' => $student->photo
- ],
- 'type' => 'student',
- 'data' => new StudentResource($student),
- ]
- ]);
- }
-
- return false;
- }
-
- private function getSlugFromUrl($url)
- {
- $path = parse_url($url, PHP_URL_PATH);
- $segments = explode('/', $path);
- $lastSegment = end($segments);
- return $lastSegment;
- }
-
-}
diff --git a/app/Http/Controllers/MainController.php b/app/Http/Controllers/MainController.php
index c07b0ba..5bc19f8 100644
--- a/app/Http/Controllers/MainController.php
+++ b/app/Http/Controllers/MainController.php
@@ -2,36 +2,19 @@
namespace App\Http\Controllers;
-use App\Enums\EducationalProgramStatus;
-use App\Enums\LevelEducational;
-use App\Enums\PostStatus;
-use App\Http\Resources\AdditionalEducationResource;
-use App\Http\Resources\ClientMainSliderResource;
-use App\Http\Resources\ClientNavigationResource;
-use App\Http\Resources\EventThumbnailResource;
-use App\Http\Resources\MainSectionResource;
-use App\Http\Resources\PostResource;
-use App\Http\Resources\PostThumbnailResource;
-use App\Models\AdditionalEducation;
-use App\Models\AdditionalEducationCategory;
-use App\Models\AdmissionCampaign;
-use App\Models\DirectionStudy;
-use App\Models\EducationalProgram;
-use App\Models\Event;
-use App\Models\MainSection;
-use App\Models\MainSlider;
-use App\Models\Page;
-use App\Models\Post;
-use App\Services\Filament\Icon\ArrayToCollectionService;
-use App\Services\Vicon\EducationalProgram\EducationalProgramService;
+use App\Containers\AdditionalEducation\Models\AdditionalEducation;
+use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
+use App\Containers\AppStructure\Models\Page;
+use App\Containers\Article\Enums\PostStatus;
+use App\Containers\Article\Models\Post;
+use App\Containers\Education\Models\AdmissionCampaign;
+use App\Containers\Event\Models\Event;
+use App\Containers\Event\UI\WEB\Transformers\EventThumbnailResource;
+use App\Containers\Widget\UI\API\Transformers\PostThumbnailResource;
+use App\Ship\Enums\Education\LevelEducational;
use Carbon\Carbon;
use DateTime;
-use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
-use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Hash;
-use Illuminate\Support\Facades\Http;
-use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
class MainController extends Controller
diff --git a/app/Http/Controllers/MainSectionController.php b/app/Http/Controllers/MainSectionController.php
deleted file mode 100644
index f540e58..0000000
--- a/app/Http/Controllers/MainSectionController.php
+++ /dev/null
@@ -1,73 +0,0 @@
- request()->input('search'),
- ];
- return Inertia::render('AdminPanel/MainSection/Index', compact('mainSections', 'filters'));
- }
-
- public function create()
- {
- $subSections = SubSection::query()->where('main_section_id', '=', null)->get();
- return Inertia::render('AdminPanel/MainSection/Create', compact('subSections'));
- }
-
- public function store(Request $request)
- {
- $data = $request->validate([
- 'title' => 'required|unique:main_sections|max:50|min:5',
- 'subSection_ids' => 'array',
- 'subSection_ids.*' => 'exists:sub_sections,id'
- ]);
- $subSection_ids = $data['subSection_ids'];
- unset($data['subSection_ids']);
- $mainSection = MainSection::create($data);
- SubSection::whereIn('id', $subSection_ids)->update(['main_section_id' => $mainSection->id]);
- return redirect()->route('admin.mainSection.index');
- }
-
- public function edit(MainSection $mainSection)
- {
- $subSections = SubSection::query()->where('main_section_id', '=', $mainSection->id)->
- orWhere('main_section_id', '=', null)
- ->get();
- $subSection_ids = SubSection::query()->where('main_section_id', '=', $mainSection->id)->pluck('id');
- $mainSection = new MainSectionResource($mainSection);
- return Inertia::render('AdminPanel/MainSection/Edit', compact('mainSection', 'subSections', 'subSection_ids'));
- }
-
- public function update(MainSection $mainSection, Request $request)
- {
- $data = $request->validate([
- 'title' => 'required|unique:main_sections|max:50|min:5',
- 'subSection_ids' => 'array',
- 'subSection_ids.*' => 'exists:sub_sections,id'
- ]);
- $subSection_ids = $data['subSection_ids'];
- unset($data['subSection_ids']);
- $mainSection->update($data);
- SubSection::query()->where('main_section_id', '=', $mainSection->id)->update(['main_section_id' => NULL]);
- SubSection::whereIn('id', $subSection_ids)->update(['main_section_id' => $mainSection->id]);
- return redirect()->route('admin.mainSection.index');
- }
-
- public function destroy(MainSection $mainSection)
- {
- SubSection::query()->where('main_section_id', '=', $mainSection->id)->update(['main_section_id' => NULL]);
- $mainSection->delete();
- }
-}
diff --git a/app/Http/Controllers/PostController.php b/app/Http/Controllers/PostController.php
deleted file mode 100644
index 3d60894..0000000
--- a/app/Http/Controllers/PostController.php
+++ /dev/null
@@ -1,175 +0,0 @@
-when(request()->input('search'), function ($query, $search) {
- $query->where('title', 'like', "%{$search}%");
- })
- ->orderBy('publish_at', 'desc')
- ->paginate(request()->input('perPage', 9))
- ->withQueryString());
- $filters = [
- 'search' => request()->input('search'),
- ];
-
- return Inertia::render('AdminPanel/Events/Index', compact('posts', 'filters'));
- }
- /**
- * Show the form for creating a new resource.
- */
- public function create()
- {
- $categories = CategoryResource::collection(Category::all());
- return Inertia::render('AdminPanel/Events/Create', compact('categories'));
- }
-
- /**
- * Store a newly created resource in storage.
- */
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- $data['slug'] = Str::slug($data['title'], '-');
- $count = 0;
- $original_slug = $data['slug'];
-
- while (Post::where('slug', '=', $data['slug'])->exists()) {
- $count++;
- $data['slug'] = $original_slug . '-' . $count + 1;
- }
-
-
- $data['content'] = json_encode($data['content']);
- $data['reading_time'] = $this->calculateReadingTime($data['search_data']);
- $author = $data['author'];
- $images = $data['images'];
- unset($data['author']);
- unset($data['images']);
-
- $post = Post::create($data);
- if (isset($author)) {
- AuthorPost::create([
- 'name' => $author,
- 'post_id' => $post->id
- ]);
- }
- if (isset($images)) {
- $gallery = Gallery::create([
- 'post_id' => $post->id,
- ]);
- foreach ($images as $image) {
- $filename = md5(Carbon::now() . '_' . $image->getClientOriginalName()) . '.' . 'jpeg';
-
- ImageTool::configure(['driver' => 'imagick']);
- ImageTool::make($image)
- ->resize(1200, null, function ($constraint) {
- $constraint->aspectRatio();
- $constraint->upsize();
- })
- ->save(storage_path('app/public/images/' . $filename));
- $path = "/storage/images/" . $filename;
- Image::create([
- 'path' => $path,
- 'gallery_id' => $gallery->id,
- ]);
- }
- }
-
- return redirect()->route('admin.post.index');
- }
-
- /**
- * Display the specified resource.
- */
- public function show($slug)
- {
- $post = new PostResource(Post::where('slug', $slug)->firstOrFail());
- return Inertia::render('AdminPanel/Events/Show', compact('post'));
- }
-
- /**
- * Show the form for editing the specified resource.
- */
- public function edit(Post $post)
- {
- $categories = CategoryResource::collection(Category::all());
- $post = new PostResource($post);
- return Inertia::render('AdminPanel/Events/Edit', compact('post', 'categories'));
- }
-
- /**
- * Update the specified resource in storage.
- */
- public function update(Post $post, Request $request)
- {
- $data = $request->validate([
- 'title' => 'required|max:255|min:5',
- 'content' => 'required|array',
- 'content.blocks' => 'required|array|min:1',
- 'category_id' => 'nullable|exists:categories,id',
- 'is_published' => 'boolean',
- ]);
- $data['slug'] = \Illuminate\Support\Str::slug($data['title'], '-');
- $data['content'] = json_encode($data['content']);
-
- $post->update($data);
- return redirect()->route('admin.post.index');
- }
-
- /**
- * Remove the specified resource from storage.
- */
- public function destroy(Post $post)
- {
- $post->delete();
- return redirect()->route('admin.post.index');
- }
-
- private function calculateReadingTime(string $text): int
- {
-
- $text = "lorem ipsum - это текст - часто используемый в печати и вэб-дизайне lorem ipsum является стандартной для текстов на латинице с начала xvi века в то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов используя lorem ipsum для распечатки образцов lorem ipsum не только успешно пережил без заметных изменений пять веков но и перешагнул в электронный дизайн его популяризации в новое время послужили публикация листов letraset с образцами lorem ipsum в 60-х годах и в более недавнее время программы электронной вёрстки типа aldus pagemaker в шаблонах которых используется lorem ipsum lorem ipsum - это текст - часто используемый в печати и вэб-дизайне lorem ipsum является стандартной для текстов на латинице с начала xvi века в то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов используя lorem ipsum для распечатки образцов lorem ipsum не только успешно пережил без заметных изменений пять веков но и перешагнул в электронный дизайн его популяризации в новое время послужили публикация листов letraset с образцами lorem ipsum в 60-х годах и в более недавнее время программы электронной вёрстки типа aldus pagemaker в шаблонах которых используется lorem ipsum";
- // Calculate the number of words in the text
- $wordCount = str_word_count($text,0,"АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя");
-
-
-
-
- // Calculate the average reading speed in words per minute
- $wordsPerMinute = 120; // You can adjust this value based on your desired reading speed
-
- // Calculate the reading time in minutes
- $readingTime = $wordCount / $wordsPerMinute;
-
- // Round the reading time to the nearest integer
- $readingTime = round($readingTime);
-
-
- return $readingTime;
- }
-}
diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php
deleted file mode 100644
index 873b4f7..0000000
--- a/app/Http/Controllers/ProfileController.php
+++ /dev/null
@@ -1,63 +0,0 @@
- $request->user() instanceof MustVerifyEmail,
- 'status' => session('status'),
- ]);
- }
-
- /**
- * Update the user's profile information.
- */
- public function update(ProfileUpdateRequest $request): RedirectResponse
- {
- $request->user()->fill($request->validated());
-
- if ($request->user()->isDirty('email')) {
- $request->user()->email_verified_at = null;
- }
-
- $request->user()->save();
-
- return Redirect::route('profile.edit');
- }
-
- /**
- * Delete the user's account.
- */
- public function destroy(Request $request): RedirectResponse
- {
- $request->validate([
- 'password' => ['required', 'current_password'],
- ]);
-
- $user = $request->user();
-
- Auth::logout();
-
- $user->delete();
-
- $request->session()->invalidate();
- $request->session()->regenerateToken();
-
- return Redirect::to('/');
- }
-}
diff --git a/app/Http/Controllers/ScheduleController.php b/app/Http/Controllers/ScheduleController.php
deleted file mode 100644
index 3b90fe9..0000000
--- a/app/Http/Controllers/ScheduleController.php
+++ /dev/null
@@ -1,94 +0,0 @@
-ExistSubSchedule()->orderBy('name')->paginate(10));
- $filters = [
- 'search' => request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Schedules/Index', compact('schedules', 'filters'));
- }
-
- public function create()
- {
- $faculties = FacultyResource::collection(Faculty::all());
- return Inertia::render('AdminPanel/Schedules/Create', compact('faculties'));
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
-
- $this->storeSchedules($request->file('files'), $data);
-
- return redirect()->route('admin.index');
- }
-
- public function show(Schedule $schedule)
- {
- $schedule = new ScheduleResource($schedule);
- return Inertia::render('AdminPanel/Schedules/Show', compact('schedule'));
- }
-
-
-
-
-
- public function destroy(Schedule $schedule)
- {
- $schedule->delete();
- }
- private function storeSchedules($files, $data)
- {
- foreach ($files as $file) {
- $scheduleTitle = $this->generateScheduleTitle($file);
- $schedule = $this->storeSchedule($scheduleTitle, $data);
- $this->storeSubSchedule($file, $schedule);
- }
- }
-
- private function generateScheduleTitle($file)
- {
- $str = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
- $words = explode(' ', $str);
- return implode(' ', array_slice($words, 0, 2));
- }
-
- private function storeSchedule($title, $data)
- {
- return Schedule::firstOrCreate([
- 'name' => $title,
- 'faculty_id' => $data['faculty_id'],
- 'is_fullTime' => $data['is_fullTime'],
- ]);
- }
-
- private function storeSubSchedule($file, $schedule)
- {
- $path = Storage::disk('public')->putFileAs('/schedules', $file, $file->getClientOriginalName());
- SubSchedule::updateOrCreate([
- 'name' => pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME),
- 'path_file' => '/storage/'.$path,
- 'schedule_id' => $schedule->id,
- ]);
- }
-
-}
diff --git a/app/Http/Controllers/StudentController.php b/app/Http/Controllers/StudentController.php
deleted file mode 100644
index cb387f8..0000000
--- a/app/Http/Controllers/StudentController.php
+++ /dev/null
@@ -1,92 +0,0 @@
- request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Student/Index', compact('students', 'filters'));
- }
-
- public function show(Student $student)
- {
- $student = new StudentResource($student);
- return Inertia::render('Client/Student/Show', compact('student'));
- }
-
- public function create()
- {
- return Inertia::render('AdminPanel/Student/Create');
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- if ($request->file('photo')) {
- $data['photo'] = $this->storePhoto($request->file('photo'));
- }
- Student::create($data);
- return redirect()->route('admin.student.index');
- }
-
- public function edit(Student $student)
- {
- return Inertia::render('AdminPanel/Student/Edit', compact('student'));
- }
-
- public function update(Student $student, UpdateRequest $request)
- {
- $data = $request->validated();
- if ($request->file('photo')) {
- $data['photo'] = $this->storePhoto($request->file('photo'));
- }
- $student->update($data);
- return redirect()->route('admin.student.index');
- }
-
- public function destroy(Student $student)
- {
- $student->delete();
- }
-
- private function storePhoto(UploadedFile $file)
- {
- if ($file->isValid()) {
- $image = $file;
- // Генерируем уникальное имя файла, чтобы избежать конфликтов
- $filename = md5(Carbon::now() . '_' . $image->getClientOriginalName()) . '.' . $image->getClientOriginalExtension();
- // Сохраняем изображение в директорию public
- ImageTool::configure(['driver' => 'imagick']);
-
- ImageTool::make($image)
- ->resize(1200, null, function ($constraint) {
- $constraint->aspectRatio();
- $constraint->upsize();
- })
- ->save(storage_path('app/public/photos/' . $filename));
- $path = "/storage/photos/" . $filename;
- // Генерируем URL для доступа к изображению
- return $path;
- }
- }
-
-}
diff --git a/app/Http/Controllers/SubScheduleController.php b/app/Http/Controllers/SubScheduleController.php
deleted file mode 100644
index 1eaa429..0000000
--- a/app/Http/Controllers/SubScheduleController.php
+++ /dev/null
@@ -1,16 +0,0 @@
-path_file);
- $subSchedule->delete();
- }
-}
diff --git a/app/Http/Controllers/SubSectionController.php b/app/Http/Controllers/SubSectionController.php
deleted file mode 100644
index fca2174..0000000
--- a/app/Http/Controllers/SubSectionController.php
+++ /dev/null
@@ -1,79 +0,0 @@
- request()->input('search'),
- ];
- return Inertia::render('AdminPanel/SubSection/Index', compact('subSections', 'filters'));
- }
-
- public function create()
- {
- $pages = Page::query()
- ->where('sub_section_id', '=', null)
- ->where('is_visible', '=', 1)
- ->where('title', '!=', null)
- ->get();
- return Inertia::render('AdminPanel/SubSection/Create', compact('pages'));
- }
-
- public function store(Request $request)
- {
- $data = $request->validate([
- 'title' => 'required|unique:main_sections|max:50|min:5',
- 'page_ids' => 'array',
- 'page_ids.*' => 'exists:pages,id'
- ]);
- $page_ids = $data['page_ids'];
- unset($data['page_ids']);
- $subSection = SubSection::create($data);
- Page::whereIn('id', $page_ids)->update(['sub_section_id' => $subSection->id]);
- return redirect()->route('admin.subSection.index');
- }
-
- public function edit(SubSection $subSection)
- {
- $pages = Page::query()->where('sub_section_id', $subSection->id)
- ->orWhere(function ($query) {
- $query->where('sub_section_id', null);
- $query->where('is_visible', 1);
- $query->where('title', '!=', null);
- })->get();
- $page_ids = Page::query()->where('sub_section_id', '=', $subSection->id)->pluck('id');
- $subSection = new SubSectionResource($subSection);
- return Inertia::render('AdminPanel/SubSection/Edit', compact('subSection', 'pages', 'page_ids'));
- }
-
- public function update(SubSection $subSection, Request $request)
- {
- $data = $request->validate([
- 'title' => 'required|unique:categories|max:50|min:5',
- 'page_ids' => 'array',
- 'page_ids.*' => 'exists:pages,id'
- ]);
- $page_ids = $data['page_ids'];
- unset($data['page_ids']);
- $subSection->update($data);
- Page::query()->where('sub_section_id', '=', $subSection->id)->update(['sub_section_id' => NULL]);
- Page::whereIn('id', $page_ids)->update(['sub_section_id' => $subSection->id]);
- return redirect()->route('admin.subSection.index');
- }
-
- public function destroy(SubSection $subSection)
- {
- Page::query()->where('sub_section_id', '=', $subSection->id)->update(['sub_section_id' => NULL]);
- $subSection->delete();
- }
-}
diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php
deleted file mode 100644
index 2bfb0be..0000000
--- a/app/Http/Controllers/TagController.php
+++ /dev/null
@@ -1,10 +0,0 @@
- request()->input('search'),
- ];
- return Inertia::render('AdminPanel/Users/Index', compact('users', 'filters'));
- }
-
- public function show(int $id)
- {
- $user = new PostResource(User::find($id));
- return Inertia::render('AdminPanel/Users/Show', compact('user'));
- }
-
- public function create()
- {
- return Inertia::render('AdminPanel/Users/Create');
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- User::firstOrCreate($data);
- return redirect()->route('admin.user.index');
- }
-
- public function edit(User $user)
- {
- $user = new UserResource($user);
- return Inertia::render('AdminPanel/Users/Edit', compact('user'));
- }
-
- public function update(UpdateRequest $request, User $user)
- {
- $data = $request->validated();
- $user->update($data);
- return redirect()->route('admin.user.index');
- }
-
- public function destroy(User $user)
- {
- $user->delete();
- }
-}
diff --git a/app/Http/Controllers/UserDetailController.php b/app/Http/Controllers/UserDetailController.php
deleted file mode 100644
index 4fef674..0000000
--- a/app/Http/Controllers/UserDetailController.php
+++ /dev/null
@@ -1,68 +0,0 @@
-id;
- return Inertia::render('AdminPanel/UserDetail/Create', compact('userId'));
- }
-
- public function store(StoreRequest $request)
- {
- $data = $request->validated();
- if ($request->file('photo')) {
- $data['photo'] = $this->storePhoto($request->file('photo'));
- }
- UserDetail::create($data);
- return redirect()->route('admin.user.index');
- }
-
- public function edit(UserDetail $userDetail)
- {
- return Inertia::render('AdminPanel/UserDetail/Edit', compact('userDetail'));
- }
-
- public function update(UserDetail $userDetail, UpdateRequest $request)
- {
- $data = $request->validated();
- if ($request->file('photo')) {
- $data['photo'] = $this->storePhoto($request->file('photo'));
- }
- $userDetail->update($data);
- return redirect()->route('admin.user.index');
- }
-
- private function storePhoto(UploadedFile $file)
- {
- if ($file->isValid()) {
- $image = $file;
- // Генерируем уникальное имя файла, чтобы избежать конфликтов
- $filename = md5(Carbon::now() . '_' . $image->getClientOriginalName()) . '.' . $image->getClientOriginalExtension();
- // Сохраняем изображение в директорию public
- ImageTool::configure(['driver' => 'imagick']);
- ImageTool::make($image)
- ->resize(1200, null, function ($constraint) {
- $constraint->aspectRatio();
- $constraint->upsize();
- })
- ->save(storage_path('app/public/photos/' . $filename));
- $path = "/storage/photos/" . $filename;
- // Генерируем URL для доступа к изображению
- return $path;
- }
- }
-}
diff --git a/app/Http/Controllers/VkAuthController.php b/app/Http/Controllers/VkAuthController.php
deleted file mode 100644
index 7ceba21..0000000
--- a/app/Http/Controllers/VkAuthController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-vkService = new VkService(new VKApiClient());
- $this->wall_token = env('WALL_ACCESS_VK_TOKEN');
- }
-
- public function wall()
- {
- dd($this->vkService->getPostById(39));
- }
-
-
- public function getImages()
- {
- // Укажите путь к директории
- $directory = 'public/images';
-
- // Получаем все файлы из директории
- $files = Storage::files($directory);
-
-
- // Фильтруем только изображения (например, jpg, png)
- $images = array_filter($files, function ($file) {
- return in_array(pathinfo($file, PATHINFO_EXTENSION), ['webp', 'jpeg', 'png', 'gif']);
- });
-
- // Формируем полный URL для каждого изображения
- $imageUrls = array_map(function ($file) {
- return url(Storage::url($file)); // Добавляем домен
- }, $images);
-
- return $imageUrls; // Возвращаем массив с полными URL изображений
- }
-
-
-
-
-
-}
diff --git a/app/Http/Controllers/api/NavigateController.php b/app/Http/Controllers/api/NavigateController.php
deleted file mode 100644
index 57db702..0000000
--- a/app/Http/Controllers/api/NavigateController.php
+++ /dev/null
@@ -1,17 +0,0 @@
-orderBy('sort', 'asc')->get());
- }
-}
diff --git a/app/Http/Middleware/AccessCheck.php b/app/Http/Middleware/AccessCheck.php
index b29f952..f00b2d5 100644
--- a/app/Http/Middleware/AccessCheck.php
+++ b/app/Http/Middleware/AccessCheck.php
@@ -2,8 +2,7 @@
namespace App\Http\Middleware;
-
-use App\Models\Page;
+use App\Containers\AppStructure\Models\Page;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
diff --git a/app/Http/Middleware/FormTimePeriodMiddleware.php b/app/Http/Middleware/FormTimePeriodMiddleware.php
index e168d8d..978f9fc 100644
--- a/app/Http/Middleware/FormTimePeriodMiddleware.php
+++ b/app/Http/Middleware/FormTimePeriodMiddleware.php
@@ -2,7 +2,7 @@
namespace App\Http\Middleware;
-use App\Models\CustomForm;
+use App\Containers\Widget\Models\CustomForm;
use Carbon\Carbon;
use Closure;
use Illuminate\Http\Request;
diff --git a/app/Http/Middleware/GenerateBreadcrumbs.php b/app/Http/Middleware/GenerateBreadcrumbs.php
index 067d8ca..1bb7834 100644
--- a/app/Http/Middleware/GenerateBreadcrumbs.php
+++ b/app/Http/Middleware/GenerateBreadcrumbs.php
@@ -2,13 +2,12 @@
namespace App\Http\Middleware;
-use App\Http\Resources\ClientBreadcrumbPage;
-use App\Http\Resources\ClientBreadcrumbSection;
-use App\Http\Resources\ClientBreadcrumbSubSection;
-use App\Models\Page;
+use App\Containers\AppStructure\Models\Page;
+use App\Ship\Resources\Breadcrumb\ClientBreadcrumbPage;
+use App\Ship\Resources\Breadcrumb\ClientBreadcrumbSection;
+use App\Ship\Resources\Breadcrumb\ClientBreadcrumbSubSection;
use Closure;
use Illuminate\Http\Request;
-use Symfony\Component\HttpFoundation\Response;
class GenerateBreadcrumbs
{
diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php
index b44d531..1c93027 100644
--- a/app/Http/Middleware/HandleInertiaRequests.php
+++ b/app/Http/Middleware/HandleInertiaRequests.php
@@ -2,8 +2,8 @@
namespace App\Http\Middleware;
-use App\Http\Resources\ClientNavigationResource;
-use App\Models\MainSection;
+use App\Containers\AppStructure\Models\MainSection;
+use App\Containers\AppStructure\UI\API\Transformers\NavigationResource;
use App\Services\App\Breadcrumb\BreadcrumbService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
@@ -23,7 +23,7 @@ class HandleInertiaRequests extends Middleware
{
// Навигация (кешированная)
$navigation = Cache::remember('navigation', now()->addHours(1), function () {
- return ClientNavigationResource::collection(
+ return NavigationResource::collection(
MainSection::with('subSections.pages.section')
->orderBy('sort', 'asc')
->get()
diff --git a/app/Http/Requests/ApplicantQuestion/StoreRequest.php b/app/Http/Requests/ApplicantQuestion/StoreRequest.php
deleted file mode 100644
index 06b9b21..0000000
--- a/app/Http/Requests/ApplicantQuestion/StoreRequest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'first_name' => 'required|string|min:2',
- 'last_name' => 'required|string|min:2',
- 'email' => 'required|email|min:2',
- 'phone' => 'required|numeric|min:11',
- 'text' => 'required|string|min:10',
- ];
- }
-}
diff --git a/app/Http/Requests/Department/StoreRequest.php b/app/Http/Requests/Department/StoreRequest.php
deleted file mode 100644
index 4b21682..0000000
--- a/app/Http/Requests/Department/StoreRequest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|unique:faculties|min:2',
- 'faculty_id' => 'required|exists:faculties,id'
- ];
- }
-}
diff --git a/app/Http/Requests/Department/UpdateRequest.php b/app/Http/Requests/Department/UpdateRequest.php
deleted file mode 100644
index 7b84bc3..0000000
--- a/app/Http/Requests/Department/UpdateRequest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|min:2|unique:faculties',
- 'faculty_id' => 'required|exists:faculties,id'
- ];
- }
-}
diff --git a/app/Http/Requests/Division/StoreRequest.php b/app/Http/Requests/Division/StoreRequest.php
deleted file mode 100644
index ff57100..0000000
--- a/app/Http/Requests/Division/StoreRequest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|string',
- 'description' => 'required|array',
- 'description.blocks' => 'required|array|min:1',
- ];
- }
-}
diff --git a/app/Http/Requests/Division/UpdateRequest.php b/app/Http/Requests/Division/UpdateRequest.php
deleted file mode 100644
index 7f60826..0000000
--- a/app/Http/Requests/Division/UpdateRequest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|string',
- 'description' => 'required|array',
- 'description.blocks' => 'required|array|min:1',
- ];
- }
-}
diff --git a/app/Http/Requests/Event/StoreRequest.php b/app/Http/Requests/Event/StoreRequest.php
deleted file mode 100644
index 2013344..0000000
--- a/app/Http/Requests/Event/StoreRequest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|max:255|min:5',
- 'content' => 'required|array',
- 'content.blocks' => 'required|array|min:1',
- 'event_date' => 'required|date',
- 'address' => 'string',
- 'is_online' => 'required|boolean',
- ];
- }
-}
diff --git a/app/Http/Requests/Event/UpdateRequest.php b/app/Http/Requests/Event/UpdateRequest.php
deleted file mode 100644
index 6d90753..0000000
--- a/app/Http/Requests/Event/UpdateRequest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|max:255|min:5',
- 'content' => 'required|array',
- 'content.blocks' => 'required|array|min:1',
- 'event_date' => 'required|date',
- 'address' => 'string',
- 'is_online' => 'required|boolean',
-
- ];
- }
-}
diff --git a/app/Http/Requests/Faculty/StoreRequest.php b/app/Http/Requests/Faculty/StoreRequest.php
deleted file mode 100644
index 77c74b8..0000000
--- a/app/Http/Requests/Faculty/StoreRequest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|unique:faculties|min:2'
- ];
- }
-}
diff --git a/app/Http/Requests/Faculty/UpdateRequest.php b/app/Http/Requests/Faculty/UpdateRequest.php
deleted file mode 100644
index ca01055..0000000
--- a/app/Http/Requests/Faculty/UpdateRequest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|min:2|unique:faculties',
- ];
- }
-}
diff --git a/app/Http/Requests/FormResponseRequest.php b/app/Http/Requests/FormResponseRequest.php
deleted file mode 100644
index 2f2dcfd..0000000
--- a/app/Http/Requests/FormResponseRequest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-rules = $rules;
- }
-
- /**
- * Determine if the user is authorized to make this request.
- */
- public function authorize(): bool
- {
- return true;
- }
-
- /**
- * Get the validation rules that apply to the request.
- *
- * @return array|string>
- */
- public function rules(): array
- {
- dd(1);
- return [
-
- ];
- }
-}
diff --git a/app/Http/Requests/Page/StoreRequest.php b/app/Http/Requests/Page/StoreRequest.php
deleted file mode 100644
index 70627c4..0000000
--- a/app/Http/Requests/Page/StoreRequest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|max:255|min:5',
- 'content' => 'required|array',
- 'content.blocks' => 'required|array|min:1',
- 'code' => 'required|integer',
- 'slug' => 'required|unique:pages,slug',
- 'path' => 'required|unique:pages,path',
- 'search_data' => 'required|string'
- ];
- }
-}
diff --git a/app/Http/Requests/Page/UpdateRequest.php b/app/Http/Requests/Page/UpdateRequest.php
deleted file mode 100644
index f05f0cb..0000000
--- a/app/Http/Requests/Page/UpdateRequest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|max:255|min:5',
- 'content' => 'required|array',
- 'content.blocks' => 'required|array|min:1',
- 'code' => 'required|integer',
- 'slug' => 'required|unique:pages,slug,'.$this->id,
- 'path' => 'required|unique:pages,path,'.$this->id,
- ];
- }
-}
diff --git a/app/Http/Requests/Post/StoreRequest.php b/app/Http/Requests/Post/StoreRequest.php
deleted file mode 100644
index 92db389..0000000
--- a/app/Http/Requests/Post/StoreRequest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'title' => 'required|max:255|min:5',
- 'content' => 'required|array',
- 'content.blocks' => 'required|array|min:1',
- 'is_published' => 'required|boolean',
- 'category_id' => 'nullable|exists:categories,id',
- 'author' => 'nullable|string|min:5',
- 'images' => 'nullable|array',
- 'search_data' => 'required|string'
- ];
- }
-}
diff --git a/app/Http/Requests/ProfileUpdateRequest.php b/app/Http/Requests/ProfileUpdateRequest.php
deleted file mode 100644
index 327ce6f..0000000
--- a/app/Http/Requests/ProfileUpdateRequest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- */
- public function rules(): array
- {
- return [
- 'name' => ['string', 'max:255'],
- 'email' => ['email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)],
- ];
- }
-}
diff --git a/app/Http/Requests/Schedule/StoreRequest.php b/app/Http/Requests/Schedule/StoreRequest.php
deleted file mode 100644
index afb87c1..0000000
--- a/app/Http/Requests/Schedule/StoreRequest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'faculty_id' => 'required|exists:faculties,id|integer',
- 'is_fullTime' => 'required|boolean',
- 'files' => 'required|array',
- 'files.*' => ['required', File::types('pdf')]
- ];
- }
-}
diff --git a/app/Http/Requests/Student/StoreRequest.php b/app/Http/Requests/Student/StoreRequest.php
deleted file mode 100644
index 58175f9..0000000
--- a/app/Http/Requests/Student/StoreRequest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'name' => 'required|string',
- 'surname' => 'required|string',
- 'middleName' => 'nullable|string',
- 'position' => 'nullable|string',
- 'education' => 'nullable|string',
- 'vk_link' => 'nullable|string',
- 'contactEmail' => 'nullable|email',
- 'contactPhone' => 'nullable|string',
- ];
- }
-}
diff --git a/app/Http/Requests/Student/UpdateRequest.php b/app/Http/Requests/Student/UpdateRequest.php
deleted file mode 100644
index df41f18..0000000
--- a/app/Http/Requests/Student/UpdateRequest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'name' => 'required|string',
- 'surname' => 'required|string',
- 'middleName' => 'nullable|string',
- 'position' => 'nullable|string',
- 'education' => 'nullable|string',
- 'vk_link' => 'nullable|string',
- 'contactEmail' => 'nullable|email',
- 'contactPhone' => 'nullable|string',
- ];
- }
-}
diff --git a/app/Http/Requests/User/StoreRequest.php b/app/Http/Requests/User/StoreRequest.php
deleted file mode 100644
index 8a2c6d3..0000000
--- a/app/Http/Requests/User/StoreRequest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'email' => 'required|email',
- 'password' => 'required|min:6|confirmed',
- ];
- }
-}
diff --git a/app/Http/Requests/User/UpdateRequest.php b/app/Http/Requests/User/UpdateRequest.php
deleted file mode 100644
index fd20a1e..0000000
--- a/app/Http/Requests/User/UpdateRequest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- //
- ];
- }
-}
diff --git a/app/Http/Requests/UserDetail/StoreRequest.php b/app/Http/Requests/UserDetail/StoreRequest.php
deleted file mode 100644
index 8aed906..0000000
--- a/app/Http/Requests/UserDetail/StoreRequest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'user_id' => 'required|exists:users,id|integer',
- 'name' => 'required|string',
- 'surname' => 'required|string',
- 'middleName' => 'nullable|string',
- 'academicTitle' => 'nullable|string',
- 'educatorPosition' => 'nullable|string',
- 'education' => 'nullable|string',
- 'awards' => 'nullable|string',
- 'professDisciplines' => 'nullable|string',
- 'professionalRetraining' => 'nullable|string',
- 'professionalDevelopment' => 'nullable|string',
- 'workExperience' => 'nullable|integer',
- 'attendedConferences' => 'nullable|string',
- 'participationScience_projects' => 'nullable|string',
- 'publications' => 'nullable|string',
- 'trainingAids' => 'nullable|string',
- 'contactEmail' => 'nullable|email',
- 'contactPhone' => 'nullable|string',
- ];
- }
-}
diff --git a/app/Http/Requests/UserDetail/UpdateRequest.php b/app/Http/Requests/UserDetail/UpdateRequest.php
deleted file mode 100644
index 9be3e9c..0000000
--- a/app/Http/Requests/UserDetail/UpdateRequest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-|string>
- */
- public function rules(): array
- {
- return [
- 'name' => 'required|string',
- 'surname' => 'required|string',
- 'middleName' => 'nullable|string',
- 'academicTitle' => 'nullable|string',
- 'educatorPosition' => 'nullable|string',
- 'education' => 'nullable|string',
- 'awards' => 'nullable|string',
- 'professDisciplines' => 'nullable|string',
- 'professionalRetraining' => 'nullable|string',
- 'professionalDevelopment' => 'nullable|string',
- 'workExperience' => 'nullable|integer',
- 'attendedConferences' => 'nullable|string',
- 'participationScience_projects' => 'nullable|string',
- 'publications' => 'nullable|string',
- 'trainingAids' => 'nullable|string',
- 'contactEmail' => 'nullable|email',
- 'contactPhone' => 'nullable|string',
- ];
- }
-}
diff --git a/app/Http/Resources/AdditionalEducationSelectResource.php b/app/Http/Resources/AdditionalEducationSelectResource.php
deleted file mode 100644
index 08ea00a..0000000
--- a/app/Http/Resources/AdditionalEducationSelectResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ApplicantQuestionResource.php b/app/Http/Resources/ApplicantQuestionResource.php
deleted file mode 100644
index c0fb526..0000000
--- a/app/Http/Resources/ApplicantQuestionResource.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'first_name' => $this->first_name,
- 'last_name' => $this->last_name,
- 'email' => $this->email,
- 'phone' => $this->phone,
- 'text' => $this->text,
- 'created_at' => $this->created_at,
-
-
- ];
- }
-}
diff --git a/app/Http/Resources/CampaignDegreeResource.php b/app/Http/Resources/CampaignDegreeResource.php
deleted file mode 100644
index 84c4bf4..0000000
--- a/app/Http/Resources/CampaignDegreeResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'slug' => $this->slug,
- 'naprs' => DirectionStudyResource::collection($this->directionStudiesHasPrograms)
- ];
- }
-}
diff --git a/app/Http/Resources/ClientAcademicJournalListResource.php b/app/Http/Resources/ClientAcademicJournalListResource.php
deleted file mode 100644
index 043ded3..0000000
--- a/app/Http/Resources/ClientAcademicJournalListResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientDepartmentPreviewResource.php b/app/Http/Resources/ClientDepartmentPreviewResource.php
deleted file mode 100644
index 3947eab..0000000
--- a/app/Http/Resources/ClientDepartmentPreviewResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'slug' => $this->slug,
- ];
- }
-}
diff --git a/app/Http/Resources/ClientEducationalGroupResource.php b/app/Http/Resources/ClientEducationalGroupResource.php
deleted file mode 100644
index fcee93b..0000000
--- a/app/Http/Resources/ClientEducationalGroupResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'schedules' => ClientScheduleSearchResource::collection($this->schedules),
- 'faculty' => $this->faculty->title,
- ];
- }
-}
diff --git a/app/Http/Resources/ClientEventCategoryResource.php b/app/Http/Resources/ClientEventCategoryResource.php
deleted file mode 100644
index bd33b05..0000000
--- a/app/Http/Resources/ClientEventCategoryResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientFormResource.php b/app/Http/Resources/ClientFormResource.php
deleted file mode 100644
index 78bc572..0000000
--- a/app/Http/Resources/ClientFormResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientFullInfoPersonResource.php b/app/Http/Resources/ClientFullInfoPersonResource.php
deleted file mode 100644
index bbfacf4..0000000
--- a/app/Http/Resources/ClientFullInfoPersonResource.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'details' => new ClientPersonDetailResource($this->whenLoaded('userDetail')),
- 'departments_work' => ClientPersonDepartmentsWorkResource::collection($this->whenLoaded('departments_work')),
- 'departments_teach' => ClientPersonDepartmentsTeachResource::collection($this->whenLoaded('departments_teach')),
- 'divisions_works' => ClientPersonDivisionsWorkResource::collection($this->whenLoaded('divisions')),
- 'faculties_works' => ClientPersonFacultiesWorkResource::collection($this->whenLoaded('faculties'))
- ];
- }
-}
diff --git a/app/Http/Resources/ClientJournalIssueListResource.php b/app/Http/Resources/ClientJournalIssueListResource.php
deleted file mode 100644
index e465ff8..0000000
--- a/app/Http/Resources/ClientJournalIssueListResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientLibraryPostListResource.php b/app/Http/Resources/ClientLibraryPostListResource.php
deleted file mode 100644
index 11518d8..0000000
--- a/app/Http/Resources/ClientLibraryPostListResource.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- */
-
-
-
-
-
-
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'content' => $this->content,
- 'preview_text' => $this->preview_text,
- 'category' => $this->category,
- 'created_at' => $this->created_at->diffforhumans(),
- ];
- }
-}
diff --git a/app/Http/Resources/ClientMainSliderResource.php b/app/Http/Resources/ClientMainSliderResource.php
deleted file mode 100644
index 4744b1e..0000000
--- a/app/Http/Resources/ClientMainSliderResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientNavigationResource.php b/app/Http/Resources/ClientNavigationResource.php
deleted file mode 100644
index 983ae76..0000000
--- a/app/Http/Resources/ClientNavigationResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'slug' => $this->slug,
- 'subSections' => ClientSubSectionNavigateResource::collection($this->whenLoaded('subSections')->sortBy('sort')),
- ];
- }
-}
diff --git a/app/Http/Resources/ClientPageReferenceListResource.php b/app/Http/Resources/ClientPageReferenceListResource.php
deleted file mode 100644
index dcdc1fd..0000000
--- a/app/Http/Resources/ClientPageReferenceListResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientPageReferenceResource.php b/app/Http/Resources/ClientPageReferenceResource.php
deleted file mode 100644
index 85f0907..0000000
--- a/app/Http/Resources/ClientPageReferenceResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientPersonDetailResource.php b/app/Http/Resources/ClientPersonDetailResource.php
deleted file mode 100644
index 787e339..0000000
--- a/app/Http/Resources/ClientPersonDetailResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/ClientSubSectionNavigateResource.php b/app/Http/Resources/ClientSubSectionNavigateResource.php
deleted file mode 100644
index c14f692..0000000
--- a/app/Http/Resources/ClientSubSectionNavigateResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'slug' => $this->slug,
- 'pages' => ClientPageNavigateResource::collection($this->whenLoaded('pages')),
- ];
- }
-}
diff --git a/app/Http/Resources/ClientTagResource.php b/app/Http/Resources/ClientTagResource.php
deleted file mode 100644
index 4f0cee4..0000000
--- a/app/Http/Resources/ClientTagResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'slug' => $this->slug,
-
- ];
- }
-}
diff --git a/app/Http/Resources/ClientVirtualExhibitionListResource.php b/app/Http/Resources/ClientVirtualExhibitionListResource.php
deleted file mode 100644
index d2bb97b..0000000
--- a/app/Http/Resources/ClientVirtualExhibitionListResource.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'content' => $this->content,
- 'preview_text' => $this->preview_text,
- 'category' => $this->category,
- 'created_at' => $this->created_at->diffforhumans(),
- ];
- }
-}
diff --git a/app/Http/Resources/ContestResource.php b/app/Http/Resources/ContestResource.php
deleted file mode 100644
index 2cfed8f..0000000
--- a/app/Http/Resources/ContestResource.php
+++ /dev/null
@@ -1,41 +0,0 @@
- "Очная",
- 2 => "Очно-Заочная",
- 3 => "Заочная",
- ];
-
- const sourceOfFinancing = [
- 1 => "Бюджетных мест",
- 2 => "Целевая квота",
- 3 => "Особая квота",
- 4 => "Платных мест",
- ];
-
- /**
- * Transform the resource into an array.
- *
- * @return array
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'form_of_study' => self::formOfStudy[$this->form_obuch],
- 'source' => self::sourceOfFinancing[$this->source],
- 'count_places' => $this->count_places,
- 'start_date_of_dispatch_doc' => $this->start_date_of_dispatch_zajavl,
- 'end_date_of_dispatch_doc' => $this->end_date_of_dispatch_zajavl,
- 'start_date_of_dispatch_consent' => $this->start_date_of_dispatch_consent,
- 'end_date_of_dispatch_consent' => $this->end_date_of_dispatch_consent,
- ];
- }
-}
diff --git a/app/Http/Resources/DepartmentResource.php b/app/Http/Resources/DepartmentResource.php
deleted file mode 100644
index 0d2bd58..0000000
--- a/app/Http/Resources/DepartmentResource.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'content' => $this->content,
- 'faculty' => $this->faculty,
- 'slug' => $this->slug,
- 'workers' => ClientPersonDepartmentPreviewResource::collection($this->workers),
- 'teachers' => ClientPersonDepartmentTeachPreviewResource::collection($this->teachers),
- ];
- }
-}
diff --git a/app/Http/Resources/DirectionStudyResource.php b/app/Http/Resources/DirectionStudyResource.php
deleted file mode 100644
index 07c9021..0000000
--- a/app/Http/Resources/DirectionStudyResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'code' => $this->code,
- 'programs' => EducationalProgramResource::collection($this->programs),
- ];
- }
-}
diff --git a/app/Http/Resources/EducationGroupResource.php b/app/Http/Resources/EducationGroupResource.php
deleted file mode 100644
index 39dadba..0000000
--- a/app/Http/Resources/EducationGroupResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/EducationGroupSearchResource.php b/app/Http/Resources/EducationGroupSearchResource.php
deleted file mode 100644
index f6be2c4..0000000
--- a/app/Http/Resources/EducationGroupSearchResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'schedules' => ClientScheduleSearchResource::collection($this->whenLoaded('schedules')),
- ];
- }
-}
diff --git a/app/Http/Resources/EducationProgramSelectResource.php b/app/Http/Resources/EducationProgramSelectResource.php
deleted file mode 100644
index 05b2f8e..0000000
--- a/app/Http/Resources/EducationProgramSelectResource.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return parent::toArray($request);
- }
-}
diff --git a/app/Http/Resources/EventResource.php b/app/Http/Resources/EventResource.php
deleted file mode 100644
index d24e626..0000000
--- a/app/Http/Resources/EventResource.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'content' => json_decode($this->content),
- 'is_online' => $this->is_online,
- 'address' => $this->address,
- 'event_date_start' => $this->event_date_start,
- 'created_at' => $this->created_at->diffforhumans(),
- ];
- }
-}
diff --git a/app/Http/Resources/ExamResource.php b/app/Http/Resources/ExamResource.php
deleted file mode 100644
index a7a6e0f..0000000
--- a/app/Http/Resources/ExamResource.php
+++ /dev/null
@@ -1,36 +0,0 @@
-
- */
-
- const typeOfExam = [
- 1 => "ЕГЭ",
- 2 => "Вступительное испытание"
- ];
-
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'type' => self::typeOfExam[$this->type],
- 'is_creative_direction' => $this->is_creative_direction,
- 'is_profile_direction' => $this->is_profile_direction,
- 'priority' => $this->priority,
- 'min_ball' => $this->min_ball,
- 'max_ball' => $this->max_ball,
- 'form_exam' => $this->form_exam,
- 'language' => $this->language,
- ];
- }
-}
diff --git a/app/Http/Resources/GalleryResource.php b/app/Http/Resources/GalleryResource.php
deleted file mode 100644
index 1027293..0000000
--- a/app/Http/Resources/GalleryResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->post->title,
- 'images' => $this->images,
- 'created_at' => $this->created_at
- ];
- }
-}
diff --git a/app/Http/Resources/MainSectionResource.php b/app/Http/Resources/MainSectionResource.php
deleted file mode 100644
index dc7b707..0000000
--- a/app/Http/Resources/MainSectionResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'subSections' => SubSectionResource::collection($this->subSections->sortBy('sort')),
- 'created_at' => $this->created_at,
- ];
- }
-}
diff --git a/app/Http/Resources/RegisteredPageResource.php b/app/Http/Resources/RegisteredPageResource.php
deleted file mode 100644
index 44981d2..0000000
--- a/app/Http/Resources/RegisteredPageResource.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'path' => $this->path,
- 'is_visible' => $this->is_visible,
- 'code' => $this->code,
- ];
- }
-}
diff --git a/app/Http/Resources/ScheduleResource.php b/app/Http/Resources/ScheduleResource.php
deleted file mode 100644
index c1cf762..0000000
--- a/app/Http/Resources/ScheduleResource.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- ];
- }
-}
diff --git a/app/Http/Resources/StudentResource.php b/app/Http/Resources/StudentResource.php
deleted file mode 100644
index 2498e6f..0000000
--- a/app/Http/Resources/StudentResource.php
+++ /dev/null
@@ -1,31 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'surname' => $this->surname,
- 'middleName' => $this->middleName,
- 'photo' => $this->photo,
- 'position' => $this->position,
- 'education' => $this->education,
- 'vk_link' => $this->vk_link,
- 'contactEmail' => $this->contactEmail,
- 'contactPhone' => $this->contactPhone,
- 'created_at' => $this->created_at,
- ];
- }
-}
diff --git a/app/Http/Resources/SubSectionResource.php b/app/Http/Resources/SubSectionResource.php
deleted file mode 100644
index 884f89e..0000000
--- a/app/Http/Resources/SubSectionResource.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'title' => $this->title,
- 'pages' => ClientPageNavigateResource::collection($this->whenLoaded('pages')),
- 'main_section' => $this->mainSection->title ?? null,
- 'created_at' => $this->created_at->diffforhumans(),
- ];
- }
-}
diff --git a/app/Http/Resources/UserDetailResource.php b/app/Http/Resources/UserDetailResource.php
deleted file mode 100644
index d523e19..0000000
--- a/app/Http/Resources/UserDetailResource.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name ? $this->name : null,
- 'surname' => $this->surname,
- 'middleName' => $this->middleName,
- 'photo' => $this->photo,
- 'academicTitle' => $this->academicTitle,
- 'educatorPosition' => $this->educatorPosition,
- 'education' => $this->education,
- 'awards' => $this->awards,
- 'professDisciplines' => $this->professDisciplines,
- 'professionalRetraining' => $this->professionalRetraining,
- 'professionalDevelopment' => $this->professionalDevelopment,
- 'workExperience' => $this->workExperience,
- 'attendedConferences' => $this->attendedConferences,
- 'participationScienceProjects' => $this->participationScienceProjects,
- 'publications' => $this->publications,
- 'trainingAids' => $this->trainingAids,
- 'contactEmail' => $this->contactEmail,
- 'contactPhone' => $this->contactPhone,
- ];
- }
-}
diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php
deleted file mode 100644
index 8df285f..0000000
--- a/app/Http/Resources/UserResource.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- */
- public function toArray(Request $request): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'slug' => $this->slug,
- 'administrativePosition' => $this->pivot->administrativePosition,
- 'sort' => $this->pivot->sort,
- 'details' => $this->userDetail,
- ];
- }
-}
diff --git a/app/Jobs/CreateAdmissionPlan.php b/app/Jobs/CreateAdmissionPlan.php
index 7efa496..87e3db5 100644
--- a/app/Jobs/CreateAdmissionPlan.php
+++ b/app/Jobs/CreateAdmissionPlan.php
@@ -2,19 +2,15 @@
namespace App\Jobs;
-use App\Enums\LevelEducational;
-use App\Models\AdmissionCampaign;
-use App\Models\DirectionStudy;
-use App\Models\EducationalProgram;
+use App\Containers\Education\Models\AdmissionCampaign;
+use App\Containers\Education\Models\EducationalProgram;
use App\Services\Vicon\DirectionStudy\AdmissionPlanService;
-use App\Services\Vicon\EducationalProgram\EducationalProgramService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
-use Illuminate\Support\Str;
class CreateAdmissionPlan implements ShouldQueue
{
diff --git a/app/Jobs/CreateDirectionStudy.php b/app/Jobs/CreateDirectionStudy.php
index 330530e..0333960 100644
--- a/app/Jobs/CreateDirectionStudy.php
+++ b/app/Jobs/CreateDirectionStudy.php
@@ -2,8 +2,7 @@
namespace App\Jobs;
-use App\Enums\LevelEducational;
-use App\Models\DirectionStudy;
+use App\Containers\Education\Models\DirectionStudy;
use App\Services\Vicon\DirectionStudy\DirectionStudyService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
diff --git a/app/Jobs/CreateEducationalProgram.php b/app/Jobs/CreateEducationalProgram.php
index 09cd9c1..b1e8a6f 100644
--- a/app/Jobs/CreateEducationalProgram.php
+++ b/app/Jobs/CreateEducationalProgram.php
@@ -2,9 +2,8 @@
namespace App\Jobs;
-use App\Enums\LevelEducational;
-use App\Models\DirectionStudy;
-use App\Models\EducationalProgram;
+use App\Containers\Education\Models\DirectionStudy;
+use App\Containers\Education\Models\EducationalProgram;
use App\Services\Vicon\EducationalProgram\EducationalProgramService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
diff --git a/app/Jobs/CreateVkPost.php b/app/Jobs/CreateVkPost.php
index 2a9e81b..1e9c0be 100644
--- a/app/Jobs/CreateVkPost.php
+++ b/app/Jobs/CreateVkPost.php
@@ -2,12 +2,8 @@
namespace App\Jobs;
-use App\Enums\LevelEducational;
-use App\Models\DirectionStudy;
-use App\Services\Vicon\DirectionStudy\DirectionStudyService;
use App\Services\VK\VkService;
use Carbon\Carbon;
-use Filament\Notifications\Notification;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
@@ -15,15 +11,12 @@ use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
-use Illuminate\Support\Str;
-use VK\Client\VKApiClient;
+
class CreateVkPost implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
-
-
/**
* Create a new job instance.
*/
diff --git a/app/Jobs/ImportApiDataPost.php b/app/Jobs/ImportApiDataPost.php
index dd45604..949ef26 100644
--- a/app/Jobs/ImportApiDataPost.php
+++ b/app/Jobs/ImportApiDataPost.php
@@ -2,8 +2,7 @@
namespace App\Jobs;
-use App\Enums\PostStatus;
-use App\Models\Post;
+use App\Containers\Article\Models\Post;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
diff --git a/app/Jobs/ImportUsers.php b/app/Jobs/ImportUsers.php
index d2bdc61..a1df6d4 100644
--- a/app/Jobs/ImportUsers.php
+++ b/app/Jobs/ImportUsers.php
@@ -2,8 +2,7 @@
namespace App\Jobs;
-use App\Models\Post;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
diff --git a/app/Jobs/SendFormResponseMail.php b/app/Jobs/SendFormResponseMail.php
index 396997a..32b142f 100644
--- a/app/Jobs/SendFormResponseMail.php
+++ b/app/Jobs/SendFormResponseMail.php
@@ -2,8 +2,8 @@
namespace App\Jobs;
-use App\Mail\CustomFormResponseMail;
-use App\Models\CustomFormResponse;
+use App\Containers\Widget\Mails\CustomFormResponseMail;
+use App\Containers\Widget\Models\CustomFormResponse;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
diff --git a/app/Jobs/UpdateVkPost.php b/app/Jobs/UpdateVkPost.php
index 9454aad..d750d6d 100644
--- a/app/Jobs/UpdateVkPost.php
+++ b/app/Jobs/UpdateVkPost.php
@@ -2,12 +2,7 @@
namespace App\Jobs;
-use App\Enums\LevelEducational;
-use App\Models\DirectionStudy;
-use App\Services\Vicon\DirectionStudy\DirectionStudyService;
use App\Services\VK\VkService;
-use Carbon\Carbon;
-use Filament\Notifications\Notification;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
@@ -15,15 +10,11 @@ use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
-use Illuminate\Support\Str;
-use VK\Client\VKApiClient;
class UpdateVkPost implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
-
-
/**
* Create a new job instance.
*/
diff --git a/app/Livewire/AcceptInvitation.php b/app/Livewire/AcceptInvitation.php
index 36e4b2d..951bc2c 100644
--- a/app/Livewire/AcceptInvitation.php
+++ b/app/Livewire/AcceptInvitation.php
@@ -2,22 +2,19 @@
namespace App\Livewire;
-use App\Models\AcceptedInvitation;
-use App\Models\Invitation;
-use App\Models\User;
+use App\Containers\User\Models\AcceptedInvitation;
+use App\Containers\User\Models\Invitation;
+use App\Containers\User\Models\User;
use Filament\Actions\Action;
use Filament\Facades\Filament;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Form;
use Filament\Pages\Concerns\InteractsWithFormActions;
-use Filament\Pages\Dashboard;
use Filament\Pages\SimplePage;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules\Password;
-use Livewire\Component;
-use function Laravel\Prompts\password;
class AcceptInvitation extends SimplePage
{
diff --git a/app/Models/CampaignDegree.php b/app/Models/CampaignDegree.php
deleted file mode 100644
index bf111e3..0000000
--- a/app/Models/CampaignDegree.php
+++ /dev/null
@@ -1,29 +0,0 @@
-belongsTo(AdmissionCampaign::class);
- }
-
- public function directionStudies()
- {
- return $this->hasMany(DirectionStudy::class);
- }
-
- public function directionStudiesHasPrograms()
- {
- return $this->hasMany(DirectionStudy::class)->has('programs');
- }
-
-}
diff --git a/app/Models/EducationalGroup.php b/app/Models/EducationalGroup.php
deleted file mode 100644
index b7d402d..0000000
--- a/app/Models/EducationalGroup.php
+++ /dev/null
@@ -1,22 +0,0 @@
-belongsTo(Faculty::class);
- }
- public function schedules()
- {
- return $this->hasMany(Schedule::class);
- }
-}
diff --git a/app/Models/Gallery.php b/app/Models/Gallery.php
deleted file mode 100644
index b848ca8..0000000
--- a/app/Models/Gallery.php
+++ /dev/null
@@ -1,21 +0,0 @@
-belongsTo(Post::class);
- }
-
- public function images() {
- return $this->hasMany(Image::class);
- }
-}
diff --git a/app/Models/Image.php b/app/Models/Image.php
deleted file mode 100644
index ec83413..0000000
--- a/app/Models/Image.php
+++ /dev/null
@@ -1,18 +0,0 @@
-belongsTo(Gallery::class);
- }
-
-}
diff --git a/app/Models/MainSlider.php b/app/Models/MainSlider.php
deleted file mode 100644
index c4bea32..0000000
--- a/app/Models/MainSlider.php
+++ /dev/null
@@ -1,28 +0,0 @@
- 'array',
- 'image' => 'array',
- ];
-
- public function slidable()
- {
- return $this->morphTo();
- }
-
-
-}
diff --git a/app/Models/Post.php b/app/Models/Post.php
deleted file mode 100644
index bea16a3..0000000
--- a/app/Models/Post.php
+++ /dev/null
@@ -1,60 +0,0 @@
-id);
- Cache::forget('posts_' . $post->category_id . '_*'); // Очистка кеша для всех постов в категории
- });
-
- static::deleted(function ($post) {
- Cache::forget('post_' . $post->id);
- Cache::forget('posts_' . $post->category_id . '_*'); // Очистка кеша для всех постов в категории
- });
- }
-
- public function category() : BelongsTo
- {
- return $this->belongsTo(Category::class);
- }
-
- public function author() : BelongsTo
- {
- return $this->belongsTo(User::class, 'user_id');
- }
-
- public function seo(): MorphOne
- {
- return $this->morphOne(Seo::class, 'seoable');
- }
-
- public function slide(): MorphOne
- {
- return $this->morphOne(Slide::class, 'slidable');
- }
-
- protected $casts = [
- 'content' => 'array',
- 'authors' => 'array',
- 'status' => PostStatus::class,
- 'images' => 'array'
- ];
-}
diff --git a/app/Models/ProgramContest.php b/app/Models/ProgramContest.php
deleted file mode 100644
index a21d3d3..0000000
--- a/app/Models/ProgramContest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-belongsTo(EducationalProgram::class, 'educational_program_id');
- }
-}
diff --git a/app/Models/ProgramExam.php b/app/Models/ProgramExam.php
deleted file mode 100644
index 06d0f54..0000000
--- a/app/Models/ProgramExam.php
+++ /dev/null
@@ -1,18 +0,0 @@
-belongsTo(EducationalProgram::class);
- }
-}
diff --git a/app/Models/SubSchedule.php b/app/Models/SubSchedule.php
deleted file mode 100644
index cd38c0b..0000000
--- a/app/Models/SubSchedule.php
+++ /dev/null
@@ -1,15 +0,0 @@
-cacheService = new MainSliderCacheService();
- }
- /**
- * Handle the MainSlider "created" event.
- */
- public function created(MainSlider $mainSlider): void
- {
-
-
- // Устанавливаем сортировку для новой записи
- $mainSlider->sort = 1;
- $mainSlider->save();
-
- // Обновляем сортировку для всех остальных записей
- $this->updateSortOrder($mainSlider->id);
-
- $this->cacheService->clearAllCacheByModel();
- }
-
- /**
- * Handle the MainSlider "updated" event.
- */
- public function updated(MainSlider $mainSlider): void
- {
- $this->cacheService->clearAllCacheByModel();
- }
-
- /**
- * Handle the MainSlider "deleted" event.
- */
- public function deleted(MainSlider $mainSlider): void
- {
- $this->cacheService->clearAllCacheByModel();
- }
-
- /**
- * Handle the MainSlider "restored" event.
- */
- public function restored(MainSlider $mainSlider): void
- {
- //
- }
-
- /**
- * Handle the MainSlider "force deleted" event.
- */
- public function forceDeleted(MainSlider $mainSlider): void
- {
- //
- }
-
- protected function updateSortOrder($id): void
- {
- // Получаем все записи, отсортированные по текущему значению sort
- $slides = MainSlider::orderBy('sort', 'asc')->where('id', '!=', $id)->get();
-
- if ($slides->count() > 0) {
- foreach ($slides as $index => $slide) {
- $slide->sort = $index + 2; // Начинаем с 1
- $slide->save();
- }
- }
- }
-}
diff --git a/app/Observers/PageObserver.php b/app/Observers/PageObserver.php
index b29aefe..37f966b 100644
--- a/app/Observers/PageObserver.php
+++ b/app/Observers/PageObserver.php
@@ -2,7 +2,7 @@
namespace App\Observers;
-use App\Models\Page;
+use App\Containers\AppStructure\Models\Page;
use App\Services\App\Cache\PageCacheService;
use Illuminate\Support\Facades\Cache;
diff --git a/app/Observers/PageReferenceListObserver.php b/app/Observers/PageReferenceListObserver.php
index 4527f06..bc804d9 100644
--- a/app/Observers/PageReferenceListObserver.php
+++ b/app/Observers/PageReferenceListObserver.php
@@ -2,7 +2,7 @@
namespace App\Observers;
-use App\Models\PageReferenceList;
+use App\Containers\Widget\Models\PageReferenceList;
use App\Services\App\Cache\PageReferenceListCacheService;
class PageReferenceListObserver
diff --git a/app/Observers/PostObserver.php b/app/Observers/PostObserver.php
index 2c9eda3..05beb9a 100644
--- a/app/Observers/PostObserver.php
+++ b/app/Observers/PostObserver.php
@@ -2,11 +2,8 @@
namespace App\Observers;
-use App\Models\Post;
+use App\Containers\Article\Models\Post;
use App\Services\App\Cache\PostCacheService;
-use Filament\Notifications\Notification;
-use Illuminate\Support\Facades\Cache;
-use Illuminate\Support\Facades\Redirect;
class PostObserver
{
diff --git a/app/Observers/ScheduleObserver.php b/app/Observers/ScheduleObserver.php
index e279498..5a24709 100644
--- a/app/Observers/ScheduleObserver.php
+++ b/app/Observers/ScheduleObserver.php
@@ -2,7 +2,7 @@
namespace App\Observers;
-use App\Models\Schedule;
+use App\Containers\Schedule\Models\Schedule;
use App\Services\App\Cache\ScheduleCacheService;
class ScheduleObserver
diff --git a/app/Observers/SlideObserver.php b/app/Observers/SlideObserver.php
index 256dea8..9cc6d3e 100644
--- a/app/Observers/SlideObserver.php
+++ b/app/Observers/SlideObserver.php
@@ -2,9 +2,7 @@
namespace App\Observers;
-use App\Models\MainSlider;
-use App\Models\Slide;
-use App\Services\App\Cache\MainSliderCacheService;
+use App\Containers\Widget\Models\Slide;
use App\Services\App\Cache\SliderCacheService;
class SlideObserver
diff --git a/app/Observers/SubSectionObserver.php b/app/Observers/SubSectionObserver.php
index 9f8115a..c6a1a85 100644
--- a/app/Observers/SubSectionObserver.php
+++ b/app/Observers/SubSectionObserver.php
@@ -2,7 +2,7 @@
namespace App\Observers;
-use App\Models\SubSection;
+use App\Containers\AppStructure\Models\SubSection;
use Illuminate\Support\Facades\Cache;
class SubSectionObserver
diff --git a/app/Observers/TagObserver.php b/app/Observers/TagObserver.php
index 9ff4ce8..5e6278f 100644
--- a/app/Observers/TagObserver.php
+++ b/app/Observers/TagObserver.php
@@ -2,7 +2,7 @@
namespace App\Observers;
-use App\Models\Tag;
+use App\Containers\Article\Models\Tag;
use App\Services\App\Cache\TagCacheService;
class TagObserver
diff --git a/app/Observers/UserObserver.php b/app/Observers/UserObserver.php
index 0f564a4..8cc1c80 100644
--- a/app/Observers/UserObserver.php
+++ b/app/Observers/UserObserver.php
@@ -2,7 +2,7 @@
namespace App\Observers;
-use App\Models\User;
+use App\Containers\User\Models\User;
use App\Services\App\Cache\UserCacheService;
class UserObserver
diff --git a/app/Policies/MainSliderPolicy.php b/app/Policies/MainSliderPolicy.php
deleted file mode 100644
index 774c81b..0000000
--- a/app/Policies/MainSliderPolicy.php
+++ /dev/null
@@ -1,108 +0,0 @@
-can('view_any_main::slider');
- }
-
- /**
- * Determine whether the user can view the model.
- */
- public function view(User $user, MainSlider $mainSlider): bool
- {
- return $user->can('view_main::slider');
- }
-
- /**
- * Determine whether the user can create models.
- */
- public function create(User $user): bool
- {
- return $user->can('create_main::slider');
- }
-
- /**
- * Determine whether the user can update the model.
- */
- public function update(User $user, MainSlider $mainSlider): bool
- {
- return $user->can('update_main::slider');
- }
-
- /**
- * Determine whether the user can delete the model.
- */
- public function delete(User $user, MainSlider $mainSlider): bool
- {
- return $user->can('delete_main::slider');
- }
-
- /**
- * Determine whether the user can bulk delete.
- */
- public function deleteAny(User $user): bool
- {
- return $user->can('delete_any_main::slider');
- }
-
- /**
- * Determine whether the user can permanently delete.
- */
- public function forceDelete(User $user, MainSlider $mainSlider): bool
- {
- return $user->can('force_delete_main::slider');
- }
-
- /**
- * Determine whether the user can permanently bulk delete.
- */
- public function forceDeleteAny(User $user): bool
- {
- return $user->can('force_delete_any_main::slider');
- }
-
- /**
- * Determine whether the user can restore.
- */
- public function restore(User $user, MainSlider $mainSlider): bool
- {
- return $user->can('restore_main::slider');
- }
-
- /**
- * Determine whether the user can bulk restore.
- */
- public function restoreAny(User $user): bool
- {
- return $user->can('restore_any_main::slider');
- }
-
- /**
- * Determine whether the user can replicate.
- */
- public function replicate(User $user, MainSlider $mainSlider): bool
- {
- return $user->can('replicate_main::slider');
- }
-
- /**
- * Determine whether the user can reorder.
- */
- public function reorder(User $user): bool
- {
- return $user->can('reorder_main::slider');
- }
-}
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index f85d90e..37f0d4d 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -2,39 +2,35 @@
namespace App\Providers;
-use App\Models\AcademicJournal;
-use App\Models\AdditionalEducation;
-use App\Models\AdmissionCampaign;
-use App\Models\AdmissionPlan;
-use App\Models\ContactWidget;
-use App\Models\Department;
-use App\Models\DirectionStudy;
-use App\Models\Division;
-use App\Models\EducationalProgram;
-use App\Models\Event;
-use App\Models\Faculty;
-use App\Models\MainSection;
-use App\Models\MainSlider;
-use App\Models\Page;
-use App\Models\PageReferenceList;
-use App\Models\Post;
-use App\Models\Schedule;
-use App\Models\Slide;
-use App\Models\SubSection;
-use App\Models\User;
+use App\Containers\AdditionalEducation\Models\AdditionalEducation;
+use App\Containers\AppStructure\Models\MainSection;
+use App\Containers\AppStructure\Models\Page;
+use App\Containers\AppStructure\Models\SubSection;
+use App\Containers\Article\Models\Post;
+use App\Containers\Education\Models\AdmissionCampaign;
+use App\Containers\Education\Models\AdmissionPlan;
+use App\Containers\Education\Models\DirectionStudy;
+use App\Containers\Education\Models\EducationalProgram;
+use App\Containers\Event\Models\Event;
+use App\Containers\InstituteStructure\Models\Department;
+use App\Containers\InstituteStructure\Models\Division;
+use App\Containers\InstituteStructure\Models\Faculty;
+use App\Containers\Schedule\Models\Schedule;
+use App\Containers\Science\Models\AcademicJournal;
+use App\Containers\User\Models\User;
+use App\Containers\Widget\Models\ContactWidget;
+use App\Containers\Widget\Models\PageReferenceList;
+use App\Containers\Widget\Models\Slide;
use App\Observers\AcademicJournalObserver;
use App\Observers\AdditionalEducationObserver;
use App\Observers\AdmissionCampaignObserver;
-use App\Observers\AdmissionPlanObserver;
use App\Observers\ContactWidgetObserver;
use App\Observers\DepartmentObserver;
-use App\Observers\DirectionStudyObserver;
use App\Observers\DivisionObserver;
use App\Observers\EducationalProgramObserver;
use App\Observers\EventObserver;
use App\Observers\FacultyObserver;
use App\Observers\MainSectionObserver;
-use App\Observers\MainSliderObserver;
use App\Observers\PageObserver;
use App\Observers\PageReferenceListObserver;
use App\Observers\PostObserver;
@@ -42,8 +38,9 @@ use App\Observers\ScheduleObserver;
use App\Observers\SlideObserver;
use App\Observers\SubSectionObserver;
use App\Observers\UserObserver;
-use App\Services\App\Cache\MainSliderCacheService;
use App\Services\App\Cache\SliderCacheService;
+use App\Ship\Contracts\SeoServiceInterface;
+use App\Ship\Services\SeoPageService;
use Carbon\Carbon;
use Filament\Facades\Filament;
use Filament\Support\Facades\FilamentView;
@@ -61,7 +58,7 @@ class AppServiceProvider extends ServiceProvider
*/
public function register(): void
{
- //
+ $this->app->bind(SeoServiceInterface::class, SeoPageService::class);
}
/**
diff --git a/app/Providers/ByteConverterServiceProvider.php b/app/Providers/ByteConverterServiceProvider.php
index 7e1859b..8c9286a 100644
--- a/app/Providers/ByteConverterServiceProvider.php
+++ b/app/Providers/ByteConverterServiceProvider.php
@@ -2,7 +2,7 @@
namespace App\Providers;
-use App\Helpers\ByteConverter;
+use App\Ship\Helpers\ByteConverter;
use Illuminate\Support\ServiceProvider;
class ByteConverterServiceProvider extends ServiceProvider
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index eeb249a..5589147 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -2,12 +2,11 @@
namespace App\Providers;
-use App\Models\CustomFormResponse;
+use App\Containers\Widget\Models\CustomFormResponse;
use App\Observers\CustomFormResponseObserver;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
-use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php
index 2d64b5f..d0913f6 100644
--- a/app/Providers/Filament/AdminPanelProvider.php
+++ b/app/Providers/Filament/AdminPanelProvider.php
@@ -62,7 +62,7 @@ class AdminPanelProvider extends PanelProvider
->plugins([
\BezhanSalleh\FilamentShield\FilamentShieldPlugin::make(),
FilamentSpatieLaravelBackupPlugin::make()->usingPage(Backups::class),
- CheckpointPlugin::make(),
+// CheckpointPlugin::make(),
]);
}
}
diff --git a/app/Services/App/Breadcrumb/BreadcrumbService.php b/app/Services/App/Breadcrumb/BreadcrumbService.php
index 12379cc..f94152b 100644
--- a/app/Services/App/Breadcrumb/BreadcrumbService.php
+++ b/app/Services/App/Breadcrumb/BreadcrumbService.php
@@ -2,10 +2,10 @@
namespace App\Services\App\Breadcrumb;
-use App\Http\Resources\ClientBreadcrumbPage;
-use App\Http\Resources\ClientBreadcrumbSection;
-use App\Http\Resources\ClientBreadcrumbSubSection;
-use App\Models\Page;
+use App\Containers\AppStructure\Models\Page;
+use App\Ship\Resources\Breadcrumb\ClientBreadcrumbPage;
+use App\Ship\Resources\Breadcrumb\ClientBreadcrumbSection;
+use App\Ship\Resources\Breadcrumb\ClientBreadcrumbSubSection;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
diff --git a/app/Services/App/Cache/AcademicJournalCacheService.php b/app/Services/App/Cache/AcademicJournalCacheService.php
index c6037bc..538d6ac 100644
--- a/app/Services/App/Cache/AcademicJournalCacheService.php
+++ b/app/Services/App/Cache/AcademicJournalCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\AcademicJournal;
+use App\Containers\Science\Models\AcademicJournal;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class AcademicJournalCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/AdditionalEducationCacheService.php b/app/Services/App/Cache/AdditionalEducationCacheService.php
index 00efabe..71a7a43 100644
--- a/app/Services/App/Cache/AdditionalEducationCacheService.php
+++ b/app/Services/App/Cache/AdditionalEducationCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\AdditionalEducation;
+use App\Containers\AdditionalEducation\Models\AdditionalEducation;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class AdditionalEducationCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/AdmissionCampaignCacheService.php b/app/Services/App/Cache/AdmissionCampaignCacheService.php
index 13e4063..c17cc8f 100644
--- a/app/Services/App/Cache/AdmissionCampaignCacheService.php
+++ b/app/Services/App/Cache/AdmissionCampaignCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class AdmissionCampaignCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/CategoryCacheService.php b/app/Services/App/Cache/CategoryCacheService.php
index c3ae770..21324f3 100644
--- a/app/Services/App/Cache/CategoryCacheService.php
+++ b/app/Services/App/Cache/CategoryCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class CategoryCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/ContactWidgetCacheService.php b/app/Services/App/Cache/ContactWidgetCacheService.php
index 422d17a..43cc2bc 100644
--- a/app/Services/App/Cache/ContactWidgetCacheService.php
+++ b/app/Services/App/Cache/ContactWidgetCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\ContactWidget;
+use App\Containers\Widget\Models\ContactWidget;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class ContactWidgetCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/DepartmentCacheService.php b/app/Services/App/Cache/DepartmentCacheService.php
index 3bd641d..65e1f12 100644
--- a/app/Services/App/Cache/DepartmentCacheService.php
+++ b/app/Services/App/Cache/DepartmentCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\Department;
+use App\Containers\InstituteStructure\Models\Department;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class DepartmentCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/DivisionCacheService.php b/app/Services/App/Cache/DivisionCacheService.php
index 3f57661..20b0b04 100644
--- a/app/Services/App/Cache/DivisionCacheService.php
+++ b/app/Services/App/Cache/DivisionCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Models\Division;
+use App\Containers\InstituteStructure\Models\Division;
use Illuminate\Support\Facades\Cache;
class DivisionCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/EducationalProgramCacheService.php b/app/Services/App/Cache/EducationalProgramCacheService.php
index 79590d8..ad5bfd0 100644
--- a/app/Services/App/Cache/EducationalProgramCacheService.php
+++ b/app/Services/App/Cache/EducationalProgramCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\EducationalProgram;
+use App\Containers\Education\Models\EducationalProgram;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class EducationalProgramCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/EventCacheService.php b/app/Services/App/Cache/EventCacheService.php
index 319a106..d048d26 100644
--- a/app/Services/App/Cache/EventCacheService.php
+++ b/app/Services/App/Cache/EventCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\Event;
+use App\Ship\Enums\CacheKeys;
+use App\Containers\Event\Models\Event;
use Illuminate\Support\Facades\Cache;
class EventCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/FacultyCacheService.php b/app/Services/App/Cache/FacultyCacheService.php
index bd0011b..bf02ed2 100644
--- a/app/Services/App/Cache/FacultyCacheService.php
+++ b/app/Services/App/Cache/FacultyCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\Faculty;
+use App\Ship\Enums\CacheKeys;
+use App\Containers\InstituteStructure\Models\Faculty;
use Illuminate\Support\Facades\Cache;
class FacultyCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/MainSectionCacheService.php b/app/Services/App/Cache/MainSectionCacheService.php
index ec74375..9ff473b 100644
--- a/app/Services/App/Cache/MainSectionCacheService.php
+++ b/app/Services/App/Cache/MainSectionCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class MainSectionCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/PageCacheService.php b/app/Services/App/Cache/PageCacheService.php
index b2c0936..f4b6172 100644
--- a/app/Services/App/Cache/PageCacheService.php
+++ b/app/Services/App/Cache/PageCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\Page;
+use App\Ship\Enums\CacheKeys;
+use App\Containers\AppStructure\Models\Page;
use Illuminate\Support\Facades\Cache;
class PageCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/PageReferenceListCacheService.php b/app/Services/App/Cache/PageReferenceListCacheService.php
index b58a0cc..cef486a 100644
--- a/app/Services/App/Cache/PageReferenceListCacheService.php
+++ b/app/Services/App/Cache/PageReferenceListCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\PageReferenceList;
+use App\Containers\Widget\Models\PageReferenceList;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class PageReferenceListCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/PostCacheService.php b/app/Services/App/Cache/PostCacheService.php
index 539906a..c1eaa61 100644
--- a/app/Services/App/Cache/PostCacheService.php
+++ b/app/Services/App/Cache/PostCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class PostCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/ScheduleCacheService.php b/app/Services/App/Cache/ScheduleCacheService.php
index 10dc0ca..238e305 100644
--- a/app/Services/App/Cache/ScheduleCacheService.php
+++ b/app/Services/App/Cache/ScheduleCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\Schedule;
+use App\Containers\Schedule\Models\Schedule;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class ScheduleCacheService extends AbstractCacheService implements CacheInterface
@@ -34,11 +34,6 @@ class ScheduleCacheService extends AbstractCacheService implements CacheInterfac
}
- private function forgetScheduleCache(int $id): void
- {
- Cache::forget($this->getCacheKey($id));
- }
-
private function clearAllSchedulesCache(): void
{
Cache::forget(CacheKeys::SCHEDULES_PREFIX->value);
diff --git a/app/Services/App/Cache/SliderCacheService.php b/app/Services/App/Cache/SliderCacheService.php
index 6200a0a..a391a82 100644
--- a/app/Services/App/Cache/SliderCacheService.php
+++ b/app/Services/App/Cache/SliderCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class SliderCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/SubSectionCacheService.php b/app/Services/App/Cache/SubSectionCacheService.php
index 3a2fd28..1bca198 100644
--- a/app/Services/App/Cache/SubSectionCacheService.php
+++ b/app/Services/App/Cache/SubSectionCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class SubSectionCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/TagCacheService.php b/app/Services/App/Cache/TagCacheService.php
index 0fc97c1..a41e28e 100644
--- a/app/Services/App/Cache/TagCacheService.php
+++ b/app/Services/App/Cache/TagCacheService.php
@@ -2,7 +2,7 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Support\Facades\Cache;
class TagCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Cache/UserCacheService.php b/app/Services/App/Cache/UserCacheService.php
index ae725ae..c5c36f0 100644
--- a/app/Services/App/Cache/UserCacheService.php
+++ b/app/Services/App/Cache/UserCacheService.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Cache;
-use App\Enums\CacheKeys;
-use App\Models\User;
+use App\Ship\Enums\CacheKeys;
+use App\Containers\User\Models\User;
use Illuminate\Support\Facades\Cache;
class UserCacheService extends AbstractCacheService implements CacheInterface
diff --git a/app/Services/App/Seo/SeoPageProvider.php b/app/Services/App/Seo/SeoPageProvider.php
index da3c44b..d9f02b4 100644
--- a/app/Services/App/Seo/SeoPageProvider.php
+++ b/app/Services/App/Seo/SeoPageProvider.php
@@ -2,8 +2,8 @@
namespace App\Services\App\Seo;
-use App\Enums\CacheKeys;
-use App\Models\Page;
+use App\Containers\AppStructure\Models\Page;
+use App\Ship\Enums\CacheKeys;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
diff --git a/app/Services/Filament/Domain/Posts/PostDataProcessor.php b/app/Services/Filament/Domain/Posts/PostDataProcessor.php
index 425d82f..76b9618 100644
--- a/app/Services/Filament/Domain/Posts/PostDataProcessor.php
+++ b/app/Services/Filament/Domain/Posts/PostDataProcessor.php
@@ -2,7 +2,7 @@
namespace App\Services\Filament\Domain\Posts;
-use App\Enums\PostStatus;
+use App\Containers\Article\Enums\PostStatus;
use Illuminate\Support\Carbon;
use Illuminate\Support\Str;
@@ -14,7 +14,7 @@ class PostDataProcessor
* @param array $data
* @return array
*/
- public function process(array $data, $operation): array
+ public function processCreate(array $data): array
{
// Удаляем ненужные данные
unset($data['publication']);
@@ -22,15 +22,15 @@ class PostDataProcessor
// Устанавливаем текст для предпросмотра
$data['preview_text'] = $this->setPreviewText($data);
+ if (($data['status'] === PostStatus::PUBLISHED->value)) {
+ $data['publish_at'] = $this->setPublishDateTime();
+ }
+
// Устанавливаем время публикации
if ($data['publish_setting']['publish_after'] === true) {
$data['publish_at'] = $this->setPublishDateTimeInFuture($data['publish_setting']);
}
- if (($data['status'] === PostStatus::PUBLISHED->value || PostStatus::PUBLISHED) && $operation === 'create') {
- $data['publish_at'] = $this->setPublishDateTime();
- }
-
unset($data['publish_setting']);
// Генерируем данные для поиска
@@ -46,6 +46,36 @@ class PostDataProcessor
return $data;
}
+ public function processUpdate(array $data): array
+ {
+ // Удаляем ненужные данные
+ unset($data['publication']);
+
+ // Устанавливаем текст для предпросмотра
+ $data['preview_text'] = $this->setPreviewText($data);
+
+
+ if (!$data['publish_at'] && ($data['status'] === PostStatus::PUBLISHED->value)) {
+ $data['publish_at'] = $this->setPublishDateTime();
+ }
+
+ // Устанавливаем время публикации
+ if ((isset($data['publish_setting']['publish_after']) && $data['publish_setting']['publish_after']) ||
+ (isset($data['publish_setting']['publish_at']) && $data['publish_setting']['publish_at'])) {
+ $data['publish_at'] = $this->setPublishDateTimeInFuture($data['publish_setting']);
+ }
+
+ unset($data['publish_setting']);
+
+ // Генерируем данные для поиска
+ $data['search_data'] = $this->generateSearchData($data['content']);
+
+ // Рассчитываем время чтения
+ $data['reading_time'] = $this->calculateReadingTime($data['search_data']);
+
+ return $data;
+ }
+
/**
* Устанавливает текст для предпросмотра.
*
@@ -77,7 +107,7 @@ class PostDataProcessor
private function setPublishDateTimeInFuture(array $publishSetting): ?Carbon
{
- if ($publishSetting['publish_after'] === true) {
+ if (!empty($publishSetting['publish_at'])) {
return Carbon::parse($publishSetting['publish_at']);
}
diff --git a/app/Services/Filament/Domain/Posts/PostNotificationService.php b/app/Services/Filament/Domain/Posts/PostNotificationService.php
index 4b3dfe8..f72f09b 100644
--- a/app/Services/Filament/Domain/Posts/PostNotificationService.php
+++ b/app/Services/Filament/Domain/Posts/PostNotificationService.php
@@ -2,10 +2,10 @@
namespace App\Services\Filament\Domain\Posts;
+use App\Containers\Article\Models\Post;
+use App\Containers\User\Models\Role;
+use App\Containers\User\Models\User;
use App\Filament\Resources\PostResource;
-use App\Models\Post;
-use App\Models\Role;
-use App\Models\User;
use Filament\Notifications\Actions\Action;
use Filament\Notifications\Notification;
diff --git a/app/Services/Filament/Domain/Posts/PostSliderService.php b/app/Services/Filament/Domain/Posts/PostSliderService.php
index 2f48438..6e3bd3f 100644
--- a/app/Services/Filament/Domain/Posts/PostSliderService.php
+++ b/app/Services/Filament/Domain/Posts/PostSliderService.php
@@ -2,10 +2,9 @@
namespace App\Services\Filament\Domain\Posts;
+use App\Containers\Widget\Models\Slide;
use App\Dto\MainSliderDTO;
-use App\Models\MainSlider;
-use App\Models\Post;
-use App\Models\Slide;
+use App\Containers\Article\Models\Post;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Log;
diff --git a/app/Services/Filament/Domain/Posts/VkPostPublisher.php b/app/Services/Filament/Domain/Posts/VkPostPublisher.php
index 5ef5ffb..452f15e 100644
--- a/app/Services/Filament/Domain/Posts/VkPostPublisher.php
+++ b/app/Services/Filament/Domain/Posts/VkPostPublisher.php
@@ -2,9 +2,10 @@
namespace App\Services\Filament\Domain\Posts;
-use App\Enums\PostStatus;
+use App\Containers\Article\Enums\PostStatus;
+use App\Containers\Article\Models\Post;
use App\Jobs\CreateVkPost;
-use App\Models\Post;
+use App\Jobs\UpdateVkPost;
use Illuminate\Support\Facades\Storage;
class VkPostPublisher
@@ -18,18 +19,31 @@ class VkPostPublisher
*/
public function publish(array $settings, Post $post): void
{
- if ($post->status === PostStatus::PUBLISHED) {
+ if ($post->status->value === PostStatus::PUBLISHED->value) {
if ($settings['vk']) {
$text = $this->generateContentForVk($post->content);
$images = $this->generateImageLinksForVk($post->images);
$publishDate = $post->publish_at > now() ? $post->publish_at->timestamp : null;
-
dispatch(new CreateVkPost($post->title, $text, $images, $post->id, $publishDate));
}
}
}
+ public function update(array $settings, Post $post): void
+ {
+ if ($post->status->value === PostStatus::PUBLISHED->value) {
+ if ($settings['vk']) {
+
+ $text = $this->generateContentForVk($post->content);
+ $images = $this->generateImageLinksForVk($post->images);
+ $publishDate = $post->publish_at > now() ? $post->publish_at->timestamp : null;
+
+ dispatch(new UpdateVkPost($post->title, $text, $images, $post->id, $publishDate));
+ }
+ }
+ }
+
/**
* Генерирует текстовый контент для ВКонтакте.
*
diff --git a/app/Services/Filament/Traits/SeoGenerate.php b/app/Services/Filament/Traits/SeoGenerate.php
index c264de2..a2b40f8 100644
--- a/app/Services/Filament/Traits/SeoGenerate.php
+++ b/app/Services/Filament/Traits/SeoGenerate.php
@@ -2,8 +2,8 @@
namespace App\Services\Filament\Traits;
-use App\Services\App\Seo\SeoDescriptionInterface;
use App\Services\Filament\Domain\Seo\SeoGeneratorService;
+use App\Ship\Contracts\SeoDescriptionInterface;
trait SeoGenerate
{
diff --git a/app/Ship/Abstracts/Broadcasting/Channel.php b/app/Ship/Abstracts/Broadcasting/Channel.php
new file mode 100644
index 0000000..36874d1
--- /dev/null
+++ b/app/Ship/Abstracts/Broadcasting/Channel.php
@@ -0,0 +1,10 @@
+filters[$key])) {
+ throw new RuntimeException("Фильтр с ключом '$key' уже существует.");
+ }
+
+ $this->filters[$key] = [
+ 'type' => $type,
+ 'value' => $value,
+ 'param' => $param,
+ 'content' => $content,
+ ];
+
+ return $this;
+ }
+
+ /**
+ * Возвращает собранные фильтры
+ *
+ * @return array
+ */
+ public function get(): array
+ {
+ return $this->filters;
+ }
+
+ public function reset(): self
+ {
+ $this->filters = [];
+ return $this;
+ }
+}
\ No newline at end of file
diff --git a/app/Ship/Contracts/SeoDescriptionInterface.php b/app/Ship/Contracts/SeoDescriptionInterface.php
new file mode 100644
index 0000000..87b9fe7
--- /dev/null
+++ b/app/Ship/Contracts/SeoDescriptionInterface.php
@@ -0,0 +1,8 @@
+, \Psr\Log\LogLevel::*>
+ */
+ protected $levels = [
+ //
+ ];
+
+ /**
+ * A list of the exception types that are not reported.
+ *
+ * @var array>
+ */
+ protected $dontReport = [
+ //
+ ];
+
+ /**
+ * A list of the inputs that are never flashed to the session on validation exceptions.
+ *
+ * @var array
+ */
+ protected $dontFlash = [
+ 'current_password',
+ 'password',
+ 'password_confirmation',
+ ];
+
+ /**
+ * Register the exception handling callbacks for the application.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ $this->reportable(function (Throwable $e) {
+ //
+ });
+ }
+}
diff --git a/app/Helpers/ByteConverter.php b/app/Ship/Helpers/ByteConverter.php
similarity index 91%
rename from app/Helpers/ByteConverter.php
rename to app/Ship/Helpers/ByteConverter.php
index 05d5294..fffb2ff 100644
--- a/app/Helpers/ByteConverter.php
+++ b/app/Ship/Helpers/ByteConverter.php
@@ -1,6 +1,6 @@
command('sitemap:generate')->dailyAt('03:00');
+ }
+
+ /**
+ * Register the commands for the application.
+ *
+ * @return void
+ */
+ protected function commands()
+ {
+ $this->loadCommandsForConsoleKernel();
+ $this->loadRoutesForConsoleKernel();
+ }
+}
diff --git a/app/Ship/Kernels/HttpKernel.php b/app/Ship/Kernels/HttpKernel.php
new file mode 100644
index 0000000..4ef0b3b
--- /dev/null
+++ b/app/Ship/Kernels/HttpKernel.php
@@ -0,0 +1,90 @@
+
+ */
+ protected $middleware = [
+ TransformRequestMiddleware::class,
+ // \App\Ship\Middleware\TrustHosts::class,
+ \App\Ship\Middleware\TrustProxies::class,
+ \Illuminate\Http\Middleware\HandleCors::class,
+ \App\Ship\Middleware\PreventRequestsDuringMaintenance::class,
+ \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
+ \App\Ship\Middleware\TrimStrings::class,
+ \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+ ];
+
+ /**
+ * The application's route middleware groups.
+ *
+ * @var array>
+ */
+ protected $middlewareGroups = [
+ 'web' => [
+ \App\Ship\Middleware\EncryptCookies::class,
+ \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
+ \Illuminate\Session\Middleware\StartSession::class,
+ \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+ \App\Ship\Middleware\VerifyCsrfToken::class,
+ \App\Http\Middleware\HandleInertiaRequests::class,
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ ],
+
+ 'api' => [
+ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
+ 'throttle:api',
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ ],
+ ];
+
+ /**
+ * The application's route middleware.
+ *
+ * These middleware may be assigned to groups or used individually.
+ *
+ * @var array
+ */
+ protected $routeMiddleware = [
+ 'auth' => \App\Ship\Middleware\Authenticate::class,
+ 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
+ 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
+ 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
+ 'can' => \Illuminate\Auth\Middleware\Authorize::class,
+ 'guest' => \App\Ship\Middleware\RedirectIfAuthenticated::class,
+ 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
+ 'signed' => \App\Ship\Middleware\ValidateSignature::class,
+ 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+ 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
+ 'role' => RoleMiddleware::class,
+ 'permission' => PermissionMiddleware::class,
+ 'role_or_permission' => RoleOrPermissionMiddleware::class,
+ 'access-check' => AccessCheck::class,
+ 'rate.limited.counter' => RateLimitCounterMiddleware::class,
+ 'rate.limited.check' => RateLimitCheckMiddleware::class,
+ 'ensure.browser' => InternalRequestOnly::class,
+ 'superadmin' => EnsureUserIsSuperadmin::class,
+ 'limit.post' => LimitPost::class,
+ 'form.time.period' => FormTimePeriodMiddleware::class,
+ ];
+}
diff --git a/app/Ship/Mails/Mailables/Content.php b/app/Ship/Mails/Mailables/Content.php
new file mode 100644
index 0000000..7b7aa6b
--- /dev/null
+++ b/app/Ship/Mails/Mailables/Content.php
@@ -0,0 +1,10 @@
+route()->uri)
+ ->where('is_registered', '=', true)
+ ->first();
+
+ // Если запись не найдена, пропускаем запрос
+ if (!$registeredRoute) {
+ return $next($request);
+ }
+
+ // Если код не 200, возвращаем соответствующий код ошибки
+ if ($registeredRoute->code != 200) {
+ abort($registeredRoute->code);
+ }
+
+ $request->attributes->set('settings_page', $registeredRoute->settings);
+ // Если все проверки пройдены, продолжаем выполнение запроса
+ return $next($request);
+ }
+}
\ No newline at end of file
diff --git a/app/Ship/Middleware/Authenticate.php b/app/Ship/Middleware/Authenticate.php
new file mode 100644
index 0000000..6af327e
--- /dev/null
+++ b/app/Ship/Middleware/Authenticate.php
@@ -0,0 +1,21 @@
+expectsJson()) {
+ return '/';
+ }
+ }
+}
diff --git a/app/Ship/Middleware/EncryptCookies.php b/app/Ship/Middleware/EncryptCookies.php
new file mode 100644
index 0000000..5feb4d6
--- /dev/null
+++ b/app/Ship/Middleware/EncryptCookies.php
@@ -0,0 +1,17 @@
+
+ */
+ protected $except = [
+ //
+ ];
+}
diff --git a/app/Ship/Middleware/EnsureUserIsSuperadmin.php b/app/Ship/Middleware/EnsureUserIsSuperadmin.php
new file mode 100644
index 0000000..c7f90e6
--- /dev/null
+++ b/app/Ship/Middleware/EnsureUserIsSuperadmin.php
@@ -0,0 +1,28 @@
+hasRole('super_admin')) {
+ return Inertia::render('Error', ['status' => 403])
+ ->toResponse($request)
+ ->setStatusCode(403);
+ }
+
+ return $next($request);
+ }
+}
diff --git a/app/Ship/Middleware/FormTimePeriodMiddleware.php b/app/Ship/Middleware/FormTimePeriodMiddleware.php
new file mode 100644
index 0000000..be7ced2
--- /dev/null
+++ b/app/Ship/Middleware/FormTimePeriodMiddleware.php
@@ -0,0 +1,48 @@
+find($request->route('id'));
+
+ if (!$form) {
+ abort(Response::HTTP_NOT_FOUND, 'Form not found');
+ }
+
+
+ if (!isset($form->settings['period'])) {
+ return $next($request);
+ }
+
+ $period = $form->settings['period'];
+
+ try {
+ $start_time = Carbon::parse($period['start_time']);
+ $end_time = Carbon::parse($period['end_time']);
+ } catch (\Exception $e) {
+ abort(Response::HTTP_BAD_REQUEST, 'Invalid time format');
+ }
+
+ $now = Carbon::now();
+
+ if ($now >= $start_time && $now <= $end_time) {
+ return $next($request);
+ }
+
+ abort(Response::HTTP_FORBIDDEN, 'Form is not available at this time');
+ }
+}
diff --git a/app/Ship/Middleware/GenerateBreadcrumbs.php b/app/Ship/Middleware/GenerateBreadcrumbs.php
new file mode 100644
index 0000000..01c36d3
--- /dev/null
+++ b/app/Ship/Middleware/GenerateBreadcrumbs.php
@@ -0,0 +1,35 @@
+path();
+ $page = Page::where('path', '=', $path)
+ ->with('section.pages.section', 'section.mainSection')
+ ->first();
+
+ if ($page && isset($page->section)) {
+ $breadcrumbs = [
+ 'mainSection' => new ClientBreadcrumbSection($page->section->mainSection),
+ 'subSection' => new ClientBreadcrumbSubSection($page->section),
+ 'page' => new ClientBreadcrumbPage($page),
+ ];
+ } else {
+ $breadcrumbs = null;
+ }
+
+ $request->merge(['breadcrumbs' => $breadcrumbs]);
+
+ return $next($request);
+ }
+}
diff --git a/app/Ship/Middleware/HandleInertiaRequests.php b/app/Ship/Middleware/HandleInertiaRequests.php
new file mode 100644
index 0000000..7588d8e
--- /dev/null
+++ b/app/Ship/Middleware/HandleInertiaRequests.php
@@ -0,0 +1,55 @@
+addHours(1), function () {
+ return NavigationResource::collection(
+ MainSection::with('subSections.pages.section')
+ ->orderBy('sort', 'asc')
+ ->get()
+ );
+ });
+
+ // Хлебные крошки (автоматически по текущему URL)
+ $breadcrumbs = app(BreadcrumbService::class)->generateBreadcrumbs();
+
+ return [
+ ...parent::share($request),
+ 'auth' => [
+ 'user' => $request->user() ? $request->user()->only('id', 'name', 'email', 'created_at') : null,
+ ],
+ 'ziggy' => fn () => [
+ ...(new Ziggy)->toArray(),
+ 'location' => $request->url(),
+ ],
+ 'navigation' => $navigation,
+ 'breadcrumbs' => $breadcrumbs, // Добавляем хлебные крошки
+ 'urlPrev' => function () {
+ if (url()->previous() !== url()->current()) {
+ return url()->previous();
+ }
+ return 'empty';
+ },
+ ];
+ }
+}
\ No newline at end of file
diff --git a/app/Ship/Middleware/InternalRequestOnly.php b/app/Ship/Middleware/InternalRequestOnly.php
new file mode 100644
index 0000000..c65b78f
--- /dev/null
+++ b/app/Ship/Middleware/InternalRequestOnly.php
@@ -0,0 +1,27 @@
+header('User-Agent');
+
+ // Проверяем, что User-Agent содержит ключевые слова, характерные для браузеров
+ if (!preg_match('/Mozilla|Chrome|Safari|Firefox|Edge/i', $userAgent)) {
+ return response('Access denied. This route is available only from a web browser.', 403);
+ }
+
+ return $next($request);
+ }
+}
diff --git a/app/Ship/Middleware/LimitPost.php b/app/Ship/Middleware/LimitPost.php
new file mode 100644
index 0000000..afca83d
--- /dev/null
+++ b/app/Ship/Middleware/LimitPost.php
@@ -0,0 +1,28 @@
+user()->receivedInvitation === null) {
+ return $next($request);
+ }
+ if (auth()->user()->receivedInvitation->post_limit > 0) {
+ return $next($request);
+ } else {
+ throw new HttpException(403, 'Лимит постов исчерпан');
+ }
+ }
+}
diff --git a/app/Ship/Middleware/PreventRequestsDuringMaintenance.php b/app/Ship/Middleware/PreventRequestsDuringMaintenance.php
new file mode 100644
index 0000000..fff4ba6
--- /dev/null
+++ b/app/Ship/Middleware/PreventRequestsDuringMaintenance.php
@@ -0,0 +1,17 @@
+
+ */
+ protected $except = [
+ //
+ ];
+}
diff --git a/app/Ship/Middleware/RateLimitCheckMiddleware.php b/app/Ship/Middleware/RateLimitCheckMiddleware.php
new file mode 100644
index 0000000..f5536c3
--- /dev/null
+++ b/app/Ship/Middleware/RateLimitCheckMiddleware.php
@@ -0,0 +1,27 @@
+ip();
+ $key = 'rate_limit:' . $ip;
+
+ // Получаем текущее количество попыток
+ $attempts = Cache::get($key, 0);
+
+ if ($attempts >= 5) {
+ return response()->json(['message' => 'Слишком много запросов, пожалуйста, попробуйте позже.'], 429);
+ }
+
+ // Увеличиваем количество попыток
+
+ return $next($request);
+ }
+}
\ No newline at end of file
diff --git a/app/Ship/Middleware/RateLimitCounterMiddleware.php b/app/Ship/Middleware/RateLimitCounterMiddleware.php
new file mode 100644
index 0000000..919823a
--- /dev/null
+++ b/app/Ship/Middleware/RateLimitCounterMiddleware.php
@@ -0,0 +1,30 @@
+ip();
+ $key = 'rate_limit:' . $ip;
+ $maxAttempts = 5; // Максимальное количество попыток
+ $decayMinutes = 1; // Время блокировки в минутах
+
+ // Получаем текущее количество попыток
+ $attempts = Cache::get($key, 0);
+
+ if ($attempts >= $maxAttempts) {
+ return response()->json(['message' => 'Слишком много запросов, пожалуйста, попробуйте позже.'], 429);
+ }
+
+ // Увеличиваем количество попыток
+ Cache::put($key, $attempts + 1, $decayMinutes * 60);
+
+ return $next($request);
+ }
+}
\ No newline at end of file
diff --git a/app/Ship/Middleware/RedirectIfAuthenticated.php b/app/Ship/Middleware/RedirectIfAuthenticated.php
new file mode 100644
index 0000000..652294a
--- /dev/null
+++ b/app/Ship/Middleware/RedirectIfAuthenticated.php
@@ -0,0 +1,32 @@
+check()) {
+ return redirect(RouteServiceProvider::HOME);
+ }
+ }
+
+ return $next($request);
+ }
+}
diff --git a/app/Ship/Middleware/TransformRequestMiddleware.php b/app/Ship/Middleware/TransformRequestMiddleware.php
new file mode 100644
index 0000000..998582e
--- /dev/null
+++ b/app/Ship/Middleware/TransformRequestMiddleware.php
@@ -0,0 +1,19 @@
+
+ */
+ protected $except = [
+ 'current_password',
+ 'password',
+ 'password_confirmation',
+ ];
+}
diff --git a/app/Ship/Middleware/TrustHosts.php b/app/Ship/Middleware/TrustHosts.php
new file mode 100644
index 0000000..afe05ba
--- /dev/null
+++ b/app/Ship/Middleware/TrustHosts.php
@@ -0,0 +1,20 @@
+
+ */
+ public function hosts()
+ {
+ return [
+ $this->allSubdomainsOfApplicationUrl(),
+ ];
+ }
+}
diff --git a/app/Ship/Middleware/TrustProxies.php b/app/Ship/Middleware/TrustProxies.php
new file mode 100644
index 0000000..4b6f680
--- /dev/null
+++ b/app/Ship/Middleware/TrustProxies.php
@@ -0,0 +1,28 @@
+|string|null
+ */
+ protected $proxies;
+
+ /**
+ * The headers that should be used to detect proxies.
+ *
+ * @var int
+ */
+ protected $headers =
+ Request::HEADER_X_FORWARDED_FOR |
+ Request::HEADER_X_FORWARDED_HOST |
+ Request::HEADER_X_FORWARDED_PORT |
+ Request::HEADER_X_FORWARDED_PROTO |
+ Request::HEADER_X_FORWARDED_AWS_ELB;
+}
diff --git a/app/Ship/Middleware/ValidateSignature.php b/app/Ship/Middleware/ValidateSignature.php
new file mode 100644
index 0000000..06f662d
--- /dev/null
+++ b/app/Ship/Middleware/ValidateSignature.php
@@ -0,0 +1,22 @@
+
+ */
+ protected $except = [
+ // 'fbclid',
+ // 'utm_campaign',
+ // 'utm_content',
+ // 'utm_medium',
+ // 'utm_source',
+ // 'utm_term',
+ ];
+}
diff --git a/app/Ship/Middleware/VerifyCsrfToken.php b/app/Ship/Middleware/VerifyCsrfToken.php
new file mode 100644
index 0000000..00e03dd
--- /dev/null
+++ b/app/Ship/Middleware/VerifyCsrfToken.php
@@ -0,0 +1,17 @@
+
+ */
+ protected $except = [
+ //
+ ];
+}
diff --git a/app/Ship/Models/Builder.php b/app/Ship/Models/Builder.php
new file mode 100644
index 0000000..c6750d6
--- /dev/null
+++ b/app/Ship/Models/Builder.php
@@ -0,0 +1,10 @@
+
+ */
+ protected $fillable = [
+ 'name',
+ 'email',
+ 'password',
+ ];
+
+ /**
+ * The attributes that should be hidden for serialization.
+ *
+ * @var array
+ */
+ protected $hidden = [
+ 'password',
+ 'remember_token',
+ ];
+
+ /**
+ * The attributes that should be cast.
+ *
+ * @var array
+ */
+ protected $casts = [
+ 'email_verified_at' => 'datetime',
+ ];
+
+ protected static function booted(): void
+ {
+ if (config('filament-shield.dashboard_user.enabled', false)) {
+ FilamentShield::createRole(name: config('filament-shield.dashboard_user.name', 'dashboard_user'));
+ FilamentShield::createRole(name: config('', 'editor'));
+ static::created(function (User $user) {
+ $user->assignRole(config('filament-shield.dashboard_user.name', 'dashboard_user'));
+ });
+ static::deleting(function (User $user) {
+ $user->assignRole(config('filament-shield.dashboard_user.name', 'dashboard_user'));
+ });
+ }
+ }
+ public function canAccessPanel(Panel|\Filament\Panel $panel): bool
+ {
+ return match ($panel->getId()) {
+ "admin" => $this->hasRole(Utils::getSuperAdminName()),
+ "dashboard" => $this->hasRole(config('filament-shield.dashboard_user.name', 'dashboard_user'))
+ || $this->hasRole(Utils::getSuperAdminName())
+ || $this->hasRole(config('filament-shield.invited_user.name', 'invited_user')),
+ default => false,
+ };
+ }
+}
diff --git a/app/Ship/Notifications/Messages/MailMessage.php b/app/Ship/Notifications/Messages/MailMessage.php
new file mode 100644
index 0000000..57a0d77
--- /dev/null
+++ b/app/Ship/Notifications/Messages/MailMessage.php
@@ -0,0 +1,10 @@
+
+ */
+ protected $policies = [
+ // 'App\Models\Model' => 'App\Policies\ModelPolicy',
+ ];
+
+ /**
+ * Register any authentication / authorization services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ $this->registerPolicies();
+
+ //
+ }
+}
diff --git a/app/Ship/Providers/BroadcastServiceProvider.php b/app/Ship/Providers/BroadcastServiceProvider.php
new file mode 100644
index 0000000..51165a6
--- /dev/null
+++ b/app/Ship/Providers/BroadcastServiceProvider.php
@@ -0,0 +1,21 @@
+>
+ */
+ protected $listen = [
+ Registered::class => [
+ SendEmailVerificationNotification::class,
+ ],
+ ];
+
+ /**
+ * Register any events for your application.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+
+ /**
+ * Determine if events and listeners should be automatically discovered.
+ *
+ * @return bool
+ */
+ public function shouldDiscoverEvents()
+ {
+ return false;
+ }
+}
diff --git a/app/Ship/Providers/RouteServiceProvider.php b/app/Ship/Providers/RouteServiceProvider.php
new file mode 100644
index 0000000..6c21b55
--- /dev/null
+++ b/app/Ship/Providers/RouteServiceProvider.php
@@ -0,0 +1,30 @@
+seo?->toArray();
+ }
+ public function getSeoForCurrentPage(): array|null
+ {
+ $path = $this->getCurrentPath();
+
+ $page = Cache::remember(
+ CacheKeys::PAGE_PREFIX->value . $path,
+ now()->addHours(1),
+ fn() => Page::where('path', $path)->first()
+ );
+
+ if ($page && $page->seo) {
+ return $page->seo->toArray();
+ }
+
+ return null;
+ }
+
+ private function getCurrentPath(): string
+ {
+ if (Route::currentRouteName() === 'page.view') {
+ return request()->path();
+ }
+
+ $routeUrl = route(Route::currentRouteName());
+ return ltrim(parse_url($routeUrl, PHP_URL_PATH), '/');
+ }
+}
\ No newline at end of file
diff --git a/app/Ship/Tests/TestCase.php b/app/Ship/Tests/TestCase.php
new file mode 100644
index 0000000..d1fe8c3
--- /dev/null
+++ b/app/Ship/Tests/TestCase.php
@@ -0,0 +1,11 @@
+make(Kernel::class)->bootstrap();
+
+ return $app;
+ }
+}
diff --git a/app/Ship/Traits/HasSeo.php b/app/Ship/Traits/HasSeo.php
new file mode 100644
index 0000000..e047468
--- /dev/null
+++ b/app/Ship/Traits/HasSeo.php
@@ -0,0 +1,15 @@
+morphOne(Seo::class, 'seoable');
+ }
+}
\ No newline at end of file
diff --git a/bootstrap/app.php b/bootstrap/app.php
index f46e391..c9c04d5 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -28,18 +28,18 @@ $app = new Illuminate\Foundation\Application(
$app->singleton(
Illuminate\Contracts\Http\Kernel::class,
- App\Http\Kernel::class
-);
+ App\Ship\Kernels\HttpKernel::class
+ );
-$app->singleton(
- Illuminate\Contracts\Console\Kernel::class,
- App\Console\Kernel::class
-);
+ $app->singleton(
+ Illuminate\Contracts\Console\Kernel::class,
+ App\Ship\Kernels\ConsoleKernel::class
+ );
-$app->singleton(
- Illuminate\Contracts\Debug\ExceptionHandler::class,
- App\Exceptions\Handler::class
-);
+ $app->singleton(
+ Illuminate\Contracts\Debug\ExceptionHandler::class,
+ App\Ship\Exceptions\Handler::class
+ );
/*
diff --git a/composer.json b/composer.json
index f17d195..ae5c494 100644
--- a/composer.json
+++ b/composer.json
@@ -9,12 +9,12 @@
"ext-curl": "*",
"ext-zip": "*",
"alxdorosenco/porto-for-laravel": "^10.0",
- "askerakbar/checkpoint": "^0.0.1",
- "awcodes/filament-tiptap-editor": "^3.0",
- "bezhansalleh/filament-shield": "^3.2",
- "filament/filament": "^3.0-stable",
- "filament/spatie-laravel-tags-plugin": "^3.2",
- "guava/filament-icon-picker": "^2.0",
+ "awcodes/filament-tiptap-editor": "3.4.16",
+ "bezhansalleh/filament-shield": "3.2.6",
+ "filament/filament": "v3.2.127",
+ "filament/spatie-laravel-settings-plugin": "^3.2",
+ "filament/spatie-laravel-tags-plugin": "v3.2.113",
+ "guava/filament-icon-picker": "2.2.4",
"guzzlehttp/guzzle": "^7.8",
"imangazaliev/didom": "^2.0",
"inertiajs/inertia-laravel": "^2.0",
@@ -23,17 +23,17 @@
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.2",
"laravel/tinker": "^2.8",
- "mohamedsabil83/filament-forms-tinyeditor": "^2.3",
+ "mohamedsabil83/filament-forms-tinyeditor": "v2.3.3",
"nesbot/carbon": "^2.71",
"opcodesio/log-viewer": "^3.15",
"predis/predis": "^2.3",
"protonemedia/laravel-cross-eloquent-search": "^3.4",
- "pxlrbt/filament-excel": "^2.3",
- "shuvroroy/filament-spatie-laravel-backup": "^2.2",
+ "pxlrbt/filament-excel": "v2.3.4",
+ "shuvroroy/filament-spatie-laravel-backup": "v2.2.3",
"spatie/laravel-sitemap": "^7.2",
"symfony/filesystem": "^6.3",
"tightenco/ziggy": "^1.0",
- "tomatophp/filament-icons": "^1.1",
+ "tomatophp/filament-icons": "v1.1.4",
"vkcom/vk-php-sdk": "^5.131",
"xvladqt/faker-lorem-flickr": "^1.0",
"yepsua/filament-range-field": "^0.3.4"
diff --git a/composer.lock b/composer.lock
index b238503..d254b0b 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": "3e91b6e2e45dde3f5e5667344fe15d7c",
+ "content-hash": "46d10b4875c40f8c0425ba3eab11c904",
"packages": [
{
"name": "alxdorosenco/porto-for-laravel",
@@ -134,90 +134,27 @@
},
"time": "2025-04-06T06:54:34+00:00"
},
- {
- "name": "askerakbar/checkpoint",
- "version": "0.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/askerakbar/checkpoint.git",
- "reference": "29bd6842b4a6286e7a29b149c15a7ff2a3cf029f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/askerakbar/checkpoint/zipball/29bd6842b4a6286e7a29b149c15a7ff2a3cf029f",
- "reference": "29bd6842b4a6286e7a29b149c15a7ff2a3cf029f",
- "shasum": ""
- },
- "require": {
- "filament/notifications": "3.x-dev",
- "filament/spatie-laravel-settings-plugin": "3.x-dev",
- "php": "^8.1"
- },
- "require-dev": {
- "laravel/pint": "dev-main",
- "orchestra/testbench": "9.x-dev",
- "pestphp/pest": "3.x-dev",
- "pestphp/pest-plugin-laravel": "3.x-dev",
- "pestphp/pest-plugin-livewire": "3.x-dev"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "AskerAkbar\\Checkpoint\\CheckpointServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "AskerAkbar\\Checkpoint\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Asker Akbar",
- "homepage": "https://github.com/askerakbar",
- "role": "Developer"
- }
- ],
- "description": "This Filament PHP plugin improves login security by letting you customize rate-limiting settings like duration and the number of attempts. It also notifies admins about suspicious activity",
- "homepage": "https://github.com/askerakbar/checkpoint/",
- "keywords": [
- "auth-notifications",
- "filament",
- "filament-auth"
- ],
- "support": {
- "issues": "https://github.com/askerakbar/checkpoint/issues",
- "source": "https://github.com/askerakbar/checkpoint/tree/0.0.1"
- },
- "time": "2024-10-08T06:51:03+00:00"
- },
{
"name": "awcodes/filament-tiptap-editor",
- "version": "v3.5.13",
+ "version": "v3.4.16",
"source": {
"type": "git",
"url": "https://github.com/awcodes/filament-tiptap-editor.git",
- "reference": "17684330a0bc0e9cfbd40a1de89efea6f635ef74"
+ "reference": "fef63d8e04776299470892735a329568c1743f54"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/awcodes/filament-tiptap-editor/zipball/17684330a0bc0e9cfbd40a1de89efea6f635ef74",
- "reference": "17684330a0bc0e9cfbd40a1de89efea6f635ef74",
+ "url": "https://api.github.com/repos/awcodes/filament-tiptap-editor/zipball/fef63d8e04776299470892735a329568c1743f54",
+ "reference": "fef63d8e04776299470892735a329568c1743f54",
"shasum": ""
},
"require": {
- "filament/filament": "^3.2.138",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9.2",
"ueberdosis/tiptap-php": "^1.1"
},
"require-dev": {
+ "filament/filament": "^3.0",
"laravel/pint": "^1.0",
"nunomaduro/collision": "^7.0",
"orchestra/testbench": "^8.0",
@@ -269,7 +206,7 @@
],
"support": {
"issues": "https://github.com/awcodes/filament-tiptap-editor/issues",
- "source": "https://github.com/awcodes/filament-tiptap-editor/tree/v3.5.13"
+ "source": "https://github.com/awcodes/filament-tiptap-editor/tree/v3.4.16"
},
"funding": [
{
@@ -277,20 +214,20 @@
"type": "github"
}
],
- "time": "2025-05-05T14:04:37+00:00"
+ "time": "2024-09-21T17:01:40+00:00"
},
{
"name": "bezhansalleh/filament-shield",
- "version": "3.3.6",
+ "version": "3.2.6",
"source": {
"type": "git",
"url": "https://github.com/bezhanSalleh/filament-shield.git",
- "reference": "f77e4a47a4c411ca973e1964dbc1f963dd09e1c4"
+ "reference": "212428385855256d5499b02b6148b7c9eaa1b1fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bezhanSalleh/filament-shield/zipball/f77e4a47a4c411ca973e1964dbc1f963dd09e1c4",
- "reference": "f77e4a47a4c411ca973e1964dbc1f963dd09e1c4",
+ "url": "https://api.github.com/repos/bezhanSalleh/filament-shield/zipball/212428385855256d5499b02b6148b7c9eaa1b1fb",
+ "reference": "212428385855256d5499b02b6148b7c9eaa1b1fb",
"shasum": ""
},
"require": {
@@ -309,8 +246,7 @@
"phpstan/extension-installer": "^1.3",
"phpstan/phpstan-deprecation-rules": "^1.1",
"phpstan/phpstan-phpunit": "^1.3",
- "phpunit/phpunit": "^10.1",
- "spatie/laravel-ray": "^1.37"
+ "phpunit/phpunit": "^10.1"
},
"type": "library",
"extra": {
@@ -356,7 +292,7 @@
],
"support": {
"issues": "https://github.com/bezhanSalleh/filament-shield/issues",
- "source": "https://github.com/bezhanSalleh/filament-shield/tree/3.3.6"
+ "source": "https://github.com/bezhanSalleh/filament-shield/tree/3.2.6"
},
"funding": [
{
@@ -364,7 +300,7 @@
"type": "github"
}
],
- "time": "2025-05-03T02:31:53+00:00"
+ "time": "2024-09-02T14:20:04+00:00"
},
{
"name": "blade-ui-kit/blade-heroicons",
@@ -912,27 +848,27 @@
},
{
"name": "danharrin/livewire-rate-limiting",
- "version": "v2.1.0",
+ "version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/danharrin/livewire-rate-limiting.git",
- "reference": "14dde653a9ae8f38af07a0ba4921dc046235e1a0"
+ "reference": "1a1b299e20de61f88ed6e94ea0bbcfc33aab1ddb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/14dde653a9ae8f38af07a0ba4921dc046235e1a0",
- "reference": "14dde653a9ae8f38af07a0ba4921dc046235e1a0",
+ "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/1a1b299e20de61f88ed6e94ea0bbcfc33aab1ddb",
+ "reference": "1a1b299e20de61f88ed6e94ea0bbcfc33aab1ddb",
"shasum": ""
},
"require": {
- "illuminate/support": "^9.0|^10.0|^11.0|^12.0",
+ "illuminate/support": "^9.0|^10.0|^11.0",
"php": "^8.0"
},
"require-dev": {
"livewire/livewire": "^3.0",
"livewire/volt": "^1.3",
- "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
- "phpunit/phpunit": "^9.0|^10.0|^11.5.3"
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.0"
},
"type": "library",
"autoload": {
@@ -962,7 +898,7 @@
"type": "github"
}
],
- "time": "2025-02-21T08:52:11+00:00"
+ "time": "2024-05-06T09:10:03+00:00"
},
{
"name": "dflydev/dot-access-data",
@@ -1808,16 +1744,16 @@
},
{
"name": "filament/actions",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/actions.git",
- "reference": "08caa8dec43ebf4192dcd999cca786656a3dbc90"
+ "reference": "f325e315c365cfcea5c9da96662ddea37e3663fc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/actions/zipball/08caa8dec43ebf4192dcd999cca786656a3dbc90",
- "reference": "08caa8dec43ebf4192dcd999cca786656a3dbc90",
+ "url": "https://api.github.com/repos/filamentphp/actions/zipball/f325e315c365cfcea5c9da96662ddea37e3663fc",
+ "reference": "f325e315c365cfcea5c9da96662ddea37e3663fc",
"shasum": ""
},
"require": {
@@ -1826,15 +1762,14 @@
"filament/infolists": "self.version",
"filament/notifications": "self.version",
"filament/support": "self.version",
- "illuminate/contracts": "^10.45|^11.0|^12.0",
- "illuminate/database": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
- "league/csv": "^9.16",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "league/csv": "^9.14",
"openspout/openspout": "^4.23",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -1858,24 +1793,24 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-30T09:16:43+00:00"
+ "time": "2024-11-29T09:30:57+00:00"
},
{
"name": "filament/filament",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/panels.git",
- "reference": "2c4783bdd973967cc2dbc2dc518c70b04839ace3"
+ "reference": "4aea767e8c872842b624fe47affe078433111259"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/panels/zipball/2c4783bdd973967cc2dbc2dc518c70b04839ace3",
- "reference": "2c4783bdd973967cc2dbc2dc518c70b04839ace3",
+ "url": "https://api.github.com/repos/filamentphp/panels/zipball/4aea767e8c872842b624fe47affe078433111259",
+ "reference": "4aea767e8c872842b624fe47affe078433111259",
"shasum": ""
},
"require": {
- "danharrin/livewire-rate-limiting": "^0.3|^1.0|^2.0",
+ "danharrin/livewire-rate-limiting": "^0.3|^1.0",
"filament/actions": "self.version",
"filament/forms": "self.version",
"filament/infolists": "self.version",
@@ -1883,20 +1818,19 @@
"filament/support": "self.version",
"filament/tables": "self.version",
"filament/widgets": "self.version",
- "illuminate/auth": "^10.45|^11.0|^12.0",
- "illuminate/console": "^10.45|^11.0|^12.0",
- "illuminate/contracts": "^10.45|^11.0|^12.0",
- "illuminate/cookie": "^10.45|^11.0|^12.0",
- "illuminate/database": "^10.45|^11.0|^12.0",
- "illuminate/http": "^10.45|^11.0|^12.0",
- "illuminate/routing": "^10.45|^11.0|^12.0",
- "illuminate/session": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
- "illuminate/view": "^10.45|^11.0|^12.0",
+ "illuminate/auth": "^10.45|^11.0",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/cookie": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/http": "^10.45|^11.0",
+ "illuminate/routing": "^10.45|^11.0",
+ "illuminate/session": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -1924,37 +1858,36 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-30T09:16:38+00:00"
+ "time": "2024-11-29T09:30:58+00:00"
},
{
"name": "filament/forms",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/forms.git",
- "reference": "22e62dc2b4c68018e9846aadf7e8c5310d0e38cf"
+ "reference": "c78071f1aabb63a0d9bf74268005d3294b61dc2a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/forms/zipball/22e62dc2b4c68018e9846aadf7e8c5310d0e38cf",
- "reference": "22e62dc2b4c68018e9846aadf7e8c5310d0e38cf",
+ "url": "https://api.github.com/repos/filamentphp/forms/zipball/c78071f1aabb63a0d9bf74268005d3294b61dc2a",
+ "reference": "c78071f1aabb63a0d9bf74268005d3294b61dc2a",
"shasum": ""
},
"require": {
"danharrin/date-format-converter": "^0.3",
"filament/actions": "self.version",
"filament/support": "self.version",
- "illuminate/console": "^10.45|^11.0|^12.0",
- "illuminate/contracts": "^10.45|^11.0|^12.0",
- "illuminate/database": "^10.45|^11.0|^12.0",
- "illuminate/filesystem": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
- "illuminate/validation": "^10.45|^11.0|^12.0",
- "illuminate/view": "^10.45|^11.0|^12.0",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/validation": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -1981,35 +1914,34 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-30T09:16:39+00:00"
+ "time": "2024-11-29T09:30:53+00:00"
},
{
"name": "filament/infolists",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/infolists.git",
- "reference": "cc71f1c15f132660986384d302a33a2b20618a96"
+ "reference": "e655ac3900ab2109022aa0243cfb4126729ef431"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/infolists/zipball/cc71f1c15f132660986384d302a33a2b20618a96",
- "reference": "cc71f1c15f132660986384d302a33a2b20618a96",
+ "url": "https://api.github.com/repos/filamentphp/infolists/zipball/e655ac3900ab2109022aa0243cfb4126729ef431",
+ "reference": "e655ac3900ab2109022aa0243cfb4126729ef431",
"shasum": ""
},
"require": {
"filament/actions": "self.version",
"filament/support": "self.version",
- "illuminate/console": "^10.45|^11.0|^12.0",
- "illuminate/contracts": "^10.45|^11.0|^12.0",
- "illuminate/database": "^10.45|^11.0|^12.0",
- "illuminate/filesystem": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
- "illuminate/view": "^10.45|^11.0|^12.0",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -2033,33 +1965,32 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-23T06:39:44+00:00"
+ "time": "2024-11-29T09:30:56+00:00"
},
{
"name": "filament/notifications",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/notifications.git",
- "reference": "edf7960621b2181b4c2fc040b0712fbd5dd036ef"
+ "reference": "c19df07c801c5550de0d30957c5a316f53019533"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/notifications/zipball/edf7960621b2181b4c2fc040b0712fbd5dd036ef",
- "reference": "edf7960621b2181b4c2fc040b0712fbd5dd036ef",
+ "url": "https://api.github.com/repos/filamentphp/notifications/zipball/c19df07c801c5550de0d30957c5a316f53019533",
+ "reference": "c19df07c801c5550de0d30957c5a316f53019533",
"shasum": ""
},
"require": {
"filament/actions": "self.version",
"filament/support": "self.version",
- "illuminate/contracts": "^10.45|^11.0|^12.0",
- "illuminate/filesystem": "^10.45|^11.0|^12.0",
- "illuminate/notifications": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/notifications": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -2086,31 +2017,30 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-23T06:39:49+00:00"
+ "time": "2024-10-23T07:36:14+00:00"
},
{
"name": "filament/spatie-laravel-settings-plugin",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/spatie-laravel-settings-plugin.git",
- "reference": "80c9e960b30890fdc731da262b71255cb39bee31"
+ "reference": "8d9f1a19147e2cf765d353bb7250f92f866fc78f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/spatie-laravel-settings-plugin/zipball/80c9e960b30890fdc731da262b71255cb39bee31",
- "reference": "80c9e960b30890fdc731da262b71255cb39bee31",
+ "url": "https://api.github.com/repos/filamentphp/spatie-laravel-settings-plugin/zipball/8d9f1a19147e2cf765d353bb7250f92f866fc78f",
+ "reference": "8d9f1a19147e2cf765d353bb7250f92f866fc78f",
"shasum": ""
},
"require": {
"filament/filament": "self.version",
- "illuminate/console": "^10.45|^11.0|^12.0",
- "illuminate/filesystem": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
"php": "^8.1",
"spatie/laravel-settings": "^2.2|^3.0"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -2134,24 +2064,24 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-23T06:39:48+00:00"
+ "time": "2024-10-16T12:07:29+00:00"
},
{
"name": "filament/spatie-laravel-tags-plugin",
- "version": "v3.3.14",
+ "version": "v3.2.113",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/spatie-laravel-tags-plugin.git",
- "reference": "c604cb09809f4c54503bd9bbbf53eb1749bd99f1"
+ "reference": "09a85ce068e7466e9aabe7d27a3acd1b1f7adab2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/spatie-laravel-tags-plugin/zipball/c604cb09809f4c54503bd9bbbf53eb1749bd99f1",
- "reference": "c604cb09809f4c54503bd9bbbf53eb1749bd99f1",
+ "url": "https://api.github.com/repos/filamentphp/spatie-laravel-tags-plugin/zipball/09a85ce068e7466e9aabe7d27a3acd1b1f7adab2",
+ "reference": "09a85ce068e7466e9aabe7d27a3acd1b1f7adab2",
"shasum": ""
},
"require": {
- "illuminate/database": "^10.45|^11.0|^12.0",
+ "illuminate/database": "^10.45|^11.0",
"php": "^8.1",
"spatie/laravel-tags": "^4.0"
},
@@ -2171,31 +2101,31 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-30T09:16:35+00:00"
+ "time": "2024-07-31T11:53:24+00:00"
},
{
"name": "filament/support",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/support.git",
- "reference": "0ab49fdb2bc937257d6f8e1f7b97a03216a43656"
+ "reference": "a720fb2508a1d84a9b35aedc9991d4b53d18fea6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/support/zipball/0ab49fdb2bc937257d6f8e1f7b97a03216a43656",
- "reference": "0ab49fdb2bc937257d6f8e1f7b97a03216a43656",
+ "url": "https://api.github.com/repos/filamentphp/support/zipball/a720fb2508a1d84a9b35aedc9991d4b53d18fea6",
+ "reference": "a720fb2508a1d84a9b35aedc9991d4b53d18fea6",
"shasum": ""
},
"require": {
"blade-ui-kit/blade-heroicons": "^2.5",
"doctrine/dbal": "^3.2|^4.0",
"ext-intl": "*",
- "illuminate/contracts": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
- "illuminate/view": "^10.45|^11.0|^12.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
"kirschbaum-development/eloquent-power-joins": "^3.0|^4.0",
- "livewire/livewire": "^3.5",
+ "livewire/livewire": "3.5.12",
"php": "^8.1",
"ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0",
"spatie/color": "^1.5",
@@ -2204,7 +2134,6 @@
"symfony/console": "^6.0|^7.0",
"symfony/html-sanitizer": "^6.1|^7.0"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -2231,36 +2160,35 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-30T09:16:34+00:00"
+ "time": "2024-11-29T09:31:13+00:00"
},
{
"name": "filament/tables",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/tables.git",
- "reference": "bb5fad7306c39fdbb08d97982073114ac465bf92"
+ "reference": "c287a68e084c96c3f2991eaddf1d6b5159af5147"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/tables/zipball/bb5fad7306c39fdbb08d97982073114ac465bf92",
- "reference": "bb5fad7306c39fdbb08d97982073114ac465bf92",
+ "url": "https://api.github.com/repos/filamentphp/tables/zipball/c287a68e084c96c3f2991eaddf1d6b5159af5147",
+ "reference": "c287a68e084c96c3f2991eaddf1d6b5159af5147",
"shasum": ""
},
"require": {
"filament/actions": "self.version",
"filament/forms": "self.version",
"filament/support": "self.version",
- "illuminate/console": "^10.45|^11.0|^12.0",
- "illuminate/contracts": "^10.45|^11.0|^12.0",
- "illuminate/database": "^10.45|^11.0|^12.0",
- "illuminate/filesystem": "^10.45|^11.0|^12.0",
- "illuminate/support": "^10.45|^11.0|^12.0",
- "illuminate/view": "^10.45|^11.0|^12.0",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -2284,20 +2212,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-30T09:16:33+00:00"
+ "time": "2024-11-30T09:21:26+00:00"
},
{
"name": "filament/widgets",
- "version": "3.x-dev",
+ "version": "v3.2.127",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/widgets.git",
- "reference": "048c5a4bf0477efbe2910c54a1aeb55c64cf1348"
+ "reference": "6de1c84d71168fd1c6a5b1ae1e1b4ec5ee4b6f55"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/widgets/zipball/048c5a4bf0477efbe2910c54a1aeb55c64cf1348",
- "reference": "048c5a4bf0477efbe2910c54a1aeb55c64cf1348",
+ "url": "https://api.github.com/repos/filamentphp/widgets/zipball/6de1c84d71168fd1c6a5b1ae1e1b4ec5ee4b6f55",
+ "reference": "6de1c84d71168fd1c6a5b1ae1e1b4ec5ee4b6f55",
"shasum": ""
},
"require": {
@@ -2305,7 +2233,6 @@
"php": "^8.1",
"spatie/laravel-package-tools": "^1.9"
},
- "default-branch": true,
"type": "library",
"extra": {
"laravel": {
@@ -2329,7 +2256,7 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2025-04-23T06:39:59+00:00"
+ "time": "2024-11-27T16:52:29+00:00"
},
{
"name": "fruitcake/php-cors",
@@ -2466,20 +2393,21 @@
},
{
"name": "guava/filament-icon-picker",
- "version": "2.3.0",
+ "version": "2.2.4",
"source": {
"type": "git",
"url": "https://github.com/lukas-frey/filament-icon-picker.git",
- "reference": "123543b4d62653180fed47c11fce7caa0f00a5e9"
+ "reference": "ed309fee35e9566356d67635176af2f312fa687b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lukas-frey/filament-icon-picker/zipball/123543b4d62653180fed47c11fce7caa0f00a5e9",
- "reference": "123543b4d62653180fed47c11fce7caa0f00a5e9",
+ "url": "https://api.github.com/repos/lukas-frey/filament-icon-picker/zipball/ed309fee35e9566356d67635176af2f312fa687b",
+ "reference": "ed309fee35e9566356d67635176af2f312fa687b",
"shasum": ""
},
"require": {
"filament/filament": "^3.0@stable",
+ "illuminate/contracts": "^9.0|^10.0|^11.0",
"php": "^8.0"
},
"require-dev": {
@@ -2511,7 +2439,7 @@
"description": "A filament plugin that adds an icon picker field.",
"support": {
"issues": "https://github.com/lukas-frey/filament-icon-picker/issues",
- "source": "https://github.com/lukas-frey/filament-icon-picker/tree/2.3.0"
+ "source": "https://github.com/lukas-frey/filament-icon-picker/tree/2.2.4"
},
"funding": [
{
@@ -2519,7 +2447,7 @@
"type": "github"
}
],
- "time": "2025-02-25T19:08:20+00:00"
+ "time": "2024-06-27T07:07:31+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -3138,24 +3066,24 @@
},
{
"name": "joshembling/image-optimizer",
- "version": "v1.6.0",
+ "version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/joshembling/image-optimizer.git",
- "reference": "ba942b01aec16fbd2c9fdfabe239cf4c8f7ba63e"
+ "reference": "a7bc45d2b86098639c0ce3c382a47a35ff9a1d0d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/joshembling/image-optimizer/zipball/ba942b01aec16fbd2c9fdfabe239cf4c8f7ba63e",
- "reference": "ba942b01aec16fbd2c9fdfabe239cf4c8f7ba63e",
+ "url": "https://api.github.com/repos/joshembling/image-optimizer/zipball/a7bc45d2b86098639c0ce3c382a47a35ff9a1d0d",
+ "reference": "a7bc45d2b86098639c0ce3c382a47a35ff9a1d0d",
"shasum": ""
},
"require": {
- "filament/forms": "^3.3",
- "illuminate/contracts": "^10.0|^11.0|^12.0",
+ "filament/forms": "^3.0",
+ "illuminate/contracts": "^10.0|^11.0",
"intervention/image": "^2.7",
"php": "^8.2",
- "spatie/laravel-package-tools": "^1.19.0"
+ "spatie/laravel-package-tools": "^1.15.0"
},
"require-dev": {
"laravel/pint": "^1.0",
@@ -3210,7 +3138,7 @@
"type": "github"
}
],
- "time": "2025-03-08T16:55:23+00:00"
+ "time": "2025-02-24T14:07:06+00:00"
},
{
"name": "kirschbaum-development/eloquent-power-joins",
@@ -4377,23 +4305,23 @@
},
{
"name": "livewire/livewire",
- "version": "v3.6.3",
+ "version": "v3.5.12",
"source": {
"type": "git",
"url": "https://github.com/livewire/livewire.git",
- "reference": "56aa1bb63a46e06181c56fa64717a7287e19115e"
+ "reference": "3c8d1f9d7d9098aaea663093ae168f2d5d2ae73d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/livewire/livewire/zipball/56aa1bb63a46e06181c56fa64717a7287e19115e",
- "reference": "56aa1bb63a46e06181c56fa64717a7287e19115e",
+ "url": "https://api.github.com/repos/livewire/livewire/zipball/3c8d1f9d7d9098aaea663093ae168f2d5d2ae73d",
+ "reference": "3c8d1f9d7d9098aaea663093ae168f2d5d2ae73d",
"shasum": ""
},
"require": {
- "illuminate/database": "^10.0|^11.0|^12.0",
- "illuminate/routing": "^10.0|^11.0|^12.0",
- "illuminate/support": "^10.0|^11.0|^12.0",
- "illuminate/validation": "^10.0|^11.0|^12.0",
+ "illuminate/database": "^10.0|^11.0",
+ "illuminate/routing": "^10.0|^11.0",
+ "illuminate/support": "^10.0|^11.0",
+ "illuminate/validation": "^10.0|^11.0",
"laravel/prompts": "^0.1.24|^0.2|^0.3",
"league/mime-type-detection": "^1.9",
"php": "^8.1",
@@ -4402,11 +4330,11 @@
},
"require-dev": {
"calebporzio/sushi": "^2.1",
- "laravel/framework": "^10.15.0|^11.0|^12.0",
+ "laravel/framework": "^10.15.0|^11.0",
"mockery/mockery": "^1.3.1",
- "orchestra/testbench": "^8.21.0|^9.0|^10.0",
- "orchestra/testbench-dusk": "^8.24|^9.1|^10.0",
- "phpunit/phpunit": "^10.4|^11.5",
+ "orchestra/testbench": "^8.21.0|^9.0",
+ "orchestra/testbench-dusk": "^8.24|^9.1",
+ "phpunit/phpunit": "^10.4",
"psy/psysh": "^0.11.22|^0.12"
},
"type": "library",
@@ -4441,7 +4369,7 @@
"description": "A front-end framework for Laravel.",
"support": {
"issues": "https://github.com/livewire/livewire/issues",
- "source": "https://github.com/livewire/livewire/tree/v3.6.3"
+ "source": "https://github.com/livewire/livewire/tree/v3.5.12"
},
"funding": [
{
@@ -4449,7 +4377,7 @@
"type": "github"
}
],
- "time": "2025-04-12T22:26:52+00:00"
+ "time": "2024-10-15T19:35:06+00:00"
},
{
"name": "maatwebsite/excel",
@@ -4786,35 +4714,35 @@
},
{
"name": "mohamedsabil83/filament-forms-tinyeditor",
- "version": "v2.4.0",
+ "version": "v2.3.3",
"source": {
"type": "git",
"url": "https://github.com/mohamedsabil83/filament-forms-tinyeditor.git",
- "reference": "a6697e57113100583b3876f070a4425b172ba9b7"
+ "reference": "e2d85ba1a7360a8d633f9546bf60434b57f082fe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mohamedsabil83/filament-forms-tinyeditor/zipball/a6697e57113100583b3876f070a4425b172ba9b7",
- "reference": "a6697e57113100583b3876f070a4425b172ba9b7",
+ "url": "https://api.github.com/repos/mohamedsabil83/filament-forms-tinyeditor/zipball/e2d85ba1a7360a8d633f9546bf60434b57f082fe",
+ "reference": "e2d85ba1a7360a8d633f9546bf60434b57f082fe",
"shasum": ""
},
"require": {
"filament/forms": "^3.0",
- "illuminate/contracts": "^9.0 || ^10.0 || ^11.0 || ^12.0",
+ "illuminate/contracts": "^9.0|^10.0|^11.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.14.0"
},
"require-dev": {
"larastan/larastan": "^2.2",
"laravel/pint": "^1.0",
- "nunomaduro/collision": "^7.0 || ^8.0",
- "orchestra/testbench": "8.0 || ^9.0 || ^10.0",
+ "nunomaduro/collision": "^7.0|^8.0",
+ "orchestra/testbench": "8.0|^9.0",
"pestphp/pest": "^2.0",
"pestphp/pest-plugin-laravel": "^2.0",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
- "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0",
+ "phpunit/phpunit": "^10.0|^11.0",
"spatie/laravel-ray": "^1.26"
},
"type": "library",
@@ -4852,7 +4780,7 @@
],
"support": {
"issues": "https://github.com/mohamedsabil83/filament-forms-tinyeditor/issues",
- "source": "https://github.com/mohamedsabil83/filament-forms-tinyeditor/tree/v2.4.0"
+ "source": "https://github.com/mohamedsabil83/filament-forms-tinyeditor/tree/v2.3.3"
},
"funding": [
{
@@ -4864,7 +4792,7 @@
"type": "github"
}
],
- "time": "2025-02-26T11:52:24+00:00"
+ "time": "2024-10-13T12:50:56+00:00"
},
{
"name": "monolog/monolog",
@@ -6663,16 +6591,16 @@
},
{
"name": "pxlrbt/filament-excel",
- "version": "v2.4.3",
+ "version": "v2.3.4",
"source": {
"type": "git",
"url": "https://github.com/pxlrbt/filament-excel.git",
- "reference": "3425500cfede8a9334a6a79f001b5a36a117ca6f"
+ "reference": "da3db3b77b5c06dd3ea8f02e3a5c690db2cfcfc7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pxlrbt/filament-excel/zipball/3425500cfede8a9334a6a79f001b5a36a117ca6f",
- "reference": "3425500cfede8a9334a6a79f001b5a36a117ca6f",
+ "url": "https://api.github.com/repos/pxlrbt/filament-excel/zipball/da3db3b77b5c06dd3ea8f02e3a5c690db2cfcfc7",
+ "reference": "da3db3b77b5c06dd3ea8f02e3a5c690db2cfcfc7",
"shasum": ""
},
"require": {
@@ -6718,7 +6646,7 @@
],
"support": {
"issues": "https://github.com/pxlrbt/filament-excel/issues",
- "source": "https://github.com/pxlrbt/filament-excel/tree/v2.4.3"
+ "source": "https://github.com/pxlrbt/filament-excel/tree/v2.3.4"
},
"funding": [
{
@@ -6726,7 +6654,7 @@
"type": "github"
}
],
- "time": "2025-03-22T02:12:15+00:00"
+ "time": "2024-08-19T09:16:15+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -7098,16 +7026,16 @@
},
{
"name": "shuvroroy/filament-spatie-laravel-backup",
- "version": "v2.2.4",
+ "version": "v2.2.3",
"source": {
"type": "git",
"url": "https://github.com/shuvroroy/filament-spatie-laravel-backup.git",
- "reference": "bd6c0079aec874f89e83d23ed5f96afb6bb97fb9"
+ "reference": "78d5d2de32c94edec280568140c4534e975a19a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shuvroroy/filament-spatie-laravel-backup/zipball/bd6c0079aec874f89e83d23ed5f96afb6bb97fb9",
- "reference": "bd6c0079aec874f89e83d23ed5f96afb6bb97fb9",
+ "url": "https://api.github.com/repos/shuvroroy/filament-spatie-laravel-backup/zipball/78d5d2de32c94edec280568140c4534e975a19a9",
+ "reference": "78d5d2de32c94edec280568140c4534e975a19a9",
"shasum": ""
},
"require": {
@@ -7118,16 +7046,16 @@
"spatie/laravel-package-tools": "^1.15"
},
"require-dev": {
- "larastan/larastan": "^2.9",
"laravel/pint": "^1.0",
- "nunomaduro/collision": "^8.1.1||^7.10.0",
- "orchestra/testbench": "^9.0.0||^8.22.0",
- "pestphp/pest": "^2.0||^3.0",
- "pestphp/pest-plugin-arch": "^2.0||^3.0",
- "pestphp/pest-plugin-laravel": "^2.0||^3.0",
- "phpstan/extension-installer": "^1.3",
- "phpstan/phpstan-deprecation-rules": "^1.1",
- "phpstan/phpstan-phpunit": "^1.3"
+ "nunomaduro/collision": "^7.9",
+ "nunomaduro/larastan": "^2.0.1",
+ "orchestra/testbench": "^8.0",
+ "pestphp/pest": "^2.0",
+ "pestphp/pest-plugin-arch": "^2.0",
+ "pestphp/pest-plugin-laravel": "^2.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0"
},
"type": "library",
"extra": {
@@ -7162,15 +7090,15 @@
],
"support": {
"issues": "https://github.com/shuvroroy/filament-spatie-laravel-backup/issues",
- "source": "https://github.com/shuvroroy/filament-spatie-laravel-backup/tree/v2.2.4"
+ "source": "https://github.com/shuvroroy/filament-spatie-laravel-backup/tree/v2.2.3"
},
"funding": [
{
- "url": "https://www.buymeacoffee.com/shuvroroy",
- "type": "buy_me_a_coffee"
+ "url": "https://github.com/shuvroroy",
+ "type": "github"
}
],
- "time": "2025-01-22T05:39:31+00:00"
+ "time": "2024-10-20T12:11:50+00:00"
},
{
"name": "spatie/browsershot",
@@ -10924,16 +10852,16 @@
},
{
"name": "tomatophp/filament-icons",
- "version": "v1.1.5",
+ "version": "v1.1.4",
"source": {
"type": "git",
"url": "https://github.com/tomatophp/filament-icons.git",
- "reference": "38339344651e3624b2eb9c7c5e42a2addb35a81b"
+ "reference": "fd9cd3d0741bb286a833f390e723f4d8f4004f27"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tomatophp/filament-icons/zipball/38339344651e3624b2eb9c7c5e42a2addb35a81b",
- "reference": "38339344651e3624b2eb9c7c5e42a2addb35a81b",
+ "url": "https://api.github.com/repos/tomatophp/filament-icons/zipball/fd9cd3d0741bb286a833f390e723f4d8f4004f27",
+ "reference": "fd9cd3d0741bb286a833f390e723f4d8f4004f27",
"shasum": ""
},
"require": {
@@ -10977,7 +10905,7 @@
],
"support": {
"issues": "https://github.com/tomatophp/filament-icons/issues",
- "source": "https://github.com/tomatophp/filament-icons/tree/v1.1.5"
+ "source": "https://github.com/tomatophp/filament-icons/tree/v1.1.4"
},
"funding": [
{
@@ -10985,7 +10913,7 @@
"type": "github"
}
],
- "time": "2025-04-16T04:44:30+00:00"
+ "time": "2025-02-08T14:08:00+00:00"
},
{
"name": "ueberdosis/tiptap-php",
diff --git a/config/auth.php b/config/auth.php
index 9548c15..faff9ac 100644
--- a/config/auth.php
+++ b/config/auth.php
@@ -1,5 +1,7 @@
[
'users' => [
'driver' => 'eloquent',
- 'model' => App\Models\User::class,
+ 'model' => User::class,
],
// 'users' => [
diff --git a/config/filament-shield.php b/config/filament-shield.php
index aab916a..14c9c5a 100644
--- a/config/filament-shield.php
+++ b/config/filament-shield.php
@@ -14,7 +14,7 @@ return [
],
'auth_provider_model' => [
- 'fqcn' => 'App\\Models\\User',
+ 'fqcn' => 'App\\Containers\\User\\Models\\User',
],
'super_admin' => [
diff --git a/config/sanctum.php b/config/sanctum.php
index 529cfdc..a467554 100644
--- a/config/sanctum.php
+++ b/config/sanctum.php
@@ -1,5 +1,7 @@
[
- 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
- 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
+ 'verify_csrf_token' => VerifyCsrfToken::class,
+ 'encrypt_cookies' => EncryptCookies::class,
],
];
diff --git a/database/factories/DepartmentFactory.php b/database/factories/DepartmentFactory.php
index a7bdfd5..96c6b89 100644
--- a/database/factories/DepartmentFactory.php
+++ b/database/factories/DepartmentFactory.php
@@ -2,7 +2,7 @@
namespace Database\Factories;
-use App\Models\Faculty;
+use App\Containers\InstituteStructure\Models\Faculty;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
diff --git a/database/factories/EducationalGroupFactory.php b/database/factories/EducationalGroupFactory.php
new file mode 100644
index 0000000..72da5bf
--- /dev/null
+++ b/database/factories/EducationalGroupFactory.php
@@ -0,0 +1,21 @@
+ $this->faker->words(3, true),
+ 'faculty_id' => \App\Models\Faculty::factory(),
+ 'education_form_id' => $this->faker->numberBetween(1, 3),
+ 'created_at' => $this->faker->dateTimeBetween('-1 year', 'now'),
+ 'updated_at' => $this->faker->dateTimeBetween('-1 year', 'now'),
+ ];
+ }
+}
+
+
diff --git a/database/factories/EventFactory.php b/database/factories/EventFactory.php
index 782563d..648bc1b 100644
--- a/database/factories/EventFactory.php
+++ b/database/factories/EventFactory.php
@@ -2,7 +2,7 @@
namespace Database\Factories;
-use App\Models\EventCategory;
+use App\Containers\Event\Models\EventCategory;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
diff --git a/database/factories/FacultyFactory.php b/database/factories/FacultyFactory.php
index 06ea200..f680a07 100644
--- a/database/factories/FacultyFactory.php
+++ b/database/factories/FacultyFactory.php
@@ -35,6 +35,7 @@ class FacultyFactory extends Factory
'slug' => $slug,
'content' => $content,
'abbreviation' => $abbreviation,
+ 'is_active' => $this->faker->boolean(100),
'created_at' => now(),
'updated_at' => now(),
];
diff --git a/database/factories/PostFactory.php b/database/factories/PostFactory.php
index de4884f..237cdb2 100644
--- a/database/factories/PostFactory.php
+++ b/database/factories/PostFactory.php
@@ -2,15 +2,12 @@
namespace Database\Factories;
-use App\Enums\PostStatus;
-use App\Models\Category;
-use App\Models\User;
+use App\Containers\Article\Enums\PostStatus;
+use App\Containers\Article\Models\Category;
+use App\Containers\User\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
-/**
- * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Post>
- */
class PostFactory extends Factory
{
/**
@@ -54,6 +51,7 @@ class PostFactory extends Factory
'status' => $status,
'authors' => $authors,
'images' => $images,
+ 'preview' => null,
'search_data' => $search_data,
'reading_time' => $reading_time,
'category_id' => $category_id,
diff --git a/database/factories/ScheduleFactory.php b/database/factories/ScheduleFactory.php
new file mode 100644
index 0000000..dd75b33
--- /dev/null
+++ b/database/factories/ScheduleFactory.php
@@ -0,0 +1,25 @@
+faker->unique()->word . '.pdf';
+
+ return [
+ 'file' => [
+ [
+ 'title' => $this->faker->randomElement(['Обычное', 'Основное', 'Дополнительное', 'Экзаменационное']),
+ 'path' => 'schedules/' . $this->faker->slug . '-' . time() . '.pdf'
+ ]
+ ],
+ 'educational_group_id' => \App\Models\EducationalGroup::factory(),
+ 'created_at' => $this->faker->dateTimeBetween('-6 months', 'now'),
+ 'updated_at' => $this->faker->dateTimeBetween('-6 months', 'now'),
+ ];
+ }
+}
\ No newline at end of file
diff --git a/database/factories/UserDetailFactory.php b/database/factories/UserDetailFactory.php
index 62ea816..1aa4344 100644
--- a/database/factories/UserDetailFactory.php
+++ b/database/factories/UserDetailFactory.php
@@ -2,7 +2,7 @@
namespace Database\Factories;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
diff --git a/database/migrations/2024_07_29_132208_create_workers_departments_table.php b/database/migrations/2024_07_29_132208_create_workers_departments_table.php
index e301995..db75552 100644
--- a/database/migrations/2024_07_29_132208_create_workers_departments_table.php
+++ b/database/migrations/2024_07_29_132208_create_workers_departments_table.php
@@ -1,7 +1,7 @@
'Failj',
// 'email' => 'Failj@bk.ru',
// 'slug' => 'failj',
// 'password' => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi",
// ]);
- User::factory()->count(50)->has(UserDetail::factory())->create();
- EventCategory::factory()->count(10)->create();
- Category::factory()->count(80)->create();
+// User::factory()->count(50)->has(UserDetail::factory())->create();
+// EventCategory::factory()->count(10)->create();
+// Category::factory()->count(80)->create();
Post::factory()->count(1000)->create();
- Event::factory()->count(200)->create();
- Faculty::factory()->count(6)->create();
- Department::factory()->count(12)->create();
+// Event::factory()->count(200)->create();
+ $faculties = Faculty::factory()->count(6)->create();
- for ($i = 0; $i < 20; $i++) {
- DB::table('workers_departments')->insert([
- 'user_id' => User::inRandomOrder()->first()->id,
- 'department_id' => Department::inRandomOrder()->first()->id,
- 'position' => $faker->word,
- 'created_at' => now(),
- 'updated_at' => now(),
- ]);
- }
-
- for ($i = 0; $i < 20; $i++) {
- DB::table('workers_faculties')->insert([
- 'user_id' => User::inRandomOrder()->first()->id,
- 'faculty_id' => Faculty::inRandomOrder()->first()->id,
- 'position' => $faker->word,
- 'created_at' => now(),
- 'updated_at' => now(),
- ]);
- }
-
- for ($i = 0; $i < 30; $i++) {
- DB::table('teachers_departments')->insert([
- 'user_id' => User::inRandomOrder()->first()->id,
- 'department_id' => Department::inRandomOrder()->first()->id,
- 'teaching_position' => $faker->word,
- 'created_at' => now(),
- 'updated_at' => now(),
- ]);
- }
- $this->call([RolesSeeder::class]);
- $users = [
- [
- 'name' => 'Admin',
- 'email' => 'Admin@mail.ru',
- 'password' => 'R177p900',
- 'role' => 'admin',
- ],
- [
- 'name' => 'John',
- 'email' => 'Test@mail.ru',
- 'password' => 'R177p900',
- 'role' => 'user',
- ]
- ];
- foreach ($users as $user) {
- $created_user = User::create([
- 'name' => $user['name'],
- 'email' => $user['email'],
- 'password' => Hash::make($user['password']),
- ]);
- $created_user->assignRole($user['role']);
- }
+// Затем создаем 40 групп, распределяя их по созданным факультетам
+ EducationalGroup::factory()
+ ->count(40)
+ ->sequence(fn () => [
+ 'faculty_id' => $faculties->random()->id
+ ])
+ ->has(Schedule::factory()->count(90 / 40)) // Распределяем 90 расписаний по 40 группам
+ ->create();
+// Department::factory()->count(12)->create();
+//
+// for ($i = 0; $i < 20; $i++) {
+// DB::table('workers_departments')->insert([
+// 'user_id' => User::inRandomOrder()->first()->id,
+// 'department_id' => Department::inRandomOrder()->first()->id,
+// 'position' => $faker->word,
+// 'created_at' => now(),
+// 'updated_at' => now(),
+// ]);
+// }
+//
+// for ($i = 0; $i < 20; $i++) {
+// DB::table('workers_faculties')->insert([
+// 'user_id' => User::inRandomOrder()->first()->id,
+// 'faculty_id' => Faculty::inRandomOrder()->first()->id,
+// 'position' => $faker->word,
+// 'created_at' => now(),
+// 'updated_at' => now(),
+// ]);
+// }
+//
+// for ($i = 0; $i < 30; $i++) {
+// DB::table('teachers_departments')->insert([
+// 'user_id' => User::inRandomOrder()->first()->id,
+// 'department_id' => Department::inRandomOrder()->first()->id,
+// 'teaching_position' => $faker->word,
+// 'created_at' => now(),
+// 'updated_at' => now(),
+// ]);
+// }
+// $this->call([RolesSeeder::class]);
+// $users = [
+// [
+// 'name' => 'Admin',
+// 'email' => 'Admin@mail.ru',
+// 'password' => 'R177p900',
+// 'role' => 'admin',
+// ],
+// [
+// 'name' => 'John',
+// 'email' => 'Test@mail.ru',
+// 'password' => 'R177p900',
+// 'role' => 'user',
+// ]
+// ];
+// foreach ($users as $user) {
+// $created_user = User::create([
+// 'name' => $user['name'],
+// 'email' => $user['email'],
+// 'password' => Hash::make($user['password']),
+// ]);
+// $created_user->assignRole($user['role']);
+// }
}
}
diff --git a/docker-compose.yml b/docker-compose.yml
index d532577..aaefa3a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -8,6 +8,7 @@ services:
ports:
- "80:80"
container_name: ntspi-nginx
+ restart: always
depends_on:
- app
env_file:
diff --git a/public/css/filament/filament/app.css b/public/css/filament/filament/app.css
index bb61be9..925c77d 100644
--- a/public/css/filament/filament/app.css
+++ b/public/css/filament/filament/app.css
@@ -1 +1 @@
-*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders);border-inline-start-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-top:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-top:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-top:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-inline-start:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding-inline-end:.4444444em;padding-bottom:.2222222em;padding-top:.2222222em;padding-inline-start:.4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding-inline-end:1.5em;padding-bottom:1em;padding-top:1em;padding-inline-start:1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-inline-start:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-top:.75em;padding-inline-start:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-first{order:-9999}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.row-start-2{grid-row-start:2}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.-mt-7{margin-top:-1.75rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-\[--line-clamp\]{-webkit-box-orient:vertical;-webkit-line-clamp:var(--line-clamp);display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[100dvh\],.h-dvh{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.\!max-w-2xl{max-width:42rem!important}.\!max-w-3xl{max-width:48rem!important}.\!max-w-4xl{max-width:56rem!important}.\!max-w-5xl{max-width:64rem!important}.\!max-w-6xl{max-width:72rem!important}.\!max-w-7xl{max-width:80rem!important}.\!max-w-\[14rem\]{max-width:14rem!important}.\!max-w-lg{max-width:32rem!important}.\!max-w-md{max-width:28rem!important}.\!max-w-sm{max-width:24rem!important}.\!max-w-xl{max-width:36rem!important}.\!max-w-xs{max-width:20rem!important}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-1\/4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/4{--tw-translate-x:-25%}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-12,.-translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.-translate-y-3\/4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-3\/4{--tw-translate-y:-75%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-12{--tw-translate-x:3rem}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-5,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-12{--tw-translate-y:3rem}.-rotate-180,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.rotate-180{--tw-rotate:180deg}.rotate-180,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.grid-rows-\[1fr_auto_1fr\]{grid-template-rows:1fr auto 1fr}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.\!bg-none{background-image:none!important}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}.dark\:flex:is(.dark *){display:flex}.dark\:hidden:is(.dark *){display:none}.dark\:divide-white\/10:is(.dark *)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}.dark\:divide-white\/5:is(.dark *)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}.dark\:border-primary-500:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:border-white\/10:is(.dark *){border-color:hsla(0,0%,100%,.1)}.dark\:border-white\/5:is(.dark *){border-color:hsla(0,0%,100%,.05)}.dark\:border-t-white\/10:is(.dark *){border-top-color:hsla(0,0%,100%,.1)}.dark\:\!bg-gray-700:is(.dark *){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.dark\:bg-custom-400\/10:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.dark\:bg-custom-500\/20:is(.dark *){background-color:rgba(var(--c-500),.2)}.dark\:bg-gray-400\/10:is(.dark *){background-color:rgba(var(--gray-400),.1)}.dark\:bg-gray-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.dark\:bg-gray-500\/20:is(.dark *){background-color:rgba(var(--gray-500),.2)}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.dark\:bg-gray-900\/30:is(.dark *){background-color:rgba(var(--gray-900),.3)}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}.dark\:bg-gray-950\/75:is(.dark *){background-color:rgba(var(--gray-950),.75)}.dark\:bg-primary-400:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.dark\:bg-primary-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:bg-white\/10:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:bg-white\/5:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:fill-current:is(.dark *){fill:currentColor}.dark\:text-custom-300\/50:is(.dark *){color:rgba(var(--c-300),.5)}.dark\:text-custom-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.dark\:text-custom-400\/10:is(.dark *){color:rgba(var(--c-400),.1)}.dark\:text-danger-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}.dark\:text-danger-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:text-gray-300\/50:is(.dark *){color:rgba(var(--gray-300),.5)}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:text-gray-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.dark\:text-gray-800:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}.dark\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.dark\:text-primary-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:text-white\/5:is(.dark *){color:hsla(0,0%,100%,.05)}.dark\:ring-custom-400\/30:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.3)}.dark\:ring-custom-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:ring-danger-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:ring-gray-400\/20:is(.dark *){--tw-ring-color:rgba(var(--gray-400),0.2)}.dark\:ring-gray-50\/10:is(.dark *){--tw-ring-color:rgba(var(--gray-50),0.1)}.dark\:ring-gray-700:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}.dark\:ring-gray-900:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}.dark\:ring-white\/10:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}.dark\:ring-white\/20:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}.dark\:placeholder\:text-gray-500:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:placeholder\:text-gray-500:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:before\:bg-primary-500:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.dark\:checked\:bg-danger-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}.dark\:checked\:bg-primary-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:focus-within\:bg-white\/5:focus-within:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}.dark\:hover\:bg-custom-400\/10:hover:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:hover\:text-custom-300:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}.dark\:hover\:text-custom-300\/75:hover:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:hover\:text-gray-300\/75:hover:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:hover\:ring-white\/20:hover:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}.dark\:focus\:ring-danger-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:focus\:ring-primary-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:checked\:focus\:ring-danger-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--danger-400),0.5)}.dark\:checked\:focus\:ring-primary-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--primary-400),0.5)}.dark\:focus-visible\:border-primary-500:focus-visible:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:focus-visible\:bg-custom-400\/10:focus-visible:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:focus-visible\:bg-white\/5:focus-visible:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:focus-visible\:text-custom-300\/75:focus-visible:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:focus-visible\:text-gray-300\/75:focus-visible:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:focus-visible\:text-gray-400:focus-visible:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:focus-visible\:ring-custom-400\/50:focus-visible:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}.dark\:focus-visible\:ring-custom-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:focus-visible\:ring-primary-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:disabled\:bg-transparent:disabled:is(.dark *){background-color:transparent}.dark\:disabled\:text-gray-400:disabled:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:disabled\:ring-white\/10:disabled:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}.dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled:is(.dark *){-webkit-text-fill-color:rgba(var(--gray-400),1)}.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}.dark\:disabled\:checked\:bg-gray-600:checked:disabled:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}.group\/button:hover .dark\:group-hover\/button\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group:focus-visible .dark\:group-focus-visible\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.group:focus-visible .dark\:group-focus-visible\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:grid-rows-\[1fr_auto_3fr\]{grid-template-rows:1fr auto 3fr}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:w-max{width:-moz-max-content;width:max-content}.md\:max-w-60{max-width:15rem}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:overflow-x-auto{overflow-x:auto}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}.dark\:lg\:bg-transparent:is(.dark *){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-end{align-items:flex-end}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-end{align-items:flex-end}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/4:where([dir=rtl],[dir=rtl] *){--tw-translate-x:25%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:\[\&\.trix-active\]\:text-primary-400.trix-active:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\:\:-ms-reveal\]\:hidden::-ms-reveal{display:none}.\[\&\:not\(\:first-of-type\)\]\:border-s:not(:first-of-type){border-inline-start-width:1px}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-2:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.\[\&\:not\(\:last-of-type\)\]\:border-e:not(:last-of-type){border-inline-end-width:1px}.\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.gray\.200\)\]:not(:nth-child(1 of .fi-btn)){--tw-shadow:-1px 0 0 0 rgba(var(--gray-200),1);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn)):is(.dark *){--tw-shadow:-1px 0 0 0 hsla(0,0%,100%,.2);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\[\&\:not\(\:nth-last-child\(1_of_\.fi-btn\)\)\]\:me-px:not(:nth-last-child(1 of .fi-btn)){margin-inline-end:1px}.\[\&\:nth-child\(1_of_\.fi-btn\)\]\:rounded-s-lg:nth-child(1 of .fi-btn){border-end-start-radius:.5rem;border-start-start-radius:.5rem}.\[\&\:nth-last-child\(1_of_\.fi-btn\)\]\:rounded-e-lg:nth-last-child(1 of .fi-btn){border-end-end-radius:.5rem;border-start-end-radius:.5rem}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500:is(.dark *)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\[\&_optgroup\]\:dark\:bg-gray-900:is(.dark *) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\[\&_option\]\:dark\:bg-gray-900:is(.dark *) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-gray-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}
\ No newline at end of file
+*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders);border-inline-start-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-top:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-top:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-top:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-inline-start:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding-inline-end:.4444444em;padding-bottom:.2222222em;padding-top:.2222222em;padding-inline-start:.4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding-inline-end:1.5em;padding-bottom:1em;padding-top:1em;padding-inline-start:1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-inline-start:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-top:.75em;padding-inline-start:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-first{order:-9999}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.row-start-2{grid-row-start:2}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.-mt-7{margin-top:-1.75rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-3{margin-inline-end:.75rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-\[--line-clamp\]{-webkit-box-orient:vertical;-webkit-line-clamp:var(--line-clamp);display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[100dvh\],.h-dvh{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.\!max-w-2xl{max-width:42rem!important}.\!max-w-3xl{max-width:48rem!important}.\!max-w-4xl{max-width:56rem!important}.\!max-w-5xl{max-width:64rem!important}.\!max-w-6xl{max-width:72rem!important}.\!max-w-7xl{max-width:80rem!important}.\!max-w-\[14rem\]{max-width:14rem!important}.\!max-w-lg{max-width:32rem!important}.\!max-w-md{max-width:28rem!important}.\!max-w-sm{max-width:24rem!important}.\!max-w-xl{max-width:36rem!important}.\!max-w-xs{max-width:20rem!important}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-1\/4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/4{--tw-translate-x:-25%}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-12,.-translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.-translate-y-3\/4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-3\/4{--tw-translate-y:-75%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-12{--tw-translate-x:3rem}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-5,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-12{--tw-translate-y:3rem}.-rotate-180,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.rotate-180{--tw-rotate:180deg}.rotate-180,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.grid-rows-\[1fr_auto_1fr\]{grid-template-rows:1fr auto 1fr}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.\!bg-none{background-image:none!important}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}.dark\:flex:is(.dark *){display:flex}.dark\:hidden:is(.dark *){display:none}.dark\:divide-white\/10:is(.dark *)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}.dark\:divide-white\/5:is(.dark *)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}.dark\:border-primary-500:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:border-white\/10:is(.dark *){border-color:hsla(0,0%,100%,.1)}.dark\:border-white\/5:is(.dark *){border-color:hsla(0,0%,100%,.05)}.dark\:border-t-white\/10:is(.dark *){border-top-color:hsla(0,0%,100%,.1)}.dark\:\!bg-gray-700:is(.dark *){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.dark\:bg-custom-400\/10:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.dark\:bg-custom-500\/20:is(.dark *){background-color:rgba(var(--c-500),.2)}.dark\:bg-gray-400\/10:is(.dark *){background-color:rgba(var(--gray-400),.1)}.dark\:bg-gray-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.dark\:bg-gray-500\/20:is(.dark *){background-color:rgba(var(--gray-500),.2)}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.dark\:bg-gray-900\/30:is(.dark *){background-color:rgba(var(--gray-900),.3)}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}.dark\:bg-gray-950\/75:is(.dark *){background-color:rgba(var(--gray-950),.75)}.dark\:bg-primary-400:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.dark\:bg-primary-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:bg-white\/10:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:bg-white\/5:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:text-custom-300\/50:is(.dark *){color:rgba(var(--c-300),.5)}.dark\:text-custom-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.dark\:text-custom-400\/10:is(.dark *){color:rgba(var(--c-400),.1)}.dark\:text-danger-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}.dark\:text-danger-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:text-gray-300\/50:is(.dark *){color:rgba(var(--gray-300),.5)}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:text-gray-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.dark\:text-gray-800:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}.dark\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.dark\:text-primary-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:text-white\/5:is(.dark *){color:hsla(0,0%,100%,.05)}.dark\:ring-custom-400\/30:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.3)}.dark\:ring-custom-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:ring-danger-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:ring-gray-400\/20:is(.dark *){--tw-ring-color:rgba(var(--gray-400),0.2)}.dark\:ring-gray-50\/10:is(.dark *){--tw-ring-color:rgba(var(--gray-50),0.1)}.dark\:ring-gray-700:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}.dark\:ring-gray-900:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}.dark\:ring-white\/10:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}.dark\:ring-white\/20:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}.dark\:placeholder\:text-gray-500:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:placeholder\:text-gray-500:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:before\:bg-primary-500:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.dark\:checked\:bg-danger-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}.dark\:checked\:bg-primary-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:focus-within\:bg-white\/5:focus-within:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}.dark\:hover\:bg-custom-400\/10:hover:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:hover\:text-custom-300:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}.dark\:hover\:text-custom-300\/75:hover:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:hover\:text-gray-300\/75:hover:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:hover\:ring-white\/20:hover:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}.dark\:focus\:ring-danger-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:focus\:ring-primary-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:checked\:focus\:ring-danger-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--danger-400),0.5)}.dark\:checked\:focus\:ring-primary-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--primary-400),0.5)}.dark\:focus-visible\:border-primary-500:focus-visible:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:focus-visible\:bg-custom-400\/10:focus-visible:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:focus-visible\:bg-white\/5:focus-visible:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:focus-visible\:text-custom-300\/75:focus-visible:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:focus-visible\:text-gray-300\/75:focus-visible:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:focus-visible\:text-gray-400:focus-visible:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:focus-visible\:ring-custom-400\/50:focus-visible:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}.dark\:focus-visible\:ring-custom-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:focus-visible\:ring-primary-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:disabled\:bg-transparent:disabled:is(.dark *){background-color:transparent}.dark\:disabled\:text-gray-400:disabled:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:disabled\:ring-white\/10:disabled:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}.dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled:is(.dark *){-webkit-text-fill-color:rgba(var(--gray-400),1)}.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}.dark\:disabled\:checked\:bg-gray-600:checked:disabled:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}.group\/button:hover .dark\:group-hover\/button\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group:focus-visible .dark\:group-focus-visible\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.group:focus-visible .dark\:group-focus-visible\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:grid-rows-\[1fr_auto_3fr\]{grid-template-rows:1fr auto 3fr}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:w-max{width:-moz-max-content;width:max-content}.md\:max-w-60{max-width:15rem}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:overflow-x-auto{overflow-x:auto}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}.dark\:lg\:bg-transparent:is(.dark *){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-end{align-items:flex-end}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-end{align-items:flex-end}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/4:where([dir=rtl],[dir=rtl] *){--tw-translate-x:25%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:\[\&\.trix-active\]\:text-primary-400.trix-active:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\:\:-ms-reveal\]\:hidden::-ms-reveal{display:none}.\[\&\:not\(\:first-of-type\)\]\:border-s:not(:first-of-type){border-inline-start-width:1px}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-2:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.\[\&\:not\(\:last-of-type\)\]\:border-e:not(:last-of-type){border-inline-end-width:1px}.\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.gray\.200\)\]:not(:nth-child(1 of .fi-btn)){--tw-shadow:-1px 0 0 0 rgba(var(--gray-200),1);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn)):is(.dark *){--tw-shadow:-1px 0 0 0 hsla(0,0%,100%,.2);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\[\&\:not\(\:nth-last-child\(1_of_\.fi-btn\)\)\]\:me-px:not(:nth-last-child(1 of .fi-btn)){margin-inline-end:1px}.\[\&\:nth-child\(1_of_\.fi-btn\)\]\:rounded-s-lg:nth-child(1 of .fi-btn){border-end-start-radius:.5rem;border-start-start-radius:.5rem}.\[\&\:nth-last-child\(1_of_\.fi-btn\)\]\:rounded-e-lg:nth-last-child(1 of .fi-btn){border-end-end-radius:.5rem;border-start-end-radius:.5rem}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500:is(.dark *)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\[\&_optgroup\]\:dark\:bg-gray-900:is(.dark *) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\[\&_option\]\:dark\:bg-gray-900:is(.dark *) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-gray-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}
\ No newline at end of file
diff --git a/public/css/filament/forms/forms.css b/public/css/filament/forms/forms.css
index 5c29a13..642acfd 100644
--- a/public/css/filament/forms/forms.css
+++ b/public/css/filament/forms/forms.css
@@ -1,4 +1,4 @@
-input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{-webkit-touch-callout:none;direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:400;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--file-action-button,.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state*=error] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state=cancelled] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{animation:fall .5s linear .125s both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--file-info-sub,[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=error] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=invalid] .filepond--panel{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;touch-action:none;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=error] .filepond--item-panel,[data-filepond-item-state*=invalid] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{align-items:center;bottom:0;display:flex;height:auto;justify-content:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root :not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-.1875em}.filepond--action-edit-item-alt{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@supports (-webkit-marquee-repetition:infinite) and ((-o-object-fit:fill) or (object-fit:fill)){.filepond--image-preview-overlay-idle{mix-blend-mode:normal}}.filepond--image-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;top:0;will-change:transform}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper{border-radius:0}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview{align-items:center;display:flex;height:100%;justify-content:center}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper{border-radius:99999rem}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay{bottom:0;top:auto;transform:scaleY(-1)}.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*=center]){margin-bottom:.325em}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left]{left:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right]{right:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right]{margin-bottom:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.filepond--media-preview .play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=)}.filepond--media-preview .pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC)}.filepond--media-preview .timeline{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}.filepond--root:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.filepond--root[data-disabled=disabled]:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}.filepond--drop-label label:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--label-action:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.filepond--label-action:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.filepond--drip-blob:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}.cropper-drag-box.cropper-crop.cropper-modal:is(.dark *){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:50%}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}.EasyMDEContainer .editor-toolbar:is(.dark *){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:focus-visible:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button.active:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1rem;width:1rem}.EasyMDEContainer .editor-toolbar button:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button.active:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}.fi-fo-rich-editor trix-toolbar .trix-dialog:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button:is(.dark *){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:is(.dark *):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.choices__list--single .choices__item:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}.choices__list--multiple .choices__item:is(.dark *){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}.choices__list--dropdown:is(.dark *),.choices__list[aria-expanded]:is(.dark *){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__item--choice:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted:is(.dark *),.choices__list[aria-expanded] .choices__item--selectable.is-highlighted:is(.dark *){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__item--disabled:disabled:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}.choices.is-disabled .choices__placeholder.choices__item:is(.dark *),.choices__placeholder.choices__item:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}.choices[data-type*=select-one] .choices__button:is(.dark *){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}.choices[data-type*=select-multiple] .choices__button:is(.dark *){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}.choices[data-type*=select-multiple] .choices__button:focus-visible:is(.dark *),.choices[data-type*=select-multiple] .choices__button:hover:is(.dark *),.choices[data-type*=select-one] .choices__button:focus-visible:is(.dark *),.choices[data-type*=select-one] .choices__button:hover:is(.dark *){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__input:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:disabled:is(.dark *){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}.choices__group:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information:
+input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{-webkit-touch-callout:none;direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:400;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--file-action-button,.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state*=error] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state=cancelled] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{animation:fall .5s linear .125s both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--file-info-sub,[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=error] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=invalid] .filepond--panel{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;touch-action:none;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=error] .filepond--item-panel,[data-filepond-item-state*=invalid] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{align-items:center;bottom:0;display:flex;height:auto;justify-content:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root :not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-.1875em}.filepond--action-edit-item-alt{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@supports (-webkit-marquee-repetition:infinite) and ((-o-object-fit:fill) or (object-fit:fill)){.filepond--image-preview-overlay-idle{mix-blend-mode:normal}}.filepond--image-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;top:0;will-change:transform}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper{border-radius:0}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview{align-items:center;display:flex;height:100%;justify-content:center}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper{border-radius:99999rem}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay{bottom:0;top:auto;transform:scaleY(-1)}.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*=center]){margin-bottom:.325em}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left]{left:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right]{right:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right]{margin-bottom:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.filepond--media-preview .play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=)}.filepond--media-preview .pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC)}.filepond--media-preview .timeline{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}.filepond--root:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.filepond--root[data-disabled=disabled]:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}.filepond--drop-label label:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--label-action:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.filepond--label-action:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.filepond--drip-blob:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}.cropper-drag-box.cropper-crop.cropper-modal:is(.dark *){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:50%}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}.EasyMDEContainer .editor-toolbar:is(.dark *){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:focus-visible:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button.active:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1.25rem;width:1.25rem}.EasyMDEContainer .editor-toolbar button:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button.active:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M4 3a1 1 0 0 1 1-1h6a4.5 4.5 0 0 1 3.274 7.587A4.75 4.75 0 0 1 11.25 18H5a1 1 0 0 1-1-1V3Zm2.5 5.5v-4H11a2 2 0 1 1 0 4H6.5Zm0 2.5v4.5h4.75a2.25 2.25 0 0 0 0-4.5H6.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M4 3a1 1 0 0 1 1-1h6a4.5 4.5 0 0 1 3.274 7.587A4.75 4.75 0 0 1 11.25 18H5a1 1 0 0 1-1-1V3Zm2.5 5.5v-4H11a2 2 0 1 1 0 4H6.5Zm0 2.5v4.5h4.75a2.25 2.25 0 0 0 0-4.5H6.5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M8 2.75A.75.75 0 0 1 8.75 2h7.5a.75.75 0 0 1 0 1.5h-3.215l-4.483 13h2.698a.75.75 0 0 1 0 1.5h-7.5a.75.75 0 0 1 0-1.5h3.215l4.483-13H8.75A.75.75 0 0 1 8 2.75Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M8 2.75A.75.75 0 0 1 8.75 2h7.5a.75.75 0 0 1 0 1.5h-3.215l-4.483 13h2.698a.75.75 0 0 1 0 1.5h-7.5a.75.75 0 0 1 0-1.5h3.215l4.483-13H8.75A.75.75 0 0 1 8 2.75Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M11.617 3.963c-1.186-.318-2.418-.323-3.416.015-.992.336-1.49.91-1.642 1.476-.152.566-.007 1.313.684 2.1.528.6 1.273 1.1 2.128 1.446h7.879a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5h3.813a5.976 5.976 0 0 1-.447-.456C5.18 7.479 4.798 6.231 5.11 5.066c.312-1.164 1.268-2.055 2.61-2.509 1.336-.451 2.877-.42 4.286-.043.856.23 1.684.592 2.409 1.074a.75.75 0 1 1-.83 1.25 6.723 6.723 0 0 0-1.968-.875Zm1.909 8.123a.75.75 0 0 1 1.015.309c.53.99.607 2.062.18 3.01-.421.94-1.289 1.648-2.441 2.038-1.336.452-2.877.42-4.286.043-1.409-.377-2.759-1.121-3.69-2.18a.75.75 0 1 1 1.127-.99c.696.791 1.765 1.403 2.952 1.721 1.186.318 2.418.323 3.416-.015.853-.288 1.34-.756 1.555-1.232.21-.467.205-1.049-.136-1.69a.75.75 0 0 1 .308-1.014Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M11.617 3.963c-1.186-.318-2.418-.323-3.416.015-.992.336-1.49.91-1.642 1.476-.152.566-.007 1.313.684 2.1.528.6 1.273 1.1 2.128 1.446h7.879a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5h3.813a5.976 5.976 0 0 1-.447-.456C5.18 7.479 4.798 6.231 5.11 5.066c.312-1.164 1.268-2.055 2.61-2.509 1.336-.451 2.877-.42 4.286-.043.856.23 1.684.592 2.409 1.074a.75.75 0 1 1-.83 1.25 6.723 6.723 0 0 0-1.968-.875Zm1.909 8.123a.75.75 0 0 1 1.015.309c.53.99.607 2.062.18 3.01-.421.94-1.289 1.648-2.441 2.038-1.336.452-2.877.42-4.286.043-1.409-.377-2.759-1.121-3.69-2.18a.75.75 0 1 1 1.127-.99c.696.791 1.765 1.403 2.952 1.721 1.186.318 2.418.323 3.416-.015.853-.288 1.34-.756 1.555-1.232.21-.467.205-1.049-.136-1.69a.75.75 0 0 1 .308-1.014Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath d='M12.232 4.232a2.5 2.5 0 0 1 3.536 3.536l-1.225 1.224a.75.75 0 0 0 1.061 1.06l1.224-1.224a4 4 0 0 0-5.656-5.656l-3 3a4 4 0 0 0 .225 5.865.75.75 0 0 0 .977-1.138 2.5 2.5 0 0 1-.142-3.667l3-3Z'/%3E%3Cpath d='M11.603 7.963a.75.75 0 0 0-.977 1.138 2.5 2.5 0 0 1 .142 3.667l-3 3a2.5 2.5 0 0 1-3.536-3.536l1.225-1.224a.75.75 0 0 0-1.061-1.06l-1.224 1.224a4 4 0 1 0 5.656 5.656l3-3a4 4 0 0 0-.225-5.865Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath d='M12.232 4.232a2.5 2.5 0 0 1 3.536 3.536l-1.225 1.224a.75.75 0 0 0 1.061 1.06l1.224-1.224a4 4 0 0 0-5.656-5.656l-3 3a4 4 0 0 0 .225 5.865.75.75 0 0 0 .977-1.138 2.5 2.5 0 0 1-.142-3.667l3-3Z'/%3E%3Cpath d='M11.603 7.963a.75.75 0 0 0-.977 1.138 2.5 2.5 0 0 1 .142 3.667l-3 3a2.5 2.5 0 0 1-3.536-3.536l1.225-1.224a.75.75 0 0 0-1.061-1.06l-1.224 1.224a4 4 0 1 0 5.656 5.656l3-3a4 4 0 0 0-.225-5.865Z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M2.75 4a.75.75 0 0 1 .75.75v4.5h5v-4.5a.75.75 0 0 1 1.5 0v10.5a.75.75 0 0 1-1.5 0v-4.5h-5v4.5a.75.75 0 0 1-1.5 0V4.75A.75.75 0 0 1 2.75 4ZM13 8.75a.75.75 0 0 1 .75-.75h1.75a.75.75 0 0 1 .75.75v5.75h1a.75.75 0 0 1 0 1.5h-3.5a.75.75 0 0 1 0-1.5h1v-5h-1a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M2.75 4a.75.75 0 0 1 .75.75v4.5h5v-4.5a.75.75 0 0 1 1.5 0v10.5a.75.75 0 0 1-1.5 0v-4.5h-5v4.5a.75.75 0 0 1-1.5 0V4.75A.75.75 0 0 1 2.75 4ZM13 8.75a.75.75 0 0 1 .75-.75h1.75a.75.75 0 0 1 .75.75v5.75h1a.75.75 0 0 1 0 1.5h-3.5a.75.75 0 0 1 0-1.5h1v-5h-1a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M10 2c-2.236 0-4.43.18-6.57.524C1.993 2.755 1 4.014 1 5.426v5.148c0 1.413.993 2.67 2.43 2.902 1.168.188 2.352.327 3.55.414.28.02.521.18.642.413l1.713 3.293a.75.75 0 0 0 1.33 0l1.713-3.293a.783.783 0 0 1 .642-.413 41.102 41.102 0 0 0 3.55-.414c1.437-.231 2.43-1.49 2.43-2.902V5.426c0-1.413-.993-2.67-2.43-2.902A41.289 41.289 0 0 0 10 2ZM6.75 6a.75.75 0 0 0 0 1.5h6.5a.75.75 0 0 0 0-1.5h-6.5Zm0 2.5a.75.75 0 0 0 0 1.5h3.5a.75.75 0 0 0 0-1.5h-3.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M10 2c-2.236 0-4.43.18-6.57.524C1.993 2.755 1 4.014 1 5.426v5.148c0 1.413.993 2.67 2.43 2.902 1.168.188 2.352.327 3.55.414.28.02.521.18.642.413l1.713 3.293a.75.75 0 0 0 1.33 0l1.713-3.293a.783.783 0 0 1 .642-.413 41.102 41.102 0 0 0 3.55-.414c1.437-.231 2.43-1.49 2.43-2.902V5.426c0-1.413-.993-2.67-2.43-2.902A41.289 41.289 0 0 0 10 2ZM6.75 6a.75.75 0 0 0 0 1.5h6.5a.75.75 0 0 0 0-1.5h-6.5Zm0 2.5a.75.75 0 0 0 0 1.5h3.5a.75.75 0 0 0 0-1.5h-3.5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M6.28 5.22a.75.75 0 0 1 0 1.06L2.56 10l3.72 3.72a.75.75 0 0 1-1.06 1.06L.97 10.53a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0Zm7.44 0a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L17.44 10l-3.72-3.72a.75.75 0 0 1 0-1.06Zm-2.343-3.209a.75.75 0 0 1 .612.867l-2.5 14.5a.75.75 0 0 1-1.478-.255l2.5-14.5a.75.75 0 0 1 .866-.612Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M6.28 5.22a.75.75 0 0 1 0 1.06L2.56 10l3.72 3.72a.75.75 0 0 1-1.06 1.06L.97 10.53a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0Zm7.44 0a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L17.44 10l-3.72-3.72a.75.75 0 0 1 0-1.06Zm-2.343-3.209a.75.75 0 0 1 .612.867l-2.5 14.5a.75.75 0 0 1-1.478-.255l2.5-14.5a.75.75 0 0 1 .866-.612Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M6 4.75A.75.75 0 0 1 6.75 4h10.5a.75.75 0 0 1 0 1.5H6.75A.75.75 0 0 1 6 4.75ZM6 10a.75.75 0 0 1 .75-.75h10.5a.75.75 0 0 1 0 1.5H6.75A.75.75 0 0 1 6 10Zm0 5.25a.75.75 0 0 1 .75-.75h10.5a.75.75 0 0 1 0 1.5H6.75a.75.75 0 0 1-.75-.75ZM1.99 4.75a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v.01a1 1 0 0 1-1 1h-.01a1 1 0 0 1-1-1v-.01Zm0 10.5a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v.01a1 1 0 0 1-1 1h-.01a1 1 0 0 1-1-1v-.01Zm0-5.25a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v.01a1 1 0 0 1-1 1h-.01a1 1 0 0 1-1-1V10Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M6 4.75A.75.75 0 0 1 6.75 4h10.5a.75.75 0 0 1 0 1.5H6.75A.75.75 0 0 1 6 4.75ZM6 10a.75.75 0 0 1 .75-.75h10.5a.75.75 0 0 1 0 1.5H6.75A.75.75 0 0 1 6 10Zm0 5.25a.75.75 0 0 1 .75-.75h10.5a.75.75 0 0 1 0 1.5H6.75a.75.75 0 0 1-.75-.75ZM1.99 4.75a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v.01a1 1 0 0 1-1 1h-.01a1 1 0 0 1-1-1v-.01Zm0 10.5a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v.01a1 1 0 0 1-1 1h-.01a1 1 0 0 1-1-1v-.01Zm0-5.25a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v.01a1 1 0 0 1-1 1h-.01a1 1 0 0 1-1-1V10Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath d='M3 1.25a.75.75 0 0 0 0 1.5h.25v2.5a.75.75 0 0 0 1.5 0V2A.75.75 0 0 0 4 1.25H3Zm-.03 7.404a3.5 3.5 0 0 1 1.524-.12.034.034 0 0 1-.012.012L2.415 9.579A.75.75 0 0 0 2 10.25v1c0 .414.336.75.75.75h2.5a.75.75 0 0 0 0-1.5H3.927l1.225-.613c.52-.26.848-.79.848-1.371 0-.647-.429-1.327-1.193-1.451a5.03 5.03 0 0 0-2.277.155.75.75 0 0 0 .44 1.434ZM7.75 3a.75.75 0 0 0 0 1.5h9.5a.75.75 0 0 0 0-1.5h-9.5Zm0 6.25a.75.75 0 0 0 0 1.5h9.5a.75.75 0 0 0 0-1.5h-9.5Zm0 6.25a.75.75 0 0 0 0 1.5h9.5a.75.75 0 0 0 0-1.5h-9.5Zm-5.125-1.625a.75.75 0 0 0 0 1.5h1.5a.125.125 0 0 1 0 .25H3.5a.75.75 0 0 0 0 1.5h.625a.125.125 0 0 1 0 .25h-1.5a.75.75 0 0 0 0 1.5h1.5a1.625 1.625 0 0 0 1.37-2.5 1.625 1.625 0 0 0-1.37-2.5h-1.5Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath d='M3 1.25a.75.75 0 0 0 0 1.5h.25v2.5a.75.75 0 0 0 1.5 0V2A.75.75 0 0 0 4 1.25H3Zm-.03 7.404a3.5 3.5 0 0 1 1.524-.12.034.034 0 0 1-.012.012L2.415 9.579A.75.75 0 0 0 2 10.25v1c0 .414.336.75.75.75h2.5a.75.75 0 0 0 0-1.5H3.927l1.225-.613c.52-.26.848-.79.848-1.371 0-.647-.429-1.327-1.193-1.451a5.03 5.03 0 0 0-2.277.155.75.75 0 0 0 .44 1.434ZM7.75 3a.75.75 0 0 0 0 1.5h9.5a.75.75 0 0 0 0-1.5h-9.5Zm0 6.25a.75.75 0 0 0 0 1.5h9.5a.75.75 0 0 0 0-1.5h-9.5Zm0 6.25a.75.75 0 0 0 0 1.5h9.5a.75.75 0 0 0 0-1.5h-9.5Zm-5.125-1.625a.75.75 0 0 0 0 1.5h1.5a.125.125 0 0 1 0 .25H3.5a.75.75 0 0 0 0 1.5h.625a.125.125 0 0 1 0 .25h-1.5a.75.75 0 0 0 0 1.5h1.5a1.625 1.625 0 0 0 1.37-2.5 1.625 1.625 0 0 0-1.37-2.5h-1.5Z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M.99 5.24A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25l.01 9.5A2.25 2.25 0 0 1 16.76 17H3.26A2.267 2.267 0 0 1 1 14.74l-.01-9.5Zm8.26 9.52v-.625a.75.75 0 0 0-.75-.75H3.25a.75.75 0 0 0-.75.75v.615c0 .414.336.75.75.75h5.373a.75.75 0 0 0 .627-.74Zm1.5 0a.75.75 0 0 0 .627.74h5.373a.75.75 0 0 0 .75-.75v-.615a.75.75 0 0 0-.75-.75H11.5a.75.75 0 0 0-.75.75v.625Zm6.75-3.63v-.625a.75.75 0 0 0-.75-.75H11.5a.75.75 0 0 0-.75.75v.625c0 .414.336.75.75.75h5.25a.75.75 0 0 0 .75-.75Zm-8.25 0v-.625a.75.75 0 0 0-.75-.75H3.25a.75.75 0 0 0-.75.75v.625c0 .414.336.75.75.75H8.5a.75.75 0 0 0 .75-.75ZM17.5 7.5v-.625a.75.75 0 0 0-.75-.75H11.5a.75.75 0 0 0-.75.75V7.5c0 .414.336.75.75.75h5.25a.75.75 0 0 0 .75-.75Zm-8.25 0v-.625a.75.75 0 0 0-.75-.75H3.25a.75.75 0 0 0-.75.75V7.5c0 .414.336.75.75.75H8.5a.75.75 0 0 0 .75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M.99 5.24A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25l.01 9.5A2.25 2.25 0 0 1 16.76 17H3.26A2.267 2.267 0 0 1 1 14.74l-.01-9.5Zm8.26 9.52v-.625a.75.75 0 0 0-.75-.75H3.25a.75.75 0 0 0-.75.75v.615c0 .414.336.75.75.75h5.373a.75.75 0 0 0 .627-.74Zm1.5 0a.75.75 0 0 0 .627.74h5.373a.75.75 0 0 0 .75-.75v-.615a.75.75 0 0 0-.75-.75H11.5a.75.75 0 0 0-.75.75v.625Zm6.75-3.63v-.625a.75.75 0 0 0-.75-.75H11.5a.75.75 0 0 0-.75.75v.625c0 .414.336.75.75.75h5.25a.75.75 0 0 0 .75-.75Zm-8.25 0v-.625a.75.75 0 0 0-.75-.75H3.25a.75.75 0 0 0-.75.75v.625c0 .414.336.75.75.75H8.5a.75.75 0 0 0 .75-.75ZM17.5 7.5v-.625a.75.75 0 0 0-.75-.75H11.5a.75.75 0 0 0-.75.75V7.5c0 .414.336.75.75.75h5.25a.75.75 0 0 0 .75-.75Zm-8.25 0v-.625a.75.75 0 0 0-.75-.75H3.25a.75.75 0 0 0-.75.75V7.5c0 .414.336.75.75.75H8.5a.75.75 0 0 0 .75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M7.793 2.232a.75.75 0 0 1-.025 1.06L3.622 7.25h10.003a5.375 5.375 0 0 1 0 10.75H10.75a.75.75 0 0 1 0-1.5h2.875a3.875 3.875 0 0 0 0-7.75H3.622l4.146 3.957a.75.75 0 0 1-1.036 1.085l-5.5-5.25a.75.75 0 0 1 0-1.085l5.5-5.25a.75.75 0 0 1 1.06.025Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M7.793 2.232a.75.75 0 0 1-.025 1.06L3.622 7.25h10.003a5.375 5.375 0 0 1 0 10.75H10.75a.75.75 0 0 1 0-1.5h2.875a3.875 3.875 0 0 0 0-7.75H3.622l4.146 3.957a.75.75 0 0 1-1.036 1.085l-5.5-5.25a.75.75 0 0 1 0-1.085l5.5-5.25a.75.75 0 0 1 1.06.025Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M12.207 2.232a.75.75 0 0 0 .025 1.06l4.146 3.958H6.375a5.375 5.375 0 0 0 0 10.75H9.25a.75.75 0 0 0 0-1.5H6.375a3.875 3.875 0 0 1 0-7.75h10.003l-4.146 3.957a.75.75 0 0 0 1.036 1.085l5.5-5.25a.75.75 0 0 0 0-1.085l-5.5-5.25a.75.75 0 0 0-1.06.025Z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' class='size-5'%3E%3Cpath fill-rule='evenodd' d='M12.207 2.232a.75.75 0 0 0 .025 1.06l4.146 3.958H6.375a5.375 5.375 0 0 0 0 10.75H9.25a.75.75 0 0 0 0-1.5H6.375a3.875 3.875 0 0 1 0-7.75h10.003l-4.146 3.957a.75.75 0 0 0 1.036 1.085l5.5-5.25a.75.75 0 0 0 0-1.085l-5.5-5.25a.75.75 0 0 0-1.06.025Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}.fi-fo-rich-editor trix-toolbar .trix-dialog:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button:is(.dark *){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:is(.dark *):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.choices__list--single .choices__item:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}.choices__list--multiple .choices__item:is(.dark *){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}.choices__list--dropdown:is(.dark *),.choices__list[aria-expanded]:is(.dark *){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__item--choice:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted:is(.dark *),.choices__list[aria-expanded] .choices__item--selectable.is-highlighted:is(.dark *){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__item--disabled:disabled:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}.choices.is-disabled .choices__placeholder.choices__item:is(.dark *),.choices__placeholder.choices__item:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}.choices[data-type*=select-one] .choices__button:is(.dark *){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}.choices[data-type*=select-multiple] .choices__button:is(.dark *){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}.choices[data-type*=select-multiple] .choices__button:focus-visible:is(.dark *),.choices[data-type*=select-multiple] .choices__button:hover:is(.dark *),.choices[data-type*=select-one] .choices__button:focus-visible:is(.dark *),.choices[data-type*=select-one] .choices__button:hover:is(.dark *){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__input:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:disabled:is(.dark *){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}.choices__group:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information:
cropperjs/dist/cropper.min.css:
(*!
diff --git a/public/vendor/livewire/livewire.esm.js b/public/vendor/livewire/livewire.esm.js
new file mode 100644
index 0000000..2d7ef47
--- /dev/null
+++ b/public/vendor/livewire/livewire.esm.js
@@ -0,0 +1,10926 @@
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
+
+// ../alpine/packages/alpinejs/dist/module.cjs.js
+var require_module_cjs = __commonJS({
+ "../alpine/packages/alpinejs/dist/module.cjs.js"(exports, module) {
+ var __create2 = Object.create;
+ var __defProp2 = Object.defineProperty;
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
+ var __getProtoOf2 = Object.getPrototypeOf;
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
+ var __commonJS2 = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+ };
+ var __export = (target, all2) => {
+ for (var name in all2)
+ __defProp2(target, name, { get: all2[name], enumerable: true });
+ };
+ var __copyProps2 = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames2(from))
+ if (!__hasOwnProp2.call(to, key) && key !== except)
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
+ }
+ return to;
+ };
+ var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target, mod));
+ var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
+ var require_shared_cjs = __commonJS2({
+ "node_modules/@vue/shared/dist/shared.cjs.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ function makeMap(str, expectsLowerCase) {
+ const map = /* @__PURE__ */ Object.create(null);
+ const list = str.split(",");
+ for (let i = 0; i < list.length; i++) {
+ map[list[i]] = true;
+ }
+ return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
+ }
+ var PatchFlagNames = {
+ [1]: `TEXT`,
+ [2]: `CLASS`,
+ [4]: `STYLE`,
+ [8]: `PROPS`,
+ [16]: `FULL_PROPS`,
+ [32]: `HYDRATE_EVENTS`,
+ [64]: `STABLE_FRAGMENT`,
+ [128]: `KEYED_FRAGMENT`,
+ [256]: `UNKEYED_FRAGMENT`,
+ [512]: `NEED_PATCH`,
+ [1024]: `DYNAMIC_SLOTS`,
+ [2048]: `DEV_ROOT_FRAGMENT`,
+ [-1]: `HOISTED`,
+ [-2]: `BAIL`
+ };
+ var slotFlagsText = {
+ [1]: "STABLE",
+ [2]: "DYNAMIC",
+ [3]: "FORWARDED"
+ };
+ var GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt";
+ var isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
+ var range = 2;
+ function generateCodeFrame(source, start22 = 0, end = source.length) {
+ let lines = source.split(/(\r?\n)/);
+ const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
+ lines = lines.filter((_, idx) => idx % 2 === 0);
+ let count = 0;
+ const res = [];
+ for (let i = 0; i < lines.length; i++) {
+ count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);
+ if (count >= start22) {
+ for (let j = i - range; j <= i + range || end > count; j++) {
+ if (j < 0 || j >= lines.length)
+ continue;
+ const line = j + 1;
+ res.push(`${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);
+ const lineLength = lines[j].length;
+ const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;
+ if (j === i) {
+ const pad = start22 - (count - (lineLength + newLineSeqLength));
+ const length = Math.max(1, end > count ? lineLength - pad : end - start22);
+ res.push(` | ` + " ".repeat(pad) + "^".repeat(length));
+ } else if (j > i) {
+ if (end > count) {
+ const length = Math.max(Math.min(end - count, lineLength), 1);
+ res.push(` | ` + "^".repeat(length));
+ }
+ count += lineLength + newLineSeqLength;
+ }
+ }
+ break;
+ }
+ }
+ return res.join("\n");
+ }
+ var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
+ var isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
+ var isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);
+ var unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
+ var attrValidationCache = {};
+ function isSSRSafeAttrName(name) {
+ if (attrValidationCache.hasOwnProperty(name)) {
+ return attrValidationCache[name];
+ }
+ const isUnsafe = unsafeAttrCharRE.test(name);
+ if (isUnsafe) {
+ console.error(`unsafe attribute name: ${name}`);
+ }
+ return attrValidationCache[name] = !isUnsafe;
+ }
+ var propsToAttrMap = {
+ acceptCharset: "accept-charset",
+ className: "class",
+ htmlFor: "for",
+ httpEquiv: "http-equiv"
+ };
+ var isNoUnitNumericStyleProp = /* @__PURE__ */ makeMap(`animation-iteration-count,border-image-outset,border-image-slice,border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-miterlimit,stroke-opacity,stroke-width`);
+ var isKnownAttr = /* @__PURE__ */ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`);
+ function normalizeStyle(value) {
+ if (isArray2(value)) {
+ const res = {};
+ for (let i = 0; i < value.length; i++) {
+ const item = value[i];
+ const normalized = normalizeStyle(isString(item) ? parseStringStyle(item) : item);
+ if (normalized) {
+ for (const key in normalized) {
+ res[key] = normalized[key];
+ }
+ }
+ }
+ return res;
+ } else if (isObject2(value)) {
+ return value;
+ }
+ }
+ var listDelimiterRE = /;(?![^(]*\))/g;
+ var propertyDelimiterRE = /:(.+)/;
+ function parseStringStyle(cssText) {
+ const ret = {};
+ cssText.split(listDelimiterRE).forEach((item) => {
+ if (item) {
+ const tmp = item.split(propertyDelimiterRE);
+ tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
+ }
+ });
+ return ret;
+ }
+ function stringifyStyle(styles) {
+ let ret = "";
+ if (!styles) {
+ return ret;
+ }
+ for (const key in styles) {
+ const value = styles[key];
+ const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
+ if (isString(value) || typeof value === "number" && isNoUnitNumericStyleProp(normalizedKey)) {
+ ret += `${normalizedKey}:${value};`;
+ }
+ }
+ return ret;
+ }
+ function normalizeClass(value) {
+ let res = "";
+ if (isString(value)) {
+ res = value;
+ } else if (isArray2(value)) {
+ for (let i = 0; i < value.length; i++) {
+ const normalized = normalizeClass(value[i]);
+ if (normalized) {
+ res += normalized + " ";
+ }
+ }
+ } else if (isObject2(value)) {
+ for (const name in value) {
+ if (value[name]) {
+ res += name + " ";
+ }
+ }
+ }
+ return res.trim();
+ }
+ var HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
+ var SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
+ var VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
+ var isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
+ var isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
+ var isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
+ var escapeRE = /["'&<>]/;
+ function escapeHtml(string) {
+ const str = "" + string;
+ const match = escapeRE.exec(str);
+ if (!match) {
+ return str;
+ }
+ let html = "";
+ let escaped;
+ let index;
+ let lastIndex = 0;
+ for (index = match.index; index < str.length; index++) {
+ switch (str.charCodeAt(index)) {
+ case 34:
+ escaped = """;
+ break;
+ case 38:
+ escaped = "&";
+ break;
+ case 39:
+ escaped = "'";
+ break;
+ case 60:
+ escaped = "<";
+ break;
+ case 62:
+ escaped = ">";
+ break;
+ default:
+ continue;
+ }
+ if (lastIndex !== index) {
+ html += str.substring(lastIndex, index);
+ }
+ lastIndex = index + 1;
+ html += escaped;
+ }
+ return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
+ }
+ var commentStripRE = /^-?>||--!>| looseEqual(item, val));
+ }
+ var toDisplayString = (val) => {
+ return val == null ? "" : isObject2(val) ? JSON.stringify(val, replacer, 2) : String(val);
+ };
+ var replacer = (_key, val) => {
+ if (isMap(val)) {
+ return {
+ [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
+ entries[`${key} =>`] = val2;
+ return entries;
+ }, {})
+ };
+ } else if (isSet(val)) {
+ return {
+ [`Set(${val.size})`]: [...val.values()]
+ };
+ } else if (isObject2(val) && !isArray2(val) && !isPlainObject(val)) {
+ return String(val);
+ }
+ return val;
+ };
+ var babelParserDefaultPlugins = [
+ "bigInt",
+ "optionalChaining",
+ "nullishCoalescingOperator"
+ ];
+ var EMPTY_OBJ = Object.freeze({});
+ var EMPTY_ARR = Object.freeze([]);
+ var NOOP = () => {
+ };
+ var NO = () => false;
+ var onRE = /^on[^a-z]/;
+ var isOn = (key) => onRE.test(key);
+ var isModelListener = (key) => key.startsWith("onUpdate:");
+ var extend = Object.assign;
+ var remove = (arr, el) => {
+ const i = arr.indexOf(el);
+ if (i > -1) {
+ arr.splice(i, 1);
+ }
+ };
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ var hasOwn = (val, key) => hasOwnProperty.call(val, key);
+ var isArray2 = Array.isArray;
+ var isMap = (val) => toTypeString(val) === "[object Map]";
+ var isSet = (val) => toTypeString(val) === "[object Set]";
+ var isDate = (val) => val instanceof Date;
+ var isFunction2 = (val) => typeof val === "function";
+ var isString = (val) => typeof val === "string";
+ var isSymbol = (val) => typeof val === "symbol";
+ var isObject2 = (val) => val !== null && typeof val === "object";
+ var isPromise = (val) => {
+ return isObject2(val) && isFunction2(val.then) && isFunction2(val.catch);
+ };
+ var objectToString = Object.prototype.toString;
+ var toTypeString = (value) => objectToString.call(value);
+ var toRawType = (value) => {
+ return toTypeString(value).slice(8, -1);
+ };
+ var isPlainObject = (val) => toTypeString(val) === "[object Object]";
+ var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
+ var isReservedProp = /* @__PURE__ */ makeMap(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");
+ var cacheStringFunction = (fn) => {
+ const cache = /* @__PURE__ */ Object.create(null);
+ return (str) => {
+ const hit = cache[str];
+ return hit || (cache[str] = fn(str));
+ };
+ };
+ var camelizeRE = /-(\w)/g;
+ var camelize = cacheStringFunction((str) => {
+ return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
+ });
+ var hyphenateRE = /\B([A-Z])/g;
+ var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
+ var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
+ var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
+ var hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);
+ var invokeArrayFns = (fns, arg) => {
+ for (let i = 0; i < fns.length; i++) {
+ fns[i](arg);
+ }
+ };
+ var def = (obj, key, value) => {
+ Object.defineProperty(obj, key, {
+ configurable: true,
+ enumerable: false,
+ value
+ });
+ };
+ var toNumber = (val) => {
+ const n = parseFloat(val);
+ return isNaN(n) ? val : n;
+ };
+ var _globalThis;
+ var getGlobalThis = () => {
+ return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
+ };
+ exports2.EMPTY_ARR = EMPTY_ARR;
+ exports2.EMPTY_OBJ = EMPTY_OBJ;
+ exports2.NO = NO;
+ exports2.NOOP = NOOP;
+ exports2.PatchFlagNames = PatchFlagNames;
+ exports2.babelParserDefaultPlugins = babelParserDefaultPlugins;
+ exports2.camelize = camelize;
+ exports2.capitalize = capitalize;
+ exports2.def = def;
+ exports2.escapeHtml = escapeHtml;
+ exports2.escapeHtmlComment = escapeHtmlComment;
+ exports2.extend = extend;
+ exports2.generateCodeFrame = generateCodeFrame;
+ exports2.getGlobalThis = getGlobalThis;
+ exports2.hasChanged = hasChanged;
+ exports2.hasOwn = hasOwn;
+ exports2.hyphenate = hyphenate;
+ exports2.invokeArrayFns = invokeArrayFns;
+ exports2.isArray = isArray2;
+ exports2.isBooleanAttr = isBooleanAttr2;
+ exports2.isDate = isDate;
+ exports2.isFunction = isFunction2;
+ exports2.isGloballyWhitelisted = isGloballyWhitelisted;
+ exports2.isHTMLTag = isHTMLTag;
+ exports2.isIntegerKey = isIntegerKey;
+ exports2.isKnownAttr = isKnownAttr;
+ exports2.isMap = isMap;
+ exports2.isModelListener = isModelListener;
+ exports2.isNoUnitNumericStyleProp = isNoUnitNumericStyleProp;
+ exports2.isObject = isObject2;
+ exports2.isOn = isOn;
+ exports2.isPlainObject = isPlainObject;
+ exports2.isPromise = isPromise;
+ exports2.isReservedProp = isReservedProp;
+ exports2.isSSRSafeAttrName = isSSRSafeAttrName;
+ exports2.isSVGTag = isSVGTag;
+ exports2.isSet = isSet;
+ exports2.isSpecialBooleanAttr = isSpecialBooleanAttr;
+ exports2.isString = isString;
+ exports2.isSymbol = isSymbol;
+ exports2.isVoidTag = isVoidTag;
+ exports2.looseEqual = looseEqual;
+ exports2.looseIndexOf = looseIndexOf;
+ exports2.makeMap = makeMap;
+ exports2.normalizeClass = normalizeClass;
+ exports2.normalizeStyle = normalizeStyle;
+ exports2.objectToString = objectToString;
+ exports2.parseStringStyle = parseStringStyle;
+ exports2.propsToAttrMap = propsToAttrMap;
+ exports2.remove = remove;
+ exports2.slotFlagsText = slotFlagsText;
+ exports2.stringifyStyle = stringifyStyle;
+ exports2.toDisplayString = toDisplayString;
+ exports2.toHandlerKey = toHandlerKey;
+ exports2.toNumber = toNumber;
+ exports2.toRawType = toRawType;
+ exports2.toTypeString = toTypeString;
+ }
+ });
+ var require_shared = __commonJS2({
+ "node_modules/@vue/shared/index.js"(exports2, module2) {
+ "use strict";
+ if (false) {
+ module2.exports = null;
+ } else {
+ module2.exports = require_shared_cjs();
+ }
+ }
+ });
+ var require_reactivity_cjs = __commonJS2({
+ "node_modules/@vue/reactivity/dist/reactivity.cjs.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var shared = require_shared();
+ var targetMap = /* @__PURE__ */ new WeakMap();
+ var effectStack = [];
+ var activeEffect;
+ var ITERATE_KEY = Symbol("iterate");
+ var MAP_KEY_ITERATE_KEY = Symbol("Map key iterate");
+ function isEffect(fn) {
+ return fn && fn._isEffect === true;
+ }
+ function effect3(fn, options = shared.EMPTY_OBJ) {
+ if (isEffect(fn)) {
+ fn = fn.raw;
+ }
+ const effect4 = createReactiveEffect(fn, options);
+ if (!options.lazy) {
+ effect4();
+ }
+ return effect4;
+ }
+ function stop2(effect4) {
+ if (effect4.active) {
+ cleanup(effect4);
+ if (effect4.options.onStop) {
+ effect4.options.onStop();
+ }
+ effect4.active = false;
+ }
+ }
+ var uid = 0;
+ function createReactiveEffect(fn, options) {
+ const effect4 = function reactiveEffect() {
+ if (!effect4.active) {
+ return fn();
+ }
+ if (!effectStack.includes(effect4)) {
+ cleanup(effect4);
+ try {
+ enableTracking();
+ effectStack.push(effect4);
+ activeEffect = effect4;
+ return fn();
+ } finally {
+ effectStack.pop();
+ resetTracking();
+ activeEffect = effectStack[effectStack.length - 1];
+ }
+ }
+ };
+ effect4.id = uid++;
+ effect4.allowRecurse = !!options.allowRecurse;
+ effect4._isEffect = true;
+ effect4.active = true;
+ effect4.raw = fn;
+ effect4.deps = [];
+ effect4.options = options;
+ return effect4;
+ }
+ function cleanup(effect4) {
+ const { deps } = effect4;
+ if (deps.length) {
+ for (let i = 0; i < deps.length; i++) {
+ deps[i].delete(effect4);
+ }
+ deps.length = 0;
+ }
+ }
+ var shouldTrack = true;
+ var trackStack = [];
+ function pauseTracking() {
+ trackStack.push(shouldTrack);
+ shouldTrack = false;
+ }
+ function enableTracking() {
+ trackStack.push(shouldTrack);
+ shouldTrack = true;
+ }
+ function resetTracking() {
+ const last = trackStack.pop();
+ shouldTrack = last === void 0 ? true : last;
+ }
+ function track2(target, type, key) {
+ if (!shouldTrack || activeEffect === void 0) {
+ return;
+ }
+ let depsMap = targetMap.get(target);
+ if (!depsMap) {
+ targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
+ }
+ let dep = depsMap.get(key);
+ if (!dep) {
+ depsMap.set(key, dep = /* @__PURE__ */ new Set());
+ }
+ if (!dep.has(activeEffect)) {
+ dep.add(activeEffect);
+ activeEffect.deps.push(dep);
+ if (activeEffect.options.onTrack) {
+ activeEffect.options.onTrack({
+ effect: activeEffect,
+ target,
+ type,
+ key
+ });
+ }
+ }
+ }
+ function trigger2(target, type, key, newValue, oldValue, oldTarget) {
+ const depsMap = targetMap.get(target);
+ if (!depsMap) {
+ return;
+ }
+ const effects = /* @__PURE__ */ new Set();
+ const add2 = (effectsToAdd) => {
+ if (effectsToAdd) {
+ effectsToAdd.forEach((effect4) => {
+ if (effect4 !== activeEffect || effect4.allowRecurse) {
+ effects.add(effect4);
+ }
+ });
+ }
+ };
+ if (type === "clear") {
+ depsMap.forEach(add2);
+ } else if (key === "length" && shared.isArray(target)) {
+ depsMap.forEach((dep, key2) => {
+ if (key2 === "length" || key2 >= newValue) {
+ add2(dep);
+ }
+ });
+ } else {
+ if (key !== void 0) {
+ add2(depsMap.get(key));
+ }
+ switch (type) {
+ case "add":
+ if (!shared.isArray(target)) {
+ add2(depsMap.get(ITERATE_KEY));
+ if (shared.isMap(target)) {
+ add2(depsMap.get(MAP_KEY_ITERATE_KEY));
+ }
+ } else if (shared.isIntegerKey(key)) {
+ add2(depsMap.get("length"));
+ }
+ break;
+ case "delete":
+ if (!shared.isArray(target)) {
+ add2(depsMap.get(ITERATE_KEY));
+ if (shared.isMap(target)) {
+ add2(depsMap.get(MAP_KEY_ITERATE_KEY));
+ }
+ }
+ break;
+ case "set":
+ if (shared.isMap(target)) {
+ add2(depsMap.get(ITERATE_KEY));
+ }
+ break;
+ }
+ }
+ const run = (effect4) => {
+ if (effect4.options.onTrigger) {
+ effect4.options.onTrigger({
+ effect: effect4,
+ target,
+ key,
+ type,
+ newValue,
+ oldValue,
+ oldTarget
+ });
+ }
+ if (effect4.options.scheduler) {
+ effect4.options.scheduler(effect4);
+ } else {
+ effect4();
+ }
+ };
+ effects.forEach(run);
+ }
+ var isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`);
+ var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(shared.isSymbol));
+ var get2 = /* @__PURE__ */ createGetter();
+ var shallowGet = /* @__PURE__ */ createGetter(false, true);
+ var readonlyGet = /* @__PURE__ */ createGetter(true);
+ var shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);
+ var arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
+ function createArrayInstrumentations() {
+ const instrumentations = {};
+ ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
+ instrumentations[key] = function(...args) {
+ const arr = toRaw2(this);
+ for (let i = 0, l = this.length; i < l; i++) {
+ track2(arr, "get", i + "");
+ }
+ const res = arr[key](...args);
+ if (res === -1 || res === false) {
+ return arr[key](...args.map(toRaw2));
+ } else {
+ return res;
+ }
+ };
+ });
+ ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
+ instrumentations[key] = function(...args) {
+ pauseTracking();
+ const res = toRaw2(this)[key].apply(this, args);
+ resetTracking();
+ return res;
+ };
+ });
+ return instrumentations;
+ }
+ function createGetter(isReadonly2 = false, shallow = false) {
+ return function get3(target, key, receiver) {
+ if (key === "__v_isReactive") {
+ return !isReadonly2;
+ } else if (key === "__v_isReadonly") {
+ return isReadonly2;
+ } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {
+ return target;
+ }
+ const targetIsArray = shared.isArray(target);
+ if (!isReadonly2 && targetIsArray && shared.hasOwn(arrayInstrumentations, key)) {
+ return Reflect.get(arrayInstrumentations, key, receiver);
+ }
+ const res = Reflect.get(target, key, receiver);
+ if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
+ return res;
+ }
+ if (!isReadonly2) {
+ track2(target, "get", key);
+ }
+ if (shallow) {
+ return res;
+ }
+ if (isRef(res)) {
+ const shouldUnwrap = !targetIsArray || !shared.isIntegerKey(key);
+ return shouldUnwrap ? res.value : res;
+ }
+ if (shared.isObject(res)) {
+ return isReadonly2 ? readonly(res) : reactive3(res);
+ }
+ return res;
+ };
+ }
+ var set2 = /* @__PURE__ */ createSetter();
+ var shallowSet = /* @__PURE__ */ createSetter(true);
+ function createSetter(shallow = false) {
+ return function set3(target, key, value, receiver) {
+ let oldValue = target[key];
+ if (!shallow) {
+ value = toRaw2(value);
+ oldValue = toRaw2(oldValue);
+ if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) {
+ oldValue.value = value;
+ return true;
+ }
+ }
+ const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key);
+ const result = Reflect.set(target, key, value, receiver);
+ if (target === toRaw2(receiver)) {
+ if (!hadKey) {
+ trigger2(target, "add", key, value);
+ } else if (shared.hasChanged(value, oldValue)) {
+ trigger2(target, "set", key, value, oldValue);
+ }
+ }
+ return result;
+ };
+ }
+ function deleteProperty(target, key) {
+ const hadKey = shared.hasOwn(target, key);
+ const oldValue = target[key];
+ const result = Reflect.deleteProperty(target, key);
+ if (result && hadKey) {
+ trigger2(target, "delete", key, void 0, oldValue);
+ }
+ return result;
+ }
+ function has(target, key) {
+ const result = Reflect.has(target, key);
+ if (!shared.isSymbol(key) || !builtInSymbols.has(key)) {
+ track2(target, "has", key);
+ }
+ return result;
+ }
+ function ownKeys(target) {
+ track2(target, "iterate", shared.isArray(target) ? "length" : ITERATE_KEY);
+ return Reflect.ownKeys(target);
+ }
+ var mutableHandlers = {
+ get: get2,
+ set: set2,
+ deleteProperty,
+ has,
+ ownKeys
+ };
+ var readonlyHandlers = {
+ get: readonlyGet,
+ set(target, key) {
+ {
+ console.warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
+ }
+ return true;
+ },
+ deleteProperty(target, key) {
+ {
+ console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
+ }
+ return true;
+ }
+ };
+ var shallowReactiveHandlers = /* @__PURE__ */ shared.extend({}, mutableHandlers, {
+ get: shallowGet,
+ set: shallowSet
+ });
+ var shallowReadonlyHandlers = /* @__PURE__ */ shared.extend({}, readonlyHandlers, {
+ get: shallowReadonlyGet
+ });
+ var toReactive = (value) => shared.isObject(value) ? reactive3(value) : value;
+ var toReadonly = (value) => shared.isObject(value) ? readonly(value) : value;
+ var toShallow = (value) => value;
+ var getProto = (v) => Reflect.getPrototypeOf(v);
+ function get$1(target, key, isReadonly2 = false, isShallow = false) {
+ target = target["__v_raw"];
+ const rawTarget = toRaw2(target);
+ const rawKey = toRaw2(key);
+ if (key !== rawKey) {
+ !isReadonly2 && track2(rawTarget, "get", key);
+ }
+ !isReadonly2 && track2(rawTarget, "get", rawKey);
+ const { has: has2 } = getProto(rawTarget);
+ const wrap = isShallow ? toShallow : isReadonly2 ? toReadonly : toReactive;
+ if (has2.call(rawTarget, key)) {
+ return wrap(target.get(key));
+ } else if (has2.call(rawTarget, rawKey)) {
+ return wrap(target.get(rawKey));
+ } else if (target !== rawTarget) {
+ target.get(key);
+ }
+ }
+ function has$1(key, isReadonly2 = false) {
+ const target = this["__v_raw"];
+ const rawTarget = toRaw2(target);
+ const rawKey = toRaw2(key);
+ if (key !== rawKey) {
+ !isReadonly2 && track2(rawTarget, "has", key);
+ }
+ !isReadonly2 && track2(rawTarget, "has", rawKey);
+ return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
+ }
+ function size(target, isReadonly2 = false) {
+ target = target["__v_raw"];
+ !isReadonly2 && track2(toRaw2(target), "iterate", ITERATE_KEY);
+ return Reflect.get(target, "size", target);
+ }
+ function add(value) {
+ value = toRaw2(value);
+ const target = toRaw2(this);
+ const proto = getProto(target);
+ const hadKey = proto.has.call(target, value);
+ if (!hadKey) {
+ target.add(value);
+ trigger2(target, "add", value, value);
+ }
+ return this;
+ }
+ function set$1(key, value) {
+ value = toRaw2(value);
+ const target = toRaw2(this);
+ const { has: has2, get: get3 } = getProto(target);
+ let hadKey = has2.call(target, key);
+ if (!hadKey) {
+ key = toRaw2(key);
+ hadKey = has2.call(target, key);
+ } else {
+ checkIdentityKeys(target, has2, key);
+ }
+ const oldValue = get3.call(target, key);
+ target.set(key, value);
+ if (!hadKey) {
+ trigger2(target, "add", key, value);
+ } else if (shared.hasChanged(value, oldValue)) {
+ trigger2(target, "set", key, value, oldValue);
+ }
+ return this;
+ }
+ function deleteEntry(key) {
+ const target = toRaw2(this);
+ const { has: has2, get: get3 } = getProto(target);
+ let hadKey = has2.call(target, key);
+ if (!hadKey) {
+ key = toRaw2(key);
+ hadKey = has2.call(target, key);
+ } else {
+ checkIdentityKeys(target, has2, key);
+ }
+ const oldValue = get3 ? get3.call(target, key) : void 0;
+ const result = target.delete(key);
+ if (hadKey) {
+ trigger2(target, "delete", key, void 0, oldValue);
+ }
+ return result;
+ }
+ function clear() {
+ const target = toRaw2(this);
+ const hadItems = target.size !== 0;
+ const oldTarget = shared.isMap(target) ? new Map(target) : new Set(target);
+ const result = target.clear();
+ if (hadItems) {
+ trigger2(target, "clear", void 0, void 0, oldTarget);
+ }
+ return result;
+ }
+ function createForEach(isReadonly2, isShallow) {
+ return function forEach(callback, thisArg) {
+ const observed = this;
+ const target = observed["__v_raw"];
+ const rawTarget = toRaw2(target);
+ const wrap = isShallow ? toShallow : isReadonly2 ? toReadonly : toReactive;
+ !isReadonly2 && track2(rawTarget, "iterate", ITERATE_KEY);
+ return target.forEach((value, key) => {
+ return callback.call(thisArg, wrap(value), wrap(key), observed);
+ });
+ };
+ }
+ function createIterableMethod(method, isReadonly2, isShallow) {
+ return function(...args) {
+ const target = this["__v_raw"];
+ const rawTarget = toRaw2(target);
+ const targetIsMap = shared.isMap(rawTarget);
+ const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
+ const isKeyOnly = method === "keys" && targetIsMap;
+ const innerIterator = target[method](...args);
+ const wrap = isShallow ? toShallow : isReadonly2 ? toReadonly : toReactive;
+ !isReadonly2 && track2(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
+ return {
+ next() {
+ const { value, done } = innerIterator.next();
+ return done ? { value, done } : {
+ value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
+ done
+ };
+ },
+ [Symbol.iterator]() {
+ return this;
+ }
+ };
+ };
+ }
+ function createReadonlyMethod(type) {
+ return function(...args) {
+ {
+ const key = args[0] ? `on key "${args[0]}" ` : ``;
+ console.warn(`${shared.capitalize(type)} operation ${key}failed: target is readonly.`, toRaw2(this));
+ }
+ return type === "delete" ? false : this;
+ };
+ }
+ function createInstrumentations() {
+ const mutableInstrumentations2 = {
+ get(key) {
+ return get$1(this, key);
+ },
+ get size() {
+ return size(this);
+ },
+ has: has$1,
+ add,
+ set: set$1,
+ delete: deleteEntry,
+ clear,
+ forEach: createForEach(false, false)
+ };
+ const shallowInstrumentations2 = {
+ get(key) {
+ return get$1(this, key, false, true);
+ },
+ get size() {
+ return size(this);
+ },
+ has: has$1,
+ add,
+ set: set$1,
+ delete: deleteEntry,
+ clear,
+ forEach: createForEach(false, true)
+ };
+ const readonlyInstrumentations2 = {
+ get(key) {
+ return get$1(this, key, true);
+ },
+ get size() {
+ return size(this, true);
+ },
+ has(key) {
+ return has$1.call(this, key, true);
+ },
+ add: createReadonlyMethod("add"),
+ set: createReadonlyMethod("set"),
+ delete: createReadonlyMethod("delete"),
+ clear: createReadonlyMethod("clear"),
+ forEach: createForEach(true, false)
+ };
+ const shallowReadonlyInstrumentations2 = {
+ get(key) {
+ return get$1(this, key, true, true);
+ },
+ get size() {
+ return size(this, true);
+ },
+ has(key) {
+ return has$1.call(this, key, true);
+ },
+ add: createReadonlyMethod("add"),
+ set: createReadonlyMethod("set"),
+ delete: createReadonlyMethod("delete"),
+ clear: createReadonlyMethod("clear"),
+ forEach: createForEach(true, true)
+ };
+ const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
+ iteratorMethods.forEach((method) => {
+ mutableInstrumentations2[method] = createIterableMethod(method, false, false);
+ readonlyInstrumentations2[method] = createIterableMethod(method, true, false);
+ shallowInstrumentations2[method] = createIterableMethod(method, false, true);
+ shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);
+ });
+ return [
+ mutableInstrumentations2,
+ readonlyInstrumentations2,
+ shallowInstrumentations2,
+ shallowReadonlyInstrumentations2
+ ];
+ }
+ var [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();
+ function createInstrumentationGetter(isReadonly2, shallow) {
+ const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;
+ return (target, key, receiver) => {
+ if (key === "__v_isReactive") {
+ return !isReadonly2;
+ } else if (key === "__v_isReadonly") {
+ return isReadonly2;
+ } else if (key === "__v_raw") {
+ return target;
+ }
+ return Reflect.get(shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);
+ };
+ }
+ var mutableCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(false, false)
+ };
+ var shallowCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(false, true)
+ };
+ var readonlyCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(true, false)
+ };
+ var shallowReadonlyCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(true, true)
+ };
+ function checkIdentityKeys(target, has2, key) {
+ const rawKey = toRaw2(key);
+ if (rawKey !== key && has2.call(target, rawKey)) {
+ const type = shared.toRawType(target);
+ console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);
+ }
+ }
+ var reactiveMap = /* @__PURE__ */ new WeakMap();
+ var shallowReactiveMap = /* @__PURE__ */ new WeakMap();
+ var readonlyMap = /* @__PURE__ */ new WeakMap();
+ var shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
+ function targetTypeMap(rawType) {
+ switch (rawType) {
+ case "Object":
+ case "Array":
+ return 1;
+ case "Map":
+ case "Set":
+ case "WeakMap":
+ case "WeakSet":
+ return 2;
+ default:
+ return 0;
+ }
+ }
+ function getTargetType(value) {
+ return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(shared.toRawType(value));
+ }
+ function reactive3(target) {
+ if (target && target["__v_isReadonly"]) {
+ return target;
+ }
+ return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
+ }
+ function shallowReactive(target) {
+ return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);
+ }
+ function readonly(target) {
+ return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
+ }
+ function shallowReadonly(target) {
+ return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);
+ }
+ function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
+ if (!shared.isObject(target)) {
+ {
+ console.warn(`value cannot be made reactive: ${String(target)}`);
+ }
+ return target;
+ }
+ if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
+ return target;
+ }
+ const existingProxy = proxyMap.get(target);
+ if (existingProxy) {
+ return existingProxy;
+ }
+ const targetType = getTargetType(target);
+ if (targetType === 0) {
+ return target;
+ }
+ const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);
+ proxyMap.set(target, proxy);
+ return proxy;
+ }
+ function isReactive2(value) {
+ if (isReadonly(value)) {
+ return isReactive2(value["__v_raw"]);
+ }
+ return !!(value && value["__v_isReactive"]);
+ }
+ function isReadonly(value) {
+ return !!(value && value["__v_isReadonly"]);
+ }
+ function isProxy(value) {
+ return isReactive2(value) || isReadonly(value);
+ }
+ function toRaw2(observed) {
+ return observed && toRaw2(observed["__v_raw"]) || observed;
+ }
+ function markRaw(value) {
+ shared.def(value, "__v_skip", true);
+ return value;
+ }
+ var convert = (val) => shared.isObject(val) ? reactive3(val) : val;
+ function isRef(r) {
+ return Boolean(r && r.__v_isRef === true);
+ }
+ function ref(value) {
+ return createRef(value);
+ }
+ function shallowRef(value) {
+ return createRef(value, true);
+ }
+ var RefImpl = class {
+ constructor(value, _shallow = false) {
+ this._shallow = _shallow;
+ this.__v_isRef = true;
+ this._rawValue = _shallow ? value : toRaw2(value);
+ this._value = _shallow ? value : convert(value);
+ }
+ get value() {
+ track2(toRaw2(this), "get", "value");
+ return this._value;
+ }
+ set value(newVal) {
+ newVal = this._shallow ? newVal : toRaw2(newVal);
+ if (shared.hasChanged(newVal, this._rawValue)) {
+ this._rawValue = newVal;
+ this._value = this._shallow ? newVal : convert(newVal);
+ trigger2(toRaw2(this), "set", "value", newVal);
+ }
+ }
+ };
+ function createRef(rawValue, shallow = false) {
+ if (isRef(rawValue)) {
+ return rawValue;
+ }
+ return new RefImpl(rawValue, shallow);
+ }
+ function triggerRef(ref2) {
+ trigger2(toRaw2(ref2), "set", "value", ref2.value);
+ }
+ function unref(ref2) {
+ return isRef(ref2) ? ref2.value : ref2;
+ }
+ var shallowUnwrapHandlers = {
+ get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),
+ set: (target, key, value, receiver) => {
+ const oldValue = target[key];
+ if (isRef(oldValue) && !isRef(value)) {
+ oldValue.value = value;
+ return true;
+ } else {
+ return Reflect.set(target, key, value, receiver);
+ }
+ }
+ };
+ function proxyRefs(objectWithRefs) {
+ return isReactive2(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
+ }
+ var CustomRefImpl = class {
+ constructor(factory) {
+ this.__v_isRef = true;
+ const { get: get3, set: set3 } = factory(() => track2(this, "get", "value"), () => trigger2(this, "set", "value"));
+ this._get = get3;
+ this._set = set3;
+ }
+ get value() {
+ return this._get();
+ }
+ set value(newVal) {
+ this._set(newVal);
+ }
+ };
+ function customRef(factory) {
+ return new CustomRefImpl(factory);
+ }
+ function toRefs(object) {
+ if (!isProxy(object)) {
+ console.warn(`toRefs() expects a reactive object but received a plain one.`);
+ }
+ const ret = shared.isArray(object) ? new Array(object.length) : {};
+ for (const key in object) {
+ ret[key] = toRef(object, key);
+ }
+ return ret;
+ }
+ var ObjectRefImpl = class {
+ constructor(_object, _key) {
+ this._object = _object;
+ this._key = _key;
+ this.__v_isRef = true;
+ }
+ get value() {
+ return this._object[this._key];
+ }
+ set value(newVal) {
+ this._object[this._key] = newVal;
+ }
+ };
+ function toRef(object, key) {
+ return isRef(object[key]) ? object[key] : new ObjectRefImpl(object, key);
+ }
+ var ComputedRefImpl = class {
+ constructor(getter, _setter, isReadonly2) {
+ this._setter = _setter;
+ this._dirty = true;
+ this.__v_isRef = true;
+ this.effect = effect3(getter, {
+ lazy: true,
+ scheduler: () => {
+ if (!this._dirty) {
+ this._dirty = true;
+ trigger2(toRaw2(this), "set", "value");
+ }
+ }
+ });
+ this["__v_isReadonly"] = isReadonly2;
+ }
+ get value() {
+ const self2 = toRaw2(this);
+ if (self2._dirty) {
+ self2._value = this.effect();
+ self2._dirty = false;
+ }
+ track2(self2, "get", "value");
+ return self2._value;
+ }
+ set value(newValue) {
+ this._setter(newValue);
+ }
+ };
+ function computed(getterOrOptions) {
+ let getter;
+ let setter;
+ if (shared.isFunction(getterOrOptions)) {
+ getter = getterOrOptions;
+ setter = () => {
+ console.warn("Write operation failed: computed value is readonly");
+ };
+ } else {
+ getter = getterOrOptions.get;
+ setter = getterOrOptions.set;
+ }
+ return new ComputedRefImpl(getter, setter, shared.isFunction(getterOrOptions) || !getterOrOptions.set);
+ }
+ exports2.ITERATE_KEY = ITERATE_KEY;
+ exports2.computed = computed;
+ exports2.customRef = customRef;
+ exports2.effect = effect3;
+ exports2.enableTracking = enableTracking;
+ exports2.isProxy = isProxy;
+ exports2.isReactive = isReactive2;
+ exports2.isReadonly = isReadonly;
+ exports2.isRef = isRef;
+ exports2.markRaw = markRaw;
+ exports2.pauseTracking = pauseTracking;
+ exports2.proxyRefs = proxyRefs;
+ exports2.reactive = reactive3;
+ exports2.readonly = readonly;
+ exports2.ref = ref;
+ exports2.resetTracking = resetTracking;
+ exports2.shallowReactive = shallowReactive;
+ exports2.shallowReadonly = shallowReadonly;
+ exports2.shallowRef = shallowRef;
+ exports2.stop = stop2;
+ exports2.toRaw = toRaw2;
+ exports2.toRef = toRef;
+ exports2.toRefs = toRefs;
+ exports2.track = track2;
+ exports2.trigger = trigger2;
+ exports2.triggerRef = triggerRef;
+ exports2.unref = unref;
+ }
+ });
+ var require_reactivity = __commonJS2({
+ "node_modules/@vue/reactivity/index.js"(exports2, module2) {
+ "use strict";
+ if (false) {
+ module2.exports = null;
+ } else {
+ module2.exports = require_reactivity_cjs();
+ }
+ }
+ });
+ var module_exports = {};
+ __export(module_exports, {
+ Alpine: () => src_default,
+ default: () => module_default
+ });
+ module.exports = __toCommonJS(module_exports);
+ var flushPending = false;
+ var flushing = false;
+ var queue = [];
+ var lastFlushedIndex = -1;
+ function scheduler(callback) {
+ queueJob(callback);
+ }
+ function queueJob(job) {
+ if (!queue.includes(job))
+ queue.push(job);
+ queueFlush();
+ }
+ function dequeueJob(job) {
+ let index = queue.indexOf(job);
+ if (index !== -1 && index > lastFlushedIndex)
+ queue.splice(index, 1);
+ }
+ function queueFlush() {
+ if (!flushing && !flushPending) {
+ flushPending = true;
+ queueMicrotask(flushJobs);
+ }
+ }
+ function flushJobs() {
+ flushPending = false;
+ flushing = true;
+ for (let i = 0; i < queue.length; i++) {
+ queue[i]();
+ lastFlushedIndex = i;
+ }
+ queue.length = 0;
+ lastFlushedIndex = -1;
+ flushing = false;
+ }
+ var reactive;
+ var effect;
+ var release;
+ var raw;
+ var shouldSchedule = true;
+ function disableEffectScheduling(callback) {
+ shouldSchedule = false;
+ callback();
+ shouldSchedule = true;
+ }
+ function setReactivityEngine(engine) {
+ reactive = engine.reactive;
+ release = engine.release;
+ effect = (callback) => engine.effect(callback, { scheduler: (task) => {
+ if (shouldSchedule) {
+ scheduler(task);
+ } else {
+ task();
+ }
+ } });
+ raw = engine.raw;
+ }
+ function overrideEffect(override) {
+ effect = override;
+ }
+ function elementBoundEffect(el) {
+ let cleanup = () => {
+ };
+ let wrappedEffect = (callback) => {
+ let effectReference = effect(callback);
+ if (!el._x_effects) {
+ el._x_effects = /* @__PURE__ */ new Set();
+ el._x_runEffects = () => {
+ el._x_effects.forEach((i) => i());
+ };
+ }
+ el._x_effects.add(effectReference);
+ cleanup = () => {
+ if (effectReference === void 0)
+ return;
+ el._x_effects.delete(effectReference);
+ release(effectReference);
+ };
+ return effectReference;
+ };
+ return [wrappedEffect, () => {
+ cleanup();
+ }];
+ }
+ function watch(getter, callback) {
+ let firstTime = true;
+ let oldValue;
+ let effectReference = effect(() => {
+ let value = getter();
+ JSON.stringify(value);
+ if (!firstTime) {
+ queueMicrotask(() => {
+ callback(value, oldValue);
+ oldValue = value;
+ });
+ } else {
+ oldValue = value;
+ }
+ firstTime = false;
+ });
+ return () => release(effectReference);
+ }
+ var onAttributeAddeds = [];
+ var onElRemoveds = [];
+ var onElAddeds = [];
+ function onElAdded(callback) {
+ onElAddeds.push(callback);
+ }
+ function onElRemoved(el, callback) {
+ if (typeof callback === "function") {
+ if (!el._x_cleanups)
+ el._x_cleanups = [];
+ el._x_cleanups.push(callback);
+ } else {
+ callback = el;
+ onElRemoveds.push(callback);
+ }
+ }
+ function onAttributesAdded(callback) {
+ onAttributeAddeds.push(callback);
+ }
+ function onAttributeRemoved(el, name, callback) {
+ if (!el._x_attributeCleanups)
+ el._x_attributeCleanups = {};
+ if (!el._x_attributeCleanups[name])
+ el._x_attributeCleanups[name] = [];
+ el._x_attributeCleanups[name].push(callback);
+ }
+ function cleanupAttributes(el, names) {
+ if (!el._x_attributeCleanups)
+ return;
+ Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {
+ if (names === void 0 || names.includes(name)) {
+ value.forEach((i) => i());
+ delete el._x_attributeCleanups[name];
+ }
+ });
+ }
+ function cleanupElement(el) {
+ var _a, _b;
+ (_a = el._x_effects) == null ? void 0 : _a.forEach(dequeueJob);
+ while ((_b = el._x_cleanups) == null ? void 0 : _b.length)
+ el._x_cleanups.pop()();
+ }
+ var observer = new MutationObserver(onMutate);
+ var currentlyObserving = false;
+ function startObservingMutations() {
+ observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true });
+ currentlyObserving = true;
+ }
+ function stopObservingMutations() {
+ flushObserver();
+ observer.disconnect();
+ currentlyObserving = false;
+ }
+ var queuedMutations = [];
+ function flushObserver() {
+ let records = observer.takeRecords();
+ queuedMutations.push(() => records.length > 0 && onMutate(records));
+ let queueLengthWhenTriggered = queuedMutations.length;
+ queueMicrotask(() => {
+ if (queuedMutations.length === queueLengthWhenTriggered) {
+ while (queuedMutations.length > 0)
+ queuedMutations.shift()();
+ }
+ });
+ }
+ function mutateDom(callback) {
+ if (!currentlyObserving)
+ return callback();
+ stopObservingMutations();
+ let result = callback();
+ startObservingMutations();
+ return result;
+ }
+ var isCollecting = false;
+ var deferredMutations = [];
+ function deferMutations() {
+ isCollecting = true;
+ }
+ function flushAndStopDeferringMutations() {
+ isCollecting = false;
+ onMutate(deferredMutations);
+ deferredMutations = [];
+ }
+ function onMutate(mutations) {
+ if (isCollecting) {
+ deferredMutations = deferredMutations.concat(mutations);
+ return;
+ }
+ let addedNodes = /* @__PURE__ */ new Set();
+ let removedNodes = /* @__PURE__ */ new Set();
+ let addedAttributes = /* @__PURE__ */ new Map();
+ let removedAttributes = /* @__PURE__ */ new Map();
+ for (let i = 0; i < mutations.length; i++) {
+ if (mutations[i].target._x_ignoreMutationObserver)
+ continue;
+ if (mutations[i].type === "childList") {
+ mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.add(node));
+ mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.add(node));
+ }
+ if (mutations[i].type === "attributes") {
+ let el = mutations[i].target;
+ let name = mutations[i].attributeName;
+ let oldValue = mutations[i].oldValue;
+ let add = () => {
+ if (!addedAttributes.has(el))
+ addedAttributes.set(el, []);
+ addedAttributes.get(el).push({ name, value: el.getAttribute(name) });
+ };
+ let remove = () => {
+ if (!removedAttributes.has(el))
+ removedAttributes.set(el, []);
+ removedAttributes.get(el).push(name);
+ };
+ if (el.hasAttribute(name) && oldValue === null) {
+ add();
+ } else if (el.hasAttribute(name)) {
+ remove();
+ add();
+ } else {
+ remove();
+ }
+ }
+ }
+ removedAttributes.forEach((attrs, el) => {
+ cleanupAttributes(el, attrs);
+ });
+ addedAttributes.forEach((attrs, el) => {
+ onAttributeAddeds.forEach((i) => i(el, attrs));
+ });
+ for (let node of removedNodes) {
+ if (addedNodes.has(node))
+ continue;
+ onElRemoveds.forEach((i) => i(node));
+ }
+ addedNodes.forEach((node) => {
+ node._x_ignoreSelf = true;
+ node._x_ignore = true;
+ });
+ for (let node of addedNodes) {
+ if (removedNodes.has(node))
+ continue;
+ if (!node.isConnected)
+ continue;
+ delete node._x_ignoreSelf;
+ delete node._x_ignore;
+ onElAddeds.forEach((i) => i(node));
+ node._x_ignore = true;
+ node._x_ignoreSelf = true;
+ }
+ addedNodes.forEach((node) => {
+ delete node._x_ignoreSelf;
+ delete node._x_ignore;
+ });
+ addedNodes = null;
+ removedNodes = null;
+ addedAttributes = null;
+ removedAttributes = null;
+ }
+ function scope(node) {
+ return mergeProxies(closestDataStack(node));
+ }
+ function addScopeToNode(node, data2, referenceNode) {
+ node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];
+ return () => {
+ node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);
+ };
+ }
+ function closestDataStack(node) {
+ if (node._x_dataStack)
+ return node._x_dataStack;
+ if (typeof ShadowRoot === "function" && node instanceof ShadowRoot) {
+ return closestDataStack(node.host);
+ }
+ if (!node.parentNode) {
+ return [];
+ }
+ return closestDataStack(node.parentNode);
+ }
+ function mergeProxies(objects) {
+ return new Proxy({ objects }, mergeProxyTrap);
+ }
+ var mergeProxyTrap = {
+ ownKeys({ objects }) {
+ return Array.from(new Set(objects.flatMap((i) => Object.keys(i))));
+ },
+ has({ objects }, name) {
+ if (name == Symbol.unscopables)
+ return false;
+ return objects.some((obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name));
+ },
+ get({ objects }, name, thisProxy) {
+ if (name == "toJSON")
+ return collapseProxies;
+ return Reflect.get(objects.find((obj) => Reflect.has(obj, name)) || {}, name, thisProxy);
+ },
+ set({ objects }, name, value, thisProxy) {
+ const target = objects.find((obj) => Object.prototype.hasOwnProperty.call(obj, name)) || objects[objects.length - 1];
+ const descriptor = Object.getOwnPropertyDescriptor(target, name);
+ if ((descriptor == null ? void 0 : descriptor.set) && (descriptor == null ? void 0 : descriptor.get))
+ return descriptor.set.call(thisProxy, value) || true;
+ return Reflect.set(target, name, value);
+ }
+ };
+ function collapseProxies() {
+ let keys = Reflect.ownKeys(this);
+ return keys.reduce((acc, key) => {
+ acc[key] = Reflect.get(this, key);
+ return acc;
+ }, {});
+ }
+ function initInterceptors(data2) {
+ let isObject2 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null;
+ let recurse = (obj, basePath = "") => {
+ Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => {
+ if (enumerable === false || value === void 0)
+ return;
+ if (typeof value === "object" && value !== null && value.__v_skip)
+ return;
+ let path = basePath === "" ? key : `${basePath}.${key}`;
+ if (typeof value === "object" && value !== null && value._x_interceptor) {
+ obj[key] = value.initialize(data2, path, key);
+ } else {
+ if (isObject2(value) && value !== obj && !(value instanceof Element)) {
+ recurse(value, path);
+ }
+ }
+ });
+ };
+ return recurse(data2);
+ }
+ function interceptor(callback, mutateObj = () => {
+ }) {
+ let obj = {
+ initialValue: void 0,
+ _x_interceptor: true,
+ initialize(data2, path, key) {
+ return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);
+ }
+ };
+ mutateObj(obj);
+ return (initialValue) => {
+ if (typeof initialValue === "object" && initialValue !== null && initialValue._x_interceptor) {
+ let initialize = obj.initialize.bind(obj);
+ obj.initialize = (data2, path, key) => {
+ let innerValue = initialValue.initialize(data2, path, key);
+ obj.initialValue = innerValue;
+ return initialize(data2, path, key);
+ };
+ } else {
+ obj.initialValue = initialValue;
+ }
+ return obj;
+ };
+ }
+ function get(obj, path) {
+ return path.split(".").reduce((carry, segment) => carry[segment], obj);
+ }
+ function set(obj, path, value) {
+ if (typeof path === "string")
+ path = path.split(".");
+ if (path.length === 1)
+ obj[path[0]] = value;
+ else if (path.length === 0)
+ throw error;
+ else {
+ if (obj[path[0]])
+ return set(obj[path[0]], path.slice(1), value);
+ else {
+ obj[path[0]] = {};
+ return set(obj[path[0]], path.slice(1), value);
+ }
+ }
+ }
+ var magics = {};
+ function magic(name, callback) {
+ magics[name] = callback;
+ }
+ function injectMagics(obj, el) {
+ let memoizedUtilities = getUtilities(el);
+ Object.entries(magics).forEach(([name, callback]) => {
+ Object.defineProperty(obj, `$${name}`, {
+ get() {
+ return callback(el, memoizedUtilities);
+ },
+ enumerable: false
+ });
+ });
+ return obj;
+ }
+ function getUtilities(el) {
+ let [utilities, cleanup] = getElementBoundUtilities(el);
+ let utils = { interceptor, ...utilities };
+ onElRemoved(el, cleanup);
+ return utils;
+ }
+ function tryCatch(el, expression, callback, ...args) {
+ try {
+ return callback(...args);
+ } catch (e) {
+ handleError(e, el, expression);
+ }
+ }
+ function handleError(error2, el, expression = void 0) {
+ error2 = Object.assign(error2 != null ? error2 : { message: "No error message given." }, { el, expression });
+ console.warn(`Alpine Expression Error: ${error2.message}
+
+${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
+ setTimeout(() => {
+ throw error2;
+ }, 0);
+ }
+ var shouldAutoEvaluateFunctions = true;
+ function dontAutoEvaluateFunctions(callback) {
+ let cache = shouldAutoEvaluateFunctions;
+ shouldAutoEvaluateFunctions = false;
+ let result = callback();
+ shouldAutoEvaluateFunctions = cache;
+ return result;
+ }
+ function evaluate(el, expression, extras = {}) {
+ let result;
+ evaluateLater(el, expression)((value) => result = value, extras);
+ return result;
+ }
+ function evaluateLater(...args) {
+ return theEvaluatorFunction(...args);
+ }
+ var theEvaluatorFunction = normalEvaluator;
+ function setEvaluator(newEvaluator) {
+ theEvaluatorFunction = newEvaluator;
+ }
+ function normalEvaluator(el, expression) {
+ let overriddenMagics = {};
+ injectMagics(overriddenMagics, el);
+ let dataStack = [overriddenMagics, ...closestDataStack(el)];
+ let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el);
+ return tryCatch.bind(null, el, expression, evaluator);
+ }
+ function generateEvaluatorFromFunction(dataStack, func) {
+ return (receiver = () => {
+ }, { scope: scope2 = {}, params = [] } = {}) => {
+ let result = func.apply(mergeProxies([scope2, ...dataStack]), params);
+ runIfTypeOfFunction(receiver, result);
+ };
+ }
+ var evaluatorMemo = {};
+ function generateFunctionFromString(expression, el) {
+ if (evaluatorMemo[expression]) {
+ return evaluatorMemo[expression];
+ }
+ let AsyncFunction = Object.getPrototypeOf(async function() {
+ }).constructor;
+ let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression;
+ const safeAsyncFunction = () => {
+ try {
+ let func2 = new AsyncFunction(["__self", "scope"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`);
+ Object.defineProperty(func2, "name", {
+ value: `[Alpine] ${expression}`
+ });
+ return func2;
+ } catch (error2) {
+ handleError(error2, el, expression);
+ return Promise.resolve();
+ }
+ };
+ let func = safeAsyncFunction();
+ evaluatorMemo[expression] = func;
+ return func;
+ }
+ function generateEvaluatorFromString(dataStack, expression, el) {
+ let func = generateFunctionFromString(expression, el);
+ return (receiver = () => {
+ }, { scope: scope2 = {}, params = [] } = {}) => {
+ func.result = void 0;
+ func.finished = false;
+ let completeScope = mergeProxies([scope2, ...dataStack]);
+ if (typeof func === "function") {
+ let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));
+ if (func.finished) {
+ runIfTypeOfFunction(receiver, func.result, completeScope, params, el);
+ func.result = void 0;
+ } else {
+ promise.then((result) => {
+ runIfTypeOfFunction(receiver, result, completeScope, params, el);
+ }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);
+ }
+ }
+ };
+ }
+ function runIfTypeOfFunction(receiver, value, scope2, params, el) {
+ if (shouldAutoEvaluateFunctions && typeof value === "function") {
+ let result = value.apply(scope2, params);
+ if (result instanceof Promise) {
+ result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));
+ } else {
+ receiver(result);
+ }
+ } else if (typeof value === "object" && value instanceof Promise) {
+ value.then((i) => receiver(i));
+ } else {
+ receiver(value);
+ }
+ }
+ var prefixAsString = "x-";
+ function prefix(subject = "") {
+ return prefixAsString + subject;
+ }
+ function setPrefix(newPrefix) {
+ prefixAsString = newPrefix;
+ }
+ var directiveHandlers = {};
+ function directive2(name, callback) {
+ directiveHandlers[name] = callback;
+ return {
+ before(directive22) {
+ if (!directiveHandlers[directive22]) {
+ console.warn(String.raw`Cannot find directive \`${directive22}\`. \`${name}\` will use the default order of execution`);
+ return;
+ }
+ const pos = directiveOrder.indexOf(directive22);
+ directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf("DEFAULT"), 0, name);
+ }
+ };
+ }
+ function directiveExists(name) {
+ return Object.keys(directiveHandlers).includes(name);
+ }
+ function directives(el, attributes, originalAttributeOverride) {
+ attributes = Array.from(attributes);
+ if (el._x_virtualDirectives) {
+ let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value }));
+ let staticAttributes = attributesOnly(vAttributes);
+ vAttributes = vAttributes.map((attribute) => {
+ if (staticAttributes.find((attr) => attr.name === attribute.name)) {
+ return {
+ name: `x-bind:${attribute.name}`,
+ value: `"${attribute.value}"`
+ };
+ }
+ return attribute;
+ });
+ attributes = attributes.concat(vAttributes);
+ }
+ let transformedAttributeMap = {};
+ let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);
+ return directives2.map((directive22) => {
+ return getDirectiveHandler(el, directive22);
+ });
+ }
+ function attributesOnly(attributes) {
+ return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));
+ }
+ var isDeferringHandlers = false;
+ var directiveHandlerStacks = /* @__PURE__ */ new Map();
+ var currentHandlerStackKey = Symbol();
+ function deferHandlingDirectives(callback) {
+ isDeferringHandlers = true;
+ let key = Symbol();
+ currentHandlerStackKey = key;
+ directiveHandlerStacks.set(key, []);
+ let flushHandlers = () => {
+ while (directiveHandlerStacks.get(key).length)
+ directiveHandlerStacks.get(key).shift()();
+ directiveHandlerStacks.delete(key);
+ };
+ let stopDeferring = () => {
+ isDeferringHandlers = false;
+ flushHandlers();
+ };
+ callback(flushHandlers);
+ stopDeferring();
+ }
+ function getElementBoundUtilities(el) {
+ let cleanups2 = [];
+ let cleanup = (callback) => cleanups2.push(callback);
+ let [effect3, cleanupEffect] = elementBoundEffect(el);
+ cleanups2.push(cleanupEffect);
+ let utilities = {
+ Alpine: alpine_default,
+ effect: effect3,
+ cleanup,
+ evaluateLater: evaluateLater.bind(evaluateLater, el),
+ evaluate: evaluate.bind(evaluate, el)
+ };
+ let doCleanup = () => cleanups2.forEach((i) => i());
+ return [utilities, doCleanup];
+ }
+ function getDirectiveHandler(el, directive22) {
+ let noop = () => {
+ };
+ let handler4 = directiveHandlers[directive22.type] || noop;
+ let [utilities, cleanup] = getElementBoundUtilities(el);
+ onAttributeRemoved(el, directive22.original, cleanup);
+ let fullHandler = () => {
+ if (el._x_ignore || el._x_ignoreSelf)
+ return;
+ handler4.inline && handler4.inline(el, directive22, utilities);
+ handler4 = handler4.bind(handler4, el, directive22, utilities);
+ isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4();
+ };
+ fullHandler.runCleanups = cleanup;
+ return fullHandler;
+ }
+ var startingWith = (subject, replacement) => ({ name, value }) => {
+ if (name.startsWith(subject))
+ name = name.replace(subject, replacement);
+ return { name, value };
+ };
+ var into = (i) => i;
+ function toTransformedAttributes(callback = () => {
+ }) {
+ return ({ name, value }) => {
+ let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => {
+ return transform(carry);
+ }, { name, value });
+ if (newName !== name)
+ callback(newName, name);
+ return { name: newName, value: newValue };
+ };
+ }
+ var attributeTransformers = [];
+ function mapAttributes(callback) {
+ attributeTransformers.push(callback);
+ }
+ function outNonAlpineAttributes({ name }) {
+ return alpineAttributeRegex().test(name);
+ }
+ var alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\b`);
+ function toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {
+ return ({ name, value }) => {
+ let typeMatch = name.match(alpineAttributeRegex());
+ let valueMatch = name.match(/:([a-zA-Z0-9\-_:]+)/);
+ let modifiers = name.match(/\.[^.\]]+(?=[^\]]*$)/g) || [];
+ let original = originalAttributeOverride || transformedAttributeMap[name] || name;
+ return {
+ type: typeMatch ? typeMatch[1] : null,
+ value: valueMatch ? valueMatch[1] : null,
+ modifiers: modifiers.map((i) => i.replace(".", "")),
+ expression: value,
+ original
+ };
+ };
+ }
+ var DEFAULT = "DEFAULT";
+ var directiveOrder = [
+ "ignore",
+ "ref",
+ "data",
+ "id",
+ "anchor",
+ "bind",
+ "init",
+ "for",
+ "model",
+ "modelable",
+ "transition",
+ "show",
+ "if",
+ DEFAULT,
+ "teleport"
+ ];
+ function byPriority(a, b) {
+ let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;
+ let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;
+ return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);
+ }
+ function dispatch3(el, name, detail = {}) {
+ el.dispatchEvent(new CustomEvent(name, {
+ detail,
+ bubbles: true,
+ composed: true,
+ cancelable: true
+ }));
+ }
+ function walk(el, callback) {
+ if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) {
+ Array.from(el.children).forEach((el2) => walk(el2, callback));
+ return;
+ }
+ let skip = false;
+ callback(el, () => skip = true);
+ if (skip)
+ return;
+ let node = el.firstElementChild;
+ while (node) {
+ walk(node, callback, false);
+ node = node.nextElementSibling;
+ }
+ }
+ function warn(message, ...args) {
+ console.warn(`Alpine Warning: ${message}`, ...args);
+ }
+ var started = false;
+ function start2() {
+ if (started)
+ warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.");
+ started = true;
+ if (!document.body)
+ warn("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `
diff --git a/resources/js/componentss/shared/builder/pageBuilder/skeletons/PageSkeleton.vue b/resources/js/componentss/shared/builder/pageBuilder/skeletons/PageSkeleton.vue
index 2b0312b..ab1b6b1 100644
--- a/resources/js/componentss/shared/builder/pageBuilder/skeletons/PageSkeleton.vue
+++ b/resources/js/componentss/shared/builder/pageBuilder/skeletons/PageSkeleton.vue
@@ -1,5 +1,5 @@
-
+
where('status', 1)->first();
- return $activeCampaign->academic_year;
-})->name('academic.year');
+//Route::get('/getAcademicYear', function () {
+// $activeCampaign = AdmissionCampaign::query()->where('status', 1)->first();
+// return $activeCampaign->academic_year;
+//})->name('academic.year');
Route::middleware('ensure.browser')->group(function () {
- Route::get('/getNavigation', [NavigateController::class, 'index'])->name('client.main.navigate');
+// Route::get('/getNavigation', [NavigateController::class, 'index'])->name('client.main.navigate');
- Route::get('/search', [SearchController::class, 'index'])->name('client.search.index');
-
- Route::get('/static/search', [StaticSearchController::class, 'search'])->name('client.search.static');
- Route::get('/static/categories', [StaticSearchController::class, 'getCategories'])->name('client.categories.static');
+// Route::get('/search', [SearchController::class, 'index'])->name('client.search.index');
+//
+// Route::get('/static/search', [StaticSearchController::class, 'search'])->name('client.search.static');
+// Route::get('/static/categories', [StaticSearchController::class, 'getCategories'])->name('client.categories.static');
- Route::get('/widget/get-posts', [ClientWidgetPostController::class, 'index'])->name('client.widget.post.index');
-
- Route::get('/widget/get-posts/{id}', [ClientWidgetPostController::class, 'single'])->name('client.widget.post.single');
-
- Route::get('/widget/get-additional-programs', [ClientWidgetAdditionalEducationalProgramController::class, 'index'])->name('client.widget.additional.program.index');
-
- Route::get('/widget/get-educational-programs', [ClientWidgetEducationalProgramController::class, 'index'])->name('client.widget.educational.program.index');
-
- Route::get('/widget/get-page-resource/{id}', [ClientWidgetPageReferenceListController::class, 'show'])->name('client.widget.page.resource.show');
-
- Route::get('/widget/get-contact-widget/{id}', [ClientWidgetContactController::class, 'show'])->name('client.widget.contact.show');
-
- Route::get('/widget/get-page/{path}', [ClientWidgetPageController::class, 'single'])->name('client.widget.page.single');
-
- Route::get('/widget/get-form/{id}', [ClientWidgetFormController::class, 'single'])->middleware('rate.limited.check')->name('client.widget.form.single');
-
- Route::post('/widget/get-form/{id}/submit', [ClientWidgetFormController::class, 'submit'])->middleware(['rate.limited.counter', 'rate.limited.check', 'form.time.period'])->name('client.widget.form.submit');
-
- Route::get('/widget/get-slider/{slug}', [ClientWidgetSliderController::class, 'show'])->name('client.widget.slider.show');
+// Route::get('/widget/get-posts', [ClientWidgetPostController::class, 'index'])->name('client.widget.post.index');
+//
+// Route::get('/widget/get-posts/{id}', [ClientWidgetPostController::class, 'single'])->name('client.widget.post.single');
+//
+// Route::get('/widget/get-additional-programs', [ClientWidgetAdditionalEducationalProgramController::class, 'index'])->name('client.widget.additional.program.index');
+//
+// Route::get('/widget/get-educational-programs', [ClientWidgetEducationalProgramController::class, 'index'])->name('client.widget.educational.program.index');
+//
+// Route::get('/widget/get-page-resource/{id}', [ClientWidgetPageReferenceListController::class, 'show'])->name('client.widget.page.resource.show');
+//
+// Route::get('/widget/get-contact-widget/{id}', [ClientWidgetContactController::class, 'show'])->name('client.widget.contact.show');
+//
+// Route::get('/widget/get-page/{path}', [ClientWidgetPageController::class, 'single'])->name('client.widget.page.single');
+//
+// Route::get('/widget/get-form/{id}', [ClientWidgetFormController::class, 'single'])->middleware('rate.limited.check')->name('client.widget.form.single');
+//
+// Route::post('/widget/get-form/{id}/submit', [ClientWidgetFormController::class, 'submit'])->middleware(['rate.limited.counter', 'rate.limited.check', 'form.time.period'])->name('client.widget.form.submit');
+//
+// Route::get('/widget/get-slider/{slug}', [ClientWidgetSliderController::class, 'show'])->name('client.widget.slider.show');
});
-Route::middleware(['auth', 'superadmin'])->group(function () {
- Route::get('/get-edu-program-data', [UpdateEduDataApiController::class, 'index']);
- Route::get('/get-admission-plans-data', [UpdateAdmissionPlansDataApiController::class, 'index']);
-
-
- Route::get('/login/vk', [VkAuthService::class, 'redirectToProvider'])->name('vk.login');
- Route::get('/login/vk/callback', [VkAuthService::class, 'handleProviderCallback'])->name('vk.callback');
- Route::get('/vk-get-token', [VkAuthService::class, 'getToken'])->name('vk.getToken');
- Route::get('/vk-refresh-token', [VkAuthService::class, 'refresh'])->name('vk.refreshToken');
- Route::get('/vk-logout', [VkAuthService::class, 'logout'])->name('vk.logout');
-});
+//Route::middleware(['auth', 'superadmin'])->group(function () {
+// Route::get('/get-edu-program-data', [UpdateEduDataApiController::class, 'index']);
+// Route::get('/get-admission-plans-data', [UpdateAdmissionPlansDataApiController::class, 'index']);
+//
+//
+// Route::get('/login/vk', [VkAuthService::class, 'redirectToProvider'])->name('vk.login');
+// Route::get('/login/vk/callback', [VkAuthService::class, 'handleProviderCallback'])->name('vk.callback');
+// Route::get('/vk-get-token', [VkAuthService::class, 'getToken'])->name('vk.getToken');
+// Route::get('/vk-refresh-token', [VkAuthService::class, 'refresh'])->name('vk.refreshToken');
+// Route::get('/vk-logout', [VkAuthService::class, 'logout'])->name('vk.logout');
+//});
diff --git a/routes/legacy.php b/routes/legacy.php
deleted file mode 100644
index 16620c4..0000000
--- a/routes/legacy.php
+++ /dev/null
@@ -1,201 +0,0 @@
-group(function () {
- Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
- Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
- Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
- });
-
- Route::post('/upload-image', [ImageController::class, 'uploadImage'])->middleware('web');
- Route::post('/upload-file', [FileUploadController::class, 'uploadFile'])->middleware('web');
-Route::get('/getInfoForLink', [LinkToolController::class, 'main'])->name('backend.tool.link');
-
-
-Route::prefix('admin')->group(function () {
- Route::get('/', function () {
- return Inertia::render('AdminPanel/Index');
- })->name('admin.index');
-
- Route::prefix('posts')->group(function () {
- Route::get('/', [PostController::class, 'index'])->name('admin.post.index');
- Route::get('/create', [PostController::class, 'create'])->name('admin.post.create');
- Route::post('/', [PostController::class, 'store'])->name('admin.post.store');
- Route::get('/{post}/edit', [PostController::class, 'edit'])->name('admin.post.edit');
- Route::patch('/{post}', [PostController::class, 'update'])->name('admin.post.update');
- Route::get('/{slug}', [PostController::class, 'show'])->name('admin.post.show');
- Route::delete('/{post}', [PostController::class, 'destroy'])->name('admin.post.destroy');
- });
-
- Route::prefix('categories')->group(function () {
- Route::get('/', [CategoryController::class, 'index'])->name('admin.category.index');
- Route::get('/create', [CategoryController::class, 'create'])->name('admin.category.create');
- Route::get('/{category}/edit', [CategoryController::class, 'edit'])->name('admin.category.edit');
- Route::patch('/{category}', [CategoryController::class, 'update'])->name('admin.category.update');
- Route::post('/', [CategoryController::class, 'store'])->name('admin.category.store');
- Route::delete('/{category}', [CategoryController::class, 'destroy'])->name('admin.category.destroy');
-
- });
-
- Route::prefix('tags')->group(function () {
- Route::get('/', [TagController::class, 'index'])->name('admin.tag.index');
- Route::get('/create', [TagController::class, 'create'])->name('admin.tag.create');
- Route::post('/', [TagController::class, 'store'])->name('admin.tag.store');
- Route::get('/{category}', [TagController::class, 'show'])->name('admin.tag.show');
- });
-
- Route::prefix('applicants-questions')->group(function () {
- Route::get('/', [ApplicantQuestionController::class, 'index'])->name('admin.applicantQuestion.index');
- Route::get('/create', [ApplicantQuestionController::class, 'create'])->name('admin.applicantQuestion.create');
- Route::get('/{applicantQuestion}/edit', [ApplicantQuestionController::class, 'edit'])->name('admin.applicantQuestion.edit');
- Route::patch('/{applicantQuestion}', [ApplicantQuestionController::class, 'update'])->name('admin.applicantQuestion.update');
- Route::post('/', [ApplicantQuestionController::class, 'store'])->name('admin.applicantQuestion.store');
- Route::delete('/{applicantQuestion}', [ApplicantQuestionController::class, 'destroy'])->name('admin.applicantQuestion.destroy');
- });
-
- Route::prefix('users')->group(function () {
- Route::get('/', [UserController::class, 'index'])->name('admin.user.index');
- Route::get('/create', [UserController::class, 'create'])->name('admin.user.create');
- Route::get('/create/', [UserController::class, 'create'])->name('admin.user.create');
- Route::post('/', [UserController::class, 'store'])->name('admin.user.store');
- Route::get('/{user}', [UserController::class, 'show'])->name('admin.user.show');
- Route::get('/{user}/edit', [UserController::class, 'edit'])->name('admin.user.edit');
- Route::patch('/{user}', [UserController::class, 'update'])->name('admin.user.update');
- Route::delete('/{user}', [UserController::class, 'destroy'])->name('admin.user.destroy');
- });
-
- Route::prefix('user-details')->group(function () {
- Route::get('/{user}/create', [UserDetailController::class, 'create'])->name('admin.userDetail.create');
- Route::post('/', [UserDetailController::class, 'store'])->name('admin.userDetail.store');
- Route::get('/{userDetail}/edit', [UserDetailController::class, 'edit'])->name('admin.userDetail.edit');
- Route::patch('/{userDetail}', [UserDetailController::class, 'update'])->name('admin.userDetail.update');
- Route::delete('/{userDetail}', [UserDetailController::class, 'destroy'])->name('admin.userDetail.destroy');
- });
-
- Route::prefix('pages')->group(function () {
- Route::get('/', [PageController::class, 'index'])->name('admin.page.index');
- Route::get('/registered', [PageController::class, 'getRegisteredPages'])->name('admin.registered.page.index');
- Route::get('/create', [PageController::class, 'create'])->name('admin.page.create');
- Route::post('/', [PageController::class, 'store'])->name('admin.page.store');
- Route::get('/{slug}/edit', [PageController::class, 'edit'])->name('admin.page.edit');
- Route::patch('/{page}', [PageController::class, 'update'])->name('admin.page.update');
- Route::get('registered/{id}/edit-registered-page', [PageController::class, 'editRegisteredPage'])->name('admin.registered.page.edit');
- Route::patch('registered/{id}', [PageController::class, 'updateRegisteredPage'])->name('admin.registered.page.update');
- Route::delete('/{page}', [PageController::class, 'destroy'])->name('admin.page.destroy');
- });
-
- Route::prefix('main-sections')->group(function () {
- Route::get('/', [MainSectionController::class, 'index'])->name('admin.mainSection.index');
- Route::get('/create', [MainSectionController::class, 'create'])->name('admin.mainSection.create');
- Route::post('/', [MainSectionController::class, 'store'])->name('admin.mainSection.store');
- Route::get('/{mainSection}/edit', [MainSectionController::class, 'edit'])->name('admin.mainSection.edit');
- Route::patch('/{mainSection}', [MainSectionController::class, 'update'])->name('admin.mainSection.update');
- Route::delete('/{mainSection}', [MainSectionController::class, 'destroy'])->name('admin.mainSection.destroy');
- });
-
- Route::prefix('sub-sections')->group(function () {
- Route::get('/', [SubSectionController::class, 'index'])->name('admin.subSection.index');
- Route::get('/create', [SubSectionController::class, 'create'])->name('admin.subSection.create');
- Route::post('/', [SubSectionController::class, 'store'])->name('admin.subSection.store');
- Route::get('/{subSection}/edit', [SubSectionController::class, 'edit'])->name('admin.subSection.edit');
- Route::patch('/{subSection}', [SubSectionController::class, 'update'])->name('admin.subSection.update');
- Route::delete('/{subSection}', [SubSectionController::class, 'destroy'])->name('admin.subSection.destroy');
- });
-
- Route::prefix('schedules')->group(function () {
- Route::get('/', [ScheduleController::class, 'index'])->name('admin.schedule.index');
- Route::get('/create', [ScheduleController::class, 'create'])->name('admin.schedule.create');
- Route::post('/', [ScheduleController::class, 'store'])->name('admin.schedule.store');
- Route::get('/{schedule}', [ScheduleController::class, 'show'])->name('admin.schedule.show');
- Route::get('/{schedule}/edit', [ScheduleController::class, 'edit'])->name('admin.schedule.edit');
- Route::patch('/{schedule}', [ScheduleController::class, 'update'])->name('admin.schedule.update');
- Route::delete('/{schedule}', [ScheduleController::class, 'destroy'])->name('admin.schedule.destroy');
- });
-
- Route::prefix('sub-schedules')->group(function () {
- Route::delete('/{subSchedule}', [SubScheduleController::class, 'destroy'])->name('admin.subSchedule.destroy');
- });
-
- Route::prefix('faculties')->group(function () {
- Route::get('/', [FacultyController::class, 'index'])->name('admin.faculty.index');
- Route::get('/create', [FacultyController::class, 'create'])->name('admin.faculty.create');
- Route::post('/', [FacultyController::class, 'store'])->name('admin.faculty.store');
- Route::get('/{faculty}', [FacultyController::class, 'show'])->name('admin.faculty.show');
- Route::get('/{faculty}/edit', [FacultyController::class, 'edit'])->name('admin.faculty.edit');
- Route::patch('/{faculty}', [FacultyController::class, 'update'])->name('admin.faculty.update');
- Route::delete('/{faculty}', [FacultyController::class, 'destroy'])->name('admin.faculty.destroy');
- });
-
- Route::prefix('departments')->group(function () {
- Route::get('/', [DepartmentController::class, 'index'])->name('admin.department.index');
- Route::get('/create', [DepartmentController::class, 'create'])->name('admin.department.create');
- Route::post('/', [DepartmentController::class, 'store'])->name('admin.department.store');
- Route::get('/{department}', [DepartmentController::class, 'show'])->name('admin.department.show');
- Route::get('/{department}/edit', [DepartmentController::class, 'edit'])->name('admin.department.edit');
- Route::patch('/{department}', [DepartmentController::class, 'update'])->name('admin.department.update');
- Route::delete('/{department}', [DepartmentController::class, 'destroy'])->name('admin.department.destroy');
- });
-
- Route::prefix('divisions')->group(function () {
- Route::get('/', [DivisionController::class, 'index'])->name('admin.division.index');
- Route::get('/create', [DivisionController::class, 'create'])->name('admin.division.create');
- Route::post('/', [DivisionController::class, 'store'])->name('admin.division.store');
- Route::get('/{division}', [DivisionController::class, 'show'])->name('admin.division.show');
- Route::get('/{division}/edit', [DivisionController::class, 'edit'])->name('admin.division.edit');
- Route::patch('/{division}', [DivisionController::class, 'update'])->name('admin.division.update');
- Route::delete('/{division}', [DivisionController::class, 'destroy'])->name('admin.division.destroy');
- });
-
- Route::prefix('students')->group(function () {
- Route::get('/', [StudentController::class, 'index'])->name('admin.student.index');
- Route::get('/create', [StudentController::class, 'create'])->name('admin.student.create');
- Route::get('/{student}', [StudentController::class, 'show'])->name('admin.student.show');
- Route::post('/', [StudentController::class, 'store'])->name('admin.student.store');
- Route::get('/{student}/edit', [StudentController::class, 'edit'])->name('admin.student.edit');
- Route::patch('/{student}', [StudentController::class, 'update'])->name('admin.student.update');
- Route::delete('/{student}', [StudentController::class, 'destroy'])->name('admin.student.destroy');
- });
-
- Route::prefix('events')->group(function () {
- Route::get('/', [EventController::class, 'index'])->name('admin.event.index');
- Route::get('/create', [EventController::class, 'create'])->name('admin.event.create');
- Route::get('/{event}', [EventController::class, 'show'])->name('admin.event.show');
- Route::post('/', [EventController::class, 'store'])->name('admin.event.store');
- Route::get('/{event}/edit', [EventController::class, 'edit'])->name('admin.event.edit');
- Route::patch('/{event}', [EventController::class, 'update'])->name('admin.event.update');
- Route::delete('/{event}', [EventController::class, 'destroy'])->name('admin.event.destroy');
- });
-
-
- });
diff --git a/routes/web.php b/routes/web.php
index a0eb861..fbece99 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1,62 +1,43 @@
get('invitation/{invitation}/accept', \App\Livewire\AcceptInvitation::class)
- ->name('invitation.accept');
-
-
Route::middleware('access-check')->group(function () {
// Главная страница
Route::get('/', [MainController::class, 'index'])->name('index');
- // Расписание занятий
- Route::get('/schedule', [ClientScheduleController::class, 'index'])->name('client.schedule.index');
- Route::get('/schedule/{id}', [ClientScheduleController::class, 'show'])->name('client.schedule.show');
+ Route::get('{path}', [PageController::class, 'render'])->where('path', '[0-9,a-z,/,-]+')->name('page.view');
- Route::get('/persons/{slug}', [PersonController::class, 'show'])->name('client.person.show');
+
+// // Расписание занятий
+// Route::get('/schedule', [ClientScheduleController::class, 'index'])->name('client.schedule.index');
+// Route::get('/schedule/{id}', [ClientScheduleController::class, 'show'])->name('client.schedule.show');
+
+// Route::get('/persons/{slug}', [PersonController::class, 'show'])->name('client.person.show');
// Новости
- Route::get('/news', [ClientPostController::class, 'index'])->name('client.post.index');
- Route::get('/news/{slug}', [ClientPostController::class, 'show'])->name('client.post.show');
+// Route::get('/news', [ClientPostController::class, 'index'])->name('client.post.index');
+// Route::get('/news/{slug}', [ClientPostController::class, 'show'])->name('client.post.show');
// Образовательные программы
- Route::get('/programs/', [ClientProgramController::class, 'index'])->name('client.program.index');
- Route::get('/program/{slug}', [ClientProgramController::class, 'show'])->name('client.program.show');
+// Route::get('/programs/', [ClientProgramController::class, 'index'])->name('client.program.index');
+// Route::get('/program/{slug}', [ClientProgramController::class, 'show'])->name('client.program.show');
// Образовательные программы
- Route::get('/additional-education/', [ClientAdditionalEducationController::class, 'index'])->name('client.additionalEducation.index');
- Route::get('/additional-education/{slug}', [ClientAdditionalEducationController::class, 'show'])->name('client.additionalEducation.show');
+// Route::get('/additional-education/', [ClientAdditionalEducationController::class, 'index'])->name('client.additionalEducation.index');
+// Route::get('/additional-education/{slug}', [ClientAdditionalEducationController::class, 'show'])->name('client.additionalEducation.show');
// События
- Route::get('/events', [ClientEventController::class, 'index'])->name('client.event.index');
- Route::get('/events/archive', [ClientEventController::class, 'archive'])->name('client.event.archive'); // Доделать builder
- Route::get('/events/{slug}', [ClientEventController::class, 'show'])->name('client.event.show');
+// Route::get('/events', [ClientEventController::class, 'index'])->name('client.event.index');
+// Route::get('/events/archive', [ClientEventController::class, 'archive'])->name('client.event.archive'); // Доделать builder
+// Route::get('/events/{slug}', [ClientEventController::class, 'show'])->name('client.event.show');
// // Заметки библиотеки
// Route::get('/library/news', [ClientLibraryNewsController::class, 'index'])->name('client.library.news.index'); // Доделать builder
@@ -73,19 +54,19 @@ Route::middleware('access-check')->group(function () {
// Route::get('/current-vacancies/', [ClientExternalVacancyController::class, 'index'])->name('client.external.vacant.index'); // Доделать builder
// Route::get('/current-vacancies/{id}', [ClientExternalVacancyController::class, 'show'])->name('client.external.vacant.show');
- Route::get('/academic-journals/', [ClientAcademicJournalController::class, 'index'])->name('client.academicJournals.index'); // Доделать builder
- Route::get('/academic-journals/{slug}', [ClientAcademicJournalController::class, 'show'])->name('client.academicJournals.show');
- // Факультеты и кафедры
- Route::get('/faculties', [ClientFacultyController::class, 'index'])->name('client.faculty.index');
- Route::get('/faculties/{slug}', [ClientFacultyController::class, 'show'])->name('client.faculty.show');
- Route::get('/faculties/{facultySlug}/{departmentSlug}', [ClientDepartmentController::class, 'show'])->name('client.department.show');
+// Route::get('/academic-journals/', [ClientAcademicJournalController::class, 'index'])->name('client.academicJournals.index');
+// Route::get('/academic-journals/{slug}', [ClientAcademicJournalController::class, 'show'])->name('client.academicJournals.show');
- // Подразделения института
- Route::get('/divisions', [ClientDivisionController::class, 'index'])->name('client.division.index');
- Route::get('/divisions/{slug}', [ClientDivisionController::class, 'show'])->name('client.division.show');
+// // Факультеты и кафедры
+// Route::get('/faculties', [ClientFacultyController::class, 'index'])->name('client.faculty.index');
+// Route::get('/faculties/{slug}', [ClientFacultyController::class, 'show'])->name('client.faculty.show');
+// Route::get('/faculties/{facultySlug}/{departmentSlug}', [ClientDepartmentController::class, 'show'])->name('client.department.show');
+//
+// // Подразделения института
+// Route::get('/divisions', [ClientDivisionController::class, 'index'])->name('client.division.index');
+// Route::get('/divisions/{slug}', [ClientDivisionController::class, 'show'])->name('client.division.show');
- Route::get('{path}', [PageController::class, 'render'])->where('path', '[0-9,a-z,/,-]+')->name('page.view');
});
diff --git a/tests/Feature/Auth/AuthenticationTest.php b/tests/Feature/Auth/AuthenticationTest.php
index 0303b29..d36b1f7 100644
--- a/tests/Feature/Auth/AuthenticationTest.php
+++ b/tests/Feature/Auth/AuthenticationTest.php
@@ -2,7 +2,7 @@
namespace Tests\Feature\Auth;
-use App\Models\User;
+use App\Containers\User\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
diff --git a/tests/Feature/Auth/EmailVerificationTest.php b/tests/Feature/Auth/EmailVerificationTest.php
index ba19d9c..447b11c 100644
--- a/tests/Feature/Auth/EmailVerificationTest.php
+++ b/tests/Feature/Auth/EmailVerificationTest.php
@@ -2,7 +2,7 @@
namespace Tests\Feature\Auth;
-use App\Models\User;
+use App\Containers\User\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Verified;
use Illuminate\Foundation\Testing\RefreshDatabase;
diff --git a/tests/Feature/Auth/PasswordConfirmationTest.php b/tests/Feature/Auth/PasswordConfirmationTest.php
index ff85721..911f9d3 100644
--- a/tests/Feature/Auth/PasswordConfirmationTest.php
+++ b/tests/Feature/Auth/PasswordConfirmationTest.php
@@ -2,7 +2,7 @@
namespace Tests\Feature\Auth;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
diff --git a/tests/Feature/Auth/PasswordResetTest.php b/tests/Feature/Auth/PasswordResetTest.php
index 4a26065..9c4c069 100644
--- a/tests/Feature/Auth/PasswordResetTest.php
+++ b/tests/Feature/Auth/PasswordResetTest.php
@@ -2,7 +2,7 @@
namespace Tests\Feature\Auth;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Notification;
diff --git a/tests/Feature/Auth/PasswordUpdateTest.php b/tests/Feature/Auth/PasswordUpdateTest.php
index bbf079d..caf88c3 100644
--- a/tests/Feature/Auth/PasswordUpdateTest.php
+++ b/tests/Feature/Auth/PasswordUpdateTest.php
@@ -2,7 +2,7 @@
namespace Tests\Feature\Auth;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Hash;
use Tests\TestCase;
diff --git a/tests/Feature/ProfileTest.php b/tests/Feature/ProfileTest.php
index 49886c3..efc59c3 100644
--- a/tests/Feature/ProfileTest.php
+++ b/tests/Feature/ProfileTest.php
@@ -2,7 +2,7 @@
namespace Tests\Feature;
-use App\Models\User;
+use App\Containers\User\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;