default theme

This commit is contained in:
stasbilay02 committed 2025-01-16 16:14:43 +03:00
1 parent c228a70468
commit dac4db96af
23 files changed
+11658 -348

No files matched your search

+9 -3
View File
@@ -42,7 +42,7 @@ class App
public function load(): static
{
$this->moduleService = new ModuleService();
$this->themeService = new ThemeService();
// $this->themeService = new ThemeService();
App::$collector = new CgRouteCollector();
$this->setRouting();
@@ -57,9 +57,15 @@ class App
foreach ($modules_routs as $rout){
include "$rout";
}
$activeTheme = getConst($this->themeService->getActiveTheme());
// $activeTheme = getConst($this->themeService->getActiveTheme());
// if (!empty($activeTheme)){
// include $activeTheme . "/" . $this->themeService->getThemeRout($activeTheme);
// }
$themeService = new ThemeService();
$activeTheme = getConst($themeService->getActiveTheme());
if (!empty($activeTheme)){
include $activeTheme . "/" . $this->themeService->getThemeRout($activeTheme);
include $activeTheme . "/" . $themeService->getThemeRout($activeTheme);
}
}
@@ -63,6 +63,20 @@ class AdminConsoleController extends ConsoleController
);
$this->out->r("create option active_admin_theme", "green");
$this->optionService->createFromParams(
key: "theme_paths",
value: "{\"paths\": [\"{KERNEL}/themes\", \"{APP}/themes\"]}",
label: "Пути к темам сайта"
);
$this->out->r("create option theme_paths", "green");
$this->optionService->createFromParams(
key: "active_theme",
value: "{KERNEL}/themes/default",
label: "Активная тема сайта"
);
$this->out->r("create option active_theme", "green");
$this->optionService->createFromParams(
key: "module_paths",
value: "{\"paths\": [\"{KERNEL_MODULES}\", \"{APP}/modules\"]}",
@@ -72,7 +86,7 @@ class AdminConsoleController extends ConsoleController
$this->optionService->createFromParams(
key: "active_modules",
value: "{\"modules\":[\"admin_themes\", \"secure\", \"user\", \"menu\", \"post\", \"option\"]}",
value: "{\"modules\":[\"admin_themes\",\"themes\",\"secure\", \"user\", \"menu\", \"post\", \"option\"]}",
label: "Активные модули"
);
$this->out->r("create option active_modules", "green");
@@ -133,6 +147,14 @@ class AdminConsoleController extends ConsoleController
]);
$this->out->r("create item menu admin-themes", "green");
$this->menuService->createItem([
"label" => "Темы сайта",
"url" => "/admin/settings/themes",
"slug" => "themes",
"parent_slug" => "settings"
]);
$this->out->r("create item menu themes", "green");
$this->menuService->createItem([
"label" => "Меню",
"url" => "/admin/settings/menu",
+66 -12
View File
@@ -2,11 +2,15 @@
namespace kernel\services;
use DirectoryIterator;
use kernel\helpers\Manifest;
use kernel\helpers\RESTClient;
use kernel\models\Option;
class ThemeService
{
protected array $errors = [];
protected Option $option;
protected string $active_theme = "";
@@ -16,6 +20,23 @@ class ThemeService
$this->findActiveTheme();
}
/**
* @return array
*/
public function getErrors(): array
{
return $this->errors;
}
/**
* @param $msg
* @return void
*/
public function addError($msg): void
{
$this->errors[] = $msg;
}
public function findActiveTheme(): void
{
$model = $this->option::where("key", "active_theme")->first();
@@ -27,16 +48,16 @@ class ThemeService
return $this->active_theme;
}
public function getThemeRout(string $path)
public function setActiveTheme(string $theme): void
{
if (file_exists($path . "/manifest.json")){
$manifest = json_decode(file_get_contents($path . "/manifest.json"), true);
if ($manifest['routs']) {
return $manifest['routs'];
}
}
$activeTheme = Option::where("key", "active_theme")->first();
$activeTheme->value = getConst($theme);
$activeTheme->save();
}
return false;
public function getActiveThemeInfo(): false|array|string
{
return $this->getThemeInfo($this->active_theme);
}
public function getThemeInfo(string $theme): false|array|string
@@ -54,11 +75,44 @@ class ThemeService
return $info;
}
public function setActiveTheme(string $theme): void
public function getThemeInfoBySlug(string $slug): false|array|string
{
$activeTheme = Option::where("key", "active_theme")->first();
$activeTheme->value = getConst($theme);
$activeTheme->save();
$dirs = $this->getThemeDirs();
foreach ($dirs as $dir) {
foreach (new DirectoryIterator($dir) as $fileInfo) {
if ($fileInfo->isDot()) continue;
if ($this->getThemeInfo($fileInfo->getPathname())['slug'] === $slug) {
return $this->getThemeInfo($fileInfo->getPathname());
}
}
}
return false;
}
public function getThemeDirs(): array
{
$ThemePaths = Option::where("key", "theme_paths")->first();
$dirs = [];
if ($ThemePaths) {
$path = json_decode($ThemePaths->value);
foreach ($path->paths as $p) {
$dirs[] = getConst($p);
}
}
return $dirs;
}
public function getThemeRout(string $path)
{
if (file_exists($path . "/manifest.json")){
$manifest = json_decode(file_get_contents($path . "/manifest.json"), true);
if ($manifest['routs']) {
return $manifest['routs'];
}
}
return false;
}
}
@@ -8,11 +8,11 @@ class DefaultThemesAssets extends Assets
{
protected function createCSS(): void
{
$this->registerCSS(slug: "main", resource: "some");
$this->registerCSS(slug: "main", resource: "/css/styles.css");
}
protected function createJS(): void
{
$this->registerJS(slug: "webpack", resource: "some");
$this->registerJS(slug: "webpack", resource: "/js/scripts.js");
}
}
@@ -10,14 +10,19 @@ class MainController extends Controller
protected function init(): void
{
parent::init();
$this->cgView->viewPath = APP_DIR . "/themes/default/views/main/";
$this->cgView->viewPath = KERNEL_DIR . "/themes/default/views/main/";
$this->cgView->layout = "main.php";
$this->cgView->layoutPath = APP_DIR . "/themes/default/views/layout/";
$this->cgView->addVarToLayout("resources", "/resources/default");
$this->cgView->layoutPath = KERNEL_DIR . "/themes/default/views/layout/";
$this->cgView->addVarToLayout("resources", "/resources/themes/default");
}
public function actionIndex(): void
{
$this->cgView->render("index.php");
}
public function actionAbout(): void
{
$this->cgView->render("about.php");
}
}
+1
View File
@@ -4,6 +4,7 @@ use kernel\App;
App::$collector->get('/', [\kernel\themes\default\controllers\MainController::class, 'actionIndex']);
App::$collector->get('/about', [\kernel\themes\default\controllers\MainController::class, 'actionAbout']);
//App::$collector->get('/page/{page_number}', [\app\modules\tag\controllers\TagController::class, 'actionIndex']);
//App::$collector->get('/create', [\app\modules\tag\controllers\TagController::class, 'actionCreate']);
+70 -114
View File
@@ -5,132 +5,88 @@
* @var string $title
* @var \kernel\CgView $view
*/
$assets = new \app\themes\gestalt\assets\GestaltThemeAssets($resources);
$assets = new \kernel\themes\default\assets\DefaultThemesAssets($resources);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charSet="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<?php $assets->getCSSAsSTR(); ?>
<link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-079ef2e4659c5b2a.js"/>
<script src="/_next/static/chunks/4bd1b696-f6a08746561b241a.js" async=""></script>
<script src="/_next/static/chunks/517-aab8f6d151705c38.js" async=""></script>
<script src="/_next/static/chunks/main-app-f9002d04d063c222.js" async=""></script>
<script src="/_next/static/chunks/742-fc8a609e8d43018d.js" async=""></script>
<script src="/_next/static/chunks/app/page-6a7842a50884d72d.js" async=""></script>
<meta name="description" content=""/>
<meta name="author" content=""/>
<title><?= $title ?></title>
<?= $view->getMeta() ?>
<link rel="icon" href="<?= $resources ?>/favicon.ico" type="image/x-icon" sizes="16x16"/>
<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
<link rel="icon" type="image/x-icon" href="<?= $resources ?>/assets/favicon.ico"/>
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"></script>
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet"
type="text/css"/>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
rel="stylesheet" type="text/css"/>
<!-- Core theme CSS (includes Bootstrap)-->
</head>
<body>
<header class="flex pt-8 px-8 justify-center items-center container m-auto">
<div class="flex gap-[96px] text-[15px] text-dark mr-[220px] font-[350]"><a href="/events">События</a><a
href="/participants">Участники</a></div>
<a href="/"><img alt="logo" loading="lazy" width="150" height="48" decoding="async" data-nimg="1"
style="color:transparent" src="<?= $resources ?>/logo.svg"/></a>
<div class="flex ml-[340px] gap-[19px]"><a
class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_tg"
loading="lazy"
width="1"
height="1"
decoding="async"
data-nimg="1"
class="w-auto h-auto"
style="color:transparent"
src="<?= $resources ?>/images/logo_tg.svg"/>
</a><a class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_vk"
loading="lazy"
width="1"
height="1"
decoding="async"
data-nimg="1"
class="w-auto h-auto"
style="color:transparent"
src="<?= $resources ?>/images/logo_vk.svg"/>
</a></div>
</header>
<main class="pt-[100px] flex flex-col">
<?= $content ?>
<div class="flex gap-[53px] items-end m-auto">
<div class="flex max-w-[645px] flex-wrap gap-x-[15px] gap-y-[12px]">
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">конференции</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">акредитации</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">открытые сертификации</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">открытые сертификации</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">общие сборы</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">протоколы сборов</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">новости сайта</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">календарь событий</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">сайт мги</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
<span class="relative top-[2px]">вопросы и ответы</span></div>
</div>
<div class="flex gap-[19px]">
<div class="flex border-[4px] border-white rounded-[6px] items-center w-[160px] h-[120px] justify-center relative">
<img alt="arrow" loading="lazy" width="11" height="11" decoding="async" data-nimg="1"
class="absolute top-[-18px]" style="color:transparent" src="<?= $resources ?>/images/chevronDown.svg"/><span
class="text-[26px] text-black uppercase">Книги</span></div>
<div class="flex border-[4px] border-white rounded-[6px] items-center w-[160px] h-[120px] justify-center relative">
<img alt="arrow" loading="lazy" width="11" height="11" decoding="async" data-nimg="1"
class="absolute top-[-18px]" style="color:transparent" src="<?= $resources ?>/images/chevronDown.svg"/><span
class="text-[26px] text-black uppercase">лекции</span></div>
<!-- Navigation-->
<nav class="navbar navbar-expand-lg navbar-light" id="mainNav">
<div class="container px-4 px-lg-5">
<a class="navbar-brand" href="/">Start Bootstrap</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive"
aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu
<i class="fas fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ms-auto py-4 py-lg-0">
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4" href="/">Home</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4" href="/about">About</a></li>
</ul>
</div>
</div>
</main>
<footer class="container pb-8 px-8 m-auto flex justify-center mt-[80px]"><a href="/public"><img alt="logo"
loading="lazy"
width="150" height="48"
decoding="async"
data-nimg="1"
style="color:transparent"
src="<?= $resources ?>/logo.svg"/></a>
<div class="flex gap-[96px] text-[15px] text-dark ml-[108px] mr-[188px] items-center font-[350]"><a href="/events">События</a><a
href="/participants">Участники</a></div>
<div class="flex gap-[25px]"><img alt="oop" loading="lazy" width="83" height="21" decoding="async" data-nimg="1"
style="color:transparent" src="<?= $resources ?>/images/oppgp.svg"/><img alt="pmg" loading="lazy"
width="96" height="27"
decoding="async"
data-nimg="1"
style="color:transparent"
src="<?= $resources ?>/images/pmg.svg"/>
</nav>
<?= $content ?>
<!-- Footer-->
<footer class="border-top">
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<ul class="list-inline text-center">
<li class="list-inline-item">
<a href="#!">
<span class="fa-stack fa-lg">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li class="list-inline-item">
<a href="#!">
<span class="fa-stack fa-lg">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-facebook-f fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li class="list-inline-item">
<a href="#!">
<span class="fa-stack fa-lg">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
</ul>
<div class="small text-center text-muted fst-italic">Copyright &copy; Твой сайт 2025</div>
</div>
</div>
</div>
<div class="flex ml-[49px] gap-[29px]"><a
class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_tg"
loading="lazy"
width="1"
height="1"
decoding="async"
data-nimg="1"
class="w-auto h-auto"
style="color:transparent"
src="<?= $resources ?>/images/logo_tg.svg"/>
</a><a class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_vk"
loading="lazy"
width="1"
height="1"
decoding="async"
data-nimg="1"
class="w-auto h-auto"
style="color:transparent"
src="<?= $resources ?>/images/logo_vk.svg"/>
</a></div>
</footer>
<!-- Bootstrap core JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Core theme JS-->
<?php $assets->getJSAsStr(); ?>
<script>(self.__next_f = self.__next_f || []).push([0])</script>
<script>self.__next_f.push([1, "1:\"$Sreact.fragment\"\n2:I[8173,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"\"]\n3:I[7970,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"Image\"]\n4:I[5244,[],\"\"]\n5:I[3866,[],\"\"]\n6:I[5416,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"default\"]\n7:I[5360,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"default\"]\n8:I[6213,[],\"OutletBoundary\"]\na:I[6213,[],\"MetadataBoundary\"]\nc:I[6213,[],\"ViewportBoundary\"]\ne:I[4835,[],\"\"]\n:HL[\"/_next/static/css/0d3195690bab7456.css\",\"style\"]\n"])</script>
<script>self.__next_f.push([1, "0:{\"P\":null,\"b\":\"U97PnUb_QLv3SqsQ1zMmp\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0d3195690bab7456.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"header\",null,{\"className\":\"flex pt-8 px-8 justify-center items-center container m-auto\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex gap-[96px] text-[15px] text-dark mr-[220px] font-[350]\",\"children\":[[\"$\",\"$L2\",null,{\"href\":\"/events\",\"children\":\"События\"}],[\"$\",\"$L2\",null,{\"href\":\"/participants\",\"children\":\"Участники\"}]]}],[\"$\",\"$L2\",null,{\"href\":\"/\",\"children\":[\"$\",\"$L3\",null,{\"width\":150,\"height\":48,\"src\":\"/logo.svg\",\"alt\":\"logo\"}]}],[\"$\",\"div\",null,{\"className\":\"flex ml-[340px] gap-[19px]\",\"children\":[[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_tg.svg\",\"alt\":\"logo_tg\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}],[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_vk.svg\",\"alt\":\"logo_vk\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}]]}]]}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[],[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"footer\",null,{\"className\":\"container pb-8 px-8 m-auto flex justify-center mt-[80px]\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/public\",\"children\":[\"$\",\"$L3\",null,{\"width\":150,\"height\":48,\"src\":\"/logo.svg\",\"alt\":\"logo\"}]}],[\"$\",\"div\",null,{\"className\":\"flex gap-[96px] text-[15px] text-dark ml-[108px] mr-[188px] items-center font-[350]\",\"children\":[[\"$\",\"$L2\",null,{\"href\":\"/events\",\"children\":\"События\"}],[\"$\",\"$L2\",null,{\"href\":\"/participants\",\"children\":\"Участники\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex gap-[25px]\",\"children\":[[\"$\",\"$L3\",null,{\"width\":83,\"height\":21,\"src\":\"/images/oppgp.svg\",\"alt\":\"oop\"}],[\"$\",\"$L3\",null,{\"width\":96,\"height\":27,\"src\":\"/images/pmg.svg\",\"alt\":\"pmg\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex ml-[49px] gap-[29px]\",\"children\":[[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_tg.svg\",\"alt\":\"logo_tg\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}],[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_vk.svg\",\"alt\":\"logo_vk\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}]]}]]}]]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"main\",null,{\"className\":\"pt-[100px] flex flex-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col container m-auto text-center text-dark Line truncated
<script>self.__next_f.push([1, "d:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"1\",{\"children\":\"Донецкое гештальт сообщество\"}],[\"$\",\"meta\",\"2\",{\"name\":\"description\",\"content\":\"Донецкое гештальт сообщество\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}]]\n"])</script>
<script>self.__next_f.push([1, "9:null\n"])</script>
</body>
</html>
</html>
@@ -0,0 +1,36 @@
<?php
/**
* @var string $resources;
* @var \kernel\CgView $view
*/
$view->setTitle("Старт Bootstrap");
$view->setMeta([
'description' => 'Дефолтная bootstrap тема'
]);
?>
<!-- Page Header-->
<header class="masthead" style="background-image: url('<?= $resources ?>/assets/img/about-bg.jpg')">
<div class="container position-relative px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<div class="page-heading">
<h1>About Me</h1>
<span class="subheading">This is what I do.</span>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content-->
<main class="mb-4">
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe nostrum ullam eveniet pariatur voluptates odit, fuga atque ea nobis sit soluta odio, adipisci quas excepturi maxime quae totam ducimus consectetur?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius praesentium recusandae illo eaque architecto error, repellendus iusto reprehenderit, doloribus, minus sunt. Numquam at quae voluptatum in officia voluptas voluptatibus, minus!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut consequuntur magnam, excepturi aliquid ex itaque esse est vero natus quae optio aperiam soluta voluptatibus corporis atque iste neque sit tempora!</p>
</div>
</div>
</div>
</main>
+74 -212
View File
@@ -4,221 +4,83 @@
* @var \kernel\CgView $view
*/
$view->setTitle("Донецкое гештальт сообщество");
$view->setTitle("Старт Bootstrap");
$view->setMeta([
'description' => 'Донецкое гештальт сообщество'
'description' => 'Дефолтная bootstrap тема'
]);
?>
<div class="flex flex-col container m-auto text-center text-dark gap-[31px]"><h1 class="text-[40px] uppercase">
Донецкое гештальт сообщество</h1>
<p class="text-dark text-[19px] max-w-[832px] mx-auto">это добровольное самоорганизующееся сообщество
специалистов г. Донецка и Донецкого края в области психологического консультирования и гештальт-терапии.</p>
</div>
<div class="flex justify-center mt-[100px] gap-[14px] container mx-auto">
<div class="relative bg-blue border-[1px] border-white rounded-[25px] pr-[48px] max-w-[650px] min-h-[480px] w-full font-[400]">
<img alt="intro" loading="lazy" width="1" height="1" decoding="async" data-nimg="1"
class="w-auto h-auto absolute" style="color:transparent" src="<?= $resources ?>/images/intro.svg"/>
<h3 class="text-white text-[38px] mt-[214px] text-end leading-[41px]"><span
class="bg-darkBlue px-[12px] py-[3px] rounded-[18px]">Цель</span> нашего<br/>объединения:</h3>
<p class="ml-auto mt-[50px] text-start text-white text-[19px] leading-[20px] max-w-[400px] font-[700]">
взаимное обогащение профессиональными знаниями, идеями и опытом на конференциях и семинарах, в учебных
программах и на интенсивах, на специализациях и в супервизорских группах.</p></div>
<div class="flex flex-col gap-[12px] max-w-[368px]">
<div class="flex items-center bg-blue rounded-[25px] min-h-[234px] px-[68px] py-[60px] relative"><p
class="text-white font-[500] leading-[23px] text-[20px]">Через собственное развитие мы развиваем и
популяризируем гештальт-подход</p><img alt="palm" loading="lazy" width="1" height="1" decoding="async"
data-nimg="1" class="w-auto h-auto absolute right-3 bottom-0"
style="color:transparent" src="<?= $resources ?>/images/palm.svg"/></div>
<div class="flex flex-col items-center rounded-[25px] min-h-[234px] px-[68px] pt-[40px] border-[4px] border-white">
<div class="flex relative left-[-20px] bottom-[-10px]"><img alt="avatar" loading="lazy" width="101"
height="100" decoding="async" data-nimg="1"
class="undefined relative"
style="color:transparent"
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=128&amp;q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75 2x"
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75"/><img
alt="avatar" loading="lazy" width="101" height="100" decoding="async" data-nimg="1"
class="right-[55px] z-2 relative" style="color:transparent"
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=128&amp;q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75 2x"
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75"/><img alt="avatar"
loading="lazy"
width="101" height="100"
decoding="async"
data-nimg="1"
class="right-[105px] z-3 relative"
style="color:transparent"
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=128&amp;q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75 2x"
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75"/><img
alt="avatar" loading="lazy" width="101" height="100" decoding="async" data-nimg="1"
class="right-[155px] z-4 relative" style="color:transparent"
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=128&amp;q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75 2x"
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&amp;w=256&amp;q=75"/></div>
<p class="text-blue font-[900] text-[26px]">+ 145 учасников</p></div>
<!-- Page Header-->
<header class="masthead" style="background-image: url('<?= $resources ?>/assets/img/home-bg.jpg')">
<div class="container position-relative px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<div class="site-heading">
<h1>Clean Blog</h1>
<span class="subheading">A Blog Theme by Start Bootstrap</span>
</div>
</div>
</div>
</div>
</div>
<div class="mt-[50px] flex gap-[64px] justify-center container mx-auto">
<div class="flex-col flex gap-[35px] items-center"><img alt="oppgp" loading="lazy" width="140" height="37"
decoding="async" data-nimg="1" style="color:transparent"
src="<?= $resources ?>/images/oppgp.svg"/>
<p class="text-grey max-w-[300px] text-[16px] leading-[17px] text-center font-[700]">Донецкое
гештальт-сообщество является частью Всероссийского общества психологов практикующих гештальт-подход (ОПП
ГП). </p></div>
<div class="flex-col flex gap-[19px] items-center"><img alt="oppgp" loading="lazy" width="177" height="53"
decoding="async" data-nimg="1" style="color:transparent"
src="<?= $resources ?>/images/pmg.svg"/>
<p class="text-grey max-w-[507px] text-[16px] leading-[17px] text-center font-[700]">В своей работе мы
придерживаемся стандартов программы «Московский Гештальт Институт», а также стандартов Европейской
Ассоциации Гештальт Терапии, Этического Кодекса Гештальт Терапевта и принципов гуманизма.</p></div>
</div>
<div class="flex flex-col mt-[100px]">
<div class="flex items-center max-w-[1033px] mx-auto justify-between w-full mb-[50px]">
<div class="undefined px-[25px] py-[10px] max-w-[225px] min-w-[180px] justify-center w-fit cursor-pointer border-blue border-[1px] flex gap-[10px] rounded-[10px]">
<p class="text-blue font-[700] text-[16px]">Конференции</p><img alt="chevronDown" loading="lazy"
width="11" height="8" decoding="async"
data-nimg="1" style="color:transparent"
src="<?= $resources ?>/images/chevronDown.svg"/></div>
<h3 class="text-black text-[26px] uppercase">Мероприятия сообщества</h3>
<button class="flex items-center justify-center whitespace-nowrap rounded-[6px] font-[400] bg-blue text-[16px] text-white max-h-[39px] px-[25px] py-[10px] undefined">
Все мероприятия
</button>
</header>
<!-- Main Content-->
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<!-- Post preview-->
<div class="post-preview">
<a href="#!">
<h2 class="post-title">Man must explore, and this is exploration at its greatest</h2>
<h3 class="post-subtitle">Problems look mighty small from 150 miles up</h3>
</a>
<p class="post-meta">
Posted by
<a href="#!">Start Bootstrap</a>
on September 24, 2023
</p>
</div>
<!-- Divider-->
<hr class="my-4" />
<!-- Post preview-->
<div class="post-preview">
<a href="#!"><h2 class="post-title">I believe every human has a finite number of heartbeats. I don't intend to waste any of mine.</h2></a>
<p class="post-meta">
Posted by
<a href="#!">Start Bootstrap</a>
on September 18, 2023
</p>
</div>
<!-- Divider-->
<hr class="my-4" />
<!-- Post preview-->
<div class="post-preview">
<a href="#!">
<h2 class="post-title">Science has not yet mastered prophecy</h2>
<h3 class="post-subtitle">We predict too much for the next year and yet far too little for the next ten.</h3>
</a>
<p class="post-meta">
Posted by
<a href="#!">Start Bootstrap</a>
on August 24, 2023
</p>
</div>
<!-- Divider-->
<hr class="my-4" />
<!-- Post preview-->
<div class="post-preview">
<a href="#!">
<h2 class="post-title">Failure is not an option</h2>
<h3 class="post-subtitle">Many say exploration is part of our destiny, but it’s actually our duty to future generations.</h3>
</a>
<p class="post-meta">
Posted by
<a href="#!">Start Bootstrap</a>
on July 8, 2023
</p>
</div>
<!-- Divider-->
<hr class="my-4" />
<!-- Pager-->
<div class="d-flex justify-content-end mb-4"><a class="btn btn-primary text-uppercase" href="#!">Older Posts →</a></div>
</div>
</div>
<div class="flex justify-around"><a
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
специалистов ...</h5>
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
специалистов ...</h5>
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
специалистов ...</h5>
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
специалистов ...</h5>
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
специалистов ...</h5>
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a></div>
</div>
<div class="flex flex-col mt-[90px] mb-[80px] gap-[56px]">
<div class="flex items-center max-w-[1033px] mx-auto justify-between w-full">
<div class="undefined px-[25px] py-[10px] max-w-[225px] min-w-[180px] justify-center w-fit cursor-pointer border-blue border-[1px] flex gap-[10px] rounded-[10px]">
<p class="text-blue font-[700] text-[16px]">Тренер</p><img alt="chevronDown" loading="lazy" width="11"
height="8" decoding="async" data-nimg="1"
style="color:transparent"
src="<?= $resources ?>/images/chevronDown.svg"/></div>
<h3 class="text-black text-[26px] uppercase">наше сообщество</h3>
<button class="flex items-center justify-center whitespace-nowrap rounded-[6px] font-[400] bg-blue text-[16px] text-white max-h-[39px] px-[25px] py-[10px] undefined">
Все участники
</button>
</div>
<div class="flex max-w-[1033px] m-auto justify-between w-full"><a
class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
src="<?= $resources ?>/images/mok_human.svg"/><h5
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Терапевт</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Супервизор</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер-стажер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ведущий тренер</span></div>
</div>
</a><a class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
src="<?= $resources ?>/images/mok_human.svg"/><h5
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Терапевт</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Супервизор</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер-стажер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ведущий тренер</span></div>
</div>
</a><a class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
src="<?= $resources ?>/images/mok_human.svg"/><h5
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Терапевт</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Супервизор</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер-стажер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ведущий тренер</span></div>
</div>
</a><a class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
src="<?= $resources ?>/images/mok_human.svg"/><h5
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Терапевт</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Супервизор</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер-стажер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
<span class="relative top-[2px]">Ведущий тренер</span></div>
</div>
</a></div>
</div>